get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/127646/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 127646,
    "url": "http://patches.dpdk.org/api/patches/127646/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20230528173531.263548-5-arkadiuszx.kusztal@intel.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20230528173531.263548-5-arkadiuszx.kusztal@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230528173531.263548-5-arkadiuszx.kusztal@intel.com",
    "date": "2023-05-28T17:35:31",
    "name": "[v2,4/4] app/test: add rsa kat and pwct tests",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "b3ba27697d84e7ae539f404215fee6185096f2f2",
    "submitter": {
        "id": 452,
        "url": "http://patches.dpdk.org/api/people/452/?format=api",
        "name": "Arkadiusz Kusztal",
        "email": "arkadiuszx.kusztal@intel.com"
    },
    "delegate": {
        "id": 6690,
        "url": "http://patches.dpdk.org/api/users/6690/?format=api",
        "username": "akhil",
        "first_name": "akhil",
        "last_name": "goyal",
        "email": "gakhil@marvell.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20230528173531.263548-5-arkadiuszx.kusztal@intel.com/mbox/",
    "series": [
        {
            "id": 28222,
            "url": "http://patches.dpdk.org/api/series/28222/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=28222",
            "date": "2023-05-28T17:35:27",
            "name": "Replace obsolote test cases.",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/28222/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/127646/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/127646/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "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])\n\tby inbox.dpdk.org (Postfix) with ESMTP id ADE5442BC4;\n\tSun, 28 May 2023 19:36:11 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id D64B442D32;\n\tSun, 28 May 2023 19:35:50 +0200 (CEST)",
            "from mga02.intel.com (mga02.intel.com [134.134.136.20])\n by mails.dpdk.org (Postfix) with ESMTP id 1BC7F42D3D\n for <dev@dpdk.org>; Sun, 28 May 2023 19:35:48 +0200 (CEST)",
            "from orsmga001.jf.intel.com ([10.7.209.18])\n by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 28 May 2023 10:35:48 -0700",
            "from silpixa00401012.ir.intel.com ([10.243.22.82])\n by orsmga001.jf.intel.com with ESMTP; 28 May 2023 10:35:46 -0700"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1685295349; x=1716831349;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=ZhqRN0NOHeLEuwo4Z+Lq0q7nmnXuBPyg/ARu28CjxWE=;\n b=W1y5gy2Liz49TdClqnzXR+GwecW+qAe7gyaA5EBFJL8/X82Gb6mTHXM7\n Cf8jPYMbPpoUVpo8H+6JTwOn/O1giC1/brZfIWwGzkNlEe/XtpJgnlkHr\n QZqjxchZPZLGeFp1PJKuOomvIAFVc0JA85EFWeMohVsY6wYDzzNLMlpbD\n JQElhVhmZDlFSgY8A+zui8+ajzV0HX+CxNKquz2qQI4/U1ho4dJxZPP5L\n v4G2CNRZgcarqRO9+4FQQZIdnUiwR8pbttfr5duyV/q2Qa55+gHPTtOCV\n KDg/DoUodVWHXfwipIvxDZ76+hZt9Cm4dahsHJ6Fp4xVarxvHpVsLBKHL g==;",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6600,9927,10724\"; a=\"344041618\"",
            "E=Sophos;i=\"6.00,198,1681196400\"; d=\"scan'208\";a=\"344041618\"",
            "E=McAfee;i=\"6600,9927,10724\"; a=\"738892672\"",
            "E=Sophos;i=\"6.00,198,1681196400\"; d=\"scan'208\";a=\"738892672\""
        ],
        "X-ExtLoop1": "1",
        "From": "Arek Kusztal <arkadiuszx.kusztal@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "gakhil@marvell.com, kai.ji@intel.com, ciara.power@intel.com,\n Arek Kusztal <arkadiuszx.kusztal@intel.com>",
        "Subject": "[PATCH v2 4/4] app/test: add rsa kat and pwct tests",
        "Date": "Sun, 28 May 2023 17:35:31 +0000",
        "Message-Id": "<20230528173531.263548-5-arkadiuszx.kusztal@intel.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20230528173531.263548-1-arkadiuszx.kusztal@intel.com>",
        "References": "<20230528173531.263548-1-arkadiuszx.kusztal@intel.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "Added RSA PWCT and KAT tests. Now it complies\nwith setup/teardown logic.\n\nSigned-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>\n---\n app/test/test_cryptodev_asym.c             | 1073 ++++++--------------\n app/test/test_cryptodev_asym_util.h        |   10 -\n app/test/test_cryptodev_rsa_test_vectors.h |  600 +++++------\n 3 files changed, 604 insertions(+), 1079 deletions(-)",
    "diff": "diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asym.c\nindex 7a0124d7c7..91a3bc6150 100644\n--- a/app/test/test_cryptodev_asym.c\n+++ b/app/test/test_cryptodev_asym.c\n@@ -1,6 +1,6 @@\n /* SPDX-License-Identifier: BSD-3-Clause\n  * Copyright(c) 2018 Cavium Networks\n- * Copyright (c) 2019 Intel Corporation\n+ * Copyright (c) 2019-2023 Intel Corporation\n  */\n \n #include <rte_bus_vdev.h>\n@@ -62,741 +62,6 @@ struct test_cases_array {\n };\n static struct test_cases_array test_vector = {0, { NULL } };\n \n-static uint32_t test_index;\n-\n-static int send(struct rte_crypto_op **op,\n-\t\tstruct rte_crypto_op **result_op)\n-{\n-\tint ticks = 0;\n-\n-\tif (rte_cryptodev_enqueue_burst(params->valid_devs[0], 0,\n-\t\t\top, 1) != 1) {\n-\t\tRTE_LOG(ERR, USER1,\n-\t\t\t\"line %u FAILED: Error sending packet for operation on device %d\",\n-\t\t\t__LINE__, params->valid_devs[0]);\n-\t\treturn TEST_FAILED;\n-\t}\n-\twhile (rte_cryptodev_dequeue_burst(params->valid_devs[0], 0,\n-\t\t\tresult_op, 1) == 0) {\n-\t\trte_delay_ms(1);\n-\t\tticks++;\n-\t\tif (ticks >= DEQ_TIMEOUT) {\n-\t\t\tRTE_LOG(ERR, USER1,\n-\t\t\t\t\"line %u FAILED: Cannot dequeue the crypto op on device %d\",\n-\t\t\t\t__LINE__, params->valid_devs[0]);\n-\t\t\treturn TEST_FAILED;\n-\t\t}\n-\t}\n-\tTEST_ASSERT_NOT_NULL(*result_op,\n-\t\t\t\"line %u FAILED: Failed to process asym crypto op\",\n-\t\t\t__LINE__);\n-\tTEST_ASSERT_SUCCESS((*result_op)->status,\n-\t\t\t\"line %u FAILED: Failed to process asym crypto op, error status received\",\n-\t\t\t__LINE__);\n-\treturn TEST_SUCCESS;\n-}\n-\n-static int\n-queue_ops_rsa_sign_verify(void *sess)\n-{\n-\tstruct rte_mempool *op_mpool = params->op_mpool;\n-\tuint8_t dev_id = params->valid_devs[0];\n-\tstruct rte_crypto_op *op, *result_op;\n-\tstruct rte_crypto_asym_op *asym_op;\n-\tuint8_t output_buf[TEST_DATA_SIZE];\n-\tint status = TEST_SUCCESS;\n-\n-\t/* Set up crypto op data structure */\n-\top = rte_crypto_op_alloc(op_mpool, RTE_CRYPTO_OP_TYPE_ASYMMETRIC);\n-\tif (!op) {\n-\t\tRTE_LOG(ERR, USER1, \"Failed to allocate asymmetric crypto \"\n-\t\t\t\"operation struct\\n\");\n-\t\treturn TEST_FAILED;\n-\t}\n-\n-\tasym_op = op->asym;\n-\n-\t/* Compute sign on the test vector */\n-\tasym_op->rsa.op_type = RTE_CRYPTO_ASYM_OP_SIGN;\n-\n-\tasym_op->rsa.message.data = rsaplaintext.data;\n-\tasym_op->rsa.message.length = rsaplaintext.len;\n-\tasym_op->rsa.sign.length = 0;\n-\tasym_op->rsa.sign.data = output_buf;\n-\tasym_op->rsa.padding.type = RTE_CRYPTO_RSA_PADDING_PKCS1_5;\n-\n-\tdebug_hexdump(stdout, \"message\", asym_op->rsa.message.data,\n-\t\t      asym_op->rsa.message.length);\n-\n-\t/* Attach asymmetric crypto session to crypto operations */\n-\trte_crypto_op_attach_asym_session(op, sess);\n-\n-\tRTE_LOG(DEBUG, USER1, \"Process ASYM operation\\n\");\n-\n-\t/* Process crypto operation */\n-\tif (rte_cryptodev_enqueue_burst(dev_id, 0, &op, 1) != 1) {\n-\t\tRTE_LOG(ERR, USER1, \"Error sending packet for sign\\n\");\n-\t\tstatus = TEST_FAILED;\n-\t\tgoto error_exit;\n-\t}\n-\n-\twhile (rte_cryptodev_dequeue_burst(dev_id, 0, &result_op, 1) == 0)\n-\t\trte_pause();\n-\n-\tif (result_op == NULL) {\n-\t\tRTE_LOG(ERR, USER1, \"Failed to process sign op\\n\");\n-\t\tstatus = TEST_FAILED;\n-\t\tgoto error_exit;\n-\t}\n-\n-\tdebug_hexdump(stdout, \"signed message\", asym_op->rsa.sign.data,\n-\t\t      asym_op->rsa.sign.length);\n-\tasym_op = result_op->asym;\n-\n-\t/* Verify sign */\n-\tasym_op->rsa.op_type = RTE_CRYPTO_ASYM_OP_VERIFY;\n-\tasym_op->rsa.padding.type = RTE_CRYPTO_RSA_PADDING_PKCS1_5;\n-\n-\t/* Process crypto operation */\n-\tif (rte_cryptodev_enqueue_burst(dev_id, 0, &op, 1) != 1) {\n-\t\tRTE_LOG(ERR, USER1, \"Error sending packet for verify\\n\");\n-\t\tstatus = TEST_FAILED;\n-\t\tgoto error_exit;\n-\t}\n-\n-\twhile (rte_cryptodev_dequeue_burst(dev_id, 0, &result_op, 1) == 0)\n-\t\trte_pause();\n-\n-\tif (result_op == NULL) {\n-\t\tRTE_LOG(ERR, USER1, \"Failed to process verify op\\n\");\n-\t\tstatus = TEST_FAILED;\n-\t\tgoto error_exit;\n-\t}\n-\n-\tstatus = TEST_SUCCESS;\n-\tif (result_op->status != RTE_CRYPTO_OP_STATUS_SUCCESS) {\n-\t\tRTE_LOG(ERR, USER1, \"Failed to process sign-verify op\\n\");\n-\t\tstatus = TEST_FAILED;\n-\t}\n-\n-error_exit:\n-\n-\trte_crypto_op_free(op);\n-\n-\treturn status;\n-}\n-\n-static int\n-queue_ops_rsa_enc_dec(void *sess)\n-{\n-\tstruct rte_mempool *op_mpool = params->op_mpool;\n-\tuint8_t dev_id = params->valid_devs[0];\n-\tstruct rte_crypto_op *op, *result_op;\n-\tstruct rte_crypto_asym_op *asym_op;\n-\tuint8_t cipher_buf[TEST_DATA_SIZE] = {0};\n-\tint ret, status = TEST_SUCCESS;\n-\n-\t/* Set up crypto op data structure */\n-\top = rte_crypto_op_alloc(op_mpool, RTE_CRYPTO_OP_TYPE_ASYMMETRIC);\n-\tif (!op) {\n-\t\tRTE_LOG(ERR, USER1, \"Failed to allocate asymmetric crypto \"\n-\t\t\t\"operation struct\\n\");\n-\t\treturn TEST_FAILED;\n-\t}\n-\n-\tasym_op = op->asym;\n-\n-\t/* Compute encryption on the test vector */\n-\tasym_op->rsa.op_type = RTE_CRYPTO_ASYM_OP_ENCRYPT;\n-\n-\tasym_op->rsa.message.data = rsaplaintext.data;\n-\tasym_op->rsa.cipher.data = cipher_buf;\n-\tasym_op->rsa.cipher.length = 0;\n-\tasym_op->rsa.message.length = rsaplaintext.len;\n-\tasym_op->rsa.padding.type = RTE_CRYPTO_RSA_PADDING_PKCS1_5;\n-\n-\tdebug_hexdump(stdout, \"message\", asym_op->rsa.message.data,\n-\t\t      asym_op->rsa.message.length);\n-\n-\t/* Attach asymmetric crypto session to crypto operations */\n-\trte_crypto_op_attach_asym_session(op, sess);\n-\n-\tRTE_LOG(DEBUG, USER1, \"Process ASYM operation\\n\");\n-\n-\t/* Process crypto operation */\n-\tif (rte_cryptodev_enqueue_burst(dev_id, 0, &op, 1) != 1) {\n-\t\tRTE_LOG(ERR, USER1, \"Error sending packet for encryption\\n\");\n-\t\tstatus = TEST_FAILED;\n-\t\tgoto error_exit;\n-\t}\n-\n-\twhile (rte_cryptodev_dequeue_burst(dev_id, 0, &result_op, 1) == 0)\n-\t\trte_pause();\n-\n-\tif (result_op == NULL) {\n-\t\tRTE_LOG(ERR, USER1, \"Failed to process encryption op\\n\");\n-\t\tstatus = TEST_FAILED;\n-\t\tgoto error_exit;\n-\t}\n-\tdebug_hexdump(stdout, \"encrypted message\", asym_op->rsa.cipher.data,\n-\t\t      asym_op->rsa.cipher.length);\n-\n-\t/* Use the resulted output as decryption Input vector*/\n-\tasym_op = result_op->asym;\n-\tasym_op->rsa.message.length = 0;\n-\tasym_op->rsa.op_type = RTE_CRYPTO_ASYM_OP_DECRYPT;\n-\tasym_op->rsa.padding.type = RTE_CRYPTO_RSA_PADDING_PKCS1_5;\n-\n-\t/* Process crypto operation */\n-\tif (rte_cryptodev_enqueue_burst(dev_id, 0, &op, 1) != 1) {\n-\t\tRTE_LOG(ERR, USER1, \"Error sending packet for decryption\\n\");\n-\t\tstatus = TEST_FAILED;\n-\t\tgoto error_exit;\n-\t}\n-\n-\twhile (rte_cryptodev_dequeue_burst(dev_id, 0, &result_op, 1) == 0)\n-\t\trte_pause();\n-\n-\tif (result_op == NULL) {\n-\t\tRTE_LOG(ERR, USER1, \"Failed to process decryption op\\n\");\n-\t\tstatus = TEST_FAILED;\n-\t\tgoto error_exit;\n-\t}\n-\tstatus = TEST_SUCCESS;\n-\tret = rsa_verify(&rsaplaintext, result_op);\n-\tif (ret)\n-\t\tstatus = TEST_FAILED;\n-\n-error_exit:\n-\n-\trte_crypto_op_free(op);\n-\n-\treturn status;\n-}\n-static int\n-test_cryptodev_asym_ver(struct rte_crypto_op *op,\n-\t\t\t\tstruct rte_crypto_asym_xform *xform_tc,\n-\t\t\t\tunion test_case_structure *data_tc,\n-\t\t\t\tstruct rte_crypto_op *result_op)\n-{\n-\tint status = TEST_FAILED;\n-\tint ret = 0;\n-\tuint8_t *data_expected = NULL, *data_received = NULL;\n-\tsize_t data_size = 0;\n-\n-\tswitch (data_tc->modex.xform_type) {\n-\tcase RTE_CRYPTO_ASYM_XFORM_MODEX:\n-\t\tdata_expected = data_tc->modex.reminder.data;\n-\t\tdata_received = result_op->asym->modex.result.data;\n-\t\tdata_size = result_op->asym->modex.result.length;\n-\t\tbreak;\n-\tcase RTE_CRYPTO_ASYM_XFORM_MODINV:\n-\t\tdata_expected = data_tc->modinv.inverse.data;\n-\t\tdata_received = result_op->asym->modinv.result.data;\n-\t\tdata_size = result_op->asym->modinv.result.length;\n-\t\tbreak;\n-\tcase RTE_CRYPTO_ASYM_XFORM_RSA:\n-\t\tif (op->asym->rsa.op_type == RTE_CRYPTO_ASYM_OP_ENCRYPT) {\n-\t\t\tdata_size = xform_tc->rsa.n.length;\n-\t\t\tdata_received = result_op->asym->rsa.cipher.data;\n-\t\t\tdata_expected = data_tc->rsa_data.ct.data;\n-\t\t} else if (op->asym->rsa.op_type == RTE_CRYPTO_ASYM_OP_DECRYPT) {\n-\t\t\tdata_size = xform_tc->rsa.n.length;\n-\t\t\tdata_expected = data_tc->rsa_data.pt.data;\n-\t\t\tdata_received = result_op->asym->rsa.message.data;\n-\t\t} else if (op->asym->rsa.op_type == RTE_CRYPTO_ASYM_OP_SIGN) {\n-\t\t\tdata_size = xform_tc->rsa.n.length;\n-\t\t\tdata_expected = data_tc->rsa_data.sign.data;\n-\t\t\tdata_received = result_op->asym->rsa.sign.data;\n-\t\t} else if (op->asym->rsa.op_type == RTE_CRYPTO_ASYM_OP_VERIFY) {\n-\t\t\tdata_size = xform_tc->rsa.n.length;\n-\t\t\tdata_expected = data_tc->rsa_data.pt.data;\n-\t\t\tdata_received = result_op->asym->rsa.cipher.data;\n-\t\t}\n-\t\tbreak;\n-\tcase RTE_CRYPTO_ASYM_XFORM_DH:\n-\tcase RTE_CRYPTO_ASYM_XFORM_DSA:\n-\tcase RTE_CRYPTO_ASYM_XFORM_NONE:\n-\tcase RTE_CRYPTO_ASYM_XFORM_UNSPECIFIED:\n-\tdefault:\n-\t\tbreak;\n-\t}\n-\tret = memcmp(data_expected, data_received, data_size);\n-\tif (!ret && data_size)\n-\t\tstatus = TEST_SUCCESS;\n-\n-\treturn status;\n-}\n-\n-static int\n-test_cryptodev_asym_op(struct crypto_testsuite_params_asym *params,\n-\tunion test_case_structure *data_tc,\n-\tchar *test_msg, int sessionless, enum rte_crypto_asym_op_type type,\n-\tenum rte_crypto_rsa_priv_key_type key_type)\n-{\n-\tstruct rte_crypto_asym_op *asym_op = NULL;\n-\tstruct rte_crypto_op *op = NULL;\n-\tstruct rte_crypto_op *result_op = NULL;\n-\tstruct rte_crypto_asym_xform xform_tc;\n-\tvoid *sess = NULL;\n-\tstruct rte_cryptodev_asym_capability_idx cap_idx;\n-\tconst struct rte_cryptodev_asymmetric_xform_capability *capability;\n-\tuint8_t dev_id = params->valid_devs[0];\n-\tuint8_t input[TEST_DATA_SIZE] = {0};\n-\tuint8_t *result = NULL;\n-\n-\tint ret, status = TEST_SUCCESS;\n-\n-\txform_tc.next = NULL;\n-\txform_tc.xform_type = data_tc->modex.xform_type;\n-\n-\tcap_idx.type = xform_tc.xform_type;\n-\tcapability = rte_cryptodev_asym_capability_get(dev_id, &cap_idx);\n-\n-\tif (capability == NULL) {\n-\t\tRTE_LOG(INFO, USER1,\n-\t\t\t\"Device doesn't support MODEX. Test Skipped\\n\");\n-\t\treturn TEST_SKIPPED;\n-\t}\n-\n-\t/* Generate crypto op data structure */\n-\top = rte_crypto_op_alloc(params->op_mpool,\n-\t\tRTE_CRYPTO_OP_TYPE_ASYMMETRIC);\n-\n-\tif (!op) {\n-\t\tsnprintf(test_msg, ASYM_TEST_MSG_LEN,\n-\t\t\t\"line %u FAILED: %s\",\n-\t\t\t__LINE__, \"Failed to allocate asymmetric crypto \"\n-\t\t\t\"operation struct\");\n-\t\tstatus = TEST_FAILED;\n-\t\tgoto error_exit;\n-\t}\n-\n-\tasym_op = op->asym;\n-\n-\tswitch (xform_tc.xform_type) {\n-\tcase RTE_CRYPTO_ASYM_XFORM_MODEX:\n-\t\tresult = rte_zmalloc(NULL, data_tc->modex.result_len, 0);\n-\t\txform_tc.modex.modulus.data = data_tc->modex.modulus.data;\n-\t\txform_tc.modex.modulus.length = data_tc->modex.modulus.len;\n-\t\txform_tc.modex.exponent.data = data_tc->modex.exponent.data;\n-\t\txform_tc.modex.exponent.length = data_tc->modex.exponent.len;\n-\t\tmemcpy(input, data_tc->modex.base.data,\n-\t\t\tdata_tc->modex.base.len);\n-\t\tasym_op->modex.base.data = input;\n-\t\tasym_op->modex.base.length = data_tc->modex.base.len;\n-\t\tasym_op->modex.result.data = result;\n-\t\tasym_op->modex.result.length = data_tc->modex.result_len;\n-\t\tif (rte_cryptodev_asym_xform_capability_check_modlen(capability,\n-\t\t\t\txform_tc.modex.modulus.length)) {\n-\t\t\tsnprintf(test_msg, ASYM_TEST_MSG_LEN,\n-\t\t\t\t\"line %u \"\n-\t\t\t\t\"FAILED: %s\", __LINE__,\n-\t\t\t\t\"Invalid MODULUS length specified\");\n-\t\t\tstatus = TEST_FAILED;\n-\t\t\tgoto error_exit;\n-\t\t}\n-\t\tbreak;\n-\tcase RTE_CRYPTO_ASYM_XFORM_MODINV:\n-\t\tresult = rte_zmalloc(NULL, data_tc->modinv.result_len, 0);\n-\t\txform_tc.modinv.modulus.data = data_tc->modinv.modulus.data;\n-\t\txform_tc.modinv.modulus.length = data_tc->modinv.modulus.len;\n-\t\tmemcpy(input, data_tc->modinv.base.data,\n-\t\t\tdata_tc->modinv.base.len);\n-\t\tasym_op->modinv.base.data = input;\n-\t\tasym_op->modinv.base.length = data_tc->modinv.base.len;\n-\t\tasym_op->modinv.result.data = result;\n-\t\tasym_op->modinv.result.length = data_tc->modinv.result_len;\n-\t\tif (rte_cryptodev_asym_xform_capability_check_modlen(capability,\n-\t\t\t\txform_tc.modinv.modulus.length)) {\n-\t\t\tsnprintf(test_msg, ASYM_TEST_MSG_LEN,\n-\t\t\t\t\"line %u \"\n-\t\t\t\t\"FAILED: %s\", __LINE__,\n-\t\t\t\t\"Invalid MODULUS length specified\");\n-\t\t\tstatus = TEST_FAILED;\n-\t\t\tgoto error_exit;\n-\t\t}\n-\t\tbreak;\n-\tcase RTE_CRYPTO_ASYM_XFORM_RSA:\n-\t\tresult = rte_zmalloc(NULL, data_tc->rsa_data.n.len, 0);\n-\t\top->asym->rsa.op_type = type;\n-\t\txform_tc.rsa.e.data = data_tc->rsa_data.e.data;\n-\t\txform_tc.rsa.e.length = data_tc->rsa_data.e.len;\n-\t\txform_tc.rsa.n.data = data_tc->rsa_data.n.data;\n-\t\txform_tc.rsa.n.length = data_tc->rsa_data.n.len;\n-\n-\t\tif (key_type == RTE_RSA_KEY_TYPE_EXP) {\n-\t\t\txform_tc.rsa.d.data = data_tc->rsa_data.d.data;\n-\t\t\txform_tc.rsa.d.length = data_tc->rsa_data.d.len;\n-\t\t} else {\n-\t\t\txform_tc.rsa.qt.p.data = data_tc->rsa_data.p.data;\n-\t\t\txform_tc.rsa.qt.p.length = data_tc->rsa_data.p.len;\n-\t\t\txform_tc.rsa.qt.q.data = data_tc->rsa_data.q.data;\n-\t\t\txform_tc.rsa.qt.q.length = data_tc->rsa_data.q.len;\n-\t\t\txform_tc.rsa.qt.dP.data = data_tc->rsa_data.dP.data;\n-\t\t\txform_tc.rsa.qt.dP.length = data_tc->rsa_data.dP.len;\n-\t\t\txform_tc.rsa.qt.dQ.data = data_tc->rsa_data.dQ.data;\n-\t\t\txform_tc.rsa.qt.dQ.length = data_tc->rsa_data.dQ.len;\n-\t\t\txform_tc.rsa.qt.qInv.data = data_tc->rsa_data.qInv.data;\n-\t\t\txform_tc.rsa.qt.qInv.length = data_tc->rsa_data.qInv.len;\n-\t\t}\n-\n-\t\txform_tc.rsa.key_type = key_type;\n-\t\top->asym->rsa.padding.type = data_tc->rsa_data.padding;\n-\n-\t\tif (op->asym->rsa.op_type == RTE_CRYPTO_ASYM_OP_ENCRYPT) {\n-\t\t\tasym_op->rsa.message.data = data_tc->rsa_data.pt.data;\n-\t\t\tasym_op->rsa.message.length = data_tc->rsa_data.pt.len;\n-\t\t\tasym_op->rsa.cipher.data = result;\n-\t\t\tasym_op->rsa.cipher.length = data_tc->rsa_data.n.len;\n-\t\t} else if (op->asym->rsa.op_type == RTE_CRYPTO_ASYM_OP_DECRYPT) {\n-\t\t\tasym_op->rsa.message.data = result;\n-\t\t\tasym_op->rsa.message.length = data_tc->rsa_data.n.len;\n-\t\t\tasym_op->rsa.cipher.data = data_tc->rsa_data.ct.data;\n-\t\t\tasym_op->rsa.cipher.length = data_tc->rsa_data.ct.len;\n-\t\t} else if (op->asym->rsa.op_type == RTE_CRYPTO_ASYM_OP_SIGN) {\n-\t\t\tasym_op->rsa.sign.data = result;\n-\t\t\tasym_op->rsa.sign.length = data_tc->rsa_data.n.len;\n-\t\t\tasym_op->rsa.message.data = data_tc->rsa_data.pt.data;\n-\t\t\tasym_op->rsa.message.length = data_tc->rsa_data.pt.len;\n-\t\t} else if (op->asym->rsa.op_type == RTE_CRYPTO_ASYM_OP_VERIFY) {\n-\t\t\tasym_op->rsa.cipher.data = result;\n-\t\t\tasym_op->rsa.cipher.length = data_tc->rsa_data.n.len;\n-\t\t\tasym_op->rsa.sign.data = data_tc->rsa_data.sign.data;\n-\t\t\tasym_op->rsa.sign.length = data_tc->rsa_data.sign.len;\n-\t\t}\n-\t\tbreak;\n-\tcase RTE_CRYPTO_ASYM_XFORM_DH:\n-\tcase RTE_CRYPTO_ASYM_XFORM_DSA:\n-\tcase RTE_CRYPTO_ASYM_XFORM_NONE:\n-\tcase RTE_CRYPTO_ASYM_XFORM_UNSPECIFIED:\n-\tdefault:\n-\t\tsnprintf(test_msg, ASYM_TEST_MSG_LEN,\n-\t\t\t\t\"line %u \"\n-\t\t\t\t\"FAILED: %s\", __LINE__,\n-\t\t\t\t\"Invalid ASYM algorithm specified\");\n-\t\tstatus = TEST_FAILED;\n-\t\tgoto error_exit;\n-\t}\n-\n-\tif (!sessionless) {\n-\t\tret = rte_cryptodev_asym_session_create(dev_id, &xform_tc,\n-\t\t\t\tparams->session_mpool, &sess);\n-\t\tif (ret < 0) {\n-\t\t\tsnprintf(test_msg, ASYM_TEST_MSG_LEN,\n-\t\t\t\t\t\"line %u \"\n-\t\t\t\t\t\"FAILED: %s\", __LINE__,\n-\t\t\t\t\t\"Session creation failed\");\n-\t\t\tstatus = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;\n-\t\t\tgoto error_exit;\n-\t\t}\n-\n-\t\trte_crypto_op_attach_asym_session(op, sess);\n-\t} else {\n-\t\tasym_op->xform = &xform_tc;\n-\t\top->sess_type = RTE_CRYPTO_OP_SESSIONLESS;\n-\t}\n-\tRTE_LOG(DEBUG, USER1, \"Process ASYM operation\");\n-\n-\t/* Process crypto operation */\n-\tif (rte_cryptodev_enqueue_burst(dev_id, 0, &op, 1) != 1) {\n-\t\tsnprintf(test_msg, ASYM_TEST_MSG_LEN,\n-\t\t\t\t\"line %u FAILED: %s\",\n-\t\t\t\t__LINE__, \"Error sending packet for operation\");\n-\t\tstatus = TEST_FAILED;\n-\t\tgoto error_exit;\n-\t}\n-\n-\twhile (rte_cryptodev_dequeue_burst(dev_id, 0, &result_op, 1) == 0)\n-\t\trte_pause();\n-\n-\tif (result_op == NULL) {\n-\t\tsnprintf(test_msg, ASYM_TEST_MSG_LEN,\n-\t\t\t\t\"line %u FAILED: %s\",\n-\t\t\t\t__LINE__, \"Failed to process asym crypto op\");\n-\t\tstatus = TEST_FAILED;\n-\t\tgoto error_exit;\n-\t}\n-\n-\tif (test_cryptodev_asym_ver(op, &xform_tc, data_tc, result_op) != TEST_SUCCESS) {\n-\t\tsnprintf(test_msg, ASYM_TEST_MSG_LEN,\n-\t\t\t\"line %u FAILED: %s\",\n-\t\t\t__LINE__, \"Verification failed \");\n-\t\tstatus = TEST_FAILED;\n-\t\tgoto error_exit;\n-\t}\n-\n-\tif (!sessionless)\n-\t\tsnprintf(test_msg, ASYM_TEST_MSG_LEN, \"PASS\");\n-\telse\n-\t\tsnprintf(test_msg, ASYM_TEST_MSG_LEN, \"SESSIONLESS PASS\");\n-\n-error_exit:\n-\t\tif (sess != NULL)\n-\t\t\trte_cryptodev_asym_session_free(dev_id, sess);\n-\n-\t\trte_crypto_op_free(op);\n-\n-\t\trte_free(result);\n-\n-\treturn status;\n-}\n-\n-static int\n-test_one_case(const void *test_case, int sessionless)\n-{\n-\tint status = TEST_SUCCESS, i = 0;\n-\tchar test_msg[ASYM_TEST_MSG_LEN + 1];\n-\n-\t/* Map the case to union */\n-\tunion test_case_structure tc;\n-\tmemcpy(&tc, test_case, sizeof(tc));\n-\n-\tif (tc.modex.xform_type == RTE_CRYPTO_ASYM_XFORM_MODEX\n-\t\t\t|| tc.modex.xform_type == RTE_CRYPTO_ASYM_XFORM_MODINV) {\n-\t\tstatus = test_cryptodev_asym_op(params, &tc, test_msg,\n-\t\t\t\tsessionless, 0, 0);\n-\t\tprintf(\"  %u) TestCase %s %s\\n\", test_index++,\n-\t\t\ttc.modex.description, test_msg);\n-\t} else {\n-\t\tfor (i = 0; i < RTE_CRYPTO_ASYM_OP_LIST_END; i++) {\n-\t\t\tif (tc.modex.xform_type == RTE_CRYPTO_ASYM_XFORM_RSA) {\n-\t\t\t\tif (tc.rsa_data.op_type_flags & (1 << i)) {\n-\t\t\t\t\tif (tc.rsa_data.key_exp) {\n-\t\t\t\t\t\tstatus = test_cryptodev_asym_op(\n-\t\t\t\t\t\t\tparams, &tc,\n-\t\t\t\t\t\t\ttest_msg, sessionless, i,\n-\t\t\t\t\t\t\tRTE_RSA_KEY_TYPE_EXP);\n-\t\t\t\t\t}\n-\t\t\t\t\tif (status)\n-\t\t\t\t\t\tbreak;\n-\t\t\t\t\tif (tc.rsa_data.key_qt && (i ==\n-\t\t\t\t\t\t\tRTE_CRYPTO_ASYM_OP_DECRYPT ||\n-\t\t\t\t\t\t\ti == RTE_CRYPTO_ASYM_OP_SIGN)) {\n-\t\t\t\t\t\tstatus = test_cryptodev_asym_op(\n-\t\t\t\t\t\t\tparams,\n-\t\t\t\t\t\t\t&tc, test_msg, sessionless, i,\n-\t\t\t\t\t\t\tRTE_RSA_KEY_TYPE_QT);\n-\t\t\t\t\t}\n-\t\t\t\t\tif (status)\n-\t\t\t\t\t\tbreak;\n-\t\t\t\t}\n-\t\t\t}\n-\t\t}\n-\t\tprintf(\"  %u) TestCase %s %s\\n\", test_index++,\n-\t\t\ttc.modex.description, test_msg);\n-\t}\n-\n-\treturn status;\n-}\n-\n-static int\n-load_test_vectors(void)\n-{\n-\tuint32_t i = 0, v_size = 0;\n-\t/* Load RSA vector*/\n-\tv_size = RTE_DIM(rsa_test_case_list);\n-\tfor (i = 0; i < v_size; i++) {\n-\t\tif (test_vector.size >= (TEST_VECTOR_SIZE)) {\n-\t\t\tRTE_LOG(DEBUG, USER1,\n-\t\t\t\t\"TEST_VECTOR_SIZE too small\\n\");\n-\t\t\treturn -1;\n-\t\t}\n-\t\ttest_vector.address[test_vector.size] = &rsa_test_case_list[i];\n-\t\ttest_vector.size++;\n-\t}\n-\treturn 0;\n-}\n-\n-static int\n-test_one_by_one(void)\n-{\n-\tint status = TEST_SUCCESS;\n-\tuint32_t i = 0;\n-\tuint8_t dev_id = params->valid_devs[0];\n-\tstruct rte_cryptodev_info dev_info;\n-\tint sessionless = 0;\n-\n-\trte_cryptodev_info_get(dev_id, &dev_info);\n-\tif ((dev_info.feature_flags &\n-\t\t\tRTE_CRYPTODEV_FF_ASYM_SESSIONLESS)) {\n-\t\tsessionless = 1;\n-\t}\n-\n-\t/* Go through all test cases */\n-\ttest_index = 0;\n-\tfor (i = 0; i < test_vector.size; i++) {\n-\t\tif (test_one_case(test_vector.address[i], 0) != TEST_SUCCESS)\n-\t\t\tstatus = TEST_FAILED;\n-\t}\n-\tif (sessionless) {\n-\t\tfor (i = 0; i < test_vector.size; i++) {\n-\t\t\tif (test_one_case(test_vector.address[i], 1)\n-\t\t\t\t\t!= TEST_SUCCESS)\n-\t\t\t\tstatus = TEST_FAILED;\n-\t\t}\n-\t}\n-\n-\tTEST_ASSERT_EQUAL(status, 0, \"Test failed\");\n-\treturn status;\n-}\n-\n-static int\n-test_rsa_sign_verify(void)\n-{\n-\tstruct rte_mempool *sess_mpool = params->session_mpool;\n-\tuint8_t dev_id = params->valid_devs[0];\n-\tvoid *sess = NULL;\n-\tstruct rte_cryptodev_info dev_info;\n-\tint ret, status = TEST_SUCCESS;\n-\n-\t/* Test case supports op with exponent key only,\n-\t * Check in PMD feature flag for RSA exponent key type support.\n-\t */\n-\trte_cryptodev_info_get(dev_id, &dev_info);\n-\tif (!(dev_info.feature_flags &\n-\t\t\t\tRTE_CRYPTODEV_FF_RSA_PRIV_OP_KEY_EXP)) {\n-\t\tRTE_LOG(INFO, USER1, \"Device doesn't support sign op with \"\n-\t\t\t\"exponent key type. Test Skipped\\n\");\n-\t\treturn TEST_SKIPPED;\n-\t}\n-\n-\tret = rte_cryptodev_asym_session_create(dev_id, &rsa_xform, sess_mpool, &sess);\n-\n-\tif (ret < 0) {\n-\t\tRTE_LOG(ERR, USER1, \"Session creation failed for \"\n-\t\t\t\"sign_verify\\n\");\n-\t\tstatus = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;\n-\t\tgoto error_exit;\n-\t}\n-\n-\tstatus = queue_ops_rsa_sign_verify(sess);\n-\n-error_exit:\n-\trte_cryptodev_asym_session_free(dev_id, sess);\n-\n-\tTEST_ASSERT_EQUAL(status, 0, \"Test failed\");\n-\n-\treturn status;\n-}\n-\n-static int\n-test_rsa_enc_dec(void)\n-{\n-\tstruct rte_mempool *sess_mpool = params->session_mpool;\n-\tuint8_t dev_id = params->valid_devs[0];\n-\tvoid *sess = NULL;\n-\tstruct rte_cryptodev_info dev_info;\n-\tint ret, status = TEST_SUCCESS;\n-\n-\t/* Test case supports op with exponent key only,\n-\t * Check in PMD feature flag for RSA exponent key type support.\n-\t */\n-\trte_cryptodev_info_get(dev_id, &dev_info);\n-\tif (!(dev_info.feature_flags &\n-\t\t\t\tRTE_CRYPTODEV_FF_RSA_PRIV_OP_KEY_EXP)) {\n-\t\tRTE_LOG(INFO, USER1, \"Device doesn't support decrypt op with \"\n-\t\t\t\"exponent key type. Test skipped\\n\");\n-\t\treturn TEST_SKIPPED;\n-\t}\n-\n-\tret = rte_cryptodev_asym_session_create(dev_id, &rsa_xform, sess_mpool, &sess);\n-\n-\tif (ret < 0) {\n-\t\tRTE_LOG(ERR, USER1, \"Session creation failed for enc_dec\\n\");\n-\t\tstatus = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;\n-\t\tgoto error_exit;\n-\t}\n-\n-\tstatus = queue_ops_rsa_enc_dec(sess);\n-\n-error_exit:\n-\n-\trte_cryptodev_asym_session_free(dev_id, sess);\n-\n-\tTEST_ASSERT_EQUAL(status, 0, \"Test failed\");\n-\n-\treturn status;\n-}\n-\n-static int\n-test_rsa_sign_verify_crt(void)\n-{\n-\tstruct rte_mempool *sess_mpool = params->session_mpool;\n-\tuint8_t dev_id = params->valid_devs[0];\n-\tvoid *sess = NULL;\n-\tstruct rte_cryptodev_info dev_info;\n-\tint ret, status = TEST_SUCCESS;\n-\n-\t/* Test case supports op with quintuple format key only,\n-\t * Check im PMD feature flag for RSA quintuple key type support.\n-\t */\n-\trte_cryptodev_info_get(dev_id, &dev_info);\n-\tif (!(dev_info.feature_flags & RTE_CRYPTODEV_FF_RSA_PRIV_OP_KEY_QT)) {\n-\t\tRTE_LOG(INFO, USER1, \"Device doesn't support sign op with \"\n-\t\t\t\"quintuple key type. Test skipped\\n\");\n-\t\treturn TEST_SKIPPED;\n-\t}\n-\n-\tret = rte_cryptodev_asym_session_create(dev_id, &rsa_xform_crt, sess_mpool, &sess);\n-\n-\tif (ret < 0) {\n-\t\tRTE_LOG(ERR, USER1, \"Session creation failed for \"\n-\t\t\t\"sign_verify_crt\\n\");\n-\t\tstatus = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;\n-\t\tgoto error_exit;\n-\t}\n-\n-\tstatus = queue_ops_rsa_sign_verify(sess);\n-\n-error_exit:\n-\n-\trte_cryptodev_asym_session_free(dev_id, sess);\n-\n-\tTEST_ASSERT_EQUAL(status, 0, \"Test failed\");\n-\n-\treturn status;\n-}\n-\n-static int\n-test_rsa_enc_dec_crt(void)\n-{\n-\tstruct rte_mempool *sess_mpool = params->session_mpool;\n-\tuint8_t dev_id = params->valid_devs[0];\n-\tvoid *sess = NULL;\n-\tstruct rte_cryptodev_info dev_info;\n-\tint ret, status = TEST_SUCCESS;\n-\n-\t/* Test case supports op with quintuple format key only,\n-\t * Check in PMD feature flag for RSA quintuple key type support.\n-\t */\n-\trte_cryptodev_info_get(dev_id, &dev_info);\n-\tif (!(dev_info.feature_flags & RTE_CRYPTODEV_FF_RSA_PRIV_OP_KEY_QT)) {\n-\t\tRTE_LOG(INFO, USER1, \"Device doesn't support decrypt op with \"\n-\t\t\t\"quintuple key type. Test skipped\\n\");\n-\t\treturn TEST_SKIPPED;\n-\t}\n-\n-\tret = rte_cryptodev_asym_session_create(dev_id, &rsa_xform_crt, sess_mpool, &sess);\n-\n-\tif (ret < 0) {\n-\t\tRTE_LOG(ERR, USER1, \"Session creation failed for \"\n-\t\t\t\"enc_dec_crt\\n\");\n-\t\tstatus = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;\n-\t\tgoto error_exit;\n-\t}\n-\n-\tstatus = queue_ops_rsa_enc_dec(sess);\n-\n-error_exit:\n-\n-\trte_cryptodev_asym_session_free(dev_id, sess);\n-\n-\tTEST_ASSERT_EQUAL(status, 0, \"Test failed\");\n-\n-\treturn status;\n-}\n-\n static int\n testsuite_setup(void)\n {\n@@ -809,7 +74,6 @@ testsuite_setup(void)\n \tmemset(params, 0, sizeof(*params));\n \n \ttest_vector.size = 0;\n-\tload_test_vectors();\n \n \t/* Device, op pool and session configuration for asymmetric crypto. 8< */\n \tparams->op_mpool = rte_crypto_op_pool_create(\n@@ -995,6 +259,283 @@ test_capability(void)\n \treturn TEST_SUCCESS;\n }\n \n+static int send(struct rte_crypto_op **op,\n+\t\tstruct rte_crypto_op **result_op)\n+{\n+\tint ticks = 0;\n+\n+\tif (rte_cryptodev_enqueue_burst(params->valid_devs[0], 0,\n+\t\t\top, 1) != 1) {\n+\t\tRTE_LOG(ERR, USER1,\n+\t\t\t\"line %u FAILED: Error sending packet for operation on device %d\",\n+\t\t\t__LINE__, params->valid_devs[0]);\n+\t\treturn TEST_FAILED;\n+\t}\n+\twhile (rte_cryptodev_dequeue_burst(params->valid_devs[0], 0,\n+\t\t\tresult_op, 1) == 0) {\n+\t\trte_delay_ms(1);\n+\t\tticks++;\n+\t\tif (ticks >= DEQ_TIMEOUT) {\n+\t\t\tRTE_LOG(ERR, USER1,\n+\t\t\t\t\"line %u FAILED: Cannot dequeue the crypto op on device %d\",\n+\t\t\t\t__LINE__, params->valid_devs[0]);\n+\t\t\treturn TEST_FAILED;\n+\t\t}\n+\t}\n+\tTEST_ASSERT_NOT_NULL(*result_op,\n+\t\t\t\"line %u FAILED: Failed to process asym crypto op\",\n+\t\t\t__LINE__);\n+\tTEST_ASSERT_SUCCESS((*result_op)->status,\n+\t\t\t\"line %u FAILED: Failed to process asym crypto op, error status received\",\n+\t\t\t__LINE__);\n+\treturn TEST_SUCCESS;\n+}\n+\n+#define SET_RSA_PARAM(arg, vector, coef) \\\n+\tuint8_t coef[TEST_DATA_SIZE] = { }; \\\n+\tmemcpy(coef, vector->coef.data, vector->coef.len); \\\n+\targ.coef.data = coef; \\\n+\targ.coef.length = vector->coef.len\n+\n+#define SET_RSA_PARAM_QT(arg, vector, coef) \\\n+\tuint8_t coef[TEST_DATA_SIZE] = { }; \\\n+\tmemcpy(coef, vector->coef.data, vector->coef.len); \\\n+\targ.qt.coef.data = coef; \\\n+\targ.qt.coef.length = vector->coef.len\n+\n+static int\n+RSA_Sign_Verify(const struct rsa_test_data_2 *vector)\n+{\n+\tuint8_t output_buf[TEST_DATA_SIZE];\n+\n+\tself->op->asym->rsa.op_type = RTE_CRYPTO_ASYM_OP_SIGN;\n+\tself->op->asym->rsa.sign.length = 0;\n+\tself->op->asym->rsa.sign.data = output_buf;\n+\tSET_RSA_PARAM(self->op->asym->rsa, vector, message);\n+\tself->op->asym->rsa.padding.type = vector->padding;\n+\trte_crypto_op_attach_asym_session(self->op, self->sess);\n+\tTEST_ASSERT_SUCCESS(send(&self->op, &self->result_op),\n+\t\t\"Failed to process crypto op (RSA Signature)\");\n+\n+\tself->op->asym->rsa.op_type = RTE_CRYPTO_ASYM_OP_VERIFY;\n+\tself->op->asym->rsa.padding.type = vector->padding;\n+\tTEST_ASSERT_SUCCESS(send(&self->op, &self->result_op),\n+\t\t\"Failed to process crypto op (RSA Verify)\");\n+\n+\treturn TEST_SUCCESS;\n+}\n+\n+static int\n+RSA_Encrypt(const struct rsa_test_data_2 *vector, uint8_t *cipher_buf)\n+{\n+\tself->result_op = NULL;\n+\t/* Compute encryption on the test vector */\n+\tself->op->asym->rsa.op_type = RTE_CRYPTO_ASYM_OP_ENCRYPT;\n+\tself->op->asym->rsa.cipher.data = cipher_buf;\n+\tself->op->asym->rsa.cipher.length = 0;\n+\tSET_RSA_PARAM(self->op->asym->rsa, vector, message);\n+\tself->op->asym->rsa.padding.type = vector->padding;\n+\n+\trte_crypto_op_attach_asym_session(self->op, self->sess);\n+\tTEST_ASSERT_SUCCESS(send(&self->op, &self->result_op),\n+\t\t\"Failed to process crypto op (Enryption)\");\n+\n+\treturn 0;\n+}\n+\n+static int\n+RSA_Decrypt(const struct rsa_test_data_2 *vector, uint8_t *plaintext,\n+\t\tconst int use_op)\n+{\n+\tuint8_t cipher[TEST_DATA_SIZE] = { 0 };\n+\n+\tif (use_op == 0) {\n+\t\tmemcpy(cipher, vector->cipher.data, vector->cipher.len);\n+\t\tself->op->asym->rsa.cipher.data = cipher;\n+\t\tself->op->asym->rsa.cipher.length = vector->cipher.len;\n+\t}\n+\tself->result_op = NULL;\n+\tself->op->asym->rsa.message.data = plaintext;\n+\tself->op->asym->rsa.message.length = 0;\n+\tself->op->asym->rsa.op_type = RTE_CRYPTO_ASYM_OP_DECRYPT;\n+\tself->op->asym->rsa.padding.type = vector->padding;\n+\trte_crypto_op_attach_asym_session(self->op, self->sess);\n+\tTEST_ASSERT_SUCCESS(send(&self->op, &self->result_op),\n+\t\t\"Failed to process crypto op (Decryption)\");\n+\treturn 0;\n+}\n+\n+static void\n+RSA_key_init_Exp(struct rte_crypto_asym_xform *xform,\n+\t\tconst struct rsa_test_data_2 *vector)\n+{\n+\tSET_RSA_PARAM(xform->rsa, vector, n);\n+\tSET_RSA_PARAM(xform->rsa, vector, e);\n+\tSET_RSA_PARAM(xform->rsa, vector, d);\n+\txform->rsa.key_type = RTE_RSA_KEY_TYPE_EXP;\n+}\n+\n+static void\n+RSA_key_init_CRT(struct rte_crypto_asym_xform *xform,\n+\t\tconst struct rsa_test_data_2 *vector)\n+{\n+\tSET_RSA_PARAM(xform->rsa, vector, n);\n+\tSET_RSA_PARAM(xform->rsa, vector, e);\n+\tSET_RSA_PARAM_QT(xform->rsa, vector, p);\n+\tSET_RSA_PARAM_QT(xform->rsa, vector, q);\n+\tSET_RSA_PARAM_QT(xform->rsa, vector, dP);\n+\tSET_RSA_PARAM_QT(xform->rsa, vector, dQ);\n+\tSET_RSA_PARAM_QT(xform->rsa, vector, qInv);\n+\txform->rsa.key_type = RTE_RSA_KEY_TYPE_QT;\n+}\n+\n+typedef void (*rsa_key_init_t)(struct rte_crypto_asym_xform *,\n+\tconst struct rsa_test_data_2 *);\n+\n+static int\n+RSA_Init_Session(const struct rsa_test_data_2 *vector,\n+\trsa_key_init_t key_init)\n+{\n+\tconst uint8_t dev_id = params->valid_devs[0];\n+\tstruct rte_cryptodev_info dev_info;\n+\tstruct rte_crypto_asym_xform xform = { };\n+\tint ret = 0;\n+\n+\tkey_init(&xform, vector);\n+\txform.xform_type = RTE_CRYPTO_ASYM_XFORM_RSA;\n+\n+\trte_cryptodev_info_get(dev_id, &dev_info);\n+\tif (!(dev_info.feature_flags & RTE_CRYPTODEV_FF_RSA_PRIV_OP_KEY_QT)) {\n+\t\tRTE_LOG(INFO, USER1,\n+\t\t\t\"Device doesn't support decrypt op with quintuple key type. Test skipped\\n\");\n+\t\treturn TEST_SKIPPED;\n+\t}\n+\tret = rte_cryptodev_asym_session_create(dev_id, &xform,\n+\t\tparams->session_mpool, &self->sess);\n+\tif (ret < 0) {\n+\t\tRTE_LOG(ERR, USER1,\n+\t\t\t\"Session creation failed for enc_dec_crt\\n\");\n+\t\treturn (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;\n+\t}\n+\treturn 0;\n+}\n+\n+static int\n+PWCT_RSA_Encrypt_Decrypt(const void *data)\n+{\n+\tuint8_t cipher_buf[TEST_DATA_SIZE] = {0};\n+\tuint8_t message[TEST_DATA_SIZE] = {0};\n+\tconst struct rsa_test_data_2 *vector = data;\n+\tint ret = RSA_Init_Session(vector, RSA_key_init_Exp);\n+\n+\tif (ret) {\n+\t\tRTE_LOG(ERR, USER1, \"Failed to init session for RSA\\n\");\n+\t\treturn ret;\n+\t}\n+\tTEST_ASSERT_SUCCESS(RSA_Encrypt(vector, cipher_buf),\n+\t\t\"RSA: Failed to encrypt\");\n+\tTEST_ASSERT_SUCCESS(RSA_Decrypt(vector, message, 1),\n+\t\t\"RSA: Failed to decrypt\");\n+\tTEST_ASSERT_BUFFERS_ARE_EQUAL(vector->message.data,\n+\t\tself->result_op->asym->rsa.message.data,\n+\t\tvector->message.len,\n+\t\t\"operation verification failed\\n\");\n+\treturn TEST_SUCCESS;\n+}\n+\n+static int\n+PWCT_RSA_CRT_Encrypt_Decrypt(const void *data)\n+{\n+\tuint8_t cipher_buf[TEST_DATA_SIZE] = {0};\n+\tuint8_t message[TEST_DATA_SIZE] = {0};\n+\tconst struct rsa_test_data_2 *vector = data;\n+\tint ret = RSA_Init_Session(vector, RSA_key_init_CRT);\n+\n+\tif (ret) {\n+\t\tRTE_LOG(ERR, USER1, \"Failed to init session for RSA\\n\");\n+\t\treturn ret;\n+\t}\n+\tTEST_ASSERT_SUCCESS(RSA_Encrypt(vector, cipher_buf),\n+\t\t\"RSA: Failed to encrypt\");\n+\tTEST_ASSERT_SUCCESS(RSA_Decrypt(vector, message, 1),\n+\t\t\"RSA: Failed to decrypt\");\n+\tTEST_ASSERT_BUFFERS_ARE_EQUAL(vector->message.data,\n+\t\tself->result_op->asym->rsa.message.data,\n+\t\tvector->message.len,\n+\t\t\"operation verification failed\\n\");\n+\treturn TEST_SUCCESS;\n+}\n+\n+static int\n+PWCT_RSA_Sign_Verify(const void *data)\n+{\n+\tconst struct rsa_test_data_2 *vector = data;\n+\tint ret = RSA_Init_Session(vector, RSA_key_init_Exp);\n+\n+\tif (ret) {\n+\t\tRTE_LOG(ERR, USER1, \"Failed to init session for RSA\\n\");\n+\t\treturn ret;\n+\t}\n+\tTEST_ASSERT_SUCCESS(RSA_Sign_Verify(vector),\n+\t\t\"Failed to process RSA operation\");\n+\treturn TEST_SUCCESS;\n+}\n+\n+static int\n+PWCT_RSA_Sign_Verify_CRT(const void *data)\n+{\n+\tconst struct rsa_test_data_2 *vector = data;\n+\tint ret = RSA_Init_Session(vector, RSA_key_init_CRT);\n+\n+\tif (ret) {\n+\t\tRTE_LOG(ERR, USER1, \"Failed to init session for RSA\\n\");\n+\t\treturn ret;\n+\t}\n+\tTEST_ASSERT_SUCCESS(RSA_Sign_Verify(vector),\n+\t\t\"Failed to process RSA operation\");\n+\treturn TEST_SUCCESS;\n+}\n+\n+static int\n+KAT_RSA_Encrypt(const void *data)\n+{\n+\tuint8_t cipher_buf[TEST_DATA_SIZE] = {0};\n+\tconst struct rsa_test_data_2 *vector = data;\n+\tint ret = RSA_Init_Session(vector, RSA_key_init_Exp);\n+\n+\tif (ret) {\n+\t\tRTE_LOG(ERR, USER1, \"Failed to init session for RSA\\n\");\n+\t\treturn ret;\n+\t}\n+\tTEST_ASSERT_SUCCESS(RSA_Encrypt(vector, cipher_buf),\n+\t\t\"RSA: Failed to encrypt\");\n+\tTEST_ASSERT_BUFFERS_ARE_EQUAL(vector->cipher.data,\n+\t\tself->result_op->asym->rsa.cipher.data,\n+\t\tvector->cipher.len,\n+\t\t\"operation verification failed\\n\");\n+\treturn 0;\n+}\n+\n+static int\n+KAT_RSA_Decrypt(const void *data)\n+{\n+\tuint8_t message[TEST_DATA_SIZE] = {0};\n+\tconst struct rsa_test_data_2 *vector = data;\n+\tint ret = RSA_Init_Session(vector, RSA_key_init_Exp);\n+\n+\tif (ret) {\n+\t\tRTE_LOG(ERR, USER1, \"Failed to init session for RSA\\n\");\n+\t\treturn ret;\n+\t}\n+\tTEST_ASSERT_SUCCESS(RSA_Decrypt(vector, message, 0),\n+\t\t\"RSA: Failed to encrypt\");\n+\tTEST_ASSERT_BUFFERS_ARE_EQUAL(vector->message.data,\n+\t\tself->result_op->asym->rsa.message.data,\n+\t\tvector->message.len,\n+\t\t\"operation verification failed\\n\");\n+\treturn 0;\n+}\n+\n static int\n test_dh_gen_shared_sec(struct rte_crypto_asym_xform *xfrm)\n {\n@@ -2068,14 +1609,24 @@ static struct unit_test_suite cryptodev_openssl_asym_testsuite  = {\n \t\tTEST_CASE_ST(setup_generic, teardown_generic, test_dsa),\n \t\tTEST_CASE_ST(setup_generic, teardown_generic,\n \t\t\t\ttest_dh_keygenration),\n-\t\tTEST_CASE_ST(setup_generic, teardown_generic, test_rsa_enc_dec),\n-\t\tTEST_CASE_ST(setup_generic, teardown_generic,\n-\t\t\t\ttest_rsa_sign_verify),\n-\t\tTEST_CASE_ST(setup_generic, teardown_generic,\n-\t\t\t\ttest_rsa_enc_dec_crt),\n-\t\tTEST_CASE_ST(setup_generic, teardown_generic,\n-\t\t\t\ttest_rsa_sign_verify_crt),\n-\t\tTEST_CASE_ST(setup_generic, teardown_generic, test_one_by_one),\n+\t\t/* RSA */\n+\t\tTEST_CASE_NAMED_WITH_DATA(\n+\t\t\t\"RSA Encryption Decryption (n=128, pt=20, e=3) EXP\",\n+\t\t\tsetup_generic, teardown_generic,\n+\t\t\tPWCT_RSA_Encrypt_Decrypt, &RSA_vector_128_20_3_PKCS1),\n+\t\tTEST_CASE_NAMED_WITH_DATA(\n+\t\t\t\"RSA Encryption Decryption (n=128, pt=20, e=3) CRT\",\n+\t\t\tsetup_generic, teardown_generic,\n+\t\t\tPWCT_RSA_CRT_Encrypt_Decrypt,\n+\t\t\t&RSA_vector_128_20_3_PKCS1),\n+\t\tTEST_CASE_NAMED_WITH_DATA(\n+\t\t\t\"RSA Sign Verify (n=128, pt=20, e=3) EXP\",\n+\t\t\tsetup_generic, teardown_generic,\n+\t\t\tPWCT_RSA_Sign_Verify, &RSA_vector_128_20_3_PKCS1),\n+\t\tTEST_CASE_NAMED_WITH_DATA(\n+\t\t\t\"RSA Sign Verify (n=128, pt=20, e=3) CRT\",\n+\t\t\tsetup_generic, teardown_generic,\n+\t\t\tPWCT_RSA_Sign_Verify_CRT, &RSA_vector_128_20_3_PKCS1),\n \t\t/* Modular Exponentiation */\n \t\tTEST_CASE_NAMED_WITH_DATA(\n \t\t\t\"Modular Exponentiation (mod=128, base=20, exp=3, res=128)\",\n@@ -2107,7 +1658,15 @@ static struct unit_test_suite cryptodev_qat_asym_testsuite  = {\n \t.setup = testsuite_setup,\n \t.teardown = testsuite_teardown,\n \t.unit_test_cases = {\n-\t\tTEST_CASE_ST(setup_generic, teardown_generic, test_one_by_one),\n+\t\t/* RSA */\n+\t\tTEST_CASE_NAMED_WITH_DATA(\n+\t\t\t\"RSA Encryption (n=128, pt=20, e=3) EXP, Padding: NONE\",\n+\t\t\tsetup_generic, teardown_generic,\n+\t\t\tKAT_RSA_Encrypt, &RSA_vector_128_20_3_None),\n+\t\tTEST_CASE_NAMED_WITH_DATA(\n+\t\t\t\"RSA Decryption (n=128, pt=20, e=3) EXP, Padding: NONE\",\n+\t\t\tsetup_generic, teardown_generic,\n+\t\t\tKAT_RSA_Decrypt, &RSA_vector_128_20_3_None),\n \t\t/* Modular Exponentiation */\n \t\tTEST_CASE_NAMED_WITH_DATA(\n \t\t\t\"Modular Exponentiation (mod=128, base=20, exp=3, res=128)\",\n@@ -2140,10 +1699,24 @@ static struct unit_test_suite cryptodev_octeontx_asym_testsuite  = {\n \t.teardown = testsuite_teardown,\n \t.unit_test_cases = {\n \t\tTEST_CASE_ST(setup_generic, teardown_generic, test_capability),\n-\t\tTEST_CASE_ST(setup_generic, teardown_generic,\n-\t\t\t\ttest_rsa_enc_dec_crt),\n-\t\tTEST_CASE_ST(setup_generic, teardown_generic,\n-\t\t\t\ttest_rsa_sign_verify_crt),\n+\t\t/* RSA */\n+\t\tTEST_CASE_NAMED_WITH_DATA(\n+\t\t\t\"RSA Encryption Decryption (n=128, pt=20, e=3) EXP\",\n+\t\t\tsetup_generic, teardown_generic,\n+\t\t\tPWCT_RSA_Encrypt_Decrypt, &RSA_vector_128_20_3_PKCS1),\n+\t\tTEST_CASE_NAMED_WITH_DATA(\n+\t\t\t\"RSA Encryption Decryption (n=128, pt=20, e=3) CRT\",\n+\t\t\tsetup_generic, teardown_generic,\n+\t\t\tPWCT_RSA_CRT_Encrypt_Decrypt,\n+\t\t\t&RSA_vector_128_20_3_PKCS1),\n+\t\tTEST_CASE_NAMED_WITH_DATA(\n+\t\t\t\"RSA Sign Verify (n=128, pt=20, e=3) EXP\",\n+\t\t\tsetup_generic, teardown_generic,\n+\t\t\tPWCT_RSA_Sign_Verify, &RSA_vector_128_20_3_PKCS1),\n+\t\tTEST_CASE_NAMED_WITH_DATA(\n+\t\t\t\"RSA Sign Verify (n=128, pt=20, e=3) CRT\",\n+\t\t\tsetup_generic, teardown_generic,\n+\t\t\tPWCT_RSA_Sign_Verify_CRT, &RSA_vector_128_20_3_PKCS1),\n \t\tTEST_CASE_ST(setup_generic, teardown_generic,\n \t\t\t     test_ecdsa_sign_verify_all_curve),\n \t\tTEST_CASE_ST(setup_generic, teardown_generic,\ndiff --git a/app/test/test_cryptodev_asym_util.h b/app/test/test_cryptodev_asym_util.h\nindex 19044a58ad..25d3e4b797 100644\n--- a/app/test/test_cryptodev_asym_util.h\n+++ b/app/test/test_cryptodev_asym_util.h\n@@ -7,16 +7,6 @@\n \n /* Below Apis compare resulted buffer to original test vector */\n \n-static inline int rsa_verify(struct rsa_test_data *rsa_param,\n-\t\tstruct rte_crypto_op *result_op)\n-{\n-\tif (memcmp(rsa_param->data,\n-\t\t\t\tresult_op->asym->rsa.message.data,\n-\t\t\t\tresult_op->asym->rsa.message.length))\n-\t\treturn -1;\n-\treturn 0;\n-}\n-\n static inline int verify_ecdsa_sign(uint8_t *sign_r,\n \t\tuint8_t *sign_s, struct rte_crypto_op *result_op)\n {\ndiff --git a/app/test/test_cryptodev_rsa_test_vectors.h b/app/test/test_cryptodev_rsa_test_vectors.h\nindex 04539a1ecf..ecc2af50ff 100644\n--- a/app/test/test_cryptodev_rsa_test_vectors.h\n+++ b/app/test/test_cryptodev_rsa_test_vectors.h\n@@ -1,5 +1,6 @@\n /* SPDX-License-Identifier: BSD-3-Clause\n  * Copyright(c) 2018 Cavium Networks\n+ * Copyright (c) 2019-2023 Intel Corporation\n  */\n \n #ifndef TEST_CRYPTODEV_RSA_TEST_VECTORS_H__\n@@ -18,11 +19,11 @@ struct rsa_test_data_2 {\n \tstruct {\n \t\tuint8_t data[DATA_SIZE];\n \t\tuint16_t len;\n-\t} pt;\n+\t} message;\n \tstruct {\n \t\tuint8_t data[DATA_SIZE];\n \t\tuint16_t len;\n-\t} ct;\n+\t} cipher;\n \tstruct {\n \t\tuint8_t data[DATA_SIZE];\n \t\tuint16_t len;\n@@ -67,341 +68,302 @@ struct rsa_test_data_2 {\n };\n \n static const struct\n-rsa_test_data_2 rsa_test_case_list[] = {\n-\t{\n-\t\t.description = \"RSA Encryption Decryption \"\n-\t\t\t\t\t   \"(n=128, pt=20, e=3) EXP, QT\",\n-\t\t.xform_type = RTE_CRYPTO_ASYM_XFORM_RSA,\n-\t\t.op_type_flags = 1UL << RTE_CRYPTO_ASYM_OP_ENCRYPT |\n-\t\t\t\t\t1UL << RTE_CRYPTO_ASYM_OP_DECRYPT,\n-\t\t.pt = {\n-\t\t\t.data = {\n-\t\t\t\t0x00, 0x02, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n-\t\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n-\t\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n-\t\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n-\t\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n-\t\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n-\t\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n-\t\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n-\t\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n-\t\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n-\t\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n-\t\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n-\t\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n-\t\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xf8, 0xba, 0x1a, 0x55,\n-\t\t\t\t0xd0, 0x2f, 0x85, 0xae,\t0x96, 0x7b, 0xb6, 0x2f,\n-\t\t\t\t0xb6, 0xcd, 0xa8, 0xeb,\t0x7e, 0x78, 0xa0, 0x50\n-\t\t\t},\n-\t\t\t.len = 128,\n+rsa_test_data_2 RSA_vector_128_20_3_PKCS1 = {\n+\t.description =\n+\t\t\"RSA Encryption Decryption (n=128, pt=20, e=3) EXP, QT\",\n+\t.message = {\n+\t\t.data = {\n+\t\t\t0xf8, 0xba, 0x1a, 0x55, 0xd0, 0x2f, 0x85, 0xae,\n+\t\t\t0x96, 0x7b, 0xb6, 0x2f, 0xb6, 0xcd, 0xa8, 0xeb,\n+\t\t\t0x7e, 0x78, 0xa0, 0x50\n \t\t},\n-\t\t.ct = {\n-\t\t\t.data = {\n-\t\t\t\t0x3D, 0x8D, 0x2F, 0x85, 0xC0, 0xB7, 0x21, 0x3E,\n-\t\t\t\t0x5B, 0x4A, 0x96, 0xB2, 0x85, 0x35, 0xAF, 0x0C,\n-\t\t\t\t0x62, 0xE9, 0x73, 0xEF, 0x77, 0x76, 0x19, 0xD5,\n-\t\t\t\t0x92, 0xF7, 0x1D, 0xB0, 0x15, 0x69, 0x65, 0x82,\n-\t\t\t\t0x32, 0x30, 0x4E, 0x29, 0xE7, 0x83, 0xAD, 0x23,\n-\t\t\t\t0x66, 0xD9, 0x91, 0x9B, 0xFF, 0x01, 0x10, 0x3B,\n-\t\t\t\t0xB2, 0xF8, 0x78, 0x14, 0xD2, 0x6E, 0x3C, 0x59,\n-\t\t\t\t0x6E, 0x1A, 0x90, 0x3C, 0x5A, 0xB3, 0x0B, 0x60,\n-\t\t\t\t0xE2, 0x71, 0xCC, 0xF5, 0x0C, 0x57, 0x19, 0x03,\n-\t\t\t\t0x5B, 0x04, 0x46, 0x7E, 0x13, 0x5B, 0xFF, 0x2C,\n-\t\t\t\t0x01, 0x19, 0x75, 0x86, 0x6A, 0xAE, 0x60, 0xFB,\n-\t\t\t\t0x0A, 0x4C, 0x14, 0x1A, 0xBC, 0x0E, 0x86, 0xF1,\n-\t\t\t\t0x13, 0x10, 0xB3, 0x03, 0x8E, 0x66, 0x6F, 0xA5,\n-\t\t\t\t0x53, 0x80, 0x5A, 0x91, 0xE6, 0x7C, 0x3C, 0x38,\n-\t\t\t\t0x15, 0xB6, 0x69, 0x3E, 0xF6, 0x54, 0xB0, 0x60,\n-\t\t\t\t0x83, 0xE9, 0x2B, 0xF3, 0x26, 0x53, 0x3E, 0x11\n-\t\t\t},\n-\t\t\t.len = 128,\n+\t\t.len = 20,\n+\t},\n+\t.cipher = {\n+\t\t.data = {\n \t\t},\n-\t\t.e = {\n-\t\t\t.data = {\n-\t\t\t\t0x01, 0x00, 0x01\n-\t\t\t},\n-\t\t\t.len = 3,\n+\t\t.len = 128,\n+\t},\n+\t.e = {\n+\t\t.data = {\n+\t\t\t0x01, 0x00, 0x01\n \t\t},\n-\t\t.d = {\n-\t\t\t.data = {\n-\t\t\t\t0x24, 0xd7, 0xea, 0xf4, 0x7f, 0xe0, 0xca, 0x31,\n-\t\t\t\t0x4d, 0xee, 0xc4, 0xa1, 0xbe, 0xab, 0x06, 0x61,\n-\t\t\t\t0x32, 0xe7, 0x51, 0x46, 0x27, 0xdf, 0x72, 0xe9,\n-\t\t\t\t0x6f, 0xa8, 0x4c, 0xd1, 0x26, 0xef, 0x65, 0xeb,\n-\t\t\t\t0x67, 0xff, 0x5f, 0xa7, 0x3b, 0x25, 0xb9, 0x08,\n-\t\t\t\t0x8e, 0xa0, 0x47, 0x56, 0xe6, 0x8e, 0xf9, 0xd3,\n-\t\t\t\t0x18, 0x06, 0x3d, 0xc6, 0xb1, 0xf8, 0xdc, 0x1b,\n-\t\t\t\t0x8d, 0xe5, 0x30, 0x54, 0x26, 0xac, 0x16, 0x3b,\n-\t\t\t\t0x7b, 0xad, 0x46, 0x9e, 0x21, 0x6a, 0x57, 0xe6,\n-\t\t\t\t0x81, 0x56, 0x1d, 0x2a, 0xc4, 0x39, 0x63, 0x67,\n-\t\t\t\t0x81, 0x2c, 0xca, 0xcc, 0xf8, 0x42, 0x04, 0xbe,\n-\t\t\t\t0xcf, 0x8f, 0x6c, 0x5b, 0x81, 0x46, 0xb9, 0xc7,\n-\t\t\t\t0x62, 0x90, 0x87, 0x35, 0x03, 0x9b, 0x89, 0xcb,\n-\t\t\t\t0x37, 0xbd, 0xf1, 0x1b, 0x99, 0xa1, 0x9a, 0x78,\n-\t\t\t\t0xd5, 0x4c, 0xdd, 0x3f, 0x41, 0x0c, 0xb7, 0x1a,\n-\t\t\t\t0xd9, 0x7b, 0x87, 0x5f, 0xbe, 0xb1, 0x83, 0x41\n-\t\t\t},\n-\t\t\t.len = 128,\n+\t\t.len = 3,\n+\t},\n+\t.d = {\n+\t\t.data = {\n+\t\t\t0x24, 0xd7, 0xea, 0xf4, 0x7f, 0xe0, 0xca, 0x31,\n+\t\t\t0x4d, 0xee, 0xc4, 0xa1, 0xbe, 0xab, 0x06, 0x61,\n+\t\t\t0x32, 0xe7, 0x51, 0x46, 0x27, 0xdf, 0x72, 0xe9,\n+\t\t\t0x6f, 0xa8, 0x4c, 0xd1, 0x26, 0xef, 0x65, 0xeb,\n+\t\t\t0x67, 0xff, 0x5f, 0xa7, 0x3b, 0x25, 0xb9, 0x08,\n+\t\t\t0x8e, 0xa0, 0x47, 0x56, 0xe6, 0x8e, 0xf9, 0xd3,\n+\t\t\t0x18, 0x06, 0x3d, 0xc6, 0xb1, 0xf8, 0xdc, 0x1b,\n+\t\t\t0x8d, 0xe5, 0x30, 0x54, 0x26, 0xac, 0x16, 0x3b,\n+\t\t\t0x7b, 0xad, 0x46, 0x9e, 0x21, 0x6a, 0x57, 0xe6,\n+\t\t\t0x81, 0x56, 0x1d, 0x2a, 0xc4, 0x39, 0x63, 0x67,\n+\t\t\t0x81, 0x2c, 0xca, 0xcc, 0xf8, 0x42, 0x04, 0xbe,\n+\t\t\t0xcf, 0x8f, 0x6c, 0x5b, 0x81, 0x46, 0xb9, 0xc7,\n+\t\t\t0x62, 0x90, 0x87, 0x35, 0x03, 0x9b, 0x89, 0xcb,\n+\t\t\t0x37, 0xbd, 0xf1, 0x1b, 0x99, 0xa1, 0x9a, 0x78,\n+\t\t\t0xd5, 0x4c, 0xdd, 0x3f, 0x41, 0x0c, 0xb7, 0x1a,\n+\t\t\t0xd9, 0x7b, 0x87, 0x5f, 0xbe, 0xb1, 0x83, 0x41\n \t\t},\n-\t\t.n = {\n-\t\t\t.data = {\n-\t\t\t\t0xb3, 0xa1, 0xaf, 0xb7, 0x13, 0x08, 0x00, 0x0a,\n-\t\t\t\t0x35, 0xdc, 0x2b, 0x20, 0x8d, 0xa1, 0xb5, 0xce,\n-\t\t\t\t0x47, 0x8a, 0xc3, 0x80, 0xf4, 0x7d, 0x4a, 0xa2,\n-\t\t\t\t0x62, 0xfd, 0x61, 0x7f, 0xb5, 0xa8, 0xde, 0x0a,\n-\t\t\t\t0x17, 0x97, 0xa0, 0xbf, 0xdf, 0x56, 0x5a, 0x3d,\n-\t\t\t\t0x51, 0x56, 0x4f, 0x70, 0x70, 0x3f, 0x63, 0x6a,\n-\t\t\t\t0x44, 0x5b, 0xad, 0x84, 0x0d, 0x3f, 0x27, 0x6e,\n-\t\t\t\t0x3b, 0x34, 0x91, 0x60, 0x14, 0xb9, 0xaa, 0x72,\n-\t\t\t\t0xfd, 0xa3, 0x64, 0xd2, 0x03, 0xa7, 0x53, 0x87,\n-\t\t\t\t0x9e, 0x88, 0x0b, 0xc1, 0x14, 0x93, 0x1a, 0x62,\n-\t\t\t\t0xff, 0xb1, 0x5d, 0x74, 0xcd, 0x59, 0x63, 0x18,\n-\t\t\t\t0x11, 0x3d, 0x4f, 0xba, 0x75, 0xd4, 0x33, 0x4e,\n-\t\t\t\t0x23, 0x6b, 0x7b, 0x57, 0x44, 0xe1, 0xd3, 0x03,\n-\t\t\t\t0x13, 0xa6, 0xf0, 0x8b, 0x60, 0xb0, 0x9e, 0xee,\n-\t\t\t\t0x75, 0x08, 0x9d, 0x71, 0x63, 0x13, 0xcb, 0xa6,\n-\t\t\t\t0x81, 0x92, 0x14, 0x03, 0x22, 0x2d, 0xde, 0x55\n-\t\t\t},\n-\t\t\t.len = 128,\n+\t\t.len = 128,\n+\t},\n+\t.n = {\n+\t\t.data = {\n+\t\t\t0xb3, 0xa1, 0xaf, 0xb7, 0x13, 0x08, 0x00,\n+\t\t\t0x0a, 0x35, 0xdc, 0x2b, 0x20, 0x8d, 0xa1, 0xb5,\n+\t\t\t0xce, 0x47, 0x8a, 0xc3, 0x80, 0xf4, 0x7d, 0x4a,\n+\t\t\t0xa2, 0x62, 0xfd, 0x61, 0x7f, 0xb5, 0xa8, 0xde,\n+\t\t\t0x0a, 0x17, 0x97, 0xa0, 0xbf, 0xdf, 0x56, 0x5a,\n+\t\t\t0x3d, 0x51, 0x56, 0x4f, 0x70, 0x70, 0x3f, 0x63,\n+\t\t\t0x6a, 0x44, 0x5b, 0xad, 0x84, 0x0d, 0x3f, 0x27,\n+\t\t\t0x6e, 0x3b, 0x34, 0x91, 0x60, 0x14, 0xb9, 0xaa,\n+\t\t\t0x72, 0xfd, 0xa3, 0x64, 0xd2, 0x03, 0xa7, 0x53,\n+\t\t\t0x87, 0x9e, 0x88, 0x0b, 0xc1, 0x14, 0x93, 0x1a,\n+\t\t\t0x62, 0xff, 0xb1, 0x5d, 0x74, 0xcd, 0x59, 0x63,\n+\t\t\t0x18, 0x11, 0x3d, 0x4f, 0xba, 0x75, 0xd4, 0x33,\n+\t\t\t0x4e, 0x23, 0x6b, 0x7b, 0x57, 0x44, 0xe1, 0xd3,\n+\t\t\t0x03, 0x13, 0xa6, 0xf0, 0x8b, 0x60, 0xb0, 0x9e,\n+\t\t\t0xee, 0x75, 0x08, 0x9d, 0x71, 0x63, 0x13, 0xcb,\n+\t\t\t0xa6, 0x81, 0x92, 0x14, 0x03, 0x22, 0x2d, 0xde,\n+\t\t\t0x55\n \t\t},\n-\t\t.p = {\n-\t\t\t.data = {\n-\t\t\t\t0xdc, 0xba, 0x00, 0x01, 0x57, 0x93, 0xe3, 0x05,\n-\t\t\t\t0xed, 0x61, 0x9a, 0xa3, 0xaf, 0x6a, 0xd3, 0x47,\n-\t\t\t\t0x8f, 0x2d, 0x1e, 0x7f, 0x4d, 0x60, 0xc8, 0x8d,\n-\t\t\t\t0x34, 0xb8, 0x17, 0x84, 0xbc, 0xd4, 0xe9, 0x79,\n-\t\t\t\t0x95, 0x75, 0x19, 0x37, 0xe0, 0xcc, 0xfe, 0x4c,\n-\t\t\t\t0x5d, 0x49, 0x53, 0x61, 0x29, 0xf1, 0xdc, 0x82,\n-\t\t\t\t0x03, 0x96, 0x7d, 0x95, 0x4f, 0xdd, 0x3c, 0x0a,\n-\t\t\t\t0x64, 0x8a, 0x43, 0x2f, 0x95, 0x4a, 0xed, 0xdd\n-\t\t\t},\n-\t\t\t.len = 64,\n+\t\t.len = 128,\n+\t},\n+\t.p = {\n+\t\t.data = {\n+\t\t\t0xdc, 0xba, 0x00, 0x01, 0x57, 0x93, 0xe3, 0x05,\n+\t\t\t0xed, 0x61, 0x9a, 0xa3, 0xaf, 0x6a, 0xd3, 0x47,\n+\t\t\t0x8f, 0x2d, 0x1e, 0x7f, 0x4d, 0x60, 0xc8, 0x8d,\n+\t\t\t0x34, 0xb8, 0x17, 0x84, 0xbc, 0xd4, 0xe9, 0x79,\n+\t\t\t0x95, 0x75, 0x19, 0x37, 0xe0, 0xcc, 0xfe, 0x4c,\n+\t\t\t0x5d, 0x49, 0x53, 0x61, 0x29, 0xf1, 0xdc, 0x82,\n+\t\t\t0x03, 0x96, 0x7d, 0x95, 0x4f, 0xdd, 0x3c, 0x0a,\n+\t\t\t0x64, 0x8a, 0x43, 0x2f, 0x95, 0x4a, 0xed, 0xdd\n \t\t},\n-\t\t.q = {\n-\t\t\t.data = {\n-\t\t\t\t0xd0, 0x56, 0x7a, 0x0a, 0xd5, 0x95, 0xa4, 0x85,\n-\t\t\t\t0x53, 0x35, 0xa1, 0x48, 0x07, 0x6a, 0x7c, 0x08,\n-\t\t\t\t0xe0, 0xfd, 0x4b, 0x88, 0x77, 0xa6, 0x15, 0x23,\n-\t\t\t\t0x0f, 0xbf, 0x14, 0x46, 0x11, 0xee, 0x95, 0xc7,\n-\t\t\t\t0x5e, 0x77, 0x65, 0xa2, 0xb5, 0x50, 0xdf, 0x19,\n-\t\t\t\t0x07, 0xc7, 0x72, 0xdb, 0x29, 0xf6, 0x54, 0x86,\n-\t\t\t\t0xe1, 0xb3, 0x97, 0x0a, 0x28, 0x64, 0x3a, 0x38,\n-\t\t\t\t0xa6, 0x7d, 0x13, 0xc3, 0x79, 0xaa, 0x56, 0xd9\n-\t\t\t},\n-\t\t\t.len = 64,\n+\t\t.len = 64,\n+\t},\n+\t.q = {\n+\t\t.data = {\n+\t\t\t0xd0, 0x56, 0x7a, 0x0a, 0xd5, 0x95, 0xa4, 0x85,\n+\t\t\t0x53, 0x35, 0xa1, 0x48, 0x07, 0x6a, 0x7c, 0x08,\n+\t\t\t0xe0, 0xfd, 0x4b, 0x88, 0x77, 0xa6, 0x15, 0x23,\n+\t\t\t0x0f, 0xbf, 0x14, 0x46, 0x11, 0xee, 0x95, 0xc7,\n+\t\t\t0x5e, 0x77, 0x65, 0xa2, 0xb5, 0x50, 0xdf, 0x19,\n+\t\t\t0x07, 0xc7, 0x72, 0xdb, 0x29, 0xf6, 0x54, 0x86,\n+\t\t\t0xe1, 0xb3, 0x97, 0x0a, 0x28, 0x64, 0x3a, 0x38,\n+\t\t\t0xa6, 0x7d, 0x13, 0xc3, 0x79, 0xaa, 0x56, 0xd9\n \t\t},\n-\t\t.dP = {\n-\t\t\t.data = {\n-\t\t\t\t0xc5, 0x43, 0x0d, 0x82, 0x25, 0x8c, 0xab, 0x55,\n-\t\t\t\t0xbe, 0xc2, 0x7d, 0xfb, 0x4f, 0x68, 0x3f, 0x0e,\n-\t\t\t\t0x32, 0xec, 0xf5, 0xd6, 0x7b, 0x86, 0xc5, 0x75,\n-\t\t\t\t0x3c, 0xea, 0x51, 0x4a, 0x75, 0xa0, 0x2a, 0x50,\n-\t\t\t\t0x58, 0xbb, 0xe0, 0x1f, 0xca, 0x2e, 0x2a, 0x0e,\n-\t\t\t\t0x81, 0x48, 0x68, 0xd5, 0xeb, 0x30, 0x96, 0x0b,\n-\t\t\t\t0x33, 0xbd, 0xa8, 0xda, 0x6a, 0x17, 0xa3, 0xf2,\n-\t\t\t\t0xfd, 0xcb, 0x7b, 0x23, 0xe9, 0x5e, 0x9f, 0x99\n-\t\t\t},\n-\t\t\t.len = 64,\n+\t\t.len = 64,\n+\t},\n+\t.dP = {\n+\t\t.data = {\n+\t\t\t0xc5, 0x43, 0x0d, 0x82, 0x25, 0x8c, 0xab, 0x55,\n+\t\t\t0xbe, 0xc2, 0x7d, 0xfb, 0x4f, 0x68, 0x3f, 0x0e,\n+\t\t\t0x32, 0xec, 0xf5, 0xd6, 0x7b, 0x86, 0xc5, 0x75,\n+\t\t\t0x3c, 0xea, 0x51, 0x4a, 0x75, 0xa0, 0x2a, 0x50,\n+\t\t\t0x58, 0xbb, 0xe0, 0x1f, 0xca, 0x2e, 0x2a, 0x0e,\n+\t\t\t0x81, 0x48, 0x68, 0xd5, 0xeb, 0x30, 0x96, 0x0b,\n+\t\t\t0x33, 0xbd, 0xa8, 0xda, 0x6a, 0x17, 0xa3, 0xf2,\n+\t\t\t0xfd, 0xcb, 0x7b, 0x23, 0xe9, 0x5e, 0x9f, 0x99\n \t\t},\n-\t\t.dQ = {\n-\t\t\t.data = {\n-\t\t\t\t0xbe, 0xff, 0xf9, 0x05, 0x43, 0xc8, 0xdc, 0x3b,\n-\t\t\t\t0x0b, 0x0d, 0x28, 0xde, 0x73, 0x46, 0x11, 0x8e,\n-\t\t\t\t0xc6, 0x4e, 0x11, 0xd8, 0x7b, 0xf0, 0xfc, 0x81,\n-\t\t\t\t0xd7, 0x66, 0xd3, 0xbc, 0x65, 0xa6, 0x39, 0x14,\n-\t\t\t\t0xbd, 0xab, 0x72, 0xb7, 0x57, 0xc9, 0x5b, 0xaf,\n-\t\t\t\t0x83, 0xed, 0x3b, 0x84, 0x68, 0x15, 0x18, 0x6b,\n-\t\t\t\t0x4c, 0x32, 0xac, 0x6f, 0x38, 0x96, 0xa2, 0xb5,\n-\t\t\t\t0xdb, 0x14, 0xe2, 0x70, 0x9c, 0x73, 0x29, 0x09\n-\t\t\t},\n-\t\t\t.len = 64,\n+\t\t.len = 64,\n+\t},\n+\t.dQ = {\n+\t\t.data = {\n+\t\t\t0xbe, 0xff, 0xf9, 0x05, 0x43, 0xc8, 0xdc, 0x3b,\n+\t\t\t0x0b, 0x0d, 0x28, 0xde, 0x73, 0x46, 0x11, 0x8e,\n+\t\t\t0xc6, 0x4e, 0x11, 0xd8, 0x7b, 0xf0, 0xfc, 0x81,\n+\t\t\t0xd7, 0x66, 0xd3, 0xbc, 0x65, 0xa6, 0x39, 0x14,\n+\t\t\t0xbd, 0xab, 0x72, 0xb7, 0x57, 0xc9, 0x5b, 0xaf,\n+\t\t\t0x83, 0xed, 0x3b, 0x84, 0x68, 0x15, 0x18, 0x6b,\n+\t\t\t0x4c, 0x32, 0xac, 0x6f, 0x38, 0x96, 0xa2, 0xb5,\n+\t\t\t0xdb, 0x14, 0xe2, 0x70, 0x9c, 0x73, 0x29, 0x09\n \t\t},\n-\t\t.qInv = {\n-\t\t\t.data = {\n-\t\t\t\t0x59, 0xbd, 0xb1, 0x37, 0xeb, 0x4e, 0xcf, 0x68,\n-\t\t\t\t0xe7, 0x85, 0x91, 0xbb, 0xc0, 0xdb, 0x8e, 0x41,\n-\t\t\t\t0x91, 0x4a, 0xc0, 0xb1, 0xc5, 0xe8, 0x91, 0xf6,\n-\t\t\t\t0xc7, 0x5a, 0x98, 0x1a, 0x8a, 0x0f, 0x45, 0xb2,\n-\t\t\t\t0x5b, 0xff, 0x7a, 0x2d, 0x98, 0x89, 0x55, 0xd9,\n-\t\t\t\t0xbf, 0x6e, 0xdd, 0x2d, 0xd4, 0xe8, 0x0a, 0xaa,\n-\t\t\t\t0xae, 0x2a, 0xc4, 0x16, 0xb5, 0xba, 0xe1, 0x69,\n-\t\t\t\t0x71, 0x94, 0xdd, 0xa0, 0xf5, 0x1e, 0x6d, 0xcc\n-\t\t\t},\n-\t\t\t.len = 64,\n+\t\t.len = 64,\n+\t},\n+\t.qInv = {\n+\t\t.data = {\n+\t\t\t0x59, 0xbd, 0xb1, 0x37, 0xeb, 0x4e, 0xcf, 0x68,\n+\t\t\t0xe7, 0x85, 0x91, 0xbb, 0xc0, 0xdb, 0x8e, 0x41,\n+\t\t\t0x91, 0x4a, 0xc0, 0xb1, 0xc5, 0xe8, 0x91, 0xf6,\n+\t\t\t0xc7, 0x5a, 0x98, 0x1a, 0x8a, 0x0f, 0x45, 0xb2,\n+\t\t\t0x5b, 0xff, 0x7a, 0x2d, 0x98, 0x89, 0x55, 0xd9,\n+\t\t\t0xbf, 0x6e, 0xdd, 0x2d, 0xd4, 0xe8, 0x0a, 0xaa,\n+\t\t\t0xae, 0x2a, 0xc4, 0x16, 0xb5, 0xba, 0xe1, 0x69,\n+\t\t\t0x71, 0x94, 0xdd, 0xa0, 0xf5, 0x1e, 0x6d, 0xcc\n \t\t},\n-\t\t.padding = RTE_CRYPTO_RSA_PADDING_NONE,\n-\t\t.key_exp = 1,\n-\t\t.key_qt = 1,\n-\t}\n-};\n-\n-struct rsa_test_data {\n-\tuint8_t data[TEST_DATA_SIZE];\n-\tunsigned int len;\n-};\n-\n-struct rsa_test_data rsaplaintext = {\n-\t.data = {\n-\t\t0xf8, 0xba, 0x1a, 0x55, 0xd0, 0x2f, 0x85, 0xae,\n-\t\t0x96, 0x7b, 0xb6, 0x2f, 0xb6, 0xcd, 0xa8, 0xeb,\n-\t\t0x7e, 0x78, 0xa0, 0x50\n+\t\t.len = 64,\n \t},\n-\t.len = 20\n-};\n-\n-uint8_t rsa_n[] = {\n-\t0xb3, 0xa1, 0xaf, 0xb7, 0x13, 0x08, 0x00,\n-\t0x0a, 0x35, 0xdc, 0x2b, 0x20, 0x8d, 0xa1, 0xb5,\n-\t0xce, 0x47, 0x8a, 0xc3, 0x80, 0xf4, 0x7d, 0x4a,\n-\t0xa2, 0x62, 0xfd, 0x61, 0x7f, 0xb5, 0xa8, 0xde,\n-\t0x0a, 0x17, 0x97, 0xa0, 0xbf, 0xdf, 0x56, 0x5a,\n-\t0x3d, 0x51, 0x56, 0x4f, 0x70, 0x70, 0x3f, 0x63,\n-\t0x6a, 0x44, 0x5b, 0xad, 0x84, 0x0d, 0x3f, 0x27,\n-\t0x6e, 0x3b, 0x34, 0x91, 0x60, 0x14, 0xb9, 0xaa,\n-\t0x72, 0xfd, 0xa3, 0x64, 0xd2, 0x03, 0xa7, 0x53,\n-\t0x87, 0x9e, 0x88, 0x0b, 0xc1, 0x14, 0x93, 0x1a,\n-\t0x62, 0xff, 0xb1, 0x5d, 0x74, 0xcd, 0x59, 0x63,\n-\t0x18, 0x11, 0x3d, 0x4f, 0xba, 0x75, 0xd4, 0x33,\n-\t0x4e, 0x23, 0x6b, 0x7b, 0x57, 0x44, 0xe1, 0xd3,\n-\t0x03, 0x13, 0xa6, 0xf0, 0x8b, 0x60, 0xb0, 0x9e,\n-\t0xee, 0x75, 0x08, 0x9d, 0x71, 0x63, 0x13, 0xcb,\n-\t0xa6, 0x81, 0x92, 0x14, 0x03, 0x22, 0x2d, 0xde,\n-\t0x55\n-};\n-\n-uint8_t rsa_d[] = {\n-\t0x24, 0xd7, 0xea, 0xf4, 0x7f, 0xe0, 0xca, 0x31,\n-\t0x4d, 0xee, 0xc4, 0xa1, 0xbe, 0xab, 0x06, 0x61,\n-\t0x32, 0xe7, 0x51, 0x46, 0x27, 0xdf, 0x72, 0xe9,\n-\t0x6f, 0xa8, 0x4c, 0xd1, 0x26, 0xef, 0x65, 0xeb,\n-\t0x67, 0xff, 0x5f, 0xa7, 0x3b, 0x25, 0xb9, 0x08,\n-\t0x8e, 0xa0, 0x47, 0x56, 0xe6, 0x8e, 0xf9, 0xd3,\n-\t0x18, 0x06, 0x3d, 0xc6, 0xb1, 0xf8, 0xdc, 0x1b,\n-\t0x8d, 0xe5, 0x30, 0x54, 0x26, 0xac, 0x16, 0x3b,\n-\t0x7b, 0xad, 0x46, 0x9e, 0x21, 0x6a, 0x57, 0xe6,\n-\t0x81, 0x56, 0x1d, 0x2a, 0xc4, 0x39, 0x63, 0x67,\n-\t0x81, 0x2c, 0xca, 0xcc, 0xf8, 0x42, 0x04, 0xbe,\n-\t0xcf, 0x8f, 0x6c, 0x5b, 0x81, 0x46, 0xb9, 0xc7,\n-\t0x62, 0x90, 0x87, 0x35, 0x03, 0x9b, 0x89, 0xcb,\n-\t0x37, 0xbd, 0xf1, 0x1b, 0x99, 0xa1, 0x9a, 0x78,\n-\t0xd5, 0x4c, 0xdd, 0x3f, 0x41, 0x0c, 0xb7, 0x1a,\n-\t0xd9, 0x7b, 0x87, 0x5f, 0xbe, 0xb1, 0x83, 0x41\n-};\n-\n-uint8_t rsa_e[] = {0x01, 0x00, 0x01};\n-\n-uint8_t rsa_p[] = {\n-\t0xdc, 0xba, 0x00, 0x01, 0x57, 0x93, 0xe3, 0x05,\n-\t0xed, 0x61, 0x9a, 0xa3, 0xaf, 0x6a, 0xd3, 0x47,\n-\t0x8f, 0x2d, 0x1e, 0x7f, 0x4d, 0x60, 0xc8, 0x8d,\n-\t0x34, 0xb8, 0x17, 0x84, 0xbc, 0xd4, 0xe9, 0x79,\n-\t0x95, 0x75, 0x19, 0x37, 0xe0, 0xcc, 0xfe, 0x4c,\n-\t0x5d, 0x49, 0x53, 0x61, 0x29, 0xf1, 0xdc, 0x82,\n-\t0x03, 0x96, 0x7d, 0x95, 0x4f, 0xdd, 0x3c, 0x0a,\n-\t0x64, 0x8a, 0x43, 0x2f, 0x95, 0x4a, 0xed, 0xdd\n-};\n-\n-uint8_t rsa_q[] = {\n-\t0xd0, 0x56, 0x7a, 0x0a, 0xd5, 0x95, 0xa4, 0x85,\n-\t0x53, 0x35, 0xa1, 0x48, 0x07, 0x6a, 0x7c, 0x08,\n-\t0xe0, 0xfd, 0x4b, 0x88, 0x77, 0xa6, 0x15, 0x23,\n-\t0x0f, 0xbf, 0x14, 0x46, 0x11, 0xee, 0x95, 0xc7,\n-\t0x5e, 0x77, 0x65, 0xa2, 0xb5, 0x50, 0xdf, 0x19,\n-\t0x07, 0xc7, 0x72, 0xdb, 0x29, 0xf6, 0x54, 0x86,\n-\t0xe1, 0xb3, 0x97, 0x0a, 0x28, 0x64, 0x3a, 0x38,\n-\t0xa6, 0x7d, 0x13, 0xc3, 0x79, 0xaa, 0x56, 0xd9\n+\t.padding = RTE_CRYPTO_RSA_PADDING_PKCS1_5,\n };\n \n-uint8_t rsa_dP[] = {\n-\t0xc5, 0x43, 0x0d, 0x82, 0x25, 0x8c, 0xab, 0x55,\n-\t0xbe, 0xc2, 0x7d, 0xfb, 0x4f, 0x68, 0x3f, 0x0e,\n-\t0x32, 0xec, 0xf5, 0xd6, 0x7b, 0x86, 0xc5, 0x75,\n-\t0x3c, 0xea, 0x51, 0x4a, 0x75, 0xa0, 0x2a, 0x50,\n-\t0x58, 0xbb, 0xe0, 0x1f, 0xca, 0x2e, 0x2a, 0x0e,\n-\t0x81, 0x48, 0x68, 0xd5, 0xeb, 0x30, 0x96, 0x0b,\n-\t0x33, 0xbd, 0xa8, 0xda, 0x6a, 0x17, 0xa3, 0xf2,\n-\t0xfd, 0xcb, 0x7b, 0x23, 0xe9, 0x5e, 0x9f, 0x99\n-};\n-uint8_t rsa_dQ[] = {\n-\t0xbe, 0xff, 0xf9, 0x05, 0x43, 0xc8, 0xdc, 0x3b,\n-\t0x0b, 0x0d, 0x28, 0xde, 0x73, 0x46, 0x11, 0x8e,\n-\t0xc6, 0x4e, 0x11, 0xd8, 0x7b, 0xf0, 0xfc, 0x81,\n-\t0xd7, 0x66, 0xd3, 0xbc, 0x65, 0xa6, 0x39, 0x14,\n-\t0xbd, 0xab, 0x72, 0xb7, 0x57, 0xc9, 0x5b, 0xaf,\n-\t0x83, 0xed, 0x3b, 0x84, 0x68, 0x15, 0x18, 0x6b,\n-\t0x4c, 0x32, 0xac, 0x6f, 0x38, 0x96, 0xa2, 0xb5,\n-\t0xdb, 0x14, 0xe2, 0x70, 0x9c, 0x73, 0x29, 0x09\n-};\n-\n-uint8_t rsa_qInv[] = {\n-\t0x59, 0xbd, 0xb1, 0x37, 0xeb, 0x4e, 0xcf, 0x68,\n-\t0xe7, 0x85, 0x91, 0xbb, 0xc0, 0xdb, 0x8e, 0x41,\n-\t0x91, 0x4a, 0xc0, 0xb1, 0xc5, 0xe8, 0x91, 0xf6,\n-\t0xc7, 0x5a, 0x98, 0x1a, 0x8a, 0x0f, 0x45, 0xb2,\n-\t0x5b, 0xff, 0x7a, 0x2d, 0x98, 0x89, 0x55, 0xd9,\n-\t0xbf, 0x6e, 0xdd, 0x2d, 0xd4, 0xe8, 0x0a, 0xaa,\n-\t0xae, 0x2a, 0xc4, 0x16, 0xb5, 0xba, 0xe1, 0x69,\n-\t0x71, 0x94, 0xdd, 0xa0, 0xf5, 0x1e, 0x6d, 0xcc\n-};\n-\n-/** rsa xform using exponent key */\n-struct rte_crypto_asym_xform rsa_xform = {\n-\t.next = NULL,\n+static const struct\n+rsa_test_data_2 RSA_vector_128_20_3_None = {\n+\t.description =\n+\t\t\"RSA Encryption Decryption (n=128, pt=20, e=3) EXP, QT\",\n \t.xform_type = RTE_CRYPTO_ASYM_XFORM_RSA,\n-\t.rsa = {\n-\t\t.n = {\n-\t\t\t.data = rsa_n,\n-\t\t\t.length = sizeof(rsa_n)\n+\t.op_type_flags = 1UL << RTE_CRYPTO_ASYM_OP_ENCRYPT |\n+\t\t\t\t1UL << RTE_CRYPTO_ASYM_OP_DECRYPT,\n+\t.message = {\n+\t\t.data = {\n+\t\t\t0x00, 0x02, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n+\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n+\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n+\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n+\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n+\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n+\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n+\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n+\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n+\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n+\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n+\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n+\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,\n+\t\t\t0xbb, 0xbb, 0xbb, 0xbb, 0xf8, 0xba, 0x1a, 0x55,\n+\t\t\t0xd0, 0x2f, 0x85, 0xae,\t0x96, 0x7b, 0xb6, 0x2f,\n+\t\t\t0xb6, 0xcd, 0xa8, 0xeb,\t0x7e, 0x78, 0xa0, 0x50\n \t\t},\n-\t\t.e = {\n-\t\t\t.data = rsa_e,\n-\t\t\t.length = sizeof(rsa_e)\n+\t\t.len = 128,\n+\t},\n+\t.cipher = {\n+\t\t.data = {\n+\t\t\t0x3D, 0x8D, 0x2F, 0x85, 0xC0, 0xB7, 0x21, 0x3E,\n+\t\t\t0x5B, 0x4A, 0x96, 0xB2, 0x85, 0x35, 0xAF, 0x0C,\n+\t\t\t0x62, 0xE9, 0x73, 0xEF, 0x77, 0x76, 0x19, 0xD5,\n+\t\t\t0x92, 0xF7, 0x1D, 0xB0, 0x15, 0x69, 0x65, 0x82,\n+\t\t\t0x32, 0x30, 0x4E, 0x29, 0xE7, 0x83, 0xAD, 0x23,\n+\t\t\t0x66, 0xD9, 0x91, 0x9B, 0xFF, 0x01, 0x10, 0x3B,\n+\t\t\t0xB2, 0xF8, 0x78, 0x14, 0xD2, 0x6E, 0x3C, 0x59,\n+\t\t\t0x6E, 0x1A, 0x90, 0x3C, 0x5A, 0xB3, 0x0B, 0x60,\n+\t\t\t0xE2, 0x71, 0xCC, 0xF5, 0x0C, 0x57, 0x19, 0x03,\n+\t\t\t0x5B, 0x04, 0x46, 0x7E, 0x13, 0x5B, 0xFF, 0x2C,\n+\t\t\t0x01, 0x19, 0x75, 0x86, 0x6A, 0xAE, 0x60, 0xFB,\n+\t\t\t0x0A, 0x4C, 0x14, 0x1A, 0xBC, 0x0E, 0x86, 0xF1,\n+\t\t\t0x13, 0x10, 0xB3, 0x03, 0x8E, 0x66, 0x6F, 0xA5,\n+\t\t\t0x53, 0x80, 0x5A, 0x91, 0xE6, 0x7C, 0x3C, 0x38,\n+\t\t\t0x15, 0xB6, 0x69, 0x3E, 0xF6, 0x54, 0xB0, 0x60,\n+\t\t\t0x83, 0xE9, 0x2B, 0xF3, 0x26, 0x53, 0x3E, 0x11\n \t\t},\n-\t\t.key_type = RTE_RSA_KEY_TYPE_EXP,\n-\t\t.d = {\n-\t\t\t.data = rsa_d,\n-\t\t\t.length = sizeof(rsa_d)\n-\t\t}\n-\t}\n-};\n-\n-/** rsa xform using quintuple key */\n-struct rte_crypto_asym_xform rsa_xform_crt = {\n-\t.next = NULL,\n-\t.xform_type = RTE_CRYPTO_ASYM_XFORM_RSA,\n-\t.rsa = {\n-\t\t.n = {\n-\t\t\t.data = rsa_n,\n-\t\t\t.length = sizeof(rsa_n)\n+\t\t.len = 128,\n+\t},\n+\t.e = {\n+\t\t.data = {\n+\t\t\t0x01, 0x00, 0x01\n \t\t},\n-\t\t.e = {\n-\t\t\t.data = rsa_e,\n-\t\t\t.length = sizeof(rsa_e)\n+\t\t.len = 3,\n+\t},\n+\t.d = {\n+\t\t.data = {\n+\t\t\t0x24, 0xd7, 0xea, 0xf4, 0x7f, 0xe0, 0xca, 0x31,\n+\t\t\t0x4d, 0xee, 0xc4, 0xa1, 0xbe, 0xab, 0x06, 0x61,\n+\t\t\t0x32, 0xe7, 0x51, 0x46, 0x27, 0xdf, 0x72, 0xe9,\n+\t\t\t0x6f, 0xa8, 0x4c, 0xd1, 0x26, 0xef, 0x65, 0xeb,\n+\t\t\t0x67, 0xff, 0x5f, 0xa7, 0x3b, 0x25, 0xb9, 0x08,\n+\t\t\t0x8e, 0xa0, 0x47, 0x56, 0xe6, 0x8e, 0xf9, 0xd3,\n+\t\t\t0x18, 0x06, 0x3d, 0xc6, 0xb1, 0xf8, 0xdc, 0x1b,\n+\t\t\t0x8d, 0xe5, 0x30, 0x54, 0x26, 0xac, 0x16, 0x3b,\n+\t\t\t0x7b, 0xad, 0x46, 0x9e, 0x21, 0x6a, 0x57, 0xe6,\n+\t\t\t0x81, 0x56, 0x1d, 0x2a, 0xc4, 0x39, 0x63, 0x67,\n+\t\t\t0x81, 0x2c, 0xca, 0xcc, 0xf8, 0x42, 0x04, 0xbe,\n+\t\t\t0xcf, 0x8f, 0x6c, 0x5b, 0x81, 0x46, 0xb9, 0xc7,\n+\t\t\t0x62, 0x90, 0x87, 0x35, 0x03, 0x9b, 0x89, 0xcb,\n+\t\t\t0x37, 0xbd, 0xf1, 0x1b, 0x99, 0xa1, 0x9a, 0x78,\n+\t\t\t0xd5, 0x4c, 0xdd, 0x3f, 0x41, 0x0c, 0xb7, 0x1a,\n+\t\t\t0xd9, 0x7b, 0x87, 0x5f, 0xbe, 0xb1, 0x83, 0x41\n+\t\t},\n+\t\t.len = 128,\n+\t},\n+\t.n = {\n+\t\t.data = {\n+\t\t\t0xb3, 0xa1, 0xaf, 0xb7, 0x13, 0x08, 0x00, 0x0a,\n+\t\t\t0x35, 0xdc, 0x2b, 0x20, 0x8d, 0xa1, 0xb5, 0xce,\n+\t\t\t0x47, 0x8a, 0xc3, 0x80, 0xf4, 0x7d, 0x4a, 0xa2,\n+\t\t\t0x62, 0xfd, 0x61, 0x7f, 0xb5, 0xa8, 0xde, 0x0a,\n+\t\t\t0x17, 0x97, 0xa0, 0xbf, 0xdf, 0x56, 0x5a, 0x3d,\n+\t\t\t0x51, 0x56, 0x4f, 0x70, 0x70, 0x3f, 0x63, 0x6a,\n+\t\t\t0x44, 0x5b, 0xad, 0x84, 0x0d, 0x3f, 0x27, 0x6e,\n+\t\t\t0x3b, 0x34, 0x91, 0x60, 0x14, 0xb9, 0xaa, 0x72,\n+\t\t\t0xfd, 0xa3, 0x64, 0xd2, 0x03, 0xa7, 0x53, 0x87,\n+\t\t\t0x9e, 0x88, 0x0b, 0xc1, 0x14, 0x93, 0x1a, 0x62,\n+\t\t\t0xff, 0xb1, 0x5d, 0x74, 0xcd, 0x59, 0x63, 0x18,\n+\t\t\t0x11, 0x3d, 0x4f, 0xba, 0x75, 0xd4, 0x33, 0x4e,\n+\t\t\t0x23, 0x6b, 0x7b, 0x57, 0x44, 0xe1, 0xd3, 0x03,\n+\t\t\t0x13, 0xa6, 0xf0, 0x8b, 0x60, 0xb0, 0x9e, 0xee,\n+\t\t\t0x75, 0x08, 0x9d, 0x71, 0x63, 0x13, 0xcb, 0xa6,\n+\t\t\t0x81, 0x92, 0x14, 0x03, 0x22, 0x2d, 0xde, 0x55\n \t\t},\n-\t\t.key_type = RTE_RSA_KEY_TYPE_QT,\n-\t\t.qt = {\n-\t\t\t.p = {\n-\t\t\t\t.data = rsa_p,\n-\t\t\t\t.length = sizeof(rsa_p)\n-\t\t\t},\n-\t\t\t.q = {\n-\t\t\t\t.data = rsa_q,\n-\t\t\t\t.length = sizeof(rsa_q)\n-\t\t\t},\n-\t\t\t.dP = {\n-\t\t\t\t.data = rsa_dP,\n-\t\t\t\t.length = sizeof(rsa_dP)\n-\t\t\t},\n-\t\t\t.dQ = {\n-\t\t\t\t.data = rsa_dQ,\n-\t\t\t\t.length = sizeof(rsa_dQ)\n-\t\t\t},\n-\t\t\t.qInv = {\n-\t\t\t\t.data = rsa_qInv,\n-\t\t\t\t.length = sizeof(rsa_qInv)\n-\t\t\t},\n-\t\t}\n-\t}\n+\t\t.len = 128,\n+\t},\n+\t.p = {\n+\t\t.data = {\n+\t\t\t0xdc, 0xba, 0x00, 0x01, 0x57, 0x93, 0xe3, 0x05,\n+\t\t\t0xed, 0x61, 0x9a, 0xa3, 0xaf, 0x6a, 0xd3, 0x47,\n+\t\t\t0x8f, 0x2d, 0x1e, 0x7f, 0x4d, 0x60, 0xc8, 0x8d,\n+\t\t\t0x34, 0xb8, 0x17, 0x84, 0xbc, 0xd4, 0xe9, 0x79,\n+\t\t\t0x95, 0x75, 0x19, 0x37, 0xe0, 0xcc, 0xfe, 0x4c,\n+\t\t\t0x5d, 0x49, 0x53, 0x61, 0x29, 0xf1, 0xdc, 0x82,\n+\t\t\t0x03, 0x96, 0x7d, 0x95, 0x4f, 0xdd, 0x3c, 0x0a,\n+\t\t\t0x64, 0x8a, 0x43, 0x2f, 0x95, 0x4a, 0xed, 0xdd\n+\t\t},\n+\t\t.len = 64,\n+\t},\n+\t.q = {\n+\t\t.data = {\n+\t\t\t0xd0, 0x56, 0x7a, 0x0a, 0xd5, 0x95, 0xa4, 0x85,\n+\t\t\t0x53, 0x35, 0xa1, 0x48, 0x07, 0x6a, 0x7c, 0x08,\n+\t\t\t0xe0, 0xfd, 0x4b, 0x88, 0x77, 0xa6, 0x15, 0x23,\n+\t\t\t0x0f, 0xbf, 0x14, 0x46, 0x11, 0xee, 0x95, 0xc7,\n+\t\t\t0x5e, 0x77, 0x65, 0xa2, 0xb5, 0x50, 0xdf, 0x19,\n+\t\t\t0x07, 0xc7, 0x72, 0xdb, 0x29, 0xf6, 0x54, 0x86,\n+\t\t\t0xe1, 0xb3, 0x97, 0x0a, 0x28, 0x64, 0x3a, 0x38,\n+\t\t\t0xa6, 0x7d, 0x13, 0xc3, 0x79, 0xaa, 0x56, 0xd9\n+\t\t},\n+\t\t.len = 64,\n+\t},\n+\t.dP = {\n+\t\t.data = {\n+\t\t\t0xc5, 0x43, 0x0d, 0x82, 0x25, 0x8c, 0xab, 0x55,\n+\t\t\t0xbe, 0xc2, 0x7d, 0xfb, 0x4f, 0x68, 0x3f, 0x0e,\n+\t\t\t0x32, 0xec, 0xf5, 0xd6, 0x7b, 0x86, 0xc5, 0x75,\n+\t\t\t0x3c, 0xea, 0x51, 0x4a, 0x75, 0xa0, 0x2a, 0x50,\n+\t\t\t0x58, 0xbb, 0xe0, 0x1f, 0xca, 0x2e, 0x2a, 0x0e,\n+\t\t\t0x81, 0x48, 0x68, 0xd5, 0xeb, 0x30, 0x96, 0x0b,\n+\t\t\t0x33, 0xbd, 0xa8, 0xda, 0x6a, 0x17, 0xa3, 0xf2,\n+\t\t\t0xfd, 0xcb, 0x7b, 0x23, 0xe9, 0x5e, 0x9f, 0x99\n+\t\t},\n+\t\t.len = 64,\n+\t},\n+\t.dQ = {\n+\t\t.data = {\n+\t\t\t0xbe, 0xff, 0xf9, 0x05, 0x43, 0xc8, 0xdc, 0x3b,\n+\t\t\t0x0b, 0x0d, 0x28, 0xde, 0x73, 0x46, 0x11, 0x8e,\n+\t\t\t0xc6, 0x4e, 0x11, 0xd8, 0x7b, 0xf0, 0xfc, 0x81,\n+\t\t\t0xd7, 0x66, 0xd3, 0xbc, 0x65, 0xa6, 0x39, 0x14,\n+\t\t\t0xbd, 0xab, 0x72, 0xb7, 0x57, 0xc9, 0x5b, 0xaf,\n+\t\t\t0x83, 0xed, 0x3b, 0x84, 0x68, 0x15, 0x18, 0x6b,\n+\t\t\t0x4c, 0x32, 0xac, 0x6f, 0x38, 0x96, 0xa2, 0xb5,\n+\t\t\t0xdb, 0x14, 0xe2, 0x70, 0x9c, 0x73, 0x29, 0x09\n+\t\t},\n+\t\t.len = 64,\n+\t},\n+\t.qInv = {\n+\t\t.data = {\n+\t\t\t0x59, 0xbd, 0xb1, 0x37, 0xeb, 0x4e, 0xcf, 0x68,\n+\t\t\t0xe7, 0x85, 0x91, 0xbb, 0xc0, 0xdb, 0x8e, 0x41,\n+\t\t\t0x91, 0x4a, 0xc0, 0xb1, 0xc5, 0xe8, 0x91, 0xf6,\n+\t\t\t0xc7, 0x5a, 0x98, 0x1a, 0x8a, 0x0f, 0x45, 0xb2,\n+\t\t\t0x5b, 0xff, 0x7a, 0x2d, 0x98, 0x89, 0x55, 0xd9,\n+\t\t\t0xbf, 0x6e, 0xdd, 0x2d, 0xd4, 0xe8, 0x0a, 0xaa,\n+\t\t\t0xae, 0x2a, 0xc4, 0x16, 0xb5, 0xba, 0xe1, 0x69,\n+\t\t\t0x71, 0x94, 0xdd, 0xa0, 0xf5, 0x1e, 0x6d, 0xcc\n+\t\t},\n+\t\t.len = 64,\n+\t},\n+\t.padding = RTE_CRYPTO_RSA_PADDING_NONE,\n };\n \n #endif /* TEST_CRYPTODEV_RSA_TEST_VECTORS_H__ */\n",
    "prefixes": [
        "v2",
        "4/4"
    ]
}