What's new in PGPLib 2.6.6.3
Jun 9, 2014
- Package com.didisoft.pgp:
- PGPLib.decryptFile - added support for recovering from error "premature end of stream in PartialInputStream"
- PGPLib.decryptString - added support for recovering from error "premature end of stream in PartialInputStream"
- PGPLib.decryptStream - added support for recovering from error "premature end of stream in PartialInputStream"
New in PGPLib 2.6.6.2 (May 28, 2014)
- Package com.didisoft.pgp:
- [!] PGPLib.decryptFileTo(..) in conjunction with PGPLib.setExtractTarFiles(false) can handle .pgp archives with no internal file name information and extract them into a file with name composed from the input file name but without the .pgp extension.
New in PGPLib 2.6.6.1 (May 26, 2014)
- Package com.didisoft.pgp:
- [+] PGPLib.isExtractTarFiles() - is the library set to extract encrypted TAR files
- [+] PGPLib.setExtractTarFiles(boolean) - sets should the library extract encrypted TAR files with the methods that handle multiple file archives
New in PGPLib 2.6.6.0 (May 12, 2014)
- BACKWARD COMPATIBILITY NOTICE:
- Output streams are now left open. You will have to explitily close them!
- PGPLib.encryptStream - the encrypted output stream is left open. Now the caller is responsible for closing it.
- PGPLib.encryptStreamPBE - the encrypted output stream is left open. Now the caller is responsible for closing it.
- PGPLib.signStream - the signed output stream is left open. Now the caller is responsible for closing it.
- PGPLib.signStreamVersion3 - the signed output stream is left open. Now the caller is responsible for closing it.
- PGPLib.signAndEncryptStream - the encrypted output stream is left open. Now the caller is responsible for closing it.
- PGPLib.signAndEncryptStreamVersion3 - the encrypted output stream is left open. Now the caller is responsible for closing it.
- (NEW!) PGP 2.x compatibility (RFC 1991)
- PGPLib.pgp.setPgp2Compatible(true)/isPgp2Compatible() - methods that control compatibility of the produced .pgp archives with the ancient PGP 2.x systems.
- KeyStore posibility to customize the type of self sertification of OpenPGP keys
- KeyStore.getDefaultKeyCertificationType() - returns the default key certification type used for newly created keys
- KeyStore.setDefaultKeyCertificationType - sets the default key certification type for newly created keys
- KeyStore.setKeyCertificationType - changes the a key self certification type to a specified value
New in PGPLib 2.6.5.3 (Apr 29, 2014)
- Package com.didisoft.pgp:
- PGPLib - the default debug level has been changed from Level.FINE to Level.INFO
- PGPLib.getDebugLevel/setDebuglevel - methods to control the verbose debug log level
- KeyStore.clearKeyExpirationTime - methods to clear the expiration time of a public key
- KeyStore.setKeyExpirationTime - methods to set the expiration time of a public key
New in PGPLib 2.6.5.2 (Mar 22, 2014)
- KeyStore.exportPubring() - exports all public keys in a pubring.pkr compatible format
- KeyStore.exportSecring() - exports all public keys in a secring.skr compatible format
- KeyStore.importKeyRing - fix for importing E-Business server pubring.pkr
- PGPLib - added additional logging messages
- KeyPairInformation.getEncryptionKeySize() - returns the size of the encryption key in bits
New in PGPLib 2.6.5.1 (Mar 17, 2014)
- Package com.didisoft.pgp.net:
- [+] HKPClient - constructor without port (HTTP 80 by default)
- [*] LDAPClient.submitKey - fixed case when the key does not exist on the server (in the first version it was only modifying the key).
New in PGPLib 2.6.5.0 (Mar 7, 2014)
- New package com.didisoft.pgp.net:
- LDAPClient - provides access to LDAP OpenPGP key servers (e.g. Symantec Encryption Management Server/PGP Universal Server/, OpenLDAP with pgp schema)
- HKPClient - provides access to HKP (Horowitz key protocol) OpenPGP key servers (e.g. pgp.mit.edu)
- Package com.didisoft.pgp:
- KeyStore.changePrivateKeyPassword - the keystore state wasn't persisted
- KeyPairInformation.isValidForever() - returns true if the key has no expiration date
- PGPLib.signAndEncryptFile - overloaded version for multiple recipients
- PGPLib.signAndEncryptStream - overloaded version for multiple recipients
New in PGPLib 2.6.4.12 (Mar 3, 2014)
- Library/GoogleAppEngine/ - version of the library JAR files prepared for Google AppEngine (GAE)
New in PGPLib 2.6.4.11 (Feb 19, 2014)
- Changes in package com.didisoft.pgp:
- PGPLib.encryptString - overloaded methods that accept key in a KeyStore
- PGPLib.decryptString - overloaded methods that accept key in a KeyStore
New in PGPLib 2.6.4.10 (Feb 1, 2014)
- Changes in package com.didisoft.pgp:
- PGPLib.encryptString - overloaded methods that accept key as input stream
- PGPLib.decryptString - overloaded methods that accept key as input stream
New in PGPLib 2.6.4.8 (Jan 31, 2014)
- Changes in package com.didisoft.pgp:
- PGPLib.encryptString - methods for encrypting a string message
- PGPLib.decryptString - methods for decrypting a string message
- KeyPairInformation.getExpirationTime - returns the key expiration time
New in PGPLib 2.6.4.7 (Jan 14, 2014)
- Changes in package com.didisoft.pgp.inspect:
- KeyStore.setKeystorePassword - can be used to change the password of a file based KeyStore instance
- PGPLib.encryptX - as of version 2.6.3.0 of the library was expecting all private key passwords to be in UTF-8.
- In previous versions the library was working with non ASCII passwords as well and now keys with non ASCII passwords were rejected, although a valid password is supplied. This has been fixed and now the library is backward compatible.
New in PGPLib 2.6.4.6 (Dec 10, 2013)
- Changes in package com.didisoft.pgp.inspect:
- PGPInspectLib.listSignatures - returns information for the signatures contained in an OpenPGP archive
- PGPInspectLib.listRevocationCertificate - returns information for the signature contained in an OpenPGP revocation certificate
- SignatureItem.getUserId() - returns signer User identifier is available
New in PGPLib 2.6.4.4 (Nov 13, 2013)
- [+] PGPLib.isTrialVersion() - Checks is this an evaluation instance of the library
New in PGPLib 2.6.4.3 (Nov 8, 2013)
- KeyStore.setFastElGamalGeneration - sets should fast ElGamal parameters generation be performed
- KeyStore.isFastElGamalGeneration - returns will fast ElGamal parameters generation be performed (with less checks)
- KeyStore.containsPublicKey(String) - false was returned when a hexadecimal Key Id was supplied
New in PGPLib 2.6.4.2 (Nov 5, 2013)
- KeyStore.generateRsaKeyPair - overloaded version that accepts key expiration in days
- KeyStore.generateElGamalKeyPair - overloaded version that accepts key expiration in days
New in PGPLib 2.6.3.4 (Oct 4, 2013)
- KeyStore.signPublicKey - fixed bug when signing multiple times with the same key.
- It was adding the same signature multiple times. Now it is added only once.
- KeyStore.getKey(long) - fixed bug, it wasn' returning the key with ECC/OpenPGP keys.
New in PGPLib 2.6.3.3 (Sep 19, 2013)
- added KeyPairInformation.getPreferredCompressions() - returns array of preferred compression algorithms
- added KeyPairInformation.getPreferredCiphers() - returns array of preferred cipher algorithms
- added KeyPairInformation.getPreferredHashes() - returns array of preferred hash algorithms
- added KeyPairInformation.getSignedWithKeyIds() - returns a list of the key Id's that have signed this key
- When signing a public key with a private key multiple times, the same signature was added also multiple times. This has been fixed and now only one signature from a particular secret key will exists at any time.
New in PGPLib 2.6.3.2 (Aug 19, 2013)
- Fixed bug in KeyStore.signPublicKeyAsTrustedIntroducer
New in PGPLib 2.6.3.0 (Aug 8, 2013)
- The library has been migrated to the latest version of BouncyCastle provider 1.49. It is by default compiled for JDK 5.
- A backward compatible version that supports BC provier from bcprov-1.41 to bcprov-1.45 that is compiled for JDK 1.4 can be found in the Library/jdk14 folder.
New in PGPLib 2.6.2.0 (Jul 15, 2013)
- Added Elliptic Curve cryptography (ECC) OpenPGP support as defind in RFC 6637.
- Changes in package com.didisoft.pgp:
- Added interface EcCurve that contans constants with all the supported by OpenPGP EC curves
- Added constant Keyagorithm.EC - for Elliptic curve asymetric encryption
- Added method KeyStore.generateEccKeyPair - for generating OepnPGP keys based on Elliptic curve cryptography
- Added method KeyStore.generateElGamalKeyPair - for generating ElGamal (DH/DSS) OepnPGP keys with default algorithm preferences
- Added method KeyStore.generateRsaKeyPair - for generating RSA OepnPGP keys with default algorithm preferences
- Added method KeyStore.isSkipLucasLehmerPrimeTest() - returns will Lucas-Lehmer prime number check be skipped for ElGamal keys generation
- Added method KeyStore.setSkipLucasLehmerPrimeTest(boolean) - sets will Lucas-Lehmer prime number check be skipped for ElGamal keys generation
- Added method PGPKeyPair.generateEccKeyPair - for generating OepnPGP keys based on Elliptic curve cryptography
- Added method PGPKeyPair.generateElGamalKeyPair - for generating ElGamal (DH/DSS) OepnPGP keys with default algorithm preferences
- Added method PGPKeyPair.generateRsaKeyPair - for generating RSA OepnPGP keys with default algorithm preferences
New in PGPLib 2.6.1.5 (Jun 20, 2013)
- Added class SignatureItem - Contains information for an OpenPGP signature
- Added method PGPInspectLib.listDetachedSignatureFile - Lists information for an OpenPGP detached signature file
- Added method PGPInspectLib.listDetachedSignatureStream - Lists information for an OpenPGP detached signature stream
New in PGPLib 2.6.1.4 (May 20, 2013)
- Fixed KeyStore.containsPrivateKey(String) - when invoked with a hexadecimal key id parameter. It was returning true, even if there was no private key with the given hexadecimal key id.
New in PGPLib 2.6.1.3 (May 16, 2013)
- KeyStore.purge - Clears the internal state of this key store.
- KeyStore.addUserId - Appends an additional User Id signature to a key
- KeyStore.deleteUserId - Removes a user Id signature from a key
- KeyStore.changeUserId - Changes an existing user Id signature of a key
- KeyStore.changePrimaryUserId - Changes the primary (first) user Id signature of a key
- KeyPairInformation.getUserID - Returns the primary (first) user Id of a key
New in PGPLib 2.6.1.2 (May 14, 2013)
- Improved the performance and memory footprint of the cleanup logic for corrupted ASCII armour keys.
- It was causing a java.lang.OutOfMemoryError: Java heap space error in a web application environment with multiple concurrent connections.
New in PGPLib 2.6.1.1 (Apr 10, 2013)
- improved cleanup logic for corrupted ASCII armour keys
- KeyStore.getKey(userId) - returns a KeyPairInformation for a key with a given User Id or Hexadecimal Key Id
- KeyStore.getKey(keyId) - returns a KeyPairInformation for a key with a given Key Id
- KeyStore.listKeys - now returns array of KeyPairInformation objects (same as getKeys())
New in PGPLib 2.6.1.0 (Feb 6, 2013)
- Changes in package com.didisoft.pgp:
- interface ContentDataType - holds the posibilities content types for OpenPGP data
- PGPLib.getContentType() - returns the default content type that will be used when encrypting. The default is binary. Other posibilities are text and utf-8.
- PGPLib.setContentType(char) - sets the default content type that will be used when encrypting. The default is binary. Other posibilities are text and utf-8.
- PGPLib.clearSignString - fixed bug when signing multiple line messages.
- KeyStore class general changes:
- userId parameters are now searched by part of the User ID for example if a key has a User ID "Richard Collins" the key can be located by only "Collins".
- the parameters that accept key User ID now also accept Key Hex ID string for example "74BB3286" or "0x74BB3286"
- Fixed importing large .pkr and .skr keyrings from PGP(r) 6.5 into a KeyStore object
- KeyStore(keystoreFile, password) - now if the keystore password is misspelled a com.didisoft.pgp.exceptions.WrongPasswordException is thrown.
- KeyStore.isPartialMatchUserIds() - returns is partial searching of User IDs turned on. The default is true.
- KeyStore.setPartialMatchUserIds(boolean) - turns on/off partial searching of User IDs.
- KeyStore.saveToStream - Saves the key store data to a stream unprotected with a password
- KeyStore.loadFromStream(keyStream) - loads the key store data from an unprotected stream
- KeyStore.loadFromStream(keyStream, password) - loads the key store data from a protected stream
New in PGPLib 2.6.0.2 (Nov 7, 2012)
- KeyStore.generateKeyPair - fixed error when generating bigger than 1024 bit ELGAMAL keys
New in PGPLib 2.5.8 (Apr 2, 2012)
- Introduced Java logging on livel FINE for inspecting the internal work of the Library
- Fixed bug when creating an uncompressed one pass signed and yencrypted archive.
- Decripting methods now check the integrity protection of the data
- KeyStore.generateKeyPair now returns a KeyPairInformation instance representing the generated key
- KeyStore.importKeyRing now returns an array of KeyPairInformation instances representing the imported key
- KeyStore.importPublicKey now returns an array of KeyPairInformation instances representing the imported key
- KeyStore.importPrivateKey now returns an array of KeyPairInformation instances representing the imported key
- Added interface TrustLevel that holds constants for the most common trust values
- Added package com.didisoft.pgp.inspect:
- Added class com.didisoft.pgp.inspect.PGPInspectLib that provides methods for inspecting the content of OpenPGP data
- Added class com.didisoft.pgp.inspect.ContentItem that represents information for an item in an OpenPGP archive
- Added methods for marking a public key as trusted introducer:
- KeyStore.signPublicKeyAsTrustedIntroducer(long keyId, long signKeyId, String signPassword)
- KeyStore.signPublicKeyAsTrustedIntroducer(String keyUserId, String signKeyUserId, String signPassword)
- Added methods for explicitly setting the trust of a key located in a KeyStore:
- KeyStore.setTrust(String keyUserId, byte trustValue)
- KeyStore.setTrust(long keyId, byte trustValue)
- Added methods for checking the trust value of a given key:
- KeyStore.isTrusted(String keyUserId)
- KeyStore.isTrusted(long keyId)
- KeyPairInformation.getTrust()
New in PGPLib 2.5.7 (Nov 10, 2011)
- Fixed cleanup of half encrypted files after an exception for all methods
- Fixed bug when importing keys from PGP 6.5 into a KeyStore
- KeyStore.importPrivateKey now throws also NoPrivateKeyFoundException (extends PGPException)
- if the specified file does not contain a private key
- Added method static KeyStore.checkPassword(keystoreFile, password) - checks is a given password for a keystore file correct
- Added method PGPLib.decryptAndVerifyFileTo - decrypts a file content with its original name(s) into a folder
- Added method PGPLib.decryptAndVerifyStreamTo - decrypts a stream content with its original name(s) into a folder
- Added method PGPLib.setUseExpiredKeys(true) - switches on/off the check are the encryption keys expired
- Added method PGPLib.setUseRevokedKeys(true) - switches on/off the check are the encryption keys revoked
- Added method PGPLib.isUseExpiredKeys() - returns the state of the check are the encryption keys expired
- Added method PGPLib.isUseRevokedKeys() - returns the state of the check are the encryption keys revoked
- Added method KeyPairInformation.checkPassword(password) - checks is a given password for a private key correct
- Added method KeyPairInformation.hasPrivateKey() - returns is there a private key in this key pair
- Added method KeyPairInformation.isExpired() - indicates is the public key expired
- Added method KeyPairInformation.isExpiredOnDate(java.util.Date) - checks will the key be expired on a given date
- New Exceptions:
- Added class com.didisoft.pgp.exceptions.NonPGPDataException (extends PGPException)
- thrown from all decrypt and decryptAndVerify methods when the supplied for decryption data is not an OpenPGP message
- Added class com.didisoft.pgp.exceptions.KeyIsExpiredException (extends PGPException)
- thrown from all encrypt and signAndEncrypt methods when the supplied public key is expired
- Can be suppressed with PGPLib.setUseExpiredKeys(true)
- Added class com.didisoft.pgp.exceptions.KeyIsRevokedException (extends PGPException)
- thrown from all encrypt and signAndEncrypt methods when the supplied public key is revoked
- Can be suppressed with PGPLib.setUseRevokedKeys(true)
New in PGPLib 2.5.6 (Nov 10, 2011)
- pgplib.jar is now digitally signed
- Added class PGPKeyPair extending KeyPairInformation that represents keys loaded from files and also
- provides methods for generating keys without the need of a KeyStore
- Added KeyPairInformation.exportKeyRing
- Added KeyPairInformation.exportPrivateKey
- Added KeyPairInformation.exportPublicKey
- Added KeyPairInformation.exportPublicKey
- Fixed bug with openning empty key store file (for example created from a new temp file)
New in PGPLib 2.5.5 (Nov 10, 2011)
- New exceptions extending PGPException:
- Package com.didisoft.pgp.exceptions - containing exceptions that extend org.bouncycastle.openpgp.PGPException
- Added class com.didisoft.pgp.exceptions.WrongPrivateKeyException - exception to indicate that we have supplied a wrong decryption private key
- Added class com.didisoft.pgp.exceptions.WrongPasswordException - exception to indicate that we have supplied a wrong password
- Added class com.didisoft.pgp.exceptions.NoPrivateKeyFoundException - exception to indicate that a private key has not been found
- Added class com.didisoft.pgp.exceptions.NoPublicKeyFoundException - exception to indicate that a public key has not been found
- Added class com.didisoft.pgp.exceptions.FileIsEncryptedException - exception to indicate that a file is encrypted
- Multiple files encryption:
- Added method PGPLib.encryptFiles - for encryption of multiple files into a single OpenPGP file
- Added method PGPLib.decryptFileTo - decrypts multi file OpenPGP archive created with PGP Desktop 9+ into a folder
- Added method PGPLib.decryptStreamTo - decrypts multi file OpenPGP archive stream created with PGP Desktop 9+ into a folder
- Decryption of password based encrypted (PBE) files
- Added method PGPLib.decryptFilePBE - to decrypt password encrypted PGP files
- Changes:
- PGPLib.verifyStream - throws FileIsEncryptedException (extends PGPException) if the stream is aslo encrypted
- PGPLib.verifyFile - throws FileIsEncryptedException (extends PGPException) if the stream is aslo encrypted
- KeyStore is now Serializable
- KeyStore.exportPrivateKey - now throws NoPrivateKeyFoundException instead of PGPException
- KeyStore.exportPublicKey - now throws NoPublicKeyFoundException instead of PGPException
- Added method KeyStore.deletePrivateKey - deletes specified private key from the KeyStore
- Added method KeyStore.deletePublicKey - deletes specified public key from the KeyStore
- Added method KeyStore.containsPublicKey - returns true if a specified public key exists in this KeyStore
- Added method KeyStore.containsPrivateKey - returns true if a specified private key exists in this KeyStore
- Bug fixes:
- PGPLib.verifyStream - now returns false if the supplied public key stream is not the matching this signed stream
- PGPLib.verifyFile - now returns false if the supplied public key stream is not the matching this signed stream
- PGPLib.decryptAndVerifyFile - now returns false if the supplied public key file is not the matching this signed file
- PGPLib.decryptAndVerifyStream - now returns false if the supplied public key file is not the matching this signed stream
New in PGPLib 2.5.4 (Nov 10, 2011)
- Added sub class KeyPairInformation.SubKey - represents sub key in a key ring
- Added KeyPairInformation.isRevoked() - returns is this key pair revoked
- Added KeyPairInformation.isEncryptionKey() - returns can this key be used for encryption
- Added KeyPairInformation.isSigningKey() - returns can this key be used for signing
- Added KeyPairInformation.getPublicSubKeys() - returns the public sub keys for this key pair
- Added KeyPairInformation.getPrivateSubKeys() - returns the private sub keys for this key pair
- Added KeyStore.containsKey(long keyId) - returns is there a key with the specified Key Id
- Added class RevocationLib that provides Key Revocation features
New in PGPLib 2.5.3 (Nov 10, 2011)
- KeyPairInformation.getKeyIDHex() has been changed to display the same Hex string as GnuPG and PGP (r).
- Added KeyStore.getUserIds() - list of all User Id's of the keys in this KeyStore instance
- Added KeyStore.getKeyHexIds() - list of all Key Id's in Hex form of the keys in this KeyStore instance
- Added KeyStore.getKeyIdForUserId(userId) returns the first Key ID for a given User Id
- Added KeyStore. getKeyIdForKeyIdHex(keyIdHex) returns the first Key ID for a given Key Hex Id
- KeyStore.listKeys() is modified to print similar output as PGP (r) 6.5
- Added KeyStore.setAutoSave(boolean) should the KeyStore file be auto saved after each operation.
- Added KeyStore.isAutoSave() that returns the auto saved status.
- Added KeyStore.isBackupOnSave() that returns is backup file creation on.
- Added KeyStore.setBackupOnSave(boolean) that sets should the old status of KeyStore be saved in
- a file with the same name and extension .bak
New in PGPLib 2.5.2 (Nov 10, 2011)
- Added methods PGPLib.encryptFile with support of KeyStore
- Added methods PGPLib.verifyFile with support of KeyStore
- Added methods PGPLib.verifyFile with support of KeyStore
New in PGPLib 2.5.1 (Nov 10, 2011)
- Added interface CompressionAlgorithm with constants for available compression algorithms
- Added interface HashAlgorithm with constants for available hashing algorithms
- Added interface CypherAlgorithm with constants for available cypher compression algorithms
- Added methods PGPLib.getCompression() and setCompression(int)
- that controls the used compression algorithm to be used during encryption
- Added methods PGPLib.getHash() and setHash(String)
- that controls the used hashing algorithm to be used during encryption
- Added methods PGPLib.getCypher() and setCypher(String)
- that controls the prefered symmetric cypher algorithm to be used during encryption
- Added method KeyStore.importKeyRing
- that imports both public and private key (if present) from one file
- Added method KeyStore.exportKeyRing
- that exports both public and private key (if present) in one file
- Added method PGPLib.encryptFilePBE that makes the encrypted archive available for decryption
- with both private key and (if lost or not available) a pass phrase
- Fixed error while deleting key pair from KeyStore, when only public key exists
- Fixed decryption of multi-recipient pgp files
New in PGPLib 2.4.3 (Nov 10, 2011)
- Improved generation of 2048/1024 DH/DSS keys.
- Added method PGPLib.encryptStream that accepts Keys Store.
New in PGPLib 2.4.2 (Nov 10, 2011)
- Fixed bug with storing private key in KeyStore after public key was imported
- Documentation.pdf is transformed to html
New in PGPLib 2.4 (Nov 10, 2011)
- Added method PGPLib.clearSignVersion3
- Added method PGPLib.clearSignString
- Added method PGPLib.clearSignStringVersion3
- Added method KeyStore.generateKeyPair with support for key expiration date
- Improved speed of methods working with large files.
- Switched to bcprov-ext-jdk14-145.jar
- verifyFile and verifyStream methods support clear signed format.