mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2026-07-06 21:10:51 +02:00
Fix f284 harden wc_FreeRsaKey
This commit is contained in:
+9
-19
@@ -564,27 +564,17 @@ int wc_FreeRsaKey(RsaKey* key)
|
||||
#endif
|
||||
|
||||
#ifndef WOLFSSL_RSA_PUBLIC_ONLY
|
||||
if (key->type == RSA_PRIVATE) {
|
||||
/* Always forcezero private key fields, since they may contain residual
|
||||
* sensitive data even when key->type is not RSA_PRIVATE (e.g., after a
|
||||
* partial key decode failure). */
|
||||
#if defined(WOLFSSL_KEY_GEN) || defined(OPENSSL_EXTRA) || !defined(RSA_LOW_MEM)
|
||||
mp_forcezero(&key->u);
|
||||
mp_forcezero(&key->dQ);
|
||||
mp_forcezero(&key->dP);
|
||||
mp_forcezero(&key->u);
|
||||
mp_forcezero(&key->dQ);
|
||||
mp_forcezero(&key->dP);
|
||||
#endif
|
||||
mp_forcezero(&key->q);
|
||||
mp_forcezero(&key->p);
|
||||
mp_forcezero(&key->d);
|
||||
}
|
||||
else {
|
||||
/* private part */
|
||||
#if defined(WOLFSSL_KEY_GEN) || defined(OPENSSL_EXTRA) || !defined(RSA_LOW_MEM)
|
||||
mp_clear(&key->u);
|
||||
mp_clear(&key->dQ);
|
||||
mp_clear(&key->dP);
|
||||
#endif
|
||||
mp_clear(&key->q);
|
||||
mp_clear(&key->p);
|
||||
mp_clear(&key->d);
|
||||
}
|
||||
mp_forcezero(&key->q);
|
||||
mp_forcezero(&key->p);
|
||||
mp_forcezero(&key->d);
|
||||
#endif /* WOLFSSL_RSA_PUBLIC_ONLY */
|
||||
|
||||
/* public part */
|
||||
|
||||
Reference in New Issue
Block a user