2323/* Pick up compile-time configuration */
2424#include "wolfhsm/wh_settings.h"
2525
26+ #ifdef WOLFHSM_CFG_ENABLE_AUTHENTICATION
27+
2628#include <stdint.h>
2729#include <stddef.h>
2830#include <string.h>
@@ -111,14 +113,16 @@ static whAuthBase_User* wh_Auth_BaseCheckPin(const char* username,
111113 const void * auth_data ,
112114 uint16_t auth_data_len )
113115{
114- whAuthBase_User * found_user ;
116+ whAuthBase_User * found_user = NULL ;
117+ whAuthBase_User * ret = NULL ;
115118 unsigned char authCheck [WH_AUTH_BASE_MAX_CREDENTIALS_LEN ];
116119 uint16_t authCheck_len ;
117120 int rc ;
118121
119122 /* Process auth_data: hash if crypto enabled, copy if disabled */
120123 rc = wh_Auth_BaseHashPin (auth_data , auth_data_len , authCheck );
121124 if (rc != WH_ERROR_OK ) {
125+ wh_Utils_ForceZero (authCheck , sizeof (authCheck ));
122126 return NULL ;
123127 }
124128#ifndef WOLFHSM_CFG_NO_CRYPTO
@@ -132,9 +136,11 @@ static whAuthBase_User* wh_Auth_BaseCheckPin(const char* username,
132136 found_user -> credentials_len == authCheck_len &&
133137 wh_Utils_ConstantCompare (found_user -> credentials , authCheck ,
134138 authCheck_len ) == 0 ) {
135- return found_user ;
139+ ret = found_user ;
136140 }
137- return NULL ;
141+
142+ wh_Utils_ForceZero (authCheck , sizeof (authCheck ));
143+ return ret ;
138144}
139145
140146#if defined(WOLFHSM_CFG_CERTIFICATE_MANAGER ) && !defined(WOLFHSM_CFG_NO_CRYPTO )
@@ -553,3 +559,5 @@ int wh_Auth_BaseUserSetCredentials(void* context, uint16_t user_id,
553559 (void )auth_context ;
554560 return rc ;
555561}
562+
563+ #endif /* WOLFHSM_CFG_ENABLE_AUTHENTICATION */
0 commit comments