Skip to content

Commit f382526

Browse files
committed
zero FSL CAAM ECC private key buffers
1 parent 8d9a4b4 commit f382526

1 file changed

Lines changed: 11 additions & 0 deletions

File tree

wolfcrypt/src/port/caam/wolfcaam_fsl_nxp.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,12 +443,14 @@ int wc_CAAM_EccSign(const byte* in, int inlen, byte* out, word32* outlen,
443443
if (key->blackKey == CAAM_BLACK_KEY_CCM) {
444444
if (mp_to_unsigned_bin_len(wc_ecc_key_get_priv(key), k,
445445
kSz + WC_CAAM_MAC_SZ) != MP_OKAY) {
446+
ForceZero(k, sizeof(k));
446447
return MP_TO_E;
447448
}
448449
}
449450
else {
450451
if (mp_to_unsigned_bin_len(wc_ecc_key_get_priv(key), k, kSz) !=
451452
MP_OKAY) {
453+
ForceZero(k, sizeof(k));
452454
return MP_TO_E;
453455
}
454456
}
@@ -457,6 +459,7 @@ int wc_CAAM_EccSign(const byte* in, int inlen, byte* out, word32* outlen,
457459
ecdsel = GetECDSEL(dp->id);
458460
if (ecdsel == 0) {
459461
WOLFSSL_MSG("unknown key type or size");
462+
ForceZero(k, sizeof(k));
460463
return CRYPTOCB_UNAVAILABLE;
461464
}
462465

@@ -469,6 +472,7 @@ int wc_CAAM_EccSign(const byte* in, int inlen, byte* out, word32* outlen,
469472
break;
470473
default:
471474
WOLFSSL_MSG("unknown/unsupported key type");
475+
ForceZero(k, sizeof(k));
472476
return BAD_FUNC_ARG;
473477
}
474478

@@ -508,10 +512,12 @@ int wc_CAAM_EccSign(const byte* in, int inlen, byte* out, word32* outlen,
508512
mp_free(&mps);
509513
if (ret != 0) {
510514
WOLFSSL_MSG("Issue converting to signature");
515+
ForceZero(k, sizeof(k));
511516
return -1;
512517
}
513518
}
514519

520+
ForceZero(k, sizeof(k));
515521
return ret;
516522
}
517523

@@ -697,22 +703,26 @@ int wc_CAAM_Ecdh(ecc_key* private_key, ecc_key* public_key, byte* out,
697703
if (private_key->blackKey == CAAM_BLACK_KEY_CCM) {
698704
if (mp_to_unsigned_bin_len(wc_ecc_key_get_priv(private_key), k,
699705
keySz + WC_CAAM_MAC_SZ) != MP_OKAY) {
706+
ForceZero(k, sizeof(k));
700707
return MP_TO_E;
701708
}
702709
}
703710
else {
704711
if (mp_to_unsigned_bin_len(wc_ecc_key_get_priv(private_key), k, keySz)
705712
!= MP_OKAY) {
713+
ForceZero(k, sizeof(k));
706714
return MP_TO_E;
707715
}
708716
}
709717

710718
if (*outlen < (word32)keySz) {
719+
ForceZero(k, sizeof(k));
711720
return -1;
712721
}
713722

714723
status = CAAM_ECC_ECDH(CAAM, &hndl, k, keySz, qxy, keySz*2, out, keySz,
715724
ecdsel, enc);
725+
ForceZero(k, sizeof(k));
716726
if (status == kStatus_Success) {
717727
*outlen = keySz;
718728
return MP_OKAY;
@@ -787,6 +797,7 @@ int wc_CAAM_MakeEccKey(WC_RNG* rng, int keySize, ecc_key* key, int curveId,
787797
ret = -1;
788798
}
789799

800+
ForceZero(k, sizeof(k));
790801
return ret;
791802
}
792803
#endif /* WOLFSSL_KEY_GEN */

0 commit comments

Comments
 (0)