Skip to content

Commit

Permalink
crypto/ipsec_mb: fix GMAC parameters setting
Browse files Browse the repository at this point in the history
AES-GMAC requires plaintext length to be 0 when using AES-GCM,
so only AAD data is used.

Fixes: a501609 ("crypto/ipsec_mb: fix length and offset settings")
Cc: stable@dpdk.org

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Radu Nicolau <radu.nicolau@intel.com>
Tested-by: Radu Nicolau <radu.nicolau@intel.com>
  • Loading branch information
pablodelara authored and tmonjalo committed Mar 14, 2022
1 parent 6dd3286 commit 837269c
Showing 1 changed file with 13 additions and 3 deletions.
16 changes: 13 additions & 3 deletions drivers/crypto/ipsec_mb/pmd_aesni_mb.c
Original file line number Diff line number Diff line change
Expand Up @@ -1296,9 +1296,9 @@ set_mb_job_params(IMB_JOB *job, struct ipsec_mb_qp *qp,
op->sym->aead.data.offset;
job->msg_len_to_hash_in_bytes =
op->sym->aead.data.length;
} else {
job->msg_len_to_cipher_in_bytes = 0;
} else { /* AES-GMAC only, only AAD used */
job->msg_len_to_hash_in_bytes = 0;
job->hash_start_src_offset_in_bytes = 0;
}

job->iv = rte_crypto_op_ctod_offset(op, uint8_t *,
Expand Down Expand Up @@ -1378,8 +1378,18 @@ set_mb_job_params(IMB_JOB *job, struct ipsec_mb_qp *qp,
job->msg_len_to_cipher_in_bits =
op->sym->cipher.data.length;
break;
case IMB_CIPHER_CCM:
case IMB_CIPHER_GCM:
if (session->cipher.mode == IMB_CIPHER_NULL) {
/* AES-GMAC only (only AAD used) */
job->msg_len_to_cipher_in_bytes = 0;
job->cipher_start_src_offset_in_bytes = 0;
} else {
job->cipher_start_src_offset_in_bytes =
op->sym->aead.data.offset;
job->msg_len_to_cipher_in_bytes = op->sym->aead.data.length;
}
break;
case IMB_CIPHER_CCM:
case IMB_CIPHER_CHACHA20_POLY1305:
job->cipher_start_src_offset_in_bytes =
op->sym->aead.data.offset;
Expand Down

0 comments on commit 837269c

Please sign in to comment.