F-5041: zeroize native Ed25519 private key copies before JNI release
parent
f3c6ba590a
commit
5506469ed6
|
|
@ -186,13 +186,14 @@ JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Ed25519_wc_1ed25519_1import_1p
|
|||
byte* priv = NULL;
|
||||
byte* pub = NULL;
|
||||
word32 privSz = 0, pubSz = 0;
|
||||
jboolean privIsCopy = JNI_FALSE;
|
||||
|
||||
ed25519 = (ed25519_key*) getNativeStruct(env, this);
|
||||
if ((*env)->ExceptionOccurred(env)) {
|
||||
/* getNativeStruct may throw exception, prevent throwing another */
|
||||
return;
|
||||
}
|
||||
priv = getByteArray(env, priv_object);
|
||||
priv = getByteArrayIsCopy(env, priv_object, &privIsCopy);
|
||||
privSz = getByteArrayLength(env, priv_object);
|
||||
pub = getByteArray(env, pub_object);
|
||||
pubSz = getByteArrayLength(env, pub_object);
|
||||
|
|
@ -214,6 +215,7 @@ JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Ed25519_wc_1ed25519_1import_1p
|
|||
|
||||
LogStr("wc_ed25519_import_private_key(ed25519=%p) = %d\n", ed25519, ret);
|
||||
|
||||
zeroizeByteArrayCopy(priv, privSz, privIsCopy);
|
||||
releaseByteArray(env, priv_object, priv, JNI_ABORT);
|
||||
releaseByteArray(env, pub_object, pub, JNI_ABORT);
|
||||
#else
|
||||
|
|
@ -263,13 +265,14 @@ JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Ed25519_wc_1ed25519_1import_1p
|
|||
ed25519_key* ed25519 = NULL;
|
||||
byte* priv = NULL;
|
||||
word32 privSz = 0;
|
||||
jboolean privIsCopy = JNI_FALSE;
|
||||
|
||||
ed25519 = (ed25519_key*) getNativeStruct(env, this);
|
||||
if ((*env)->ExceptionOccurred(env)) {
|
||||
/* getNativeStruct may throw exception, prevent throwing another */
|
||||
return;
|
||||
}
|
||||
priv = getByteArray(env, priv_object);
|
||||
priv = getByteArrayIsCopy(env, priv_object, &privIsCopy);
|
||||
privSz = getByteArrayLength(env, priv_object);
|
||||
|
||||
if (!ed25519 || !priv) {
|
||||
|
|
@ -284,6 +287,7 @@ JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Ed25519_wc_1ed25519_1import_1p
|
|||
|
||||
LogStr("wc_ed25519_import_private_key(ed25519=%p) = %d\n", ed25519, ret);
|
||||
|
||||
zeroizeByteArrayCopy(priv, privSz, privIsCopy);
|
||||
releaseByteArray(env, priv_object, priv, JNI_ABORT);
|
||||
#else
|
||||
throwNotCompiledInException(env);
|
||||
|
|
|
|||
Loading…
Reference in New Issue