> - Added elliptic curve Diffie-Hellman parameters. > Point multiplication allows the user to process every phase of > ECDH, but for phase 1, user should not really care about the generator. > The user does not even need to know what the generator looks like, > therefore setting ec xform would make this work. > > Signed-off-by: Arek Kusztal <arkadiuszx.kusz...@intel.com> > --- > lib/cryptodev/rte_crypto_asym.h | 38 > ++++++++++++++++++++++++++++++++++++++ > 1 file changed, 38 insertions(+) > > diff --git a/lib/cryptodev/rte_crypto_asym.h b/lib/cryptodev/rte_crypto_asym.h > index ffb0e8ed17..0dab7c0593 100644 > --- a/lib/cryptodev/rte_crypto_asym.h > +++ b/lib/cryptodev/rte_crypto_asym.h > @@ -112,6 +112,8 @@ enum rte_crypto_asym_xform_type { > /**< Elliptic Curve Digital Signature Algorithm */ > RTE_CRYPTO_ASYM_XFORM_ECPM, > /**< Elliptic Curve Point Multiplication */ > + RTE_CRYPTO_ASYM_XFORM_ECDH, > + /**< Elliptic Curve Diffie Hellman */ > RTE_CRYPTO_ASYM_XFORM_TYPE_LIST_END > /**< End of list */ > }; > @@ -407,6 +409,42 @@ struct rte_crypto_dh_op_param { > }; > > /** > + * Elliptic Curve Diffie-Hellman Operations params. > + * @note:
Note missing? > + */ > +struct rte_crypto_ecdh_op_param { > + enum rte_crypto_asym_ke_type op_type; > + /**< Key exchange operation type */ > + rte_crypto_uint priv_key; > + /**< > + * Output - generated private key, when xform type is > + * RTE_CRYPTO_ASYM_KE_PRIVATE_KEY_GENERATE. > + * > + * Input - private key, when xform type is one of: > + * RTE_CRYPTO_ASYM_KE_PUBLIC_KEY_GENERATE, > + * RTE_CRYPTO_ASYM_KE_SHARED_SECRET_COMPUTE. > + * > + * In case priv_key.length is 0 and xform type is set with > + * RTE_CRYPTO_ASYM_KE_PUBLIC_KEY_GENERATE, CSRNG capable > + * device will generate private key and use it for public > + * key generation. > + */ You added the above CSRNG thing in pub key for DH and here in priv key? > + struct rte_crypto_ec_point pub_key; > + /**< > + * Output - generated public key, when xform type is > + * RTE_CRYPTO_ASYM_KE_PUBLIC_KEY_GENERATE. > + * > + * Input - peer's public key, when xform type is > + * RTE_CRYPTO_ASYM_KE_SHARED_SECRET_COMPUTE. Shouldn't this be for both RTE_CRYPTO_ASYM_KE_PUBLIC_KEY_GENERATE and RTE_CRYPTO_ASYM_KE_SHARED_SECRET_COMPUTE > + */ > + struct rte_crypto_ec_point shared_secret; > + /**< > + * Output - calculated shared secret when xform type is > + * RTE_CRYPTO_ASYM_KE_SHARED_SECRET_COMPUTE. > + */ > +}; > + > +/** > * DSA Operations params > * > */ > -- > 2.13.6