F-6153: zeroize full RSA decrypt output buffer before free
parent
4382551949
commit
3b1f9031fa
|
|
@ -1016,7 +1016,7 @@ Java_com_wolfssl_wolfcrypt_Rsa_wc_1RsaPrivateDecrypt(
|
|||
RsaKey* key = NULL;
|
||||
byte* ciphertext = NULL;
|
||||
byte* output = NULL;
|
||||
word32 size = 0, outputSz = 0;
|
||||
word32 size = 0, outputSz = 0, outputBufSz = 0;
|
||||
int encSz = 0;
|
||||
|
||||
key = (RsaKey*) getNativeStruct(env, this);
|
||||
|
|
@ -1041,6 +1041,9 @@ Java_com_wolfssl_wolfcrypt_Rsa_wc_1RsaPrivateDecrypt(
|
|||
ret = BAD_FUNC_ARG;
|
||||
} else {
|
||||
outputSz = (word32)encSz;
|
||||
/* Keep full allocation size for zeroization, outputSz shrinks
|
||||
* to plaintext len after decrypt */
|
||||
outputBufSz = outputSz;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1081,9 +1084,9 @@ Java_com_wolfssl_wolfcrypt_Rsa_wc_1RsaPrivateDecrypt(
|
|||
if (output != NULL) {
|
||||
#if (LIBWOLFSSL_VERSION_HEX >= 0x05008004) && \
|
||||
!defined(WOLFSSL_NO_FORCE_ZERO)
|
||||
wc_ForceZero(output, outputSz);
|
||||
wc_ForceZero(output, outputBufSz);
|
||||
#else
|
||||
XMEMSET(output, 0, outputSz);
|
||||
XMEMSET(output, 0, outputBufSz);
|
||||
#endif
|
||||
XFREE(output, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
}
|
||||
|
|
@ -1207,7 +1210,7 @@ Java_com_wolfssl_wolfcrypt_Rsa_wc_1RsaPrivateDecrypt_1ex(
|
|||
RsaKey* key = NULL;
|
||||
byte* ciphertext = NULL;
|
||||
byte* output = NULL;
|
||||
word32 size = 0, outputSz = 0;
|
||||
word32 size = 0, outputSz = 0, outputBufSz = 0;
|
||||
int encSz = 0;
|
||||
|
||||
key = (RsaKey*) getNativeStruct(env, this);
|
||||
|
|
@ -1237,6 +1240,9 @@ Java_com_wolfssl_wolfcrypt_Rsa_wc_1RsaPrivateDecrypt_1ex(
|
|||
ret = BAD_FUNC_ARG;
|
||||
} else {
|
||||
outputSz = (word32)encSz;
|
||||
/* Keep full allocation size for zeroization, outputSz shrinks to
|
||||
* the plaintext len after decrypt */
|
||||
outputBufSz = outputSz;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1277,9 +1283,9 @@ Java_com_wolfssl_wolfcrypt_Rsa_wc_1RsaPrivateDecrypt_1ex(
|
|||
if (output != NULL) {
|
||||
#if (LIBWOLFSSL_VERSION_HEX >= 0x05008004) && \
|
||||
!defined(WOLFSSL_NO_FORCE_ZERO)
|
||||
wc_ForceZero(output, outputSz);
|
||||
wc_ForceZero(output, outputBufSz);
|
||||
#else
|
||||
XMEMSET(output, 0, outputSz);
|
||||
XMEMSET(output, 0, outputBufSz);
|
||||
#endif
|
||||
XFREE(output, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue