get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 138325,
    "url": "http://patches.dpdk.org/api/patches/138325/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20240313105901.1959675-20-asasidharan@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": "<20240313105901.1959675-20-asasidharan@marvell.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20240313105901.1959675-20-asasidharan@marvell.com",
    "date": "2024-03-13T10:58:59",
    "name": "[v5,19/21] test/crypto: unit tests to verify padding in TLS",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "5688f5510e56bd9521ef5c97b694da38c1d5238c",
    "submitter": {
        "id": 2800,
        "url": "http://patches.dpdk.org/api/people/2800/?format=api",
        "name": "Aakash Sasidharan",
        "email": "asasidharan@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/20240313105901.1959675-20-asasidharan@marvell.com/mbox/",
    "series": [
        {
            "id": 31494,
            "url": "http://patches.dpdk.org/api/series/31494/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=31494",
            "date": "2024-03-13T10:58:40",
            "name": "Improvements and new test cases",
            "version": 5,
            "mbox": "http://patches.dpdk.org/series/31494/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/138325/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/138325/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 C792643C9F;\n\tWed, 13 Mar 2024 12:01:27 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 6128042E37;\n\tWed, 13 Mar 2024 12:00:20 +0100 (CET)",
            "from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com\n [67.231.156.173])\n by mails.dpdk.org (Postfix) with ESMTP id CA61842E46\n for <dev@dpdk.org>; Wed, 13 Mar 2024 12:00:01 +0100 (CET)",
            "from pps.filterd (m0045851.ppops.net [127.0.0.1])\n by mx0b-0016f401.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id\n 42D85U79026170; Wed, 13 Mar 2024 04:00:01 -0700",
            "from dc5-exch05.marvell.com ([199.233.59.128])\n by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3wswdd1evm-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);\n Wed, 13 Mar 2024 04:00:01 -0700 (PDT)",
            "from DC5-EXCH05.marvell.com (10.69.176.209) by\n DC5-EXCH05.marvell.com (10.69.176.209) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.2.1258.12; Wed, 13 Mar 2024 03:59:59 -0700",
            "from maili.marvell.com (10.69.176.80) by DC5-EXCH05.marvell.com\n (10.69.176.209) with Microsoft SMTP Server id 15.2.1258.12 via Frontend\n Transport; Wed, 13 Mar 2024 03:59:59 -0700",
            "from localhost.localdomain (unknown [10.28.36.177])\n by maili.marvell.com (Postfix) with ESMTP id 4397E3F7080;\n Wed, 13 Mar 2024 03:59:57 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=\n from:to:cc:subject:date:message-id:in-reply-to:references\n :mime-version:content-transfer-encoding:content-type; s=\n pfpt0220; bh=wBcTxwKqY4SO3C68l/dy+E/dGXVHmXpXqizt1ewiCk8=; b=UNX\n /ACcwU7CgRflXom5gHUG+uCBk1Vv8FtiDO6J4XdMI10BVZdwb2uKfnAfzce3+/Gq\n M6o5ZL+yOdGo/cWi8+7uiWPW5Xmtvzh8UsxOINSoPGO7kyhYe+FROBjF9yI4EUiJ\n k3utGt+ekdzFifUBM/m2loOS/KP08Ax5cpzrisc0mlvv+CbcI2E61bi+hsIt1eqJ\n 15fIKuu8NubqaGXdOA/8xVK7OEmFnQPkxIAKY9uBi/n+rQ/z2h8mNzK61MMb8ISG\n e/942hByLXJwnD8B0X3hgohjfryzjOqeZnRC4jl1QQPRI8tqRZ2MgfoUu6Gwp6zf\n I0pzZ5hvRXQoZgwuiKA==",
        "From": "Aakash Sasidharan <asasidharan@marvell.com>",
        "To": "Akhil Goyal <gakhil@marvell.com>, Fan Zhang <fanzhang.oss@gmail.com>",
        "CC": "<jerinj@marvell.com>, <anoobj@marvell.com>, <vvelumuri@marvell.com>,\n <asasidharan@marvell.com>, <dev@dpdk.org>",
        "Subject": "[PATCH v5 19/21] test/crypto: unit tests to verify padding in TLS",
        "Date": "Wed, 13 Mar 2024 16:28:59 +0530",
        "Message-ID": "<20240313105901.1959675-20-asasidharan@marvell.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20240313105901.1959675-1-asasidharan@marvell.com>",
        "References": "<20240313055030.1685039-1-asasidharan@marvell.com>\n <20240313105901.1959675-1-asasidharan@marvell.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Proofpoint-ORIG-GUID": "3oiUfvE3tusdL61bsep3MeXg--0ee8dX",
        "X-Proofpoint-GUID": "3oiUfvE3tusdL61bsep3MeXg--0ee8dX",
        "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26\n definitions=2024-03-13_07,2024-03-12_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": "From: Vidya Sagar Velumuri <vvelumuri@marvell.com>\n\nAdd unit tests to verify the padding for TLS-1.2.\n\nSigned-off-by: Vidya Sagar Velumuri <vvelumuri@marvell.com>\n---\n app/test/test_cryptodev.c                     | 85 ++++++++++++++++++-\n app/test/test_cryptodev_security_tls_record.c | 28 ++++--\n app/test/test_cryptodev_security_tls_record.h |  5 +-\n 3 files changed, 109 insertions(+), 9 deletions(-)",
    "diff": "diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c\nindex 8ad5033f32..a324c1607b 100644\n--- a/app/test/test_cryptodev.c\n+++ b/app/test/test_cryptodev.c\n@@ -11834,6 +11834,9 @@ test_tls_record_proto_process(const struct tls_record_test_data td[],\n \tif (td[0].aead)\n \t\ttest_tls_record_imp_nonce_update(&td[0], &tls_record_xform);\n \n+\tif (flags->opt_padding)\n+\t\ttls_record_xform.options.extra_padding_enable = 1;\n+\n \tsess_conf.tls_record = tls_record_xform;\n \n \tif (td[0].aead) {\n@@ -11888,6 +11891,9 @@ test_tls_record_proto_process(const struct tls_record_test_data td[],\n \t\tut_params->op->sym->m_dst = NULL;\n \t\tut_params->op->param1.tls_record.content_type = td[i].app_type;\n \n+\t\tif (flags->opt_padding)\n+\t\t\tut_params->op->aux_flags = flags->opt_padding;\n+\n \t\t/* Copy IV in crypto operation when IV generation is disabled */\n \t\tif ((sess_type == RTE_SECURITY_TLS_SESS_TYPE_WRITE) &&\n \t\t    (tls_record_xform.ver != RTE_SECURITY_VERSION_TLS_1_3) &&\n@@ -11915,7 +11921,7 @@ test_tls_record_proto_process(const struct tls_record_test_data td[],\n \n \t\tif (ut_params->op->status == RTE_CRYPTO_OP_STATUS_SUCCESS) {\n \t\t\tret = test_tls_record_post_process(ut_params->ibuf, &td[i], res_d_tmp,\n-\t\t\t\t\t\t\t   silent);\n+\t\t\t\t\t\t\t   silent, flags);\n \t\t\tif (ret != TEST_SUCCESS)\n \t\t\t\tgoto crypto_op_free;\n \t\t}\n@@ -12184,6 +12190,59 @@ test_tls_record_proto_zero_len_non_app(void)\n \treturn test_tls_record_proto_all(&flags);\n }\n \n+static int\n+test_tls_record_proto_opt_padding(uint8_t padding, uint8_t num_segs,\n+\t\t\t\t  enum rte_security_tls_version tls_version)\n+{\n+\tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n+\tstruct rte_cryptodev_info dev_info;\n+\tstruct tls_record_test_flags flags = {\n+\t\t.nb_segs_in_mbuf = num_segs,\n+\t\t.tls_version = tls_version,\n+\t\t.opt_padding = padding\n+\t};\n+\n+\trte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info);\n+\n+\treturn test_tls_record_proto_all(&flags);\n+}\n+\n+static int\n+test_tls_record_proto_dm_opt_padding(void)\n+{\n+\treturn test_tls_record_proto_opt_padding(1, 0, RTE_SECURITY_VERSION_TLS_1_2);\n+}\n+\n+static int\n+test_tls_record_proto_dm_opt_padding_1(void)\n+{\n+\treturn test_tls_record_proto_opt_padding(25, 0, RTE_SECURITY_VERSION_TLS_1_2);\n+}\n+\n+static int\n+test_tls_record_proto_sg_opt_padding(void)\n+{\n+\treturn test_tls_record_proto_opt_padding(1, 2, RTE_SECURITY_VERSION_TLS_1_2);\n+}\n+\n+static int\n+test_tls_record_proto_sg_opt_padding_1(void)\n+{\n+\treturn test_tls_record_proto_opt_padding(8, 4, RTE_SECURITY_VERSION_TLS_1_2);\n+}\n+\n+static int\n+test_tls_record_proto_sg_opt_padding_2(void)\n+{\n+\treturn test_tls_record_proto_opt_padding(8, 5, RTE_SECURITY_VERSION_TLS_1_2);\n+}\n+\n+static int\n+test_tls_record_proto_sg_opt_padding_max(void)\n+{\n+\treturn test_tls_record_proto_opt_padding(33, 4, RTE_SECURITY_VERSION_TLS_1_2);\n+}\n+\n static int\n test_dtls_1_2_record_proto_data_walkthrough(void)\n {\n@@ -17578,6 +17637,30 @@ static struct unit_test_suite tls12_record_proto_testsuite  = {\n \t\t\t\"Zero len TLS record with content type as ctrl\",\n \t\t\tut_setup_security, ut_teardown,\n \t\t\ttest_tls_record_proto_zero_len_non_app),\n+\t\tTEST_CASE_NAMED_ST(\n+\t\t\t\"TLS record DM mode with optional padding < 2 blocks\",\n+\t\t\tut_setup_security, ut_teardown,\n+\t\t\ttest_tls_record_proto_dm_opt_padding),\n+\t\tTEST_CASE_NAMED_ST(\n+\t\t\t\"TLS record DM mode with optional padding > 2 blocks\",\n+\t\t\tut_setup_security, ut_teardown,\n+\t\t\ttest_tls_record_proto_dm_opt_padding_1),\n+\t\tTEST_CASE_NAMED_ST(\n+\t\t\t\"TLS record SG mode with optional padding < 2 blocks\",\n+\t\t\tut_setup_security, ut_teardown,\n+\t\t\ttest_tls_record_proto_sg_opt_padding),\n+\t\tTEST_CASE_NAMED_ST(\n+\t\t\t\"TLS record SG mode with optional padding > 2 blocks\",\n+\t\t\tut_setup_security, ut_teardown,\n+\t\t\ttest_tls_record_proto_sg_opt_padding_1),\n+\t\tTEST_CASE_NAMED_ST(\n+\t\t\t\"TLS record SG mode with optional padding > 2 blocks\",\n+\t\t\tut_setup_security, ut_teardown,\n+\t\t\ttest_tls_record_proto_sg_opt_padding_2),\n+\t\tTEST_CASE_NAMED_ST(\n+\t\t\t\"TLS record SG mode with optional padding > max range\",\n+\t\t\tut_setup_security, ut_teardown,\n+\t\t\ttest_tls_record_proto_sg_opt_padding_max),\n \t\tTEST_CASES_END() /**< NULL terminate unit test array */\n \t}\n };\ndiff --git a/app/test/test_cryptodev_security_tls_record.c b/app/test/test_cryptodev_security_tls_record.c\nindex 96d0a94731..03d9efefc3 100644\n--- a/app/test/test_cryptodev_security_tls_record.c\n+++ b/app/test/test_cryptodev_security_tls_record.c\n@@ -269,7 +269,8 @@ test_tls_record_res_d_prepare(const uint8_t *output_text, uint32_t len,\n }\n \n static int\n-tls_record_hdr_verify(const struct tls_record_test_data *td, const uint8_t *output_text)\n+tls_record_hdr_verify(const struct tls_record_test_data *td, const uint8_t *output_text,\n+\t\t      const struct tls_record_test_flags *flags)\n {\n \tuint16_t length, hdr_len;\n \tuint8_t content_type;\n@@ -322,10 +323,22 @@ tls_record_hdr_verify(const struct tls_record_test_data *td, const uint8_t *outp\n \t\t}\n \t}\n \n-\tif (length != td->output_text.len - hdr_len) {\n-\t\tprintf(\"Incorrect packet length [expected - %d, received - %d]\\n\",\n-\t\t       td->output_text.len - hdr_len, length);\n-\t\treturn TEST_FAILED;\n+\tif (!flags->opt_padding) {\n+\t\tif (length != td->output_text.len - hdr_len) {\n+\t\t\tprintf(\"Incorrect packet length [expected - %d, received - %d]\\n\",\n+\t\t\t       td->output_text.len - hdr_len, length);\n+\t\t\treturn TEST_FAILED;\n+\t\t}\n+\t} else {\n+\t\tint pad_len = (flags->opt_padding * 8) > 256 ? 256 : (flags->opt_padding * 8);\n+\t\tint expect_len = td->output_text.len - hdr_len + pad_len;\n+\n+\t\tif (length - expect_len > 32) {\n+\t\t\tprintf(\"Incorrect packet length [expected - %d, received - %d]\\n\",\n+\t\t\t       expect_len, length);\n+\t\t\treturn TEST_FAILED;\n+\t\t}\n+\n \t}\n \n \treturn TEST_SUCCESS;\n@@ -333,7 +346,8 @@ tls_record_hdr_verify(const struct tls_record_test_data *td, const uint8_t *outp\n \n int\n test_tls_record_post_process(const struct rte_mbuf *m, const struct tls_record_test_data *td,\n-\t\t\t     struct tls_record_test_data *res_d, bool silent)\n+\t\t\t     struct tls_record_test_data *res_d, bool silent,\n+\t\t\t     const struct tls_record_test_flags *flags)\n {\n \tuint8_t output_text[TEST_SEC_CIPHERTEXT_MAX_LEN];\n \tuint32_t len = rte_pktmbuf_pkt_len(m), data_len;\n@@ -365,7 +379,7 @@ test_tls_record_post_process(const struct rte_mbuf *m, const struct tls_record_t\n \t}\n \n \tif (td->tls_record_xform.type == RTE_SECURITY_TLS_SESS_TYPE_WRITE) {\n-\t\tret = tls_record_hdr_verify(td, output_text);\n+\t\tret = tls_record_hdr_verify(td, output_text, flags);\n \t\tif (ret != TEST_SUCCESS)\n \t\t\treturn ret;\n \t}\ndiff --git a/app/test/test_cryptodev_security_tls_record.h b/app/test/test_cryptodev_security_tls_record.h\nindex 0138770fac..a7c38218ae 100644\n--- a/app/test/test_cryptodev_security_tls_record.h\n+++ b/app/test/test_cryptodev_security_tls_record.h\n@@ -97,7 +97,9 @@ struct tls_record_test_flags {\n \tbool data_walkthrough;\n \tbool pkt_corruption;\n \tbool zero_len;\n+\tbool padding_corruption;\n \tuint8_t nb_segs_in_mbuf;\n+\tuint8_t opt_padding;\n \tenum rte_security_tls_version tls_version;\n \tenum tls_record_test_content_type content_type;\n \tint ar_win_size;\n@@ -148,5 +150,6 @@ void test_tls_record_td_update(struct tls_record_test_data td_inb[],\n \t\t\t       const struct tls_record_test_flags *flags);\n \n int test_tls_record_post_process(const struct rte_mbuf *m, const struct tls_record_test_data *td,\n-\t\t\t\t struct tls_record_test_data *res_d, bool silent);\n+\t\t\t\t struct tls_record_test_data *res_d, bool silent,\n+\t\t\t\t const struct tls_record_test_flags *flags);\n #endif\n",
    "prefixes": [
        "v5",
        "19/21"
    ]
}