mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-03 12:44:45 +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 */
|
#endif /* !NO_SHA256 */
|
||||||
|
|
||||||
#ifndef NO_HMAC
|
#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;
|
int ret = NOT_COMPILED_IN;
|
||||||
CryptoCb* dev;
|
CryptoCb* dev;
|
||||||
|
|
||||||
/* locate registered callback */
|
if (hmac == NULL)
|
||||||
if (hmac) {
|
return ret;
|
||||||
dev = wc_CryptoCb_FindDevice(hmac->devId);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
/* locate first callback and try using it */
|
|
||||||
dev = wc_CryptoCb_FindDeviceByIndex(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
/* locate registered callback */
|
||||||
|
dev = wc_CryptoCb_FindDevice(hmac->devId);
|
||||||
if (dev && dev->cb) {
|
if (dev && dev->cb) {
|
||||||
wc_CryptoInfo cryptoInfo;
|
wc_CryptoInfo cryptoInfo;
|
||||||
XMEMSET(&cryptoInfo, 0, sizeof(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;
|
return HMAC_MIN_KEYLEN_E;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef WOLF_CRYPTO_CB
|
||||||
|
hmac->keyRaw = key; /* use buffer directly */
|
||||||
|
hmac->keyLen = length;
|
||||||
|
#endif
|
||||||
|
|
||||||
ip = (byte*)hmac->ipad;
|
ip = (byte*)hmac->ipad;
|
||||||
op = (byte*)hmac->opad;
|
op = (byte*)hmac->opad;
|
||||||
|
|
||||||
@@ -1056,8 +1061,6 @@ int wc_HmacInit(Hmac* hmac, void* heap, int devId)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_HMAC)
|
#if defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_HMAC)
|
||||||
hmac->keyLen = 0;
|
|
||||||
|
|
||||||
ret = wolfAsync_DevCtxInit(&hmac->asyncDev, WOLFSSL_ASYNC_MARKER_HMAC,
|
ret = wolfAsync_DevCtxInit(&hmac->asyncDev, WOLFSSL_ASYNC_MARKER_HMAC,
|
||||||
hmac->heap, devId);
|
hmac->heap, devId);
|
||||||
#else
|
#else
|
||||||
|
@@ -144,11 +144,14 @@ typedef struct Hmac {
|
|||||||
byte innerHashKeyed; /* keyed flag */
|
byte innerHashKeyed; /* keyed flag */
|
||||||
#ifdef WOLFSSL_ASYNC_CRYPT
|
#ifdef WOLFSSL_ASYNC_CRYPT
|
||||||
WC_ASYNC_DEV asyncDev;
|
WC_ASYNC_DEV asyncDev;
|
||||||
word16 keyLen; /* hmac key length (key in ipad) */
|
|
||||||
#endif /* WOLFSSL_ASYNC_CRYPT */
|
#endif /* WOLFSSL_ASYNC_CRYPT */
|
||||||
#ifdef WOLF_CRYPTO_CB
|
#ifdef WOLF_CRYPTO_CB
|
||||||
int devId;
|
int devId;
|
||||||
void* devCtx;
|
void* devCtx;
|
||||||
|
const byte* keyRaw;
|
||||||
|
#endif
|
||||||
|
#if defined(WOLFSSL_ASYNC_CRYPT) || defined(WOLF_CRYPTO_CB)
|
||||||
|
word16 keyLen; /* hmac key length (key in ipad) */
|
||||||
#endif
|
#endif
|
||||||
} Hmac;
|
} Hmac;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user