@@ -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