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 <ktejas...@marvell.com> --- app/test-crypto-perf/cperf_ops.c | 4 +++ app/test-crypto-perf/cperf_options_parsing.c | 30 ++++++++++++++------ 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/app/test-crypto-perf/cperf_ops.c b/app/test-crypto-perf/cperf_ops.c index cbefce8d6c..93d2744c68 100644 --- a/app/test-crypto-perf/cperf_ops.c +++ b/app/test-crypto-perf/cperf_ops.c @@ -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) diff --git a/app/test-crypto-perf/cperf_options_parsing.c b/app/test-crypto-perf/cperf_options_parsing.c index 09c98121c8..566255bf2d 100644 --- a/app/test-crypto-perf/cperf_options_parsing.c +++ b/app/test-crypto-perf/cperf_options_parsing.c @@ -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 || -- 2.27.0