Skip to content

Commit 4f5cb15

Browse files
authored
Merge pull request #357 from cconlon/v1.17release
Prep for 1.17 release
2 parents dbd89ba + ac511b5 commit 4f5cb15

23 files changed

Lines changed: 238 additions & 115 deletions

ChangeLog.md

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,89 @@
1+
### wolfSSL JNI Release 1.17.0 (04/20/2026)
2+
3+
Release 1.17.0 has bug fixes and new features including:
4+
5+
**New JSSE Functionality:**
6+
* Add JSSE-level Pre-Shared Key (PSK) support via `WolfSSLParameters` for `SSLSocket`/`SSLEngine` (PR 340)
7+
* Add Java 9+ module support (JPMS) with conditional `module-info.java` compilation for `jlink` compatibility (PR 324)
8+
* Add `CertPathTrustManagerParameters` and `KeyStoreBuilderParameters` support in `WolfSSLTrustManager` (PR 310)
9+
10+
**New JNI Functionality:**
11+
* Add `WolfSSL.getSNIFromBuffer()` wrapping `wolfSSL_SNI_GetFromBuffer()` for SNI extraction from raw ClientHello (PR 339)
12+
* Add RSA-PSS sign/verify and RSA sign check PK callback support (PR 338)
13+
* Add `pathLen` parameter to `WolfSSLCertificate/WolfSSLCertRequest.addExtension()` for Basic Constraints (PR 341)
14+
* Add CRL generation wrappers in `WolfSSLCRL` (PR 315)
15+
* Add CRL decode wrappers in `WolfSSLCRL` for parsing and inspecting existing CRL data (PR 333)
16+
* Add SKID, AKID, CRL Dist Points, and Netscape Cert Type extension support in `WolfSSLCertificate` (PR 317)
17+
* Add X.509 Name Constraints extension support with `WolfSSLNameConstraints`/`WolfSSLGeneralName` (PR 316)
18+
* Add extended AIA interface to retrieve OCSP and CA Issuer URLs separately from certs (PR 323)
19+
* Add `WolfSSLAltName` class for extended SAN parsing including `otherName` (MS AD UPN), `iPAddress`, and `directoryName` GeneralName types (PR 313)
20+
21+
**New Property Support:**
22+
* Add `wolfjsse.skipFIPSCAST` Security property to skip automatic FIPS CAST execution during wolfJSSE init (PR 342)
23+
* Add `wolfssl.skipLibraryLoad` System property to skip automatic `System.loadLibrary()` calls (PR 325)
24+
25+
**JNI and JSSE Changes:**
26+
* Limit `SSLSocket` write chunk size to 16384 (2^14) bytes (PR 308)
27+
* Fix `SSLEngine` `BUFFER_UNDERFLOW` handling for partial TLS records where only header was available (PR 334)
28+
* Fix `SSLEngine` `BUFFER_OVERFLOW` handling to stash decrypted application data and retry instead of losing data (PR 334)
29+
* Fix `SSLEngine` close/shutdown state transitions and `close_notify` handshake status reporting (PR 334, 354)
30+
* Fix `SSLSocket.close()` throwing duplicate exception when the initial connection had already failed (PR 330, 354)
31+
* Fix `SSLEngine.unwrap()` incorrectly returning `BUFFER_UNDERFLOW` when all bytes were consumed but more ciphertext needed (PR 351)
32+
* Throw `SSLHandshakeException` instead of `SSLException` on handshake errors for Spring Boot compatibility (PR 310)
33+
* Throw `SSLPeerUnverifiedException` from `getPeerCertificates()` on server side when no client auth requested (PR 310)
34+
* Improve `SSLEngine` SNI handling: prefer configured SNI for hostname verification, enforce server-side `SNIMatcher` after handshake, enable auto-SNI for `SSLEngine(host, port)`, fix stale SNI cache on session resumption (PR 334, 349)
35+
* Support `SSLEngine(host, -1)` unknown-port hints for Netty compatibility (PR 334)
36+
* Fix session timeout boundary behavior and filter invalid/expired sessions from `SSLSessionContext` enumeration (PR 334)
37+
* Return `X500Principal` from `getPeerPrincipal()` and `getLocalPrincipal()` for proper Java X.509 principal compatibility (PR 334)
38+
* Add `equals()` and `hashCode()` to `WolfSSLX509` for comparison compatibility with frameworks that check cert equality (PR 334)
39+
* Return non-null signature algorithm arrays from `ExtendedSSLSession` methods (PR 334)
40+
* Fix `WolfSSLTrustX509.getAcceptedIssuers()` operator precedence returning incorrect trusted issuers (PR 334)
41+
* Fix OCSP chain issuer handling to correctly use provided certificate chain entries (PR 334)
42+
* Skip certificate-only trust entries without private keys in `chooseClientAlias()` key selection (PR 310)
43+
* Filter anon suites from default enabled cipher suite list, matching `jdk.tls.disabledAlgorithms` behavior (PR 343)
44+
* Filter available cipher suites based on configured TLS version in `getAvailableCipherSuitesIana()` (PR 318)
45+
* Fix `WolfSSLSession.read()` ByteBuffer reading more bytes than requested (PR 353)
46+
* Fix PSK client identity copy / key length validation against max buffer sizes (PR 346)
47+
* Fix `x509_getDer()` potential crash due to missing `jbyteArray` allocation before `SetByteArrayRegion` (PR 347)
48+
* Fix possible null dereference in `WolfSSLSession.setServerID()` before `id.length` access (PR 344)
49+
* Fix possible null crash in `CertManagerLoadCA()` when null certFile or certPath passed from Java (PR 345)
50+
* Fix possible null dereference in `WolfSSLTrustManager.LoadAndroidSystemCertsManually()` on Android (PR 344)
51+
- Fix SHA-224 signature type string typo where `SHA244` was used instead of `SHA224` (PR 345)
52+
- Fix `FD_SETSIZE` bounds check in `socketSelect()` before `FD_SET` calls to prevent undefined behavior with high file descriptors (PR 345)
53+
- Fix potential I/O stall from stale `pollRx`/`pollTx` flags not being reset between I/O loop iterations (PR 345)
54+
- Fix JVM thread leaks from missing `DetachCurrentThread` in ALPN, verify, and CRL native callbacks (PR 346, 347, 353)
55+
- Fix memory leak of `internCtx` on `NewGlobalRef` failure in PK callback setup functions (PR 356)
56+
- Fix thread-safety issue in native PK callbacks when multiple SSL sessions active (PR 345)
57+
- Deregister native FIPS error callback on library cleanup to prevent callbacks into garbage-collected Java objects (PR 337)
58+
59+
**Example Changes:**
60+
- Add PSK example applications for `SSLSocket` and `SSLEngine` client/server (PR 340)
61+
- Add `DualProviderFIPSTest` example for wolfJSSE and wolfJCE dual provider FIPS usage (PR 342)
62+
- Update Android example app to perform TLS connection using wolfJSSE `SSLSocket`, add FIPS error callback for hash development workflow (PR 355)
63+
64+
**Testing Changes:**
65+
- Add SpotBugs static analysis build target, exclusion filter, and GitHub Actions workflow (PR 344)
66+
- Add GitHub Actions workflow for Android FIPS Ready testing with automated hash capture via emulator (PR 355)
67+
- Add GitHub Actions workflow for FIPS Ready dual provider testing with wolfJSSE and wolfJCE (PR 342)
68+
- Add GitHub Actions workflow for UndefinedBehaviorSanitizer (UBSan) testing (PR 321)
69+
- Add GitHub Actions workflow for Linux 32-bit testing with Java 17 (PR 320)
70+
- Add GitHub Actions workflow for Java Module (JPMS) testing (PR 324)
71+
- Add GitHub Actions workflow for checking source file list consistency (PR 331)
72+
- Add `make` target and GitHub Actions workflow for building with all wolfSSL patches enabled (PR 322, 326)
73+
- Add Java 24 and 25 to GitHub Actions test matrix (PR 319)
74+
- Update line length check script for correct line numbers and local use (PR 328)
75+
- Guard JaCoCo `taskdef` behind availability check to prevent build failures when JAR is absent (PR 353)
76+
77+
**Misc Changes:**
78+
- Update `Makefile` to generate dependency files, support verbose mode, and enable `-Wextra`/`-Werror` compiler flags (PR 332)
79+
- Add Gradle distribution SHA-256 hash verification in Android build (PR 350)
80+
- Replace deprecated `jcenter()` with `mavenCentral()` in Android Gradle build (PR 350)
81+
- Update Android `CMakeLists.txt` to exclude newly-added wolfSSL source files fixing build failures (PR 326, 346)
82+
83+
The wolfSSL JNI/JSSE Manual is available at:
84+
https://www.wolfssl.com/documentation/manuals/wolfssljni/. For build
85+
instructions and more details, please check the manual.
86+
187
### wolfSSL JNI Release 1.16.0 (12/31/2025)
288

389
Release 1.16.0 has bug fixes and new features including:

IDE/WIN/README.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,18 @@ and set the values for `HAVE_FIPS`, `HAVE_FIPS_VERSION`, and
249249
#define SESSION_CERTS
250250
#define WOLFSSL_ALT_CERT_CHAINS
251251
#define WOLFSSL_ALWAYS_VERIFY_CB
252-
```
252+
#define WOLFSSL_TLS13
253+
#define HAVE_FFDHE_2048
254+
```
255+
256+
Note: the bundle's `user_settings.h` template only enables
257+
`WOLFSSL_TLS13` for FIPS v5+ builds, so it must be added explicitly
258+
here for FIPS v2 to match the TLS 1.3 support that `./configure
259+
--enable-fips=v2 --enable-jni` gives on Linux/macOS. Without it the
260+
wolfJSSE provider will not register the `TLSv1.3` algorithm.
261+
`HAVE_FFDHE_2048` is required alongside `WOLFSSL_TLS13` to configure
262+
the TLS 1.3 DH key size (otherwise `src/tls.c` fails to compile with
263+
an `#error` asking for one of the `HAVE_FFDHE_*` defines).
253264

254265
6. Build the `wolfssl-fips` project, which will create a DLL in one of the
255266
following locations:

IDE/WIN/wolfssljni.vcxproj

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@
211211
<ClCompile>
212212
<WarningLevel>Level3</WarningLevel>
213213
<SDLCheck>true</SDLCheck>
214-
<PreprocessorDefinitions>WIN32;_DEBUG;WOLFCRYPTJNI_EXPORTS;WOLFSSL_USER_SETTINGS;WOLFSSL_LIB;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
214+
<PreprocessorDefinitions>WIN32;_DEBUG;WOLFCRYPTJNI_EXPORTS;WOLFSSL_USER_SETTINGS;WOLFSSL_LIB;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
215215
<ConformanceMode>false</ConformanceMode>
216216
<PrecompiledHeader>NotUsing</PrecompiledHeader>
217217
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
@@ -236,7 +236,7 @@ ant</Command>
236236
<ClCompile>
237237
<WarningLevel>Level3</WarningLevel>
238238
<SDLCheck>true</SDLCheck>
239-
<PreprocessorDefinitions>WIN32;_DEBUG;WOLFCRYPTJNI_EXPORTS;WOLFSSL_USER_SETTINGS;WOLFSSL_LIB;HAVE_FIPS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
239+
<PreprocessorDefinitions>WIN32;_DEBUG;WOLFCRYPTJNI_EXPORTS;WOLFSSL_USER_SETTINGS;WOLFSSL_LIB;HAVE_FIPS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
240240
<ConformanceMode>false</ConformanceMode>
241241
<PrecompiledHeader>NotUsing</PrecompiledHeader>
242242
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
@@ -263,7 +263,7 @@ ant</Command>
263263
<FunctionLevelLinking>true</FunctionLevelLinking>
264264
<IntrinsicFunctions>true</IntrinsicFunctions>
265265
<SDLCheck>true</SDLCheck>
266-
<PreprocessorDefinitions>WIN32;NDEBUG;WOLFCRYPTJNI_EXPORTS;WOLFSSL_USER_SETTINGS;WOLFSSL_LIB;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
266+
<PreprocessorDefinitions>WIN32;NDEBUG;WOLFCRYPTJNI_EXPORTS;WOLFSSL_USER_SETTINGS;WOLFSSL_LIB;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
267267
<ConformanceMode>false</ConformanceMode>
268268
<PrecompiledHeader>NotUsing</PrecompiledHeader>
269269
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
@@ -292,7 +292,7 @@ ant</Command>
292292
<FunctionLevelLinking>true</FunctionLevelLinking>
293293
<IntrinsicFunctions>true</IntrinsicFunctions>
294294
<SDLCheck>true</SDLCheck>
295-
<PreprocessorDefinitions>WIN32;NDEBUG;WOLFCRYPTJNI_EXPORTS;WOLFSSL_USER_SETTINGS;WOLFSSL_LIB;HAVE_FIPS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
295+
<PreprocessorDefinitions>WIN32;NDEBUG;WOLFCRYPTJNI_EXPORTS;WOLFSSL_USER_SETTINGS;WOLFSSL_LIB;HAVE_FIPS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
296296
<ConformanceMode>false</ConformanceMode>
297297
<PrecompiledHeader>NotUsing</PrecompiledHeader>
298298
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
@@ -319,7 +319,7 @@ ant</Command>
319319
<ClCompile>
320320
<WarningLevel>Level3</WarningLevel>
321321
<SDLCheck>true</SDLCheck>
322-
<PreprocessorDefinitions>WIN32;_DEBUG;WOLFCRYPTJNI_EXPORTS;WOLFSSL_USER_SETTINGS;WOLFSSL_LIB;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
322+
<PreprocessorDefinitions>WIN32;_DEBUG;WOLFCRYPTJNI_EXPORTS;WOLFSSL_USER_SETTINGS;WOLFSSL_LIB;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
323323
<ConformanceMode>false</ConformanceMode>
324324
<PrecompiledHeader>NotUsing</PrecompiledHeader>
325325
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
@@ -346,7 +346,7 @@ ant
346346
<ClCompile>
347347
<WarningLevel>Level3</WarningLevel>
348348
<SDLCheck>true</SDLCheck>
349-
<PreprocessorDefinitions>WIN32;_DEBUG;WOLFCRYPTJNI_EXPORTS;WOLFSSL_USER_SETTINGS;WOLFSSL_LIB;HAVE_FIPS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
349+
<PreprocessorDefinitions>WIN32;_DEBUG;WOLFCRYPTJNI_EXPORTS;WOLFSSL_USER_SETTINGS;WOLFSSL_LIB;HAVE_FIPS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
350350
<ConformanceMode>false</ConformanceMode>
351351
<PrecompiledHeader>NotUsing</PrecompiledHeader>
352352
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
@@ -376,7 +376,7 @@ ant
376376
<IntrinsicFunctions>true</IntrinsicFunctions>
377377
<SDLCheck>
378378
</SDLCheck>
379-
<PreprocessorDefinitions>WIN32;NDEBUG;WOLFCRYPTJNI_EXPORTS;WOLFSSL_USER_SETTINGS;WOLFSSL_LIB;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
379+
<PreprocessorDefinitions>WIN32;NDEBUG;WOLFCRYPTJNI_EXPORTS;WOLFSSL_USER_SETTINGS;WOLFSSL_LIB;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
380380
<ConformanceMode>false</ConformanceMode>
381381
<PrecompiledHeader>NotUsing</PrecompiledHeader>
382382
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
@@ -408,7 +408,7 @@ ant</Command>
408408
<IntrinsicFunctions>true</IntrinsicFunctions>
409409
<SDLCheck>
410410
</SDLCheck>
411-
<PreprocessorDefinitions>WIN32;NDEBUG;WOLFCRYPTJNI_EXPORTS;WOLFSSL_USER_SETTINGS;WOLFSSL_LIB;HAVE_FIPS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
411+
<PreprocessorDefinitions>WIN32;NDEBUG;WOLFCRYPTJNI_EXPORTS;WOLFSSL_USER_SETTINGS;WOLFSSL_LIB;HAVE_FIPS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
412412
<ConformanceMode>false</ConformanceMode>
413413
<PrecompiledHeader>NotUsing</PrecompiledHeader>
414414
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
NAME = wolfssl-jni-jsse
22
VERSION = $(shell grep 'name="implementation.version"' build.xml | sed -re 's/.*value="(.+)".*/\1/')
3-
DIST_FILES = build.xml COPYING docs examples IDE java.sh lib LICENSING Makefile native platform \
3+
DIST_FILES = build.xml COPYING examples IDE java.sh LICENSING Makefile native platform \
44
README.md rpm src
55

66
ifneq ($(PREFIX),)

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ an application can include this as a dependency in the application's
246246
<dependency>
247247
<groupId>com.wolfssl</groupId>
248248
<artifactId>wolfssl-jsse</artifactId>
249-
<version>1.16.0-SNAPSHOT</version>
249+
<version>1.17.0-SNAPSHOT</version>
250250
</dependency>
251251
</dependencies>
252252
...

build.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<!-- versioning/manifest properties -->
1515
<property name="implementation.vendor" value="wolfSSL Inc." />
1616
<property name="implementation.title" value="wolfSSL JNI/JSSE" />
17-
<property name="implementation.version" value="1.16" />
17+
<property name="implementation.version" value="1.17" />
1818

1919
<!-- set properties for this build -->
2020
<property name="src.dir" value="src/java/"/>
@@ -132,9 +132,9 @@
132132

133133
<target name="cleanjni">
134134
<delete>
135-
<fileset dir="${lib.dir}" includes="*.dylib"/>
136-
<fileset dir="${lib.dir}" includes="*.so"/>
137-
<fileset dir="${native.dir}" includes="*.o"/>
135+
<fileset dir="${lib.dir}" includes="*.dylib" erroronmissingdir="false"/>
136+
<fileset dir="${lib.dir}" includes="*.so" erroronmissingdir="false"/>
137+
<fileset dir="${native.dir}" includes="*.o" erroronmissingdir="false"/>
138138
</delete>
139139
</target>
140140

native/com_wolfssl_WolfSSLSession.c

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,9 @@ static void writeToInterruptPipe(SSLAppData* appData)
222222
{
223223
if (appData != NULL) {
224224
if (appData->interruptFds[1] != -1) {
225-
write(appData->interruptFds[1], "1", 1);
225+
if (write(appData->interruptFds[1], "1", 1) < 0) {
226+
/* Interrupt pipe wakeup is best-effort; ignore failure. */
227+
}
226228
}
227229
}
228230
}
@@ -896,9 +898,10 @@ static int socketSelect(SSLAppData* appData, int sockfd, int timeout_ms, int rx,
896898
* an error if not there. Another read/write() may have
897899
* already read it off. We just want to be interrupted,
898900
* byte value does not matter. */
901+
ssize_t rd;
899902
do {
900-
read(appData->interruptFds[0], tmpBuf, 1);
901-
} while (errno == EINTR);
903+
rd = read(appData->interruptFds[0], tmpBuf, 1);
904+
} while (rd < 0 && errno == EINTR);
902905

903906
return WOLFJNI_IO_EVENT_FD_CLOSED;
904907
}
@@ -1000,9 +1003,10 @@ static int socketPoll(SSLAppData* appData, int sockfd, int timeout_ms,
10001003
(fds[1].revents & POLLIN)) {
10011004
/* received data on interrupt pipe, read and return
10021005
* that descriptor is closed (closing) */
1006+
ssize_t rd;
10031007
do {
1004-
read(appData->interruptFds[0], tmpBuf, 1);
1005-
} while (errno == EINTR);
1008+
rd = read(appData->interruptFds[0], tmpBuf, 1);
1009+
} while (rd < 0 && errno == EINTR);
10061010

10071011
return WOLFJNI_IO_EVENT_FD_CLOSED;
10081012
}

platform/android_aosp/jsse_install.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
# 1) README.android_asop (located in this same directory)
1515
# 2) "Installing a JSSE Provider in Android AOSP" document, by wolfSSL
1616
#
17-
# Copyright (C) 2022, wolfSSL Inc.
17+
# Copyright (C) 2026, wolfSSL Inc.
1818

1919
if [ "$#" -lt 3 ]; then
2020
echo "-------------------------------------------" >&2

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>com.wolfssl</groupId>
66
<artifactId>wolfssl-jsse</artifactId>
7-
<version>1.16.0-SNAPSHOT</version>
7+
<version>1.17.0-SNAPSHOT</version>
88
<packaging>jar</packaging>
99
<name>wolfssl-jsse</name>
1010
<url>https://www.wolfssl.com</url>

src/java/com/wolfssl/provider/jsse/WolfSSLProvider.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@ public void errorCallback(int ok, int err, String hash) {
7676
* wolfSSL JSSE Provider class
7777
*/
7878
public WolfSSLProvider() {
79-
super("wolfJSSE", 1.16, "wolfSSL JSSE Provider");
80-
/* super("wolfJSSE", "1.16", "wolfSSL JSSE Provider"); */
79+
super("wolfJSSE", 1.17, "wolfSSL JSSE Provider");
80+
/* super("wolfJSSE", "1.17", "wolfSSL JSSE Provider"); */
8181

8282
/* load native wolfSSLJNI library */
8383
WolfSSL.loadLibrary();

0 commit comments

Comments
 (0)