diff options
author | Gabriel Oginski <gabrielx.oginski@intel.com> | 2021-11-25 08:21:41 +0000 |
---|---|---|
committer | Fan Zhang <roy.fan.zhang@intel.com> | 2022-01-24 11:01:51 +0000 |
commit | 4634d02501235d3803a17839eeaf076110abcb18 (patch) | |
tree | 6ff75f5f965ba0274e9409efcbaefced47d46438 /src/plugins/dpdk/cryptodev/cryptodev_raw_data_path.c | |
parent | afe31562a1ed873bee8e1abb3b18df27d1a09ba3 (diff) |
dpdk-cryptodev: add support chacha20-poly1305
Originally cryptodev doesn't support chacha20-poly1305 with aad length
0.
This patch add support in cryptodev for chacha20-poly1305 with aad
length 0. This length is using in Wireguard.
Type: improvement
Signed-off-by: Gabriel Oginski <gabrielx.oginski@intel.com>
Change-Id: I0608920bb557d7d071e7f9f37c80cf50bad81dcc
Diffstat (limited to 'src/plugins/dpdk/cryptodev/cryptodev_raw_data_path.c')
-rw-r--r-- | src/plugins/dpdk/cryptodev/cryptodev_raw_data_path.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/plugins/dpdk/cryptodev/cryptodev_raw_data_path.c b/src/plugins/dpdk/cryptodev/cryptodev_raw_data_path.c index a7743133247..c096e34fba4 100644 --- a/src/plugins/dpdk/cryptodev/cryptodev_raw_data_path.c +++ b/src/plugins/dpdk/cryptodev/cryptodev_raw_data_path.c @@ -349,7 +349,7 @@ cryptodev_raw_aead_enqueue (vlib_main_t *vm, vnet_crypto_async_frame_t *frame, if (aad_len == 8) *(u64 *) (cet->aad_buf + aad_offset) = *(u64 *) fe->aad; - else + else if (aad_len != 0) { /* aad_len == 12 */ *(u64 *) (cet->aad_buf + aad_offset) = *(u64 *) fe->aad; @@ -592,6 +592,13 @@ end_deq: } static_always_inline int +cryptodev_raw_enq_aead_aad_0_enc (vlib_main_t *vm, + vnet_crypto_async_frame_t *frame) +{ + return cryptodev_raw_aead_enqueue (vm, frame, CRYPTODEV_OP_TYPE_ENCRYPT, 0); +} + +static_always_inline int cryptodev_raw_enq_aead_aad_8_enc (vlib_main_t *vm, vnet_crypto_async_frame_t *frame) { @@ -605,6 +612,13 @@ cryptodev_raw_enq_aead_aad_12_enc (vlib_main_t *vm, } static_always_inline int +cryptodev_raw_enq_aead_aad_0_dec (vlib_main_t *vm, + vnet_crypto_async_frame_t *frame) +{ + return cryptodev_raw_aead_enqueue (vm, frame, CRYPTODEV_OP_TYPE_DECRYPT, 0); +} + +static_always_inline int cryptodev_raw_enq_aead_aad_8_dec (vlib_main_t *vm, vnet_crypto_async_frame_t *frame) { |