get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 134699,
    "url": "http://patchwork.dpdk.org/api/patches/134699/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/a9252d7f2c0b8dbf987d7af922e4d3ccaede3547.1701273963.git.gmuthukrishn@marvell.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.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": "<a9252d7f2c0b8dbf987d7af922e4d3ccaede3547.1701273963.git.gmuthukrishn@marvell.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/a9252d7f2c0b8dbf987d7af922e4d3ccaede3547.1701273963.git.gmuthukrishn@marvell.com",
    "date": "2023-11-29T16:10:36",
    "name": "[v1,3/3] test/crypto: add asymmetric EDDSA test cases",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "5e4cd3fc9971466bb955e7995414af230387f092",
    "submitter": {
        "id": 2301,
        "url": "http://patchwork.dpdk.org/api/people/2301/?format=api",
        "name": "Gowrishankar Muthukrishnan",
        "email": "gmuthukrishn@marvell.com"
    },
    "delegate": {
        "id": 6690,
        "url": "http://patchwork.dpdk.org/api/users/6690/?format=api",
        "username": "akhil",
        "first_name": "akhil",
        "last_name": "goyal",
        "email": "gakhil@marvell.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/a9252d7f2c0b8dbf987d7af922e4d3ccaede3547.1701273963.git.gmuthukrishn@marvell.com/mbox/",
    "series": [
        {
            "id": 30413,
            "url": "http://patchwork.dpdk.org/api/series/30413/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=30413",
            "date": "2023-11-29T16:10:34",
            "name": "[v1,1/3] cryptodev: add EDDSA asymmetric crypto algorithm",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/30413/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/134699/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/134699/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 C943B43402;\n\tWed, 29 Nov 2023 17:11:02 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 0B5D242E51;\n\tWed, 29 Nov 2023 17:10:54 +0100 (CET)",
            "from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com\n [67.231.148.174])\n by mails.dpdk.org (Postfix) with ESMTP id 9F28542E4F\n for <dev@dpdk.org>; Wed, 29 Nov 2023 17:10:51 +0100 (CET)",
            "from pps.filterd (m0045849.ppops.net [127.0.0.1])\n by mx0a-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id\n 3ATFAE0Z011768; Wed, 29 Nov 2023 08:10:50 -0800",
            "from dc5-exch02.marvell.com ([199.233.59.182])\n by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3up4x199bn-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT);\n Wed, 29 Nov 2023 08:10:49 -0800",
            "from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH02.marvell.com\n (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.48;\n Wed, 29 Nov 2023 08:10:47 -0800",
            "from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com\n (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.48 via Frontend\n Transport; Wed, 29 Nov 2023 08:10:47 -0800",
            "from BG-LT91401.marvell.com (BG-LT91401.marvell.com [10.28.168.34])\n by maili.marvell.com (Postfix) with ESMTP id 591153F7048;\n Wed, 29 Nov 2023 08:10:45 -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=pfpt0220;\n bh=YuQCW8jfu0knSm9VAGOPg+nYW+ES3dlA1inRiZVcP58=;\n b=kJfbE8YvtNI1np7SX8GneCAeUPXElSwqY435lQU2tDoqf9YymCOiFiFo38kTVMFM/MN+\n uO8Wy6sT6Z6u0qnLofYWB5eQecxKeffVM/VoF5o9C7PD2w6DUoAol+I3vAVUxSg6uWIp\n CO4R3DQ/QovwZ34pOS5vN2/mOrm1bDREOdrEY5PdW9bn2nfJ2dY/YHvHEr//V+nIIf6c\n Ah7kwpPV9O2pJLtCqFkRXgP0QSQp8NRbfM6bGUH5O19JKcFJa/Yc6ffSWQTYcnE2UHZq\n 7l1zw96SEqqXHA2FeQ0hGToDYakwr8eYWsPg6cmVV/b49UNZOcBZ2ToqqyReU+h6oRPQ tw==",
        "From": "Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<anoobj@marvell.com>, Akhil Goyal <gakhil@marvell.com>, Fan Zhang\n <fanzhang.oss@gmail.com>, Kai Ji <kai.ji@intel.com>, \"Gowrishankar\n Muthukrishnan\" <gmuthukrishn@marvell.com>",
        "Subject": "[PATCH v1 3/3] test/crypto: add asymmetric EDDSA test cases",
        "Date": "Wed, 29 Nov 2023 21:40:36 +0530",
        "Message-ID": "\n <a9252d7f2c0b8dbf987d7af922e4d3ccaede3547.1701273963.git.gmuthukrishn@marvell.com>",
        "X-Mailer": "git-send-email 2.21.0",
        "In-Reply-To": "\n <0ae6a1afadac64050d80b0fd7712c4a6a8599e2c.1701273963.git.gmuthukrishn@marvell.com>",
        "References": "\n <0ae6a1afadac64050d80b0fd7712c4a6a8599e2c.1701273963.git.gmuthukrishn@marvell.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Proofpoint-GUID": "qdY58mKWrb-TtpdFIU53_x8EzCk-j5vn",
        "X-Proofpoint-ORIG-GUID": "qdY58mKWrb-TtpdFIU53_x8EzCk-j5vn",
        "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26\n definitions=2023-11-29_14,2023-11-29_01,2023-05-22_02",
        "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": "Add test cases to validate EDDSA sign and verify ops,\nas per RFC 8032.\n\nSigned-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>\n---\n app/test/test_cryptodev_asym.c               | 339 +++++++++++++++++++\n app/test/test_cryptodev_eddsa_test_vectors.h | 330 ++++++++++++++++++\n 2 files changed, 669 insertions(+)\n create mode 100644 app/test/test_cryptodev_eddsa_test_vectors.h",
    "diff": "diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asym.c\nindex 17daf734e8..93ce75b7c9 100644\n--- a/app/test/test_cryptodev_asym.c\n+++ b/app/test/test_cryptodev_asym.c\n@@ -20,6 +20,7 @@\n #include \"test_cryptodev_ecdh_test_vectors.h\"\n #include \"test_cryptodev_ecdsa_test_vectors.h\"\n #include \"test_cryptodev_ecpm_test_vectors.h\"\n+#include \"test_cryptodev_eddsa_test_vectors.h\"\n #include \"test_cryptodev_mod_test_vectors.h\"\n #include \"test_cryptodev_rsa_test_vectors.h\"\n #include \"test_cryptodev_sm2_test_vectors.h\"\n@@ -3171,6 +3172,343 @@ test_sm2_dec(void)\n \treturn status;\n };\n \n+static int\n+test_eddsa_sign(enum rte_crypto_edward_instance instance)\n+{\n+\tstruct crypto_testsuite_params_asym *ts_params = &testsuite_params;\n+\tconst struct rte_cryptodev_asymmetric_xform_capability *capa;\n+\tstruct rte_mempool *sess_mpool = ts_params->session_mpool;\n+\tstruct rte_mempool *op_mpool = ts_params->op_mpool;\n+\tstruct crypto_testsuite_eddsa_params input_params;\n+\tstruct rte_cryptodev_asym_capability_idx idx;\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+\tstruct rte_crypto_asym_xform xform;\n+\tstruct rte_crypto_asym_op *asym_op;\n+\tstruct rte_crypto_op *op = NULL;\n+\tint ret, status = TEST_FAILED;\n+\tvoid *sess = NULL;\n+\tbool ctx = false;\n+\n+\tswitch (instance) {\n+\tcase RTE_CRYPTO_EDCURVE_25519:\n+\t\tinput_params = eddsa_param_ed25519;\n+\t\tbreak;\n+\tcase RTE_CRYPTO_EDCURVE_25519CTX:\n+\t\tinput_params = eddsa_param_ed25519ctx;\n+\t\tctx = true;\n+\t\tbreak;\n+\tcase RTE_CRYPTO_EDCURVE_25519PH:\n+\t\tinput_params = eddsa_param_ed25519ph;\n+\t\tbreak;\n+\tcase RTE_CRYPTO_EDCURVE_448:\n+\t\tinput_params = eddsa_param_ed448;\n+\t\tbreak;\n+\tcase RTE_CRYPTO_EDCURVE_448PH:\n+\t\tinput_params = eddsa_param_ed448ph;\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_SKIPPED;\n+\t\tgoto exit;\n+\t}\n+\n+\t/* Check EDDSA capability */\n+\tidx.type = RTE_CRYPTO_ASYM_XFORM_EDDSA;\n+\tcapa = rte_cryptodev_asym_capability_get(dev_id, &idx);\n+\tif (capa == NULL)\n+\t\treturn -ENOTSUP;\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+\n+\tasym_op = op->asym;\n+\n+\t/* Setup asym xform */\n+\txform.next = NULL;\n+\txform.xform_type = RTE_CRYPTO_ASYM_XFORM_EDDSA;\n+\txform.ec.curve_id = input_params.curve;\n+\txform.ec.pkey.data = input_params.pkey.data;\n+\txform.ec.pkey.length = input_params.pkey.length;\n+\txform.ec.qcomp.data = input_params.pubkey.data;\n+\txform.ec.qcomp.length = input_params.pubkey.length;\n+\n+\tret = rte_cryptodev_asym_session_create(dev_id, &xform, sess_mpool, &sess);\n+\tif (ret < 0) {\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 = (ret == -ENOTSUP) ? TEST_SKIPPED : 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+\tasym_op->eddsa.op_type = RTE_CRYPTO_ASYM_OP_SIGN;\n+\tasym_op->eddsa.instance = input_params.instance;\n+\tasym_op->eddsa.message.data = input_params.message.data;\n+\tasym_op->eddsa.message.length = input_params.message.length;\n+\tif (ctx) {\n+\t\tasym_op->eddsa.context.data = input_params.context.data;\n+\t\tasym_op->eddsa.context.length = input_params.context.length;\n+\t}\n+\n+\t/* Init out buf */\n+\tasym_op->eddsa.sign.data = output_buf_r;\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\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\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\tgoto exit;\n+\t}\n+\n+\tasym_op = result_op->asym;\n+\n+\tdebug_hexdump(stdout, \"sign:\",\n+\t\t\tasym_op->eddsa.sign.data, asym_op->eddsa.sign.length);\n+\n+\t/* Verify sign (by comparison). */\n+\tif (memcmp(input_params.sign.data, asym_op->eddsa.sign.data,\n+\t\t\t   asym_op->eddsa.sign.length) != 0) {\n+\t\tRTE_LOG(ERR, USER1,\n+\t\t\t\t\"line %u FAILED: %s\", __LINE__,\n+\t\t\t\t\"EDDSA sign failed.\\n\");\n+\t\tgoto exit;\n+\t}\n+\n+\tstatus = TEST_SUCCESS;\n+exit:\n+\tif (sess != NULL)\n+\t\trte_cryptodev_asym_session_free(dev_id, sess);\n+\trte_crypto_op_free(op);\n+\treturn status;\n+};\n+\n+static int\n+test_eddsa_verify(enum rte_crypto_edward_instance instance)\n+{\n+\tstruct crypto_testsuite_params_asym *ts_params = &testsuite_params;\n+\tconst struct rte_cryptodev_asymmetric_xform_capability *capa;\n+\tstruct rte_mempool *sess_mpool = ts_params->session_mpool;\n+\tstruct rte_mempool *op_mpool = ts_params->op_mpool;\n+\tstruct crypto_testsuite_eddsa_params input_params;\n+\tstruct rte_cryptodev_asym_capability_idx idx;\n+\tuint8_t dev_id = ts_params->valid_devs[0];\n+\tstruct rte_crypto_op *result_op = NULL;\n+\tstruct rte_crypto_asym_xform xform;\n+\tstruct rte_crypto_asym_op *asym_op;\n+\tstruct rte_crypto_op *op = NULL;\n+\tint ret, status = TEST_FAILED;\n+\tvoid *sess = NULL;\n+\tbool ctx = false;\n+\n+\tswitch (instance) {\n+\tcase RTE_CRYPTO_EDCURVE_25519:\n+\t\tinput_params = eddsa_param_ed25519;\n+\t\tbreak;\n+\tcase RTE_CRYPTO_EDCURVE_25519CTX:\n+\t\tinput_params = eddsa_param_ed25519ctx;\n+\t\tctx = true;\n+\t\tbreak;\n+\tcase RTE_CRYPTO_EDCURVE_25519PH:\n+\t\tinput_params = eddsa_param_ed25519ph;\n+\t\tbreak;\n+\tcase RTE_CRYPTO_EDCURVE_448:\n+\t\tinput_params = eddsa_param_ed448;\n+\t\tbreak;\n+\tcase RTE_CRYPTO_EDCURVE_448PH:\n+\t\tinput_params = eddsa_param_ed448ph;\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_SKIPPED;\n+\t\tgoto exit;\n+\t}\n+\n+\t/* Check EDDSA capability */\n+\tidx.type = RTE_CRYPTO_ASYM_XFORM_EDDSA;\n+\tcapa = rte_cryptodev_asym_capability_get(dev_id, &idx);\n+\tif (capa == NULL)\n+\t\treturn -ENOTSUP;\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\tgoto exit;\n+\t}\n+\n+\tasym_op = op->asym;\n+\n+\t/* Setup asym xform */\n+\txform.next = NULL;\n+\txform.xform_type = RTE_CRYPTO_ASYM_XFORM_EDDSA;\n+\txform.ec.curve_id = input_params.curve;\n+\txform.ec.pkey.data = input_params.pkey.data;\n+\txform.ec.pkey.length = input_params.pkey.length;\n+\txform.ec.qcomp.data = input_params.pubkey.data;\n+\txform.ec.qcomp.length = input_params.pubkey.length;\n+\n+\tret = rte_cryptodev_asym_session_create(dev_id, &xform, sess_mpool, &sess);\n+\tif (ret < 0) {\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 = (ret == -ENOTSUP) ? TEST_SKIPPED : 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+\tasym_op->eddsa.op_type = RTE_CRYPTO_ASYM_OP_VERIFY;\n+\tasym_op->eddsa.instance = input_params.instance;\n+\tasym_op->eddsa.message.data = input_params.message.data;\n+\tasym_op->eddsa.message.length = input_params.message.length;\n+\tif (ctx) {\n+\t\tasym_op->eddsa.context.data = input_params.context.data;\n+\t\tasym_op->eddsa.context.length = input_params.context.length;\n+\t}\n+\n+\t/* Init out buf */\n+\tasym_op->eddsa.sign.data = input_params.sign.data;\n+\tasym_op->eddsa.sign.length = input_params.sign.length;\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\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\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\tgoto exit;\n+\t}\n+\n+\tasym_op = result_op->asym;\n+\n+\tdebug_hexdump(stdout, \"sign:\",\n+\t\t\tasym_op->eddsa.sign.data, asym_op->eddsa.sign.length);\n+\n+\t/* Verify sign (by comparison). */\n+\tif (memcmp(input_params.sign.data, asym_op->eddsa.sign.data,\n+\t\t\t   asym_op->eddsa.sign.length) != 0) {\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\"EDDSA sign failed.\\n\");\n+\t\tgoto exit;\n+\t}\n+\n+\tstatus = TEST_SUCCESS;\n+exit:\n+\tif (sess != NULL)\n+\t\trte_cryptodev_asym_session_free(dev_id, sess);\n+\trte_crypto_op_free(op);\n+\treturn status;\n+};\n+\n+static int\n+test_eddsa_sign_verify_all_curve(void)\n+{\n+\tstatic const char * const edcurve[] = {\"ed25519\", \"ed25519ctx\", \"ed25519ph\",\n+\t\t\t\t\t       \"ed448\", \"ed448ph\"};\n+\tint status, overall_status = TEST_SUCCESS;\n+\tenum rte_crypto_edward_instance ins;\n+\tint test_index = 0;\n+\tconst char *msg;\n+\n+\tfor (ins = RTE_CRYPTO_EDCURVE_25519; ins <= RTE_CRYPTO_EDCURVE_448PH; ins++) {\n+\t\tstatus = test_eddsa_sign(ins);\n+\t\tif (status == TEST_SUCCESS) {\n+\t\t\tmsg = \"succeeded\";\n+\t\t} else if (status == TEST_SKIPPED) {\n+\t\t\tmsg = \"skipped\";\n+\t\t} else {\n+\t\t\tmsg = \"failed\";\n+\t\t\toverall_status = status;\n+\t\t}\n+\t\tprintf(\"  %u) TestCase Sign Curve %s  %s\\n\",\n+\t\t       test_index ++, edcurve[ins], msg);\n+\t}\n+\n+\tfor (ins = RTE_CRYPTO_EDCURVE_25519; ins <= RTE_CRYPTO_EDCURVE_448PH; ins++) {\n+\t\tstatus = test_eddsa_verify(ins);\n+\t\tif (status == TEST_SUCCESS) {\n+\t\t\tmsg = \"succeeded\";\n+\t\t} else if (status == TEST_SKIPPED) {\n+\t\t\tmsg = \"skipped\";\n+\t\t} else {\n+\t\t\tmsg = \"failed\";\n+\t\t\toverall_status = status;\n+\t\t}\n+\t\tprintf(\"  %u) TestCase Verify Curve %s  %s\\n\",\n+\t\t       test_index ++, edcurve[ins], msg);\n+\t}\n+\n+\treturn overall_status;\n+}\n+\n static int send_one(void)\n {\n \tint ticks = 0;\n@@ -3513,6 +3851,7 @@ static struct unit_test_suite cryptodev_openssl_asym_testsuite  = {\n \t\t\t\"Modex Group 18 test\",\n \t\t\tut_setup_asym, ut_teardown_asym,\n \t\t\tmodular_exponentiation, &modex_group_test_cases[5]),\n+\t\tTEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_eddsa_sign_verify_all_curve),\n \t\tTEST_CASES_END() /**< NULL terminate unit test array */\n \t}\n };\ndiff --git a/app/test/test_cryptodev_eddsa_test_vectors.h b/app/test/test_cryptodev_eddsa_test_vectors.h\nnew file mode 100644\nindex 0000000000..11b17e6c62\n--- /dev/null\n+++ b/app/test/test_cryptodev_eddsa_test_vectors.h\n@@ -0,0 +1,330 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright(C) 2023 Marvell.\n+ */\n+\n+#ifndef __TEST_CRYPTODEV_EDDSA_TEST_VECTORS_H__\n+#define __TEST_CRYPTODEV_EDDSA_TEST_VECTORS_H__\n+\n+#include \"rte_crypto_asym.h\"\n+\n+struct crypto_testsuite_eddsa_params {\n+\trte_crypto_param pubkey;\n+\trte_crypto_param pkey;\n+\trte_crypto_param sign;\n+\trte_crypto_param message;\n+\trte_crypto_param context;\n+\tenum rte_crypto_curve_id curve;\n+\tenum rte_crypto_edward_instance instance;\n+};\n+\n+static uint8_t ed25519_pkey[] = {\n+\t0x83, 0x3f, 0xe6, 0x24, 0x09, 0x23, 0x7b, 0x9d,\n+\t0x62, 0xec, 0x77, 0x58, 0x75, 0x20, 0x91, 0x1e,\n+\t0x9a, 0x75, 0x9c, 0xec, 0x1d, 0x19, 0x75, 0x5b,\n+\t0x7d, 0xa9, 0x01, 0xb9, 0x6d, 0xca, 0x3d, 0x42\n+};\n+\n+static uint8_t ed25519_pubkey[] = {\n+\t0xec, 0x17, 0x2b, 0x93, 0xad, 0x5e, 0x56, 0x3b,\n+\t0xf4, 0x93, 0x2c, 0x70, 0xe1, 0x24, 0x50, 0x34,\n+\t0xc3, 0x54, 0x67, 0xef, 0x2e, 0xfd, 0x4d, 0x64,\n+\t0xeb, 0xf8, 0x19, 0x68, 0x34, 0x67, 0xe2, 0xbf\n+};\n+\n+static uint8_t ed25519_sign[] = {\n+\t0xdc, 0x2a, 0x44, 0x59, 0xe7, 0x36, 0x96, 0x33,\n+\t0xa5, 0x2b, 0x1b, 0xf2, 0x77, 0x83, 0x9a, 0x00,\n+\t0x20, 0x10, 0x09, 0xa3, 0xef, 0xbf, 0x3e, 0xcb,\n+\t0x69, 0xbe, 0xa2, 0x18, 0x6c, 0x26, 0xb5, 0x89,\n+\t0x09, 0x35, 0x1f, 0xc9, 0xac, 0x90, 0xb3, 0xec,\n+\t0xfd, 0xfb, 0xc7, 0xc6, 0x64, 0x31, 0xe0, 0x30,\n+\t0x3d, 0xca, 0x17, 0x9c, 0x13, 0x8a, 0xc1, 0x7a,\n+\t0xd9, 0xbe, 0xf1, 0x17, 0x73, 0x31, 0xa7, 0x04\n+};\n+\n+static uint8_t ed25519_message[] = {\n+\t0xdd, 0xaf, 0x35, 0xa1, 0x93, 0x61, 0x7a, 0xba,\n+\t0xcc, 0x41, 0x73, 0x49, 0xae, 0x20, 0x41, 0x31,\n+\t0x12, 0xe6, 0xfa, 0x4e, 0x89, 0xa9, 0x7e, 0xa2,\n+\t0x0a, 0x9e, 0xee, 0xe6, 0x4b, 0x55, 0xd3, 0x9a,\n+\t0x21, 0x92, 0x99, 0x2a, 0x27, 0x4f, 0xc1, 0xa8,\n+\t0x36, 0xba, 0x3c, 0x23, 0xa3, 0xfe, 0xeb, 0xbd,\n+\t0x45, 0x4d, 0x44, 0x23, 0x64, 0x3c, 0xe8, 0x0e,\n+\t0x2a, 0x9a, 0xc9, 0x4f, 0xa5, 0x4c, 0xa4, 0x9f\n+};\n+\n+/** EDDSA ed25519 curve test params (RFC 8032) */\n+struct crypto_testsuite_eddsa_params eddsa_param_ed25519 = {\n+\t.pkey = {\n+\t\t.data = ed25519_pkey,\n+\t\t.length = sizeof(ed25519_pkey),\n+\t},\n+\t.pubkey = {\n+\t\t.data = ed25519_pubkey,\n+\t\t.length = sizeof(ed25519_pubkey),\n+\t},\n+\t.sign = {\n+\t\t.data = ed25519_sign,\n+\t\t.length = sizeof(ed25519_sign),\n+\t},\n+\t.message = {\n+\t\t.data = ed25519_message,\n+\t\t.length = sizeof(ed25519_message),\n+\t},\n+\t.curve = RTE_CRYPTO_EC_GROUP_ED25519,\n+\t.instance = RTE_CRYPTO_EDCURVE_25519\n+};\n+\n+static uint8_t ed25519ctx_pkey[] = {\n+\t0x03, 0x05, 0x33, 0x4e, 0x38, 0x1a, 0xf7, 0x8f,\n+\t0x14, 0x1c, 0xb6, 0x66, 0xf6, 0x19, 0x9f, 0x57,\n+\t0xbc, 0x34, 0x95, 0x33, 0x5a, 0x25, 0x6a, 0x95,\n+\t0xbd, 0x2a, 0x55, 0xbf, 0x54, 0x66, 0x63, 0xf6\n+};\n+\n+static uint8_t ed25519ctx_pubkey[] = {\n+\t0xdf, 0xc9, 0x42, 0x5e, 0x4f, 0x96, 0x8f, 0x7f,\n+\t0x0c, 0x29, 0xf0, 0x25, 0x9c, 0xf5, 0xf9, 0xae,\n+\t0xd6, 0x85, 0x1c, 0x2b, 0xb4, 0xad, 0x8b, 0xfb,\n+\t0x86, 0x0c, 0xfe, 0xe0, 0xab, 0x24, 0x82, 0x92\n+};\n+\n+static uint8_t ed25519ctx_sign[] = {\n+\t0x55, 0xa4, 0xcc, 0x2f, 0x70, 0xa5, 0x4e, 0x04,\n+\t0x28, 0x8c, 0x5f, 0x4c, 0xd1, 0xe4, 0x5a, 0x7b,\n+\t0xb5, 0x20, 0xb3, 0x62, 0x92, 0x91, 0x18, 0x76,\n+\t0xca, 0xda, 0x73, 0x23, 0x19, 0x8d, 0xd8, 0x7a,\n+\t0x8b, 0x36, 0x95, 0x0b, 0x95, 0x13, 0x00, 0x22,\n+\t0x90, 0x7a, 0x7f, 0xb7, 0xc4, 0xe9, 0xb2, 0xd5,\n+\t0xf6, 0xcc, 0xa6, 0x85, 0xa5, 0x87, 0xb4, 0xb2,\n+\t0x1f, 0x4b, 0x88, 0x8e, 0x4e, 0x7e, 0xdb, 0x0d\n+};\n+\n+static uint8_t ed25519ctx_message[] = {\n+\t0xf7, 0x26, 0x93, 0x6d, 0x19, 0xc8, 0x00, 0x49,\n+\t0x4e, 0x3f, 0xda, 0xff, 0x20, 0xb2, 0x76, 0xa8\n+};\n+\n+static uint8_t ed25519ctx_context[] = {\n+\t0x66, 0x6f, 0x6f\n+};\n+\n+/** EDDSA ed25519ctx curve test params (RFC 8032) */\n+struct crypto_testsuite_eddsa_params eddsa_param_ed25519ctx = {\n+\t.pkey = {\n+\t\t.data = ed25519ctx_pkey,\n+\t\t.length = sizeof(ed25519ctx_pkey),\n+\t},\n+\t.pubkey = {\n+\t\t.data = ed25519ctx_pubkey,\n+\t\t.length = sizeof(ed25519ctx_pubkey),\n+\t},\n+\t.sign = {\n+\t\t.data = ed25519ctx_sign,\n+\t\t.length = sizeof(ed25519ctx_sign),\n+\t},\n+\t.message = {\n+\t\t.data = ed25519ctx_message,\n+\t\t.length = sizeof(ed25519ctx_message),\n+\t},\n+\t.context = {\n+\t\t.data = ed25519ctx_context,\n+\t\t.length = sizeof(ed25519ctx_context),\n+\t},\n+\t.curve = RTE_CRYPTO_EC_GROUP_ED25519,\n+\t.instance = RTE_CRYPTO_EDCURVE_25519CTX\n+};\n+\n+static uint8_t ed25519ph_pkey[] = {\n+\t0x83, 0x3f, 0xe6, 0x24, 0x09, 0x23, 0x7b, 0x9d,\n+\t0x62, 0xec, 0x77, 0x58, 0x75, 0x20, 0x91, 0x1e,\n+\t0x9a, 0x75, 0x9c, 0xec, 0x1d, 0x19, 0x75, 0x5b,\n+\t0x7d, 0xa9, 0x01, 0xb9, 0x6d, 0xca, 0x3d, 0x42\n+};\n+\n+static uint8_t ed25519ph_pubkey[] = {\n+\t0xec, 0x17, 0x2b, 0x93, 0xad, 0x5e, 0x56, 0x3b,\n+\t0xf4, 0x93, 0x2c, 0x70, 0xe1, 0x24, 0x50, 0x34,\n+\t0xc3, 0x54, 0x67, 0xef, 0x2e, 0xfd, 0x4d, 0x64,\n+\t0xeb, 0xf8, 0x19, 0x68, 0x34, 0x67, 0xe2, 0xbf\n+};\n+\n+static uint8_t ed25519ph_sign[] = {\n+\t0x98, 0xa7, 0x02, 0x22, 0xf0, 0xb8, 0x12, 0x1a,\n+\t0xa9, 0xd3, 0x0f, 0x81, 0x3d, 0x68, 0x3f, 0x80,\n+\t0x9e, 0x46, 0x2b, 0x46, 0x9c, 0x7f, 0xf8, 0x76,\n+\t0x39, 0x49, 0x9b, 0xb9, 0x4e, 0x6d, 0xae, 0x41,\n+\t0x31, 0xf8, 0x50, 0x42, 0x46, 0x3c, 0x2a, 0x35,\n+\t0x5a, 0x20, 0x03, 0xd0, 0x62, 0xad, 0xf5, 0xaa,\n+\t0xa1, 0x0b, 0x8c, 0x61, 0xe6, 0x36, 0x06, 0x2a,\n+\t0xaa, 0xd1, 0x1c, 0x2a, 0x26, 0x08, 0x34, 0x06\n+};\n+\n+static uint8_t ed25519ph_message[] = {\n+\t0x61, 0x62, 0x63\n+};\n+\n+/** EDDSA ed25519ph curve test params (RFC 8032) */\n+struct crypto_testsuite_eddsa_params eddsa_param_ed25519ph = {\n+\t.pkey = {\n+\t\t.data = ed25519ph_pkey,\n+\t\t.length = sizeof(ed25519ph_pkey),\n+\t},\n+\t.pubkey = {\n+\t\t.data = ed25519ph_pubkey,\n+\t\t.length = sizeof(ed25519ph_pubkey),\n+\t},\n+\t.sign = {\n+\t\t.data = ed25519ph_sign,\n+\t\t.length = sizeof(ed25519ph_sign),\n+\t},\n+\t.message = {\n+\t\t.data = ed25519ph_message,\n+\t\t.length = sizeof(ed25519ph_message),\n+\t},\n+\t.curve = RTE_CRYPTO_EC_GROUP_ED25519,\n+\t.instance = RTE_CRYPTO_EDCURVE_25519PH\n+};\n+\n+static uint8_t ed448_pkey[] = {\n+\t0xd6, 0x5d, 0xf3, 0x41, 0xad, 0x13, 0xe0, 0x08,\n+\t0x56, 0x76, 0x88, 0xba, 0xed, 0xda, 0x8e, 0x9d,\n+\t0xcd, 0xc1, 0x7d, 0xc0, 0x24, 0x97, 0x4e, 0xa5,\n+\t0xb4, 0x22, 0x7b, 0x65, 0x30, 0xe3, 0x39, 0xbf,\n+\t0xf2, 0x1f, 0x99, 0xe6, 0x8c, 0xa6, 0x96, 0x8f,\n+\t0x3c, 0xca, 0x6d, 0xfe, 0x0f, 0xb9, 0xf4, 0xfa,\n+\t0xb4, 0xfa, 0x13, 0x5d, 0x55, 0x42, 0xea, 0x3f,\n+\t0x01\n+};\n+\n+static uint8_t ed448_pubkey[] = {\n+\t0xdf, 0x97, 0x05, 0xf5, 0x8e, 0xdb, 0xab, 0x80,\n+\t0x2c, 0x7f, 0x83, 0x63, 0xcf, 0xe5, 0x56, 0x0a,\n+\t0xb1, 0xc6, 0x13, 0x2c, 0x20, 0xa9, 0xf1, 0xdd,\n+\t0x16, 0x34, 0x83, 0xa2, 0x6f, 0x8a, 0xc5, 0x3a,\n+\t0x39, 0xd6, 0x80, 0x8b, 0xf4, 0xa1, 0xdf, 0xbd,\n+\t0x26, 0x1b, 0x09, 0x9b, 0xb0, 0x3b, 0x3f, 0xb5,\n+\t0x09, 0x06, 0xcb, 0x28, 0xbd, 0x8a, 0x08, 0x1f,\n+\t0x00\n+};\n+\n+static uint8_t ed448_sign[] = {\n+\t0x55, 0x4b, 0xc2, 0x48, 0x08, 0x60, 0xb4, 0x9e,\n+\t0xab, 0x85, 0x32, 0xd2, 0xa5, 0x33, 0xb7, 0xd5,\n+\t0x78, 0xef, 0x47, 0x3e, 0xeb, 0x58, 0xc9, 0x8b,\n+\t0xb2, 0xd0, 0xe1, 0xce, 0x48, 0x8a, 0x98, 0xb1,\n+\t0x8d, 0xfd, 0xe9, 0xb9, 0xb9, 0x07, 0x75, 0xe6,\n+\t0x7f, 0x47, 0xd4, 0xa1, 0xc3, 0x48, 0x20, 0x58,\n+\t0xef, 0xc9, 0xf4, 0x0d, 0x2c, 0xa0, 0x33, 0xa0,\n+\t0x80,\n+\t0x1b, 0x63, 0xd4, 0x5b, 0x3b, 0x72, 0x2e, 0xf5,\n+\t0x52, 0xba, 0xd3, 0xb4, 0xcc, 0xb6, 0x67, 0xda,\n+\t0x35, 0x01, 0x92, 0xb6, 0x1c, 0x50, 0x8c, 0xf7,\n+\t0xb6, 0xb5, 0xad, 0xad, 0xc2, 0xc8, 0xd9, 0xa4,\n+\t0x46, 0xef, 0x00, 0x3f, 0xb0, 0x5c, 0xba, 0x5f,\n+\t0x30, 0xe8, 0x8e, 0x36, 0xec, 0x27, 0x03, 0xb3,\n+\t0x49, 0xca, 0x22, 0x9c, 0x26, 0x70, 0x83, 0x39,\n+\t0x00\n+};\n+\n+static uint8_t ed448_message[] = {\n+\t0xbd, 0x0f, 0x6a, 0x37, 0x47, 0xcd, 0x56, 0x1b,\n+\t0xdd, 0xdf, 0x46, 0x40, 0xa3, 0x32, 0x46, 0x1a,\n+\t0x4a, 0x30, 0xa1, 0x2a, 0x43, 0x4c, 0xd0, 0xbf,\n+\t0x40, 0xd7, 0x66, 0xd9, 0xc6, 0xd4, 0x58, 0xe5,\n+\t0x51, 0x22, 0x04, 0xa3, 0x0c, 0x17, 0xd1, 0xf5,\n+\t0x0b, 0x50, 0x79, 0x63, 0x1f, 0x64, 0xeb, 0x31,\n+\t0x12, 0x18, 0x2d, 0xa3, 0x00, 0x58, 0x35, 0x46,\n+\t0x11, 0x13, 0x71, 0x8d, 0x1a, 0x5e, 0xf9, 0x44\n+};\n+\n+/** EDDSA ed448 curve test params (RFC 8032) */\n+struct crypto_testsuite_eddsa_params eddsa_param_ed448 = {\n+\t.pkey = {\n+\t\t.data = ed448_pkey,\n+\t\t.length = sizeof(ed448_pkey),\n+\t},\n+\t.pubkey = {\n+\t\t.data = ed448_pubkey,\n+\t\t.length = sizeof(ed448_pubkey),\n+\t},\n+\t.sign = {\n+\t\t.data = ed448_sign,\n+\t\t.length = sizeof(ed448_sign),\n+\t},\n+\t.message = {\n+\t\t.data = ed448_message,\n+\t\t.length = sizeof(ed448_message),\n+\t},\n+\t.curve = RTE_CRYPTO_EC_GROUP_ED448,\n+\t.instance = RTE_CRYPTO_EDCURVE_448\n+};\n+\n+static uint8_t ed448ph_pkey[] = {\n+\t0x83, 0x3f, 0xe6, 0x24, 0x09, 0x23, 0x7b, 0x9d,\n+\t0x62, 0xec, 0x77, 0x58, 0x75, 0x20, 0x91, 0x1e,\n+\t0x9a, 0x75, 0x9c, 0xec, 0x1d, 0x19, 0x75, 0x5b,\n+\t0x7d, 0xa9, 0x01, 0xb9, 0x6d, 0xca, 0x3d, 0x42,\n+\t0xef, 0x78, 0x22, 0xe0, 0xd5, 0x10, 0x41, 0x27,\n+\t0xdc, 0x05, 0xd6, 0xdb, 0xef, 0xde, 0x69, 0xe3,\n+\t0xab, 0x2c, 0xec, 0x7c, 0x86, 0x7c, 0x6e, 0x2c,\n+\t0x49\n+};\n+\n+static uint8_t ed448ph_pubkey[] = {\n+\t0x25, 0x9b, 0x71, 0xc1, 0x9f, 0x83, 0xef, 0x77,\n+\t0xa7, 0xab, 0xd2, 0x65, 0x24, 0xcb, 0xdb, 0x31,\n+\t0x61, 0xb5, 0x90, 0xa4, 0x8f, 0x7d, 0x17, 0xde,\n+\t0x3e, 0xe0, 0xba, 0x9c, 0x52, 0xbe, 0xb7, 0x43,\n+\t0xc0, 0x94, 0x28, 0xa1, 0x31, 0xd6, 0xb1, 0xb5,\n+\t0x73, 0x03, 0xd9, 0x0d, 0x81, 0x32, 0xc2, 0x76,\n+\t0xd5, 0xed, 0x3d, 0x5d, 0x01, 0xc0, 0xf5, 0x38,\n+\t0x80\n+};\n+\n+static uint8_t ed448ph_sign[] = {\n+\t0x82, 0x2f, 0x69, 0x01, 0xf7, 0x48, 0x0f, 0x3d,\n+\t0x5f, 0x56, 0x2c, 0x59, 0x29, 0x94, 0xd9, 0x69,\n+\t0x36, 0x02, 0x87, 0x56, 0x14, 0x48, 0x32, 0x56,\n+\t0x50, 0x56, 0x00, 0xbb, 0xc2, 0x81, 0xae, 0x38,\n+\t0x1f, 0x54, 0xd6, 0xbc, 0xe2, 0xea, 0x91, 0x15,\n+\t0x74, 0x93, 0x2f, 0x52, 0xa4, 0xe6, 0xca, 0xdd,\n+\t0x78, 0x76, 0x93, 0x75, 0xec, 0x3f, 0xfd, 0x1b,\n+\t0x80,\n+\t0x1a, 0x0d, 0x9b, 0x3f, 0x40, 0x30, 0xcd, 0x43,\n+\t0x39, 0x64, 0xb6, 0x45, 0x7e, 0xa3, 0x94, 0x76,\n+\t0x51, 0x12, 0x14, 0xf9, 0x74, 0x69, 0xb5, 0x7d,\n+\t0xd3, 0x2d, 0xbc, 0x56, 0x0a, 0x9a, 0x94, 0xd0,\n+\t0x0b, 0xff, 0x07, 0x62, 0x04, 0x64, 0xa3, 0xad,\n+\t0x20, 0x3d, 0xf7, 0xdc, 0x7c, 0xe3, 0x60, 0xc3,\n+\t0xcd, 0x36, 0x96, 0xd9, 0xd9, 0xfa, 0xb9, 0x0f,\n+\t0x00\n+};\n+\n+static uint8_t ed448ph_message[] = {\n+\t0x61, 0x62, 0x63\n+};\n+\n+/** EDDSA ed448ph curve test params (RFC 8032) */\n+struct crypto_testsuite_eddsa_params eddsa_param_ed448ph = {\n+\t.pkey = {\n+\t\t.data = ed448ph_pkey,\n+\t\t.length = sizeof(ed448ph_pkey),\n+\t},\n+\t.pubkey = {\n+\t\t.data = ed448ph_pubkey,\n+\t\t.length = sizeof(ed448ph_pubkey),\n+\t},\n+\t.sign = {\n+\t\t.data = ed448ph_sign,\n+\t\t.length = sizeof(ed448ph_sign),\n+\t},\n+\t.message = {\n+\t\t.data = ed448ph_message,\n+\t\t.length = sizeof(ed448ph_message),\n+\t},\n+\t.curve = RTE_CRYPTO_EC_GROUP_ED448,\n+\t.instance = RTE_CRYPTO_EDCURVE_448PH\n+};\n+\n+#endif /* __TEST_CRYPTODEV_EDDSA_TEST_VECTORS_H__ */\n",
    "prefixes": [
        "v1",
        "3/3"
    ]
}