aboutsummaryrefslogtreecommitdiffstats
path: root/common/dpdk/recipes-extended/dpdk/dpdk/dpdk-dev-v4-16-20-crypto-ccp-support-sha3-family-authentication-algo.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/dpdk/recipes-extended/dpdk/dpdk/dpdk-dev-v4-16-20-crypto-ccp-support-sha3-family-authentication-algo.patch')
-rw-r--r--common/dpdk/recipes-extended/dpdk/dpdk/dpdk-dev-v4-16-20-crypto-ccp-support-sha3-family-authentication-algo.patch1067
1 files changed, 0 insertions, 1067 deletions
diff --git a/common/dpdk/recipes-extended/dpdk/dpdk/dpdk-dev-v4-16-20-crypto-ccp-support-sha3-family-authentication-algo.patch b/common/dpdk/recipes-extended/dpdk/dpdk/dpdk-dev-v4-16-20-crypto-ccp-support-sha3-family-authentication-algo.patch
deleted file mode 100644
index 055f511f..00000000
--- a/common/dpdk/recipes-extended/dpdk/dpdk/dpdk-dev-v4-16-20-crypto-ccp-support-sha3-family-authentication-algo.patch
+++ /dev/null
@@ -1,1067 +0,0 @@
-From patchwork Fri Mar 9 08:35:16 2018
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [dpdk-dev, v4,
- 16/20] crypto/ccp: support sha3 family authentication algo
-From: Ravi Kumar <ravi1.kumar@amd.com>
-X-Patchwork-Id: 35815
-X-Patchwork-Delegate: pablo.de.lara.guarch@intel.com
-Message-Id: <1520584520-130522-16-git-send-email-Ravi1.kumar@amd.com>
-List-Id: dev.dpdk.org
-To: dev@dpdk.org
-Cc: pablo.de.lara.guarch@intel.com
-Date: Fri, 9 Mar 2018 03:35:16 -0500
-
-Signed-off-by: Ravi Kumar <Ravi1.kumar@amd.com>
----
- drivers/crypto/ccp/ccp_crypto.c | 667 +++++++++++++++++++++++++++++++++-
- drivers/crypto/ccp/ccp_crypto.h | 22 ++
- drivers/crypto/ccp/ccp_pmd_ops.c | 168 +++++++++
- lib/librte_cryptodev/rte_crypto_sym.h | 17 +
- 4 files changed, 873 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/crypto/ccp/ccp_crypto.c b/drivers/crypto/ccp/ccp_crypto.c
-index 410e8bf..cb63bc6 100644
---- a/drivers/crypto/ccp/ccp_crypto.c
-+++ b/drivers/crypto/ccp/ccp_crypto.c
-@@ -89,6 +89,74 @@ uint64_t ccp_sha512_init[SHA512_DIGEST_SIZE / sizeof(uint64_t)] = {
- SHA512_H1, SHA512_H0,
- };
-
-+#if defined(_MSC_VER)
-+#define SHA3_CONST(x) x
-+#else
-+#define SHA3_CONST(x) x##L
-+#endif
-+
-+/** 'Words' here refers to uint64_t */
-+#define SHA3_KECCAK_SPONGE_WORDS \
-+ (((1600) / 8) / sizeof(uint64_t))
-+typedef struct sha3_context_ {
-+ uint64_t saved;
-+ /**
-+ * The portion of the input message that we
-+ * didn't consume yet
-+ */
-+ union {
-+ uint64_t s[SHA3_KECCAK_SPONGE_WORDS];
-+ /* Keccak's state */
-+ uint8_t sb[SHA3_KECCAK_SPONGE_WORDS * 8];
-+ /**total 200 ctx size**/
-+ };
-+ unsigned int byteIndex;
-+ /**
-+ * 0..7--the next byte after the set one
-+ * (starts from 0; 0--none are buffered)
-+ */
-+ unsigned int wordIndex;
-+ /**
-+ * 0..24--the next word to integrate input
-+ * (starts from 0)
-+ */
-+ unsigned int capacityWords;
-+ /**
-+ * the double size of the hash output in
-+ * words (e.g. 16 for Keccak 512)
-+ */
-+} sha3_context;
-+
-+#ifndef SHA3_ROTL64
-+#define SHA3_ROTL64(x, y) \
-+ (((x) << (y)) | ((x) >> ((sizeof(uint64_t)*8) - (y))))
-+#endif
-+
-+static const uint64_t keccakf_rndc[24] = {
-+ SHA3_CONST(0x0000000000000001UL), SHA3_CONST(0x0000000000008082UL),
-+ SHA3_CONST(0x800000000000808aUL), SHA3_CONST(0x8000000080008000UL),
-+ SHA3_CONST(0x000000000000808bUL), SHA3_CONST(0x0000000080000001UL),
-+ SHA3_CONST(0x8000000080008081UL), SHA3_CONST(0x8000000000008009UL),
-+ SHA3_CONST(0x000000000000008aUL), SHA3_CONST(0x0000000000000088UL),
-+ SHA3_CONST(0x0000000080008009UL), SHA3_CONST(0x000000008000000aUL),
-+ SHA3_CONST(0x000000008000808bUL), SHA3_CONST(0x800000000000008bUL),
-+ SHA3_CONST(0x8000000000008089UL), SHA3_CONST(0x8000000000008003UL),
-+ SHA3_CONST(0x8000000000008002UL), SHA3_CONST(0x8000000000000080UL),
-+ SHA3_CONST(0x000000000000800aUL), SHA3_CONST(0x800000008000000aUL),
-+ SHA3_CONST(0x8000000080008081UL), SHA3_CONST(0x8000000000008080UL),
-+ SHA3_CONST(0x0000000080000001UL), SHA3_CONST(0x8000000080008008UL)
-+};
-+
-+static const unsigned int keccakf_rotc[24] = {
-+ 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 2, 14, 27, 41, 56, 8, 25, 43, 62,
-+ 18, 39, 61, 20, 44
-+};
-+
-+static const unsigned int keccakf_piln[24] = {
-+ 10, 7, 11, 17, 18, 3, 5, 16, 8, 21, 24, 4, 15, 23, 19, 13, 12, 2, 20,
-+ 14, 22, 9, 6, 1
-+};
-+
- static enum ccp_cmd_order
- ccp_get_cmd_id(const struct rte_crypto_sym_xform *xform)
- {
-@@ -173,6 +241,223 @@ static int partial_hash_sha512(uint8_t *data_in, uint8_t *data_out)
- return 0;
- }
-
-+static void
-+keccakf(uint64_t s[25])
-+{
-+ int i, j, round;
-+ uint64_t t, bc[5];
-+#define KECCAK_ROUNDS 24
-+
-+ for (round = 0; round < KECCAK_ROUNDS; round++) {
-+
-+ /* Theta */
-+ for (i = 0; i < 5; i++)
-+ bc[i] = s[i] ^ s[i + 5] ^ s[i + 10] ^ s[i + 15] ^
-+ s[i + 20];
-+
-+ for (i = 0; i < 5; i++) {
-+ t = bc[(i + 4) % 5] ^ SHA3_ROTL64(bc[(i + 1) % 5], 1);
-+ for (j = 0; j < 25; j += 5)
-+ s[j + i] ^= t;
-+ }
-+
-+ /* Rho Pi */
-+ t = s[1];
-+ for (i = 0; i < 24; i++) {
-+ j = keccakf_piln[i];
-+ bc[0] = s[j];
-+ s[j] = SHA3_ROTL64(t, keccakf_rotc[i]);
-+ t = bc[0];
-+ }
-+
-+ /* Chi */
-+ for (j = 0; j < 25; j += 5) {
-+ for (i = 0; i < 5; i++)
-+ bc[i] = s[j + i];
-+ for (i = 0; i < 5; i++)
-+ s[j + i] ^= (~bc[(i + 1) % 5]) &
-+ bc[(i + 2) % 5];
-+ }
-+
-+ /* Iota */
-+ s[0] ^= keccakf_rndc[round];
-+ }
-+}
-+
-+static void
-+sha3_Init224(void *priv)
-+{
-+ sha3_context *ctx = (sha3_context *) priv;
-+
-+ memset(ctx, 0, sizeof(*ctx));
-+ ctx->capacityWords = 2 * 224 / (8 * sizeof(uint64_t));
-+}
-+
-+static void
-+sha3_Init256(void *priv)
-+{
-+ sha3_context *ctx = (sha3_context *) priv;
-+
-+ memset(ctx, 0, sizeof(*ctx));
-+ ctx->capacityWords = 2 * 256 / (8 * sizeof(uint64_t));
-+}
-+
-+static void
-+sha3_Init384(void *priv)
-+{
-+ sha3_context *ctx = (sha3_context *) priv;
-+
-+ memset(ctx, 0, sizeof(*ctx));
-+ ctx->capacityWords = 2 * 384 / (8 * sizeof(uint64_t));
-+}
-+
-+static void
-+sha3_Init512(void *priv)
-+{
-+ sha3_context *ctx = (sha3_context *) priv;
-+
-+ memset(ctx, 0, sizeof(*ctx));
-+ ctx->capacityWords = 2 * 512 / (8 * sizeof(uint64_t));
-+}
-+
-+
-+/* This is simply the 'update' with the padding block.
-+ * The padding block is 0x01 || 0x00* || 0x80. First 0x01 and last 0x80
-+ * bytes are always present, but they can be the same byte.
-+ */
-+static void
-+sha3_Update(void *priv, void const *bufIn, size_t len)
-+{
-+ sha3_context *ctx = (sha3_context *) priv;
-+ unsigned int old_tail = (8 - ctx->byteIndex) & 7;
-+ size_t words;
-+ unsigned int tail;
-+ size_t i;
-+ const uint8_t *buf = bufIn;
-+
-+ if (len < old_tail) {
-+ while (len--)
-+ ctx->saved |= (uint64_t) (*(buf++)) <<
-+ ((ctx->byteIndex++) * 8);
-+ return;
-+ }
-+
-+ if (old_tail) {
-+ len -= old_tail;
-+ while (old_tail--)
-+ ctx->saved |= (uint64_t) (*(buf++)) <<
-+ ((ctx->byteIndex++) * 8);
-+
-+ ctx->s[ctx->wordIndex] ^= ctx->saved;
-+ ctx->byteIndex = 0;
-+ ctx->saved = 0;
-+ if (++ctx->wordIndex ==
-+ (SHA3_KECCAK_SPONGE_WORDS - ctx->capacityWords)) {
-+ keccakf(ctx->s);
-+ ctx->wordIndex = 0;
-+ }
-+ }
-+
-+ words = len / sizeof(uint64_t);
-+ tail = len - words * sizeof(uint64_t);
-+
-+ for (i = 0; i < words; i++, buf += sizeof(uint64_t)) {
-+ const uint64_t t = (uint64_t) (buf[0]) |
-+ ((uint64_t) (buf[1]) << 8 * 1) |
-+ ((uint64_t) (buf[2]) << 8 * 2) |
-+ ((uint64_t) (buf[3]) << 8 * 3) |
-+ ((uint64_t) (buf[4]) << 8 * 4) |
-+ ((uint64_t) (buf[5]) << 8 * 5) |
-+ ((uint64_t) (buf[6]) << 8 * 6) |
-+ ((uint64_t) (buf[7]) << 8 * 7);
-+ ctx->s[ctx->wordIndex] ^= t;
-+ if (++ctx->wordIndex ==
-+ (SHA3_KECCAK_SPONGE_WORDS - ctx->capacityWords)) {
-+ keccakf(ctx->s);
-+ ctx->wordIndex = 0;
-+ }
-+ }
-+
-+ while (tail--)
-+ ctx->saved |= (uint64_t) (*(buf++)) << ((ctx->byteIndex++) * 8);
-+}
-+
-+int partial_hash_sha3_224(uint8_t *data_in, uint8_t *data_out)
-+{
-+ sha3_context *ctx;
-+ int i;
-+
-+ ctx = rte_zmalloc("sha3-ctx", sizeof(sha3_context), 0);
-+ if (!ctx) {
-+ CCP_LOG_ERR("sha3-ctx creation failed");
-+ return -ENOMEM;
-+ }
-+ sha3_Init224(ctx);
-+ sha3_Update(ctx, data_in, SHA3_224_BLOCK_SIZE);
-+ for (i = 0; i < CCP_SHA3_CTX_SIZE; i++, data_out++)
-+ *data_out = ctx->sb[CCP_SHA3_CTX_SIZE - i - 1];
-+ rte_free(ctx);
-+
-+ return 0;
-+}
-+
-+int partial_hash_sha3_256(uint8_t *data_in, uint8_t *data_out)
-+{
-+ sha3_context *ctx;
-+ int i;
-+
-+ ctx = rte_zmalloc("sha3-ctx", sizeof(sha3_context), 0);
-+ if (!ctx) {
-+ CCP_LOG_ERR("sha3-ctx creation failed");
-+ return -ENOMEM;
-+ }
-+ sha3_Init256(ctx);
-+ sha3_Update(ctx, data_in, SHA3_256_BLOCK_SIZE);
-+ for (i = 0; i < CCP_SHA3_CTX_SIZE; i++, data_out++)
-+ *data_out = ctx->sb[CCP_SHA3_CTX_SIZE - i - 1];
-+ rte_free(ctx);
-+
-+ return 0;
-+}
-+
-+int partial_hash_sha3_384(uint8_t *data_in, uint8_t *data_out)
-+{
-+ sha3_context *ctx;
-+ int i;
-+
-+ ctx = rte_zmalloc("sha3-ctx", sizeof(sha3_context), 0);
-+ if (!ctx) {
-+ CCP_LOG_ERR("sha3-ctx creation failed");
-+ return -ENOMEM;
-+ }
-+ sha3_Init384(ctx);
-+ sha3_Update(ctx, data_in, SHA3_384_BLOCK_SIZE);
-+ for (i = 0; i < CCP_SHA3_CTX_SIZE; i++, data_out++)
-+ *data_out = ctx->sb[CCP_SHA3_CTX_SIZE - i - 1];
-+ rte_free(ctx);
-+
-+ return 0;
-+}
-+
-+int partial_hash_sha3_512(uint8_t *data_in, uint8_t *data_out)
-+{
-+ sha3_context *ctx;
-+ int i;
-+
-+ ctx = rte_zmalloc("sha3-ctx", sizeof(sha3_context), 0);
-+ if (!ctx) {
-+ CCP_LOG_ERR("sha3-ctx creation failed");
-+ return -ENOMEM;
-+ }
-+ sha3_Init512(ctx);
-+ sha3_Update(ctx, data_in, SHA3_512_BLOCK_SIZE);
-+ for (i = 0; i < CCP_SHA3_CTX_SIZE; i++, data_out++)
-+ *data_out = ctx->sb[CCP_SHA3_CTX_SIZE - i - 1];
-+ rte_free(ctx);
-+
-+ return 0;
-+}
-+
- static int generate_partial_hash(struct ccp_session *sess)
- {
-
-@@ -182,6 +467,7 @@ static int generate_partial_hash(struct ccp_session *sess)
- uint32_t *hash_value_be32, hash_temp32[8];
- uint64_t *hash_value_be64, hash_temp64[8];
- int i, count;
-+ uint8_t *hash_value_sha3;
-
- opad_t = ipad_t = (uint8_t *)sess->auth.key;
-
-@@ -225,6 +511,16 @@ static int generate_partial_hash(struct ccp_session *sess)
- for (i = 0; i < count; i++, hash_value_be32++)
- *hash_value_be32 = hash_temp32[count - 1 - i];
- return 0;
-+ case CCP_AUTH_ALGO_SHA3_224_HMAC:
-+ hash_value_sha3 = sess->auth.pre_compute;
-+ if (partial_hash_sha3_224(ipad, hash_value_sha3))
-+ return -1;
-+
-+ hash_value_sha3 = (uint8_t *)(sess->auth.pre_compute
-+ + sess->auth.ctx_len);
-+ if (partial_hash_sha3_224(opad, hash_value_sha3))
-+ return -1;
-+ return 0;
- case CCP_AUTH_ALGO_SHA256_HMAC:
- count = SHA256_DIGEST_SIZE >> 2;
-
-@@ -240,6 +536,16 @@ static int generate_partial_hash(struct ccp_session *sess)
- for (i = 0; i < count; i++, hash_value_be32++)
- *hash_value_be32 = hash_temp32[count - 1 - i];
- return 0;
-+ case CCP_AUTH_ALGO_SHA3_256_HMAC:
-+ hash_value_sha3 = sess->auth.pre_compute;
-+ if (partial_hash_sha3_256(ipad, hash_value_sha3))
-+ return -1;
-+
-+ hash_value_sha3 = (uint8_t *)(sess->auth.pre_compute
-+ + sess->auth.ctx_len);
-+ if (partial_hash_sha3_256(opad, hash_value_sha3))
-+ return -1;
-+ return 0;
- case CCP_AUTH_ALGO_SHA384_HMAC:
- count = SHA512_DIGEST_SIZE >> 3;
-
-@@ -255,6 +561,16 @@ static int generate_partial_hash(struct ccp_session *sess)
- for (i = 0; i < count; i++, hash_value_be64++)
- *hash_value_be64 = hash_temp64[count - 1 - i];
- return 0;
-+ case CCP_AUTH_ALGO_SHA3_384_HMAC:
-+ hash_value_sha3 = sess->auth.pre_compute;
-+ if (partial_hash_sha3_384(ipad, hash_value_sha3))
-+ return -1;
-+
-+ hash_value_sha3 = (uint8_t *)(sess->auth.pre_compute
-+ + sess->auth.ctx_len);
-+ if (partial_hash_sha3_384(opad, hash_value_sha3))
-+ return -1;
-+ return 0;
- case CCP_AUTH_ALGO_SHA512_HMAC:
- count = SHA512_DIGEST_SIZE >> 3;
-
-@@ -270,6 +586,16 @@ static int generate_partial_hash(struct ccp_session *sess)
- for (i = 0; i < count; i++, hash_value_be64++)
- *hash_value_be64 = hash_temp64[count - 1 - i];
- return 0;
-+ case CCP_AUTH_ALGO_SHA3_512_HMAC:
-+ hash_value_sha3 = sess->auth.pre_compute;
-+ if (partial_hash_sha3_512(ipad, hash_value_sha3))
-+ return -1;
-+
-+ hash_value_sha3 = (uint8_t *)(sess->auth.pre_compute
-+ + sess->auth.ctx_len);
-+ if (partial_hash_sha3_512(opad, hash_value_sha3))
-+ return -1;
-+ return 0;
- default:
- CCP_LOG_ERR("Invalid auth algo");
- return -1;
-@@ -510,6 +836,30 @@ ccp_configure_session_auth(struct ccp_session *sess,
- if (generate_partial_hash(sess))
- return -1;
- break;
-+ case RTE_CRYPTO_AUTH_SHA3_224:
-+ sess->auth.algo = CCP_AUTH_ALGO_SHA3_224;
-+ sess->auth.engine = CCP_ENGINE_SHA;
-+ sess->auth.ut.sha_type = CCP_SHA3_TYPE_224;
-+ sess->auth.ctx_len = CCP_SHA3_CTX_SIZE;
-+ sess->auth.offset = CCP_SHA3_CTX_SIZE - SHA224_DIGEST_SIZE;
-+ break;
-+ case RTE_CRYPTO_AUTH_SHA3_224_HMAC:
-+ if (auth_xform->key.length > SHA3_224_BLOCK_SIZE)
-+ return -1;
-+ sess->auth.algo = CCP_AUTH_ALGO_SHA3_224_HMAC;
-+ sess->auth.engine = CCP_ENGINE_SHA;
-+ sess->auth.ut.sha_type = CCP_SHA3_TYPE_224;
-+ sess->auth.ctx_len = CCP_SHA3_CTX_SIZE;
-+ sess->auth.offset = CCP_SHA3_CTX_SIZE - SHA224_DIGEST_SIZE;
-+ sess->auth.block_size = SHA3_224_BLOCK_SIZE;
-+ sess->auth.key_length = auth_xform->key.length;
-+ memset(sess->auth.key, 0, sess->auth.block_size);
-+ memset(sess->auth.pre_compute, 0, 2 * sess->auth.ctx_len);
-+ rte_memcpy(sess->auth.key, auth_xform->key.data,
-+ auth_xform->key.length);
-+ if (generate_partial_hash(sess))
-+ return -1;
-+ break;
- case RTE_CRYPTO_AUTH_SHA256:
- sess->auth.algo = CCP_AUTH_ALGO_SHA256;
- sess->auth.engine = CCP_ENGINE_SHA;
-@@ -535,6 +885,30 @@ ccp_configure_session_auth(struct ccp_session *sess,
- if (generate_partial_hash(sess))
- return -1;
- break;
-+ case RTE_CRYPTO_AUTH_SHA3_256:
-+ sess->auth.algo = CCP_AUTH_ALGO_SHA3_256;
-+ sess->auth.engine = CCP_ENGINE_SHA;
-+ sess->auth.ut.sha_type = CCP_SHA3_TYPE_256;
-+ sess->auth.ctx_len = CCP_SHA3_CTX_SIZE;
-+ sess->auth.offset = CCP_SHA3_CTX_SIZE - SHA256_DIGEST_SIZE;
-+ break;
-+ case RTE_CRYPTO_AUTH_SHA3_256_HMAC:
-+ if (auth_xform->key.length > SHA3_256_BLOCK_SIZE)
-+ return -1;
-+ sess->auth.algo = CCP_AUTH_ALGO_SHA3_256_HMAC;
-+ sess->auth.engine = CCP_ENGINE_SHA;
-+ sess->auth.ut.sha_type = CCP_SHA3_TYPE_256;
-+ sess->auth.ctx_len = CCP_SHA3_CTX_SIZE;
-+ sess->auth.offset = CCP_SHA3_CTX_SIZE - SHA256_DIGEST_SIZE;
-+ sess->auth.block_size = SHA3_256_BLOCK_SIZE;
-+ sess->auth.key_length = auth_xform->key.length;
-+ memset(sess->auth.key, 0, sess->auth.block_size);
-+ memset(sess->auth.pre_compute, 0, 2 * sess->auth.ctx_len);
-+ rte_memcpy(sess->auth.key, auth_xform->key.data,
-+ auth_xform->key.length);
-+ if (generate_partial_hash(sess))
-+ return -1;
-+ break;
- case RTE_CRYPTO_AUTH_SHA384:
- sess->auth.algo = CCP_AUTH_ALGO_SHA384;
- sess->auth.engine = CCP_ENGINE_SHA;
-@@ -560,6 +934,30 @@ ccp_configure_session_auth(struct ccp_session *sess,
- if (generate_partial_hash(sess))
- return -1;
- break;
-+ case RTE_CRYPTO_AUTH_SHA3_384:
-+ sess->auth.algo = CCP_AUTH_ALGO_SHA3_384;
-+ sess->auth.engine = CCP_ENGINE_SHA;
-+ sess->auth.ut.sha_type = CCP_SHA3_TYPE_384;
-+ sess->auth.ctx_len = CCP_SHA3_CTX_SIZE;
-+ sess->auth.offset = CCP_SHA3_CTX_SIZE - SHA384_DIGEST_SIZE;
-+ break;
-+ case RTE_CRYPTO_AUTH_SHA3_384_HMAC:
-+ if (auth_xform->key.length > SHA3_384_BLOCK_SIZE)
-+ return -1;
-+ sess->auth.algo = CCP_AUTH_ALGO_SHA3_384_HMAC;
-+ sess->auth.engine = CCP_ENGINE_SHA;
-+ sess->auth.ut.sha_type = CCP_SHA3_TYPE_384;
-+ sess->auth.ctx_len = CCP_SHA3_CTX_SIZE;
-+ sess->auth.offset = CCP_SHA3_CTX_SIZE - SHA384_DIGEST_SIZE;
-+ sess->auth.block_size = SHA3_384_BLOCK_SIZE;
-+ sess->auth.key_length = auth_xform->key.length;
-+ memset(sess->auth.key, 0, sess->auth.block_size);
-+ memset(sess->auth.pre_compute, 0, 2 * sess->auth.ctx_len);
-+ rte_memcpy(sess->auth.key, auth_xform->key.data,
-+ auth_xform->key.length);
-+ if (generate_partial_hash(sess))
-+ return -1;
-+ break;
- case RTE_CRYPTO_AUTH_SHA512:
- sess->auth.algo = CCP_AUTH_ALGO_SHA512;
- sess->auth.engine = CCP_ENGINE_SHA;
-@@ -585,7 +983,30 @@ ccp_configure_session_auth(struct ccp_session *sess,
- if (generate_partial_hash(sess))
- return -1;
- break;
--
-+ case RTE_CRYPTO_AUTH_SHA3_512:
-+ sess->auth.algo = CCP_AUTH_ALGO_SHA3_512;
-+ sess->auth.engine = CCP_ENGINE_SHA;
-+ sess->auth.ut.sha_type = CCP_SHA3_TYPE_512;
-+ sess->auth.ctx_len = CCP_SHA3_CTX_SIZE;
-+ sess->auth.offset = CCP_SHA3_CTX_SIZE - SHA512_DIGEST_SIZE;
-+ break;
-+ case RTE_CRYPTO_AUTH_SHA3_512_HMAC:
-+ if (auth_xform->key.length > SHA3_512_BLOCK_SIZE)
-+ return -1;
-+ sess->auth.algo = CCP_AUTH_ALGO_SHA3_512_HMAC;
-+ sess->auth.engine = CCP_ENGINE_SHA;
-+ sess->auth.ut.sha_type = CCP_SHA3_TYPE_512;
-+ sess->auth.ctx_len = CCP_SHA3_CTX_SIZE;
-+ sess->auth.offset = CCP_SHA3_CTX_SIZE - SHA512_DIGEST_SIZE;
-+ sess->auth.block_size = SHA3_512_BLOCK_SIZE;
-+ sess->auth.key_length = auth_xform->key.length;
-+ memset(sess->auth.key, 0, sess->auth.block_size);
-+ memset(sess->auth.pre_compute, 0, 2 * sess->auth.ctx_len);
-+ rte_memcpy(sess->auth.key, auth_xform->key.data,
-+ auth_xform->key.length);
-+ if (generate_partial_hash(sess))
-+ return -1;
-+ break;
- case RTE_CRYPTO_AUTH_AES_CMAC:
- sess->auth.algo = CCP_AUTH_ALGO_AES_CMAC;
- sess->auth.engine = CCP_ENGINE_AES;
-@@ -806,6 +1227,26 @@ ccp_auth_slot(struct ccp_session *session)
- * 6. Retrieve HMAC output from LSB to host memory
- */
- break;
-+ case CCP_AUTH_ALGO_SHA3_224:
-+ case CCP_AUTH_ALGO_SHA3_256:
-+ case CCP_AUTH_ALGO_SHA3_384:
-+ case CCP_AUTH_ALGO_SHA3_512:
-+ count = 1;
-+ /**< only op ctx and dst in host memory*/
-+ break;
-+ case CCP_AUTH_ALGO_SHA3_224_HMAC:
-+ case CCP_AUTH_ALGO_SHA3_256_HMAC:
-+ count = 3;
-+ break;
-+ case CCP_AUTH_ALGO_SHA3_384_HMAC:
-+ case CCP_AUTH_ALGO_SHA3_512_HMAC:
-+ count = 4;
-+ /**
-+ * 1. Op to Perform Ihash
-+ * 2. Retrieve result from LSB to host memory
-+ * 3. Perform final hash
-+ */
-+ break;
- case CCP_AUTH_ALGO_AES_CMAC:
- count = 4;
- /**
-@@ -1196,6 +1637,213 @@ ccp_perform_sha(struct rte_crypto_op *op,
- }
-
- static int
-+ccp_perform_sha3_hmac(struct rte_crypto_op *op,
-+ struct ccp_queue *cmd_q)
-+{
-+ struct ccp_session *session;
-+ struct ccp_passthru pst;
-+ union ccp_function function;
-+ struct ccp_desc *desc;
-+ uint8_t *append_ptr;
-+ uint32_t tail;
-+ phys_addr_t src_addr, dest_addr, ctx_paddr, dest_addr_t;
-+
-+ session = (struct ccp_session *)get_session_private_data(
-+ op->sym->session,
-+ ccp_cryptodev_driver_id);
-+
-+ src_addr = rte_pktmbuf_mtophys_offset(op->sym->m_src,
-+ op->sym->auth.data.offset);
-+ append_ptr = (uint8_t *)rte_pktmbuf_append(op->sym->m_src,
-+ session->auth.ctx_len);
-+ if (!append_ptr) {
-+ CCP_LOG_ERR("CCP MBUF append failed\n");
-+ return -1;
-+ }
-+ dest_addr = (phys_addr_t)rte_mem_virt2phy((void *)append_ptr);
-+ dest_addr_t = dest_addr + (session->auth.ctx_len / 2);
-+ ctx_paddr = (phys_addr_t)rte_mem_virt2phy((void
-+ *)session->auth.pre_compute);
-+ desc = &cmd_q->qbase_desc[cmd_q->qidx];
-+ memset(desc, 0, Q_DESC_SIZE);
-+
-+ /*desc1 for SHA3-Ihash operation */
-+ CCP_CMD_ENGINE(desc) = CCP_ENGINE_SHA;
-+ CCP_CMD_INIT(desc) = 1;
-+ CCP_CMD_EOM(desc) = 1;
-+
-+ function.raw = 0;
-+ CCP_SHA_TYPE(&function) = session->auth.ut.sha_type;
-+ CCP_CMD_FUNCTION(desc) = function.raw;
-+ CCP_CMD_LEN(desc) = op->sym->auth.data.length;
-+
-+ CCP_CMD_SRC_LO(desc) = ((uint32_t)src_addr);
-+ CCP_CMD_SRC_HI(desc) = high32_value(src_addr);
-+ CCP_CMD_SRC_MEM(desc) = CCP_MEMTYPE_SYSTEM;
-+
-+ CCP_CMD_DST_LO(desc) = (cmd_q->sb_sha * CCP_SB_BYTES);
-+ CCP_CMD_DST_HI(desc) = 0;
-+ CCP_CMD_DST_MEM(desc) = CCP_MEMTYPE_SB;
-+
-+ CCP_CMD_KEY_LO(desc) = ((uint32_t)ctx_paddr);
-+ CCP_CMD_KEY_HI(desc) = high32_value(ctx_paddr);
-+ CCP_CMD_KEY_MEM(desc) = CCP_MEMTYPE_SYSTEM;
-+
-+ cmd_q->qidx = (cmd_q->qidx + 1) % COMMANDS_PER_QUEUE;
-+
-+ rte_wmb();
-+ tail = (uint32_t)(cmd_q->qbase_phys_addr + cmd_q->qidx * Q_DESC_SIZE);
-+ CCP_WRITE_REG(cmd_q->reg_base, CMD_Q_TAIL_LO_BASE, tail);
-+ CCP_WRITE_REG(cmd_q->reg_base, CMD_Q_CONTROL_BASE,
-+ cmd_q->qcontrol | CMD_Q_RUN);
-+
-+ /* Intermediate Hash value retrieve */
-+ if ((session->auth.ut.sha_type == CCP_SHA3_TYPE_384) ||
-+ (session->auth.ut.sha_type == CCP_SHA3_TYPE_512)) {
-+
-+ pst.src_addr =
-+ (phys_addr_t)((cmd_q->sb_sha + 1) * CCP_SB_BYTES);
-+ pst.dest_addr = dest_addr_t;
-+ pst.len = CCP_SB_BYTES;
-+ pst.dir = 0;
-+ pst.bit_mod = CCP_PASSTHRU_BITWISE_NOOP;
-+ pst.byte_swap = CCP_PASSTHRU_BYTESWAP_256BIT;
-+ ccp_perform_passthru(&pst, cmd_q);
-+
-+ pst.src_addr = (phys_addr_t)(cmd_q->sb_sha * CCP_SB_BYTES);
-+ pst.dest_addr = dest_addr_t + CCP_SB_BYTES;
-+ pst.len = CCP_SB_BYTES;
-+ pst.dir = 0;
-+ pst.bit_mod = CCP_PASSTHRU_BITWISE_NOOP;
-+ pst.byte_swap = CCP_PASSTHRU_BYTESWAP_256BIT;
-+ ccp_perform_passthru(&pst, cmd_q);
-+
-+ } else {
-+ pst.src_addr = (phys_addr_t)(cmd_q->sb_sha * CCP_SB_BYTES);
-+ pst.dest_addr = dest_addr_t;
-+ pst.len = CCP_SB_BYTES;
-+ pst.dir = 0;
-+ pst.bit_mod = CCP_PASSTHRU_BITWISE_NOOP;
-+ pst.byte_swap = CCP_PASSTHRU_BYTESWAP_256BIT;
-+ ccp_perform_passthru(&pst, cmd_q);
-+ }
-+
-+ /**sha engine command descriptor for FinalHash*/
-+ ctx_paddr += CCP_SHA3_CTX_SIZE;
-+ desc = &cmd_q->qbase_desc[cmd_q->qidx];
-+ memset(desc, 0, Q_DESC_SIZE);
-+
-+ CCP_CMD_ENGINE(desc) = CCP_ENGINE_SHA;
-+ CCP_CMD_INIT(desc) = 1;
-+ CCP_CMD_EOM(desc) = 1;
-+
-+ function.raw = 0;
-+ CCP_SHA_TYPE(&function) = session->auth.ut.sha_type;
-+ CCP_CMD_FUNCTION(desc) = function.raw;
-+
-+ if (session->auth.ut.sha_type == CCP_SHA3_TYPE_224) {
-+ dest_addr_t += (CCP_SB_BYTES - SHA224_DIGEST_SIZE);
-+ CCP_CMD_LEN(desc) = SHA224_DIGEST_SIZE;
-+ } else if (session->auth.ut.sha_type == CCP_SHA3_TYPE_256) {
-+ CCP_CMD_LEN(desc) = SHA256_DIGEST_SIZE;
-+ } else if (session->auth.ut.sha_type == CCP_SHA3_TYPE_384) {
-+ dest_addr_t += (2 * CCP_SB_BYTES - SHA384_DIGEST_SIZE);
-+ CCP_CMD_LEN(desc) = SHA384_DIGEST_SIZE;
-+ } else {
-+ CCP_CMD_LEN(desc) = SHA512_DIGEST_SIZE;
-+ }
-+
-+ CCP_CMD_SRC_LO(desc) = ((uint32_t)dest_addr_t);
-+ CCP_CMD_SRC_HI(desc) = high32_value(dest_addr_t);
-+ CCP_CMD_SRC_MEM(desc) = CCP_MEMTYPE_SYSTEM;
-+
-+ CCP_CMD_DST_LO(desc) = (uint32_t)dest_addr;
-+ CCP_CMD_DST_HI(desc) = high32_value(dest_addr);
-+ CCP_CMD_DST_MEM(desc) = CCP_MEMTYPE_SYSTEM;
-+
-+ CCP_CMD_KEY_LO(desc) = ((uint32_t)ctx_paddr);
-+ CCP_CMD_KEY_HI(desc) = high32_value(ctx_paddr);
-+ CCP_CMD_KEY_MEM(desc) = CCP_MEMTYPE_SYSTEM;
-+
-+ cmd_q->qidx = (cmd_q->qidx + 1) % COMMANDS_PER_QUEUE;
-+
-+ rte_wmb();
-+ tail = (uint32_t)(cmd_q->qbase_phys_addr + cmd_q->qidx * Q_DESC_SIZE);
-+ CCP_WRITE_REG(cmd_q->reg_base, CMD_Q_TAIL_LO_BASE, tail);
-+ CCP_WRITE_REG(cmd_q->reg_base, CMD_Q_CONTROL_BASE,
-+ cmd_q->qcontrol | CMD_Q_RUN);
-+
-+ op->status = RTE_CRYPTO_OP_STATUS_NOT_PROCESSED;
-+ return 0;
-+}
-+
-+static int
-+ccp_perform_sha3(struct rte_crypto_op *op,
-+ struct ccp_queue *cmd_q)
-+{
-+ struct ccp_session *session;
-+ union ccp_function function;
-+ struct ccp_desc *desc;
-+ uint8_t *ctx_addr, *append_ptr;
-+ uint32_t tail;
-+ phys_addr_t src_addr, dest_addr, ctx_paddr;
-+
-+ session = (struct ccp_session *)get_session_private_data(
-+ op->sym->session,
-+ ccp_cryptodev_driver_id);
-+
-+ src_addr = rte_pktmbuf_mtophys_offset(op->sym->m_src,
-+ op->sym->auth.data.offset);
-+ append_ptr = (uint8_t *)rte_pktmbuf_append(op->sym->m_src,
-+ session->auth.ctx_len);
-+ if (!append_ptr) {
-+ CCP_LOG_ERR("CCP MBUF append failed\n");
-+ return -1;
-+ }
-+ dest_addr = (phys_addr_t)rte_mem_virt2phy((void *)append_ptr);
-+ ctx_addr = session->auth.sha3_ctx;
-+ ctx_paddr = (phys_addr_t)rte_mem_virt2phy((void *)ctx_addr);
-+
-+ desc = &cmd_q->qbase_desc[cmd_q->qidx];
-+ memset(desc, 0, Q_DESC_SIZE);
-+
-+ /* prepare desc for SHA3 operation */
-+ CCP_CMD_ENGINE(desc) = CCP_ENGINE_SHA;
-+ CCP_CMD_INIT(desc) = 1;
-+ CCP_CMD_EOM(desc) = 1;
-+
-+ function.raw = 0;
-+ CCP_SHA_TYPE(&function) = session->auth.ut.sha_type;
-+ CCP_CMD_FUNCTION(desc) = function.raw;
-+
-+ CCP_CMD_LEN(desc) = op->sym->auth.data.length;
-+
-+ CCP_CMD_SRC_LO(desc) = ((uint32_t)src_addr);
-+ CCP_CMD_SRC_HI(desc) = high32_value(src_addr);
-+ CCP_CMD_SRC_MEM(desc) = CCP_MEMTYPE_SYSTEM;
-+
-+ CCP_CMD_DST_LO(desc) = ((uint32_t)dest_addr);
-+ CCP_CMD_DST_HI(desc) = high32_value(dest_addr);
-+ CCP_CMD_DST_MEM(desc) = CCP_MEMTYPE_SYSTEM;
-+
-+ CCP_CMD_KEY_LO(desc) = ((uint32_t)ctx_paddr);
-+ CCP_CMD_KEY_HI(desc) = high32_value(ctx_paddr);
-+ CCP_CMD_KEY_MEM(desc) = CCP_MEMTYPE_SYSTEM;
-+
-+ cmd_q->qidx = (cmd_q->qidx + 1) % COMMANDS_PER_QUEUE;
-+
-+ rte_wmb();
-+
-+ tail = (uint32_t)(cmd_q->qbase_phys_addr + cmd_q->qidx * Q_DESC_SIZE);
-+ CCP_WRITE_REG(cmd_q->reg_base, CMD_Q_TAIL_LO_BASE, tail);
-+ CCP_WRITE_REG(cmd_q->reg_base, CMD_Q_CONTROL_BASE,
-+ cmd_q->qcontrol | CMD_Q_RUN);
-+
-+ op->status = RTE_CRYPTO_OP_STATUS_NOT_PROCESSED;
-+ return 0;
-+}
-+
-+static int
- ccp_perform_aes_cmac(struct rte_crypto_op *op,
- struct ccp_queue *cmd_q)
- {
-@@ -1780,6 +2428,23 @@ ccp_crypto_auth(struct rte_crypto_op *op,
- result = ccp_perform_hmac(op, cmd_q);
- b_info->desccnt += 7;
- break;
-+ case CCP_AUTH_ALGO_SHA3_224:
-+ case CCP_AUTH_ALGO_SHA3_256:
-+ case CCP_AUTH_ALGO_SHA3_384:
-+ case CCP_AUTH_ALGO_SHA3_512:
-+ result = ccp_perform_sha3(op, cmd_q);
-+ b_info->desccnt += 1;
-+ break;
-+ case CCP_AUTH_ALGO_SHA3_224_HMAC:
-+ case CCP_AUTH_ALGO_SHA3_256_HMAC:
-+ result = ccp_perform_sha3_hmac(op, cmd_q);
-+ b_info->desccnt += 3;
-+ break;
-+ case CCP_AUTH_ALGO_SHA3_384_HMAC:
-+ case CCP_AUTH_ALGO_SHA3_512_HMAC:
-+ result = ccp_perform_sha3_hmac(op, cmd_q);
-+ b_info->desccnt += 4;
-+ break;
- case CCP_AUTH_ALGO_AES_CMAC:
- result = ccp_perform_aes_cmac(op, cmd_q);
- b_info->desccnt += 4;
-diff --git a/drivers/crypto/ccp/ccp_crypto.h b/drivers/crypto/ccp/ccp_crypto.h
-index ca1c1a8..8459b71 100644
---- a/drivers/crypto/ccp/ccp_crypto.h
-+++ b/drivers/crypto/ccp/ccp_crypto.h
-@@ -80,15 +80,19 @@
-
- #define SHA224_DIGEST_SIZE 28
- #define SHA224_BLOCK_SIZE 64
-+#define SHA3_224_BLOCK_SIZE 144
-
- #define SHA256_DIGEST_SIZE 32
- #define SHA256_BLOCK_SIZE 64
-+#define SHA3_256_BLOCK_SIZE 136
-
- #define SHA384_DIGEST_SIZE 48
- #define SHA384_BLOCK_SIZE 128
-+#define SHA3_384_BLOCK_SIZE 104
-
- #define SHA512_DIGEST_SIZE 64
- #define SHA512_BLOCK_SIZE 128
-+#define SHA3_512_BLOCK_SIZE 72
-
- /* SHA LSB intialiazation values */
-
-@@ -386,4 +390,22 @@ int process_ops_to_dequeue(struct ccp_qp *qp,
- struct rte_crypto_op **op,
- uint16_t nb_ops);
-
-+
-+/**
-+ * Apis for SHA3 partial hash generation
-+ * @param data_in buffer pointer on which phash is applied
-+ * @param data_out phash result in ccp be format is written
-+ */
-+int partial_hash_sha3_224(uint8_t *data_in,
-+ uint8_t *data_out);
-+
-+int partial_hash_sha3_256(uint8_t *data_in,
-+ uint8_t *data_out);
-+
-+int partial_hash_sha3_384(uint8_t *data_in,
-+ uint8_t *data_out);
-+
-+int partial_hash_sha3_512(uint8_t *data_in,
-+ uint8_t *data_out);
-+
- #endif /* _CCP_CRYPTO_H_ */
-diff --git a/drivers/crypto/ccp/ccp_pmd_ops.c b/drivers/crypto/ccp/ccp_pmd_ops.c
-index ab6199f..bb59d15 100644
---- a/drivers/crypto/ccp/ccp_pmd_ops.c
-+++ b/drivers/crypto/ccp/ccp_pmd_ops.c
-@@ -123,6 +123,48 @@ static const struct rte_cryptodev_capabilities ccp_pmd_capabilities[] = {
- }, }
- }, }
- },
-+ { /* SHA3-224 */
-+ .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
-+ {.sym = {
-+ .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
-+ {.auth = {
-+ .algo = RTE_CRYPTO_AUTH_SHA3_224,
-+ .block_size = 144,
-+ .key_size = {
-+ .min = 0,
-+ .max = 0,
-+ .increment = 0
-+ },
-+ .digest_size = {
-+ .min = 28,
-+ .max = 28,
-+ .increment = 0
-+ },
-+ .aad_size = { 0 }
-+ }, }
-+ }, }
-+ },
-+ { /* SHA3-224 HMAC*/
-+ .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
-+ {.sym = {
-+ .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
-+ {.auth = {
-+ .algo = RTE_CRYPTO_AUTH_SHA3_224_HMAC,
-+ .block_size = 144,
-+ .key_size = {
-+ .min = 1,
-+ .max = 144,
-+ .increment = 1
-+ },
-+ .digest_size = {
-+ .min = 28,
-+ .max = 28,
-+ .increment = 0
-+ },
-+ .aad_size = { 0 }
-+ }, }
-+ }, }
-+ },
- { /* SHA256 */
- .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
- {.sym = {
-@@ -165,6 +207,48 @@ static const struct rte_cryptodev_capabilities ccp_pmd_capabilities[] = {
- }, }
- }, }
- },
-+ { /* SHA3-256 */
-+ .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
-+ {.sym = {
-+ .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
-+ {.auth = {
-+ .algo = RTE_CRYPTO_AUTH_SHA3_256,
-+ .block_size = 136,
-+ .key_size = {
-+ .min = 0,
-+ .max = 0,
-+ .increment = 0
-+ },
-+ .digest_size = {
-+ .min = 32,
-+ .max = 32,
-+ .increment = 0
-+ },
-+ .aad_size = { 0 }
-+ }, }
-+ }, }
-+ },
-+ { /* SHA3-256-HMAC */
-+ .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
-+ {.sym = {
-+ .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
-+ {.auth = {
-+ .algo = RTE_CRYPTO_AUTH_SHA3_256_HMAC,
-+ .block_size = 136,
-+ .key_size = {
-+ .min = 1,
-+ .max = 136,
-+ .increment = 1
-+ },
-+ .digest_size = {
-+ .min = 32,
-+ .max = 32,
-+ .increment = 0
-+ },
-+ .aad_size = { 0 }
-+ }, }
-+ }, }
-+ },
- { /* SHA384 */
- .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
- {.sym = {
-@@ -207,6 +291,48 @@ static const struct rte_cryptodev_capabilities ccp_pmd_capabilities[] = {
- }, }
- }, }
- },
-+ { /* SHA3-384 */
-+ .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
-+ {.sym = {
-+ .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
-+ {.auth = {
-+ .algo = RTE_CRYPTO_AUTH_SHA3_384,
-+ .block_size = 104,
-+ .key_size = {
-+ .min = 0,
-+ .max = 0,
-+ .increment = 0
-+ },
-+ .digest_size = {
-+ .min = 48,
-+ .max = 48,
-+ .increment = 0
-+ },
-+ .aad_size = { 0 }
-+ }, }
-+ }, }
-+ },
-+ { /* SHA3-384-HMAC */
-+ .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
-+ {.sym = {
-+ .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
-+ {.auth = {
-+ .algo = RTE_CRYPTO_AUTH_SHA3_384_HMAC,
-+ .block_size = 104,
-+ .key_size = {
-+ .min = 1,
-+ .max = 104,
-+ .increment = 1
-+ },
-+ .digest_size = {
-+ .min = 48,
-+ .max = 48,
-+ .increment = 0
-+ },
-+ .aad_size = { 0 }
-+ }, }
-+ }, }
-+ },
- { /* SHA512 */
- .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
- {.sym = {
-@@ -249,6 +375,48 @@ static const struct rte_cryptodev_capabilities ccp_pmd_capabilities[] = {
- }, }
- }, }
- },
-+ { /* SHA3-512 */
-+ .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
-+ {.sym = {
-+ .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
-+ {.auth = {
-+ .algo = RTE_CRYPTO_AUTH_SHA3_512,
-+ .block_size = 72,
-+ .key_size = {
-+ .min = 0,
-+ .max = 0,
-+ .increment = 0
-+ },
-+ .digest_size = {
-+ .min = 64,
-+ .max = 64,
-+ .increment = 0
-+ },
-+ .aad_size = { 0 }
-+ }, }
-+ }, }
-+ },
-+ { /* SHA3-512-HMAC */
-+ .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
-+ {.sym = {
-+ .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,
-+ {.auth = {
-+ .algo = RTE_CRYPTO_AUTH_SHA3_512_HMAC,
-+ .block_size = 72,
-+ .key_size = {
-+ .min = 1,
-+ .max = 72,
-+ .increment = 1
-+ },
-+ .digest_size = {
-+ .min = 64,
-+ .max = 64,
-+ .increment = 0
-+ },
-+ .aad_size = { 0 }
-+ }, }
-+ }, }
-+ },
- { /*AES-CMAC */
- .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
- {.sym = {
-diff --git a/lib/librte_cryptodev/rte_crypto_sym.h b/lib/librte_cryptodev/rte_crypto_sym.h
-index 60797e9..eb5afc5 100644
---- a/lib/librte_cryptodev/rte_crypto_sym.h
-+++ b/lib/librte_cryptodev/rte_crypto_sym.h
-@@ -245,6 +245,23 @@ enum rte_crypto_auth_algorithm {
- RTE_CRYPTO_AUTH_ZUC_EIA3,
- /**< ZUC algorithm in EIA3 mode */
-
-+ RTE_CRYPTO_AUTH_SHA3_224,
-+ /**< 224 bit SHA3 algorithm. */
-+ RTE_CRYPTO_AUTH_SHA3_224_HMAC,
-+ /**< HMAC using 224 bit SHA3 algorithm. */
-+ RTE_CRYPTO_AUTH_SHA3_256,
-+ /**< 256 bit SHA3 algorithm. */
-+ RTE_CRYPTO_AUTH_SHA3_256_HMAC,
-+ /**< HMAC using 256 bit SHA3 algorithm. */
-+ RTE_CRYPTO_AUTH_SHA3_384,
-+ /**< 384 bit SHA3 algorithm. */
-+ RTE_CRYPTO_AUTH_SHA3_384_HMAC,
-+ /**< HMAC using 384 bit SHA3 algorithm. */
-+ RTE_CRYPTO_AUTH_SHA3_512,
-+ /**< 512 bit SHA3 algorithm. */
-+ RTE_CRYPTO_AUTH_SHA3_512_HMAC,
-+ /**< HMAC using 512 bit SHA3 algorithm. */
-+
- RTE_CRYPTO_AUTH_LIST_END
- };
-