From: Dana Vardi <da...@marvell.com>

For AEAD session and AES-GCM mode, IV offset will
set to include the Nonce.
In addition, the following operations order will define:
first encryption and then authentication.

Fixes: 8a61c83af2fa ("crypto/mrvl: add mrvl crypto driver")
Cc: sta...@dpdk.org

Signed-off-by: Dana Vardi <da...@marvell.com>
Reviewed-by: Liron Himi <lir...@marvell.com>
Tested-by: Liron Himi <lir...@marvell.com>
---
 drivers/crypto/mvsam/rte_mrvl_pmd.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/crypto/mvsam/rte_mrvl_pmd.c 
b/drivers/crypto/mvsam/rte_mrvl_pmd.c
index 9054210ce..d8e07e9c1 100644
--- a/drivers/crypto/mvsam/rte_mrvl_pmd.c
+++ b/drivers/crypto/mvsam/rte_mrvl_pmd.c
@@ -361,6 +361,14 @@ mrvl_crypto_set_aead_session_parameters(struct 
mrvl_crypto_session *sess,
        sess->sam_sess_params.cipher_mode =
                aead_map[aead_xform->aead.algo].cipher_mode;
 
+       if (sess->sam_sess_params.cipher_mode == SAM_CIPHER_GCM) {
+               /* IV must include nonce for all counter modes */
+               sess->cipher_iv_offset = aead_xform->cipher.iv.offset;
+
+               /* Set order of authentication then encryption to 0 in GCM */
+               sess->sam_sess_params.u.basic.auth_then_encrypt = 0;
+       }
+
        /* Assume IV will be passed together with data. */
        sess->sam_sess_params.cipher_iv = NULL;
 
-- 
2.17.1

Reply via email to