Updates to HMAC crypto callback support to capture raw KEY and require hmac struct.

This commit is contained in:
David Garske
2019-02-04 13:19:55 -08:00
parent 838652c03b
commit e7b23646a5
3 changed files with 17 additions and 14 deletions

View File

@@ -492,20 +492,17 @@ int wc_CryptoCb_Sha256Hash(wc_Sha256* sha256, const byte* in,
#endif /* !NO_SHA256 */
#ifndef NO_HMAC
int wc_CryptoCb_Hmac(Hmac* hmac, int macType, const byte* in, word32 inSz, byte* digest)
int wc_CryptoCb_Hmac(Hmac* hmac, int macType, const byte* in, word32 inSz,
byte* digest)
{
int ret = NOT_COMPILED_IN;
CryptoCb* dev;
/* locate registered callback */
if (hmac) {
dev = wc_CryptoCb_FindDevice(hmac->devId);
}
else {
/* locate first callback and try using it */
dev = wc_CryptoCb_FindDeviceByIndex(0);
}
if (hmac == NULL)
return ret;
/* locate registered callback */
dev = wc_CryptoCb_FindDevice(hmac->devId);
if (dev && dev->cb) {
wc_CryptoInfo cryptoInfo;
XMEMSET(&cryptoInfo, 0, sizeof(cryptoInfo));

View File

@@ -325,6 +325,11 @@ int wc_HmacSetKey(Hmac* hmac, int type, const byte* key, word32 length)
return HMAC_MIN_KEYLEN_E;
#endif
#ifdef WOLF_CRYPTO_CB
hmac->keyRaw = key; /* use buffer directly */
hmac->keyLen = length;
#endif
ip = (byte*)hmac->ipad;
op = (byte*)hmac->opad;
@@ -1056,8 +1061,6 @@ int wc_HmacInit(Hmac* hmac, void* heap, int devId)
#endif
#if defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_HMAC)
hmac->keyLen = 0;
ret = wolfAsync_DevCtxInit(&hmac->asyncDev, WOLFSSL_ASYNC_MARKER_HMAC,
hmac->heap, devId);
#else

View File

@@ -144,11 +144,14 @@ typedef struct Hmac {
byte innerHashKeyed; /* keyed flag */
#ifdef WOLFSSL_ASYNC_CRYPT
WC_ASYNC_DEV asyncDev;
word16 keyLen; /* hmac key length (key in ipad) */
#endif /* WOLFSSL_ASYNC_CRYPT */
#ifdef WOLF_CRYPTO_CB
int devId;
void* devCtx;
int devId;
void* devCtx;
const byte* keyRaw;
#endif
#if defined(WOLFSSL_ASYNC_CRYPT) || defined(WOLF_CRYPTO_CB)
word16 keyLen; /* hmac key length (key in ipad) */
#endif
} Hmac;