[PATCH 05/10] crypto/qat: advertise RSA padding capabilities
Radu Nicolau
radu.nicolau at intel.com
Mon Aug 31 14:11:01 CEST 2026
On 31-Aug-26 11:23 AM, Sucharitha Sarananaga wrote:
> Add QAT_ASYM_RSA_CAP macro to report RSA asymmetric capabilities
> using rsa_capa, including modulus length and padding schemes.
>
> Update Gen1 and Gen4 QAT asymmetric PMDs to advertise
> RTE_CRYPTO_RSA_PADDING_NONE via pad_types, matching the padding
> mode supported by the QAT RSA implementation.
>
> Signed-off-by: Sucharitha Sarananaga <ssarananaga at marvell.com>
> ---
> drivers/crypto/qat/asym/qat_asym.h | 20 ++++++++++++++++++++
> drivers/crypto/qat/dev/qat_asym_pmd_gen1.c | 5 +++--
> drivers/crypto/qat/dev/qat_crypto_pmd_gen4.c | 5 +++--
> 3 files changed, 26 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/crypto/qat/asym/qat_asym.h b/drivers/crypto/qat/asym/qat_asym.h
> index 0ecbc47548..cf40d445df 100644
> --- a/drivers/crypto/qat/asym/qat_asym.h
> +++ b/drivers/crypto/qat/asym/qat_asym.h
> @@ -56,6 +56,26 @@ typedef uint64_t large_int_ptr;
> } \
> }
>
> +#define QAT_ASYM_RSA_CAP(o, l, r, i, p) \
> + { \
> + .op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC, \
> + {.asym = { \
> + .xform_capa = { \
> + .xform_type = RTE_CRYPTO_ASYM_XFORM_RSA, \
> + .op_types = o, \
> + .rsa_capa = { \
> + .modlen = { \
> + .min = l, \
> + .max = r, \
> + .increment = i \
> + }, \
> + .pad_types = p, \
> + }, \
> + } \
> + }, \
> + } \
> + }
> +
> struct __rte_aligned(8) qat_asym_op_cookie {
> uint64_t error;
> uint32_t alg_bytesize; /* Bytesize of algorithm */
> diff --git a/drivers/crypto/qat/dev/qat_asym_pmd_gen1.c b/drivers/crypto/qat/dev/qat_asym_pmd_gen1.c
> index c96608dd37..5b93cf374b 100644
> --- a/drivers/crypto/qat/dev/qat_asym_pmd_gen1.c
> +++ b/drivers/crypto/qat/dev/qat_asym_pmd_gen1.c
> @@ -32,12 +32,13 @@ static struct rte_cryptodev_capabilities qat_asym_crypto_caps_gen1[] = {
> 0, 1, 512, 1),
> QAT_ASYM_CAP(MODINV,
> 0, 1, 512, 1),
> - QAT_ASYM_CAP(RSA,
> + QAT_ASYM_RSA_CAP(
> ((1 << RTE_CRYPTO_ASYM_OP_SIGN) |
> (1 << RTE_CRYPTO_ASYM_OP_VERIFY) |
> (1 << RTE_CRYPTO_ASYM_OP_ENCRYPT) |
> (1 << RTE_CRYPTO_ASYM_OP_DECRYPT)),
> - 64, 512, 64),
> + 64, 512, 64,
> + (1 << RTE_CRYPTO_RSA_PADDING_NONE)),
> QAT_ASYM_CAP(ECDH,
> ((1 << RTE_CRYPTO_ASYM_KE_PUB_KEY_GENERATE) |
> (1 << RTE_CRYPTO_ASYM_KE_SHARED_SECRET_COMPUTE) |
> diff --git a/drivers/crypto/qat/dev/qat_crypto_pmd_gen4.c b/drivers/crypto/qat/dev/qat_crypto_pmd_gen4.c
> index 41cad29142..106c512a06 100644
> --- a/drivers/crypto/qat/dev/qat_crypto_pmd_gen4.c
> +++ b/drivers/crypto/qat/dev/qat_crypto_pmd_gen4.c
> @@ -121,12 +121,13 @@ static struct rte_cryptodev_capabilities qat_asym_crypto_caps_gen4[] = {
> 0, 1, 512, 1),
> QAT_ASYM_CAP(MODINV,
> 0, 1, 512, 1),
> - QAT_ASYM_CAP(RSA,
> + QAT_ASYM_RSA_CAP(
> ((1 << RTE_CRYPTO_ASYM_OP_SIGN) |
> (1 << RTE_CRYPTO_ASYM_OP_VERIFY) |
> (1 << RTE_CRYPTO_ASYM_OP_ENCRYPT) |
> (1 << RTE_CRYPTO_ASYM_OP_DECRYPT)),
> - 64, 512, 64),
> + 64, 512, 64,
> + (1 << RTE_CRYPTO_RSA_PADDING_NONE)),
> { /* SM2 */
> .op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,
> {.asym = {.pad_types
These changes are not needed, pad_types field will still be zero.
More information about the dev
mailing list