[EXT] [PATCH v2 07/14] cryptodev: add elliptic curve diffie hellman

Akhil Goyal gakhil at marvell.com
Thu May 26 13:29:10 CEST 2022


> - 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.kusztal at 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



More information about the dev mailing list