Skip to content

Commit 8498d85

Browse files
committed
Added QAT SHA3 support.
1 parent 66a06d1 commit 8498d85

2 files changed

Lines changed: 33 additions & 2 deletions

File tree

wolfcrypt/src/port/intel/quickassist.c

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -563,6 +563,7 @@ static int IntelQaDevIsHash(WC_ASYNC_DEV* dev)
563563
case WOLFSSL_ASYNC_MARKER_SHA224:
564564
case WOLFSSL_ASYNC_MARKER_SHA:
565565
case WOLFSSL_ASYNC_MARKER_MD5:
566+
case WOLFSSL_ASYNC_MARKER_SHA3:
566567
isHash = 1;
567568
break;
568569
}
@@ -604,6 +605,7 @@ static int IntelQaDevIsSym(WC_ASYNC_DEV* dev)
604605
case WOLFSSL_ASYNC_MARKER_SHA224:
605606
case WOLFSSL_ASYNC_MARKER_SHA:
606607
case WOLFSSL_ASYNC_MARKER_MD5:
608+
case WOLFSSL_ASYNC_MARKER_SHA3:
607609
isSym = 1;
608610
break;
609611
}
@@ -2506,6 +2508,14 @@ static int IntelQaSymHashGetInfo(CpaCySymHashAlgorithm hashAlgorithm,
25062508
digestSize = WC_SHA512_DIGEST_SIZE;
25072509
#endif
25082510
break;
2511+
#ifdef QAT_V2
2512+
case CPA_CY_SYM_HASH_SHA3_256:
2513+
#ifdef WOLFSSL_SHA3
2514+
blockSize = WC_SHA3_256_BLOCK_SIZE;
2515+
digestSize = WC_SHA3_256_DIGEST_SIZE;
2516+
#endif
2517+
break;
2518+
#endif
25092519

25102520
/* not supported */
25112521
case CPA_CY_SYM_HASH_NONE:
@@ -2519,7 +2529,6 @@ static int IntelQaSymHashGetInfo(CpaCySymHashAlgorithm hashAlgorithm,
25192529
case CPA_CY_SYM_HASH_AES_CBC_MAC:
25202530
#ifdef QAT_V2
25212531
case CPA_CY_SYM_HASH_ZUC_EIA3:
2522-
case CPA_CY_SYM_HASH_SHA3_256:
25232532
#endif
25242533
default:
25252534
return -1;
@@ -3002,9 +3011,16 @@ int IntelQaSymMd5(WC_ASYNC_DEV* dev, byte* out, const byte* in, word32 sz)
30023011
return IntelQaSymHash(dev, out, in, sz,
30033012
CPA_CY_SYM_HASH_MODE_PLAIN, CPA_CY_SYM_HASH_MD5, NULL, 0);
30043013
}
3005-
30063014
#endif /* !NO_MD5 */
30073015

3016+
#ifdef WOLFSSL_SHA3
3017+
int IntelQaSymSha3(WC_ASYNC_DEV* dev, byte* out, const byte* in, word32 sz)
3018+
{
3019+
return IntelQaSymHash(dev, out, in, sz,
3020+
CPA_CY_SYM_HASH_MODE_PLAIN, CPA_CY_SYM_HASH_SHA3_256, NULL, 0);
3021+
}
3022+
#endif
3023+
30083024
#ifndef NO_HMAC
30093025
int IntelQaHmacGetType(int macType, word32* hashAlgorithm)
30103026
{
@@ -3041,8 +3057,18 @@ int IntelQaSymMd5(WC_ASYNC_DEV* dev, byte* out, const byte* in, word32 sz)
30413057
if (hashAlgorithm) *hashAlgorithm = CPA_CY_SYM_HASH_SHA512;
30423058
break;
30433059
#endif
3060+
#ifdef WOLFSSL_SHA3
3061+
case WC_SHA3_256:
3062+
if (hashAlgorithm) *hashAlgorithm = CPA_CY_SYM_HASH_SHA3_256;
3063+
break;
3064+
#endif
30443065
#ifdef HAVE_BLAKE2
30453066
case BLAKE2B_ID:
3067+
#endif
3068+
#ifdef WOLFSSL_SHA3
3069+
case WC_SHA3_224:
3070+
case WC_SHA3_384:
3071+
case WC_SHA3_512:
30463072
#endif
30473073
default:
30483074
return NOT_COMPILED_IN;

wolfssl/wolfcrypt/port/intel/quickassist.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,11 @@ WOLFSSL_LOCAL int IntelQaGetCyInstanceCount(void);
394394
const byte* in, word32 sz);
395395
#endif /* !NO_MD5 */
396396

397+
#ifdef WOLFSSL_SHA3
398+
WOLFSSL_LOCAL int IntelQaSymSha3(struct WC_ASYNC_DEV* dev, byte* out,
399+
const byte* in, word32 sz);
400+
#endif
401+
397402
#ifdef HAVE_ECC
398403
#ifdef HAVE_ECC_DHE
399404
WOLFSSL_LOCAL int IntelQaEcdh(struct WC_ASYNC_DEV* dev,

0 commit comments

Comments
 (0)