[PATCH 00/10] cryptodev: add RSA-OAEP and RSA-PSS padding support
Sucharitha Sarananaga
ssarananaga at marvell.com
Mon Aug 31 12:23:18 CEST 2026
The asymmetric crypto capability structure currently reports only a
generic modulus length and primary hash algorithm for RSA, with no
way for a PMD to advertise which padding schemes (NONE, PKCS#1 v1.5,
OAEP, PSS) or MGF1 hash algorithms it supports. Applications have no
standard way to discover this, and the OpenSSL PMD itself only
implements NONE and PKCS#1 v1.5 padding.
This series first extends the capability API with a dedicated
rte_crypto_rsa_capa (modulus length, pad_types, mgf1_hash_algos, and
an explicit-PSS-salt flag), then updates the capability reporting in
the virtio, octeontx, cnxk, qat, and openssl PMDs to use it.
On top of that, it adds actual RSA-OAEP and RSA-PSS support to the
OpenSSL PMD:
- RSA-OAEP encrypt/decrypt, with configurable OAEP hash, MGF1 hash,
and an optional label, defaulting MGF1 to the OAEP hash when
unset.
- RSA-PSS sign/verify, with configurable hash, MGF1 hash, and salt
length (rte_crypto_rsa_padding::pss_saltlen), using a dedicated
EVP_PKEY_verify()-based verification path since PSS does not
support verify-recover. The PSS salt itself is always generated
internally by the PMD; an application-supplied salt
(rte_crypto_rsa_op_param::pss_salt, gated by the new
pss_explicit_salt capability bit) is introduced by this series
for future PMD support but is not yet implemented here, so it is
rejected with RTE_CRYPTO_OP_STATUS_INVALID_ARGS.
Test coverage for both OAEP (encrypt/decrypt, default and custom
MGF1, with and without a label) and PSS (digest-length, maximum, and
zero-length salt) is added to the cryptodev asymmetric test suite.
Sucharitha Sarananaga (10):
crypto: add RSA-specific capability parameters
crypto/virtio: advertise RSA padding and hash capabilities
crypto/octeontx: advertise RSA PKCS#1 v1.5 padding support
crypto/cnxk: advertise RSA PKCS#1 v1.5 padding support
crypto/qat: advertise RSA padding capabilities
crypto/openssl: advertise RSA padding and hash capabilities
crypto/openssl: add RSA-OAEP support for OpenSSL PMD
app/test: add RSA OAEP asymmetric test cases
crypto/openssl: add RSA-PSS support for RSA operations
app/test: add RSA-PSS sign and verify test cases
app/test/test_cryptodev_asym.c | 663 ++++++++++++++++++
app/test/test_cryptodev_rsa_test_vectors.h | 317 +++++++++
.../crypto/cnxk/cnxk_cryptodev_capabilities.c | 8 +-
.../octeontx/otx_cryptodev_capabilities.c | 8 +-
drivers/crypto/openssl/openssl_pmd_private.h | 11 +
drivers/crypto/openssl/rte_openssl_pmd.c | 367 ++++++++--
drivers/crypto/openssl/rte_openssl_pmd_ops.c | 147 +++-
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 +-
.../virtio/virtio_crypto_capabilities.h | 19 +-
lib/cryptodev/rte_crypto_asym.h | 18 +
lib/cryptodev/rte_cryptodev.h | 50 +-
13 files changed, 1567 insertions(+), 71 deletions(-)
--
2.54.0
More information about the dev
mailing list