app/crypto-perf: allow auth generate followed by encryption

Allowing auth generation followed by encryption mode.
--optype auth-then-cipher can take cipher-op as encrypt
and auth-op as generate now.

Signed-off-by: Tejasree Kondoj <ktejasree@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
This commit is contained in:
Tejasree Kondoj 2022-05-10 18:10:45 +05:30 committed by Akhil Goyal
parent ead7d1911d
commit 9f3677d6ab
2 changed files with 26 additions and 8 deletions

View File

@ -458,6 +458,10 @@ cperf_set_ops_cipher_auth(struct rte_crypto_op **ops,
} else
sym_op->cipher.data.length = options->test_buffer_size;
if ((options->auth_op == RTE_CRYPTO_AUTH_OP_GENERATE) &&
(options->op_type == CPERF_AUTH_THEN_CIPHER))
sym_op->cipher.data.length += options->digest_sz;
if (options->cipher_algo == RTE_CRYPTO_CIPHER_SNOW3G_UEA2 ||
options->cipher_algo == RTE_CRYPTO_CIPHER_KASUMI_F8 ||
options->cipher_algo == RTE_CRYPTO_CIPHER_ZUC_EEA3)

View File

@ -1130,6 +1130,20 @@ check_docsis_buffer_length(struct cperf_options *options)
}
#endif
static bool
is_valid_chained_op(struct cperf_options *options)
{
if (options->cipher_op == RTE_CRYPTO_CIPHER_OP_ENCRYPT &&
options->auth_op == RTE_CRYPTO_AUTH_OP_GENERATE)
return true;
if (options->cipher_op == RTE_CRYPTO_CIPHER_OP_DECRYPT &&
options->auth_op == RTE_CRYPTO_AUTH_OP_VERIFY)
return true;
return false;
}
int
cperf_options_check(struct cperf_options *options)
{
@ -1236,6 +1250,14 @@ cperf_options_check(struct cperf_options *options)
return -EINVAL;
}
if (options->op_type == CPERF_CIPHER_THEN_AUTH ||
options->op_type == CPERF_AUTH_THEN_CIPHER) {
if (!is_valid_chained_op(options)) {
RTE_LOG(ERR, USER1, "Invalid chained operation.\n");
return -EINVAL;
}
}
if (options->op_type == CPERF_CIPHER_THEN_AUTH) {
if (options->cipher_op != RTE_CRYPTO_CIPHER_OP_ENCRYPT &&
options->auth_op !=
@ -1244,14 +1266,6 @@ cperf_options_check(struct cperf_options *options)
" options: encrypt and generate.\n");
return -EINVAL;
}
} else if (options->op_type == CPERF_AUTH_THEN_CIPHER) {
if (options->cipher_op != RTE_CRYPTO_CIPHER_OP_DECRYPT &&
options->auth_op !=
RTE_CRYPTO_AUTH_OP_VERIFY) {
RTE_LOG(ERR, USER1, "Option auth then cipher must use"
" options: decrypt and verify.\n");
return -EINVAL;
}
}
if (options->op_type == CPERF_CIPHER_ONLY ||