From 53d80c0b7fdac4d2d9a98c0079235fdd5785ad87 Mon Sep 17 00:00:00 2001 From: John Bland Date: Tue, 17 Oct 2023 01:33:06 -0400 Subject: [PATCH 1/3] correctly set invalid devId for when cryptoCb is on but the user has opted to use software, or cmac is not available on for their device. currently a devId of 0 is set which causes CRYPTOCB_UNAVAILABLE --- wolfcrypt/src/cmac.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/wolfcrypt/src/cmac.c b/wolfcrypt/src/cmac.c index e3b9f39ea..4d6552848 100644 --- a/wolfcrypt/src/cmac.c +++ b/wolfcrypt/src/cmac.c @@ -114,12 +114,13 @@ int wc_InitCmac_ex(Cmac* cmac, const byte* key, word32 keySz, #endif XMEMSET(cmac, 0, sizeof(Cmac)); + /* set invalid devId regardless of cryptoCb */ + cmac->devId = devId; #ifdef WOLF_CRYPTO_CB #ifndef WOLF_CRYPTO_CB_FIND if (devId != INVALID_DEVID) #endif { - cmac->devId = devId; cmac->devCtx = NULL; ret = wc_CryptoCb_Cmac(cmac, key, keySz, NULL, 0, NULL, NULL, @@ -128,6 +129,7 @@ int wc_InitCmac_ex(Cmac* cmac, const byte* key, word32 keySz, return ret; /* fall-through when unavailable */ } + #else (void)devId; #endif From 92382602dd3c534b696371d29e61bdefc93db938 Mon Sep 17 00:00:00 2001 From: John Bland Date: Tue, 17 Oct 2023 01:39:34 -0400 Subject: [PATCH 2/3] fix bad placement --- wolfcrypt/src/cmac.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wolfcrypt/src/cmac.c b/wolfcrypt/src/cmac.c index 4d6552848..59585a9d1 100644 --- a/wolfcrypt/src/cmac.c +++ b/wolfcrypt/src/cmac.c @@ -114,9 +114,9 @@ int wc_InitCmac_ex(Cmac* cmac, const byte* key, word32 keySz, #endif XMEMSET(cmac, 0, sizeof(Cmac)); - /* set invalid devId regardless of cryptoCb */ - cmac->devId = devId; #ifdef WOLF_CRYPTO_CB + /* set invalid devId regardless of value */ + cmac->devId = devId; #ifndef WOLF_CRYPTO_CB_FIND if (devId != INVALID_DEVID) #endif From 76b770d4ee9fddface574277bdbbc9fd00ce5ce0 Mon Sep 17 00:00:00 2001 From: John Bland Date: Tue, 17 Oct 2023 13:01:00 -0400 Subject: [PATCH 3/3] update comment based on PR advise --- wolfcrypt/src/cmac.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/wolfcrypt/src/cmac.c b/wolfcrypt/src/cmac.c index 59585a9d1..0b3f708c5 100644 --- a/wolfcrypt/src/cmac.c +++ b/wolfcrypt/src/cmac.c @@ -115,7 +115,7 @@ int wc_InitCmac_ex(Cmac* cmac, const byte* key, word32 keySz, XMEMSET(cmac, 0, sizeof(Cmac)); #ifdef WOLF_CRYPTO_CB - /* set invalid devId regardless of value */ + /* Set devId regardless of value (invalid or not) */ cmac->devId = devId; #ifndef WOLF_CRYPTO_CB_FIND if (devId != INVALID_DEVID) @@ -129,7 +129,6 @@ int wc_InitCmac_ex(Cmac* cmac, const byte* key, word32 keySz, return ret; /* fall-through when unavailable */ } - #else (void)devId; #endif