Releases: corretto/amazon-corretto-crypto-provider
AmazonCorrettoCryptoProvider 1.6.1 - 2021-04-21
1.6.1
Patches
- Fix an issue where a race condition can cause ACCP's MessageDigest hashing algorithms to return the same value for different inputs PR #157
AmazonCorrettoCryptoProvider 1.6.0 - 2021-03-17
1.6.0
Breaking Change
In accordance with our versioning policy, this release contains a low-risk breaking change. For details please see the 1.5.0 release. This change only impacts libraries that generate EC keys using the KeyPairGenerator.initialize(int keysize) method.
Improvements
- Stricter guarantees about which curves are used for EC key generation. PR #127
- Reduce timing signal from trimming zeros of TLSPremasterSecrets from DH KeyAgreement. PR #129
- Reuse state in
MessageDigest
to decrease object allocation rate. PR #131 - Now uses OpenSSL 1.1.1j. PR #145 (ACCP is not impacted by CVE-2020-1971, CVE-2021-23841, or CVE-2021-23839 as ACCP does not use or expose any of the relevant functionality. ACCP is not impacted by CVE-2021-23840 as ACCP does not use the relevant functionality under the affected conditions.)
Patches
- Add version gating to some tests introduced in 1.5.0 PR #128
- More accurate output size estimates from
Cipher.getOutputSize()
PR #138 - Validate that
AesGcmSpi
receives a non-null key on init to prevent unnecessarily late NPE PR #146 - Gracefully handle calling
Cipher.doFinal()
without any input bytes inRsaCipher
PR #147
AmazonCorrettoCryptoProvider 1.5.0 - 2020-09-10
1.5.0
Breaking Change Warning
In accordance with our versioning policy, we post warnings of upcoming changes that might cause compatibility issues. As always, we expect that these changes will not impact the vast majority of consumers and can be picked up automatically provided you have good unit and integration changes.
Starting in ACCP version 1.6.0, EC key pair generation will throw an InvalidParameterException
if initialized to a keysize that is not in the following list. For these explicit sizes (only), ACCP behavior is unchanged. ACCP selects the the "secp*r1" curve that corresponds to the value. (For these values, its also the corresponding NIST prime curve).
Supported keysize values:
- 192
- 224
- 256
- 384
- 521
This means that the following code will start failing because it requests a keysize that is not on the list.
KeyPairGenerator kg = KeyPairGenerator.getInstance("EC");
kg.initialize(160); // Throws an InvalidParameterException
We are making this change because the "SunEC" provider does not document its curve selection process for sizes other than those listed above and does not promise that it will continue to use the same curve selection process. Without a consistency guarantee, developers can't use KeyPairGenerator.initialize(int keysize) safely (regardless of whether ACCP is used or not).
We strongly recommend using KeyPairGenerator.initialize(AlgorithmParameterSpec params) with ECGenParameterSpec to generate EC keys.
From versions 1.2.0 through 1.5.0, ACCP selects the corresponding "secp*r1" curve for any keysize requested.
For the explicit sizes listed above this matches the SunEC behavior.
For other sizes, there are no documented guarantees of the SunEC behavior.
Improvements
-
Now uses OpenSSL 1.1.1g. PR #108
-
Adds support for running a single test from the command line with the following syntax: PR #113
./gradlew single_test -DSINGLE_TEST=<Fully Qualified Classname>
For example:
./gradlew single_test -DSINGLE_TEST=com.amazon.corretto.crypto.provider.test.EcGenTest
You may need to do a clean build when changing tests.
Patches
- Ensure unauthenticated plaintext is not released through either Cipher.doFinal(byte[], int, int, byte[], int) or Cipher.doFinal(ByteBuffer, ByteBuffer). PR #123
- Better handle HMAC keys with a
null
format. PR #124 - Throw
IllegalBlockSizeException
when attempting RSA encryption/decryption on data larger than the keysize. PR #122
Maintenance
AmazonCorrettoCryptoProvider 1.4.0 - 2020-04-16
1.4.0
Improvements
- Now uses OpenSSL 1.1.1f. PR #97
- EXPERIMENTAL support for aarch64 added. PR #99
Maintenance
- Test code reuses instances of
SecureRandom
for better efficiency on platforms with slow entropy. PR #96
AmazonCorrettoCryptoProvider 1.3.1 Release -- 2020-03-05
AmazonCorrettoCryptoProvider 1.3.0 Release -- 2020-01-13
AmazonCorrettoCryptoProvider 1.2.0 Release -- 2019-11-12
1.2.0
Improvements
- Now uses OpenSSL 1.1.1.d. PR #60
Patches
- Detects stuck AMD Ryzen RDRAND and correctly treats as an error PR #67
- When initialized with an
int
,KeyPairGenerator
for "EC" keys now always uses "secp*r1" curves.
This matches the behavior of SunEC.
This changes the curves selected for 192 from secp192k1 to secp192r1/P-192, and curves selected for 256 from secp256k1 to secp256r1/P-256.
PR #68
Maintenance
AmazonCorrettoCryptoProvider 1.1.1 Release -- 2019-09-12
1.1.1
Patches
amazon-corretto-crypto-provider.security
updated to work on both JDK8 and JDK9+- Improve performance of single-byte handling in message digests.
Maintenance
- Support using a different JDK for testing via the
TEST_JAVA_HOME
JVM property - Clarify licensing
AmazonCorrettoCryptoProvider 1.1.0 Release -- 2019-07-15
1.1.0
Improvements
- Now supports DH key agreement for more than two parties.
Patches
- Reject RSA key generation shorter than 512 bits
- Fix incorrect exception when SunJSSE validates RSA signatures backed by ACCP RSA
- Make the provider actually serializable to keep JTREG happy
- Moved property and resource access to inside PrivilegedAction blocks
- Throw
InvalidKeyException
when KeyAgreement and Signature getsnull
keys - Throw
SignatureException
on corrupted signatures as required by the JCA/JCE
Maintenance
- Changed logging level to eliminate output under normal usage.
1.0.4
Maintenance
- Fix Java heap space issues in unit tests
AmazonCorrettoCryptoProvider 1.0.3 Release -- 2019-06-05
1.0.3
Patches
- Fix performance issue caused by always clearing the OpenSSL error stack
- Correctly clear OpenSSL error stack in failed signature verification
Maintenance
- Make coverage fail if OpenSSL error stack isn't clean
- Consolidate version information to single location
- Improve docs