[PATCH v2 2/2] crypto/ipsec_mb: Add SHAKE support.

Emma Finn emma.finn at intel.com
Mon Oct 12 10:35:05 CEST 2026


Add SHAKE-128 and SHAKE-256 support to
ipsec_mb PMD.

Signed-off-by: Emma Finn <emma.finn at intel.com>
---
 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..8e3d7afed62 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 = 65535,
+					.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 = 65535,
+					.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



More information about the dev mailing list