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