Acked-by: Kai Ji <[email protected]> ________________________________ From: Finn, Emma <[email protected]> Sent: 13 October 2026 10:33 To: Ji, Kai <[email protected]>; De Lara Guarch, Pablo <[email protected]> Cc: [email protected] <[email protected]>; Finn, Emma <[email protected]> Subject: [PATCH v3 2/2] crypto/ipsec_mb: Add SHAKE support.
Add SHAKE-128 and SHAKE-256 support to ipsec_mb PMD. Signed-off-by: Emma Finn <[email protected]> --- doc/guides/cryptodevs/aesni_mb.rst | 2 + doc/guides/cryptodevs/features/aesni_mb.ini | 2 + doc/guides/rel_notes/release_26_11.rst | 1 + drivers/crypto/ipsec_mb/pmd_aesni_mb.c | 8 +++ drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h | 54 +++++++++++++++++++-- 5 files changed, 64 insertions(+), 3 deletions(-) diff --git a/doc/guides/cryptodevs/aesni_mb.rst b/doc/guides/cryptodevs/aesni_mb.rst index 663b9f19d4b..da37d54471e 100644 --- a/doc/guides/cryptodevs/aesni_mb.rst +++ b/doc/guides/cryptodevs/aesni_mb.rst @@ -69,6 +69,8 @@ Hash algorithms: * RTE_CRYPTO_AUTH_SHA3_384 HMAC * RTE_CRYPTO_AUTH_SHA3_512 * RTE_CRYPTO_AUTH_SHA3_512 HMAC +* RTE_CRYPTO_AUTH_SHAKE_128 +* RTE_CRYPTO_AUTH_SHAKE_256 AEAD algorithms: diff --git a/doc/guides/cryptodevs/features/aesni_mb.ini b/doc/guides/cryptodevs/features/aesni_mb.ini index 73bb9f42633..18109ffe05d 100644 --- a/doc/guides/cryptodevs/features/aesni_mb.ini +++ b/doc/guides/cryptodevs/features/aesni_mb.ini @@ -77,6 +77,8 @@ SHA3_384 = Y SHA3_384 HMAC = Y SHA3_512 = Y SHA3_512 HMAC = Y +SHAKE_128 = Y +SHAKE_256 = Y ; ; Supported AEAD algorithms of the 'aesni_mb' crypto driver. diff --git a/doc/guides/rel_notes/release_26_11.rst b/doc/guides/rel_notes/release_26_11.rst index 826a0cf05cf..c116f3373da 100644 --- a/doc/guides/rel_notes/release_26_11.rst +++ b/doc/guides/rel_notes/release_26_11.rst @@ -28,6 +28,7 @@ New Features * Added support for SHA3-224, SHA3-256, SHA3-384, and SHA3-512 hash algorithms and their HMAC variants. + * Added support for SHAKE-128 and SHAKE-256 hash algorithms. .. This section should contain new features added in this release. Sample format: diff --git a/drivers/crypto/ipsec_mb/pmd_aesni_mb.c b/drivers/crypto/ipsec_mb/pmd_aesni_mb.c index c96d1453b8c..adfc39b9569 100644 --- a/drivers/crypto/ipsec_mb/pmd_aesni_mb.c +++ b/drivers/crypto/ipsec_mb/pmd_aesni_mb.c @@ -332,6 +332,14 @@ aesni_mb_set_session_auth_parameters(IMB_MGR *mb_mgr, case RTE_CRYPTO_AUTH_SHA3_512_HMAC: sess->template_job.hash_alg = IMB_AUTH_HMAC_SHA3_512; break; + case RTE_CRYPTO_AUTH_SHAKE_128: + sess->template_job.hash_alg = IMB_AUTH_SHAKE128; + auth_precompute = 0; + break; + case RTE_CRYPTO_AUTH_SHAKE_256: + sess->template_job.hash_alg = IMB_AUTH_SHAKE256; + auth_precompute = 0; + break; #endif default: IPSEC_MB_LOG(ERR, diff --git a/drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h b/drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h index aad31b9f909..74accab99a1 100644 --- a/drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h +++ b/drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h @@ -937,6 +937,48 @@ static const struct rte_cryptodev_capabilities aesni_mb_capabilities[] = { }, } }, } }, + { /* SHAKE-128 */ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, + {.sym = { + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, + {.auth = { + .algo = RTE_CRYPTO_AUTH_SHAKE_128, + .block_size = 168, + .key_size = { + .min = 0, + .max = 0, + .increment = 0 + }, + .digest_size = { + .min = 1, + .max = 64, + .increment = 1 + }, + .iv_size = { 0 } + }, } + }, } + }, + { /* SHAKE-256 */ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, + {.sym = { + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, + {.auth = { + .algo = RTE_CRYPTO_AUTH_SHAKE_256, + .block_size = 136, + .key_size = { + .min = 0, + .max = 0, + .increment = 0 + }, + .digest_size = { + .min = 1, + .max = 64, + .increment = 1 + }, + .iv_size = { 0 } + }, } + }, } + }, #endif { /* SM4 CBC */ .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, @@ -1073,7 +1115,9 @@ static const unsigned int auth_blocksize[] = { [IMB_AUTH_HMAC_SHA3_224] = 144, [IMB_AUTH_HMAC_SHA3_256] = 136, [IMB_AUTH_HMAC_SHA3_384] = 104, - [IMB_AUTH_HMAC_SHA3_512] = 72 + [IMB_AUTH_HMAC_SHA3_512] = 72, + [IMB_AUTH_SHAKE128] = 168, + [IMB_AUTH_SHAKE256] = 136 #endif }; @@ -1117,7 +1161,9 @@ static const unsigned int auth_truncated_digest_byte_lengths[] = { [IMB_AUTH_HMAC_SHA3_224] = 28, [IMB_AUTH_HMAC_SHA3_256] = 32, [IMB_AUTH_HMAC_SHA3_384] = 48, - [IMB_AUTH_HMAC_SHA3_512] = 64 + [IMB_AUTH_HMAC_SHA3_512] = 64, + [IMB_AUTH_SHAKE128] = 64, + [IMB_AUTH_SHAKE256] = 64 #endif }; @@ -1166,7 +1212,9 @@ static const unsigned int auth_digest_byte_lengths[] = { [IMB_AUTH_HMAC_SHA3_224] = 28, [IMB_AUTH_HMAC_SHA3_256] = 32, [IMB_AUTH_HMAC_SHA3_384] = 48, - [IMB_AUTH_HMAC_SHA3_512] = 64 + [IMB_AUTH_HMAC_SHA3_512] = 64, + [IMB_AUTH_SHAKE128] = 64, + [IMB_AUTH_SHAKE256] = 64 #endif /**< Vector mode dependent pointer table of the multi-buffer APIs */ -- 2.43.0

