get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 63581,
    "url": "http://patches.dpdk.org/api/patches/63581/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1575546206-2478-5-git-send-email-anoobj@marvell.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": "<1575546206-2478-5-git-send-email-anoobj@marvell.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1575546206-2478-5-git-send-email-anoobj@marvell.com",
    "date": "2019-12-05T11:43:26",
    "name": "[4/4] app/test: add ECDSA sign/verify tests",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "ebb663892560559f5a064b0a296a1281d3ffba5a",
    "submitter": {
        "id": 1205,
        "url": "http://patches.dpdk.org/api/people/1205/?format=api",
        "name": "Anoob Joseph",
        "email": "anoobj@marvell.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/1575546206-2478-5-git-send-email-anoobj@marvell.com/mbox/",
    "series": [
        {
            "id": 7736,
            "url": "http://patches.dpdk.org/api/series/7736/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=7736",
            "date": "2019-12-05T11:43:22",
            "name": "add ECDSA support",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/7736/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/63581/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/63581/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 dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 11E68A04F2;\n\tThu,  5 Dec 2019 12:45:22 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 340801BF92;\n\tThu,  5 Dec 2019 12:45:07 +0100 (CET)",
            "from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com\n [67.231.156.173]) by dpdk.org (Postfix) with ESMTP id 65E371BF7D\n for <dev@dpdk.org>; Thu,  5 Dec 2019 12:45:05 +0100 (CET)",
            "from pps.filterd (m0045851.ppops.net [127.0.0.1])\n by mx0b-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id\n xB5Bj4Aj023936; Thu, 5 Dec 2019 03:45:04 -0800",
            "from sc-exch01.marvell.com ([199.233.58.181])\n by mx0b-0016f401.pphosted.com with ESMTP id 2wpybwgd72-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT);\n Thu, 05 Dec 2019 03:45:04 -0800",
            "from SC-EXCH03.marvell.com (10.93.176.83) by SC-EXCH01.marvell.com\n (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Thu, 5 Dec\n 2019 03:44:57 -0800",
            "from maili.marvell.com (10.93.176.43) by SC-EXCH03.marvell.com\n (10.93.176.83) with Microsoft SMTP Server id 15.0.1367.3 via Frontend\n Transport; Thu, 5 Dec 2019 03:44:57 -0800",
            "from ajoseph83.caveonetworks.com.com (unknown [10.29.45.60])\n by maili.marvell.com (Postfix) with ESMTP id E9A753F7041;\n Thu,  5 Dec 2019 03:44:52 -0800 (PST)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com;\n h=from : to : cc :\n subject : date : message-id : in-reply-to : references : mime-version :\n content-transfer-encoding : content-type; s=pfpt0818;\n bh=3uy7NWo5abz0KUEE1oyvGGx+VpubxVccZbWYiqsQlyk=;\n b=I+obQcAP4Ez8jKpcAwctryHehyvdj7P+eRyu1nQAoFMRVMwmMP1i1L182F85RdD2AOdZ\n NHbz6ULhguvUWeHkGhCvjDIkLkxFHeMQkFOEL8DblxMP9N3UeuzXZYAc1ZNXZMJYCMIz\n fV2qs0TJ7Vodnmc+MqXR1mj6T/CpWnLjYtWfB2MJhcO9splhemyeSpN3Bw1ph/MpQwKM\n NvyCPisFX9hH7Ps5+emNXPbugLga4fJC4JtbI5TpjFzPVbyk3QA2eW23KQ8cfNUaE26y\n tQq7vU8KYQ7FbO9YBVYJm9VxI5uf/xNqWXQlgYfbnZ5ewe6+viiQA9m8bdngb940bW7P tA==",
        "From": "Anoob Joseph <anoobj@marvell.com>",
        "To": "Akhil Goyal <akhil.goyal@nxp.com>, Declan Doherty\n <declan.doherty@intel.com>, Pablo de Lara <pablo.de.lara.guarch@intel.com>",
        "CC": "Ayuj Verma <ayverma@marvell.com>, Fiona Trahe <fiona.trahe@intel.com>,\n Arek Kusztal <arkadiuszx.kusztal@intel.com>, Jerin Jacob\n <jerinj@marvell.com>, Narayana Prasad <pathreya@marvell.com>, Shally Verma\n <shallyv@marvell.com>, Ankur Dwivedi <adwivedi@marvell.com>, Sunila Sahu\n <ssahu@marvell.com>, <dev@dpdk.org>, Anoob Joseph <anoobj@marvell.com>",
        "Date": "Thu, 5 Dec 2019 17:13:26 +0530",
        "Message-ID": "<1575546206-2478-5-git-send-email-anoobj@marvell.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1575546206-2478-1-git-send-email-anoobj@marvell.com>",
        "References": "<1575546206-2478-1-git-send-email-anoobj@marvell.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Proofpoint-Virus-Version": "vendor=fsecure engine=2.50.10434:6.0.95,18.0.572\n definitions=2019-12-05_03:2019-12-04,2019-12-05 signatures=0",
        "Subject": "[dpdk-dev] [PATCH 4/4] app/test: add ECDSA sign/verify tests",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "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",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Ayuj Verma <ayverma@marvell.com>\n\nThis patch adds ECDSA sign and verify test routine and test vectors.\n\nSigned-off-by: Anoob Joseph <anoobj@marvell.com>\nSigned-off-by: Ayuj Verma <ayverma@marvell.com>\nSigned-off-by: Sunila Sahu <ssahu@marvell.com>\n---\n app/test/test_cryptodev_asym.c               | 219 +++++++++++-\n app/test/test_cryptodev_asym_util.h          |  11 +\n app/test/test_cryptodev_ecdsa_test_vectors.h | 501 +++++++++++++++++++++++++++\n 3 files changed, 730 insertions(+), 1 deletion(-)\n create mode 100644 app/test/test_cryptodev_ecdsa_test_vectors.h",
    "diff": "diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asym.c\nindex 69df293..b913a7d 100644\n--- a/app/test/test_cryptodev_asym.c\n+++ b/app/test/test_cryptodev_asym.c\n@@ -18,6 +18,7 @@\n #include \"test_cryptodev.h\"\n #include \"test_cryptodev_dh_test_vectors.h\"\n #include \"test_cryptodev_dsa_test_vectors.h\"\n+#include \"test_cryptodev_ecdsa_test_vectors.h\"\n #include \"test_cryptodev_mod_test_vectors.h\"\n #include \"test_cryptodev_rsa_test_vectors.h\"\n #include \"test_cryptodev_asym_util.h\"\n@@ -1037,14 +1038,16 @@ static inline void print_asym_capa(\n \t\tcase RTE_CRYPTO_ASYM_XFORM_MODEX:\n \t\tcase RTE_CRYPTO_ASYM_XFORM_DH:\n \t\tcase RTE_CRYPTO_ASYM_XFORM_DSA:\n-\t\t\tprintf(\" modlen: min %d max %d increment %d\\n\",\n+\t\t\tprintf(\" modlen: min %d max %d increment %d\",\n \t\t\t\t\tcapa->modlen.min,\n \t\t\t\t\tcapa->modlen.max,\n \t\t\t\t\tcapa->modlen.increment);\n \t\tbreak;\n+\t\tcase RTE_CRYPTO_ASYM_XFORM_ECDSA:\n \t\tdefault:\n \t\t\tbreak;\n \t\t}\n+\t\tprintf(\"\\n\");\n }\n \n static int\n@@ -1892,6 +1895,218 @@ test_dsa(void)\n \treturn status;\n }\n \n+static int\n+test_ecdsa_sign_verify(enum curve curve_id)\n+{\n+\tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n+\tstruct rte_mempool *sess_mpool = ts_params->session_mpool;\n+\tstruct rte_mempool *op_mpool = ts_params->op_mpool;\n+\tstruct crypto_testsuite_ecdsa_params input_params;\n+\tstruct rte_cryptodev_asym_session *sess = NULL;\n+\tuint8_t dev_id = ts_params->valid_devs[0];\n+\tstruct rte_crypto_op *result_op = NULL;\n+\tuint8_t output_buf_r[TEST_DATA_SIZE];\n+\tuint8_t output_buf_s[TEST_DATA_SIZE];\n+\tstruct rte_crypto_asym_xform xform;\n+\tstruct rte_crypto_asym_op *asym_op;\n+\tstruct rte_cryptodev_info dev_info;\n+\tstruct rte_crypto_op *op = NULL;\n+\tint status = TEST_SUCCESS, ret;\n+\n+\tswitch (curve_id) {\n+\tcase P192:\n+\t\tinput_params = ecdsa_param_p192;\n+\t\tbreak;\n+\tcase P224:\n+\t\tinput_params = ecdsa_param_p224;\n+\t\tbreak;\n+\tcase P256:\n+\t\tinput_params = ecdsa_param_p256;\n+\t\tbreak;\n+\tcase P384:\n+\t\tinput_params = ecdsa_param_p384;\n+\t\tbreak;\n+\tcase P521:\n+\t\tinput_params = ecdsa_param_p521;\n+\t\tbreak;\n+\tdefault:\n+\t\tRTE_LOG(ERR, USER1,\n+\t\t\t\t\"line %u FAILED: %s\", __LINE__,\n+\t\t\t\t\"Unsupported curve id\\n\");\n+\t\tstatus = TEST_FAILED;\n+\t\tgoto exit;\n+\t}\n+\n+\trte_cryptodev_info_get(dev_id, &dev_info);\n+\n+\tsess = rte_cryptodev_asym_session_create(sess_mpool);\n+\tif (sess == NULL) {\n+\t\tRTE_LOG(ERR, USER1,\n+\t\t\t\t\"line %u FAILED: %s\", __LINE__,\n+\t\t\t\t\"Session creation failed\\n\");\n+\t\tstatus = TEST_FAILED;\n+\t\tgoto exit;\n+\t}\n+\n+\t/* Setup crypto op data structure */\n+\top = rte_crypto_op_alloc(op_mpool, RTE_CRYPTO_OP_TYPE_ASYMMETRIC);\n+\tif (op == NULL) {\n+\t\tRTE_LOG(ERR, USER1,\n+\t\t\t\t\"line %u FAILED: %s\", __LINE__,\n+\t\t\t\t\"Failed to allocate asymmetric crypto \"\n+\t\t\t\t\"operation struct\\n\");\n+\t\tstatus = TEST_FAILED;\n+\t\tgoto exit;\n+\t}\n+\tasym_op = op->asym;\n+\n+\t/* Setup asym xform */\n+\txform.next = NULL;\n+\txform.xform_type = RTE_CRYPTO_ASYM_XFORM_ECDSA;\n+\txform.ec.curve_id = input_params.curve;\n+\n+\tif (rte_cryptodev_asym_session_init(dev_id, sess, &xform,\n+\t\t\t\tsess_mpool) < 0) {\n+\t\tRTE_LOG(ERR, USER1,\n+\t\t\t\t\"line %u FAILED: %s\", __LINE__,\n+\t\t\t\t\"Unable to config asym session\\n\");\n+\t\tstatus = TEST_FAILED;\n+\t\tgoto exit;\n+\t}\n+\n+\t/* Attach asymmetric crypto session to crypto operations */\n+\trte_crypto_op_attach_asym_session(op, sess);\n+\n+\t/* Compute sign */\n+\n+\t/* Populate op with operational details */\n+\top->asym->ecdsa.op_type = RTE_CRYPTO_ASYM_OP_SIGN;\n+\top->asym->ecdsa.message.data = input_params.digest.data;\n+\top->asym->ecdsa.message.length = input_params.digest.length;\n+\top->asym->ecdsa.k.data = input_params.scalar.data;\n+\top->asym->ecdsa.k.length = input_params.scalar.length;\n+\top->asym->ecdsa.pkey.data = input_params.pkey.data;\n+\top->asym->ecdsa.pkey.length = input_params.pkey.length;\n+\n+\t/* Init out buf */\n+\top->asym->ecdsa.r.data = output_buf_r;\n+\top->asym->ecdsa.s.data = output_buf_s;\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,\n+\t\t\t\t\"line %u FAILED: %s\", __LINE__,\n+\t\t\t\t\"Error sending packet for operation\\n\");\n+\t\tstatus = TEST_FAILED;\n+\t\tgoto 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,\n+\t\t\t\t\"line %u FAILED: %s\", __LINE__,\n+\t\t\t\t\"Failed to process asym crypto op\\n\");\n+\t\tstatus = TEST_FAILED;\n+\t\tgoto exit;\n+\t}\n+\n+\tif (result_op->status != RTE_CRYPTO_OP_STATUS_SUCCESS) {\n+\t\tRTE_LOG(ERR, USER1,\n+\t\t\t\t\"line %u FAILED: %s\", __LINE__,\n+\t\t\t\t\"Failed to process asym crypto op\\n\");\n+\t\tstatus = TEST_FAILED;\n+\t\tgoto exit;\n+\t}\n+\n+\tasym_op = result_op->asym;\n+\n+\tdebug_hexdump(stdout, \"r:\",\n+\t\t\tasym_op->ecdsa.r.data, asym_op->ecdsa.r.length);\n+\tdebug_hexdump(stdout, \"s:\",\n+\t\t\tasym_op->ecdsa.s.data, asym_op->ecdsa.s.length);\n+\n+\tret = verify_ecdsa_sign(input_params.sign_r.data,\n+\t\t\t\tinput_params.sign_s.data, result_op);\n+\tif (ret) {\n+\t\tstatus = TEST_FAILED;\n+\t\tRTE_LOG(ERR, USER1,\n+\t\t\t\t\"line %u FAILED: %s\", __LINE__,\n+\t\t\t\t\"ECDSA sign failed.\\n\");\n+\t\tgoto exit;\n+\t}\n+\n+\t/* Verify sign */\n+\n+\t/* Populate op with operational details */\n+\top->asym->ecdsa.op_type = RTE_CRYPTO_ASYM_OP_VERIFY;\n+\top->asym->ecdsa.q.x.data = input_params.pubkey_qx.data;\n+\top->asym->ecdsa.q.x.length = input_params.pubkey_qx.length;\n+\top->asym->ecdsa.q.y.data = input_params.pubkey_qy.data;\n+\top->asym->ecdsa.q.y.length = input_params.pubkey_qx.length;\n+\top->asym->ecdsa.r.data = asym_op->ecdsa.r.data;\n+\top->asym->ecdsa.r.length = asym_op->ecdsa.r.length;\n+\top->asym->ecdsa.s.data = asym_op->ecdsa.s.data;\n+\top->asym->ecdsa.s.length = asym_op->ecdsa.s.length;\n+\n+\t/* Enqueue sign result for verify */\n+\tif (rte_cryptodev_enqueue_burst(dev_id, 0, &op, 1) != 1) {\n+\t\tstatus = TEST_FAILED;\n+\t\tRTE_LOG(ERR, USER1,\n+\t\t\t\t\"line %u FAILED: %s\", __LINE__,\n+\t\t\t\t\"Error sending packet for operation\\n\");\n+\t\tgoto 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\tstatus = TEST_FAILED;\n+\t\tgoto exit;\n+\t}\n+\tif (result_op->status != RTE_CRYPTO_OP_STATUS_SUCCESS) {\n+\t\tstatus = TEST_FAILED;\n+\t\tRTE_LOG(ERR, USER1,\n+\t\t\t\t\"line %u FAILED: %s\", __LINE__,\n+\t\t\t\t\"ECDSA verify failed.\\n\");\n+\t\tgoto exit;\n+\t}\n+\n+exit:\n+\tif (sess != NULL) {\n+\t\trte_cryptodev_asym_session_clear(dev_id, sess);\n+\t\trte_cryptodev_asym_session_free(sess);\n+\t}\n+\tif (op != NULL)\n+\t\trte_crypto_op_free(op);\n+\treturn status;\n+};\n+\n+static int\n+test_ecdsa_sign_verify_all_curve(void)\n+{\n+\tint status, overall_status = TEST_SUCCESS;\n+\tenum curve curve_id;\n+\tint test_index = 0;\n+\tconst char *msg;\n+\n+\tfor (curve_id = P192; curve_id < END_OF_CURVE_LIST; curve_id++) {\n+\t\tstatus = test_ecdsa_sign_verify(curve_id);\n+\t\tif (status == TEST_SUCCESS) {\n+\t\t\tmsg = \"succeeded\";\n+\t\t} else {\n+\t\t\tmsg = \"failed\";\n+\t\t\toverall_status = status;\n+\t\t}\n+\t\tprintf(\"  %u) TestCase Sign/Veriy Curve %s  %s\\n\",\n+\t\t       test_index ++, curve[curve_id], msg);\n+\t}\n+\treturn overall_status;\n+}\n \n static struct unit_test_suite cryptodev_openssl_asym_testsuite  = {\n \t.suite_name = \"Crypto Device OPENSSL ASYM Unit Test Suite\",\n@@ -1931,6 +2146,8 @@ static struct unit_test_suite cryptodev_octeontx_asym_testsuite  = {\n \t\tTEST_CASE_ST(ut_setup, ut_teardown, test_rsa_enc_dec_crt),\n \t\tTEST_CASE_ST(ut_setup, ut_teardown, test_rsa_sign_verify_crt),\n \t\tTEST_CASE_ST(ut_setup, ut_teardown, test_mod_exp),\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown,\n+\t\t\t     test_ecdsa_sign_verify_all_curve),\n \t\tTEST_CASES_END() /**< NULL terminate unit test array */\n \t}\n };\ndiff --git a/app/test/test_cryptodev_asym_util.h b/app/test/test_cryptodev_asym_util.h\nindex f2a8e6c..bddeda0 100644\n--- a/app/test/test_cryptodev_asym_util.h\n+++ b/app/test/test_cryptodev_asym_util.h\n@@ -35,4 +35,15 @@ static inline int verify_modexp(uint8_t *mod_exp,\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+{\n+\tif (memcmp(sign_r, result_op->asym->ecdsa.r.data,\n+\t\t   result_op->asym->ecdsa.r.length) ||\n+\t\t   memcmp(sign_s, result_op->asym->ecdsa.s.data,\n+\t\t   result_op->asym->ecdsa.s.length))\n+\t\treturn -1;\n+\treturn 0;\n+}\n+\n #endif /* TEST_CRYPTODEV_ASYM_TEST_UTIL_H__ */\ndiff --git a/app/test/test_cryptodev_ecdsa_test_vectors.h b/app/test/test_cryptodev_ecdsa_test_vectors.h\nnew file mode 100644\nindex 0000000..a53c0e9\n--- /dev/null\n+++ b/app/test/test_cryptodev_ecdsa_test_vectors.h\n@@ -0,0 +1,501 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright (C) 2019 Marvell International Ltd.\n+ */\n+\n+#ifndef __TEST_CRYPTODEV_ECDSA_TEST_VECTORS_H__\n+#define __TEST_CRYPTODEV_ECDSA_TEST_VECTORS_H__\n+\n+#include \"rte_crypto_asym.h\"\n+\n+struct crypto_testsuite_ecdsa_params {\n+\trte_crypto_param pubkey_qx;\n+\trte_crypto_param pubkey_qy;\n+\trte_crypto_param scalar;\n+\trte_crypto_param digest;\n+\trte_crypto_param sign_r;\n+\trte_crypto_param sign_s;\n+\trte_crypto_param pkey;\n+\tint curve;\n+};\n+\n+/* ECDSA curve id */\n+enum curve {\n+\tP192,\n+\tP224,\n+\tP256,\n+\tP384,\n+\tP521,\n+\tEND_OF_CURVE_LIST\n+};\n+\n+const char *curve[] = {\"P192\", \"P224\", \"P256\", \"P384\", \"P521\"};\n+\n+/*\n+ * Test vector reference:\n+ * https://csrc.nist.gov/CSRC/media/Projects/\n+ * Cryptographic-Algorithm-Validation-Program/\n+ * documents/components/186-3ecdsasiggencomponenttestvectors.zip\n+ */\n+\n+/* P-192 NIST test vector */\n+\n+static uint8_t digest_p192[] = {\n+\t0x5a, 0xe8, 0x31, 0x7d, 0x34, 0xd1, 0xe5, 0x95,\n+\t0xe3, 0xfa, 0x72, 0x47, 0xdb, 0x80, 0xc0, 0xaf,\n+\t0x43, 0x20, 0xcc, 0xe1, 0x11, 0x6d, 0xe1, 0x87,\n+\t0xf8, 0xf7, 0xe2, 0xe0, 0x99, 0xc0, 0xd8, 0xd0\n+};\n+\n+static uint8_t pkey_p192[] = {\n+\t0x24, 0xed, 0xd2, 0x2f, 0x7d, 0xdd, 0x6f, 0xa5,\n+\t0xbc, 0x61, 0xfc, 0x06, 0x53, 0x47, 0x9a, 0xa4,\n+\t0x08, 0x09, 0xef, 0x86, 0x5c, 0xf2, 0x7a, 0x47\n+};\n+\n+static uint8_t scalar_p192[] = {\n+\t0xa5, 0xc8, 0x17, 0xa2, 0x36, 0xa5, 0xf7, 0xfa,\n+\t0xa3, 0x29, 0xb8, 0xec, 0xc3, 0xc5, 0x96, 0x68,\n+\t0x7c, 0x71, 0xaa, 0xaf, 0x86, 0xc7, 0x70, 0x3e\n+};\n+\n+static uint8_t pubkey_qx_p192[] = {\n+\t0x9b, 0xf1, 0x2d, 0x71, 0x74, 0xb7, 0x70, 0x8a,\n+\t0x07, 0x6a, 0x38, 0xbc, 0x80, 0xaa, 0x28, 0x66,\n+\t0x2f, 0x25, 0x1e, 0x2e, 0xd8, 0xd4, 0x14, 0xdc\n+};\n+\n+static uint8_t pubkey_qy_p192[] = {\n+\t0x48, 0x54, 0xc8, 0xd0, 0x7d, 0xfc, 0x08, 0x82,\n+\t0x4e, 0x9e, 0x47, 0x1c, 0xa2, 0xfe, 0xdc, 0xfc,\n+\t0xff, 0x3d, 0xdc, 0xb0, 0x11, 0x57, 0x34, 0x98\n+};\n+\n+static uint8_t sign_p192_r[] = {\n+\t0x35, 0x4a, 0xba, 0xec, 0xf4, 0x36, 0x1f, 0xea,\n+\t0x90, 0xc2, 0x9b, 0x91, 0x99, 0x88, 0x2e, 0xdf,\n+\t0x85, 0x73, 0xe6, 0x86, 0xa8, 0x13, 0xef, 0xf8\n+};\n+\n+static uint8_t sign_p192_s[] = {\n+\t0x80, 0xf5, 0x00, 0x00, 0xac, 0x86, 0x11, 0x1c,\n+\t0x9b, 0x30, 0x47, 0x38, 0x5a, 0x15, 0xd7, 0x8e,\n+\t0x63, 0x2c, 0x58, 0xb7, 0x94, 0x9e, 0x82, 0xc1\n+};\n+\n+/** ECDSA P192 elliptic curve param */\n+\n+struct crypto_testsuite_ecdsa_params ecdsa_param_p192 = {\n+\t.pubkey_qx = {\n+\t\t.data = pubkey_qx_p192,\n+\t\t.length = sizeof(pubkey_qx_p192),\n+\t},\n+\t.pubkey_qy = {\n+\t\t.data = pubkey_qy_p192,\n+\t\t.length = sizeof(pubkey_qy_p192),\n+\t},\n+\t.scalar = {\n+\t\t.data = scalar_p192,\n+\t\t.length = sizeof(scalar_p192),\n+\t},\n+\t.digest = {\n+\t\t.data = digest_p192,\n+\t\t.length = sizeof(digest_p192),\n+\t},\n+\t.sign_r = {\n+\t\t.data = sign_p192_r,\n+\t\t.length = sizeof(sign_p192_r),\n+\t},\n+\t.sign_s = {\n+\t\t.data = sign_p192_s,\n+\t\t.length = sizeof(sign_p192_s),\n+\t},\n+\t.pkey = {\n+\t\t.data = pkey_p192,\n+\t\t.length = sizeof(pkey_p192),\n+\t},\n+\t.curve = RTE_CRYPTO_EC_GROUP_NISTP192\n+};\n+\n+/* P-224 NIST test vectors */\n+\n+static uint8_t digest_p224[] = {\n+\t0x00, 0xc6, 0xfc, 0x53, 0xc1, 0x98, 0x6d, 0x19,\n+\t0xa8, 0xa8, 0xb5, 0x80, 0xee, 0x55, 0x3d, 0xc1,\n+\t0x24, 0x07, 0x45, 0xd7, 0x60, 0x64, 0x7d, 0x1c,\n+\t0x0a, 0xdf, 0x44, 0x2c, 0x13, 0x3c, 0x7f, 0x56\n+};\n+\n+static uint8_t pkey_p224[] = {\n+\t0x88, 0x8f, 0xc9, 0x92, 0x89, 0x3b, 0xdd, 0x8a,\n+\t0xa0, 0x2c, 0x80, 0x76, 0x88, 0x32, 0x60, 0x5d,\n+\t0x02, 0x0b, 0x81, 0xae, 0x0b, 0x25, 0x47, 0x41,\n+\t0x54, 0xec, 0x89, 0xaa\n+};\n+\n+static uint8_t scalar_p224[] = {\n+\t0x06, 0xf7, 0xa5, 0x60, 0x07, 0x82, 0x54, 0x33,\n+\t0xc4, 0xc6, 0x11, 0x53, 0xdf, 0x1a, 0x13, 0x5e,\n+\t0xee, 0x2f, 0x38, 0xec, 0x68, 0x7b, 0x49, 0x2e,\n+\t0xd4, 0x0d, 0x9c, 0x90\n+};\n+\n+static uint8_t pubkey_qx_p224[] = {\n+\t0x4c, 0x74, 0x1e, 0x4d, 0x20, 0x10, 0x36, 0x70,\n+\t0xb7, 0x16, 0x1a, 0xe7, 0x22, 0x71, 0x08, 0x21,\n+\t0x55, 0x83, 0x84, 0x18, 0x08, 0x43, 0x35, 0x33,\n+\t0x8a, 0xc3, 0x8f, 0xa4\n+};\n+\n+static uint8_t pubkey_qy_p224[] = {\n+\t0xdb, 0x79, 0x19, 0x15, 0x1a, 0xc2, 0x85, 0x87,\n+\t0xb7, 0x2b, 0xad, 0x7a, 0xb1, 0x80, 0xec, 0x8e,\n+\t0x95, 0xab, 0x9e, 0x2c, 0x8d, 0x81, 0xd9, 0xb9,\n+\t0xd7, 0xe2, 0xe3, 0x83\n+};\n+\n+static uint8_t sign_p224_r[] = {\n+\t0x09, 0x09, 0xc9, 0xb9, 0xca, 0xe8, 0xd2, 0x79,\n+\t0x0e, 0x29, 0xdb, 0x6a, 0xfd, 0xb4, 0x5c, 0x04,\n+\t0xf5, 0xb0, 0x72, 0xc4, 0xc2, 0x04, 0x10, 0xc7,\n+\t0xdc, 0x9b, 0x67, 0x72\n+};\n+\n+static uint8_t sign_p224_s[] = {\n+\t0x29, 0x8f, 0x4f, 0xca, 0xe1, 0xfe, 0x27, 0x1d,\n+\t0xa1, 0xe0, 0x34, 0x5d, 0x11, 0xd0, 0x7a, 0x1f,\n+\t0xca, 0x43, 0xf5, 0x8a, 0xf4, 0xc1, 0x13, 0xb9,\n+\t0x09, 0xee, 0xde, 0xa0\n+};\n+\n+/** ECDSA P224 elliptic curve param */\n+\n+struct crypto_testsuite_ecdsa_params ecdsa_param_p224 = {\n+\t.pubkey_qx = {\n+\t\t.data = pubkey_qx_p224,\n+\t\t.length = sizeof(pubkey_qx_p224),\n+\t},\n+\t.pubkey_qy = {\n+\t\t.data = pubkey_qy_p224,\n+\t\t.length = sizeof(pubkey_qy_p224),\n+\t},\n+\t.scalar = {\n+\t\t.data = scalar_p224,\n+\t\t.length = sizeof(scalar_p224),\n+\t},\n+\t.digest = {\n+\t\t.data = digest_p224,\n+\t\t.length = sizeof(digest_p224),\n+\t},\n+\t.sign_r = {\n+\t\t.data = sign_p224_r,\n+\t\t.length = sizeof(sign_p224_r),\n+\t},\n+\t.sign_s = {\n+\t\t.data = sign_p224_s,\n+\t\t.length = sizeof(sign_p224_s),\n+\t},\n+\t.pkey = {\n+\t\t.data = pkey_p224,\n+\t\t.length = sizeof(pkey_p224),\n+\t},\n+\t.curve = RTE_CRYPTO_EC_GROUP_NISTP224\n+};\n+\n+/* P-256 NIST test vectors */\n+\n+static uint8_t digest_p256[] = {\n+\t0x44, 0xac, 0xf6, 0xb7, 0xe3, 0x6c, 0x13, 0x42,\n+\t0xc2, 0xc5, 0x89, 0x72, 0x04, 0xfe, 0x09, 0x50,\n+\t0x4e, 0x1e, 0x2e, 0xfb, 0x1a, 0x90, 0x03, 0x77,\n+\t0xdb, 0xc4, 0xe7, 0xa6, 0xa1, 0x33, 0xec, 0x56\n+};\n+\n+static uint8_t pkey_p256[] = {\n+\t0x51, 0x9b, 0x42, 0x3d, 0x71, 0x5f, 0x8b, 0x58,\n+\t0x1f, 0x4f, 0xa8, 0xee, 0x59, 0xf4, 0x77, 0x1a,\n+\t0x5b, 0x44, 0xc8, 0x13, 0x0b, 0x4e, 0x3e, 0xac,\n+\t0xca, 0x54, 0xa5, 0x6d, 0xda, 0x72, 0xb4, 0x64\n+};\n+\n+static uint8_t scalar_p256[] = {\n+\t0x94, 0xa1, 0xbb, 0xb1, 0x4b, 0x90, 0x6a, 0x61,\n+\t0xa2, 0x80, 0xf2, 0x45, 0xf9, 0xe9, 0x3c, 0x7f,\n+\t0x3b, 0x4a, 0x62, 0x47, 0x82, 0x4f, 0x5d, 0x33,\n+\t0xb9, 0x67, 0x07, 0x87, 0x64, 0x2a, 0x68, 0xde\n+};\n+\n+static uint8_t pubkey_qx_p256[] = {\n+\t0x1c, 0xcb, 0xe9, 0x1c, 0x07, 0x5f, 0xc7, 0xf4,\n+\t0xf0, 0x33, 0xbf, 0xa2, 0x48, 0xdb, 0x8f, 0xcc,\n+\t0xd3, 0x56, 0x5d, 0xe9, 0x4b, 0xbf, 0xb1, 0x2f,\n+\t0x3c, 0x59, 0xff, 0x46, 0xc2, 0x71, 0xbf, 0x83\n+};\n+\n+static uint8_t pubkey_qy_p256[] = {\n+\t0xce, 0x40, 0x14, 0xc6, 0x88, 0x11, 0xf9, 0xa2,\n+\t0x1a, 0x1f, 0xdb, 0x2c, 0x0e, 0x61, 0x13, 0xe0,\n+\t0x6d, 0xb7, 0xca, 0x93, 0xb7, 0x40, 0x4e, 0x78,\n+\t0xdc, 0x7c, 0xcd, 0x5c, 0xa8, 0x9a, 0x4c, 0xa9\n+};\n+\n+static uint8_t sign_p256_r[] = {\n+\t0xf3, 0xac, 0x80, 0x61, 0xb5, 0x14, 0x79, 0x5b,\n+\t0x88, 0x43, 0xe3, 0xd6, 0x62, 0x95, 0x27, 0xed,\n+\t0x2a, 0xfd, 0x6b, 0x1f, 0x6a, 0x55, 0x5a, 0x7a,\n+\t0xca, 0xbb, 0x5e, 0x6f, 0x79, 0xc8, 0xc2, 0xac\n+};\n+\n+static uint8_t sign_p256_s[] = {\n+\t0x8b, 0xf7, 0x78, 0x19, 0xca, 0x05, 0xa6, 0xb2,\n+\t0x78, 0x6c, 0x76, 0x26, 0x2b, 0xf7, 0x37, 0x1c,\n+\t0xef, 0x97, 0xb2, 0x18, 0xe9, 0x6f, 0x17, 0x5a,\n+\t0x3c, 0xcd, 0xda, 0x2a, 0xcc, 0x05, 0x89, 0x03\n+};\n+\n+/** ECDSA P256 elliptic curve param */\n+\n+struct crypto_testsuite_ecdsa_params ecdsa_param_p256 = {\n+\t.pubkey_qx = {\n+\t\t.data = pubkey_qx_p256,\n+\t\t.length = sizeof(pubkey_qx_p256),\n+\t},\n+\t.pubkey_qy = {\n+\t\t.data = pubkey_qy_p256,\n+\t\t.length = sizeof(pubkey_qy_p256),\n+\t},\n+\t.scalar = {\n+\t\t.data = scalar_p256,\n+\t\t.length = sizeof(scalar_p256),\n+\t},\n+\t.digest = {\n+\t\t.data = digest_p256,\n+\t\t.length = sizeof(digest_p256),\n+\t},\n+\t.sign_r = {\n+\t\t.data = sign_p256_r,\n+\t\t.length = sizeof(sign_p256_r),\n+\t},\n+\t.sign_s = {\n+\t\t.data = sign_p256_s,\n+\t\t.length = sizeof(sign_p256_s),\n+\t},\n+\t.pkey = {\n+\t\t.data = pkey_p256,\n+\t\t.length = sizeof(pkey_p256),\n+\t},\n+\t.curve = RTE_CRYPTO_EC_GROUP_NISTP256\n+};\n+\n+/* P-384 NIST test vectors */\n+\n+static uint8_t digest_p384[] = {\n+\t0xbb, 0xbd, 0x0a, 0x5f, 0x64, 0x5d, 0x3f, 0xda,\n+\t0x10, 0xe2, 0x88, 0xd1, 0x72, 0xb2, 0x99, 0x45,\n+\t0x5f, 0x9d, 0xff, 0x00, 0xe0, 0xfb, 0xc2, 0x83,\n+\t0x3e, 0x18, 0xcd, 0x01, 0x7d, 0x7f, 0x3e, 0xd1\n+};\n+\n+static uint8_t pkey_p384[] = {\n+\t0xc6, 0x02, 0xbc, 0x74, 0xa3, 0x45, 0x92, 0xc3,\n+\t0x11, 0xa6, 0x56, 0x96, 0x61, 0xe0, 0x83, 0x2c,\n+\t0x84, 0xf7, 0x20, 0x72, 0x74, 0x67, 0x6c, 0xc4,\n+\t0x2a, 0x89, 0xf0, 0x58, 0x16, 0x26, 0x30, 0x18,\n+\t0x4b, 0x52, 0xf0, 0xd9, 0x9b, 0x85, 0x5a, 0x77,\n+\t0x83, 0xc9, 0x87, 0x47, 0x6d, 0x7f, 0x9e, 0x6b\n+};\n+\n+static uint8_t scalar_p384[] = {\n+\t0xc1, 0x0b, 0x5c, 0x25, 0xc4, 0x68, 0x3d, 0x0b,\n+\t0x78, 0x27, 0xd0, 0xd8, 0x86, 0x97, 0xcd, 0xc0,\n+\t0x93, 0x24, 0x96, 0xb5, 0x29, 0x9b, 0x79, 0x8c,\n+\t0x0d, 0xd1, 0xe7, 0xaf, 0x6c, 0xc7, 0x57, 0xcc,\n+\t0xb3, 0x0f, 0xcd, 0x3d, 0x36, 0xea, 0xd4, 0xa8,\n+\t0x04, 0x87, 0x7e, 0x24, 0xf3, 0xa3, 0x24, 0x43\n+};\n+\n+static uint8_t pubkey_qx_p384[] = {\n+\t0x04, 0x00, 0x19, 0x3b, 0x21, 0xf0, 0x7c, 0xd0,\n+\t0x59, 0x82, 0x6e, 0x94, 0x53, 0xd3, 0xe9, 0x6d,\n+\t0xd1, 0x45, 0x04, 0x1c, 0x97, 0xd4, 0x9f, 0xf6,\n+\t0xb7, 0x04, 0x7f, 0x86, 0xbb, 0x0b, 0x04, 0x39,\n+\t0xe9, 0x09, 0x27, 0x4c, 0xb9, 0xc2, 0x82, 0xbf,\n+\t0xab, 0x88, 0x67, 0x4c, 0x07, 0x65, 0xbc, 0x75\n+};\n+\n+static uint8_t pubkey_qy_p384[] = {\n+\t0xf7, 0x0d, 0x89, 0xc5, 0x2a, 0xcb, 0xc7, 0x04,\n+\t0x68, 0xd2, 0xc5, 0xae, 0x75, 0xc7, 0x6d, 0x7f,\n+\t0x69, 0xb7, 0x6a, 0xf6, 0x2d, 0xcf, 0x95, 0xe9,\n+\t0x9e, 0xba, 0x5d, 0xd1, 0x1a, 0xdf, 0x8f, 0x42,\n+\t0xec, 0x9a, 0x42, 0x5b, 0x0c, 0x5e, 0xc9, 0x8e,\n+\t0x2f, 0x23, 0x4a, 0x92, 0x6b, 0x82, 0xa1, 0x47\n+};\n+\n+static uint8_t sign_p384_r[] = {\n+\t0xb1, 0x1d, 0xb0, 0x0c, 0xda, 0xf5, 0x32, 0x86,\n+\t0xd4, 0x48, 0x3f, 0x38, 0xcd, 0x02, 0x78, 0x59,\n+\t0x48, 0x47, 0x7e, 0xd7, 0xeb, 0xc2, 0xad, 0x60,\n+\t0x90, 0x54, 0x55, 0x1d, 0xa0, 0xab, 0x03, 0x59,\n+\t0x97, 0x8c, 0x61, 0x85, 0x17, 0x88, 0xaa, 0x2e,\n+\t0xc3, 0x26, 0x79, 0x46, 0xd4, 0x40, 0xe8, 0x78\n+};\n+\n+static uint8_t sign_p384_s[] = {\n+\t0x16, 0x00, 0x78, 0x73, 0xc5, 0xb0, 0x60, 0x4c,\n+\t0xe6, 0x81, 0x12, 0xa8, 0xfe, 0xe9, 0x73, 0xe8,\n+\t0xe2, 0xb6, 0xe3, 0x31, 0x9c, 0x68, 0x3a, 0x76,\n+\t0x2f, 0xf5, 0x06, 0x5a, 0x07, 0x65, 0x12, 0xd7,\n+\t0xc9, 0x8b, 0x27, 0xe7, 0x4b, 0x78, 0x87, 0x67,\n+\t0x10, 0x48, 0xac, 0x02, 0x7d, 0xf8, 0xcb, 0xf2\n+};\n+\n+/** ECDSA P384 elliptic curve param */\n+\n+struct crypto_testsuite_ecdsa_params ecdsa_param_p384 = {\n+\t.pubkey_qx = {\n+\t\t.data = pubkey_qx_p384,\n+\t\t.length = sizeof(pubkey_qx_p384),\n+\t},\n+\t.pubkey_qy = {\n+\t\t.data = pubkey_qy_p384,\n+\t\t.length = sizeof(pubkey_qy_p384),\n+\t},\n+\t.scalar = {\n+\t\t.data = scalar_p384,\n+\t\t.length = sizeof(scalar_p384),\n+\t},\n+\t.digest = {\n+\t\t.data = digest_p384,\n+\t\t.length = sizeof(digest_p384),\n+\t},\n+\t.sign_r = {\n+\t\t.data = sign_p384_r,\n+\t\t.length = sizeof(sign_p384_r),\n+\t},\n+\t.sign_s = {\n+\t\t.data = sign_p384_s,\n+\t\t.length = sizeof(sign_p384_s),\n+\t},\n+\t.pkey = {\n+\t\t.data = pkey_p384,\n+\t\t.length = sizeof(pkey_p384),\n+\t},\n+\t.curve = RTE_CRYPTO_EC_GROUP_NISTP384\n+};\n+\n+/* P-521 NIST test vectors */\n+\n+static uint8_t digest_p521[] = {\n+\t0x53, 0xe6, 0x53, 0x7c, 0xb6, 0xea, 0x68, 0xae,\n+\t0x47, 0xa8, 0x16, 0x11, 0xc2, 0x27, 0x56, 0xd7,\n+\t0x70, 0xd7, 0xa3, 0x7e, 0x33, 0x6c, 0x3a, 0xf0,\n+\t0xb0, 0x81, 0x4b, 0x04, 0xfa, 0x39, 0x43, 0x4b\n+};\n+\n+static uint8_t pkey_p521[] = {\n+\t0x01, 0xe8, 0xc0, 0x59, 0x96, 0xb8, 0x5e, 0x6f,\n+\t0x3f, 0x87, 0x57, 0x12, 0xa0, 0x9c, 0x1b, 0x40,\n+\t0x67, 0x2b, 0x5e, 0x7a, 0x78, 0xd5, 0x85, 0x2d,\n+\t0xe0, 0x15, 0x85, 0xc5, 0xfb, 0x99, 0x0b, 0xf3,\n+\t0x81, 0x2c, 0x32, 0x45, 0x53, 0x4a, 0x71, 0x43,\n+\t0x89, 0xae, 0x90, 0x14, 0xd6, 0x77, 0xa4, 0x49,\n+\t0xef, 0xd6, 0x58, 0x25, 0x4e, 0x61, 0x0d, 0xa8,\n+\t0xe6, 0xca, 0xd3, 0x34, 0x14, 0xb9, 0xd3, 0x3e,\n+\t0x0d, 0x7a\n+};\n+\n+static uint8_t scalar_p521[] = {\n+\t0x00, 0xdc, 0x8d, 0xaa, 0xac, 0xdd, 0xb8, 0xfd,\n+\t0x2f, 0xf5, 0xc3, 0x4a, 0x5c, 0xe1, 0x83, 0xa4,\n+\t0x22, 0x61, 0xad, 0x3c, 0x64, 0xdb, 0xfc, 0x09,\n+\t0x5e, 0x58, 0x92, 0x43, 0x64, 0xdc, 0x47, 0xea,\n+\t0x1c, 0x05, 0xe2, 0x59, 0x9a, 0xae, 0x91, 0x7c,\n+\t0x2c, 0x95, 0xf4, 0x7d, 0x6b, 0xb3, 0x7d, 0xa0,\n+\t0x08, 0xaf, 0x9f, 0x55, 0x73, 0x0d, 0xdb, 0xe4,\n+\t0xd8, 0xde, 0xd2, 0x4f, 0x9e, 0x8d, 0xaa, 0x46,\n+\t0xdb, 0x6a\n+};\n+\n+static uint8_t pubkey_qx_p521[] = {\n+\t0x00, 0x7d, 0x04, 0x2c, 0xa1, 0x94, 0x08, 0x52,\n+\t0x4e, 0x68, 0xb9, 0x81, 0xf1, 0x41, 0x93, 0x51,\n+\t0xe3, 0xb8, 0x47, 0x36, 0xc7, 0x7f, 0xe5, 0x8f,\n+\t0xee, 0x7d, 0x11, 0x31, 0x7d, 0xf2, 0xe8, 0x50,\n+\t0xd9, 0x60, 0xc7, 0xdd, 0x10, 0xd1, 0x0b, 0xa7,\n+\t0x14, 0xc8, 0xa6, 0x09, 0xd1, 0x63, 0x50, 0x2b,\n+\t0x79, 0xd6, 0x82, 0xe8, 0xbb, 0xec, 0xd4, 0xf5,\n+\t0x25, 0x91, 0xd2, 0x74, 0x85, 0x33, 0xe4, 0x5a,\n+\t0x86, 0x7a\n+};\n+\n+static uint8_t pubkey_qy_p521[] = {\n+\t0x01, 0x97, 0xac, 0x64, 0x16, 0x11, 0x1c, 0xcf,\n+\t0x98, 0x7d, 0x29, 0x04, 0x59, 0xeb, 0xc8, 0xad,\n+\t0x9e, 0xc5, 0x6e, 0x49, 0x05, 0x9c, 0x99, 0x21,\n+\t0x55, 0x53, 0x9a, 0x36, 0xa6, 0x26, 0x63, 0x1f,\n+\t0x4a, 0x2d, 0x89, 0x16, 0x4b, 0x98, 0x51, 0x54,\n+\t0xf2, 0xdd, 0xdc, 0x02, 0x81, 0xee, 0x5b, 0x51,\n+\t0x78, 0x27, 0x1f, 0x3a, 0x76, 0xa0, 0x91, 0x4c,\n+\t0x3f, 0xcd, 0x1f, 0x97, 0xbe, 0x8e, 0x83, 0x76,\n+\t0xef, 0xb3\n+};\n+\n+static uint8_t sign_p521_r[] = {\n+\t0x00, 0x9d, 0xd1, 0xf2, 0xa7, 0x16, 0x84, 0x3e,\n+\t0xed, 0xec, 0x7a, 0x66, 0x45, 0xac, 0x83, 0x4d,\n+\t0x43, 0x36, 0xe7, 0xb1, 0x8e, 0x35, 0x70, 0x1f,\n+\t0x06, 0xca, 0xe9, 0xd6, 0xb2, 0x90, 0xd4, 0x14,\n+\t0x91, 0x42, 0x47, 0x35, 0xf3, 0xb5, 0x7e, 0x82,\n+\t0x9a, 0xd5, 0xde, 0x05, 0x5e, 0xae, 0xef, 0x17,\n+\t0x78, 0xf0, 0x51, 0xc1, 0xee, 0x15, 0x2b, 0xf2,\n+\t0x13, 0x1a, 0x08, 0x1e, 0x53, 0xdf, 0x2a, 0x56,\n+\t0x7a, 0x8a\n+};\n+\n+static uint8_t sign_p521_s[] = {\n+\t0x00, 0x21, 0x48, 0xe8, 0x42, 0x8d, 0x70, 0xa7,\n+\t0x2b, 0xc9, 0xfa, 0x98, 0x6c, 0x38, 0xc2, 0xc9,\n+\t0x7d, 0xed, 0xa0, 0x42, 0x0f, 0x22, 0x2f, 0x9d,\n+\t0xc9, 0x9d, 0x32, 0xc0, 0xac, 0xba, 0x69, 0x9d,\n+\t0xc7, 0xba, 0x0a, 0x2b, 0x79, 0xce, 0x59, 0x99,\n+\t0xff, 0x61, 0xbd, 0x0b, 0x23, 0x3c, 0x74, 0x4a,\n+\t0x89, 0x3b, 0xc1, 0x05, 0xbc, 0xa5, 0xc2, 0x35,\n+\t0x42, 0x3e, 0x53, 0x16, 0x12, 0xda, 0x65, 0xd7,\n+\t0x2e, 0x62\n+};\n+\n+/** ECDSA P521 elliptic curve param */\n+\n+struct crypto_testsuite_ecdsa_params ecdsa_param_p521 = {\n+\t.pubkey_qx = {\n+\t\t.data = pubkey_qx_p521,\n+\t\t.length = sizeof(pubkey_qx_p521),\n+\t},\n+\t.pubkey_qy = {\n+\t\t.data = pubkey_qy_p521,\n+\t\t.length = sizeof(pubkey_qy_p521),\n+\t},\n+\t.scalar = {\n+\t\t.data = scalar_p521,\n+\t\t.length = sizeof(scalar_p521),\n+\t},\n+\t.digest = {\n+\t\t.data = digest_p521,\n+\t\t.length = sizeof(digest_p521),\n+\t},\n+\t.sign_r = {\n+\t\t.data = sign_p521_r,\n+\t\t.length = sizeof(sign_p521_r),\n+\t},\n+\t.sign_s = {\n+\t\t.data = sign_p521_s,\n+\t\t.length = sizeof(sign_p521_s),\n+\t},\n+\t.pkey = {\n+\t\t.data = pkey_p521,\n+\t\t.length = sizeof(pkey_p521),\n+\t},\n+\t.curve = RTE_CRYPTO_EC_GROUP_NISTP521\n+};\n+\n+#endif /* __TEST_CRYPTODEV_ECDSA_TEST_VECTORS_H__ */\n",
    "prefixes": [
        "4/4"
    ]
}