From patchwork Wed Jul 17 12:51:11 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arkadiusz Kusztal X-Patchwork-Id: 56634 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8F43B1BE50; Wed, 17 Jul 2019 14:55:22 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 12E221BC20 for ; Wed, 17 Jul 2019 14:55:20 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 17 Jul 2019 05:55:19 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,274,1559545200"; d="scan'208";a="187553106" Received: from akusztax-mobl.ger.corp.intel.com ([10.104.12.189]) by fmsmga001.fm.intel.com with ESMTP; 17 Jul 2019 05:55:12 -0700 From: Arek Kusztal To: dev@dpdk.org Cc: akhil.goyal@nxp.com, fiona.trahe@intel.com, shallyv@marvell.com, damianx.nowak@intel.com, Arek Kusztal Date: Wed, 17 Jul 2019 14:51:11 +0200 Message-Id: <20190717125111.11288-12-arkadiuszx.kusztal@intel.com> X-Mailer: git-send-email 2.19.1.windows.1 In-Reply-To: <20190717125111.11288-1-arkadiuszx.kusztal@intel.com> References: <20190717125111.11288-1-arkadiuszx.kusztal@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v4 11/11] test: add RSA PKCS1_5 padding case when no padding selected X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This patch adds an example how to use padding none option with RSA. Signed-off-by: Arek Kusztal --- app/test/test_cryptodev_asym.c | 46 +++++++++++++++++++++++++++++++++--------- 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asym.c index 0e1277b..fa5ddab 100644 --- a/app/test/test_cryptodev_asym.c +++ b/app/test/test_cryptodev_asym.c @@ -157,13 +157,15 @@ queue_ops_rsa_sign_verify(struct rte_cryptodev_asym_session *sess) } static int -queue_ops_rsa_enc_dec(struct rte_cryptodev_asym_session *sess) +queue_ops_rsa_enc_dec(struct rte_cryptodev_asym_session *sess, + enum rte_crypto_rsa_padding_type padding) { struct crypto_testsuite_params *ts_params = &testsuite_params; struct rte_mempool *op_mpool = ts_params->op_mpool; uint8_t dev_id = ts_params->valid_devs[0]; struct rte_crypto_op *op, *result_op; struct rte_crypto_asym_op *asym_op; + uint8_t input_buf[TEST_DATA_SIZE] = {0}; uint8_t cipher_buf[TEST_DATA_SIZE] = {0}; int ret, status = TEST_SUCCESS; @@ -180,11 +182,19 @@ queue_ops_rsa_enc_dec(struct rte_cryptodev_asym_session *sess) /* Compute encryption on the test vector */ asym_op->rsa.op_type = RTE_CRYPTO_ASYM_OP_ENCRYPT; - asym_op->rsa.message.data = rsaplaintext.data; asym_op->rsa.cipher.data = cipher_buf; asym_op->rsa.cipher.length = 0; - asym_op->rsa.message.length = rsaplaintext.len; - asym_op->rsa.pad = RTE_CRYPTO_RSA_PADDING_PKCS1_5; + asym_op->rsa.pad = padding; + + if (padding == RTE_CRYPTO_RSA_PADDING_NONE) { + rsa_simulate_pkcs1_5_padding(0, input_buf, rsa_xform.rsa.n.length, + rsaplaintext.data, rsaplaintext.len); + asym_op->rsa.message.length = rsa_xform.rsa.n.length; + asym_op->rsa.message.data = input_buf; + } else if (padding == RTE_CRYPTO_RSA_PADDING_PKCS1_5) { + asym_op->rsa.message.data = rsaplaintext.data; + asym_op->rsa.message.length = rsaplaintext.len; + } debug_hexdump(stdout, "message", asym_op->rsa.message.data, asym_op->rsa.message.length); @@ -215,7 +225,7 @@ queue_ops_rsa_enc_dec(struct rte_cryptodev_asym_session *sess) /* Use the resulted output as decryption Input vector*/ asym_op = result_op->asym; asym_op->rsa.op_type = RTE_CRYPTO_ASYM_OP_DECRYPT; - asym_op->rsa.pad = RTE_CRYPTO_RSA_PADDING_PKCS1_5; + asym_op->rsa.pad = padding; /* Process crypto operation */ if (rte_cryptodev_enqueue_burst(dev_id, 0, &op, 1) != 1) { @@ -233,6 +243,13 @@ queue_ops_rsa_enc_dec(struct rte_cryptodev_asym_session *sess) goto error_exit; } status = TEST_SUCCESS; + + if (padding == RTE_CRYPTO_RSA_PADDING_NONE) { + result_op->asym->rsa.message.length = + rsa_simulate_strip_pkcs1_5_padding(result_op->asym->rsa.message.data, + rsa_xform.rsa.n.length); + } + ret = rsa_verify(&rsaplaintext, result_op); if (ret) status = TEST_FAILED; @@ -562,7 +579,7 @@ test_rsa_sign_verify(void) } static int -test_rsa_enc_dec(void) +test_rsa_enc_dec(enum rte_crypto_rsa_padding_type padding) { struct crypto_testsuite_params *ts_params = &testsuite_params; struct rte_mempool *sess_mpool = ts_params->session_mpool; @@ -597,7 +614,7 @@ test_rsa_enc_dec(void) goto error_exit; } - status = queue_ops_rsa_enc_dec(sess); + status = queue_ops_rsa_enc_dec(sess, padding); error_exit: @@ -610,6 +627,16 @@ test_rsa_enc_dec(void) } static int +test_rsa_enc_dec_padding_none(void) { + return test_rsa_enc_dec(RTE_CRYPTO_RSA_PADDING_NONE); +} + +static int +test_rsa_enc_dec_padding_pkcs_1(void) { + return test_rsa_enc_dec(RTE_CRYPTO_RSA_PADDING_PKCS1_5); +} + +static int test_rsa_sign_verify_crt(void) { struct crypto_testsuite_params *ts_params = &testsuite_params; @@ -692,7 +719,7 @@ test_rsa_enc_dec_crt(void) status = TEST_FAILED; goto error_exit; } - status = queue_ops_rsa_enc_dec(sess); + status = queue_ops_rsa_enc_dec(sess, RTE_CRYPTO_RSA_PADDING_PKCS1_5); error_exit: @@ -1767,7 +1794,8 @@ static struct unit_test_suite cryptodev_openssl_asym_testsuite = { TEST_CASE_ST(ut_setup, ut_teardown, test_capability), TEST_CASE_ST(ut_setup, ut_teardown, test_dsa), TEST_CASE_ST(ut_setup, ut_teardown, test_dh_keygenration), - TEST_CASE_ST(ut_setup, ut_teardown, test_rsa_enc_dec), + TEST_CASE_ST(ut_setup, ut_teardown, test_rsa_enc_dec_padding_none), + TEST_CASE_ST(ut_setup, ut_teardown, test_rsa_enc_dec_padding_pkcs_1), TEST_CASE_ST(ut_setup, ut_teardown, test_rsa_sign_verify), TEST_CASE_ST(ut_setup, ut_teardown, test_rsa_enc_dec_crt), TEST_CASE_ST(ut_setup, ut_teardown, test_rsa_sign_verify_crt),