From patchwork Sun Jun 16 04:42:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gowrishankar Muthukrishnan X-Patchwork-Id: 141170 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 938E045475; Sun, 16 Jun 2024 06:42:39 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 93DAB40608; Sun, 16 Jun 2024 06:42:39 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 094E240430; Sun, 16 Jun 2024 06:42:37 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 45G40L8K015184; Sat, 15 Jun 2024 21:42:36 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pfpt0220; bh=N qMG/aeS7ClOJkUjq2ojQWEKKGgF083xKcV/3eqbdqE=; b=Zjj8cPZJ8ul8O+UJ+ jiBpaGS23CMzBsnz3zVBuDLH0q8PsL3Dh44wthY7t90sFEB+3vH5gogI+nfI4Vq2 c9JCOCauhO7xGCp0gd5EkMgglO+W5iH1iK1+PBf/SghmDRM2P0FGtGW/aivFXiZl SZnNIPu97fykY97EtVaPuDFMHIQb3qy3pwiFtdnMpGOyzf0oyh8mvGgPeVf4GZjY GPGfPX4I2rVKPmBP+RX0nhWHN4kn6YO4zogZTDFkx2frHnCMl/DEPzWfubRyglXl gOiForUW4bqx+pC3UFwC8JYghT8Gw8B2x0866Jp5syKR06caoQOR6KUzG9DIacCk X+NsQ== Received: from dc5-exch05.marvell.com ([199.233.59.128]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3ysafh1h8w-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 15 Jun 2024 21:42:36 -0700 (PDT) Received: from DC5-EXCH05.marvell.com (10.69.176.209) by DC5-EXCH05.marvell.com (10.69.176.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Sat, 15 Jun 2024 21:42:34 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH05.marvell.com (10.69.176.209) with Microsoft SMTP Server id 15.2.1544.4 via Frontend Transport; Sat, 15 Jun 2024 21:42:34 -0700 Received: from BG-LT91401.marvell.com (unknown [10.193.65.26]) by maili.marvell.com (Postfix) with ESMTP id C7C745B6953; Sat, 15 Jun 2024 21:42:31 -0700 (PDT) From: Gowrishankar Muthukrishnan To: , Akhil Goyal , Fan Zhang , Gowrishankar Muthukrishnan , Arkadiusz Kusztal , Ciara Power CC: Anoob Joseph , Subject: [PATCH v1 1/4] test/crypto: validate modex result from first nonzero value Date: Sun, 16 Jun 2024 10:12:17 +0530 Message-ID: <20240616044223.2841-2-gmuthukrishn@marvell.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20240616044223.2841-1-gmuthukrishn@marvell.com> References: <20240616044223.2841-1-gmuthukrishn@marvell.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: WW4WH3diOxeH-rbo6s2858EzTlkKy_av X-Proofpoint-GUID: WW4WH3diOxeH-rbo6s2858EzTlkKy_av X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-06-16_03,2024-06-14_03,2024-05-17_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org At present, there is no specification of whether modex op output can carry leading zeroes without changing the value. OpenSSL strips leading zeroes, but other hardware need not be. Hence, when output is compared against expected result, validation could start from first non-zero. Fixes: 1ffefe00f1 ("test/crypto: add modexp and modinv functions") Cc: stable@dpdk.org Signed-off-by: Gowrishankar Muthukrishnan --- app/test/test_cryptodev_asym.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asym.c index 17daf734e8..c26be9b2bf 100644 --- a/app/test/test_cryptodev_asym.c +++ b/app/test/test_cryptodev_asym.c @@ -3200,6 +3200,27 @@ static int send_one(void) return TEST_SUCCESS; } +static int +modular_cmpeq(const uint8_t *a, const uint8_t *b, size_t len) +{ + const uint8_t *new_a = a, *new_b = b; + size_t i, j; + + /* Strip leading NUL bytes */ + for (i = 0; i < len; i++) + if (a[i] != 0) + new_a = &a[i]; + + for (j = 0; j < len; j++) + if (b[j] != 0) + new_b = &b[i]; + + if (i != j || memcmp(new_a, new_b, len - i)) + return 1; + + return 0; +} + static int modular_exponentiation(const void *test_data) { @@ -3234,9 +3255,9 @@ modular_exponentiation(const void *test_data) TEST_ASSERT_SUCCESS(send_one(), "Failed to process crypto op"); - TEST_ASSERT_BUFFERS_ARE_EQUAL(vector->reminder.data, + TEST_ASSERT_SUCCESS(modular_cmpeq(vector->reminder.data, self->result_op->asym->modex.result.data, - self->result_op->asym->modex.result.length, + self->result_op->asym->modex.result.length), "operation verification failed\n"); return TEST_SUCCESS; From patchwork Sun Jun 16 04:42:18 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gowrishankar Muthukrishnan X-Patchwork-Id: 141171 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B132945475; Sun, 16 Jun 2024 06:42:46 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1F4DB4064E; Sun, 16 Jun 2024 06:42:43 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 59A2540652 for ; Sun, 16 Jun 2024 06:42:41 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 45G40L8L015184; Sat, 15 Jun 2024 21:42:40 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pfpt0220; bh=m 4FnF0UHLErh79EaB+Q0FV9s2pu7ZT9WyH8ZFQCoqx0=; b=jCztyZ6sxf3g5eK8J VMra+vw5745P0DGmC01k/mI5CWHd5J8GGKisOUhESO3BYpPC77DnSuR8t92WYNzt OgeA28wnCSYZLGy36na9atuGupVkfWdIC/luRL8w1YjyVhGAJJ6I0PD3v5+tz5KK bssWVm3i0n8oAdC7qI3gpY1uE2UuXjEVYFTgo+rkC746W+4BriqSSYeQTdVbkOwM 7QfGZVdEkLdT84C9vxmcEX9kT0zhbcSgBVb5HuInRTv8ncF51/0nZtSEP0u1LOeM qL3zKi9bgb1DzVQC9VcHijW/CfzWet63denifyKjhaANRd8Etsk2rprcCMv8ncFM eAdtQ== Received: from dc6wp-exch02.marvell.com ([4.21.29.225]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3ysafh1h96-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 15 Jun 2024 21:42:40 -0700 (PDT) Received: from DC6WP-EXCH02.marvell.com (10.76.176.209) by DC6WP-EXCH02.marvell.com (10.76.176.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Sat, 15 Jun 2024 21:42:39 -0700 Received: from maili.marvell.com (10.69.176.80) by DC6WP-EXCH02.marvell.com (10.76.176.209) with Microsoft SMTP Server id 15.2.1544.4 via Frontend Transport; Sat, 15 Jun 2024 21:42:39 -0700 Received: from BG-LT91401.marvell.com (unknown [10.193.65.26]) by maili.marvell.com (Postfix) with ESMTP id 8A2C75B6953; Sat, 15 Jun 2024 21:42:37 -0700 (PDT) From: Gowrishankar Muthukrishnan To: , Akhil Goyal , Fan Zhang CC: Anoob Joseph , Gowrishankar Muthukrishnan Subject: [PATCH v1 2/4] test/crypto: remove unused variable in modex test data Date: Sun, 16 Jun 2024 10:12:18 +0530 Message-ID: <20240616044223.2841-3-gmuthukrishn@marvell.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20240616044223.2841-1-gmuthukrishn@marvell.com> References: <20240616044223.2841-1-gmuthukrishn@marvell.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: xZO5Zs2xmtGxzJQiwCuNsGfkzF4FbP3V X-Proofpoint-GUID: xZO5Zs2xmtGxzJQiwCuNsGfkzF4FbP3V X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-06-16_03,2024-06-14_03,2024-05-17_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Remove unused result_len from modex test data. Signed-off-by: Gowrishankar Muthukrishnan --- app/test/test_cryptodev_mod_test_vectors.h | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/app/test/test_cryptodev_mod_test_vectors.h b/app/test/test_cryptodev_mod_test_vectors.h index c773c37018..a4e06c0291 100644 --- a/app/test/test_cryptodev_mod_test_vectors.h +++ b/app/test/test_cryptodev_mod_test_vectors.h @@ -27,7 +27,6 @@ struct modex_test_data { uint8_t data[DATA_SIZE]; uint16_t len; } reminder; - uint16_t result_len; }; struct modinv_test_data { enum rte_crypto_asym_xform_type xform_type; @@ -44,7 +43,6 @@ struct modinv_test_data { uint8_t data[DATA_SIZE]; uint16_t len; } inverse; - uint16_t result_len; }; /* ModExp #1 */ @@ -109,7 +107,6 @@ modex_test_data modex_test_case_m128_b20_e3 = { }, .len = 128 }, - .result_len = 128 }; /* ModInv #1 */ @@ -167,7 +164,6 @@ modinv_test_data modinv_test_case = { }, .len = 128 }, - .result_len = 128 }; /* modular operation test data */ @@ -347,7 +343,6 @@ modex_test_data modex_group_test_cases[] = { }, .len = 192 }, - .result_len = 192 }, { .description = "Modular Exponentiation tests for Group 14", @@ -442,7 +437,6 @@ modex_test_data modex_group_test_cases[] = { }, .len = 256 }, - .result_len = 256 }, { .description = "Modular Exponentiation tests for Group 15", @@ -571,7 +565,6 @@ modex_test_data modex_group_test_cases[] = { }, .len = 384 }, - .result_len = 384 }, { .description = "Modular Exponentiation tests for Group 16", @@ -733,7 +726,6 @@ modex_test_data modex_group_test_cases[] = { }, .len = 512 }, - .result_len = 512 }, { .description = "Modular Exponentiation tests for Group 17", @@ -960,7 +952,6 @@ modex_test_data modex_group_test_cases[] = { }, .len = 768 }, - .result_len = 768 }, { .description = "Modular Exponentiation tests for Group 18", @@ -1252,7 +1243,6 @@ modex_test_data modex_group_test_cases[] = { }, .len = 1024 }, - .result_len = 1024 }, }; From patchwork Sun Jun 16 04:42:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gowrishankar Muthukrishnan X-Patchwork-Id: 141172 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id E2CF145475; Sun, 16 Jun 2024 06:42:52 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7032D40658; Sun, 16 Jun 2024 06:42:49 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id EDFF240657 for ; Sun, 16 Jun 2024 06:42:47 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 45G4ecCG010572; Sat, 15 Jun 2024 21:42:47 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pfpt0220; bh=a Mph3oCBtxyqN/xNGkW3XEBn2jOK51ZwQtxe/u87UXQ=; b=WIIf0ttD94qer8154 sc1ymMtjWajShJQSst3VfDR3luwZzISmOtMDxsk6rttBC9EmMcL4y482r2xBA5Gy p2cUWS8+gWubl644LUAXAnXjswCUQCIq+VOKUN+U+niFmck6RQ6BUjcavWCZ7n2Q bhm9LguN77Fjeqn10mX7dX+ZzMwSAUhzJm46zU7inh/+ejO7wwwc5vv/gAjB/bGa ZVNq5naT1Wd55++zdDqxvIqqHApBJtlXrqC/hs6gNIVr9vn1QT+dHjQ6ehpdSqJn YKeEZMJjeoTiaCulvzcVBc9gFrxBPyc9UNDwBQals8OKhO1TwAwzIF+ZD9uIAp35 dnapA== Received: from dc5-exch05.marvell.com ([199.233.59.128]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3ysafh1h9e-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 15 Jun 2024 21:42:46 -0700 (PDT) Received: from DC5-EXCH05.marvell.com (10.69.176.209) by DC5-EXCH05.marvell.com (10.69.176.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Sat, 15 Jun 2024 21:42:45 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH05.marvell.com (10.69.176.209) with Microsoft SMTP Server id 15.2.1544.4 via Frontend Transport; Sat, 15 Jun 2024 21:42:45 -0700 Received: from BG-LT91401.marvell.com (unknown [10.193.65.26]) by maili.marvell.com (Postfix) with ESMTP id A2AD05B6953; Sat, 15 Jun 2024 21:42:42 -0700 (PDT) From: Gowrishankar Muthukrishnan To: , Akhil Goyal , Fan Zhang CC: Anoob Joseph , Gowrishankar Muthukrishnan Subject: [PATCH v1 3/4] test/crypto: use common test function for mod tests Date: Sun, 16 Jun 2024 10:12:19 +0530 Message-ID: <20240616044223.2841-4-gmuthukrishn@marvell.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20240616044223.2841-1-gmuthukrishn@marvell.com> References: <20240616044223.2841-1-gmuthukrishn@marvell.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: Dl2lHV9s9u__O27Or8nsE5tIghNlBu2o X-Proofpoint-GUID: Dl2lHV9s9u__O27Or8nsE5tIghNlBu2o X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-06-16_03,2024-06-14_03,2024-05-17_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Use common test function for modex and modinv tests. Signed-off-by: Gowrishankar Muthukrishnan --- app/test/test_cryptodev_asym.c | 238 ++------------------- app/test/test_cryptodev_asym_util.h | 18 -- app/test/test_cryptodev_mod_test_vectors.h | 206 ++++++++++-------- 3 files changed, 131 insertions(+), 331 deletions(-) diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asym.c index c26be9b2bf..41e150ed17 100644 --- a/app/test/test_cryptodev_asym.c +++ b/app/test/test_cryptodev_asym.c @@ -988,229 +988,6 @@ test_dh_gen_kp(struct rte_crypto_asym_xform *xfrm) return status; } -static int -test_mod_inv(void) -{ - struct crypto_testsuite_params_asym *ts_params = &testsuite_params; - struct rte_mempool *op_mpool = ts_params->op_mpool; - struct rte_mempool *sess_mpool = ts_params->session_mpool; - uint8_t dev_id = ts_params->valid_devs[0]; - struct rte_crypto_asym_op *asym_op = NULL; - struct rte_crypto_op *op = NULL, *result_op = NULL; - void *sess = NULL; - int status = TEST_SUCCESS; - struct rte_cryptodev_asym_capability_idx cap_idx; - const struct rte_cryptodev_asymmetric_xform_capability *capability; - uint8_t input[TEST_DATA_SIZE] = {0}; - int ret = 0; - uint8_t result[sizeof(mod_p)] = { 0 }; - - if (rte_cryptodev_asym_get_xform_enum( - &modinv_xform.xform_type, "modinv") < 0) { - RTE_LOG(ERR, USER1, - "Invalid ASYM algorithm specified\n"); - return -1; - } - - cap_idx.type = modinv_xform.xform_type; - capability = rte_cryptodev_asym_capability_get(dev_id, - &cap_idx); - - if (capability == NULL) { - RTE_LOG(INFO, USER1, - "Device doesn't support MOD INV. Test Skipped\n"); - return TEST_SKIPPED; - } - - if (rte_cryptodev_asym_xform_capability_check_modlen( - capability, - modinv_xform.modinv.modulus.length)) { - RTE_LOG(ERR, USER1, - "Invalid MODULUS length specified\n"); - return TEST_SKIPPED; - } - - ret = rte_cryptodev_asym_session_create(dev_id, &modinv_xform, sess_mpool, &sess); - if (ret < 0) { - RTE_LOG(ERR, USER1, "line %u " - "FAILED: %s", __LINE__, - "Session creation failed"); - status = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED; - goto error_exit; - } - - /* generate crypto op data structure */ - op = rte_crypto_op_alloc(op_mpool, RTE_CRYPTO_OP_TYPE_ASYMMETRIC); - if (!op) { - RTE_LOG(ERR, USER1, - "line %u FAILED: %s", - __LINE__, "Failed to allocate asymmetric crypto " - "operation struct"); - status = TEST_FAILED; - goto error_exit; - } - - asym_op = op->asym; - memcpy(input, base, sizeof(base)); - asym_op->modinv.base.data = input; - asym_op->modinv.base.length = sizeof(base); - asym_op->modinv.result.data = result; - asym_op->modinv.result.length = sizeof(result); - - /* attach asymmetric crypto session to crypto operations */ - rte_crypto_op_attach_asym_session(op, sess); - - RTE_LOG(DEBUG, USER1, "Process ASYM operation"); - - /* Process crypto operation */ - if (rte_cryptodev_enqueue_burst(dev_id, 0, &op, 1) != 1) { - RTE_LOG(ERR, USER1, - "line %u FAILED: %s", - __LINE__, "Error sending packet for operation"); - status = TEST_FAILED; - goto error_exit; - } - - while (rte_cryptodev_dequeue_burst(dev_id, 0, &result_op, 1) == 0) - rte_pause(); - - if (result_op == NULL) { - RTE_LOG(ERR, USER1, - "line %u FAILED: %s", - __LINE__, "Failed to process asym crypto op"); - status = TEST_FAILED; - goto error_exit; - } - - ret = verify_modinv(mod_inv, result_op); - if (ret) { - RTE_LOG(ERR, USER1, - "operation verification failed\n"); - status = TEST_FAILED; - } - -error_exit: - if (sess) - rte_cryptodev_asym_session_free(dev_id, sess); - - rte_crypto_op_free(op); - - TEST_ASSERT_EQUAL(status, 0, "Test failed"); - - return status; -} - -static int -test_mod_exp(void) -{ - struct crypto_testsuite_params_asym *ts_params = &testsuite_params; - struct rte_mempool *op_mpool = ts_params->op_mpool; - struct rte_mempool *sess_mpool = ts_params->session_mpool; - uint8_t dev_id = ts_params->valid_devs[0]; - struct rte_crypto_asym_op *asym_op = NULL; - struct rte_crypto_op *op = NULL, *result_op = NULL; - void *sess = NULL; - int status = TEST_SUCCESS; - struct rte_cryptodev_asym_capability_idx cap_idx; - const struct rte_cryptodev_asymmetric_xform_capability *capability; - uint8_t input[TEST_DATA_SIZE] = {0}; - int ret = 0; - uint8_t result[sizeof(mod_p)] = { 0 }; - - if (rte_cryptodev_asym_get_xform_enum(&modex_xform.xform_type, - "modexp") - < 0) { - RTE_LOG(ERR, USER1, - "Invalid ASYM algorithm specified\n"); - return -1; - } - - /* check for modlen capability */ - cap_idx.type = modex_xform.xform_type; - capability = rte_cryptodev_asym_capability_get(dev_id, &cap_idx); - - if (capability == NULL) { - RTE_LOG(INFO, USER1, - "Device doesn't support MOD EXP. Test Skipped\n"); - return TEST_SKIPPED; - } - - if (rte_cryptodev_asym_xform_capability_check_modlen( - capability, modex_xform.modex.modulus.length)) { - RTE_LOG(ERR, USER1, - "Invalid MODULUS length specified\n"); - return TEST_SKIPPED; - } - - /* Create op, create session, and process packets. 8< */ - op = rte_crypto_op_alloc(op_mpool, RTE_CRYPTO_OP_TYPE_ASYMMETRIC); - if (!op) { - RTE_LOG(ERR, USER1, - "line %u FAILED: %s", - __LINE__, "Failed to allocate asymmetric crypto " - "operation struct"); - status = TEST_FAILED; - goto error_exit; - } - - ret = rte_cryptodev_asym_session_create(dev_id, &modex_xform, sess_mpool, &sess); - if (ret < 0) { - RTE_LOG(ERR, USER1, - "line %u " - "FAILED: %s", __LINE__, - "Session creation failed"); - status = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED; - goto error_exit; - } - - asym_op = op->asym; - memcpy(input, base, sizeof(base)); - asym_op->modex.base.data = input; - asym_op->modex.base.length = sizeof(base); - asym_op->modex.result.data = result; - asym_op->modex.result.length = sizeof(result); - /* attach asymmetric crypto session to crypto operations */ - rte_crypto_op_attach_asym_session(op, sess); - - RTE_LOG(DEBUG, USER1, "Process ASYM operation"); - /* Process crypto operation */ - if (rte_cryptodev_enqueue_burst(dev_id, 0, &op, 1) != 1) { - RTE_LOG(ERR, USER1, - "line %u FAILED: %s", - __LINE__, "Error sending packet for operation"); - status = TEST_FAILED; - goto error_exit; - } - - while (rte_cryptodev_dequeue_burst(dev_id, 0, &result_op, 1) == 0) - rte_pause(); - - if (result_op == NULL) { - RTE_LOG(ERR, USER1, - "line %u FAILED: %s", - __LINE__, "Failed to process asym crypto op"); - status = TEST_FAILED; - goto error_exit; - } - /* >8 End of create op, create session, and process packets section. */ - ret = verify_modexp(mod_exp, result_op); - if (ret) { - RTE_LOG(ERR, USER1, - "operation verification failed\n"); - status = TEST_FAILED; - } - -error_exit: - if (sess != NULL) - rte_cryptodev_asym_session_free(dev_id, sess); - - rte_crypto_op_free(op); - - TEST_ASSERT_EQUAL(status, 0, "Test failed"); - - return status; -} - static int test_dh_key_generation(void) { @@ -3508,8 +3285,14 @@ static struct unit_test_suite cryptodev_openssl_asym_testsuite = { test_rsa_enc_dec_crt), TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_rsa_sign_verify_crt), - TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_mod_inv), - TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_mod_exp), + TEST_CASE_NAMED_WITH_DATA( + "Modular Inverse", + ut_setup_asym, ut_teardown_asym, + modular_multiplicative_inverse, &modinv_test_cases[0]), + TEST_CASE_NAMED_WITH_DATA( + "Modex test", + ut_setup_asym, ut_teardown_asym, + modular_exponentiation, &modex_test_cases[0]), TEST_CASE_NAMED_WITH_DATA( "Modex Group 5 test", ut_setup_asym, ut_teardown_asym, @@ -3584,7 +3367,10 @@ static struct unit_test_suite cryptodev_octeontx_asym_testsuite = { test_rsa_enc_dec_crt), TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_rsa_sign_verify_crt), - TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_mod_exp), + TEST_CASE_NAMED_WITH_DATA( + "Modex test", + ut_setup_asym, ut_teardown_asym, + modular_exponentiation, &modex_test_cases[0]), TEST_CASE_NAMED_WITH_DATA( "Modex Group 5 test", ut_setup_asym, ut_teardown_asym, diff --git a/app/test/test_cryptodev_asym_util.h b/app/test/test_cryptodev_asym_util.h index 07e6e831e8..72908055cf 100644 --- a/app/test/test_cryptodev_asym_util.h +++ b/app/test/test_cryptodev_asym_util.h @@ -17,24 +17,6 @@ static inline int rsa_verify(struct rsa_test_data *rsa_param, return 0; } -static inline int verify_modinv(uint8_t *mod_inv, - struct rte_crypto_op *result_op) -{ - if (memcmp(mod_inv, result_op->asym->modinv.result.data, - result_op->asym->modinv.result.length)) - return -1; - return 0; -} - -static inline int verify_modexp(uint8_t *mod_exp, - struct rte_crypto_op *result_op) -{ - if (memcmp(mod_exp, result_op->asym->modex.result.data, - result_op->asym->modex.result.length)) - return -1; - return 0; -} - static inline int verify_ecdsa_sign(uint8_t *sign_r, uint8_t *sign_s, struct rte_crypto_op *result_op) { diff --git a/app/test/test_cryptodev_mod_test_vectors.h b/app/test/test_cryptodev_mod_test_vectors.h index a4e06c0291..b2250dc95a 100644 --- a/app/test/test_cryptodev_mod_test_vectors.h +++ b/app/test/test_cryptodev_mod_test_vectors.h @@ -167,103 +167,135 @@ modinv_test_data modinv_test_case = { }; /* modular operation test data */ -uint8_t base[] = { - 0xF8, 0xBA, 0x1A, 0x55, 0xD0, 0x2F, 0x85, - 0xAE, 0x96, 0x7B, 0xB6, 0x2F, 0xB6, 0xCD, - 0xA8, 0xEB, 0x7E, 0x78, 0xA0, 0x50 -}; - -/* MODEX data. 8< */ -uint8_t mod_p[] = { - 0x00, 0xb3, 0xa1, 0xaf, 0xb7, 0x13, 0x08, 0x00, - 0x0a, 0x35, 0xdc, 0x2b, 0x20, 0x8d, 0xa1, 0xb5, - 0xce, 0x47, 0x8a, 0xc3, 0x80, 0xf4, 0x7d, 0x4a, - 0xa2, 0x62, 0xfd, 0x61, 0x7f, 0xb5, 0xa8, 0xde, - 0x0a, 0x17, 0x97, 0xa0, 0xbf, 0xdf, 0x56, 0x5a, - 0x3d, 0x51, 0x56, 0x4f, 0x70, 0x70, 0x3f, 0x63, - 0x6a, 0x44, 0x5b, 0xad, 0x84, 0x0d, 0x3f, 0x27, - 0x6e, 0x3b, 0x34, 0x91, 0x60, 0x14, 0xb9, 0xaa, - 0x72, 0xfd, 0xa3, 0x64, 0xd2, 0x03, 0xa7, 0x53, - 0x87, 0x9e, 0x88, 0x0b, 0xc1, 0x14, 0x93, 0x1a, - 0x62, 0xff, 0xb1, 0x5d, 0x74, 0xcd, 0x59, 0x63, - 0x18, 0x11, 0x3d, 0x4f, 0xba, 0x75, 0xd4, 0x33, - 0x4e, 0x23, 0x6b, 0x7b, 0x57, 0x44, 0xe1, 0xd3, - 0x03, 0x13, 0xa6, 0xf0, 0x8b, 0x60, 0xb0, 0x9e, - 0xee, 0x75, 0x08, 0x9d, 0x71, 0x63, 0x13, 0xcb, - 0xa6, 0x81, 0x92, 0x14, 0x03, 0x22, 0x2d, 0xde, - 0x55 -}; - -uint8_t mod_e[] = {0x01, 0x00, 0x01}; -/* >8 End of MODEX data. */ - -/* Precomputed modular exponentiation for verification */ -uint8_t mod_exp[] = { - 0x2C, 0x60, 0x75, 0x45, 0x98, 0x9D, 0xE0, 0x72, - 0xA0, 0x9D, 0x3A, 0x9E, 0x03, 0x38, 0x73, 0x3C, - 0x31, 0x83, 0x04, 0xFE, 0x75, 0x43, 0xE6, 0x17, - 0x5C, 0x01, 0x29, 0x51, 0x69, 0x33, 0x62, 0x2D, - 0x78, 0xBE, 0xAE, 0xC4, 0xBC, 0xDE, 0x7E, 0x2C, - 0x77, 0x84, 0xF2, 0xC5, 0x14, 0xB5, 0x2F, 0xF7, - 0xC5, 0x94, 0xEF, 0x86, 0x75, 0x75, 0xB5, 0x11, - 0xE5, 0x0E, 0x0A, 0x29, 0x76, 0xE2, 0xEA, 0x32, - 0x0E, 0x43, 0x77, 0x7E, 0x2C, 0x27, 0xAC, 0x3B, - 0x86, 0xA5, 0xDB, 0xC9, 0x48, 0x40, 0xE8, 0x99, - 0x9A, 0x0A, 0x3D, 0xD6, 0x74, 0xFA, 0x2E, 0x2E, - 0x5B, 0xAF, 0x8C, 0x99, 0x44, 0x2A, 0x67, 0x38, - 0x27, 0x41, 0x59, 0x9D, 0xB8, 0x51, 0xC9, 0xF7, - 0x43, 0x61, 0x31, 0x6E, 0xF1, 0x25, 0x38, 0x7F, - 0xAE, 0xC6, 0xD0, 0xBB, 0x29, 0x76, 0x3F, 0x46, - 0x2E, 0x1B, 0xE4, 0x67, 0x71, 0xE3, 0x87, 0x5A -}; /* Precomputed modular inverse for verification */ -uint8_t mod_inv[] = { - 0x52, 0xb1, 0xa3, 0x8c, 0xc5, 0x8a, 0xb9, 0x1f, - 0xb6, 0x82, 0xf5, 0x6a, 0x9a, 0xde, 0x8d, 0x2e, - 0x62, 0x4b, 0xac, 0x49, 0x21, 0x1d, 0x30, 0x4d, - 0x32, 0xac, 0x1f, 0x40, 0x6d, 0x52, 0xc7, 0x9b, - 0x6c, 0x0a, 0x82, 0x3a, 0x2c, 0xaf, 0x6b, 0x6d, - 0x17, 0xbe, 0x43, 0xed, 0x97, 0x78, 0xeb, 0x4c, - 0x92, 0x6f, 0xcf, 0xed, 0xb1, 0x09, 0xcb, 0x27, - 0xc2, 0xde, 0x62, 0xfd, 0x21, 0xe6, 0xbd, 0x4f, - 0xfe, 0x7a, 0x1b, 0x50, 0xfe, 0x10, 0x4a, 0xb0, - 0xb7, 0xcf, 0xdb, 0x7d, 0xca, 0xc2, 0xf0, 0x1c, - 0x39, 0x48, 0x6a, 0xb5, 0x4d, 0x8c, 0xfe, 0x63, - 0x91, 0x9c, 0x21, 0xc3, 0x0e, 0x76, 0xad, 0x44, - 0x8d, 0x54, 0x33, 0x99, 0xe1, 0x80, 0x19, 0xba, - 0xb5, 0xac, 0x7d, 0x9c, 0xce, 0x91, 0x2a, 0xd9, - 0x2c, 0xe1, 0x16, 0xd6, 0xd7, 0xcf, 0x9d, 0x05, - 0x9a, 0x66, 0x9a, 0x3a, 0xc1, 0xb8, 0x4b, 0xc3 +static const struct +modinv_test_data modinv_test_cases[] = { +{ + .description = "Modular Inverse (mod=129, base=20, exp=3, inv=128)", + .xform_type = RTE_CRYPTO_ASYM_XFORM_MODINV, + .base = { + .data = { + 0xF8, 0xBA, 0x1A, 0x55, 0xD0, 0x2F, 0x85, + 0xAE, 0x96, 0x7B, 0xB6, 0x2F, 0xB6, 0xCD, + 0xA8, 0xEB, 0x7E, 0x78, 0xA0, 0x50 + }, + .len = 20 + }, + .inverse = { + .data = { + 0x52, 0xb1, 0xa3, 0x8c, 0xc5, 0x8a, 0xb9, 0x1f, + 0xb6, 0x82, 0xf5, 0x6a, 0x9a, 0xde, 0x8d, 0x2e, + 0x62, 0x4b, 0xac, 0x49, 0x21, 0x1d, 0x30, 0x4d, + 0x32, 0xac, 0x1f, 0x40, 0x6d, 0x52, 0xc7, 0x9b, + 0x6c, 0x0a, 0x82, 0x3a, 0x2c, 0xaf, 0x6b, 0x6d, + 0x17, 0xbe, 0x43, 0xed, 0x97, 0x78, 0xeb, 0x4c, + 0x92, 0x6f, 0xcf, 0xed, 0xb1, 0x09, 0xcb, 0x27, + 0xc2, 0xde, 0x62, 0xfd, 0x21, 0xe6, 0xbd, 0x4f, + 0xfe, 0x7a, 0x1b, 0x50, 0xfe, 0x10, 0x4a, 0xb0, + 0xb7, 0xcf, 0xdb, 0x7d, 0xca, 0xc2, 0xf0, 0x1c, + 0x39, 0x48, 0x6a, 0xb5, 0x4d, 0x8c, 0xfe, 0x63, + 0x91, 0x9c, 0x21, 0xc3, 0x0e, 0x76, 0xad, 0x44, + 0x8d, 0x54, 0x33, 0x99, 0xe1, 0x80, 0x19, 0xba, + 0xb5, 0xac, 0x7d, 0x9c, 0xce, 0x91, 0x2a, 0xd9, + 0x2c, 0xe1, 0x16, 0xd6, 0xd7, 0xcf, 0x9d, 0x05, + 0x9a, 0x66, 0x9a, 0x3a, 0xc1, 0xb8, 0x4b, 0xc3 + }, + .len = 128 + }, + .modulus = { + .data = { + 0x00, 0xb3, 0xa1, 0xaf, 0xb7, 0x13, 0x08, 0x00, + 0x0a, 0x35, 0xdc, 0x2b, 0x20, 0x8d, 0xa1, 0xb5, + 0xce, 0x47, 0x8a, 0xc3, 0x80, 0xf4, 0x7d, 0x4a, + 0xa2, 0x62, 0xfd, 0x61, 0x7f, 0xb5, 0xa8, 0xde, + 0x0a, 0x17, 0x97, 0xa0, 0xbf, 0xdf, 0x56, 0x5a, + 0x3d, 0x51, 0x56, 0x4f, 0x70, 0x70, 0x3f, 0x63, + 0x6a, 0x44, 0x5b, 0xad, 0x84, 0x0d, 0x3f, 0x27, + 0x6e, 0x3b, 0x34, 0x91, 0x60, 0x14, 0xb9, 0xaa, + 0x72, 0xfd, 0xa3, 0x64, 0xd2, 0x03, 0xa7, 0x53, + 0x87, 0x9e, 0x88, 0x0b, 0xc1, 0x14, 0x93, 0x1a, + 0x62, 0xff, 0xb1, 0x5d, 0x74, 0xcd, 0x59, 0x63, + 0x18, 0x11, 0x3d, 0x4f, 0xba, 0x75, 0xd4, 0x33, + 0x4e, 0x23, 0x6b, 0x7b, 0x57, 0x44, 0xe1, 0xd3, + 0x03, 0x13, 0xa6, 0xf0, 0x8b, 0x60, 0xb0, 0x9e, + 0xee, 0x75, 0x08, 0x9d, 0x71, 0x63, 0x13, 0xcb, + 0xa6, 0x81, 0x92, 0x14, 0x03, 0x22, 0x2d, 0xde, + 0x55 + }, + .len = 129 + } +} }; /* MODEX vector. 8< */ -struct rte_crypto_asym_xform modex_xform = { - .next = NULL, + +static const struct +modex_test_data modex_test_cases[] = { +{ + .description = "Modular Exponentiation tests", .xform_type = RTE_CRYPTO_ASYM_XFORM_MODEX, - .modex = { - .modulus = { - .data = mod_p, - .length = sizeof(mod_p) + .base = { + .data = { + 0xF8, 0xBA, 0x1A, 0x55, 0xD0, 0x2F, 0x85, 0xAE, + 0x96, 0x7B, 0xB6, 0x2F, 0xB6, 0xCD, 0xA8, 0xEB, + 0x7E, 0x78, 0xA0, 0x50 + }, + .len = 20 + }, + .exponent = { + .data = { + 0x01, 0x00, 0x01 + }, + .len = 3 + }, + .reminder = { + .data = { + 0x2C, 0x60, 0x75, 0x45, 0x98, 0x9D, 0xE0, 0x72, + 0xA0, 0x9D, 0x3A, 0x9E, 0x03, 0x38, 0x73, 0x3C, + 0x31, 0x83, 0x04, 0xFE, 0x75, 0x43, 0xE6, 0x17, + 0x5C, 0x01, 0x29, 0x51, 0x69, 0x33, 0x62, 0x2D, + 0x78, 0xBE, 0xAE, 0xC4, 0xBC, 0xDE, 0x7E, 0x2C, + 0x77, 0x84, 0xF2, 0xC5, 0x14, 0xB5, 0x2F, 0xF7, + 0xC5, 0x94, 0xEF, 0x86, 0x75, 0x75, 0xB5, 0x11, + 0xE5, 0x0E, 0x0A, 0x29, 0x76, 0xE2, 0xEA, 0x32, + 0x0E, 0x43, 0x77, 0x7E, 0x2C, 0x27, 0xAC, 0x3B, + 0x86, 0xA5, 0xDB, 0xC9, 0x48, 0x40, 0xE8, 0x99, + 0x9A, 0x0A, 0x3D, 0xD6, 0x74, 0xFA, 0x2E, 0x2E, + 0x5B, 0xAF, 0x8C, 0x99, 0x44, 0x2A, 0x67, 0x38, + 0x27, 0x41, 0x59, 0x9D, 0xB8, 0x51, 0xC9, 0xF7, + 0x43, 0x61, 0x31, 0x6E, 0xF1, 0x25, 0x38, 0x7F, + 0xAE, 0xC6, 0xD0, 0xBB, 0x29, 0x76, 0x3F, 0x46, + 0x2E, 0x1B, 0xE4, 0x67, 0x71, 0xE3, 0x87, 0x5A }, - .exponent = { - .data = mod_e, - .length = sizeof(mod_e) - } + .len = 128 + }, + .modulus = { + .data = { + 0x00, 0xb3, 0xa1, 0xaf, 0xb7, 0x13, 0x08, 0x00, + 0x0a, 0x35, 0xdc, 0x2b, 0x20, 0x8d, 0xa1, 0xb5, + 0xce, 0x47, 0x8a, 0xc3, 0x80, 0xf4, 0x7d, 0x4a, + 0xa2, 0x62, 0xfd, 0x61, 0x7f, 0xb5, 0xa8, 0xde, + 0x0a, 0x17, 0x97, 0xa0, 0xbf, 0xdf, 0x56, 0x5a, + 0x3d, 0x51, 0x56, 0x4f, 0x70, 0x70, 0x3f, 0x63, + 0x6a, 0x44, 0x5b, 0xad, 0x84, 0x0d, 0x3f, 0x27, + 0x6e, 0x3b, 0x34, 0x91, 0x60, 0x14, 0xb9, 0xaa, + 0x72, 0xfd, 0xa3, 0x64, 0xd2, 0x03, 0xa7, 0x53, + 0x87, 0x9e, 0x88, 0x0b, 0xc1, 0x14, 0x93, 0x1a, + 0x62, 0xff, 0xb1, 0x5d, 0x74, 0xcd, 0x59, 0x63, + 0x18, 0x11, 0x3d, 0x4f, 0xba, 0x75, 0xd4, 0x33, + 0x4e, 0x23, 0x6b, 0x7b, 0x57, 0x44, 0xe1, 0xd3, + 0x03, 0x13, 0xa6, 0xf0, 0x8b, 0x60, 0xb0, 0x9e, + 0xee, 0x75, 0x08, 0x9d, 0x71, 0x63, 0x13, 0xcb, + 0xa6, 0x81, 0x92, 0x14, 0x03, 0x22, 0x2d, 0xde, + 0x55 + }, + .len = 129 } +} }; -/* >8 End of MODEX vector. */ -struct rte_crypto_asym_xform modinv_xform = { - .next = NULL, - .xform_type = RTE_CRYPTO_ASYM_XFORM_MODINV, - .modinv = { - .modulus = { - .data = mod_p, - .length = sizeof(mod_p) - } - } -}; +/* >8 End of MODEX vector. */ static const struct modex_test_data modex_group_test_cases[] = { From patchwork Sun Jun 16 04:42:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gowrishankar Muthukrishnan X-Patchwork-Id: 141173 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3748545475; Sun, 16 Jun 2024 06:43:23 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 373E34028C; Sun, 16 Jun 2024 06:43:23 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id BC56740042 for ; Sun, 16 Jun 2024 06:43:21 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 45G3sYJm005614; Sat, 15 Jun 2024 21:43:21 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pfpt0220; bh=8 IcH2LQb+oO9ZfH796ymGNCA7+VxA+VWgg1qsuw6asY=; b=VaJ6tvMMzqtX08o8T XxkcY+dDxDxYhFw3mbXR4pe070O5btwZrgmYBVX6mnLs/qOLl8cH2Vwx6IxQlxwo HLq7CW05so6mJ8Vj8NW3YWo6uTeVN5+VwkkMv9UyMJcGoxWs0xqmp/Tg1PYHEwN2 6nJHFOQHJe5XAU5Jjxomca1bTl8Uhu2qdoSuc6iwAI8CBBDWRd87NeurkcsUIteR 4dGySShL/g7hn9AamK1Pde7nQh8+Q544j2//Kl/9aC/bAgXM1FBb6EzUJFiqAWnO AKR7JVlKR/tfAwkfsuHy+s2HOmCIMct5Gck7bjHSFMEh2IdLkiIDH6rBgcnkFxPr gs18Q== Received: from dc6wp-exch02.marvell.com ([4.21.29.225]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3ysafh1h9r-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 15 Jun 2024 21:43:19 -0700 (PDT) Received: from DC6WP-EXCH02.marvell.com (10.76.176.209) by DC6WP-EXCH02.marvell.com (10.76.176.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Sat, 15 Jun 2024 21:42:50 -0700 Received: from maili.marvell.com (10.69.176.80) by DC6WP-EXCH02.marvell.com (10.76.176.209) with Microsoft SMTP Server id 15.2.1544.4 via Frontend Transport; Sat, 15 Jun 2024 21:42:50 -0700 Received: from BG-LT91401.marvell.com (unknown [10.193.65.26]) by maili.marvell.com (Postfix) with ESMTP id 63E885B6953; Sat, 15 Jun 2024 21:42:48 -0700 (PDT) From: Gowrishankar Muthukrishnan To: , Akhil Goyal , Fan Zhang CC: Anoob Joseph , Gowrishankar Muthukrishnan Subject: [PATCH v1 4/4] test/crypto: add modex tests for zero padded operands Date: Sun, 16 Jun 2024 10:12:20 +0530 Message-ID: <20240616044223.2841-5-gmuthukrishn@marvell.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20240616044223.2841-1-gmuthukrishn@marvell.com> References: <20240616044223.2841-1-gmuthukrishn@marvell.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: i1bqudZnp7jeq2iBIuFJlOSHhQsjfR2t X-Proofpoint-GUID: i1bqudZnp7jeq2iBIuFJlOSHhQsjfR2t X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-06-16_04,2024-06-14_03,2024-05-17_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Add modex tests for zero padded operands, as in ASN encoding. Signed-off-by: Gowrishankar Muthukrishnan --- app/test/test_cryptodev_asym.c | 16 +++++ app/test/test_cryptodev_mod_test_vectors.h | 71 ++++++++++++++++++++++ 2 files changed, 87 insertions(+) diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asym.c index 41e150ed17..0c05a34e10 100644 --- a/app/test/test_cryptodev_asym.c +++ b/app/test/test_cryptodev_asym.c @@ -3293,6 +3293,14 @@ static struct unit_test_suite cryptodev_openssl_asym_testsuite = { "Modex test", ut_setup_asym, ut_teardown_asym, modular_exponentiation, &modex_test_cases[0]), + TEST_CASE_NAMED_WITH_DATA( + "Modex test for zero padding", + ut_setup_asym, ut_teardown_asym, + modular_exponentiation, &modex_test_cases[1]), + TEST_CASE_NAMED_WITH_DATA( + "Modex test for zero padding (2)", + ut_setup_asym, ut_teardown_asym, + modular_exponentiation, &modex_test_cases[2]), TEST_CASE_NAMED_WITH_DATA( "Modex Group 5 test", ut_setup_asym, ut_teardown_asym, @@ -3371,6 +3379,14 @@ static struct unit_test_suite cryptodev_octeontx_asym_testsuite = { "Modex test", ut_setup_asym, ut_teardown_asym, modular_exponentiation, &modex_test_cases[0]), + TEST_CASE_NAMED_WITH_DATA( + "Modex test for zero padding", + ut_setup_asym, ut_teardown_asym, + modular_exponentiation, &modex_test_cases[1]), + TEST_CASE_NAMED_WITH_DATA( + "Modex test for zero padding (2)", + ut_setup_asym, ut_teardown_asym, + modular_exponentiation, &modex_test_cases[2]), TEST_CASE_NAMED_WITH_DATA( "Modex Group 5 test", ut_setup_asym, ut_teardown_asym, diff --git a/app/test/test_cryptodev_mod_test_vectors.h b/app/test/test_cryptodev_mod_test_vectors.h index b2250dc95a..8075f6eac7 100644 --- a/app/test/test_cryptodev_mod_test_vectors.h +++ b/app/test/test_cryptodev_mod_test_vectors.h @@ -292,6 +292,77 @@ modex_test_data modex_test_cases[] = { }, .len = 129 } +}, +{ + .description = "Modular Exponentiation tests for 0 MSBs", + .xform_type = RTE_CRYPTO_ASYM_XFORM_MODEX, + .base = { + .data = { + 0x00, 0x00, 0x45, 0xCA, 0x2C, 0x5C, 0x3A, 0x90, + 0x00, 0xC4, 0xD7, 0x47, 0xA8, 0x2B, 0x12, 0x07, + 0xBD, 0x1F, 0xD7, 0x81 + }, + .len = 20 + }, + .exponent = { + .data = { + 0x00, 0x00, 0x00, 0x75, 0x74, 0x19, 0x19, 0x69, + 0xBF, 0x15, 0x2A, 0xAC + }, + .len = 12 + }, + .reminder = { + .data = { + 0x5c, 0x94, 0x8f, 0x00, 0x79, 0xe3, 0xe1, 0x0b, + 0x3f, 0x3e, 0x36, 0x75, 0xed, 0x1d, 0x84, 0xc6, + 0x36, 0x9e + }, + .len = 18 + }, + .modulus = { + .data = { + 0x00, 0x00, 0x99, 0x28, 0x09, 0x8A, 0xE9, 0x89, + 0xBB, 0x81, 0x3B, 0x07, 0x0E, 0x31, 0x00, 0x7F, + 0x79, 0x97, 0xED, 0x35 + }, + .len = 20 + } +}, +{ + .description = "Modular Exponentiation tests for 0 MSBs (2)", + .xform_type = RTE_CRYPTO_ASYM_XFORM_MODEX, + .base = { + .data = { + 0x01, 0x31, 0x72, 0xFB, 0x81, 0x9D, 0x81, 0x7A, + 0x91, 0xDC, 0xE6, 0x6C, 0x2D, 0x55, 0xD9, 0x25, + 0x7A, 0xB2, 0xFF, 0xFF + }, + .len = 20 + }, + .exponent = { + .data = { + 0x00, 0x00, 0x00, 0x02, 0x36, 0x38, 0x31, 0x47, + 0x3C, 0x07, 0x36, 0x21 + }, + .len = 12 + }, + .reminder = { + .data = { + 0x02, 0x99, 0x2F, 0xE3, 0x00, 0x9F, 0xF0, 0x9E, + 0x65, 0x3C, 0x0B, 0x4A, 0xD3, 0x1B, 0x7C, 0x7F, + 0x1C + }, + .len = 17 + }, + .modulus = { + .data = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0xCE, 0xF0, 0x7C, 0x13, 0x26, 0x90, 0xAF, 0x49, + 0x06, 0x4D, 0xA4, 0x5C, 0xB2, 0x43, 0x13, 0x25, + }, + .len = 32 + } } };