Skip to content

Commit 9062b98

Browse files
committed
Fix f284 harden wc_FreeRsaKey
1 parent 178f96c commit 9062b98

1 file changed

Lines changed: 9 additions & 19 deletions

File tree

wolfcrypt/src/rsa.c

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -564,27 +564,17 @@ int wc_FreeRsaKey(RsaKey* key)
564564
#endif
565565

566566
#ifndef WOLFSSL_RSA_PUBLIC_ONLY
567-
if (key->type == RSA_PRIVATE) {
567+
/* Always forcezero private key fields, since they may contain residual
568+
* sensitive data even when key->type is not RSA_PRIVATE (e.g., after a
569+
* partial key decode failure). */
568570
#if defined(WOLFSSL_KEY_GEN) || defined(OPENSSL_EXTRA) || !defined(RSA_LOW_MEM)
569-
mp_forcezero(&key->u);
570-
mp_forcezero(&key->dQ);
571-
mp_forcezero(&key->dP);
571+
mp_forcezero(&key->u);
572+
mp_forcezero(&key->dQ);
573+
mp_forcezero(&key->dP);
572574
#endif
573-
mp_forcezero(&key->q);
574-
mp_forcezero(&key->p);
575-
mp_forcezero(&key->d);
576-
}
577-
else {
578-
/* private part */
579-
#if defined(WOLFSSL_KEY_GEN) || defined(OPENSSL_EXTRA) || !defined(RSA_LOW_MEM)
580-
mp_clear(&key->u);
581-
mp_clear(&key->dQ);
582-
mp_clear(&key->dP);
583-
#endif
584-
mp_clear(&key->q);
585-
mp_clear(&key->p);
586-
mp_clear(&key->d);
587-
}
575+
mp_forcezero(&key->q);
576+
mp_forcezero(&key->p);
577+
mp_forcezero(&key->d);
588578
#endif /* WOLFSSL_RSA_PUBLIC_ONLY */
589579

590580
/* public part */

0 commit comments

Comments
 (0)