get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 138291,
    "url": "http://patches.dpdk.org/api/patches/138291/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20240313055030.1685039-9-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": "<20240313055030.1685039-9-asasidharan@marvell.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20240313055030.1685039-9-asasidharan@marvell.com",
    "date": "2024-03-13T05:50:17",
    "name": "[v4,08/21] test/security: unit test to verify zero TLS records",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "d48a4c98df909ed71a7c44dd3c11bef0c87b8c19",
    "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/20240313055030.1685039-9-asasidharan@marvell.com/mbox/",
    "series": [
        {
            "id": 31490,
            "url": "http://patches.dpdk.org/api/series/31490/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=31490",
            "date": "2024-03-13T05:50:09",
            "name": "Improvements and new test cases",
            "version": 4,
            "mbox": "http://patches.dpdk.org/series/31490/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/138291/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/138291/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 5BA1743C9A;\n\tWed, 13 Mar 2024 06:51:42 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 1F39542D66;\n\tWed, 13 Mar 2024 06:51:11 +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 15E3B42D76\n for <dev@dpdk.org>; Wed, 13 Mar 2024 06:50:59 +0100 (CET)",
            "from pps.filterd (m0045849.ppops.net [127.0.0.1])\n by mx0a-0016f401.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id\n 42D4061A015029; Tue, 12 Mar 2024 22:50:59 -0700",
            "from dc6wp-exch02.marvell.com ([4.21.29.225])\n by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3wtt8htkrq-2\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);\n Tue, 12 Mar 2024 22:50:59 -0700 (PDT)",
            "from DC6WP-EXCH02.marvell.com (10.76.176.209) by\n DC6WP-EXCH02.marvell.com (10.76.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; Tue, 12 Mar 2024 22:50:57 -0700",
            "from maili.marvell.com (10.69.176.80) by DC6WP-EXCH02.marvell.com\n (10.76.176.209) with Microsoft SMTP Server id 15.2.1258.12 via Frontend\n Transport; Tue, 12 Mar 2024 22:50:57 -0700",
            "from localhost.localdomain (unknown [10.28.36.177])\n by maili.marvell.com (Postfix) with ESMTP id 3B41C3F7080;\n Tue, 12 Mar 2024 22:50:54 -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=Vb1sGf33dC+sG8ZZWkLOwIKKUSqYRHT437l4P5CvU90=; b=iRx\n NA3VoCTd3W/25bDJ0NPnVhpXR05oG7iKYxI/pRWvQaN2KywLsI90+2JS+TwQY3As\n 0e/3CPD0duDAybauXP7cG91hnkXF3lzdgHPe3dAexOW0KSPJbJvwMJ8MsQPgQA9i\n Gp5DUVM7CgG+ZaMlXsaFkLx50mYCQuTK5USv8wgo/vhQ1FMhqWYfK/BN0GpRqbu1\n VtOY5CB52DIC9LKyX8MIU9Q3W59Y/TCsw/ofXdsNGPAi+D+zlCZ/Fy79WFa+X5Bt\n gSqUPdY8ZxkOy/1RRqOdOHHxxikDU1/IIlttVaPNYkRKw3YNtbwnrwTPf8kubzC3\n 1BEVtmVPkU4ca8zHKRA==",
        "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 v4 08/21] test/security: unit test to verify zero TLS records",
        "Date": "Wed, 13 Mar 2024 11:20:17 +0530",
        "Message-ID": "<20240313055030.1685039-9-asasidharan@marvell.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20240313055030.1685039-1-asasidharan@marvell.com>",
        "References": "<20240312175143.1664699-1-asasidharan@marvell.com>\n <20240313055030.1685039-1-asasidharan@marvell.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Proofpoint-ORIG-GUID": "2nfmNvPbzNO0hFOMxDJVMEy2yuQa3BJ-",
        "X-Proofpoint-GUID": "2nfmNvPbzNO0hFOMxDJVMEy2yuQa3BJ-",
        "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_05,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 zero len TLS records. Zero len packets are\nallowed when content type is app data while zero packet length with\nother content type (such as handshake) would result in an error.\n\nSigned-off-by: Vidya Sagar Velumuri <vvelumuri@marvell.com>\n---\n app/test/test_cryptodev.c                     | 51 ++++++++++++++++++-\n app/test/test_cryptodev_security_tls_record.c |  5 +-\n app/test/test_cryptodev_security_tls_record.h |  2 +-\n 3 files changed, 55 insertions(+), 3 deletions(-)",
    "diff": "diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c\nindex 5cb878b9ba..fa63b9743f 100644\n--- a/app/test/test_cryptodev.c\n+++ b/app/test/test_cryptodev.c\n@@ -11984,6 +11984,9 @@ test_tls_record_proto_all(const struct tls_record_test_flags *flags)\n \t\tpayload_len = TLS_RECORD_PLAINTEXT_MIN_LEN;\n \t\tif (flags->nb_segs_in_mbuf)\n \t\t\tpayload_len = RTE_MAX(payload_len, flags->nb_segs_in_mbuf);\n+\n+\t\tif (flags->zero_len)\n+\t\t\tpayload_len = 0;\n again:\n \t\ttest_tls_record_td_prepare(sec_alg_list[i].param1, sec_alg_list[i].param2, flags,\n \t\t\t\t\t   td_outb, nb_pkts, payload_len);\n@@ -11992,8 +11995,16 @@ test_tls_record_proto_all(const struct tls_record_test_flags *flags)\n \t\tif (ret == TEST_SKIPPED)\n \t\t\tcontinue;\n \n-\t\tif (ret == TEST_FAILED)\n+\t\tif (flags->zero_len &&\n+\t\t    ((flags->content_type == TLS_RECORD_TEST_CONTENT_TYPE_HANDSHAKE) ||\n+\t\t    (flags->content_type == TLS_RECORD_TEST_CONTENT_TYPE_HANDSHAKE) ||\n+\t\t    (flags->content_type == TLS_RECORD_TEST_CONTENT_TYPE_HANDSHAKE))) {\n+\t\t\tif (ret == TEST_SUCCESS)\n+\t\t\t\treturn TEST_FAILED;\n+\t\t\tgoto skip_decrypt;\n+\t\t} else if (ret == TEST_FAILED) {\n \t\t\treturn TEST_FAILED;\n+\t\t}\n \n \t\ttest_tls_record_td_update(td_inb, td_outb, nb_pkts, flags);\n \n@@ -12009,6 +12020,7 @@ test_tls_record_proto_all(const struct tls_record_test_flags *flags)\n \t\t\t\treturn TEST_FAILED;\n \t\t}\n \n+skip_decrypt:\n \t\tif (flags->data_walkthrough && (++payload_len <= max_payload_len))\n \t\t\tgoto again;\n \n@@ -12123,6 +12135,35 @@ test_tls_record_proto_custom_content_type(void)\n \treturn test_tls_record_proto_all(&flags);\n }\n \n+static int\n+test_tls_record_proto_zero_len(void)\n+{\n+\tstruct tls_record_test_flags flags = {\n+\t\t.zero_len = 1\n+\t};\n+\tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n+\tstruct rte_cryptodev_info dev_info;\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_zero_len_non_app(void)\n+{\n+\tstruct tls_record_test_flags flags = {\n+\t\t.zero_len = 1,\n+\t\t.content_type = TLS_RECORD_TEST_CONTENT_TYPE_HANDSHAKE,\n+\t};\n+\tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n+\tstruct rte_cryptodev_info dev_info;\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_dtls_1_2_record_proto_data_walkthrough(void)\n {\n@@ -17251,6 +17292,14 @@ static struct unit_test_suite tls12_record_proto_testsuite  = {\n \t\t\t\"Custom content type\",\n \t\t\tut_setup_security, ut_teardown,\n \t\t\ttest_tls_record_proto_custom_content_type),\n+\t\tTEST_CASE_NAMED_ST(\n+\t\t\t\"Zero len TLS record with content type as app\",\n+\t\t\tut_setup_security, ut_teardown,\n+\t\t\ttest_tls_record_proto_zero_len),\n+\t\tTEST_CASE_NAMED_ST(\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_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 9a2af259c9..c5410a4c92 100644\n--- a/app/test/test_cryptodev_security_tls_record.c\n+++ b/app/test/test_cryptodev_security_tls_record.c\n@@ -103,13 +103,15 @@ test_tls_record_td_prepare(const struct crypto_param *param1, const struct crypt\n \t\t}\n \t}\n \n-\tif (flags->data_walkthrough) {\n+\tif (flags->data_walkthrough || flags->zero_len) {\n \t\ttest_sec_proto_pattern_set(td->input_text.data, data_len);\n \t\ttd->input_text.len = data_len;\n \t}\n \n \tif (flags->content_type == TLS_RECORD_TEST_CONTENT_TYPE_CUSTOM)\n \t\ttd->app_type = RTE_TLS_TYPE_MAX;\n+\telse if (flags->content_type == TLS_RECORD_TEST_CONTENT_TYPE_HANDSHAKE)\n+\t\ttd->app_type = RTE_TLS_TYPE_HANDSHAKE;\n \n \ttls_pkt_size = td->input_text.len;\n \n@@ -232,6 +234,7 @@ test_tls_record_res_d_prepare(const uint8_t *output_text, uint32_t len,\n \n \tmemcpy(&res_d->input_text.data, output_text, len);\n \tres_d->input_text.len = len;\n+\tres_d->output_text.len = td->input_text.len;\n \n \tres_d->tls_record_xform.type = RTE_SECURITY_TLS_SESS_TYPE_READ;\n \tif (res_d->aead) {\ndiff --git a/app/test/test_cryptodev_security_tls_record.h b/app/test/test_cryptodev_security_tls_record.h\nindex 73719063a8..300f3f08b5 100644\n--- a/app/test/test_cryptodev_security_tls_record.h\n+++ b/app/test/test_cryptodev_security_tls_record.h\n@@ -98,6 +98,7 @@ struct tls_record_test_flags {\n \tenum rte_security_tls_version tls_version;\n \tbool pkt_corruption;\n \tenum tls_record_test_content_type content_type;\n+\tbool zero_len;\n };\n \n extern struct tls_record_test_data tls_test_data_aes_128_gcm_v1;\n@@ -140,5 +141,4 @@ void test_tls_record_td_update(struct tls_record_test_data td_inb[],\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-\n #endif\n",
    "prefixes": [
        "v4",
        "08/21"
    ]
}