cryptodev: add chacha20-poly1305 aead algorithm
diff mbox series

Message ID 20191129065746.12756-1-arkadiuszx.kusztal@intel.com
State Superseded
Delegated to: akhil goyal
Headers show
Series
  • cryptodev: add chacha20-poly1305 aead algorithm
Related show

Checks

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

Commit Message

Kusztal, ArkadiuszX 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

Trahe, Fiona 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 mbox series

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 */