<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div class="elementToProof" style="font-family: "IntelOne Text"; font-size: 10pt; color: rgb(0, 0, 0);">
Acked-by: Kai Ji <kai.ji@intel.com></div>
<div class="elementToProof" style="font-family: "IntelOne Text"; font-size: 10pt; color: rgb(0, 0, 0);">
<br>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Finn, Emma <emma.finn@intel.com><br>
<b>Sent:</b> 13 October 2026 10:33<br>
<b>To:</b> Ji, Kai <kai.ji@intel.com>; De Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com><br>
<b>Cc:</b> dev@dpdk.org <dev@dpdk.org>; Finn, Emma <emma.finn@intel.com><br>
<b>Subject:</b> [PATCH v3 2/2] crypto/ipsec_mb: Add SHAKE support.</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Add SHAKE-128 and SHAKE-256 support to<br>
ipsec_mb PMD.<br>
<br>
Signed-off-by: Emma Finn <emma.finn@intel.com><br>
---<br>
doc/guides/cryptodevs/aesni_mb.rst | 2 +<br>
doc/guides/cryptodevs/features/aesni_mb.ini | 2 +<br>
doc/guides/rel_notes/release_26_11.rst | 1 +<br>
drivers/crypto/ipsec_mb/pmd_aesni_mb.c | 8 +++<br>
drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h | 54 +++++++++++++++++++--<br>
5 files changed, 64 insertions(+), 3 deletions(-)<br>
<br>
diff --git a/doc/guides/cryptodevs/aesni_mb.rst b/doc/guides/cryptodevs/aesni_mb.rst<br>
index 663b9f19d4b..da37d54471e 100644<br>
--- a/doc/guides/cryptodevs/aesni_mb.rst<br>
+++ b/doc/guides/cryptodevs/aesni_mb.rst<br>
@@ -69,6 +69,8 @@ Hash algorithms:<br>
* RTE_CRYPTO_AUTH_SHA3_384 HMAC<br>
* RTE_CRYPTO_AUTH_SHA3_512<br>
* RTE_CRYPTO_AUTH_SHA3_512 HMAC<br>
+* RTE_CRYPTO_AUTH_SHAKE_128<br>
+* RTE_CRYPTO_AUTH_SHAKE_256<br>
<br>
AEAD algorithms:<br>
<br>
diff --git a/doc/guides/cryptodevs/features/aesni_mb.ini b/doc/guides/cryptodevs/features/aesni_mb.ini<br>
index 73bb9f42633..18109ffe05d 100644<br>
--- a/doc/guides/cryptodevs/features/aesni_mb.ini<br>
+++ b/doc/guides/cryptodevs/features/aesni_mb.ini<br>
@@ -77,6 +77,8 @@ SHA3_384 = Y<br>
SHA3_384 HMAC = Y<br>
SHA3_512 = Y<br>
SHA3_512 HMAC = Y<br>
+SHAKE_128 = Y<br>
+SHAKE_256 = Y<br>
<br>
;<br>
; Supported AEAD algorithms of the 'aesni_mb' crypto driver.<br>
diff --git a/doc/guides/rel_notes/release_26_11.rst b/doc/guides/rel_notes/release_26_11.rst<br>
index 826a0cf05cf..c116f3373da 100644<br>
--- a/doc/guides/rel_notes/release_26_11.rst<br>
+++ b/doc/guides/rel_notes/release_26_11.rst<br>
@@ -28,6 +28,7 @@ New Features<br>
<br>
* Added support for SHA3-224, SHA3-256, SHA3-384, and SHA3-512 hash<br>
algorithms and their HMAC variants.<br>
+ * Added support for SHAKE-128 and SHAKE-256 hash algorithms.<br>
<br>
.. This section should contain new features added in this release.<br>
Sample format:<br>
diff --git a/drivers/crypto/ipsec_mb/pmd_aesni_mb.c b/drivers/crypto/ipsec_mb/pmd_aesni_mb.c<br>
index c96d1453b8c..adfc39b9569 100644<br>
--- a/drivers/crypto/ipsec_mb/pmd_aesni_mb.c<br>
+++ b/drivers/crypto/ipsec_mb/pmd_aesni_mb.c<br>
@@ -332,6 +332,14 @@ aesni_mb_set_session_auth_parameters(IMB_MGR *mb_mgr,<br>
case RTE_CRYPTO_AUTH_SHA3_512_HMAC:<br>
sess->template_job.hash_alg = IMB_AUTH_HMAC_SHA3_512;<br>
break;<br>
+ case RTE_CRYPTO_AUTH_SHAKE_128:<br>
+ sess->template_job.hash_alg = IMB_AUTH_SHAKE128;<br>
+ auth_precompute = 0;<br>
+ break;<br>
+ case RTE_CRYPTO_AUTH_SHAKE_256:<br>
+ sess->template_job.hash_alg = IMB_AUTH_SHAKE256;<br>
+ auth_precompute = 0;<br>
+ break;<br>
#endif<br>
default:<br>
IPSEC_MB_LOG(ERR,<br>
diff --git a/drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h b/drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h<br>
index aad31b9f909..74accab99a1 100644<br>
--- a/drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h<br>
+++ b/drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h<br>
@@ -937,6 +937,48 @@ static const struct rte_cryptodev_capabilities aesni_mb_capabilities[] = {<br>
}, }<br>
}, }<br>
},<br>
+ { /* SHAKE-128 */<br>
+ .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,<br>
+ {.sym = {<br>
+ .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,<br>
+ {.auth = {<br>
+ .algo = RTE_CRYPTO_AUTH_SHAKE_128,<br>
+ .block_size = 168,<br>
+ .key_size = {<br>
+ .min = 0,<br>
+ .max = 0,<br>
+ .increment = 0<br>
+ },<br>
+ .digest_size = {<br>
+ .min = 1,<br>
+ .max = 64,<br>
+ .increment = 1<br>
+ },<br>
+ .iv_size = { 0 }<br>
+ }, }<br>
+ }, }<br>
+ },<br>
+ { /* SHAKE-256 */<br>
+ .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,<br>
+ {.sym = {<br>
+ .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,<br>
+ {.auth = {<br>
+ .algo = RTE_CRYPTO_AUTH_SHAKE_256,<br>
+ .block_size = 136,<br>
+ .key_size = {<br>
+ .min = 0,<br>
+ .max = 0,<br>
+ .increment = 0<br>
+ },<br>
+ .digest_size = {<br>
+ .min = 1,<br>
+ .max = 64,<br>
+ .increment = 1<br>
+ },<br>
+ .iv_size = { 0 }<br>
+ }, }<br>
+ }, }<br>
+ },<br>
#endif<br>
{ /* SM4 CBC */<br>
.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,<br>
@@ -1073,7 +1115,9 @@ static const unsigned int auth_blocksize[] = {<br>
[IMB_AUTH_HMAC_SHA3_224] = 144,<br>
[IMB_AUTH_HMAC_SHA3_256] = 136,<br>
[IMB_AUTH_HMAC_SHA3_384] = 104,<br>
- [IMB_AUTH_HMAC_SHA3_512] = 72<br>
+ [IMB_AUTH_HMAC_SHA3_512] = 72,<br>
+ [IMB_AUTH_SHAKE128] = 168,<br>
+ [IMB_AUTH_SHAKE256] = 136<br>
#endif<br>
};<br>
<br>
@@ -1117,7 +1161,9 @@ static const unsigned int auth_truncated_digest_byte_lengths[] = {<br>
[IMB_AUTH_HMAC_SHA3_224] = 28,<br>
[IMB_AUTH_HMAC_SHA3_256] = 32,<br>
[IMB_AUTH_HMAC_SHA3_384] = 48,<br>
- [IMB_AUTH_HMAC_SHA3_512] = 64<br>
+ [IMB_AUTH_HMAC_SHA3_512] = 64,<br>
+ [IMB_AUTH_SHAKE128] = 64,<br>
+ [IMB_AUTH_SHAKE256] = 64<br>
#endif<br>
};<br>
<br>
@@ -1166,7 +1212,9 @@ static const unsigned int auth_digest_byte_lengths[] = {<br>
[IMB_AUTH_HMAC_SHA3_224] = 28,<br>
[IMB_AUTH_HMAC_SHA3_256] = 32,<br>
[IMB_AUTH_HMAC_SHA3_384] = 48,<br>
- [IMB_AUTH_HMAC_SHA3_512] = 64<br>
+ [IMB_AUTH_HMAC_SHA3_512] = 64,<br>
+ [IMB_AUTH_SHAKE128] = 64,<br>
+ [IMB_AUTH_SHAKE256] = 64<br>
#endif<br>
/**< Vector mode dependent pointer table of the multi-buffer APIs */<br>
<br>
-- <br>
2.43.0<br>
<br>
</div>
</span></font></div>
</body>
</html>