From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6229EA2E8C for ; Thu, 5 Sep 2019 17:03:15 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 29E621F02C; Thu, 5 Sep 2019 17:02:34 +0200 (CEST) Received: from inva021.nxp.com (inva021.nxp.com [92.121.34.21]) by dpdk.org (Postfix) with ESMTP id B5CE01F005 for ; Thu, 5 Sep 2019 17:02:25 +0200 (CEST) Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 927D720023E; Thu, 5 Sep 2019 17:02:25 +0200 (CEST) Received: from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com [165.114.16.14]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 5A43820024B; Thu, 5 Sep 2019 17:02:21 +0200 (CEST) Received: from GDB1.ap.freescale.net (GDB1.ap.freescale.net [10.232.132.179]) by invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id 443E04030C; Thu, 5 Sep 2019 23:02:16 +0800 (SGT) From: Akhil Goyal To: dev@dpdk.org Cc: hemant.agrawal@nxp.com, anoobj@marvell.com, jerinj@marvell.com, declan.doherty@intel.com, konstantin.ananyev@intel.com, vakul.garg@nxp.com, Akhil Goyal Date: Thu, 5 Sep 2019 20:17:52 +0530 Message-Id: <20190905144754.10188-6-akhil.goyal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190905144754.10188-1-akhil.goyal@nxp.com> References: <20190903164911.32091-1-akhil.goyal@nxp.com> <20190905144754.10188-1-akhil.goyal@nxp.com> X-Virus-Scanned: ClamAV using ClamSMTP Subject: [dpdk-dev] [PATCH 5/7] test/crypto: Add PDCP uplane decap cases X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This patch add test cases for user plane PDCP 5/7/12/15/18 bit SN test cases for decapsulation of cipher only and 12/18 bit for cipher + integrity for all algo combinations. Test vectors are reused from the encap cases by swapping the input and output data. The case are added to DPAA_SEC and DPAA2_SEC testsuite. Signed-off-by: Akhil Goyal Signed-off-by: Vakul Garg Signed-off-by: Hemant Agrawal --- app/test/test_cryptodev.c | 30 +++ app/test/test_cryptodev_security_pdcp.c | 173 ++++++++++++++++++ .../test_cryptodev_security_pdcp_test_func.h | 3 + 3 files changed, 206 insertions(+) diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c index aa8602f94..837969430 100644 --- a/app/test/test_cryptodev.c +++ b/app/test/test_cryptodev.c @@ -7255,6 +7255,30 @@ test_pdcp_proto_cplane_decap(int i) pdcp_test_data_in_len[i]); } +int +test_pdcp_proto_uplane_decap(int i) +{ + return test_pdcp_proto(i, 0, + RTE_CRYPTO_CIPHER_OP_DECRYPT, + RTE_CRYPTO_AUTH_OP_VERIFY, + pdcp_test_data_out[i], + pdcp_test_data_in_len[i], + pdcp_test_data_in[i], + pdcp_test_data_in_len[i]); +} + +int +test_pdcp_proto_uplane_decap_with_int(int i) +{ + return test_pdcp_proto(i, 0, + RTE_CRYPTO_CIPHER_OP_DECRYPT, + RTE_CRYPTO_AUTH_OP_VERIFY, + pdcp_test_data_out[i], + pdcp_test_data_in_len[i] + 4, + pdcp_test_data_in[i], + pdcp_test_data_in_len[i]); +} + #endif static int @@ -11678,6 +11702,9 @@ static struct unit_test_suite cryptodev_dpaa_sec_testsuite = { TEST_CASE_ST(ut_setup, ut_teardown, test_PDCP_PROTO_uplane_encap_all), + + TEST_CASE_ST(ut_setup, ut_teardown, + test_PDCP_PROTO_uplane_decap_all), #endif /** AES GCM Authenticated Encryption */ TEST_CASE_ST(ut_setup, ut_teardown, @@ -11793,6 +11820,9 @@ static struct unit_test_suite cryptodev_dpaa2_sec_testsuite = { TEST_CASE_ST(ut_setup, ut_teardown, test_PDCP_PROTO_uplane_encap_all), + + TEST_CASE_ST(ut_setup, ut_teardown, + test_PDCP_PROTO_uplane_decap_all), #endif /** AES GCM Authenticated Encryption */ TEST_CASE_ST(ut_setup, ut_teardown, diff --git a/app/test/test_cryptodev_security_pdcp.c b/app/test/test_cryptodev_security_pdcp.c index e1ba2bf6e..30f3eb892 100644 --- a/app/test/test_cryptodev_security_pdcp.c +++ b/app/test/test_cryptodev_security_pdcp.c @@ -99,6 +99,33 @@ static int uplane_encap_no_integrity(uint32_t sn_size, uint8_t dir, return test_pdcp_proto_uplane_encap(i); } +static int +uplane_decap_no_integrity(uint32_t sn_size, uint8_t dir, + enum enc_alg_off enc_alg_off) +{ + int i = PDCP_UPLANE_OFFSET + ((dir == 0) ? UPLINK : DOWNLINK) + + enc_alg_off; + + switch (sn_size) { + case 7: + i += SHORT_SEQ_NUM_OFFSET; + break; + case 15: + i += FIFTEEN_BIT_SEQ_NUM_OFFSET; + break; + case 12: + i += LONG_SEQ_NUM_OFFSET; + break; + case 18: + i += EIGHTEEN_BIT_SEQ_NUM_OFFSET; + break; + default: + printf("\nInvalid SN: %u\n", sn_size); + } + + return test_pdcp_proto_uplane_decap(i); +} + static int uplane_encap_with_integrity(uint32_t sn_size, uint8_t dir, enum enc_alg_off enc_alg_off, @@ -124,6 +151,31 @@ uplane_encap_with_integrity(uint32_t sn_size, uint8_t dir, return test_pdcp_proto_uplane_encap_with_int(i); } +static int +uplane_decap_with_integrity(uint32_t sn_size, uint8_t dir, + enum enc_alg_off enc_alg_off, + enum auth_alg_off auth_alg_off) +{ + int i = 0; + + switch (sn_size) { + case 12: + i = PDCP_UPLANE_12BIT_OFFSET + enc_alg_off + + auth_alg_off + ((dir == 0) ? + UPLINK : DOWNLINK); + break; + case 18: + i = PDCP_UPLANE_18BIT_OFFSET + enc_alg_off + + auth_alg_off + ((dir == 0) ? + UPLINK : DOWNLINK); + break; + default: + printf("\nInvalid SN: %u\n", sn_size); + } + + return test_pdcp_proto_uplane_decap_with_int(i); +} + #define TEST_PDCP_COUNT(func) do { \ if (func == TEST_SUCCESS) { \ printf("\t%d)", n++); \ @@ -415,3 +467,124 @@ test_PDCP_PROTO_uplane_encap_all(void) return n - i; }; + +int +test_PDCP_PROTO_uplane_decap_all(void) +{ + int i = 0, n = 0; + + TEST_PDCP_COUNT(uplane_decap_no_integrity(12, UPLINK, NULL_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(12, DOWNLINK, NULL_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(7, UPLINK, NULL_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(7, DOWNLINK, NULL_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(15, UPLINK, NULL_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(15, DOWNLINK, NULL_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(18, UPLINK, NULL_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(18, DOWNLINK, NULL_ENC)); + + TEST_PDCP_COUNT(uplane_decap_no_integrity(12, UPLINK, SNOW_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(12, DOWNLINK, SNOW_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(7, UPLINK, SNOW_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(7, DOWNLINK, SNOW_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(15, UPLINK, SNOW_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(15, DOWNLINK, SNOW_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(18, UPLINK, SNOW_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(18, DOWNLINK, SNOW_ENC)); + + TEST_PDCP_COUNT(uplane_decap_no_integrity(12, UPLINK, AES_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(12, DOWNLINK, AES_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(7, UPLINK, AES_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(7, DOWNLINK, AES_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(15, UPLINK, AES_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(15, DOWNLINK, AES_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(18, UPLINK, AES_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(18, DOWNLINK, AES_ENC)); + + TEST_PDCP_COUNT(uplane_decap_no_integrity(12, UPLINK, ZUC_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(12, DOWNLINK, ZUC_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(7, UPLINK, ZUC_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(7, DOWNLINK, ZUC_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(15, UPLINK, ZUC_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(15, DOWNLINK, ZUC_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(18, UPLINK, ZUC_ENC)); + TEST_PDCP_COUNT(uplane_decap_no_integrity(18, DOWNLINK, ZUC_ENC)); + + /* u-plane 12-bit with integrity */ + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, NULL_ENC, NULL_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, NULL_ENC, NULL_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, NULL_ENC, SNOW_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, NULL_ENC, SNOW_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, NULL_ENC, AES_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, NULL_ENC, AES_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, NULL_ENC, ZUC_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, NULL_ENC, ZUC_AUTH)); + + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, SNOW_ENC, NULL_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, SNOW_ENC, NULL_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, SNOW_ENC, SNOW_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, SNOW_ENC, SNOW_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, SNOW_ENC, AES_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, SNOW_ENC, AES_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, SNOW_ENC, ZUC_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, SNOW_ENC, ZUC_AUTH)); + + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, AES_ENC, NULL_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, AES_ENC, NULL_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, AES_ENC, SNOW_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, AES_ENC, SNOW_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, AES_ENC, AES_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, AES_ENC, AES_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, AES_ENC, ZUC_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, AES_ENC, ZUC_AUTH)); + + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, ZUC_ENC, NULL_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, ZUC_ENC, NULL_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, ZUC_ENC, SNOW_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, ZUC_ENC, SNOW_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, ZUC_ENC, AES_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, ZUC_ENC, AES_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, ZUC_ENC, ZUC_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, ZUC_ENC, ZUC_AUTH)); + + /* u-plane 18-bit with integrity */ + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, NULL_ENC, NULL_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, NULL_ENC, NULL_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, NULL_ENC, SNOW_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, NULL_ENC, SNOW_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, NULL_ENC, AES_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, NULL_ENC, AES_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, NULL_ENC, ZUC_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, NULL_ENC, ZUC_AUTH)); + + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, SNOW_ENC, NULL_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, SNOW_ENC, NULL_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, SNOW_ENC, SNOW_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, SNOW_ENC, SNOW_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, SNOW_ENC, AES_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, SNOW_ENC, AES_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, SNOW_ENC, ZUC_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, SNOW_ENC, ZUC_AUTH)); + + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, AES_ENC, NULL_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, AES_ENC, NULL_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, AES_ENC, SNOW_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, AES_ENC, SNOW_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, AES_ENC, AES_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, AES_ENC, AES_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, AES_ENC, ZUC_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, AES_ENC, ZUC_AUTH)); + + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, ZUC_ENC, NULL_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, ZUC_ENC, NULL_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, ZUC_ENC, SNOW_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, ZUC_ENC, SNOW_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, ZUC_ENC, AES_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, ZUC_ENC, AES_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, ZUC_ENC, ZUC_AUTH)); + TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, ZUC_ENC, ZUC_AUTH)); + + if (n - i) + printf("## %s: %d passed out of %d\n", __func__, i, n); + + return n - i; +}; diff --git a/app/test/test_cryptodev_security_pdcp_test_func.h b/app/test/test_cryptodev_security_pdcp_test_func.h index 473cdaecc..f3dc93e2f 100644 --- a/app/test/test_cryptodev_security_pdcp_test_func.h +++ b/app/test/test_cryptodev_security_pdcp_test_func.h @@ -37,9 +37,12 @@ int test_pdcp_proto_cplane_encap(int i); int test_pdcp_proto_uplane_encap(int i); int test_pdcp_proto_uplane_encap_with_int(int i); int test_pdcp_proto_cplane_decap(int i); +int test_pdcp_proto_uplane_decap(int i); +int test_pdcp_proto_uplane_decap_with_int(int i); int test_PDCP_PROTO_cplane_encap_all(void); int test_PDCP_PROTO_cplane_decap_all(void); int test_PDCP_PROTO_uplane_encap_all(void); +int test_PDCP_PROTO_uplane_decap_all(void); #endif /* SECURITY_PDCP_TEST_FUNC_H_ */ -- 2.17.1