Skip to content

Commit

Permalink
app/crypto-perf: fix encrypt operation verification
Browse files Browse the repository at this point in the history
[ upstream commit 7d55ca15124c47561120d23d5023843ad99c1a81 ]

AEAD uses RTE_CRYPTO_AEAD_OP_* with aead_op and CIPHER uses
RTE_CRYPTO_CIPHER_OP_* with cipher_op in current code.

This commit aligns aead_op and cipher_op operation to fix
incorrect AEAD verification.

Fixes: df52cb3 ("app/crypto-perf: move verify as single test type")

Signed-off-by: Suanming Mou <suanmingm@nvidia.com>
Acked-by: Anoob Joseph <anoobj@marvell.com>
  • Loading branch information
smou-mlnx authored and bluca committed Mar 7, 2024
1 parent 642af46 commit 7c0e5bd
Showing 1 changed file with 27 additions and 28 deletions.
55 changes: 27 additions & 28 deletions app/test-crypto-perf/cperf_test_verify.c
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,10 @@ cperf_verify_op(struct rte_crypto_op *op,
uint32_t len;
uint16_t nb_segs;
uint8_t *data;
uint32_t cipher_offset, auth_offset;
uint8_t cipher, auth;
uint32_t cipher_offset, auth_offset = 0;
bool cipher = false;
bool digest_verify = false;
bool is_encrypt = false;
int res = 0;

if (op->status != RTE_CRYPTO_OP_STATUS_SUCCESS)
Expand Down Expand Up @@ -150,42 +152,43 @@ cperf_verify_op(struct rte_crypto_op *op,

switch (options->op_type) {
case CPERF_CIPHER_ONLY:
cipher = 1;
cipher = true;
cipher_offset = 0;
auth = 0;
auth_offset = 0;
break;
case CPERF_CIPHER_THEN_AUTH:
cipher = 1;
cipher_offset = 0;
auth = 1;
auth_offset = options->test_buffer_size;
is_encrypt = options->cipher_op == RTE_CRYPTO_CIPHER_OP_ENCRYPT;
break;
case CPERF_AUTH_ONLY:
cipher = 0;
cipher_offset = 0;
auth = 1;
auth_offset = options->test_buffer_size;
if (options->auth_op == RTE_CRYPTO_AUTH_OP_GENERATE) {
auth_offset = options->test_buffer_size;
digest_verify = true;
}
break;
case CPERF_CIPHER_THEN_AUTH:
case CPERF_AUTH_THEN_CIPHER:
cipher = 1;
cipher = true;
cipher_offset = 0;
auth = 1;
auth_offset = options->test_buffer_size;
if (options->cipher_op == RTE_CRYPTO_CIPHER_OP_ENCRYPT) {
auth_offset = options->test_buffer_size;
digest_verify = true;
is_encrypt = true;
}
break;
case CPERF_AEAD:
cipher = 1;
cipher = true;
cipher_offset = 0;
auth = 1;
auth_offset = options->test_buffer_size;
if (options->aead_op == RTE_CRYPTO_AEAD_OP_ENCRYPT) {
auth_offset = options->test_buffer_size;
digest_verify = true;
is_encrypt = true;
}
break;
default:
res = 1;
goto out;
}

if (cipher == 1) {
if (options->cipher_op == RTE_CRYPTO_CIPHER_OP_ENCRYPT)
if (cipher) {
if (is_encrypt)
res += !!memcmp(data + cipher_offset,
vector->ciphertext.data,
options->test_buffer_size);
Expand All @@ -195,12 +198,8 @@ cperf_verify_op(struct rte_crypto_op *op,
options->test_buffer_size);
}

if (auth == 1) {
if (options->auth_op == RTE_CRYPTO_AUTH_OP_GENERATE)
res += !!memcmp(data + auth_offset,
vector->digest.data,
options->digest_sz);
}
if (digest_verify)
res += !!memcmp(data + auth_offset, vector->digest.data, options->digest_sz);

out:
rte_free(data);
Expand Down

0 comments on commit 7c0e5bd

Please sign in to comment.