history.txt

来自「用DELPHI实现的 PGP 加密算法」· 文本 代码 · 共 734 行 · 第 1/2 页

TXT
734
字号
Version 3.3.4 - 01.03.2003
==========================

- Some changes in TPGPDecode: The event OnAddKeys has been removed as it didn't
provide any additional benefit over just setting QueryAddKeys and using PGP's
key selection dialog to cancel. Instead you can now import pre-selected found
keys without prompting users by leaving KeyDlgPrompt blank and setting
IgnoreKnownKeys according to your preferences. Note that this will not
automatically import keys retrieved from keyservers for verifying signatures,
though.

- There's no VersionString property any more in TPGPKeyExport - which actually
has never been there in TPGPEncode although described on it's help pages.
Instead you may now use the utility "function" (actually a procedure)
SetVersionString.

- In TPGPKeyExport the dialog handling has been changed to act like in
TPGPKeyImport: Using the dialog is only enabled when a KeyDlgPrompt string is
provided.

- The new utility function GetPGPVersion returns PGP's version key name from the
Registry.

- Fixes some more UTF8 related issues for PGP 8 in TPGPKeysGenerate and
TPGPSetKeyProps.

- Fixes retrieving the default key's hex ID for IDs with a terminating zero with
PGP versions 7 & 8.

- Fixes a memory related problem causing memory leaks and access violations with
PGP 7 & 8.


Version 3.3.3.1 - 12.02.2003
============================

- This one provides a very minor change: The original version 3.3.3 showed a
delay when terminating Delphi and/or appplications using the components, this
one doesn't do this any more - although unloading all used libraries takes as
long as before: It's only hidden from the user.


Version 3.3.3 - 06.02.2003
==========================

- Fixes a problem with UTF8Sec.dll which caused applications running within
Delphi on NT, W2K or XP systems to crash on termination. It also adds a debugger
check which now doesn't require you to enable the $DEBUG compiler switch in
UTF8.pas anymore when launching your applications from within Delphi. Of course,
this means running your application within ANY debugger will prevent it from
using secure memory for processing passphrases!


Version 3.3.2 - 27.01.2003
==========================

- Adds UTF8 handling for PGP 8.X: To make the required conversion utilities
available for Delphi versions prior to 6.X and ensure they are using secure
memory when converting passphrases I have created the included library
UTF8Sec.dll (sources at <http://home.t-online.de/home/idw.doc/UTF8Sec.zip>.
IMPORTANT NOTE: To properly install the components you need to move a copy of
this library to a commonly accessible directory like ..\%WINDIR%\system(32) on
your machine (this is usually accessible for all applications). If you encounter
problems running your applications within the Delphi IDE enable the $DEBUG
compiler switch in UTF8.pas (I' haven't seen any with D2, but with D6 I did).
And don't forget to enclose another copy of the library with any distribution of
an executable or library using these components!

- Fixes some memory leaks in TPGPKeysGenerate and PGPDialogs.pas;

- Adds a LogExpSignature string property to TPGPDecode;

- Adjusts the WipeFile function for PGP 7.X & 8.X;

- Contains some more version adjustments.


Version 3.3.1 - 01.01.2003
==========================

- Fixes a kPGPError_OutOfEntropy when generating keys with PGP 8;

- Issues an error when trying to decode or encode files larger than 4 GBytes;

- Returns kPGPError_PublicKeyNotFound if EncryptToSelf is enabled without a
default key specified in PGP;

- Contains some other minor enhancements and fixes.


Version 3.3.0 - 15.12.2002
==========================

- PGP 8 support has been added, which currently doesn't change a lot:

- PGPDecode's types TSigStatus and TSigPropsRec have been extended to provide
signature expiration values;

- PGPEncode's sign (hash) algorithms now include SHA256, SHA384 and SHA512,
although PGP 8.0 doesn't seem to have implemented them for data signing (that's
why they haven't been enabled, yet);

- Other changes include a new key property called kLegacyKey and the (hopefully
final) effort to get v4 key generation eventually fixed (main key usage signing
and subkey usage encryption).


Version 3.2.6 - 30.11.2002
==========================

- The key size(s) returned for RSA v4 keys have been corrected to show both main
and subkey sizes.

- Minor internal enhancements.


Version 3.2.5 - 24.10.2002
==========================

- All OnGetPassphrase events have been renamed to OnEnterPassphrase.

- MIME, Armor, EyesOnly and Textmode options are now used with conventional
encryption as well.

- RSA (v4) format keys will correctly contain a main and a sub key, and
RSASubKeyGenerate has been added.

- OnKeyGeneration now returns the key properties record of the (master) key
containing the values selected by KeyProps_IDComplete

- Several minor internal enhancements and fixes have been applied, and a
compiler switch variable has been added for using the components with Delphi 7.


Version 3.2.4 - 11.08.2002
==========================

- Setting the default key preference has been fixed.

- A DecodeBuffer() bug with binary PGP data has been fixed.

- The missing property ParentHandle has been added to TPGPKeyExport.

- The package now includes files (created by Jesse Reichler) for compiling the
components into C++ Builder 5 & 6.


Version 3.2.3 - 06.07.2002
==========================

An additional signature status has been added to the TSigStatus type for
verifying signatures using TPGPDecode: SIGNED_UNKNOWN_ALG (for compatibility
reasons).


Version 3.2.2 - 20.05.2002
==========================

- Another compiler switch called FORCE_LOCAL_EXEC has been added to pgpBase as
for some reason PGP 7.X.X doesn't show the key generation progress properly
anymore if kPGPFlags_ForceLocalExecution is omitted when initializing it's
libraries. Unfortunately using this flag results in a file locked error being
returned when trying to access keyring files while PGPnet or PGPkeys are running
simultaneously (see 3.2.1). So now you've got the choice ...

- Public key encryption with TPGPEncode now honours PGP's cipher algorithm
preferences as set via PGPkeys.

- The cipher algorithm constant kPGPCipherAlgorithm_Blowfish used by GnuPG has
been added to pgpPubTypes.


Version 3.2.1 - 07.04.2002
==========================

A PGP 7.X.X initialization flag has been changed that now allows accessing the
keyring files without closing PGPkeys or PGPnet.


Version 3.2.0 - 24.03.2002
==========================

Some internal enhancements and a new read-only property in TKeyPropsList called
ValidProps which indicates the valid key properties for all records contained in
the respective properties list as passed to the method retrieving that list.
Furthermore some fixes:

- an internal error condition when compiling a project with range checking
enabled ($R+) has been fixed;

- some memory related issues in TPGPDecode (causing problems with Delphi 6) have
been fixed;

- sCreaTimeNum in TSigPropsRec now correctly provides its time value in unix
format;

- a bug when using a non-default SignKeyID with TPGPEncode has been fixed.


Version 3.1.9 - 10.03.2002
==========================

Some inappropriate errors with sign key handling in TPGPEncode have been
removed.


Version 3.1.8 - 02.03.2002
==========================

Another internal modification and a fix of the passphrase handling in TPGPDecode
which now correctly calls OnGetPassphrase repeatedly if a bad passphrase is
provided. Furthermore a new AlgorithmFilter option has been added to retrieve
RSA legacy keys only with TPGPGetKeyProps. Accordingly you can now create RSA
V4 (PGP 7.X.X only) or legacy keys with TPGPKeysGenerate.RSAKeyGenerate.


Version 3.1.7 - 23.02.2002
==========================

Some minor internal changes/additions and a more important one: OnGetPassphrase
for TPGPEncode now provides passphrase checking for the selected signing key and
passes the corresponding BadPassphrase parameter.


Version 3.1.6 - 01.02.2002
==========================

Two bugs with verifying detached signatures via TPGPDecode have been fixed.


Version 3.1.5 - 30.01.2002
==========================

A rather old bug in TPGPEncode causing access violations when using methods
without signing and some more bugs in TPGPDecode and TPGPKeysGenerate when using
OnGetPassphrase have been fixed.


Version 3.1.4 - 27.01.2002
==========================

- This version includes some more bug fixes regarding the TPGPSetKeyProps
methods DoKeyPassChange and DoKeyRevoke and implements OnChangePassphrase resp.
OnGetPassphrase events.

- The TMinPassLen and TMinPassQual types have been extended to include zero as
the lowest value (applying to TPGPSetKeyProps and TPGPKeysGenerate): Please
absolutely read the warning before using this feature!

- Another bug with the BadPassphrase parameter in OnGetPassphrase of TPGPDecode
has been fixed.

- OnGetPassphrase of TPGPEncode now provides a Cancel parameter to interrupt the
encoding process.

- And finally some internal enhancements have been implemented.


Version 3.1.3 - 20.01.2002
==========================

Some internal enhancements, a bug fix in TPGPSetKeyProps (to correctly retrieve
the 64bit hex IDs) and a new property for retrieving user ID dependent
validities from user ID lists (see KeyPropStructs) have been implemented. You
can now also turn off the internal initialization failure mechanism by enabling
a compiler switch in pgpBase.pas.


Version 3.1.2 - 12.01.2002
==========================

Two changes/additions:

- If a component is owned by a Form the component's ParentHandle property (if
any) will automatically be set to the form's handle, thus making any PGP dialogs
act as modal windows on top of the owning form.

- A new method called SetCipherAlgPrefs has been added to TPGPKeysGenerate
(including the necessary changes to pgpPubTypes.pas and pgpOptionList.pas),
which provides the option of specifying a particular order of preferred cipher
algorithms for newly created keys (please pay attention to the restrictions of
this feature).


Version 3.1.1 - 30.12.2001
==========================

A PGPFreeGroupSet() bug (the PGP SDK doesn't check groups list pointers for
nil like it usually does with pointers) causing an access violation when no
groups file exists has been fixed.


Version 3.1.0 - 22.12.2001
==========================

Some more important changes have been applied with this version:

- The standard format of hex IDs has been extended to their 64bit
representation. Especially if you've been using the KeyPropsList.Strings[Index]
property you may have to change some of your code as it now provides the long
version, whereas KeyPropsRec.kHexID still contains the 32bit string. Altough you
may still use short hex IDs it is recommended to change for the longer ones. In
case you need to abbreviate these (for displaying to users, f.e.) you may use
the utility function GetShortHexID.

- Retrieving key property records of a key properties list has been simplified a
lot (I really wish I had figured this out earlier ...): You can now simply use
KeyPropsList.KeyProps[Index] like Strings[Index] or Objects[Index] with Delphi's
StringLists. This property is read-only.

- Access to PGP groups files has been implemented requiring a new unit called
pgpGroups: If a groups file exists it's groups are now displayed in the
recipients dialog of PGPEncode, and another property called GroupsList has been
added to TKeyPropsList, which enables you to retrieve the groups' names,
descriptions and hex IDs via TPGPGetKeyProps.GetGroupHexIDs.

- A bug in TPGPPreferences.DoSetPreferences with PGP 7.X.X has been fixed where
the default key preference didn't get set properly.

- Further minor enhancements and fixes.


Version 3.0.4 - 19.11.2001
==========================

A VersionString bug with PGP 6.5.X has been fixed.


Version 3.0.3 - 06.11.2001
==========================

A new property has been added to PGPEncode and PGPKeyExport: VersionString,
which takes the version string generated with armored PGP data. If you don't
assign your own string it will contain the standard PGP SDK version string:
"PGPsdk Version Version X.X.X (C) 1997-XXXX Network Associates, Inc.", where
X.X.X is the respective version number. Assigning a string in one of the
components will set it for the other one as well. NB: The string get's truncated
if exceeding 255 chars, and long strings might cause decoding problems in
special situations (email plugins might force quoted-printable encoding to wrap
the long line if containing more than 76 chars, f.e.).



Version 3.0.2 - 25.10.2001
==========================

A small fix now truely lists all known keys in PGP's decryption passphrase
dialog, and a workaround for avoiding a strange kPGPError_BadIntegrity error
when analysing certain PGP data has been implemented. It only occurs after
skipping further processing of these data (seems to be related to using RSA
V4 keys).

Another bug has been fixed which didn't move the associated KeyPropsRec with a
KeyPropsList item, and you don't get an error any more when trying to sign data
without using PGP's signing passphrase dialog and no default key defined.

PGPEncode and PGPDecode now return kPGPError_CantOpenFile instead of
kPGPError_FileNotFound if no valid output file has been specified.


Version 3.0.1 - 13.10.2001
==========================

Writing of keyring changes to disk and notifying about them (see "Messages" in
the help file) with PGP 7 have been fixed, a key filtering bug regarding user
IDs has been removed, and the components have been modified (see
KeyPropTypes.pas) to work with Delphi 6, too.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?