[EXTERNAL] [PATCH] crypto/openssl: support AES-XTS operations

Akhil Goyal gakhil at marvell.com
Mon Nov 17 19:38:45 CET 2025


> Extend openssl crypto PMD to support AES XTS operations.
> 
> Signed-off-by: Shaokai Zhang <felix.zhang at jaguarmicro.com>
> Reviewed-by: Joey Xing <joey.xing at jaguarmicro.com>
> ---
>  drivers/crypto/openssl/openssl_pmd_private.h |  2 +-
>  drivers/crypto/openssl/rte_openssl_pmd.c     | 13 +++++++++++++
>  drivers/crypto/openssl/rte_openssl_pmd_ops.c | 20 ++++++++++++++++++++
>  3 files changed, 34 insertions(+), 1 deletion(-)

Documentation update missing.
This patch is late for current release. Will be deferred to next release.

> 
> diff --git a/drivers/crypto/openssl/openssl_pmd_private.h
> b/drivers/crypto/openssl/openssl_pmd_private.h
> index fe89e522e1..d5a751600a 100644
> --- a/drivers/crypto/openssl/openssl_pmd_private.h
> +++ b/drivers/crypto/openssl/openssl_pmd_private.h
> @@ -118,7 +118,7 @@ struct __rte_cache_aligned openssl_session {
>  		/**< cipher algorithm */
> 
>  		struct {
> -			uint8_t data[32];
> +			uint8_t data[64];
>  			/**< key data */
>  			size_t length;
>  			/**< key length in bytes */
> diff --git a/drivers/crypto/openssl/rte_openssl_pmd.c
> b/drivers/crypto/openssl/rte_openssl_pmd.c
> index 4f171f48cc..2d803912d4 100644
> --- a/drivers/crypto/openssl/rte_openssl_pmd.c
> +++ b/drivers/crypto/openssl/rte_openssl_pmd.c
> @@ -211,6 +211,18 @@ get_cipher_algo(enum rte_crypto_cipher_algorithm
> sess_algo, size_t keylen,
>  				res = -EINVAL;
>  			}
>  			break;
> +		case RTE_CRYPTO_CIPHER_AES_XTS:
> +			switch (keylen) {
> +			case 32:
> +				*algo = EVP_aes_128_xts();
> +				break;
> +			case 64:
> +				*algo = EVP_aes_256_xts();
> +				break;
> +			default:
> +				res = -EINVAL;
> +			}
> +			break;
>  		case RTE_CRYPTO_CIPHER_AES_CTR:
>  			switch (keylen) {
>  			case 16:
> @@ -493,6 +505,7 @@ openssl_set_session_cipher_parameters(struct
> openssl_session *sess,
>  	case RTE_CRYPTO_CIPHER_3DES_CBC:
>  	case RTE_CRYPTO_CIPHER_AES_CBC:
>  	case RTE_CRYPTO_CIPHER_AES_CTR:
> +	case RTE_CRYPTO_CIPHER_AES_XTS:
>  		sess->cipher.mode = OPENSSL_CIPHER_LIB;
>  		sess->cipher.algo = xform->cipher.algo;
>  		sess->cipher.ctx = EVP_CIPHER_CTX_new();
> diff --git a/drivers/crypto/openssl/rte_openssl_pmd_ops.c
> b/drivers/crypto/openssl/rte_openssl_pmd_ops.c
> index 5095e6cbea..df5c12626d 100644
> --- a/drivers/crypto/openssl/rte_openssl_pmd_ops.c
> +++ b/drivers/crypto/openssl/rte_openssl_pmd_ops.c
> @@ -269,6 +269,26 @@ static const struct rte_cryptodev_capabilities
> openssl_pmd_capabilities[] = {
>  			}, }
>  		}, }
>  	},
> +	{	/* AES XTS */
> +		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
> +		{.sym = {
> +			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,
> +			{.cipher = {
> +				.algo = RTE_CRYPTO_CIPHER_AES_XTS,
> +				.block_size = 16,
> +				.key_size = {
> +					.min = 32,
> +					.max = 64,
> +					.increment = 32
> +				},
> +				.iv_size = {
> +					.min = 16,
> +					.max = 16,
> +					.increment = 0
> +				}
> +			}, }
> +		}, }
> +	},
>  	{	/* AES CBC */
>  		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
>  		{.sym = {
> --
> 2.47.1.windows.2



More information about the dev mailing list