> -----Original Message-----
> From: Shally Verma [mailto:shally.ve...@caviumnetworks.com]
> Sent: Wednesday, May 16, 2018 7:05 AM
> To: De Lara Guarch, Pablo <pablo.de.lara.gua...@intel.com>
> Cc: Trahe, Fiona <fiona.tr...@intel.com>; akhil.go...@nxp.com;
> dev@dpdk.org; pathr...@caviumnetworks.com; Sunila Sahu
> <sunila.s...@caviumnetworks.com>; Ashish Gupta
> <ashish.gu...@caviumnetworks.com>
> Subject: [PATCH v3 5/6] crypto/openssl: add asym crypto support
>
> Add asymmetric crypto operation support in openssl PMD.
> Current list of supported asym xforms:
> * RSA
> * DSA
> * Deffie-hellman
> * Modular Operations
>
> changes from v2:
> - Update the pmd capability as per new capability structure
>
> changes from v1:
> - resolve new line error in dod/guides/cryptodevs/openssl.rst
>
> Signed-off-by: Shally Verma <shally.ve...@caviumnetworks.com>
> Signed-off-by: Sunila Sahu <sunila.s...@caviumnetworks.com>
> Signed-off-by: Ashish Gupta <ashish.gu...@caviumnetworks.com>
> ---
> doc/guides/cryptodevs/features/openssl.ini | 11 +
> doc/guides/cryptodevs/openssl.rst | 1 +
> drivers/crypto/openssl/rte_openssl_pmd.c | 377 ++++++++++++++++++++-
> drivers/crypto/openssl/rte_openssl_pmd_ops.c | 395
> ++++++++++++++++++++++-
> drivers/crypto/openssl/rte_openssl_pmd_private.h | 29 ++
> 5 files changed, 801 insertions(+), 12 deletions(-)
>
> diff --git a/doc/guides/cryptodevs/features/openssl.ini
> b/doc/guides/cryptodevs/features/openssl.ini
> index 691565865..bef5c7f79 100644
> --- a/doc/guides/cryptodevs/features/openssl.ini
> +++ b/doc/guides/cryptodevs/features/openssl.ini
> @@ -7,6 +7,7 @@
> Symmetric crypto = Y
> Sym operation chaining = Y
> Mbuf scatter gather = Y
> +Asymmetric crypto = Y
>
> ;
> ; Supported crypto algorithms of the 'openssl' crypto driver.
> @@ -49,3 +50,13 @@ AES GCM (256) = Y
> AES CCM (128) = Y
> AES CCM (192) = Y
> AES CCM (256) = Y
> +
> +;
> +; Supported Asymmetric algorithms of the 'openssl' crypto driver.
> +;
> +[Asymmetric]
> +RSA = Y
> +DSA = Y
> +Modular Exponentiation = Y
> +Modular Inversion = Y
> +Deffie-hellman = Y
You need to add these parameters in default.ini file,
otherwise they are not shown when building the documentation.
> diff --git a/doc/guides/cryptodevs/openssl.rst
> b/doc/guides/cryptodevs/openssl.rst
> index 427fc807c..4f90be888 100644
> --- a/doc/guides/cryptodevs/openssl.rst
> +++ b/doc/guides/cryptodevs/openssl.rst
> @@ -80,6 +80,7 @@ crypto processing.
>
> Test name is cryptodev_openssl_autotest.
> For performance test cryptodev_openssl_perftest can be used.
> +For asymmetric crypto operations testing, run
> +cryptodev_openssl_asym_autotest
>
> To verify real traffic l2fwd-crypto example can be used with this command:
>
> diff --git a/drivers/crypto/openssl/rte_openssl_pmd.c
> b/drivers/crypto/openssl/rte_openssl_pmd.c
> index f584d0d6f..527e42773 100644
> --- a/drivers/crypto/openssl/rte_openssl_pmd.c
> +++ b/drivers/crypto/openssl/rte_openssl_pmd.c
...
> + }
> + dh_key->priv_key = BN_bin2bn(op->priv_key.data,
> + op->priv_key.length,
> + dh_key->priv_key);
As on the previous patch, I am getting a compilation issue:
drivers/crypto/openssl/rte_openssl_pmd.c:1711:9: error:
dereferencing pointer to incomplete type 'DH {aka struct dh_st}'
dh_key->priv_key = BN_bin2bn(op->priv_key.data,
...
> diff --git a/drivers/crypto/openssl/rte_openssl_pmd_ops.c
> b/drivers/crypto/openssl/rte_openssl_pmd_ops.c
> index 1cb87d59a..76f7410cb 100644
> --- a/drivers/crypto/openssl/rte_openssl_pmd_ops.c
> +++ b/drivers/crypto/openssl/rte_openssl_pmd_ops.c
...
> struct rte_cryptodev_ops openssl_pmd_ops = {
> .dev_configure = openssl_pmd_config,
> .dev_start = openssl_pmd_start,
> @@ -750,8 +1138,11 @@ struct rte_cryptodev_ops openssl_pmd_ops = {
> .queue_pair_count = openssl_pmd_qp_count,
>
> .session_get_size = openssl_pmd_session_get_size,
> + .asym_session_get_size =
> openssl_pmd_asym_session_get_size,
> .session_configure = openssl_pmd_session_configure,
> - .session_clear = openssl_pmd_session_clear
> + .asym_session_configure =
> openssl_pmd_asym_session_configure,
> + .session_clear = openssl_pmd_session_clear,
> + .asym_session_clear = openssl_pmd_asym_session_clear
> };
I think session_get_size, session_configure and session_clear should be renamed
to sym_session_*, to avoid confusion. Could you add another patch renaming
these?
Thanks,
Pablo