cryptodev: add chacha20-poly1305 aead algorithm

Message ID 20191129065746.12756-1-arkadiuszx.kusztal@intel.com (mailing list archive)
State Superseded, archived
Delegated to: akhil goyal
Headers
Series cryptodev: add chacha20-poly1305 aead algorithm |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/travis-robot success Travis build: passed
ci/iol-compilation success Compile Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-intel-Performance success Performance Testing PASS

Commit Message

Arkadiusz Kusztal Nov. 29, 2019, 6:57 a.m. UTC
  This patch adds Chacha20-Poly1305 AEAD algorithm to Cryptodev.

Signed-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
---
 doc/guides/cryptodevs/features/default.ini | 13 +++++++------
 doc/guides/rel_notes/release_19_11.rst     |  4 ++++
 lib/librte_cryptodev/rte_crypto_sym.h      |  9 +++++++++
 3 files changed, 20 insertions(+), 6 deletions(-)
  

Comments

Fiona Trahe Nov. 29, 2019, 11:02 a.m. UTC | #1
Hi Akhil, 
doc question below

> -----Original Message-----
> From: Kusztal, ArkadiuszX <arkadiuszx.kusztal@intel.com>
> Sent: Friday, November 29, 2019 6:58 AM
> To: dev@dpdk.org
> Cc: akhil.goyal@nxp.com; Trahe, Fiona <fiona.trahe@intel.com>; Kusztal, ArkadiuszX
> <arkadiuszx.kusztal@intel.com>
> Subject: [PATCH] cryptodev: add chacha20-poly1305 aead algorithm
> 
> This patch adds Chacha20-Poly1305 AEAD algorithm to Cryptodev.
> 
> Signed-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
> ---
>  doc/guides/cryptodevs/features/default.ini | 13 +++++++------
>  doc/guides/rel_notes/release_19_11.rst     |  4 ++++
>  lib/librte_cryptodev/rte_crypto_sym.h      |  9 +++++++++
>  3 files changed, 20 insertions(+), 6 deletions(-)
> 
> diff --git a/doc/guides/cryptodevs/features/default.ini b/doc/guides/cryptodevs/features/default.ini
> index b7f9a0a..2a3ff48 100644
> --- a/doc/guides/cryptodevs/features/default.ini
> +++ b/doc/guides/cryptodevs/features/default.ini
> @@ -93,12 +93,13 @@ SHA3_512 HMAC   =
>  ; Supported AEAD algorithms of a default crypto driver.
>  ;
>  [AEAD]
> -AES GCM (128) =
> -AES GCM (192) =
> -AES GCM (256) =
> -AES CCM (128) =
> -AES CCM (192) =
> -AES CCM (256) =
> +AES GCM (128)     =
> +AES GCM (192)     =
> +AES GCM (256)     =
> +AES CCM (128)     =
> +AES CCM (192)     =
> +AES CCM (256)     =
> +CHACHA20-POLY1305 =
>  ;
>  ; Supported Asymmetric algorithms of a default crypto driver.
>  ;
> diff --git a/doc/guides/rel_notes/release_19_11.rst b/doc/guides/rel_notes/release_19_11.rst
> index 48c80e5..d07a396 100644
> --- a/doc/guides/rel_notes/release_19_11.rst
> +++ b/doc/guides/rel_notes/release_19_11.rst
> @@ -315,6 +315,10 @@ New Features
>      "--iova-mode=pa" option can be used, IOVA_DC bus iommu scheme can also
>      result in IOVA as PA.
> 
> +* **Added Chacha20-Poly1305 algorithm to Cryptodev API.**
> +
> +  Chacha20-Poly1305 AEAD algorithm can now be supported in Cryptodev.
> +
[Fiona] This is targeting 20.02 but there's no release note file available yet, so temporarily putting in the 19.11 file.
In future can we get the release note file created earlier in the cycle? Maybe after the rc2 of previous release?
This would enable earlier pushing of patches and avoid respins

> 
>  Removed Items
>  -------------
> diff --git a/lib/librte_cryptodev/rte_crypto_sym.h b/lib/librte_cryptodev/rte_crypto_sym.h
> index ffa038d..bc356f6 100644
> --- a/lib/librte_cryptodev/rte_crypto_sym.h
> +++ b/lib/librte_cryptodev/rte_crypto_sym.h
> @@ -348,6 +348,8 @@ enum rte_crypto_aead_algorithm {
>  	/**< AES algorithm in CCM mode. */
>  	RTE_CRYPTO_AEAD_AES_GCM,
>  	/**< AES algorithm in GCM mode. */
> +	RTE_CRYPTO_AEAD_CHACHA20_POLY1305,
> +	/**< Chacha20 cipher with poly1305 authenticator */
>  	RTE_CRYPTO_AEAD_LIST_END
>  };
> 
> @@ -391,6 +393,11 @@ struct rte_crypto_aead_xform {
>  		 * be allocated, even though the length field will
>  		 * have a value less than this.
>  		 *
> +		 * - For Chacha20-Poly1305 it is 96-bit nonce.
> +		 * PMD sets initial counter for Poly1305 key generation
> +		 * part to 0 and for Chacha20 encryption to 1 as per
> +		 * rfc8439 2.8. AEAD construction.
> +		 *
>  		 * For optimum performance, the data pointed to SHOULD
>  		 * be 8-byte aligned.
>  		 */
> @@ -407,6 +414,8 @@ struct rte_crypto_aead_xform {
>  		 *
>  		 * - For CCM mode, this is the length of the nonce,
>  		 * which can be in the range 7 to 13 inclusive.
> +		 *
> +		 * - For Chacha20-Poly1305 this field is always 12.
>  		 */
>  	} iv;	/**< Initialisation vector parameters */
> 
> --
> 2.1.0
[Fiona] Apart from doc comment above
Acked-by: <fiona.trahe@intel.com>
  

Patch

diff --git a/doc/guides/cryptodevs/features/default.ini b/doc/guides/cryptodevs/features/default.ini
index b7f9a0a..2a3ff48 100644
--- a/doc/guides/cryptodevs/features/default.ini
+++ b/doc/guides/cryptodevs/features/default.ini
@@ -93,12 +93,13 @@  SHA3_512 HMAC   =
 ; Supported AEAD algorithms of a default crypto driver.
 ;
 [AEAD]
-AES GCM (128) =
-AES GCM (192) =
-AES GCM (256) =
-AES CCM (128) =
-AES CCM (192) =
-AES CCM (256) =
+AES GCM (128)     =
+AES GCM (192)     =
+AES GCM (256)     =
+AES CCM (128)     =
+AES CCM (192)     =
+AES CCM (256)     =
+CHACHA20-POLY1305 =
 ;
 ; Supported Asymmetric algorithms of a default crypto driver.
 ;
diff --git a/doc/guides/rel_notes/release_19_11.rst b/doc/guides/rel_notes/release_19_11.rst
index 48c80e5..d07a396 100644
--- a/doc/guides/rel_notes/release_19_11.rst
+++ b/doc/guides/rel_notes/release_19_11.rst
@@ -315,6 +315,10 @@  New Features
     "--iova-mode=pa" option can be used, IOVA_DC bus iommu scheme can also
     result in IOVA as PA.
 
+* **Added Chacha20-Poly1305 algorithm to Cryptodev API.**
+
+  Chacha20-Poly1305 AEAD algorithm can now be supported in Cryptodev.
+
 
 Removed Items
 -------------
diff --git a/lib/librte_cryptodev/rte_crypto_sym.h b/lib/librte_cryptodev/rte_crypto_sym.h
index ffa038d..bc356f6 100644
--- a/lib/librte_cryptodev/rte_crypto_sym.h
+++ b/lib/librte_cryptodev/rte_crypto_sym.h
@@ -348,6 +348,8 @@  enum rte_crypto_aead_algorithm {
 	/**< AES algorithm in CCM mode. */
 	RTE_CRYPTO_AEAD_AES_GCM,
 	/**< AES algorithm in GCM mode. */
+	RTE_CRYPTO_AEAD_CHACHA20_POLY1305,
+	/**< Chacha20 cipher with poly1305 authenticator */
 	RTE_CRYPTO_AEAD_LIST_END
 };
 
@@ -391,6 +393,11 @@  struct rte_crypto_aead_xform {
 		 * be allocated, even though the length field will
 		 * have a value less than this.
 		 *
+		 * - For Chacha20-Poly1305 it is 96-bit nonce.
+		 * PMD sets initial counter for Poly1305 key generation
+		 * part to 0 and for Chacha20 encryption to 1 as per
+		 * rfc8439 2.8. AEAD construction.
+		 *
 		 * For optimum performance, the data pointed to SHOULD
 		 * be 8-byte aligned.
 		 */
@@ -407,6 +414,8 @@  struct rte_crypto_aead_xform {
 		 *
 		 * - For CCM mode, this is the length of the nonce,
 		 * which can be in the range 7 to 13 inclusive.
+		 *
+		 * - For Chacha20-Poly1305 this field is always 12.
 		 */
 	} iv;	/**< Initialisation vector parameters */