get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 56041,
    "url": "https://patches.dpdk.org/api/patches/56041/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20190703153759.1508-4-arkadiuszx.kusztal@intel.com/",
    "project": {
        "id": 1,
        "url": "https://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": "<20190703153759.1508-4-arkadiuszx.kusztal@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20190703153759.1508-4-arkadiuszx.kusztal@intel.com",
    "date": "2019-07-03T15:37:59",
    "name": "[v2,3/3] test: rework rsa test implementation",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "b2a4c00189e10d37a7b42404a0442b11acb9a67d",
    "submitter": {
        "id": 452,
        "url": "https://patches.dpdk.org/api/people/452/?format=api",
        "name": "Arkadiusz Kusztal",
        "email": "arkadiuszx.kusztal@intel.com"
    },
    "delegate": {
        "id": 6690,
        "url": "https://patches.dpdk.org/api/users/6690/?format=api",
        "username": "akhil",
        "first_name": "akhil",
        "last_name": "goyal",
        "email": "gakhil@marvell.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20190703153759.1508-4-arkadiuszx.kusztal@intel.com/mbox/",
    "series": [
        {
            "id": 5316,
            "url": "https://patches.dpdk.org/api/series/5316/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=5316",
            "date": "2019-07-03T15:37:56",
            "name": "Rework API for RSA algorithm in asymmetric crypto",
            "version": 2,
            "mbox": "https://patches.dpdk.org/series/5316/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/56041/comments/",
    "check": "fail",
    "checks": "https://patches.dpdk.org/api/patches/56041/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 333EA5B3A;\n\tWed,  3 Jul 2019 17:39:28 +0200 (CEST)",
            "from mga06.intel.com (mga06.intel.com [134.134.136.31])\n\tby dpdk.org (Postfix) with ESMTP id 562BB58C4\n\tfor <dev@dpdk.org>; Wed,  3 Jul 2019 17:39:25 +0200 (CEST)",
            "from fmsmga001.fm.intel.com ([10.253.24.23])\n\tby orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t03 Jul 2019 08:39:24 -0700",
            "from damiannx-mobl1.ger.corp.intel.com (HELO\n\takusztax-MOBL.ger.corp.intel.com) ([10.104.14.182])\n\tby fmsmga001.fm.intel.com with ESMTP; 03 Jul 2019 08:39:22 -0700"
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.63,446,1557212400\"; d=\"scan'208\";a=\"184788201\"",
        "From": "Arek Kusztal <arkadiuszx.kusztal@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "akhil.goyal@nxp.com, fiona.trahe@intel.com,\n\tshally.verma@caviumnetworks.com,\n\tArek Kusztal <arkadiuszx.kusztal@intel.com>",
        "Date": "Wed,  3 Jul 2019 17:37:59 +0200",
        "Message-Id": "<20190703153759.1508-4-arkadiuszx.kusztal@intel.com>",
        "X-Mailer": "git-send-email 2.19.1.windows.1",
        "In-Reply-To": "<20190703153759.1508-1-arkadiuszx.kusztal@intel.com>",
        "References": "<20190703153759.1508-1-arkadiuszx.kusztal@intel.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH v2 3/3] test: rework rsa test implementation",
        "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\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "This commit reworks rsa test implementation to be conformant\nto the RSA API.\nSimulation of PKCS1_5 padding was added to be used with PADDING_NONE\noption.\n\nSigned-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>\n---\n app/test/test_cryptodev_asym.c      | 44 ++++++++++++++++++++++++-------\n app/test/test_cryptodev_asym_util.h | 52 +++++++++++++++++++++++++++++++++++++\n 2 files changed, 87 insertions(+), 9 deletions(-)",
    "diff": "diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asym.c\nindex fc92d3d..ae43861 100644\n--- a/app/test/test_cryptodev_asym.c\n+++ b/app/test/test_cryptodev_asym.c\n@@ -402,7 +402,7 @@ test_rsa_sign_verify(void)\n \tasym_op->rsa.message.data = input_buf;\n \tasym_op->rsa.message.length = rsaplaintext.len;\n \tasym_op->rsa.sign.data = output_buf;\n-\tasym_op->rsa.pad = RTE_CRYPTO_RSA_PKCS1_V1_5_BT1;\n+\tasym_op->rsa.padding = RTE_CRYPTO_RSA_PADDING_PKCS1;\n \n \tdebug_hexdump(stdout, \"message\", asym_op->rsa.message.data,\n \t\t\tasym_op->rsa.message.length);\n@@ -437,7 +437,7 @@ test_rsa_sign_verify(void)\n \n \t/* Verify sign */\n \tasym_op->rsa.op_type = RTE_CRYPTO_ASYM_OP_VERIFY;\n-\tasym_op->rsa.pad = RTE_CRYPTO_RSA_PKCS1_V1_5_BT2;\n+\tasym_op->rsa.padding = RTE_CRYPTO_RSA_PADDING_PKCS1;\n \n \t/* Process crypto operation */\n \tif (rte_cryptodev_enqueue_burst(dev_id, 0, &op, 1) != 1) {\n@@ -483,7 +483,7 @@ test_rsa_sign_verify(void)\n }\n \n static int\n-test_rsa_enc_dec(void)\n+test_rsa_enc_dec(enum rte_crypto_rsa_padding_type padding)\n {\n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n \tstruct rte_mempool *op_mpool = ts_params->op_mpool;\n@@ -495,6 +495,7 @@ test_rsa_enc_dec(void)\n \tstruct rte_cryptodev_asym_session *sess = NULL;\n \tint status = TEST_SUCCESS;\n \tuint8_t input_buf[TEST_DATA_SIZE] = {0};\n+\tuint8_t cipher_buf[TEST_DATA_SIZE] = {0};\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@@ -542,12 +543,18 @@ test_rsa_enc_dec(void)\n \tasym_op = op->asym;\n \t/*Compute encryption on the test vector */\n \tasym_op->rsa.op_type = RTE_CRYPTO_ASYM_OP_ENCRYPT;\n-\n-\tmemcpy(input_buf, rsaplaintext.data,\n-\t\t\trsaplaintext.len);\n \tasym_op->rsa.message.data = input_buf;\n \tasym_op->rsa.message.length = rsaplaintext.len;\n-\tasym_op->rsa.pad = RTE_CRYPTO_RSA_PKCS1_V1_5_BT2;\n+\tasym_op->rsa.cipher.data = cipher_buf;\n+\tasym_op->rsa.cipher.length = 0;\n+\tasym_op->rsa.padding = padding;\n+\tif (padding == RTE_CRYPTO_RSA_PADDING_NONE) {\n+\t\trsa_simulate_pkcs1_5_padding(0, input_buf, rsa_xform.rsa.n.length,\n+\t\t\t\trsaplaintext.data, rsaplaintext.len);\n+\t\tasym_op->rsa.message.length = rsa_xform.rsa.n.length;\n+\t} else\n+\t\tmemcpy(input_buf, rsaplaintext.data,\n+\t\t\t\trsaplaintext.len);\n \n \tdebug_hexdump(stdout, \"message\", asym_op->rsa.message.data,\n \t\t\tasym_op->rsa.message.length);\n@@ -581,7 +588,7 @@ test_rsa_enc_dec(void)\n \t/* Use the resulted output as decryption Input vector*/\n \tasym_op = result_op->asym;\n \tasym_op->rsa.op_type = RTE_CRYPTO_ASYM_OP_DECRYPT;\n-\tasym_op->rsa.pad = RTE_CRYPTO_RSA_PKCS1_V1_5_BT1;\n+\tasym_op->rsa.padding = padding;\n \n \t/* Process crypto operation */\n \tif (rte_cryptodev_enqueue_burst(dev_id, 0, &op, 1) != 1) {\n@@ -604,7 +611,15 @@ test_rsa_enc_dec(void)\n \t}\n \tstatus = TEST_SUCCESS;\n \tint ret = 0;\n+\n+\tif (padding == RTE_CRYPTO_RSA_PADDING_NONE) {\n+\t\tresult_op->asym->rsa.message.length =\n+\t\t\t\trsa_simulate_strip_pkcs1_5_padding(result_op->asym->rsa.message.data,\n+\t\t\t\trsa_xform.rsa.n.length);\n+\t}\n+\n \tret = rsa_verify(&rsaplaintext, result_op);\n+\n \tif (ret)\n \t\tstatus = TEST_FAILED;\n \n@@ -624,6 +639,16 @@ test_rsa_enc_dec(void)\n }\n \n static int\n+test_rsa_enc_dec_pkcs_1(void){\n+\treturn test_rsa_enc_dec(RTE_CRYPTO_RSA_PADDING_PKCS1);\n+}\n+\n+static int\n+test_rsa_enc_dec_pkcs_1_none(void){\n+\treturn test_rsa_enc_dec(RTE_CRYPTO_RSA_PADDING_NONE);\n+}\n+\n+static int\n testsuite_setup(void)\n {\n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n@@ -1684,7 +1709,8 @@ static struct unit_test_suite cryptodev_openssl_asym_testsuite  = {\n \t\tTEST_CASE_ST(ut_setup, ut_teardown, test_capability),\n \t\tTEST_CASE_ST(ut_setup, ut_teardown, test_dsa),\n \t\tTEST_CASE_ST(ut_setup, ut_teardown, test_dh_keygenration),\n-\t\tTEST_CASE_ST(ut_setup, ut_teardown, test_rsa_enc_dec),\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown, test_rsa_enc_dec_pkcs_1),\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown, test_rsa_enc_dec_pkcs_1_none),\n \t\tTEST_CASE_ST(ut_setup, ut_teardown, test_rsa_sign_verify),\n \t\tTEST_CASE_ST(ut_setup, ut_teardown, test_mod_inv),\n \t\tTEST_CASE_ST(ut_setup, ut_teardown, test_mod_exp),\ndiff --git a/app/test/test_cryptodev_asym_util.h b/app/test/test_cryptodev_asym_util.h\nindex b3d9fb4..484b967 100644\n--- a/app/test/test_cryptodev_asym_util.h\n+++ b/app/test/test_cryptodev_asym_util.h\n@@ -7,6 +7,58 @@\n \n /* Below Apis compare resulted buffer to original test vector */\n \n+/*\n+ * Two functions below simulate pkcs 1.5 padding and serves only as an example,\n+ * both offer no security.\n+ */\n+static inline int rsa_simulate_pkcs1_5_padding(int op, uint8_t *p,\n+\t\tint key_size, const uint8_t *src, int len) {\n+\n+\tint ps_len;\n+\n+\tif (len > key_size - 11)\n+\t\treturn -1;\n+\tps_len = key_size - len - 3;\n+\n+\t*(p++) = 0;\n+\t*(p++) = op ? 1 : 2;\n+\tif (op) {\n+\t\twhile (ps_len--)\n+\t\t\t*p = 0xFF;\n+\t} else {\n+\t\twhile (ps_len--) {\n+\t\t\t*p = (uint8_t)rand();\n+\t\t\t*p ^= !(*p);\n+\t\t\tp++;\n+\t\t}\n+\t}\n+\n+\t*(p++) = 0;\n+\tmemcpy(p, src, len);\n+\n+\treturn 0;\n+}\n+\n+static inline int rsa_simulate_strip_pkcs1_5_padding(uint8_t *src,\n+\t\tint key_size) {\n+\tuint8_t tmp[key_size], *orig_src = src;\n+\tint i = 1;\n+\t++src;\n+\twhile (*(src) && i < key_size) {\n+\t\t++i;\n+\t\t++src;\n+\t}\n+\tif (i == key_size)\n+\t\treturn -1;\n+\n+\t++i;\n+\t++src;\n+\n+\tmemcpy(tmp, src, key_size - i);\n+\tmemcpy(orig_src, tmp, key_size - i);\n+\treturn key_size - i;\n+}\n+\n static inline int rsa_verify(struct rsa_test_data *rsa_param,\n \t\tstruct rte_crypto_op *result_op)\n {\n",
    "prefixes": [
        "v2",
        "3/3"
    ]
}