11
22# wolfSSL JSSE Provider and JNI Wrapper
33
4- This package provides both a wolfSSL Java JSSE provider (** wolfJSSE** ), and a
5- thin JNI-based interface to the native
6- [ wolfSSL embedded SSL/TLS library] ( https://www.wolfssl.com/products/wolfssl/ ) .
7- These provide Java applications with SSL/TLS support up to the current
8- [ TLS 1.3] ( https://www.wolfssl.com/tls13 ) protocol standard.
4+ This package provides Java support for the
5+ [ wolfSSL embedded SSL/TLS library] ( https://www.wolfssl.com/products/wolfssl/ ) ,
6+ giving applications support for SSL/TLS up to the current
7+ [ TLS 1.3] ( https://www.wolfssl.com/tls13 ) protocol level.
8+ It contains both a wolfSSL ** JSSE** (Java Secure Socket Extension) provider,
9+ called ** wolfJSSE** , and a thin JNI-based interface that wraps the native C
10+ library.
11+
12+ wolfSSL also provides a ** JCE** (Java Cryptography Extension) provider that
13+ wraps native wolfCrypt. This can be found in a separate repository, located
14+ [ here] ( https://github.com/wolfSSL/wolfcrypt-jni ) .
915
1016## Why use wolfJSSE?
1117
@@ -19,10 +25,10 @@ and more!
1925
2026## User Manual
2127
22- The wolfSSL JNI/JSSE Manual is available on wolfssl.com :
28+ The wolfSSL JNI/JSSE Manual is available on the wolfSSL website :
2329[ wolfSSL JNI Manual] ( https://www.wolfssl.com/documentation/wolfSSL-JNI-Manual.pdf ) .
2430
25- For additional build instructions and more detailed comments, please check
31+ For additional build instructions and more detailed comments, please reference
2632the manual.
2733
2834## Building
@@ -40,11 +46,12 @@ Build targets for ant are :
4046* ** ant clean** (cleans all Java artifacts)
4147* ** ant cleanjni** (cleans native artifacts)
4248
43- wolfJSSE currently supports compilation on Linux/Unix and Android.
49+ wolfJSSE currently supports compilation on Linux/Unix, OSX, and Android.
4450
45- To build wolfJSSE on Linux, first download, compile, and install wolfSSL.
46- wolfSSL can be downloaded from the wolfSSL download page or cloned from
47- GitHub.
51+ To build wolfJSSE in Linux/Unix environments, first download, compile, and
52+ install wolfSSL. wolfSSL can be downloaded from the wolfSSL
53+ [ download page] ( https://www.wolfssl.com/download/ ) or cloned from
54+ [ GitHub] ( https://github.com/wolfssl/wolfssl ) .
4855
4956```
5057$ unzip wolfssl-X.X.X.zip
@@ -60,6 +67,7 @@ Then, to build wolfJSSE:
6067$ cd wolfssljni
6168$ ./java.sh
6269$ ant
70+ $ export JUNIT_HOME=/path/to/junit/jars
6371$ ant test
6472```
6573
@@ -82,7 +90,7 @@ $ ./examples/provider/ClientJSSE.sh
8290Examples of using wolfssljni can be found in the ` ./examples ` subdirectory.
8391See [ examples/README.md] ( ./examples/README.md ) for more details.
8492
85- Examples of using wolfJSSE can be found in the ` ./examples/provider `
93+ Examples of using the wolfJSSE provider can be found in the ` ./examples/provider `
8694subdirectory. See [ examples/provider/README.md] ( ./examples/provider/README.md )
8795for more details.
8896
@@ -106,23 +114,24 @@ Android AOSP at the system-level.
106114
107115An example Android Studio application is included in this package, to show
108116users how they could include the wolfSSL native and wolfSSL JNI/JSSE sources
109- in an Androi Studio application. For more details, see the Android Studio
117+ in an Android Studio application. For more details, see the Android Studio
110118project and README.md located in the [ ./IDE/Android] ( ./IDE/Android ) directory.
111119
112120Using wolfJSSE at the application level will allow developers to register
113121wolfJSSE as a Security provider at the application scope. The application can
114- they use the Java Security API for SSL/TLS operations which will then use the
122+ use the Java Security API for SSL/TLS operations which will then use the
115123underlying wolfJSSE provider (and subsequently native wolfSSL).
116124
117- Applications can add the wolfJSSE provider using:
125+ Applications can register the wolfJSSE provider using:
118126
119127```
120128import com.wolfssl.provider.jsse.WolfSSLProvider;
121129...
122130Security.addProvider(new WolfSSLProvider());
123131```
124132
125- To instead insert the WolfSSLProvider as the top priority provider:
133+ To instead insert the WolfSSLProvider as the top priority provider, or at
134+ a specified index (note: indexing starts at 1):
126135
127136```
128137import com.wolfssl.provider.jsse.WolfSSLProvider;
@@ -148,12 +157,38 @@ Additional instructions can be found on the wolfSSL.com website:
148157
149158## Release Notes
150159
151- ### wolfSSL JNI Release X.X.X (TBD)
152-
153- Release X.X.X has bug fixes and new features including:
154-
155- * Removal of HC-128 stream cipher support. Native wolfSSL removed HC-128
156- support in [ PR #4767 ] ( https://github.com/wolfSSL/wolfssl/pull/4767 )
160+ ### wolfSSL JNI Release 1.9.0 (TBD)
161+
162+ Release 1.9.0 has bug fixes and new features including:
163+
164+ ** JNI and JSSE Changes:**
165+ * Add synchronization to class cleanup/free routines (PR 78)
166+ * Fix JNI native casting to use utintptr\_ t instead of intptr\_ t (PR 79)
167+ * Add support for newer Java versions (ex: Java 17) (PR 90)
168+ * Remove HC-128 support (PR 94). Native wolfSSL removed with
169+ [ PR #4767 ] ( https://github.com/wolfSSL/wolfssl/pull/4767 )
170+ * Remove RABBIT support (PR 96). Native wolfSSL removed with
171+ [ PR #4774 ] ( https://github.com/wolfSSL/wolfssl/pull/4767 )
172+ * Remove IDEA support (PR 97). Native wolfSSL removed in
173+ [ PR #4806 ] ( https://github.com/wolfSSL/wolfssl/pull/4806 ) .
174+ * Fix typecasting issues and cleanup for native argument checking (PR 98, 99)
175+ * Add Socket timeout support for native SSL\_ connect/write() (PR 95)
176+ * SSLSocket.getSession() now tries to do TLS handshake if not completed (PR 76)
177+ * Fix shutdown/close\_ notify alert handling in WolfSSLEngine (PR 83)
178+ * Fix WolfSSLSocket to test if close() called before object init (PR 88)
179+ * Add support for loading default system CA certs on Java 9+ (PR 89)
180+ * Fix timeout behavior with WolfSSLSession.connect() (PR 100)
181+
182+ ** Example Changes:**
183+ * Print wolfJSSE provider info in JSSE ProviderTest (PR 77)
184+ * Add option to ClientJSSE to do one session resumption (PR 80)
185+ * Update example certificates and keys (PR 81)
186+
187+ ** Documentation Changes:**
188+ * Add missing Javadocs, fix warnings on newer Java versions (PR 92)
189+
190+ ** Testing Changes:**
191+ * Update junit dependency to 4.13.2 (PR 91)
157192
158193The wolfSSL JNI Manual is available at:
159194http://www.wolfssl.com/documentation/wolfSSL-JNI-Manual.pdf . For build
0 commit comments