JNI: wrap wolfSSL_SessionIsSetup() in WolfSSLSession, needs wolfSSL > 5.7.0 or WOLFSSL_PR7430_PATCH_APPLIED defined
parent
e0d718e9b3
commit
76ac7784de
|
@ -1420,6 +1420,34 @@ JNIEXPORT jlong JNICALL Java_com_wolfssl_WolfSSLSession_get1Session
|
||||||
return (jlong)(uintptr_t)dup;
|
return (jlong)(uintptr_t)dup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLSession_wolfsslSessionIsSetup
|
||||||
|
(JNIEnv* jenv, jclass jcl, jlong sessionPtr)
|
||||||
|
{
|
||||||
|
#if (LIBWOLFSSL_VERSION_HEX > 0x05007000) || \
|
||||||
|
defined(WOLFSSL_PR7430_PATCH_APPLIED)
|
||||||
|
int ret;
|
||||||
|
WOLFSSL_SESSION* session = (WOLFSSL_SESSION*)(uintptr_t)sessionPtr;
|
||||||
|
(void)jcl;
|
||||||
|
|
||||||
|
if (jenv == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* wolfSSL_SessionIsSetup() was added after wolfSSL 5.7.0 in PR
|
||||||
|
* 7430. Version checked above must be greater than 5.7.0 or patch
|
||||||
|
* from this PR must be applied and WOLFSSL_PR7430_PATCH_APPLIED defined
|
||||||
|
* when compiling this JNI wrapper */
|
||||||
|
ret = wolfSSL_SessionIsSetup(session);
|
||||||
|
|
||||||
|
return (jint)ret;
|
||||||
|
#else
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcl;
|
||||||
|
(void)sessionPtr;
|
||||||
|
return (jint)NOT_COMPILED_IN;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_com_wolfssl_WolfSSLSession_freeNativeSession
|
JNIEXPORT void JNICALL Java_com_wolfssl_WolfSSLSession_freeNativeSession
|
||||||
(JNIEnv* jenv, jclass jcl, jlong sessionPtr)
|
(JNIEnv* jenv, jclass jcl, jlong sessionPtr)
|
||||||
{
|
{
|
||||||
|
|
|
@ -159,6 +159,14 @@ JNIEXPORT jlong JNICALL Java_com_wolfssl_WolfSSLSession_getSession
|
||||||
JNIEXPORT jlong JNICALL Java_com_wolfssl_WolfSSLSession_get1Session
|
JNIEXPORT jlong JNICALL Java_com_wolfssl_WolfSSLSession_get1Session
|
||||||
(JNIEnv *, jobject, jlong);
|
(JNIEnv *, jobject, jlong);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: com_wolfssl_WolfSSLSession
|
||||||
|
* Method: wolfsslSessionIsSetup
|
||||||
|
* Signature: (J)I
|
||||||
|
*/
|
||||||
|
JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSLSession_wolfsslSessionIsSetup
|
||||||
|
(JNIEnv *, jclass, jlong);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: com_wolfssl_WolfSSLSession
|
* Class: com_wolfssl_WolfSSLSession
|
||||||
* Method: freeNativeSession
|
* Method: freeNativeSession
|
||||||
|
|
|
@ -262,6 +262,7 @@ public class WolfSSLSession {
|
||||||
private native int setSession(long ssl, long session);
|
private native int setSession(long ssl, long session);
|
||||||
private native long getSession(long ssl);
|
private native long getSession(long ssl);
|
||||||
private native long get1Session(long ssl);
|
private native long get1Session(long ssl);
|
||||||
|
private static native int wolfsslSessionIsSetup(long ssl);
|
||||||
private static native void freeNativeSession(long session);
|
private static native void freeNativeSession(long session);
|
||||||
private native byte[] getSessionID(long session);
|
private native byte[] getSessionID(long session);
|
||||||
private native int setServerID(long ssl, byte[] id, int len, int newSess);
|
private native int setServerID(long ssl, byte[] id, int len, int newSess);
|
||||||
|
@ -1364,6 +1365,30 @@ public class WolfSSLSession {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if native WOLFSSL_SESSION has been set up or not.
|
||||||
|
*
|
||||||
|
* This method is static and does not check active state since this
|
||||||
|
* takes a native pointer and has no interaction with the rest of this
|
||||||
|
* object.
|
||||||
|
*
|
||||||
|
* @param session pointer to native WOLFSSL_SESSION structure. May be
|
||||||
|
* obtained from getSession().
|
||||||
|
*
|
||||||
|
* @return 1 if session has been set up, otherwise 0 if not set up. May
|
||||||
|
* return WolfSSL.NOT_COMPILED_IN if native wolfSSL does not have
|
||||||
|
* wolfSSL_SessionIsSetup() compiled in. This API was added
|
||||||
|
* after the wolfSSL 5.7.0 release.
|
||||||
|
*/
|
||||||
|
public static int sessionIsSetup(long session) {
|
||||||
|
|
||||||
|
if (session == 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return wolfsslSessionIsSetup(session);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Free the native WOLFSSL_SESSION structure pointed to be session.
|
* Free the native WOLFSSL_SESSION structure pointed to be session.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue