File tree Expand file tree Collapse file tree 1 file changed +6
-1
lines changed
Expand file tree Collapse file tree 1 file changed +6
-1
lines changed Original file line number Diff line number Diff line change @@ -42,6 +42,7 @@ JNIEXPORT jboolean JNICALL Java_com_wolfssl_provider_jce_WolfSSLKeyStore_X509Che
4242 int keyDerSz = 0 ;
4343 byte * certDer = NULL ;
4444 byte * keyDer = NULL ;
45+ byte * pkcs8KeyDer = NULL ;
4546 WOLFSSL_X509 * x509 = NULL ;
4647 WOLFSSL_EVP_PKEY * key = NULL ;
4748 WOLFSSL_PKCS8_PRIV_KEY_INFO * keyInfo = NULL ;
@@ -58,6 +59,9 @@ JNIEXPORT jboolean JNICALL Java_com_wolfssl_provider_jce_WolfSSLKeyStore_X509Che
5859
5960 keyDer = (byte * )(* env )-> GetByteArrayElements (env , pkcs8KeyDerArr , NULL );
6061 keyDerSz = (* env )-> GetArrayLength (env , pkcs8KeyDerArr );
62+ /* Keep original keyDer pointer for free later, wolfSSL_d2i_PKCS8_PKEY
63+ * will change/advance the pointer. */
64+ pkcs8KeyDer = keyDer ;
6165
6266 if (certDer == NULL || certDerSz <= 0 || keyDer == NULL || keyDerSz <= 0 ) {
6367 fprintf (stderr , "Native X509CheckPrivateKey() bad args" );
@@ -75,7 +79,8 @@ JNIEXPORT jboolean JNICALL Java_com_wolfssl_provider_jce_WolfSSLKeyStore_X509Che
7579 }
7680
7781 if (ret == WOLFSSL_SUCCESS ) {
78- keyInfo = wolfSSL_d2i_PKCS8_PKEY (NULL , (const byte * * )& keyDer , keyDerSz );
82+ keyInfo = wolfSSL_d2i_PKCS8_PKEY (NULL , (const byte * * )& pkcs8KeyDer ,
83+ keyDerSz );
7984 if (keyInfo == NULL ) {
8085 fprintf (stderr , "Native wolfSSL_d2i_PKCS8_PKEY() failed" );
8186 ret = WOLFSSL_FAILURE ;
You can’t perform that action at this time.
0 commit comments