mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-01 11:44:38 +02:00
Updates to HMAC crypto callback support to capture raw KEY and require hmac struct.
This commit is contained in:
@@ -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));
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
||||
|
Reference in New Issue
Block a user