3333 #include <stdio.h>
3434 #endif
3535#endif
36+ #ifdef NO_INLINE
37+ #include <wolfssl/wolfcrypt/misc.h>
38+ #else
39+ #define WOLFSSL_MISC_INCLUDED
40+ #include <wolfcrypt/src/misc.c>
41+ #endif
3642
3743#if defined(WOLFSSL_RENESAS_FSPSM_TLS ) || defined(WOLFSSL_RENESAS_TSIP_TLS )
3844#include <wolfssl/wolfcrypt/port/Renesas/renesas_cmn.h>
@@ -3948,6 +3954,17 @@ int DeriveKeys(WOLFSSL* ssl)
39483954 ret = StoreKeys (ssl , keyData , PROVISION_CLIENT_SERVER );
39493955 }
39503956
3957+ ForceZero (shaOutput , WC_SHA_DIGEST_SIZE );
3958+ ForceZero (md5Input , SECRET_LEN + WC_SHA_DIGEST_SIZE );
3959+ ForceZero (shaInput , KEY_PREFIX + SECRET_LEN + 2 * RAN_LEN );
3960+ ForceZero (keyData , KEY_PREFIX * WC_MD5_DIGEST_SIZE );
3961+ #ifdef WOLFSSL_CHECK_MEM_ZERO
3962+ wc_MemZero_Check (shaOutput , WC_SHA_DIGEST_SIZE );
3963+ wc_MemZero_Check (md5Input , SECRET_LEN + WC_SHA_DIGEST_SIZE );
3964+ wc_MemZero_Check (shaInput , KEY_PREFIX + SECRET_LEN + 2 * RAN_LEN );
3965+ wc_MemZero_Check (keyData , KEY_PREFIX * WC_MD5_DIGEST_SIZE );
3966+ #endif
3967+
39513968 WC_FREE_VAR_EX (shaOutput , NULL , DYNAMIC_TYPE_TMP_BUFFER );
39523969 WC_FREE_VAR_EX (md5Input , NULL , DYNAMIC_TYPE_TMP_BUFFER );
39533970 WC_FREE_VAR_EX (shaInput , NULL , DYNAMIC_TYPE_TMP_BUFFER );
@@ -3961,18 +3978,22 @@ int DeriveKeys(WOLFSSL* ssl)
39613978
39623979static int CleanPreMaster (WOLFSSL * ssl )
39633980{
3964- int i , ret , sz = (int )(ssl -> arrays -> preMasterSz );
3981+ int ret , sz = (int )(ssl -> arrays -> preMasterSz );
39653982
3966- for (i = 0 ; i < sz ; i ++ )
3967- ssl -> arrays -> preMasterSecret [i ] = 0 ;
3983+ ForceZero (ssl -> arrays -> preMasterSecret , sz );
3984+ #ifdef WOLFSSL_CHECK_MEM_ZERO
3985+ wc_MemZero_Check (ssl -> arrays -> preMasterSecret , sz );
3986+ #endif
39683987
39693988 ret = wc_RNG_GenerateBlock (ssl -> rng , ssl -> arrays -> preMasterSecret ,
39703989 (word32 )(sz ));
39713990 if (ret != 0 )
39723991 return ret ;
39733992
3974- for (i = 0 ; i < sz ; i ++ )
3975- ssl -> arrays -> preMasterSecret [i ] = 0 ;
3993+ ForceZero (ssl -> arrays -> preMasterSecret , sz );
3994+ #ifdef WOLFSSL_CHECK_MEM_ZERO
3995+ wc_MemZero_Check (ssl -> arrays -> preMasterSecret , sz );
3996+ #endif
39763997
39773998 XFREE (ssl -> arrays -> preMasterSecret , ssl -> heap , DYNAMIC_TYPE_SECRET );
39783999 ssl -> arrays -> preMasterSecret = NULL ;
@@ -4096,6 +4117,13 @@ static int MakeSslMasterSecret(WOLFSSL* ssl)
40964117 ret = DeriveKeys (ssl );
40974118 }
40984119
4120+ ForceZero (md5Input , ENCRYPT_LEN + WC_SHA_DIGEST_SIZE );
4121+ ForceZero (shaInput , PREFIX + ENCRYPT_LEN + 2 * RAN_LEN );
4122+ #ifdef WOLFSSL_CHECK_MEM_ZERO
4123+ wc_MemZero_Check (md5Input , ENCRYPT_LEN + WC_SHA_DIGEST_SIZE );
4124+ wc_MemZero_Check (shaInput , PREFIX + ENCRYPT_LEN + 2 * RAN_LEN );
4125+ #endif
4126+
40994127 WC_FREE_VAR_EX (shaOutput , NULL , DYNAMIC_TYPE_TMP_BUFFER );
41004128 WC_FREE_VAR_EX (md5Input , NULL , DYNAMIC_TYPE_TMP_BUFFER );
41014129 WC_FREE_VAR_EX (shaInput , NULL , DYNAMIC_TYPE_TMP_BUFFER );
0 commit comments