Version 2.0.3 - 18.06.2001
==========================

More bug fixes:

- "OnGetPassphrase" in "TPGPEncode" didn't work with only a single signing
key on the keyring.

- Error messages didn't get retrieved when "OnFailure" wasn't assigned.


Version 2.0.2 - 17.06.2001
==========================

Some memory leaks in "TPGPDecode" have been fixed and another interface unit
("pgpKeyServer") has been added.


Version 2.0.1 - 12.06.2001
==========================

A bug fix and another utility function have been added:

- "DoKeyPassChange" in "TPGPSetKeyProps" now correctly changes not only the
master key's but also any subkey's passphrase on DH/DSS keys.

- The new "ValidPassphrase" function checks a passphrase against the key
provided.

- Some error messages will now alert you about missing PGP libraries and the
required version.


Version 2.0.0 - 04.06.2001
==========================

This set of components now only supports PGP versions 6.5.X and later. The whole
code has been completely rewritten to provide a direct interface to PGP, so
their development doesn't rely on third party libraries any more. It gives more
flexibility in using internal features of PGP and makes several jobs easier to
do than before. In addition there are now standard dialogs available for all
components, which is especially valuable for retrieving passphrases as they have
several important security features. And a small bug has been fixed: Time stamps
haven't been reported correctly (due to summertime/wintertime changes) when
converted to local timezones. The most pronounced component changes are listed
below, for more details see the respective parts of this help file:

"TPGPPreferences": The 'old style' methods "DoGetPreference/DoSetPreference"
have been removed, but single preferences can still be retrieved or set using
"DoGetPreferences/DoSetPreferences" with the respective preference property set.

"TPGPKeyServer": This is a new component providing methods for retrieving keys
from and sending keys to the default keyserver defined in PGP's Servers
preferences. It also contains methods for retrieving and changing this default
server preference entry.

"TPGPGetKeyProps": The methods "DoGetKeyPropUserID", "DoGetKeyPropSig",
"DoGetKeyPropRevokationKey", "DoGetKeyPropADK" have been removed, their main
functionality being integrated into the new "DoGetKeyProps" method.
"DoGetKeyRingToFile" has been completely abandoned. "DoGetKeyProps" and
"KeyIsOnRing" can now both search for user or hex IDs and return the number of
matching keys as result. As the "KeyProps" structures have changed again a
couple of convenience methods have been added to retrieve key properties - and
you may define key filters and key ordering before calling "DoGetKeyProps" or
"Update". Finally a new handling has been introduced for automatically updating
the ID lists which even enables notification about changes applied by PGP
itself.

"TPGPSetKeyProps": A new "DoKeyRevoke" method has been added.

"TPGPKeySign" and "TPGPKeySigRemove" are not available any more (did anyone
really use them?).

"TPGPKeysGenerate" doesn't use a separate thread any more for showing progress
as PGP itself provides an event giving status information about the generation
process and enabling users to cancel it.

"TPGPKeyImport" and "TPGPKeyExport": Some minor changes have been applied to key
selection and data handling.

"TPGPEncode": Besides integrating the "DetachedSign" functionality lots of
changes have been applied making it easier to use the different encoding methods
with a less complex property handling. And an "OnShowProgress" event has been
added passing the bytes processed so far depending on the setting of a
"ProgressInterval" property.

"TPGPDecode": Besides integrating the "DetachedSigVerify" and the "Analyse"
functionality some properties have been added to provide more decoding options
and cover all PGP-encoded data including keys. It now provides "for your eyes
only" capabilities, can use PGP's signature logging window, and an
"OnShowProgress" event has been added passing the bytes processed so far
depending on the setting of a "ProgressInterval" property.


Version 1.3.2 - 04.10.2000
==========================

Just added a missing key properties flag and it's
respective "TKeyRec/TKeyProps" entries: "Expired".


Version 1.3.1 - 27.08.2000
==========================

Important bug fix: Due to the PChar() type casting of pchars returned by SPGP's
functions your applications gathered lots of waste memory during execution which
was only released when closing the application. This has been fixed now by
adjusting the returned strings to their real length using the SetLength()
function.

And another problem occuring in Delphi 5 (at least) has been solved: "var
ADKeyCount" for the imported function "spgpKeyPropADK" and "var RevKeyCount" for
the imported function "spgpKeyPropRevocationKey" had to be declared as Longint
to prevent compiler errors.


Version 1.3.0 - 08.08.2000
==========================

New features available since SPGP version 2.5.0.0:

NB: The most important changes first, as some modifications have been applied
which will affect applications you may have written using former versions. Steve
Heller is introducing a new, more flexible and extensible way of setting options
which can gain you a major improvement of performance. So far it has only been
applied to the SPGP functions KeyRingID, GetKeyProps and two new functions, but
it will be implemented for all applicable functions with his upcoming version 3:
bit flags (see http://www.oz.net/~srheller/spgp/funcref/glossary.html). Using
the components you will not have to deal with them directly, as they have been
converted to option sets. If you still want or need to keep compatibility to
former versions you may set the global flag "CompatibilityMode" to true.

Nevertheless there are some changes you may have to apply to your applications:
- Two record fields in "TKeyRec" and "TSigRec" have been renamed (still
containing the same data, though).
- The property AllProps in "TPGPKeyImport" has been removed (set to true by
default).
- The properties Trust and Validity have been removed from "TPGPKeySign" as they
still are not implemented in SPGP.
- To all components using passphrases (except for "TPGPSetKeyProps") a new
OnWipePassphrase event has been added to retrieve the passphrase before it is
wiped (which hasn't been done before).
- OnGetPass for DoKeyPassChange in "TPGPSetKeyProps" now additionally passes
MinPassLen and MinPassQual.

1. "TPGPGetKeyProps" has been modified to use the new flags feature. The
"Update" method can now retrieve nearly all available information about a
keyring's keys at once without having to call "DoGetKeyProps" for every single
key, just by setting the desired options. "DoGetKeyProps" has accordingly been
changed to only get the properties you have selected instead of providing a
fixed list (like in compatibility mode).
Some new utility functions have been added to retrieve these data without
hassles - see "KeyRec", "KeyProps" and "ExtractKeyProps" for changes. The new
methods "DoGetKeyPropADK" and "DoGetKeyPropRevokationKey" (similar to
DoGetKeyPropUserID) will provide more detailled information about sub-keys added
to DH/DSS keys (no compatibility mode available).

2. "TPGPreferences" provides two new methods besides the old single parameter
functions: Using the flag feature you can now choose which options to get or set
at once without having to call a function for every single preference. And the
last missing preference has been added: PGPPref_GroupsFile.
Furthermore a new standard dialog has been added here: "ShowPrefsDialog" will
show PGPkey's preferences dialog with the tab control page at it's front that
you select by setting the property "PrefsPage" (available for all PGP versions
supported by SPGP).

3. And finally I've added the new "TPGPKeysGenerate" component, though Steve's
reference still characterizes them 'as experimental and subject to change': They
provide four methods for creating RSA keys, DSA (sign-only) keys, DH (encrypt)
sub-keys and the complete DH/DSS key pair at once. Please read the instructions
carefully.

4. All components changing key rings or keys (TPGPKeysGenerate, TPGPKeyImport,
TPGPSetKeyProps, TPGPreferences) now provide the property "GetKeyProps" which
enables you to have your user ID and hey ID lists updated automatically.


Version 1.2.4 - 29.07.2000
==========================

Only fixed two minor bugs in SPGP.PAS: Changed parameters "ADKeyCount" for
function "KeyPropADK" to "var ADKeyCount" and "RevKeyCount" for function
"KeyPropRevocationKey" to "var RevKeyCount".


Version 1.2.3 - 30.06.2000
==========================

This is just released for keeping compatibiliy with the latest SPGP version
(2.5.0.0): Two function calls have been adjusted to make sure they work like
before, and some new error codes have been added.


Version 1.2.2 - 11.04.2000
==========================

Verifying signatures using "TPGPDecode" has been enabled.


Version 1.2.1 - 08.04.2000
==========================

In SPGP version 2.4.1.0 the declaration of "spgpSubKeyGenerate" has been
changed, which now is reflected in the respective function declaration in
spgp.pas. Also Steve Heller has implemented support for gathering random user-
input for "spgpKeyGenerate" with PGP 5.5.X (remember both these functions are
still declared as experimental by Steve and neither supported by any of these
components nor their author). Additionally I've (re-)implemented alphabetical
sorting of the list of public keys, as it is not provided by the latest versions
of SPGP any more.


Version 1.2 - 28.02.2000
========================

With SPGP version 2.4.0.0 the following changes / additional features are
available:

1. "TPGPEncode": The "DoEncode" method (by default) has been restricted to
doing textmode/armored encoding only, as binary encoding wouldn't work properly
(you cannot pass binary data as strings).

2. "TPGPEncode": The "DoEncodeFile" method now attaches .pgp to "FileIn's" name
if you don't provide "FileOut".

3. "TPGPDetachedSigCreate": The "DoSigCreate" method now attaches .sig to
"FileIn's" name instead of changing it's extension if you don't provide
"FileOut".

4. "TPGPSetKeyProps": The "DoKeyPassChange" method now provides setting and
checking of minimum length and quality.

5. The "OnGetSignKeyPass", "OnGetPassphrase" and "OnGetPass" events in
"TPGPEncode", "TPGPDecode", "TPGPDetachedSigCreate" and "TPGPSetKeyProps" now
verify that you select a private key and provide a "KeyProps" record for showing
detailed information to the user about the key that the passphrase is required
for.

6. Cancelling the passphrase dialogs will now return properly without keeping
the last passphrase entered.

7. The default PGP dialogs (only with PGP versions 6.X.X) are now available for
the following methods:

-	DoEncode / DoEncodeFile (TPGPEncode)

-	DoDecode / DoDecodeFile (TPGPDecode)

-	DoSigCreate (TPGPDeatchedSigCreate)

-	DoKeyPassChange (TPGPSetKeyProps)

To enable using these dialogs just set the new property "StandardDlg" of the
appropriate components to true. Another new property coming along with this
feature is "ParentHandle", which allows you make PGP's dialogs act as child
windows of your application's windows (forms): It takes the handle of the
intended parent window.

8. A "PGP6X" function has been added to determine whether the previous mentioned
standard dialogs are available on the respective computer. It is called
implicitely on execution of these methods.

9. Another unit providing the PGP error constants has been added.

10. A direct link to Steve Heller's function reference has been added to the
help file's References page.

11. Some more functions (f.e. key generation) are available through the spgp.pas
wrapper but currently not included in these components and not supported by the
author (see Steve Heller's function reference).


Version 1.1 - 16.11.1999
========================

With SPGP version 2.2.3.3 (that now fully supports PGP 6.5.1, there was a
problem with the preference functions) a new "TPGPSetKeyProps" method has been
implemented: "KeyRemove", which removes a public key from the default key-ring.
Also the preference methods now support getting and setting the default key ID
and have been completed to make this feature accessible.


Version 1.0 - October 1999
==========================

12 Delphi (2.01) components providing PGP functions for PGP 5.5.3 and later,
based on Steve Heller's library SPGP.DLL:

- Encoding and decoding (encryption/decryption/signing/verifying)
- Creating and verifying file detached signatures
- Importing, exporting and signing keys
- Several key management functions
- Some utilities









