get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 60034,
    "url": "https://patches.dpdk.org/api/patches/60034/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20190927154739.26404-2-adamx.dybkowski@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": "<20190927154739.26404-2-adamx.dybkowski@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20190927154739.26404-2-adamx.dybkowski@intel.com",
    "date": "2019-09-27T15:47:37",
    "name": "[v2,1/3] test/crypto: add more AES GCM tests for QAT PMD",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "8a5a53ca2c649b92025c1e4d012c8b99887d0e8b",
    "submitter": {
        "id": 1322,
        "url": "https://patches.dpdk.org/api/people/1322/?format=api",
        "name": "Dybkowski, AdamX",
        "email": "adamx.dybkowski@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/20190927154739.26404-2-adamx.dybkowski@intel.com/mbox/",
    "series": [
        {
            "id": 6588,
            "url": "https://patches.dpdk.org/api/series/6588/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=6588",
            "date": "2019-09-27T15:47:36",
            "name": "QAT: handle Single Pass GCM",
            "version": 2,
            "mbox": "https://patches.dpdk.org/series/6588/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/60034/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/60034/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 1FA6F1BF25;\n\tFri, 27 Sep 2019 17:49:54 +0200 (CEST)",
            "from mga07.intel.com (mga07.intel.com [134.134.136.100])\n\tby dpdk.org (Postfix) with ESMTP id A31112C27\n\tfor <dev@dpdk.org>; Fri, 27 Sep 2019 17:49:47 +0200 (CEST)",
            "from orsmga001.jf.intel.com ([10.7.209.18])\n\tby orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t27 Sep 2019 08:49:47 -0700",
            "from adamdybx-mobl.ger.corp.intel.com (HELO localhost.localdomain)\n\t([10.104.14.185])\n\tby orsmga001.jf.intel.com with ESMTP; 27 Sep 2019 08:49:45 -0700"
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.64,556,1559545200\"; d=\"scan'208\";a=\"273854529\"",
        "From": "Adam Dybkowski <adamx.dybkowski@intel.com>",
        "To": "dev@dpdk.org, fiona.trahe@intel.com, arkadiuszx.kusztal@intel.com,\n\takhil.goyal@nxp.com",
        "Cc": "Adam Dybkowski <adamx.dybkowski@intel.com>",
        "Date": "Fri, 27 Sep 2019 17:47:37 +0200",
        "Message-Id": "<20190927154739.26404-2-adamx.dybkowski@intel.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20190927154739.26404-1-adamx.dybkowski@intel.com>",
        "References": "<20190906144751.3420-1-adamx.dybkowski@intel.com>\n\t<20190927154739.26404-1-adamx.dybkowski@intel.com>",
        "Subject": "[dpdk-dev] [PATCH v2 1/3] test/crypto: add more AES GCM tests for\n\tQAT PMD",
        "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 patch adds 256-bit AES GCM tests for QAT PMD\n(which already existed for AESNI and OpenSSL) and also adds\na number of negative unit tests for AES GCM for QAT PMD, in order\nto verify authenticated encryption and decryption with modified data.\n\nSigned-off-by: Adam Dybkowski <adamx.dybkowski@intel.com>\n---\n app/test/test_cryptodev.c | 253 +++++++++++++++++++++++++++++++++++++-\n 1 file changed, 248 insertions(+), 5 deletions(-)",
    "diff": "diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c\nindex 9a226bd15..a0629c402 100644\n--- a/app/test/test_cryptodev.c\n+++ b/app/test/test_cryptodev.c\n@@ -6939,7 +6939,8 @@ create_aead_operation(enum rte_crypto_aead_operation op,\n }\n \n static int\n-test_authenticated_encryption(const struct aead_test_data *tdata)\n+test_authenticated_encryption_silent(const struct aead_test_data *tdata,\n+\t\tuint8_t silent_mode)\n {\n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n@@ -7005,6 +7006,12 @@ test_authenticated_encryption(const struct aead_test_data *tdata)\n \tdebug_hexdump(stdout, \"auth tag:\", auth_tag, tdata->auth_tag.len);\n \n \t/* Validate obuf */\n+\tif (silent_mode)\n+\t\treturn !memcmp(ciphertext, tdata->ciphertext.data,\n+\t\t\t\ttdata->ciphertext.len) &&\n+\t\t\t!memcmp(auth_tag, tdata->auth_tag.data,\n+\t\t\t\ttdata->auth_tag.len) ? 0 : TEST_FAILED;\n+\n \tTEST_ASSERT_BUFFERS_ARE_EQUAL(\n \t\t\tciphertext,\n \t\t\ttdata->ciphertext.data,\n@@ -7021,6 +7028,12 @@ test_authenticated_encryption(const struct aead_test_data *tdata)\n \n }\n \n+static int\n+test_authenticated_encryption(const struct aead_test_data *tdata)\n+{\n+\treturn test_authenticated_encryption_silent(tdata, 0);\n+}\n+\n static int\n test_AES_GCM_authenticated_encryption_test_case_1(void)\n {\n@@ -7063,6 +7076,12 @@ test_AES_GCM_authenticated_encryption_test_case_7(void)\n \treturn test_authenticated_encryption(&gcm_test_case_7);\n }\n \n+static int\n+test_AES_GCM_authenticated_encryption_test_case_8(void)\n+{\n+\treturn test_authenticated_encryption(&gcm_test_case_8);\n+}\n+\n static int\n test_AES_GCM_auth_encryption_test_case_192_1(void)\n {\n@@ -7160,7 +7179,89 @@ test_AES_GCM_auth_encryption_test_case_aad_2(void)\n }\n \n static int\n-test_authenticated_decryption(const struct aead_test_data *tdata)\n+test_AES_GCM_auth_encryption_fail_iv_corrupt(void)\n+{\n+\tstruct aead_test_data tdata;\n+\tint res;\n+\n+\tmemcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));\n+\ttdata.iv.data[0] += 1;\n+\tres = test_authenticated_encryption_silent(&tdata, 1);\n+\tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"encryption not failed\");\n+\treturn TEST_SUCCESS;\n+}\n+\n+static int\n+test_AES_GCM_auth_encryption_fail_in_data_corrupt(void)\n+{\n+\tstruct aead_test_data tdata;\n+\tint res;\n+\n+\tmemcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));\n+\ttdata.plaintext.data[0] += 1;\n+\tres = test_authenticated_encryption_silent(&tdata, 1);\n+\tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"encryption not failed\");\n+\treturn TEST_SUCCESS;\n+}\n+\n+static int\n+test_AES_GCM_auth_encryption_fail_out_data_corrupt(void)\n+{\n+\tstruct aead_test_data tdata;\n+\tint res;\n+\n+\tmemcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));\n+\ttdata.ciphertext.data[0] += 1;\n+\tres = test_authenticated_encryption_silent(&tdata, 1);\n+\tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"encryption not failed\");\n+\treturn TEST_SUCCESS;\n+}\n+\n+static int\n+test_AES_GCM_auth_encryption_fail_aad_len_corrupt(void)\n+{\n+\tstruct aead_test_data tdata;\n+\tint res;\n+\n+\tmemcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));\n+\ttdata.aad.len += 1;\n+\tres = test_authenticated_encryption_silent(&tdata, 1);\n+\tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"encryption not failed\");\n+\treturn TEST_SUCCESS;\n+}\n+\n+static int\n+test_AES_GCM_auth_encryption_fail_aad_corrupt(void)\n+{\n+\tstruct aead_test_data tdata;\n+\tuint8_t aad[gcm_test_case_7.aad.len];\n+\tint res;\n+\n+\tmemcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));\n+\tmemcpy(aad, gcm_test_case_7.aad.data, gcm_test_case_7.aad.len);\n+\taad[0] += 1;\n+\ttdata.aad.data = aad;\n+\tres = test_authenticated_encryption_silent(&tdata, 1);\n+\tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"encryption not failed\");\n+\treturn TEST_SUCCESS;\n+}\n+\n+static int\n+test_AES_GCM_auth_encryption_fail_tag_corrupt(void)\n+{\n+\tstruct aead_test_data tdata;\n+\tint res;\n+\n+\tmemcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));\n+\ttdata.auth_tag.data[0] += 1;\n+\tres = test_authenticated_encryption_silent(&tdata, 1);\n+\tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"encryption not failed\");\n+\treturn TEST_SUCCESS;\n+}\n+\n+static int\n+test_authenticated_decryption_silent(const struct aead_test_data *tdata,\n+\t\tuint8_t silent_mode)\n {\n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n@@ -7217,19 +7318,30 @@ test_authenticated_decryption(const struct aead_test_data *tdata)\n \n \tdebug_hexdump(stdout, \"plaintext:\", plaintext, tdata->ciphertext.len);\n \n+\tTEST_ASSERT_EQUAL(ut_params->op->status,\n+\t\t\tRTE_CRYPTO_OP_STATUS_SUCCESS,\n+\t\t\t\"Authentication failed\");\n+\n \t/* Validate obuf */\n+\tif (silent_mode)\n+\t\treturn !memcmp(plaintext, tdata->plaintext.data,\n+\t\t\t\ttdata->plaintext.len) ? 0 : TEST_FAILED;\n+\n \tTEST_ASSERT_BUFFERS_ARE_EQUAL(\n \t\t\tplaintext,\n \t\t\ttdata->plaintext.data,\n \t\t\ttdata->plaintext.len,\n \t\t\t\"Plaintext data not as expected\");\n \n-\tTEST_ASSERT_EQUAL(ut_params->op->status,\n-\t\t\tRTE_CRYPTO_OP_STATUS_SUCCESS,\n-\t\t\t\"Authentication failed\");\n \treturn 0;\n }\n \n+static int\n+test_authenticated_decryption(const struct aead_test_data *tdata)\n+{\n+\treturn test_authenticated_decryption_silent(tdata, 0);\n+}\n+\n static int\n test_AES_GCM_authenticated_decryption_test_case_1(void)\n {\n@@ -7272,6 +7384,12 @@ test_AES_GCM_authenticated_decryption_test_case_7(void)\n \treturn test_authenticated_decryption(&gcm_test_case_7);\n }\n \n+static int\n+test_AES_GCM_authenticated_decryption_test_case_8(void)\n+{\n+\treturn test_authenticated_decryption(&gcm_test_case_8);\n+}\n+\n static int\n test_AES_GCM_auth_decryption_test_case_192_1(void)\n {\n@@ -7368,6 +7486,87 @@ test_AES_GCM_auth_decryption_test_case_aad_2(void)\n \treturn test_authenticated_decryption(&gcm_test_case_aad_2);\n }\n \n+static int\n+test_AES_GCM_auth_decryption_fail_iv_corrupt(void)\n+{\n+\tstruct aead_test_data tdata;\n+\tint res;\n+\n+\tmemcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));\n+\ttdata.iv.data[0] += 1;\n+\tres = test_authenticated_decryption_silent(&tdata, 1);\n+\tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"decryption not failed\");\n+\treturn TEST_SUCCESS;\n+}\n+\n+static int\n+test_AES_GCM_auth_decryption_fail_in_data_corrupt(void)\n+{\n+\tstruct aead_test_data tdata;\n+\tint res;\n+\n+\tmemcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));\n+\ttdata.plaintext.data[0] += 1;\n+\tres = test_authenticated_decryption_silent(&tdata, 1);\n+\tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"decryption not failed\");\n+\treturn TEST_SUCCESS;\n+}\n+\n+static int\n+test_AES_GCM_auth_decryption_fail_out_data_corrupt(void)\n+{\n+\tstruct aead_test_data tdata;\n+\tint res;\n+\n+\tmemcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));\n+\ttdata.ciphertext.data[0] += 1;\n+\tres = test_authenticated_decryption_silent(&tdata, 1);\n+\tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"decryption not failed\");\n+\treturn TEST_SUCCESS;\n+}\n+\n+static int\n+test_AES_GCM_auth_decryption_fail_aad_len_corrupt(void)\n+{\n+\tstruct aead_test_data tdata;\n+\tint res;\n+\n+\tmemcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));\n+\ttdata.aad.len += 1;\n+\tres = test_authenticated_decryption_silent(&tdata, 1);\n+\tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"decryption not failed\");\n+\treturn TEST_SUCCESS;\n+}\n+\n+static int\n+test_AES_GCM_auth_decryption_fail_aad_corrupt(void)\n+{\n+\tstruct aead_test_data tdata;\n+\tuint8_t aad[gcm_test_case_7.aad.len];\n+\tint res;\n+\n+\tmemcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));\n+\tmemcpy(aad, gcm_test_case_7.aad.data, gcm_test_case_7.aad.len);\n+\taad[0] += 1;\n+\ttdata.aad.data = aad;\n+\tres = test_authenticated_decryption_silent(&tdata, 1);\n+\tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"decryption not failed\");\n+\treturn TEST_SUCCESS;\n+}\n+\n+static int\n+test_AES_GCM_auth_decryption_fail_tag_corrupt(void)\n+{\n+\tstruct aead_test_data tdata;\n+\tint res;\n+\n+\tmemcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));\n+\ttdata.auth_tag.data[0] += 1;\n+\tres = test_authenticated_decryption_silent(&tdata, 1);\n+\tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"authentication not failed\");\n+\treturn TEST_SUCCESS;\n+}\n+\n static int\n test_authenticated_encryption_oop(const struct aead_test_data *tdata)\n {\n@@ -10315,6 +10514,8 @@ static struct unit_test_suite cryptodev_qat_testsuite  = {\n \t\t\ttest_AES_GCM_authenticated_encryption_test_case_6),\n \t\tTEST_CASE_ST(ut_setup, ut_teardown,\n \t\t\ttest_AES_GCM_authenticated_encryption_test_case_7),\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown,\n+\t\t\ttest_AES_GCM_authenticated_encryption_test_case_8),\n \n \t\t/** AES GCM Authenticated Decryption */\n \t\tTEST_CASE_ST(ut_setup, ut_teardown,\n@@ -10331,6 +10532,8 @@ static struct unit_test_suite cryptodev_qat_testsuite  = {\n \t\t\ttest_AES_GCM_authenticated_decryption_test_case_6),\n \t\tTEST_CASE_ST(ut_setup, ut_teardown,\n \t\t\ttest_AES_GCM_authenticated_decryption_test_case_7),\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown,\n+\t\t\ttest_AES_GCM_authenticated_decryption_test_case_8),\n \n \t\t/** AES GCM Authenticated Encryption 192 bits key */\n \t\tTEST_CASE_ST(ut_setup, ut_teardown,\n@@ -10380,6 +10583,22 @@ static struct unit_test_suite cryptodev_qat_testsuite  = {\n \t\tTEST_CASE_ST(ut_setup, ut_teardown,\n \t\t\ttest_AES_GCM_auth_encryption_test_case_256_7),\n \n+\t\t/** AES GCM Authenticated Decryption 256 bits key */\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown,\n+\t\t\ttest_AES_GCM_auth_decryption_test_case_256_1),\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown,\n+\t\t\ttest_AES_GCM_auth_decryption_test_case_256_2),\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown,\n+\t\t\ttest_AES_GCM_auth_decryption_test_case_256_3),\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown,\n+\t\t\ttest_AES_GCM_auth_decryption_test_case_256_4),\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown,\n+\t\t\ttest_AES_GCM_auth_decryption_test_case_256_5),\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown,\n+\t\t\ttest_AES_GCM_auth_decryption_test_case_256_6),\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown,\n+\t\t\ttest_AES_GCM_auth_decryption_test_case_256_7),\n+\n \t\t/** AES GMAC Authentication */\n \t\tTEST_CASE_ST(ut_setup, ut_teardown,\n \t\t\ttest_AES_GMAC_authentication_test_case_1),\n@@ -10602,6 +10821,30 @@ static struct unit_test_suite cryptodev_qat_testsuite  = {\n \t\t\tauthentication_verify_HMAC_SHA1_fail_data_corrupt),\n \t\tTEST_CASE_ST(ut_setup, ut_teardown,\n \t\t\tauthentication_verify_HMAC_SHA1_fail_tag_corrupt),\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown,\n+\t\t\ttest_AES_GCM_auth_encryption_fail_iv_corrupt),\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown,\n+\t\t\ttest_AES_GCM_auth_encryption_fail_in_data_corrupt),\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown,\n+\t\t\ttest_AES_GCM_auth_encryption_fail_out_data_corrupt),\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown,\n+\t\t\ttest_AES_GCM_auth_encryption_fail_aad_len_corrupt),\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown,\n+\t\t\ttest_AES_GCM_auth_encryption_fail_aad_corrupt),\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown,\n+\t\t\ttest_AES_GCM_auth_encryption_fail_tag_corrupt),\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown,\n+\t\t\ttest_AES_GCM_auth_decryption_fail_iv_corrupt),\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown,\n+\t\t\ttest_AES_GCM_auth_decryption_fail_in_data_corrupt),\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown,\n+\t\t\ttest_AES_GCM_auth_decryption_fail_out_data_corrupt),\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown,\n+\t\t\ttest_AES_GCM_auth_decryption_fail_aad_len_corrupt),\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown,\n+\t\t\ttest_AES_GCM_auth_decryption_fail_aad_corrupt),\n+\t\tTEST_CASE_ST(ut_setup, ut_teardown,\n+\t\t\ttest_AES_GCM_auth_decryption_fail_tag_corrupt),\n \t\tTEST_CASE_ST(ut_setup, ut_teardown,\n \t\t\tauthentication_verify_AES128_GMAC_fail_data_corrupt),\n \t\tTEST_CASE_ST(ut_setup, ut_teardown,\n",
    "prefixes": [
        "v2",
        "1/3"
    ]
}