Skip to content

Commit

Permalink
Fixed SHA3 issue with possible uninitialized devId when building with…
Browse files Browse the repository at this point in the history
… async. Fixed HMAC set key issue with devId/heap getting lost.
  • Loading branch information
dgarske committed Oct 28, 2024
1 parent bdd6231 commit ea35b98
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 3 deletions.
7 changes: 7 additions & 0 deletions wolfcrypt/src/hmac.c
Original file line number Diff line number Diff line change
Expand Up @@ -266,14 +266,21 @@ int wc_HmacSetKey_ex(Hmac* hmac, int type, const byte* key, word32 length,
return BAD_FUNC_ARG;
}

heap = hmac->heap;
#if !defined(HAVE_FIPS) || FIPS_VERSION3_GE(6,0,0)
/* if set key has already been run then make sure and free existing */
/* This is for async and PIC32MZ situations, and just normally OK,
provided the user calls wc_HmacInit() first. That function is not
available in FIPS builds. In current FIPS builds, the hashes are
not allocating resources. */
if (hmac->macType != WC_HASH_TYPE_NONE) {
#ifdef WOLF_CRYPTO_CB
int devId = hmac->devId;
#endif
wc_HmacFree(hmac);
#ifdef WOLF_CRYPTO_CB
hmac->devId = devId;
#endif
}
#endif

Expand Down
6 changes: 3 additions & 3 deletions wolfcrypt/src/sha3.c
Original file line number Diff line number Diff line change
Expand Up @@ -820,10 +820,10 @@ static int wc_InitSha3(wc_Sha3* sha3, void* heap, int devId)
#if defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_SHA3)
ret = wolfAsync_DevCtxInit(&sha3->asyncDev,
WOLFSSL_ASYNC_MARKER_SHA3, sha3->heap, devId);
#elif defined(WOLF_CRYPTO_CB)
#endif
#if defined(WOLF_CRYPTO_CB)
sha3->devId = devId;
#endif /* WOLFSSL_ASYNC_CRYPT */

#endif
(void)devId;

return ret;
Expand Down

0 comments on commit ea35b98

Please sign in to comment.