Add support for NEA4, NIA4, NCA4: Snow 5G confidentiality, integrity and AEAD modes NEA5, NIA5, NCA5: AES 256 confidentiality, integrity and AEAD modes NEA6, NIA6, NCA6: ZUC 256 confidentiality, integrity and AEAD modes
IPsec MB library version 3.0 is required for the above algorithms. Signed-off-by: Radu Nicolau <[email protected]> --- doc/guides/cryptodevs/aesni_mb.rst | 9 + doc/guides/cryptodevs/features/aesni_mb.ini | 9 + doc/guides/rel_notes/release_26_11.rst | 5 + drivers/crypto/ipsec_mb/pmd_aesni_mb.c | 216 +++++++++++++++++- drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h | 229 ++++++++++++++++++++ 5 files changed, 467 insertions(+), 1 deletion(-) diff --git a/doc/guides/cryptodevs/aesni_mb.rst b/doc/guides/cryptodevs/aesni_mb.rst index 4851997fd9..5fb73e31b4 100644 --- a/doc/guides/cryptodevs/aesni_mb.rst +++ b/doc/guides/cryptodevs/aesni_mb.rst @@ -39,6 +39,9 @@ Cipher algorithms: * RTE_CRYPTO_CIPHER_SM4_CBC * RTE_CRYPTO_CIPHER_SM4_ECB * RTE_CRYPTO_CIPHER_SM4_CTR +* RTE_CRYPTO_CIPHER_SNOW5G_NEA4 +* RTE_CRYPTO_CIPHER_AES_NEA5 +* RTE_CRYPTO_CIPHER_ZUC_NEA6 Hash algorithms: @@ -61,6 +64,9 @@ Hash algorithms: * RTE_CRYPTO_AUTH_KASUMI_F9 * RTE_CRYPTO_AUTH_SM3 * RTE_CRYPTO_AUTH_SM3 HMAC +* RTE_CRYPTO_AUTH_SNOW5G_NIA4 +* RTE_CRYPTO_AUTH_AES_NIA5 +* RTE_CRYPTO_AUTH_ZUC_NIA6 AEAD algorithms: @@ -68,6 +74,9 @@ AEAD algorithms: * RTE_CRYPTO_AEAD_AES_GCM * RTE_CRYPTO_AEAD_CHACHA20_POLY1305 * RTE_CRYPTO_AEAD_SM4_GCM +* RTE_CRYPTO_AEAD_SNOW5G_NCA4 +* RTE_CRYPTO_AEAD_AES_NCA5 +* RTE_CRYPTO_AEAD_ZUC_NCA6 Protocol offloads: diff --git a/doc/guides/cryptodevs/features/aesni_mb.ini b/doc/guides/cryptodevs/features/aesni_mb.ini index ce6b43e48b..e64818bf46 100644 --- a/doc/guides/cryptodevs/features/aesni_mb.ini +++ b/doc/guides/cryptodevs/features/aesni_mb.ini @@ -45,6 +45,9 @@ KASUMI F8 = Y SM4 CBC = Y SM4 ECB = Y SM4 CTR = Y +SNOW5G NEA4 = Y +AES NEA5 = Y +ZUC-256 NEA6 = Y ; ; Supported authentication algorithms of the 'aesni_mb' crypto driver. @@ -69,6 +72,9 @@ SNOW3G UIA2 = Y KASUMI F9 = Y SM3 = Y SM3 HMAC = Y +SNOW5G NIA4 = Y +AES NIA5 = Y +ZUC-256 NIA6 = Y ; ; Supported AEAD algorithms of the 'aesni_mb' crypto driver. @@ -81,6 +87,9 @@ AES GCM (192) = Y AES GCM (256) = Y CHACHA20-POLY1305 = Y SM4 GCM = Y +SNOW5G NCA4 = Y +AES NCA5 = Y +ZUC-256 NCA6 = Y ; ; Supported Asymmetric 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 ea126aa9bb..1ee3cdfba3 100644 --- a/doc/guides/rel_notes/release_26_11.rst +++ b/doc/guides/rel_notes/release_26_11.rst @@ -36,8 +36,13 @@ New Features * **Updated AESNI_MB crypto driver.** * Added support for version 3.0 of IPsec MB Library. + * Added support for the following wireless algorithms: + - NEA4, NIA4, NCA4: Snow 5G confidentiality, integrity and AEAD modes. + - NEA5, NIA5, NCA5: AES 256 confidentiality, integrity and AEAD modes. + - NEA6, NIA6, NCA6: ZUC 256 confidentiality, integrity and AEAD modes. .. This section should contain new features added in this release. + Sample format: * **Add a title in the past tense with a full stop.** diff --git a/drivers/crypto/ipsec_mb/pmd_aesni_mb.c b/drivers/crypto/ipsec_mb/pmd_aesni_mb.c index e8f6e77d21..a49a82d561 100644 --- a/drivers/crypto/ipsec_mb/pmd_aesni_mb.c +++ b/drivers/crypto/ipsec_mb/pmd_aesni_mb.c @@ -22,6 +22,11 @@ is_aead_algo(IMB_HASH_ALG hash_alg, IMB_CIPHER_MODE cipher_mode) hash_alg == IMB_AUTH_AES_CCM || cipher_mode == IMB_CIPHER_GCM || cipher_mode == IMB_CIPHER_SM4_GCM +#if IMB_VERSION(3, 0, 0) <= IMB_VERSION_NUM + || cipher_mode == IMB_CIPHER_SNOW5G_NCA4 + || cipher_mode == IMB_CIPHER_AES_NCA5 + || cipher_mode == IMB_CIPHER_ZUC_NCA6 +#endif ); } @@ -221,6 +226,36 @@ aesni_mb_set_session_auth_parameters(IMB_MGR *mb_mgr, return 0; } +#if IMB_VERSION(3, 0, 0) <= IMB_VERSION_NUM + if (xform->auth.algo == RTE_CRYPTO_AUTH_SNOW5G_NIA4) { + sess->template_job.hash_alg = IMB_AUTH_SNOW5G_NIA4; + sess->template_job.auth_tag_output_len_in_bytes = + sess->auth.req_digest_len; + memcpy(sess->auth.snow5g_auth_key, xform->auth.key.data, + xform->auth.key.length); + sess->template_job.u.NIA._key = sess->auth.snow5g_auth_key; + return 0; + } else if (xform->auth.algo == RTE_CRYPTO_AUTH_AES_NIA5) { + sess->template_job.hash_alg = IMB_AUTH_AES_NIA5; + sess->template_job.auth_tag_output_len_in_bytes = + sess->auth.req_digest_len; + IMB_AES_KEYEXP_256(mb_mgr, xform->auth.key.data, + sess->cipher.expanded_aes_keys.encode, + sess->cipher.expanded_aes_keys.decode); + sess->template_job.u.NIA._key = + (uint8_t *)sess->cipher.expanded_aes_keys.encode; + return 0; + } else if (xform->auth.algo == RTE_CRYPTO_AUTH_ZUC_NIA6) { + sess->template_job.hash_alg = IMB_AUTH_ZUC_NIA6; + sess->template_job.auth_tag_output_len_in_bytes = + sess->auth.req_digest_len; + memcpy(sess->auth.zuc_auth_key, xform->auth.key.data, + xform->auth.key.length); + sess->template_job.u.ZUC_EIA3._key = sess->auth.zuc_auth_key; + return 0; + } +#endif + switch (xform->auth.algo) { case RTE_CRYPTO_AUTH_MD5_HMAC: sess->template_job.hash_alg = IMB_AUTH_MD5; @@ -352,6 +387,9 @@ aesni_mb_set_session_cipher_parameters(IMB_MGR *mb_mgr, uint8_t is_snow3g = 0; uint8_t is_kasumi = 0; uint8_t is_sm4 = 0; +#if IMB_VERSION(3, 0, 0) <= IMB_VERSION_NUM + uint8_t is_nxan = 0; +#endif if (xform == NULL) { sess->template_job.cipher_mode = IMB_CIPHER_NULL; @@ -434,6 +472,20 @@ aesni_mb_set_session_cipher_parameters(IMB_MGR *mb_mgr, sess->template_job.cipher_mode = IMB_CIPHER_SM4_CNTR; is_sm4 = 1; break; +#if IMB_VERSION(3, 0, 0) <= IMB_VERSION_NUM + case RTE_CRYPTO_CIPHER_SNOW5G_NEA4: + sess->template_job.cipher_mode = IMB_CIPHER_SNOW5G_NEA4; + is_nxan = 1; + break; + case RTE_CRYPTO_CIPHER_AES_NEA5: + sess->template_job.cipher_mode = IMB_CIPHER_AES_NEA5; + is_nxan = 1; + break; + case RTE_CRYPTO_CIPHER_ZUC_NEA6: + sess->template_job.cipher_mode = IMB_CIPHER_ZUC_NEA6; + is_nxan = 1; + break; +#endif default: IPSEC_MB_LOG(ERR, "Unsupported cipher mode parameter"); return -ENOTSUP; @@ -578,6 +630,23 @@ aesni_mb_set_session_cipher_parameters(IMB_MGR *mb_mgr, sess->cipher.expanded_sm4_keys.decode); sess->template_job.enc_keys = sess->cipher.expanded_sm4_keys.encode; sess->template_job.dec_keys = sess->cipher.expanded_sm4_keys.decode; +#if IMB_VERSION(3, 0, 0) <= IMB_VERSION_NUM + } else if (is_nxan) { + if (xform->cipher.key.length != 32) { + IPSEC_MB_LOG(ERR, "Invalid cipher key length"); + return -EINVAL; + } + if (xform->cipher.iv.length != 16) { + IPSEC_MB_LOG(ERR, "Invalid cipher IV length"); + return -EINVAL; + } + sess->template_job.key_len_in_bytes = 32; + IMB_AES_KEYEXP_256(mb_mgr, xform->cipher.key.data, + sess->cipher.expanded_aes_keys.encode, + sess->cipher.expanded_aes_keys.decode); + sess->template_job.enc_keys = sess->cipher.expanded_aes_keys.encode; + sess->template_job.dec_keys = sess->cipher.expanded_aes_keys.decode; +#endif } else { if (xform->cipher.key.length != 8) { IPSEC_MB_LOG(ERR, "Invalid cipher key length"); @@ -731,6 +800,71 @@ aesni_mb_set_session_aead_parameters(IMB_MGR *mb_mgr, sess->template_job.enc_keys = &sess->cipher.gcm_key; sess->template_job.dec_keys = &sess->cipher.gcm_key; break; +#if IMB_VERSION(3, 0, 0) <= IMB_VERSION_NUM + case RTE_CRYPTO_AEAD_SNOW5G_NCA4: + sess->template_job.cipher_mode = IMB_CIPHER_SNOW5G_NCA4; + sess->template_job.hash_alg = IMB_AUTH_SNOW5G_NCA4; + sess->template_job.u.GCM.aad_len_in_bytes = xform->aead.aad_length; + if (xform->aead.key.length != 32) { + IPSEC_MB_LOG(ERR, "Invalid key length"); + return -EINVAL; + } + sess->template_job.key_len_in_bytes = 32; + IMB_AES_KEYEXP_256(mb_mgr, xform->aead.key.data, + sess->cipher.expanded_aes_keys.encode, + sess->cipher.expanded_aes_keys.decode); + sess->template_job.enc_keys = sess->cipher.expanded_aes_keys.encode; + sess->template_job.dec_keys = sess->cipher.expanded_aes_keys.decode; + /* digest size must be between 4 and 16 */ + if (sess->auth.req_digest_len < 4 || + sess->auth.req_digest_len > 16) { + IPSEC_MB_LOG(ERR, "Invalid digest size"); + return -EINVAL; + } + break; + case RTE_CRYPTO_AEAD_AES_NCA5: + sess->template_job.cipher_mode = IMB_CIPHER_AES_NCA5; + sess->template_job.hash_alg = IMB_AUTH_AES_NCA5; + sess->template_job.u.GCM.aad_len_in_bytes = xform->aead.aad_length; + if (xform->aead.key.length != 32) { + IPSEC_MB_LOG(ERR, "Invalid key length"); + return -EINVAL; + } + sess->template_job.key_len_in_bytes = 32; + IMB_AES_KEYEXP_256(mb_mgr, xform->aead.key.data, + sess->cipher.expanded_aes_keys.encode, + sess->cipher.expanded_aes_keys.decode); + sess->template_job.enc_keys = sess->cipher.expanded_aes_keys.encode; + sess->template_job.dec_keys = sess->cipher.expanded_aes_keys.decode; + /* digest size must be between 4 and 16 */ + if (sess->auth.req_digest_len < 4 || + sess->auth.req_digest_len > 16) { + IPSEC_MB_LOG(ERR, "Invalid digest size"); + return -EINVAL; + } + break; + case RTE_CRYPTO_AEAD_ZUC_NCA6: + sess->template_job.cipher_mode = IMB_CIPHER_ZUC_NCA6; + sess->template_job.hash_alg = IMB_AUTH_ZUC_NCA6; + sess->template_job.u.NCA.aad_len_in_bytes = xform->aead.aad_length; + if (xform->aead.key.length != 32) { + IPSEC_MB_LOG(ERR, "Invalid key length"); + return -EINVAL; + } + sess->template_job.key_len_in_bytes = 32; + IMB_AES_KEYEXP_256(mb_mgr, xform->aead.key.data, + sess->cipher.expanded_aes_keys.encode, + sess->cipher.expanded_aes_keys.decode); + sess->template_job.enc_keys = sess->cipher.expanded_aes_keys.encode; + sess->template_job.dec_keys = sess->cipher.expanded_aes_keys.decode; + /* digest size must be between 4 and 16 */ + if (sess->auth.req_digest_len < 4 || + sess->auth.req_digest_len > 16) { + IPSEC_MB_LOG(ERR, "Invalid digest size"); + return -EINVAL; + } + break; +#endif default: IPSEC_MB_LOG(ERR, "Unsupported aead mode parameter"); return -ENOTSUP; @@ -1060,7 +1194,24 @@ set_cpu_mb_job_params(IMB_JOB *job, struct aesni_mb_session *session, case IMB_AUTH_SM4_GCM: job->u.GCM.aad = aad->va; break; - +#if IMB_VERSION(3, 0, 0) <= IMB_VERSION_NUM + case IMB_AUTH_SNOW5G_NCA4: + case IMB_AUTH_AES_NCA5: + job->u.GCM.aad = aad->va; + break; + case IMB_AUTH_ZUC_NCA6: + job->u.NCA.aad = aad->va; + break; + case IMB_AUTH_SNOW5G_NIA4: + job->u.NIA._iv = iv->va; + break; + case IMB_AUTH_AES_NIA5: + job->u.NIA._iv = iv->va; + break; + case IMB_AUTH_ZUC_NIA6: + job->u.ZUC_EIA3._iv = iv->va; + break; +#endif default: break; @@ -1235,8 +1386,17 @@ handle_sgl_linear(IMB_JOB *job, struct rte_crypto_op *op, uint32_t dst_offset, job->dst = linear_buf + dst_offset; job->user_data2 = linear_buf; +#if IMB_VERSION(3, 0, 0) <= IMB_VERSION_NUM + if (job->hash_alg == IMB_AUTH_AES_GMAC || + job->hash_alg == IMB_AUTH_SNOW5G_NCA4 || + job->hash_alg == IMB_AUTH_AES_NCA5) + job->u.GCM.aad = linear_buf; + else if (job->hash_alg == IMB_AUTH_ZUC_NCA6) + job->u.NCA.aad = linear_buf; +#else if (job->hash_alg == IMB_AUTH_AES_GMAC) job->u.GCM.aad = linear_buf; +#endif if (session->auth.operation == RTE_CRYPTO_AUTH_OP_VERIFY) job->auth_tag_output = linear_buf + lb_offset; @@ -1620,6 +1780,28 @@ set_mb_job_params(IMB_JOB *job, struct ipsec_mb_qp *qp, case IMB_AUTH_SM4_GCM: job->u.GCM.aad = op->sym->aead.aad.data; break; +#if IMB_VERSION(3, 0, 0) <= IMB_VERSION_NUM + case IMB_AUTH_SNOW5G_NCA4: + case IMB_AUTH_AES_NCA5: + job->u.GCM.aad = op->sym->aead.aad.data; + break; + case IMB_AUTH_ZUC_NCA6: + job->u.NCA.aad = op->sym->aead.aad.data; + break; + case IMB_AUTH_SNOW5G_NIA4: + job->u.NIA._iv = rte_crypto_op_ctod_offset(op, uint8_t *, + session->auth_iv.offset); + break; + case IMB_AUTH_AES_NIA5: + job->u.NIA._iv = rte_crypto_op_ctod_offset(op, uint8_t *, + session->auth_iv.offset); + break; + case IMB_AUTH_ZUC_NIA6: + job->u.ZUC_EIA3._iv = rte_crypto_op_ctod_offset(op, uint8_t *, + session->auth_iv.offset); + break; +#endif + default: break; } @@ -1775,6 +1957,29 @@ set_mb_job_params(IMB_JOB *job, struct ipsec_mb_qp *qp, job->iv = rte_crypto_op_ctod_offset(op, uint8_t *, session->iv.offset); break; +#if IMB_VERSION(3, 0, 0) <= IMB_VERSION_NUM + case IMB_AUTH_SNOW5G_NCA4: + case IMB_AUTH_AES_NCA5: + case IMB_AUTH_ZUC_NCA6: + job->hash_start_src_offset_in_bytes = + op->sym->aead.data.offset; + job->msg_len_to_hash_in_bytes = + op->sym->aead.data.length; + job->cipher_start_src_offset_in_bytes = + op->sym->aead.data.offset; + job->msg_len_to_cipher_in_bytes = op->sym->aead.data.length; + job->iv = rte_crypto_op_ctod_offset(op, uint8_t *, + session->iv.offset); + break; + case IMB_AUTH_SNOW5G_NIA4: + case IMB_AUTH_AES_NIA5: + case IMB_AUTH_ZUC_NIA6: + job->hash_start_src_offset_in_bytes = + op->sym->auth.data.offset >> 3; + job->msg_len_to_hash_in_bytes = + op->sym->auth.data.length >> 3; + break; +#endif default: job->hash_start_src_offset_in_bytes = auth_start_offset( @@ -1831,6 +2036,15 @@ set_mb_job_params(IMB_JOB *job, struct ipsec_mb_qp *qp, case IMB_CIPHER_SM4_GCM: job->msg_len_to_cipher_in_bytes = op->sym->aead.data.length; break; +#if IMB_VERSION(3, 0, 0) <= IMB_VERSION_NUM + case IMB_CIPHER_SNOW5G_NCA4: + case IMB_CIPHER_AES_NCA5: + case IMB_CIPHER_ZUC_NCA6: + job->cipher_start_src_offset_in_bytes = + op->sym->aead.data.offset; + job->msg_len_to_cipher_in_bytes = op->sym->aead.data.length; + break; +#endif default: job->cipher_start_src_offset_in_bytes = op->sym->cipher.data.offset; diff --git a/drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h b/drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h index 6afda45414..9390bad208 100644 --- a/drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h +++ b/drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h @@ -882,6 +882,233 @@ static const struct rte_cryptodev_capabilities aesni_mb_capabilities[] = { }, } }, } }, +#if IMB_VERSION(3, 0, 0) <= IMB_VERSION_NUM + { /* 256-NEA4 */ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, + {.sym = { + .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, + {.cipher = { + .algo = RTE_CRYPTO_CIPHER_SNOW5G_NEA4, + .block_size = 8, + .key_size = { + .min = 32, + .max = 32, + .increment = 0 + }, + .iv_size = { + .min = 16, + .max = 16, + .increment = 0 + } + }, } + }, } + }, + { /* 256-NEA5 */ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, + {.sym = { + .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, + {.cipher = { + .algo = RTE_CRYPTO_CIPHER_AES_NEA5, + .block_size = 8, + .key_size = { + .min = 32, + .max = 32, + .increment = 0 + }, + .iv_size = { + .min = 16, + .max = 16, + .increment = 0 + } + }, } + }, } + }, + { /* 256-NEA6 */ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, + {.sym = { + .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, + {.cipher = { + .algo = RTE_CRYPTO_CIPHER_ZUC_NEA6, + .block_size = 8, + .key_size = { + .min = 32, + .max = 32, + .increment = 0 + }, + .iv_size = { + .min = 16, + .max = 16, + .increment = 0 + } + }, } + }, } + }, + { /* 256-NIA4 */ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, + {.sym = { + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, + {.auth = { + .algo = RTE_CRYPTO_AUTH_SNOW5G_NIA4, + .block_size = 8, + .key_size = { + .min = 32, + .max = 32, + .increment = 0 + }, + .digest_size = { + .min = 4, + .max = 16, + .increment = 1 + }, + .iv_size = { + .min = 16, + .max = 16, + .increment = 0 + } + }, } + }, } + }, + { /* 256-NIA5 */ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, + {.sym = { + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, + {.auth = { + .algo = RTE_CRYPTO_AUTH_AES_NIA5, + .block_size = 8, + .key_size = { + .min = 32, + .max = 32, + .increment = 0 + }, + .digest_size = { + .min = 4, + .max = 16, + .increment = 1 + }, + .iv_size = { + .min = 16, + .max = 16, + .increment = 0 + } + }, } + }, } + }, + { /* 256-NIA6 */ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, + {.sym = { + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, + {.auth = { + .algo = RTE_CRYPTO_AUTH_ZUC_NIA6, + .block_size = 8, + .key_size = { + .min = 32, + .max = 32, + .increment = 0 + }, + .digest_size = { + .min = 4, + .max = 16, + .increment = 1 + }, + .iv_size = { + .min = 16, + .max = 16, + .increment = 0 + } + }, } + }, } + }, + { /* 256-NCA4 */ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, + {.sym = { + .xform_type = RTE_CRYPTO_SYM_XFORM_AEAD, + {.aead = { + .algo = RTE_CRYPTO_AEAD_SNOW5G_NCA4, + .block_size = 8, + .key_size = { + .min = 32, + .max = 32, + .increment = 0 + }, + .digest_size = { + .min = 4, + .max = 16, + .increment = 1 + }, + .aad_size = { + .min = 0, + .max = 65535, + .increment = 1 + }, + .iv_size = { + .min = 16, + .max = 16, + .increment = 0 + }, + }, } + }, } + }, + { /* 256-NCA5 */ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, + {.sym = { + .xform_type = RTE_CRYPTO_SYM_XFORM_AEAD, + {.aead = { + .algo = RTE_CRYPTO_AEAD_AES_NCA5, + .block_size = 8, + .key_size = { + .min = 32, + .max = 32, + .increment = 0 + }, + .digest_size = { + .min = 4, + .max = 16, + .increment = 1 + }, + .aad_size = { + .min = 0, + .max = 65535, + .increment = 1 + }, + .iv_size = { + .min = 16, + .max = 16, + .increment = 0 + }, + }, } + }, } + }, + { /* 256-NCA6 */ + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, + {.sym = { + .xform_type = RTE_CRYPTO_SYM_XFORM_AEAD, + {.aead = { + .algo = RTE_CRYPTO_AEAD_ZUC_NCA6, + .block_size = 8, + .key_size = { + .min = 32, + .max = 32, + .increment = 0 + }, + .digest_size = { + .min = 4, + .max = 16, + .increment = 1 + }, + .aad_size = { + .min = 0, + .max = 65535, + .increment = 1 + }, + .iv_size = { + .min = 16, + .max = 16, + .increment = 0 + }, + }, } + }, } + }, +#endif RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST() }; @@ -1101,6 +1328,8 @@ struct __rte_cache_aligned aesni_mb_session { /* *< Expanded XCBC authentication keys */ uint8_t zuc_auth_key[32]; /* *< ZUC authentication key */ + uint8_t snow5g_auth_key[32]; + /* *< SNOW5G authentication key */ snow3g_key_schedule_t pKeySched_snow3g_auth; /* *< SNOW3G scheduled authentication key */ kasumi_key_sched_t pKeySched_kasumi_auth; -- 2.52.0

