Topic: wolfSSL JNI/JSSE 1.16.0 Now Available

wolfSSL JNI/JSSE 1.16.0 is now available for download!  This release contains a number of bug fixes and changes to the JNI and JSSE layers.

wolfSSL JNI/JSSE allows for use of the native wolfSSL SSL/TLS library from Java. The thin JNI wrapper can be used for direct JNI calls into native wolfSSL, or the JSSE provider (wolfJSSE) can be registered as a Java Security provider for integration underneath the Java Security API. wolfSSL JNI/JSSE provides TLS 1.3 support and can also support running on top of the wolfCrypt FIPS 140-3 validated cryptographic module.

Highlights from this release are below. See ChangeLog.md for a full list.

Java System and Security Property Support:
This release improves alignment with Java JSSE behavior and improves drop-in compatibility for applications migrating from other JSSE providers.

  • New wolfjsse.autoSNI security property for controlling automatic SNI behavior with automatic SNI configuration for HttpsURLConnection

  • Partial support for jdk.tls.client.SignatureSchemes and jdk.tls.server.SignatureSchemes

  • Java Module System (JPMS) compatibility via ServiceLoader support

  • Added X509Certificate getSubjectX500Principal() and getIssuerX500Principal() implementations

  • Added Android non-standard checkServerTrusted() in X509TrustManager

DTLS 1.3 and Session Enhancements
This release adds DTLS 1.3 support in SSLContext and SSLEngine classes, along with:

  • DTLS Connection ID (CID) support

  • New DTLS 1.3 example client and server applications

  • Session serialization and persistence support via wrapped native APIs

These enhancements enable secure datagram-based applications with session resumption.

Performance Improvements
Several changes focus on reducing overhead in high-throughput and highly concurrent environments:

  • 20–30% SSLEngine send/receive performance improvement

  • Reduced synchronization and contention in JSSE components

  • Cached system and security properties to avoid repeated lookups

  • ByteBuffer pooling and improved ByteBuffer handling in JNI paths

  • Cached KeyStore entries for improved scalability under load

Correctness, Stability, and Security Fixes

  • Fixes for potential use-after-free conditions and memory leaks

  • Improved protection of native WOLFSSL sessions during concurrent I/O

  • Correct certificate chain ordering and improved handling of cross-signed certificates

  • Enhanced SNI handling for session resumption and server-side matching

  • Improved ALPN handling, including non-ASCII protocol names

  • Expanded X.509 API coverage, including Extended Key Usage and X500 principals

  • Added support for honoring client cipher suite preference ordering

  • Rename wolfCrypt JNI helper classes to avoid namespace conflicts with wolfcrypt-jni

Improved Debugging, Testing, and CI Coverage
Debug logging now uses Java’s standard logging framework (java.util.logging) with improved timestamps. CI coverage has also been expanded to include GitHub Actions for:

  • AddressSanitizer (-fsanitize=address)

  • Clang scan-build static analysis

  • Windows (Visual Studio) builds

  • Android emulator unit tests

  • ARM (--enable-armasm) builds

  • Compatibility testing against the last five stable wolfSSL releases

wolfSSL JNI/JSSE 1.16.0 can be downloaded from the wolfSSL download page, and an updated version of the wolfSSL JNI/JSSE User Manual can be found here. For any questions or to get help using wolfSSL products in your projects, contact us at support@wolfssl.com.

If you have questions about any of the above, please contact us at facts@wolfssl.com or call us at +1 425 245 8247.

Download wolfSSL Now

Share