Commit Graph

268 Commits (9d2524aa665fe6ca817d60cc585e9355deaa17ca)

Author SHA1 Message Date
Chris Conlon 0c4b3190c7 JNI: add support for Java Security properties:
- wolfssl.readWriteByteBufferPool.disabled
- wolfssl.readWriteByteBufferPool.size
- wolfssl.readWriteByteBufferPool.bufferSize
2025-05-21 14:01:49 -06:00
Chris Conlon 1c8963e4fe JNI: initial implementation of static direct ByteBuffer pool for WolfSSLSession.write(), avoids unaligned memory access at JNI layer 2025-05-16 15:25:14 -06:00
Chris Conlon 6b1e7a6299 JNI: initial implementation of static direct ByteBuffer pool for WolfSSLSession.read(), avoids unaligned memory access at JNI layer 2025-05-15 10:26:08 -06:00
Chris Conlon 2c7f12627c JNI: get ASN algo enum values dynamically, more flexible if native enum values change 2025-05-08 17:02:34 -06:00
Chris Conlon 995ef5ea34 JNI: avoid call to ExceptionOccurred() in WolfSSLSession.read(ByteBuffer) unless GetByteArrayElements returns null, improves performance 2025-05-01 15:23:17 -06:00
Chris Conlon 3368a5eb47 JNI: optimize out CallIntMethod/CallBooleanMethod() calls from WolfSSLSession.read(ByteBuffer), improves performance 2025-05-01 15:04:25 -06:00
Chris Conlon 342eb2f25a JNI: add additional error checks to JNI WolfSSLSession.read(ByteBuffer) function 2025-04-30 14:34:28 -06:00
JacobBarthelmeh 994950fffb
Merge pull request #258 from cconlon/nativeALPNSelectCbXSTRTOKFix
Null terminate `NativeALPNSelectCb()` peer protocol list before XSTRTOK
2025-04-29 15:33:20 -06:00
Chris Conlon 34d3e873a6 JNI: NativeALPNSelectCb() fix to make sure peer proto array is null terminated before calling XSTRTOK() 2025-04-25 16:08:46 -06:00
Chris Conlon 8ebd050a5a JSSE: add ByteBuffer I/O callbacks for performance, plug them into WolfSSLEngine 2025-04-17 16:35:52 -06:00
Chris Conlon 3aa056c607 JSSE: new helper functions to throw exceptions (throwWolfSSLJNIException, throwWolfSSLException), avoids calling FindClass unnecessarily, improves performance 2025-04-17 16:34:00 -06:00
Chris Conlon 767a289113 JSSE: cache jmethodIDs used in native I/O callbacks globally, improves performance 2025-04-17 16:34:00 -06:00
Chris Conlon 1a7534c726 JSSE: adjust SSLSession.getPacketBufferSize() for tls-channel compatibility, wrap native wolfSSL_GetMaxOutputSize() 2025-04-10 15:10:53 -06:00
Chris Conlon 8449b6744e JNI/JSSE: wrap wolfSSL_set_SessionTicket_cb(), add session ticket callback to SSLEngine for detection of ticket received 2025-02-17 15:40:18 -07:00
Chris Conlon d245630133 JNI: skip throwing Java exceptions from NativeLoggingCallback 2025-02-17 15:40:18 -07:00
Chris Conlon bda5d81afc JNI/JSSE: wrap wolfSSL_dtls_get_drop_stats() for use in WolfSSLEngine DTLS dropped packet detection for BUFFER_UNDERFLOW status 2025-02-17 10:53:19 -07:00
Chris Conlon e82f8373d9 JNI/JSSE: wrap wolfSSL_send_hrr_cookie() in WolfSSLSession.sendHrrCookie(), enable HelloRetryRequest in SSLEngine DTLS 2025-02-17 10:53:19 -07:00
Chris Conlon b00f14ebbb JNI/JSSE: wrap wolfSSL_DisableExtendedMasterSecret(), add support for System property jdk.tls.useExtendedMasterSecret 2025-02-17 10:53:19 -07:00
Chris Conlon 372ef97746 JSSE: add initial SSLEngine support for DTLSv1.3 2025-02-17 10:53:19 -07:00
Chris Conlon 36a1057366 JNI: add DTLS 1.3 to JNI-only layer 2025-02-17 10:53:17 -07:00
Chris Conlon 36bfbd1757 JNI: wrap Atomic Record VerifyDecrypt callback 2025-01-30 16:51:33 -07:00
Chris Conlon 3963b022c1 JNI/JSSE: skip trying to reattach to JVM in NativeLoggingCallback(), may happen on wolfSSL_Cleanup() call from atexit() handler 2025-01-30 16:51:33 -07:00
Chris Conlon 4923528863 JNI: refactor com.wolfssl.wolfcrypt.RSA/ECC/EccKey classes to avoid wolfJCE namespace conflicts, removing com.wolfssl.wolfcrypt directory 2025-01-30 16:51:31 -07:00
JacobBarthelmeh d56fa67109
Merge pull request #246 from cconlon/socketCloseInterruptsWriteRead
JSSE: calling SSLSocket.close() should interrupt threads blocked in select()/poll()
2025-01-21 15:29:17 -08:00
Chris Conlon cd8c49eae9 JNI/JSSE: remove incorrect preprocessor gate around native wolfSSL_GetSide() 2025-01-21 10:20:17 -07:00
Chris Conlon 336af4daf9 JNI/JSSE: fix VS warning about uninitialized local pointer variable 2025-01-21 10:20:17 -07:00
Chris Conlon 85dc1542e1 JSSE: calling SSLSocket.close() should interrupt threads blocked in select()/poll() 2025-01-21 10:20:14 -07:00
JacobBarthelmeh f5c9289097
Merge pull request #248 from cconlon/copyright2025
JNI/JSSE: update copyright to 2025
2025-01-20 14:42:47 -08:00
Reda Chouk 5de02dc3fe fix: handle DirectByteBuffers in WolfSSLSession.read()
Fix of improper handling of DirectByteBuffers in the JNI layer.
Previously, the native read() method would throw an exception when
encountering a DirectByteBuffer, breaking the optimization path for
single-buffer reads in WolfSSLEngine.

This change modifies the JNI implementation to properly handle both
array-backed and direct ByteBuffers, maintaining the performance benefits
of both buffer types while fixing the test failure.

- Added support for DirectByteBuffers using GetDirectBufferAddress
- Preserved existing optimization path for array-backed buffers
- Maintained proper position updates and error handling for both types
- Fixed SSLEngine/Arrays test without compromising performance
2025-01-10 19:02:57 +01:00
JacobBarthelmeh 63052defb4
Merge pull request #244 from cconlon/sslEngineOptimization
JNI/JSSE: optimize out array creation in WolfSSLEngine RecvAppData()
2025-01-06 16:58:08 -07:00
Chris Conlon 12eae28c14 JNI/JSSE: optimize out array creation in WolfSSLEngine RecvAppData(), pass ByteBuffer down to JNI directly 2025-01-06 16:22:28 -07:00
Chris Conlon eb4ee89bd0 JNI/JSSE: update copyright to 2025 2025-01-06 15:48:38 -07:00
Chris Conlon 501150e170 JNI/JSSE: call wc_RunAllCast_fips() for FIPS builds when available, add conditional defines for per-algo CAST functions 2025-01-06 15:14:39 -07:00
Chris Conlon 4dbbef94b9 JNI: always call wolfSSL_get1_session() inside native JNI getSession(), callers expect to always free returned pointer 2024-12-06 09:41:33 -07:00
Chris Conlon 4395d7a0b1 JNI/JSSE: use select() for Windows since no poll() available 2024-11-06 14:04:31 -07:00
Chris Conlon e01db4b4d9 JSSE: add LDAPS endpoint identification to X509ExtendedTrustManager 2024-10-21 11:31:51 -06:00
Chris Conlon 502d617a52 JSSE: fix warnings in WolfSSLSocket from gradle build 2024-09-20 15:24:11 -06:00
JacobBarthelmeh a9c28d7377
Merge pull request #217 from cconlon/SSLSocketEndOfStreamRead
JSSE: return end of stream in WolfSSLInputStream.read() on SOCKET_ERROR_E
2024-09-12 10:11:41 -06:00
Sage Stefonic bde37eec21 add rsa_pss support in wolfJSSE 2024-08-08 15:18:08 -07:00
Chris Conlon 1b3c748764 JSSE: return -1 for end of stream in WolfSSLInputStream.read() when SOCKET_ERROR_E encountered 2024-08-07 12:01:13 -06:00
Chris Conlon 7231009800 JSSE: only resume sessions from Java client cache if same cipher suite and protocol are enabled 2024-08-06 14:31:52 -06:00
Chris Conlon 13da2b023b
Merge pull request #210 from rlm2002/timeouts
read returns error value to timeout
2024-07-19 13:39:10 -06:00
Ruby Martin 8f09aae2fa set size equal to ret if ret does not equal RECV_READY or SEND_READY 2024-07-19 11:41:32 -06:00
Chris Conlon 58c63ded96 JNI: wrap native wolfSSL_SESSION_dup() in WolfSSLSession.duplicateSession() 2024-07-12 15:04:38 -06:00
Chris Conlon 6e08b929dc JNI/JSSE: use poll() instead of select() as default descriptor event function 2024-06-27 16:34:39 -06:00
Chris Conlon 7e5ace50c8 JNI: call select() again when return -1 and errno is EAGAIN 2024-06-27 16:34:39 -06:00
Chris Conlon 1afd3fcc30 JNI: wrap native wolfSSL_SESSION_is_resumable() in WolfSSLSession.sessionIsResumable() 2024-05-31 14:21:15 -06:00
Chris Conlon 5b31cf2306 SSLEngine: correctly mark inbound and outbound closed when receiving alerts 2024-05-31 11:40:53 -06:00
Chris Conlon 907a3d45d0 JNI: wrap wolfSSL_SESSION_has_ticket() in WolfSSLSession.hasSessionTicket() 2024-05-16 16:11:01 -06:00
JacobBarthelmeh a2db7c3bcc
Merge pull request #191 from cconlon/sessionIsSetup
JNI: wrap wolfSSL_SessionIsSetup() in WolfSSLSession
2024-04-25 16:58:39 -06:00