Hi Arek, Are you planning for a formal patch for adding asym capabilities?
> This commit adds basic structs to handle asymmetric crypto capability. > > Signed-off-by: Arek Kusztal <arkadiuszx.kusz...@intel.com> > --- > lib/cryptodev/rte_crypto_asym.h | 47 +++++++++++++++++++++++++++++++++ > lib/cryptodev/rte_cryptodev.h | 8 ++++++ > 2 files changed, 55 insertions(+) > > diff --git a/lib/cryptodev/rte_crypto_asym.h b/lib/cryptodev/rte_crypto_asym.h > index cd24d4b07b..2d58fffee5 100644 > --- a/lib/cryptodev/rte_crypto_asym.h > +++ b/lib/cryptodev/rte_crypto_asym.h > @@ -386,6 +386,26 @@ struct rte_crypto_rsa_op_param { > */ > }; > > +struct rte_crypto_rsa_capability { > + uint64_t padding_type; > + /* Supported padding */ > + union { > + uint64_t hash; > + /* Supported hash functions, at least one > + * shall be supported */ > + uint64_t mgf; > + /* Supported masdk generation functions, > + * at least one shall be supported */ > + } padding; > + uint32_t max_key_len; > + /* Maximum supported key length */ > + uint8_t sign_message; > + /* If zero input should contain message digest, > + * otherwise it should be plain message */ > + uint8_t pkcs_plain_padding; > + /* PKCS1_5 padding without algorithm identifier */ > +}; > + > /** > * Diffie-Hellman Operations params. > * @note: > @@ -416,6 +436,19 @@ struct rte_crypto_dh_op_param { > */ > }; > > +struct rte_crypto_dh_capability { > + union { > + uint32_t group_size; > + /**< Maximum size of underliying mod group */ > + uint64_t curves; > + /**< Supported elliptic curve ids */ > + /* uint64_t fixed_groups; ? */ > + /**< Supported fixed groups */ > + /* uint8_t custom_curves; ? */ > + /**< Supported custom curves */ > + }; > +}; > + > /** > * DSA Operations params > * > @@ -484,6 +517,13 @@ struct rte_crypto_ecdsa_op_param { > */ > }; > > +struct rte_crypto_ecdsa_capability { > + uint64_t curves; > + /**< Supported elliptic curve ids */ > + /* uint8_t custom_curves; ? */ > + /**< Supported custom curves */ > +}; > + > /** > * Structure for EC point multiplication operation param > */ > @@ -498,6 +538,13 @@ struct rte_crypto_ecpm_op_param { > /**< Scalar to multiply the input point */ > }; > > +struct rte_crypto_ecpm_capability { > + uint64_t curves; > + /**< Supported elliptic curve ids */ > + /* uint8_t custom_curves; ? */ > + /**< Supported custom curves */ > +}; > + > /** > * Asymmetric crypto transform data > * > diff --git a/lib/cryptodev/rte_cryptodev.h b/lib/cryptodev/rte_cryptodev.h > index 45d33f4a50..79026dbb80 100644 > --- a/lib/cryptodev/rte_cryptodev.h > +++ b/lib/cryptodev/rte_cryptodev.h > @@ -176,6 +176,14 @@ struct rte_cryptodev_asymmetric_xform_capability { > /**< Range of modulus length supported by modulus based > xform. > * Value 0 mean implementation default > */ > + struct rte_crypto_ecdsa_capability ecdsa; > + /**< ECDSA capability */ > + struct rte_crypto_ecpm_capability ecpm; > + /**< ECPM capability */ > + struct rte_crypto_rsa_capability rsa; > + /**< RSA capability */ > + struct rte_crypto_dh_capability dh; > + /**< DH capability */ > }; > }; > > -- > 2.30.2