|
| 1 | +### wolfCrypt JNI Release 1.9.0 (12/31/2025) |
| 2 | + |
| 3 | +Release 1.9.0 of wolfCrypt JNI and JCE has bug fixes and new features including: |
| 4 | + |
| 5 | +**New JCE Functionality:** |
| 6 | +- Add KeyGenerator implementation (AES, HmacSHA1, HmacSHA256, HmacSHA384, HmacSHA512) (PR 98) |
| 7 | +- Add SHA-224 support to MessageDigest, Mac, Signature, KeyGenerator (PR 104) |
| 8 | +- Add SHA-3 support to MessageDigest, Mac, Signature (PR 103) |
| 9 | +- Add utility method to convert JKS/PKCS12 KeyStore to WKS type (PR 108) |
| 10 | +- Add more AES mode support to Cipher class (PR 129, 163, 173): |
| 11 | + - AES/CCM/NoPadding |
| 12 | + - AES/CTR/NoPadding |
| 13 | + - AES/ECB/NoPadding |
| 14 | + - AES/ECB/PKCS5Padding |
| 15 | + - AES/OFB/NoPadding |
| 16 | + - AES/CTS/NoPadding |
| 17 | +- Add AESCMAC (AES-CMAC), AESGMAC (AES-GMAC) to Mac class (PR 129) |
| 18 | +- Add RSA-PSS support to Signature class (PR 131): |
| 19 | + - RSASSA-PSS |
| 20 | + - SHA224withRSA/PSS |
| 21 | + - SHA256withRSA/PSS |
| 22 | + - SHA384withRSA/PSS |
| 23 | + - SHA512withRSA/PSS |
| 24 | +- Add `Cipher.engineGetParameters()` support (PR 140) |
| 25 | +- Add Cipher generic `AES` type support (PR 142) |
| 26 | +- Add AES and GCM support to AlgorithmParameters class (PR 144) |
| 27 | +- Add HmacSHA3 support to KeyGenerator class (PR 150): |
| 28 | + - HmacSHA3-224 |
| 29 | + - HmacSHA3-256 |
| 30 | + - HmacSHA3-384 |
| 31 | + - HmacSHA3-512 |
| 32 | +- Add `toString()` to WolfCryptRandom, used when printing SecureRandom object (PR 154) |
| 33 | +- Add additional ECC algorithm OIDs to Signature and KeyPairGenerator classes (PR 158) |
| 34 | +- Add EC KeyFactory support (PR 159) |
| 35 | +- Add P1363 ECDSA signature formats to Signature class (PR 160) |
| 36 | +- Add DH support to AlgorithmParameter, AlgorithmParameterGenerator, and KeyFactory classes (PR 161) |
| 37 | +- Add AES and 3DES support to SecretKeyFactory and SecretKey classes (PR 164) |
| 38 | +- Add additional AES and Hmac algorithm aliases to Cipher and Mac classes (PR 166) |
| 39 | +- Add Java ServiceLoader support for wolfJCE provider for Java Module System (JPMS) compatibility (PR 167) |
| 40 | +- Add RSA KeyFactory support (PR 169) |
| 41 | +- Add MessageDigest OID alias values for SHA-224/256/384/512 (PR 170) |
| 42 | +- Add PSS parameter encoding support in WolfCryptPSSParameters class (PR 175) |
| 43 | +- Add `engineProbe()` implementation to WolfSSLKeyStore (PR 178) |
| 44 | +- Add optional KEK caching to WolfSSLKeyStore for performance (PR 176) |
| 45 | +- Add RSASSA-PSS key support to WolfSSLKeyStore (PR 180) |
| 46 | + |
| 47 | +**JNI and JCE Changes:** |
| 48 | +- Fix `Cipher.getOutputSize()` for AES/GCM/NoPadding in DECRYPT mode (PR 107) |
| 49 | +- Dynamically get algorithm and key ASN enum values from wolfSSL (PR 111) |
| 50 | +- Dynamically get hash OID sums from wolfSSL (PR 124) |
| 51 | +- Fix max secret size in DH agreement (PR 123) |
| 52 | +- Fix potential JNI-level ECC issues (PR 117) |
| 53 | +- Fix build issues with older wolfSSL and FIPS build variants (PR 133) |
| 54 | +- Fix AES-CTR IV consistency across state resets (PR 136) |
| 55 | +- Fix for using buffered data in `Cipher.engineGetOutputSize()` (PR 138) |
| 56 | +- Throw `AEADBadTagException` on AES-GCM decrypt failure (PR 139) |
| 57 | +- Fix `Cipher.engineInit()` with null parameters (PR 141) |
| 58 | +- Throw correct `InvalidAlgorithmParameterException` from `Cipher.init()` on unsupported mode (PR 143) |
| 59 | +- Fix for PKCS#7 pad/unpad operations in Cipher (PR 146) |
| 60 | +- Fix expected output size for Cipher decrypt related to pad size (PR 147) |
| 61 | +- Fix AES-GCM Cipher edge case to allow for null input or output arrays (PR 145) |
| 62 | +- Improve Cipher input validation, output buffer sizing, update behavior (PR 148) |
| 63 | +- Fix MessageDigest parameter validation (PR 149) |
| 64 | +- Fix `ArrayIndexOutOfBoundsException` in Cipher AES-GCM/CCM with zero-length plaintext (PR 151) |
| 65 | +- Throw exception if RSA `PrivateKey` does not include CRT parameters (PR 153) |
| 66 | +- Throw `IllegalArgumentException` from `WolfCryptRandom.engineGenerateSeed()` on bad input values (PR 152) |
| 67 | +- Set default key and parameter sizes in `KeyPairGenerator` if not explicitly set (PR 155) |
| 68 | +- Fix ECC `KeyPairGenerator` bits to bytes conversion (PR 157) |
| 69 | +- Check RSA key size used against min allowed in KeyPairGenerator (PR 162) |
| 70 | +- Fix SecretKey decryption to use stored PBKDF2 iteration count in WKS (PR 168) |
| 71 | +- Remove synchronization on some WolfSSLKeyStore methods (PR 165) |
| 72 | +- Validate EC key sizes in `KeyPairGenerator.initialize()` (PR 174) |
| 73 | +- Improvements to PKIXCertPathValidator with OCSP revocation checking, disabled algorithm validation, and more (PR 177, 178) |
| 74 | + |
| 75 | +**Debugging Changes:** |
| 76 | +- Switch to use Java logging (`java.util.logging`) framework for debug logs (PR 110) |
| 77 | +- Refresh debug flags when WolfCryptProvider is loaded (PR 135) |
| 78 | +- Switch debug log timestamp to use Java `Instant.ofEpochMilli()`, remove dependency on `java.sql.Timestamp` (PR 137) |
| 79 | + |
| 80 | +**Example Changes:** |
| 81 | +- Add RSA key generation to wolfJCE benchmark app (PR 95) |
| 82 | +- Add ECC and ECDH to wolfJCE benchmark app (PR 99, 116) |
| 83 | +- Add HMAC benchmark to wolfJCE benchmark app (PR 100) |
| 84 | +- Add DH benchmarks to wolfJCE benchmark app (PR 102) |
| 85 | +- Add PBKDF2 benchmark to wolfJCE benchmark app (PR 105) |
| 86 | +- Add MessageDigest benchmark to wolfJCE benchmark app (PR 106) |
| 87 | +- Add Signature benchmark to wolfJCE benchmark app (PR 109) |
| 88 | +- Add SHA-3 ciphers to HMAC benchmark in wolfJCE benchmark app (PR 113) |
| 89 | +- Add KeyGenerator benchmark to wolfJCE benchmark app (PR 115) |
| 90 | +- Add SecureRandom benchmark to wolfJCE benchmark app (PR 120) |
| 91 | +- Add KeyStore benchmark example app for WKS/JKS/PKCS12 (PR 118) |
| 92 | +- Add individual algorithm category options to wolfJCE benchmark app (PR 121) |
| 93 | + |
| 94 | +**Testing Changes:** |
| 95 | +- Add GitHub Actions PRB test for AddressSanitizer (`-fsanitize=address`) builds (PR 119) |
| 96 | +- Add GitHub Actions PRB tests for coding style (line length, comment style) (PR 126, 127) |
| 97 | +- Add GitHub Actions PRB test for Clang scan-build static analysis (PR 128) |
| 98 | +- Add GitHub Actions PRB test for Visual Studio builds on Windows (PR 130) |
| 99 | +- Add GitHub Actions PRB test to build against last 5 stable wolfSSL releases (PR 181) |
| 100 | +- Add GitHub Actions PRB test to run unit tests on Android emulator (PR 183) |
| 101 | +- Output time taken in ms per JUnit test when ant test is run (PR 171) |
| 102 | +- JUnit test performance improvements (PR 172) |
| 103 | + |
| 104 | +**Misc Changes:** |
| 105 | +- Clean up IDE warnings in Cursor and VSCode (PR 101) |
| 106 | +- Add `CLAUDE.md` for consumption by Claude Code (PR 122) |
| 107 | + |
| 108 | +The wolfCrypt JNI/JCE Manual is available at: |
| 109 | +https://www.wolfssl.com/documentation/manuals/wolfcryptjni/. For build |
| 110 | +instructions and more details comments, please check the manual. |
| 111 | + |
1 | 112 | ### wolfCrypt JNI Release 1.8.0 (01/23/2025) |
2 | 113 |
|
3 | 114 | Release 1.8.0 of wolfCrypt JNI and JCE has bug fixes and new features including: |
|
0 commit comments