get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 112070,
    "url": "http://patches.dpdk.org/api/patches/112070/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20220530143159.13672-6-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": "<20220530143159.13672-6-arkadiuszx.kusztal@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20220530143159.13672-6-arkadiuszx.kusztal@intel.com",
    "date": "2022-05-30T14:31:52",
    "name": "[v3,05/12] cryptodev: move dh type from xform to dh op",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "d74f2fa52ae3cd1ceacc3a9e0953e81433f07a5b",
    "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/20220530143159.13672-6-arkadiuszx.kusztal@intel.com/mbox/",
    "series": [
        {
            "id": 23248,
            "url": "http://patches.dpdk.org/api/series/23248/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=23248",
            "date": "2022-05-30T14:31:47",
            "name": "cryptodev: rsa, dh, ecdh changes",
            "version": 3,
            "mbox": "http://patches.dpdk.org/series/23248/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/112070/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/112070/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 9CE08A0542;\n\tMon, 30 May 2022 17:40:14 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 53FF642B74;\n\tMon, 30 May 2022 17:39:50 +0200 (CEST)",
            "from mga07.intel.com (mga07.intel.com [134.134.136.100])\n by mails.dpdk.org (Postfix) with ESMTP id 7741742B70\n for <dev@dpdk.org>; Mon, 30 May 2022 17:39:47 +0200 (CEST)",
            "from orsmga005.jf.intel.com ([10.7.209.41])\n by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 30 May 2022 08:39:46 -0700",
            "from silpixa00399302.ir.intel.com ([10.237.214.136])\n by orsmga005.jf.intel.com with ESMTP; 30 May 2022 08:39:45 -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=1653925187; x=1685461187;\n h=from:to:cc:subject:date:message-id:in-reply-to: references;\n bh=4Jk+kU08HlShJE9whmqvvunsYfF3oxC31EHPVhlUrw8=;\n b=K9EoLLppfCB9O897qm2zE0cUohe24uPsw7XTB6Rfkqm5FHJfw8oSsVsc\n syyCCkYVwVUs/64bLY8zTQC0lzuTiRK24YwTB+t7v41Vk9I65SeQ2BJ5A\n NxfQArVEgVrTaSdDvLkgQvVzI65rDNv/9NOIrVhNj4T0R7596Q+1qPiPk\n Lr0KHINJfnX9GGQitOCI+txCU2frn5A34J00ts7LdZQtPO0+hnP0+CDrL\n l+9UmvvaKa2NQNV1+SXeqI6WN3uBaD0sISCPv4X47P7SUWB+hyvMdOa5o\n YItSVCi8iS8O4wxnbwMos6v0AMCEOE+jE00FtWxE1L9efuZiFEZt9OKns w==;",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6400,9594,10363\"; a=\"338069457\"",
            "E=Sophos;i=\"5.91,263,1647327600\"; d=\"scan'208\";a=\"338069457\"",
            "E=Sophos;i=\"5.91,263,1647327600\"; d=\"scan'208\";a=\"751678337\""
        ],
        "X-ExtLoop1": "1",
        "From": "Arek Kusztal <arkadiuszx.kusztal@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "gakhil@marvell.com, roy.fan.zhang@intel.com,\n Arek Kusztal <arkadiuszx.kusztal@intel.com>",
        "Subject": "[PATCH v3 05/12] cryptodev: move dh type from xform to dh op",
        "Date": "Mon, 30 May 2022 15:31:52 +0100",
        "Message-Id": "<20220530143159.13672-6-arkadiuszx.kusztal@intel.com>",
        "X-Mailer": "git-send-email 2.13.6",
        "In-Reply-To": "<20220530143159.13672-1-arkadiuszx.kusztal@intel.com>",
        "References": "<20220530143159.13672-1-arkadiuszx.kusztal@intel.com>",
        "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": "- Moved dh operation type to dh operation struct.\nOperation type (PUBLIC_KEY_GENERATION, SHARED_SECRET) should\nbe free to choose for any operation. One xform/session should\nbe enough to perform both DH operations, if op_type would be xform\nmember, session would have to be to be created twice for the same\ngroup. Similar problem would be observed in sessionless case.\nAdditionally, it will help extend DH to support Elliptic Curves.\n- Changed order of Diffie-Hellman operation phases.\nNow it corresponds with the order of operations.\n\nSigned-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>\n---\n app/test/test_cryptodev_asym.c               | 11 +++++-----\n drivers/crypto/openssl/rte_openssl_pmd.c     | 15 ++++++--------\n drivers/crypto/openssl/rte_openssl_pmd_ops.c | 27 -------------------------\n lib/cryptodev/rte_crypto_asym.h              | 30 +++++++++++++---------------\n 4 files changed, 25 insertions(+), 58 deletions(-)",
    "diff": "diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asym.c\nindex 491ba2c1b9..9d044c65b2 100644\n--- a/app/test/test_cryptodev_asym.c\n+++ b/app/test/test_cryptodev_asym.c\n@@ -1067,8 +1067,8 @@ test_dh_gen_shared_sec(struct rte_crypto_asym_xform *xfrm)\n \tasym_op = op->asym;\n \n \t/* Setup a xform and op to generate private key only */\n-\txform.dh.ke_type = RTE_CRYPTO_ASYM_KE_SHARED_SECRET_COMPUTE;\n \txform.next = NULL;\n+\tasym_op->dh.ke_type = RTE_CRYPTO_ASYM_KE_SHARED_SECRET_COMPUTE;\n \tasym_op->dh.priv_key.data = dh_test_params.priv_key.data;\n \tasym_op->dh.priv_key.length = dh_test_params.priv_key.length;\n \tasym_op->dh.pub_key.data = (uint8_t *)peer;\n@@ -1149,8 +1149,8 @@ test_dh_gen_priv_key(struct rte_crypto_asym_xform *xfrm)\n \tasym_op = op->asym;\n \n \t/* Setup a xform and op to generate private key only */\n-\txform.dh.ke_type = RTE_CRYPTO_ASYM_KE_PRIV_KEY_GENERATE;\n \txform.next = NULL;\n+\tasym_op->dh.ke_type = RTE_CRYPTO_ASYM_KE_PRIV_KEY_GENERATE;\n \tasym_op->dh.priv_key.data = output;\n \tasym_op->dh.priv_key.length = sizeof(output);\n \n@@ -1232,9 +1232,9 @@ test_dh_gen_pub_key(struct rte_crypto_asym_xform *xfrm)\n \t * using test private key\n \t *\n \t */\n-\txform.dh.ke_type = RTE_CRYPTO_ASYM_KE_PUB_KEY_GENERATE;\n \txform.next = NULL;\n \n+\tasym_op->dh.ke_type = RTE_CRYPTO_ASYM_KE_PUB_KEY_GENERATE;\n \tasym_op->dh.pub_key.data = output;\n \tasym_op->dh.pub_key.length = sizeof(output);\n \t/* load pre-defined private key */\n@@ -1323,15 +1323,14 @@ test_dh_gen_kp(struct rte_crypto_asym_xform *xfrm)\n \t * private key first followed by\n \t * public key\n \t */\n-\txform.dh.ke_type = RTE_CRYPTO_ASYM_KE_PRIV_KEY_GENERATE;\n \tpub_key_xform.xform_type = RTE_CRYPTO_ASYM_XFORM_DH;\n-\tpub_key_xform.dh.ke_type = RTE_CRYPTO_ASYM_KE_PUB_KEY_GENERATE;\n \txform.next = &pub_key_xform;\n \n+\tasym_op->dh.ke_type = RTE_CRYPTO_ASYM_KE_PUB_KEY_GENERATE;\n \tasym_op->dh.pub_key.data = out_pub_key;\n \tasym_op->dh.pub_key.length = sizeof(out_pub_key);\n \tasym_op->dh.priv_key.data = out_prv_key;\n-\tasym_op->dh.priv_key.length = sizeof(out_prv_key);\n+\tasym_op->dh.priv_key.length = 0;\n \n \tret = rte_cryptodev_asym_session_create(dev_id, &xform, sess_mpool, &sess);\n \tif (ret < 0) {\ndiff --git a/drivers/crypto/openssl/rte_openssl_pmd.c b/drivers/crypto/openssl/rte_openssl_pmd.c\nindex 86f285ef79..750479c33f 100644\n--- a/drivers/crypto/openssl/rte_openssl_pmd.c\n+++ b/drivers/crypto/openssl/rte_openssl_pmd.c\n@@ -1692,12 +1692,12 @@ process_openssl_dh_op(struct rte_crypto_op *cop,\n \t\tstruct openssl_asym_session *sess)\n {\n \tstruct rte_crypto_dh_op_param *op = &cop->asym->dh;\n+\tstruct rte_crypto_asym_op *asym_op = cop->asym;\n \tDH *dh_key = sess->u.dh.dh_key;\n \tBIGNUM *priv_key = NULL;\n \tint ret = 0;\n \n-\tif (sess->u.dh.key_op &\n-\t\t\t(1 << RTE_CRYPTO_ASYM_KE_SHARED_SECRET_COMPUTE)) {\n+\tif (asym_op->dh.ke_type == RTE_CRYPTO_ASYM_KE_SHARED_SECRET_COMPUTE) {\n \t\t/* compute shared secret using peer public key\n \t\t * and current private key\n \t\t * shared secret = peer_key ^ priv_key mod p\n@@ -1753,10 +1753,8 @@ process_openssl_dh_op(struct rte_crypto_op *cop,\n \t * if user provides private key,\n \t * then first set DH with user provided private key\n \t */\n-\tif ((sess->u.dh.key_op &\n-\t\t\t(1 << RTE_CRYPTO_ASYM_KE_PUB_KEY_GENERATE)) &&\n-\t\t\t!(sess->u.dh.key_op &\n-\t\t\t(1 << RTE_CRYPTO_ASYM_KE_PRIV_KEY_GENERATE))) {\n+\tif (asym_op->dh.ke_type == RTE_CRYPTO_ASYM_KE_PUB_KEY_GENERATE &&\n+\t\t\top->priv_key.length) {\n \t\t/* generate public key using user-provided private key\n \t\t * pub_key = g ^ priv_key mod p\n \t\t */\n@@ -1790,7 +1788,7 @@ process_openssl_dh_op(struct rte_crypto_op *cop,\n \t\treturn 0;\n \t}\n \n-\tif (sess->u.dh.key_op & (1 << RTE_CRYPTO_ASYM_KE_PUB_KEY_GENERATE)) {\n+\tif (asym_op->dh.ke_type == RTE_CRYPTO_ASYM_KE_PUB_KEY_GENERATE) {\n \t\tconst BIGNUM *pub_key = NULL;\n \n \t\tOPENSSL_LOG(DEBUG, \"%s:%d update public key\\n\",\n@@ -1804,8 +1802,7 @@ process_openssl_dh_op(struct rte_crypto_op *cop,\n \t\t\t\top->pub_key.data);\n \t}\n \n-\tif (sess->u.dh.key_op &\n-\t\t\t(1 << RTE_CRYPTO_ASYM_KE_PRIV_KEY_GENERATE)) {\n+\tif (asym_op->dh.ke_type == RTE_CRYPTO_ASYM_KE_PRIV_KEY_GENERATE) {\n \t\tconst BIGNUM *priv_key = NULL;\n \n \t\tOPENSSL_LOG(DEBUG, \"%s:%d updated priv key\\n\",\ndiff --git a/drivers/crypto/openssl/rte_openssl_pmd_ops.c b/drivers/crypto/openssl/rte_openssl_pmd_ops.c\nindex 724492c7cb..2bb3520bfd 100644\n--- a/drivers/crypto/openssl/rte_openssl_pmd_ops.c\n+++ b/drivers/crypto/openssl/rte_openssl_pmd_ops.c\n@@ -999,33 +999,6 @@ static int openssl_set_asym_session_parameters(\n \t\t\tDH_free(dh);\n \t\t\tgoto err_dh;\n \t\t}\n-\n-\t\t/*\n-\t\t * setup xfrom for\n-\t\t * public key generate, or\n-\t\t * DH Priv key generate, or both\n-\t\t * public and private key generate\n-\t\t */\n-\t\tasym_session->u.dh.key_op = (1 << xform->dh.ke_type);\n-\n-\t\tif (xform->dh.ke_type ==\n-\t\t\tRTE_CRYPTO_ASYM_KE_PRIV_KEY_GENERATE) {\n-\t\t\t/* check if next is pubkey */\n-\t\t\tif ((xform->next != NULL) &&\n-\t\t\t\t(xform->next->xform_type ==\n-\t\t\t\tRTE_CRYPTO_ASYM_XFORM_DH) &&\n-\t\t\t\t(xform->next->dh.ke_type ==\n-\t\t\t\tRTE_CRYPTO_ASYM_KE_PUB_KEY_GENERATE)\n-\t\t\t\t) {\n-\t\t\t\t/*\n-\t\t\t\t * setup op as pub/priv key\n-\t\t\t\t * pair generationi\n-\t\t\t\t */\n-\t\t\t\tasym_session->u.dh.key_op |=\n-\t\t\t\t(1 <<\n-\t\t\t\tRTE_CRYPTO_ASYM_KE_PUB_KEY_GENERATE);\n-\t\t\t}\n-\t\t}\n \t\tasym_session->u.dh.dh_key = dh;\n \t\tasym_session->xfrm_type = RTE_CRYPTO_ASYM_XFORM_DH;\n \t\tbreak;\ndiff --git a/lib/cryptodev/rte_crypto_asym.h b/lib/cryptodev/rte_crypto_asym.h\nindex 619c0614bf..88bc34dc8c 100644\n--- a/lib/cryptodev/rte_crypto_asym.h\n+++ b/lib/cryptodev/rte_crypto_asym.h\n@@ -270,8 +270,6 @@ struct rte_crypto_modinv_xform {\n  *\n  */\n struct rte_crypto_dh_xform {\n-\tenum rte_crypto_asym_ke_type ke_type;\n-\t/**< Setup xform for key generate or shared secret compute */\n \trte_crypto_uint p;\n \t/**< Prime modulus data */\n \trte_crypto_uint g;\n@@ -399,33 +397,33 @@ struct rte_crypto_rsa_op_param {\n  * @note:\n  */\n struct rte_crypto_dh_op_param {\n-\trte_crypto_uint pub_key;\n-\t/**<\n-\t * Output - generated public key, when dh xform ke_type is\n-\t * RTE_CRYPTO_ASYM_KE_PUB_KEY_GENERATE.\n-\t *\n-\t * Input - peer's public key, when dh xform ke_type is\n-\t * RTE_CRYPTO_ASYM_KE_SHARED_SECRET_COMPUTE.\n-\t */\n-\n+\tenum rte_crypto_asym_ke_type ke_type;\n+\t/**< Key exchange operation type */\n \trte_crypto_uint priv_key;\n \t/**<\n-\t * Output - generated private key, when dh xform ke_type is\n+\t * Output - generated private key when ke_type is\n \t * RTE_CRYPTO_ASYM_KE_PRIV_KEY_GENERATE.\n \t *\n-\t * Input - private key, when dh xform ke_type is one of:\n+\t * Input - private key when ke_type is one of:\n \t * RTE_CRYPTO_ASYM_KE_PUB_KEY_GENERATE,\n \t * RTE_CRYPTO_ASYM_KE_SHARED_SECRET_COMPUTE.\n \t *\n-\t * In case priv_key.length is 0 and xform type is set with\n+\t * In case priv_key.length is 0 and ke_type is set with\n \t * RTE_CRYPTO_ASYM_KE_PUB_KEY_GENERATE, CSRNG capable\n \t * device will generate a private key and use it for public\n \t * key generation.\n \t */\n-\n+\trte_crypto_uint pub_key;\n+\t/**<\n+\t * Output - generated public key when ke_type is\n+\t * RTE_CRYPTO_ASYM_KE_PUB_KEY_GENERATE.\n+\t *\n+\t * Input - peer's public key when ke_type is\n+\t * RTE_CRYPTO_ASYM_KE_SHARED_SECRET_COMPUTE.\n+\t */\n \trte_crypto_uint shared_secret;\n \t/**<\n-\t * Output - calculated shared secret when dh xform ke_type is\n+\t * Output - calculated shared secret when ke_type is\n \t * RTE_CRYPTO_ASYM_KE_SHARED_SECRET_COMPUTE.\n \t */\n };\n",
    "prefixes": [
        "v3",
        "05/12"
    ]
}