From patchwork Tue Feb 28 17:28:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gowrishankar Muthukrishnan X-Patchwork-Id: 124581 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id A3AD141D9F; Tue, 28 Feb 2023 18:29:10 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9854141181; Tue, 28 Feb 2023 18:29:10 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id B103541151 for ; Tue, 28 Feb 2023 18:29:06 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31SGrXdv020372; Tue, 28 Feb 2023 09:29:06 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=QK6+en4WVSOmcq49zdQux3hyhsB2/4OjX0h6aMr9KWE=; b=AzO+wy9/3r1snhyksQtvqxRn+nu9zzJgDmo3hahA+opvPgOAdtOeWO3uwPTW3dkMkhY1 6qAsQ7h1vZW71pOAGku4A5AhBW8K5odDneY/Gkr69/IgJECWI8sb5vtwsin84NYCT8LM q+52RgjMzCXJ6p6J8hzQbysqHa0sMfwVUHVkxxMCAWe8LWpqvYd+fB65eXyKiNYJjogT b8EKJSzFJiWO3iPx59H0D5FVx0qvs3xGPvFB72GEIVPH9BDD1XAxyDkatB1Lif+n6BV/ wH0Fi9kc4W+/SDX9YHUONQSXOdXYalTMyHalVvVFFIpX9QtTthaaeJUFAwsjPfJZPQo0 QQ== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nyjqty0mn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 28 Feb 2023 09:29:06 -0800 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Tue, 28 Feb 2023 09:29:03 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.42 via Frontend Transport; Tue, 28 Feb 2023 09:29:03 -0800 Received: from localhost.localdomain (unknown [10.28.34.38]) by maili.marvell.com (Postfix) with ESMTP id 048BD5B6945; Tue, 28 Feb 2023 09:29:01 -0800 (PST) From: Gowrishankar Muthukrishnan To: CC: Anoob Joseph , , Akhil Goyal , Brian Dooley , "Gowrishankar Muthukrishnan" Subject: [v2, 01/10] examples/fips_validation: fix MCT output for SHA Date: Tue, 28 Feb 2023 22:58:47 +0530 Message-ID: <9d64519cb60a7706d6a5f10a566e12ee4d558d74.1677604524.git.gmuthukrishn@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: j0PTHr9H6b_sdIBuptyjASMne-g-VT7- X-Proofpoint-GUID: j0PTHr9H6b_sdIBuptyjASMne-g-VT7- X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-02-28_15,2023-02-28_03,2023-02-09_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org MCT test for SHA need not print message string along with digest value. Fixes: d5c247145c2 ("examples/fips_validation: add parsing for SHA") Signed-off-by: Gowrishankar Muthukrishnan --- examples/fips_validation/fips_validation_sha.c | 8 ++------ examples/fips_validation/main.c | 13 +++++-------- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/examples/fips_validation/fips_validation_sha.c b/examples/fips_validation/fips_validation_sha.c index c5da2cc623..178ea492d3 100644 --- a/examples/fips_validation/fips_validation_sha.c +++ b/examples/fips_validation/fips_validation_sha.c @@ -182,7 +182,7 @@ parse_test_sha_json_writeback(struct fips_val *val) static int parse_test_sha_mct_json_writeback(struct fips_val *val) { - json_t *tcId, *msg, *md, *resArr, *res; + json_t *tcId, *md, *resArr, *res; struct fips_val val_local; tcId = json_object_get(json_info.json_test_case, "tcId"); @@ -208,11 +208,7 @@ parse_test_sha_mct_json_writeback(struct fips_val *val) res = json_object(); - writeback_hex_str("", info.one_line_text, &val[1]); - msg = json_string(info.one_line_text); - json_object_set_new(res, "msg", msg); - - val_local.val = val[0].val + vec.pt.len; + val_local.val = val->val + vec.pt.len; val_local.len = vec.cipher_auth.digest.len; writeback_hex_str("", info.one_line_text, &val_local); diff --git a/examples/fips_validation/main.c b/examples/fips_validation/main.c index 622f8b5a6e..cc585e8418 100644 --- a/examples/fips_validation/main.c +++ b/examples/fips_validation/main.c @@ -2268,8 +2268,7 @@ fips_mct_sha_test(void) #define SHA_EXTERN_ITER 100 #define SHA_INTERN_ITER 1000 #define SHA_MD_BLOCK 3 - /* val[0] is op result and other value is for parse_writeback callback */ - struct fips_val val[2] = {{NULL, 0},}; + struct fips_val val = {NULL, 0}; struct fips_val md[SHA_MD_BLOCK], msg; int ret; uint32_t i, j; @@ -2328,7 +2327,7 @@ fips_mct_sha_test(void) return ret; } - ret = get_writeback_data(&val[0]); + ret = get_writeback_data(&val); if (ret < 0) return ret; @@ -2337,7 +2336,7 @@ fips_mct_sha_test(void) memcpy(md[1].val, md[2].val, md[2].len); md[1].len = md[2].len; - memcpy(md[2].val, (val[0].val + vec.pt.len), + memcpy(md[2].val, (val.val + vec.pt.len), vec.cipher_auth.digest.len); md[2].len = vec.cipher_auth.digest.len; } @@ -2348,9 +2347,7 @@ fips_mct_sha_test(void) if (info.file_type != FIPS_TYPE_JSON) fprintf(info.fp_wr, "COUNT = %u\n", j); - val[1].val = msg.val; - val[1].len = msg.len; - info.parse_writeback(val); + info.parse_writeback(&val); if (info.file_type != FIPS_TYPE_JSON) fprintf(info.fp_wr, "\n"); @@ -2361,7 +2358,7 @@ fips_mct_sha_test(void) rte_free(vec.pt.val); - free(val[0].val); + free(val.val); free(msg.val); return 0; From patchwork Tue Feb 28 17:28:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gowrishankar Muthukrishnan X-Patchwork-Id: 124582 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id 4568A41D9F; Tue, 28 Feb 2023 18:29:16 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 982E741151; Tue, 28 Feb 2023 18:29:14 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 79C0A41151 for ; Tue, 28 Feb 2023 18:29:09 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31SGrXdw020372; Tue, 28 Feb 2023 09:29:08 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=xV+FV+g3XQvPF9jdWOD0hqAGw4K3ipVTdU7uwtZgDiE=; b=cqk0nB5gIUFsK271sydom6jKm9+P9PhUUsYlDFUcOR9sFHeQA/mY4WVeAKj2dyM18U96 v89i3AL9+bbHPfltcCRZ8QYhmMX98VtPeWPlE5kf2rpWko0C++/tC3Fkg/Bj7q3Ibbyp NhGRg4XTSX4IGHIWtNQT2FryFvx2JlxT0HXRVzsSw8HE64Pj0/RcCwpKxDq+RykCR0RY zeIIWZ2xSrntaTSVJoP0YlKrFDdVAtDZcfVXjTSvmh8gTOWUGeF2akOpqh+4Z4Wc29nC GJ8Qc8gRq27ETcDFHfPcwW1t5XG8NWdMFWlgUA1BlmXOCXbvzFweTKfa383Rx8H10lMv Iw== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nyjqty0n3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 28 Feb 2023 09:29:08 -0800 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Tue, 28 Feb 2023 09:29:06 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.42 via Frontend Transport; Tue, 28 Feb 2023 09:29:06 -0800 Received: from localhost.localdomain (unknown [10.28.34.38]) by maili.marvell.com (Postfix) with ESMTP id 712255B6940; Tue, 28 Feb 2023 09:29:04 -0800 (PST) From: Gowrishankar Muthukrishnan To: CC: Anoob Joseph , , Akhil Goyal , Brian Dooley , "Gowrishankar Muthukrishnan" Subject: [v2, 02/10] examples/fips_validation: add SHA3 validation Date: Tue, 28 Feb 2023 22:58:48 +0530 Message-ID: <3d7cbce2fd961c8b85647f18450476d8218b830a.1677604524.git.gmuthukrishn@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: 9YLY2Zj0EL8s1VKRbb8T-tqbDrMgWusf X-Proofpoint-GUID: 9YLY2Zj0EL8s1VKRbb8T-tqbDrMgWusf X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-02-28_15,2023-02-28_03,2023-02-09_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Add support in fips_validation to parse SHA3 algorithms. Signed-off-by: Gowrishankar Muthukrishnan --- doc/guides/sample_app_ug/fips_validation.rst | 5 +- examples/fips_validation/fips_validation.h | 1 + .../fips_validation/fips_validation_hmac.c | 8 ++ .../fips_validation/fips_validation_sha.c | 20 +++-- examples/fips_validation/main.c | 76 +++++++++---------- 5 files changed, 61 insertions(+), 49 deletions(-) diff --git a/doc/guides/sample_app_ug/fips_validation.rst b/doc/guides/sample_app_ug/fips_validation.rst index 50d23c789b..55837895fe 100644 --- a/doc/guides/sample_app_ug/fips_validation.rst +++ b/doc/guides/sample_app_ug/fips_validation.rst @@ -64,8 +64,9 @@ ACVP * AES-CTR (128,192,256) - AFT, CTR * AES-GMAC (128,192,256) - AFT * AES-XTS (128,256) - AFT - * HMAC (SHA1, SHA224, SHA256, SHA384, SHA512) - * SHA (1, 256, 384, 512) - AFT, MCT + * HMAC (SHA1, SHA224, SHA256, SHA384, SHA512, SHA3_224, SHA3_256, SHA3_384, SHA3_512) + * SHA (1, 224, 256, 384, 512) - AFT, MCT + * SHA3 (224, 256, 384, 512) - AFT, MCT * TDES-CBC - AFT, MCT * TDES-ECB - AFT, MCT * RSA diff --git a/examples/fips_validation/fips_validation.h b/examples/fips_validation/fips_validation.h index 565a5cd36e..6c1bd35849 100644 --- a/examples/fips_validation/fips_validation.h +++ b/examples/fips_validation/fips_validation.h @@ -205,6 +205,7 @@ struct sha_interim_data { /* keep algo always on top as it is also used in asym digest */ enum rte_crypto_auth_algorithm algo; enum fips_sha_test_types test_type; + uint8_t md_blocks; }; struct gcm_interim_data { diff --git a/examples/fips_validation/fips_validation_hmac.c b/examples/fips_validation/fips_validation_hmac.c index e0721ef028..f1cbc18435 100644 --- a/examples/fips_validation/fips_validation_hmac.c +++ b/examples/fips_validation/fips_validation_hmac.c @@ -37,6 +37,10 @@ struct hash_size_conversion { {"32", RTE_CRYPTO_AUTH_SHA256_HMAC}, {"48", RTE_CRYPTO_AUTH_SHA384_HMAC}, {"64", RTE_CRYPTO_AUTH_SHA512_HMAC}, + {"28", RTE_CRYPTO_AUTH_SHA3_224_HMAC}, + {"32", RTE_CRYPTO_AUTH_SHA3_256_HMAC}, + {"48", RTE_CRYPTO_AUTH_SHA3_384_HMAC}, + {"64", RTE_CRYPTO_AUTH_SHA3_512_HMAC}, }; static int @@ -81,6 +85,10 @@ struct hash_size_conversion json_algorithms[] = { {"HMAC-SHA2-256", RTE_CRYPTO_AUTH_SHA256_HMAC}, {"HMAC-SHA2-384", RTE_CRYPTO_AUTH_SHA384_HMAC}, {"HMAC-SHA2-512", RTE_CRYPTO_AUTH_SHA512_HMAC}, + {"HMAC-SHA3-224", RTE_CRYPTO_AUTH_SHA3_224_HMAC}, + {"HMAC-SHA3-256", RTE_CRYPTO_AUTH_SHA3_256_HMAC}, + {"HMAC-SHA3-384", RTE_CRYPTO_AUTH_SHA3_384_HMAC}, + {"HMAC-SHA3-512", RTE_CRYPTO_AUTH_SHA3_512_HMAC}, }; struct fips_test_callback hmac_tests_json_vectors[] = { diff --git a/examples/fips_validation/fips_validation_sha.c b/examples/fips_validation/fips_validation_sha.c index 178ea492d3..8b68f5ed36 100644 --- a/examples/fips_validation/fips_validation_sha.c +++ b/examples/fips_validation/fips_validation_sha.c @@ -32,6 +32,10 @@ struct plain_hash_size_conversion { {"32", RTE_CRYPTO_AUTH_SHA256}, {"48", RTE_CRYPTO_AUTH_SHA384}, {"64", RTE_CRYPTO_AUTH_SHA512}, + {"28", RTE_CRYPTO_AUTH_SHA3_224}, + {"32", RTE_CRYPTO_AUTH_SHA3_256}, + {"48", RTE_CRYPTO_AUTH_SHA3_384}, + {"64", RTE_CRYPTO_AUTH_SHA3_512}, }; int @@ -96,12 +100,17 @@ static struct { static struct plain_hash_algorithms { const char *str; enum rte_crypto_auth_algorithm algo; + uint8_t md_blocks; } json_algorithms[] = { - {"SHA-1", RTE_CRYPTO_AUTH_SHA1}, - {"SHA2-224", RTE_CRYPTO_AUTH_SHA224}, - {"SHA2-256", RTE_CRYPTO_AUTH_SHA256}, - {"SHA2-384", RTE_CRYPTO_AUTH_SHA384}, - {"SHA2-512", RTE_CRYPTO_AUTH_SHA512}, + {"SHA-1", RTE_CRYPTO_AUTH_SHA1, 3}, + {"SHA2-224", RTE_CRYPTO_AUTH_SHA224, 3}, + {"SHA2-256", RTE_CRYPTO_AUTH_SHA256, 3}, + {"SHA2-384", RTE_CRYPTO_AUTH_SHA384, 3}, + {"SHA2-512", RTE_CRYPTO_AUTH_SHA512, 3}, + {"SHA3-224", RTE_CRYPTO_AUTH_SHA3_224, 1}, + {"SHA3-256", RTE_CRYPTO_AUTH_SHA3_256, 1}, + {"SHA3-384", RTE_CRYPTO_AUTH_SHA3_384, 1}, + {"SHA3-512", RTE_CRYPTO_AUTH_SHA3_512, 1}, }; struct fips_test_callback sha_tests_json_vectors[] = { @@ -233,6 +242,7 @@ parse_test_sha_json_algorithm(void) for (i = 0; i < RTE_DIM(json_algorithms); i++) { if (strstr(algorithm_str, json_algorithms[i].str)) { info.interim_info.sha_data.algo = json_algorithms[i].algo; + info.interim_info.sha_data.md_blocks = json_algorithms[i].md_blocks; break; } } diff --git a/examples/fips_validation/main.c b/examples/fips_validation/main.c index cc585e8418..cf29e440f1 100644 --- a/examples/fips_validation/main.c +++ b/examples/fips_validation/main.c @@ -2267,22 +2267,27 @@ fips_mct_sha_test(void) { #define SHA_EXTERN_ITER 100 #define SHA_INTERN_ITER 1000 -#define SHA_MD_BLOCK 3 + uint8_t md_blocks = info.interim_info.sha_data.md_blocks; struct fips_val val = {NULL, 0}; - struct fips_val md[SHA_MD_BLOCK], msg; + struct fips_val md[md_blocks]; int ret; - uint32_t i, j; + uint32_t i, j, k, offset, max_outlen; + + max_outlen = md_blocks * vec.cipher_auth.digest.len; + + if (vec.cipher_auth.digest.val) + free(vec.cipher_auth.digest.val); + + vec.cipher_auth.digest.val = calloc(1, max_outlen); - msg.len = SHA_MD_BLOCK * vec.cipher_auth.digest.len; - msg.val = calloc(1, msg.len); if (vec.pt.val) memcpy(vec.cipher_auth.digest.val, vec.pt.val, vec.cipher_auth.digest.len); - for (i = 0; i < SHA_MD_BLOCK; i++) - md[i].val = rte_malloc(NULL, (MAX_DIGEST_SIZE*2), 0); - rte_free(vec.pt.val); - vec.pt.val = rte_malloc(NULL, (MAX_DIGEST_SIZE*SHA_MD_BLOCK), 0); + vec.pt.val = rte_malloc(NULL, (MAX_DIGEST_SIZE*md_blocks), 0); + + for (i = 0; i < md_blocks; i++) + md[i].val = rte_malloc(NULL, (MAX_DIGEST_SIZE*2), 0); if (info.file_type != FIPS_TYPE_JSON) { fips_test_write_one_case(); @@ -2290,30 +2295,19 @@ fips_mct_sha_test(void) } for (j = 0; j < SHA_EXTERN_ITER; j++) { - - memcpy(md[0].val, vec.cipher_auth.digest.val, - vec.cipher_auth.digest.len); - md[0].len = vec.cipher_auth.digest.len; - memcpy(md[1].val, vec.cipher_auth.digest.val, - vec.cipher_auth.digest.len); - md[1].len = vec.cipher_auth.digest.len; - memcpy(md[2].val, vec.cipher_auth.digest.val, - vec.cipher_auth.digest.len); - md[2].len = vec.cipher_auth.digest.len; - - for (i = 0; i < SHA_MD_BLOCK; i++) - memcpy(&msg.val[i * md[i].len], md[i].val, md[i].len); + for (i = 0; i < md_blocks; i++) { + memcpy(md[i].val, vec.cipher_auth.digest.val, + vec.cipher_auth.digest.len); + md[i].len = vec.cipher_auth.digest.len; + } for (i = 0; i < (SHA_INTERN_ITER); i++) { - - memcpy(vec.pt.val, md[0].val, - (size_t)md[0].len); - memcpy((vec.pt.val + md[0].len), md[1].val, - (size_t)md[1].len); - memcpy((vec.pt.val + md[0].len + md[1].len), - md[2].val, - (size_t)md[2].len); - vec.pt.len = md[0].len + md[1].len + md[2].len; + offset = 0; + for (k = 0; k < md_blocks; k++) { + memcpy(vec.pt.val + offset, md[k].val, (size_t)md[k].len); + offset += md[k].len; + } + vec.pt.len = offset; ret = fips_run_test(); if (ret < 0) { @@ -2331,18 +2325,18 @@ fips_mct_sha_test(void) if (ret < 0) return ret; - memcpy(md[0].val, md[1].val, md[1].len); - md[0].len = md[1].len; - memcpy(md[1].val, md[2].val, md[2].len); - md[1].len = md[2].len; + for (k = 1; k < md_blocks; k++) { + memcpy(md[k-1].val, md[k].val, md[k].len); + md[k-1].len = md[k].len; + } - memcpy(md[2].val, (val.val + vec.pt.len), + memcpy(md[md_blocks-1].val, (val.val + vec.pt.len), vec.cipher_auth.digest.len); - md[2].len = vec.cipher_auth.digest.len; + md[md_blocks-1].len = vec.cipher_auth.digest.len; } - memcpy(vec.cipher_auth.digest.val, md[2].val, md[2].len); - vec.cipher_auth.digest.len = md[2].len; + memcpy(vec.cipher_auth.digest.val, md[md_blocks-1].val, md[md_blocks-1].len); + vec.cipher_auth.digest.len = md[md_blocks-1].len; if (info.file_type != FIPS_TYPE_JSON) fprintf(info.fp_wr, "COUNT = %u\n", j); @@ -2353,14 +2347,12 @@ fips_mct_sha_test(void) fprintf(info.fp_wr, "\n"); } - for (i = 0; i < (SHA_MD_BLOCK); i++) + for (i = 0; i < (md_blocks); i++) rte_free(md[i].val); rte_free(vec.pt.val); free(val.val); - free(msg.val); - return 0; } From patchwork Tue Feb 28 17:28:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gowrishankar Muthukrishnan X-Patchwork-Id: 124583 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id 6571041D9F; Tue, 28 Feb 2023 18:29:22 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9BF3942B71; Tue, 28 Feb 2023 18:29:15 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 8B324427EE for ; Tue, 28 Feb 2023 18:29:11 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31SFkDSJ023808; Tue, 28 Feb 2023 09:29:11 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=P2d1Ob/XZEf0GBq15bKCb46aUmdQPkqg+cs0n/Tk9CM=; b=ezVv8H+6JweyyyQiQiFGNlCRt1tMYnkQcZW9tZSaGytKT6NDMrlhoaKgi2NChWm1Z1z3 GB9Or46Jl5x7hHGZQNMla123+vmU7QZIyYZ0O0xiaO3P2kuK8cKLeIinPWwUWB1IFtfx YAES+9C4G7ZGc5LnyGphwTeWIbXApCABb10LiObWMEGPygJ7A8jpGtSFDTgkImovjAXl Cazo/sUC6tsiq5d36c+tQFbDwk28xq/ucyjjKVCDX3+tfZxeilM/nxTV/wWuABRUzTWQ bu04WkwxP7cs8nu69IbUg74cbdVKpX4owg9pQ9RlzaVMLtcL9+o/4eu9Ieu/s5WF1mw/ Mg== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nyjqty0na-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 28 Feb 2023 09:29:10 -0800 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Tue, 28 Feb 2023 09:29:08 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.42 via Frontend Transport; Tue, 28 Feb 2023 09:29:08 -0800 Received: from localhost.localdomain (unknown [10.28.34.38]) by maili.marvell.com (Postfix) with ESMTP id DE8765B6942; Tue, 28 Feb 2023 09:29:06 -0800 (PST) From: Gowrishankar Muthukrishnan To: CC: Anoob Joseph , , Akhil Goyal , Brian Dooley , "Gowrishankar Muthukrishnan" Subject: [v2, 03/10] examples/fips_validation: fix integer parse in test case Date: Tue, 28 Feb 2023 22:58:49 +0530 Message-ID: <23845224ddb99ffcdd68ddbe1ca9e36105334bbb.1677604524.git.gmuthukrishn@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: gY9v6nC_FBclS-ksuqNhrVXPHwjFqcS- X-Proofpoint-GUID: gY9v6nC_FBclS-ksuqNhrVXPHwjFqcS- X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-02-28_15,2023-02-28_03,2023-02-09_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Parsing integer value in test case vector does not store it because only string was expected. This patch adds handling for integer value as well. Fixes: 58cc98801eb ("examples/fips_validation: add JSON parsing") Signed-off-by: Gowrishankar Muthukrishnan --- examples/fips_validation/fips_validation.c | 29 ++++++++++++++++------ 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/examples/fips_validation/fips_validation.c b/examples/fips_validation/fips_validation.c index f7a6d821ea..d3b6099d73 100644 --- a/examples/fips_validation/fips_validation.c +++ b/examples/fips_validation/fips_validation.c @@ -543,15 +543,28 @@ fips_test_parse_one_json_case(void) for (i = 0; info.callbacks[i].key != NULL; i++) { param = json_object_get(json_info.json_test_case, info.callbacks[i].key); - if (param) { - strcpy(info.one_line_text, json_string_value(param)); - ret = info.callbacks[i].cb( - info.callbacks[i].key, info.one_line_text, - info.callbacks[i].val - ); - if (ret < 0) - return ret; + if (!param) + continue; + + switch (json_typeof(param)) { + case JSON_STRING: + snprintf(info.one_line_text, MAX_LINE_CHAR, "%s", + json_string_value(param)); + break; + + case JSON_INTEGER: + snprintf(info.one_line_text, MAX_LINE_CHAR, "%"JSON_INTEGER_FORMAT, + json_integer_value(param)); + break; + + default: + return -EINVAL; } + + ret = info.callbacks[i].cb(info.callbacks[i].key, info.one_line_text, + info.callbacks[i].val); + if (ret < 0) + return ret; } return 0; From patchwork Tue Feb 28 17:28:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gowrishankar Muthukrishnan X-Patchwork-Id: 124584 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id 8DC4A41D9F; Tue, 28 Feb 2023 18:29:32 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3962042D13; Tue, 28 Feb 2023 18:29:23 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 12CCE427F5 for ; Tue, 28 Feb 2023 18:29:14 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31SGu5Dx023933; Tue, 28 Feb 2023 09:29:13 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=uvFo0VxxMh3GugoaH84ohZchMrQNd+ZycVw2O6b2+34=; b=TeBAlxDx73A7K5Nh6P2TzVx83QdcImcBZGDEQiatojQop15JWvNW/D5onq16vlsG0TMG 6S7nzXfsfZlL7k/cYOFV/DQSLx8G85/UxmJMVhNhToBKfm2Dg37dYrR64ifGMYGNlU70 UupVni+SoLZazct37uXpIxXwX2YF55uM2Pdgovwy8Cjsn+0t74H6ub6XkI54fpntaQSd rolD+PCNFDDht18RTFPN7KrIYuak2yk9K7334h2/SvgMz6dnrNwxygZCTSEWtmtcv0oJ LYvGNlysLNOG2jXdcS6uZGvGHz7Q4tuD6tREpWAj2AHApOW4cmdgPVTI32/ekoa4xH9+ aw== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nyjqty0nr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 28 Feb 2023 09:29:13 -0800 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Tue, 28 Feb 2023 09:29:11 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.42 via Frontend Transport; Tue, 28 Feb 2023 09:29:11 -0800 Received: from localhost.localdomain (unknown [10.28.34.38]) by maili.marvell.com (Postfix) with ESMTP id 574465B6943; Tue, 28 Feb 2023 09:29:09 -0800 (PST) From: Gowrishankar Muthukrishnan To: CC: Anoob Joseph , , Akhil Goyal , Brian Dooley , "Gowrishankar Muthukrishnan" Subject: [v2, 04/10] examples/fips_validation: add SHAKE validation Date: Tue, 28 Feb 2023 22:58:50 +0530 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: GemCvUbclOzIUlN8g95cTh4w5SVVV_Oh X-Proofpoint-GUID: GemCvUbclOzIUlN8g95cTh4w5SVVV_Oh X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-02-28_15,2023-02-28_03,2023-02-09_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Add support in fips_validation to parse SHAKE algorithms. Signed-off-by: Gowrishankar Muthukrishnan --- v2: - fixed type punning reported in CI. --- doc/guides/sample_app_ug/fips_validation.rst | 1 + examples/fips_validation/fips_validation.h | 4 +- .../fips_validation/fips_validation_sha.c | 63 +++++++++++- examples/fips_validation/main.c | 95 ++++++++++++++++++- 4 files changed, 156 insertions(+), 7 deletions(-) diff --git a/doc/guides/sample_app_ug/fips_validation.rst b/doc/guides/sample_app_ug/fips_validation.rst index 55837895fe..4fc8297b34 100644 --- a/doc/guides/sample_app_ug/fips_validation.rst +++ b/doc/guides/sample_app_ug/fips_validation.rst @@ -67,6 +67,7 @@ ACVP * HMAC (SHA1, SHA224, SHA256, SHA384, SHA512, SHA3_224, SHA3_256, SHA3_384, SHA3_512) * SHA (1, 224, 256, 384, 512) - AFT, MCT * SHA3 (224, 256, 384, 512) - AFT, MCT + * SHAKE (128, 256) - AFT, MCT, VOT * TDES-CBC - AFT, MCT * TDES-ECB - AFT, MCT * RSA diff --git a/examples/fips_validation/fips_validation.h b/examples/fips_validation/fips_validation.h index 6c1bd35849..8fcb5c8500 100644 --- a/examples/fips_validation/fips_validation.h +++ b/examples/fips_validation/fips_validation.h @@ -163,7 +163,8 @@ enum fips_ccm_test_types { enum fips_sha_test_types { SHA_KAT = 0, SHA_AFT, - SHA_MCT + SHA_MCT, + SHAKE_VOT }; enum fips_rsa_test_types { @@ -205,6 +206,7 @@ struct sha_interim_data { /* keep algo always on top as it is also used in asym digest */ enum rte_crypto_auth_algorithm algo; enum fips_sha_test_types test_type; + uint8_t min_outlen; uint8_t md_blocks; }; diff --git a/examples/fips_validation/fips_validation_sha.c b/examples/fips_validation/fips_validation_sha.c index 8b68f5ed36..7ce7d3744f 100644 --- a/examples/fips_validation/fips_validation_sha.c +++ b/examples/fips_validation/fips_validation_sha.c @@ -22,6 +22,9 @@ #define TESTTYPE_JSON_STR "testType" #define PT_JSON_STR "msg" +#define OUTLEN_JSON_STR "outLen" +#define MINOUTLEN_JSON_STR "minOutLen" +#define MAXOUTLEN_JSON_STR "maxOutLen" struct plain_hash_size_conversion { const char *str; @@ -36,6 +39,8 @@ struct plain_hash_size_conversion { {"32", RTE_CRYPTO_AUTH_SHA3_256}, {"48", RTE_CRYPTO_AUTH_SHA3_384}, {"64", RTE_CRYPTO_AUTH_SHA3_512}, + {"16", RTE_CRYPTO_AUTH_SHAKE_128}, + {"32", RTE_CRYPTO_AUTH_SHAKE_256}, }; int @@ -89,12 +94,26 @@ struct fips_test_callback sha_tests_interim_vectors[] = { }; #ifdef USE_JANSSON +static int +parse_interim_str(const char *key, char *src, struct fips_val *val) +{ + RTE_SET_USED(val); + + if (strcmp(key, MINOUTLEN_JSON_STR) == 0) + info.interim_info.sha_data.min_outlen = atoi(src) / 8; + else if (strcmp(key, MAXOUTLEN_JSON_STR) == 0) + vec.cipher_auth.digest.len = atoi(src) / 8; + + return 0; +} + static struct { uint32_t type; const char *desc; } sha_test_types[] = { {SHA_MCT, "MCT"}, {SHA_AFT, "AFT"}, + {SHAKE_VOT, "VOT"}, }; static struct plain_hash_algorithms { @@ -111,10 +130,19 @@ static struct plain_hash_algorithms { {"SHA3-256", RTE_CRYPTO_AUTH_SHA3_256, 1}, {"SHA3-384", RTE_CRYPTO_AUTH_SHA3_384, 1}, {"SHA3-512", RTE_CRYPTO_AUTH_SHA3_512, 1}, + {"SHAKE-128", RTE_CRYPTO_AUTH_SHAKE_128, 1}, + {"SHAKE-256", RTE_CRYPTO_AUTH_SHAKE_256, 1}, }; struct fips_test_callback sha_tests_json_vectors[] = { {PT_JSON_STR, parse_uint8_hex_str, &vec.pt}, + {OUTLEN_JSON_STR, parser_read_uint32_bit_val, &vec.cipher_auth.digest}, + {NULL, NULL, NULL} /**< end pointer */ +}; + +struct fips_test_callback sha_tests_interim_json_vectors[] = { + {MINOUTLEN_JSON_STR, parse_interim_str, NULL}, + {MAXOUTLEN_JSON_STR, parse_interim_str, NULL}, {NULL, NULL, NULL} /**< end pointer */ }; #endif /* USE_JANSSON */ @@ -185,6 +213,11 @@ parse_test_sha_json_writeback(struct fips_val *val) md = json_string(info.one_line_text); json_object_set_new(json_info.json_write_case, "md", md); + if (info.interim_info.sha_data.algo == RTE_CRYPTO_AUTH_SHAKE_128 || + info.interim_info.sha_data.algo == RTE_CRYPTO_AUTH_SHAKE_256) + json_object_set_new(json_info.json_write_case, "outLen", + json_integer(vec.cipher_auth.digest.len * 8)); + return 0; } @@ -193,6 +226,11 @@ parse_test_sha_mct_json_writeback(struct fips_val *val) { json_t *tcId, *md, *resArr, *res; struct fips_val val_local; + bool is_shake = false; + + if (info.interim_info.sha_data.algo == RTE_CRYPTO_AUTH_SHAKE_128 || + info.interim_info.sha_data.algo == RTE_CRYPTO_AUTH_SHAKE_256) + is_shake = true; tcId = json_object_get(json_info.json_test_case, "tcId"); if (json_info.json_write_case) { @@ -204,11 +242,17 @@ parse_test_sha_mct_json_writeback(struct fips_val *val) json_object_set_new(json_info.json_write_case, "tcId", tcId); json_object_set_new(json_info.json_write_case, "resultsArray", json_array()); + if (is_shake) + json_object_set_new(json_info.json_write_case, "outLen", + json_integer(0)); } } else { json_info.json_write_case = json_object(); json_object_set_new(json_info.json_write_case, "tcId", tcId); json_object_set_new(json_info.json_write_case, "resultsArray", json_array()); + if (is_shake) + json_object_set_new(json_info.json_write_case, "outLen", + json_integer(0)); } resArr = json_object_get(json_info.json_write_case, "resultsArray"); @@ -224,6 +268,9 @@ parse_test_sha_mct_json_writeback(struct fips_val *val) md = json_string(info.one_line_text); json_object_set_new(res, "md", md); + if (is_shake) + json_object_set_new(res, "outLen", json_integer(vec.cipher_auth.digest.len * 8)); + json_array_append_new(resArr, res); return 0; } @@ -250,12 +297,17 @@ parse_test_sha_json_algorithm(void) if (i == RTE_DIM(json_algorithms)) return -1; - sz = parse_test_sha_hash_size(info.interim_info.sha_data.algo); + if (info.interim_info.sha_data.test_type == SHAKE_VOT) { + sz = vec.cipher_auth.digest.len; + } else { + sz = parse_test_sha_hash_size(info.interim_info.sha_data.algo); + vec.cipher_auth.digest.len = sz; + } + if (sz < 0) return -1; free(vec.cipher_auth.digest.val); - vec.cipher_auth.digest.len = sz; vec.cipher_auth.digest.val = calloc(1, sz); if (vec.cipher_auth.digest.val == NULL) return -1; @@ -288,6 +340,7 @@ parse_test_sha_json_test_type(void) info.parse_writeback = parse_test_sha_mct_json_writeback; break; case SHA_AFT: + case SHAKE_VOT: info.parse_writeback = parse_test_sha_json_writeback; break; default: @@ -308,12 +361,12 @@ parse_test_sha_json_init(void) info.callbacks = sha_tests_json_vectors; info.writeback_callbacks = NULL; info.kat_check = rsp_test_sha_check; - info.interim_callbacks = NULL; + info.interim_callbacks = sha_tests_interim_json_vectors; - if (parse_test_sha_json_algorithm() < 0) + if (parse_test_sha_json_test_type() < 0) return -1; - if (parse_test_sha_json_test_type() < 0) + if (parse_test_sha_json_algorithm() < 0) return -1; return 0; diff --git a/examples/fips_validation/main.c b/examples/fips_validation/main.c index cf29e440f1..d9e8c0eb02 100644 --- a/examples/fips_validation/main.c +++ b/examples/fips_validation/main.c @@ -2356,6 +2356,95 @@ fips_mct_sha_test(void) return 0; } +static int +fips_mct_shake_test(void) +{ +#define SHAKE_EXTERN_ITER 100 +#define SHAKE_INTERN_ITER 1000 + uint32_t i, j, range, outlen, max_outlen; + struct fips_val val = {NULL, 0}, md; + uint8_t rightmost[2]; + uint16_t *rightptr; + int ret; + + max_outlen = vec.cipher_auth.digest.len; + + if (vec.cipher_auth.digest.val) + free(vec.cipher_auth.digest.val); + + vec.cipher_auth.digest.val = calloc(1, max_outlen); + + if (vec.pt.val) + memcpy(vec.cipher_auth.digest.val, vec.pt.val, vec.pt.len); + + rte_free(vec.pt.val); + vec.pt.val = rte_malloc(NULL, 16, 0); + vec.pt.len = 16; + + md.val = rte_malloc(NULL, max_outlen, 0); + md.len = max_outlen; + + if (info.file_type != FIPS_TYPE_JSON) { + fips_test_write_one_case(); + fprintf(info.fp_wr, "\n"); + } + + range = max_outlen - info.interim_info.sha_data.min_outlen + 1; + outlen = max_outlen; + for (j = 0; j < SHAKE_EXTERN_ITER; j++) { + memset(md.val, 0, max_outlen); + memcpy(md.val, vec.cipher_auth.digest.val, + vec.cipher_auth.digest.len); + + for (i = 0; i < (SHAKE_INTERN_ITER); i++) { + memset(vec.pt.val, 0, vec.pt.len); + memcpy(vec.pt.val, md.val, vec.pt.len); + vec.cipher_auth.digest.len = outlen; + ret = fips_run_test(); + if (ret < 0) { + if (ret == -EPERM || ret == -ENOTSUP) { + if (info.file_type == FIPS_TYPE_JSON) + return ret; + + fprintf(info.fp_wr, "Bypass\n\n"); + return 0; + } + return ret; + } + + ret = get_writeback_data(&val); + if (ret < 0) + return ret; + + memset(md.val, 0, max_outlen); + memcpy(md.val, (val.val + vec.pt.len), + vec.cipher_auth.digest.len); + md.len = outlen; + rightmost[0] = md.val[md.len-1]; + rightmost[1] = md.val[md.len-2]; + rightptr = (uint16_t *)rightmost; + outlen = info.interim_info.sha_data.min_outlen + + (*rightptr % range); + } + + memcpy(vec.cipher_auth.digest.val, md.val, md.len); + vec.cipher_auth.digest.len = md.len; + + if (info.file_type != FIPS_TYPE_JSON) + fprintf(info.fp_wr, "COUNT = %u\n", j); + + info.parse_writeback(&val); + + if (info.file_type != FIPS_TYPE_JSON) + fprintf(info.fp_wr, "\n"); + } + + rte_free(md.val); + rte_free(vec.pt.val); + + free(val.val); + return 0; +} static int init_test_ops(void) @@ -2408,7 +2497,11 @@ init_test_ops(void) test_ops.prepare_sym_op = prepare_auth_op; test_ops.prepare_sym_xform = prepare_sha_xform; if (info.interim_info.sha_data.test_type == SHA_MCT) - test_ops.test = fips_mct_sha_test; + if (info.interim_info.sha_data.algo == RTE_CRYPTO_AUTH_SHAKE_128 || + info.interim_info.sha_data.algo == RTE_CRYPTO_AUTH_SHAKE_256) + test_ops.test = fips_mct_shake_test; + else + test_ops.test = fips_mct_sha_test; else test_ops.test = fips_generic_test; break; From patchwork Tue Feb 28 17:28:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gowrishankar Muthukrishnan X-Patchwork-Id: 124585 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id DC01241D9F; Tue, 28 Feb 2023 18:29:39 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6693B42D2C; Tue, 28 Feb 2023 18:29:24 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 85F6342BD9 for ; Tue, 28 Feb 2023 18:29:16 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31SGtYTf022217; Tue, 28 Feb 2023 09:29:16 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=HdMH2lMrXaiiawDKcG33iyXE0H9pKHVEARCzlH0DBfA=; b=WX5HlRGHwSbciDpxzvRHxkAt+42hNB5i0ivgrAYFY9joONFYf9loiSFunsRtyZBKrBB5 ZijmtzLxVquqks/XD/Kur+sWA3enRhllp0Lu32d/WcfH1St/A74HpQRjh+/FciGEy4lz 5RY5qnR8k8dfYVrLYTxUGMrcYULqMIQ4ZH2eYj/Pb4JP6fvNgWHr90aWo27y78yBZbpt I1A3wE9YugAH4qSV6rbO052x3Nkt2SqgO13mYPz4i/n/9nJlz7+KKznYMzlBWOv3FP7u VvfSzy7d7XOHXw2rdemgICYzYc7AKRhBUMndJE3OJVszU1ncS2zy8ovIDmBpuBSbmgTn nQ== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nyjqty0pa-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 28 Feb 2023 09:29:15 -0800 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Tue, 28 Feb 2023 09:29:13 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.42 via Frontend Transport; Tue, 28 Feb 2023 09:29:13 -0800 Received: from localhost.localdomain (unknown [10.28.34.38]) by maili.marvell.com (Postfix) with ESMTP id C41825B6940; Tue, 28 Feb 2023 09:29:11 -0800 (PST) From: Gowrishankar Muthukrishnan To: CC: Anoob Joseph , , Akhil Goyal , Brian Dooley , "Gowrishankar Muthukrishnan" Subject: [v2, 05/10] examples/fips_validation: add CCM JSON validation Date: Tue, 28 Feb 2023 22:58:51 +0530 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: 4Tifj9F6jpULMxDsn4wbOLxjwocCfDks X-Proofpoint-GUID: 4Tifj9F6jpULMxDsn4wbOLxjwocCfDks X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-02-28_15,2023-02-28_03,2023-02-09_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Add support in fips_validation to parse CCM JSON vectors. Signed-off-by: Gowrishankar Muthukrishnan --- doc/guides/sample_app_ug/fips_validation.rst | 1 + examples/fips_validation/fips_validation.c | 2 + examples/fips_validation/fips_validation.h | 3 + .../fips_validation/fips_validation_ccm.c | 132 ++++++++++++++++++ examples/fips_validation/main.c | 3 + 5 files changed, 141 insertions(+) diff --git a/doc/guides/sample_app_ug/fips_validation.rst b/doc/guides/sample_app_ug/fips_validation.rst index 4fc8297b34..613c5afd19 100644 --- a/doc/guides/sample_app_ug/fips_validation.rst +++ b/doc/guides/sample_app_ug/fips_validation.rst @@ -60,6 +60,7 @@ ACVP * Supported test vectors * AES-CBC (128,192,256) - AFT, MCT * AES-GCM (128,192,256) - AFT + * AES-CCM (128,192,256) - AFT * AES-CMAC (128,192,256) - AFT * AES-CTR (128,192,256) - AFT, CTR * AES-GMAC (128,192,256) - AFT diff --git a/examples/fips_validation/fips_validation.c b/examples/fips_validation/fips_validation.c index d3b6099d73..f840804009 100644 --- a/examples/fips_validation/fips_validation.c +++ b/examples/fips_validation/fips_validation.c @@ -460,6 +460,8 @@ fips_test_parse_one_json_vector_set(void) /* Vector sets contain the algorithm type, and nothing else we need. */ if (strstr(algo_str, "AES-GCM")) info.algo = FIPS_TEST_ALGO_AES_GCM; + else if (strstr(algo_str, "AES-CCM")) + info.algo = FIPS_TEST_ALGO_AES_CCM; else if (strstr(algo_str, "AES-GMAC")) info.algo = FIPS_TEST_ALGO_AES_GMAC; else if (strstr(algo_str, "HMAC")) diff --git a/examples/fips_validation/fips_validation.h b/examples/fips_validation/fips_validation.h index 8fcb5c8500..c4988053c1 100644 --- a/examples/fips_validation/fips_validation.h +++ b/examples/fips_validation/fips_validation.h @@ -338,6 +338,9 @@ fips_test_parse_one_json_case(void); int parse_test_gcm_json_init(void); +int +parse_test_ccm_json_init(void); + int parse_test_hmac_json_init(void); diff --git a/examples/fips_validation/fips_validation_ccm.c b/examples/fips_validation/fips_validation_ccm.c index 632999c1e4..0e3ee0d247 100644 --- a/examples/fips_validation/fips_validation_ccm.c +++ b/examples/fips_validation/fips_validation_ccm.c @@ -34,6 +34,18 @@ #define POS_KEYWORD "Pass" #define NEG_KEYWORD "Fail" +#define DIR_JSON_STR "direction" +#define IVLEN_JSON_STR "ivLen" +#define PTLEN_JSON_STR "payloadLen" +#define AADLEN_JSON_STR "aadLen" +#define TAGLEN_JSON_STR "tagLen" +#define KEYLEN_JSON_STR "keyLen" +#define PT_JSON_STR "pt" +#define CT_JSON_STR "ct" +#define KEY_JSON_STR "key" +#define IV_JSON_STR "iv" +#define AAD_JSON_STR "aad" + static int parser_dvpt_interim(const char *key, char *src, struct fips_val *val) { @@ -206,6 +218,126 @@ struct ccm_test_types { FIPS_TEST_ENC_AUTH_GEN}, }; +#ifdef USE_JANSSON +static int +parser_read_ccm_direction_str(__rte_unused const char *key, char *src, + __rte_unused struct fips_val *val) +{ + if (strcmp(src, "encrypt") == 0) + info.op = FIPS_TEST_ENC_AUTH_GEN; + else if (strcmp(src, "decrypt") == 0) + info.op = FIPS_TEST_DEC_AUTH_VERIF; + + return 0; +} + +static int +parser_read_ccm_aad_str(const char *key, char *src, struct fips_val *val) +{ + struct fips_val tmp_val = {0}; + uint32_t len = val->len; + + /* CCM aad requires 18 bytes padding before the real content */ + val->val = rte_zmalloc(NULL, len + 18, 0); + if (!val->val) + return -1; + + if (parse_uint8_hex_str(key, src, &tmp_val) < 0) + return -1; + + memcpy(val->val + 18, tmp_val.val, val->len); + rte_free(tmp_val.val); + + return 0; +} + +static int +parse_read_ccm_ct_str(const char *key, char *src, struct fips_val *val) +{ + int ret; + + val->len = vec.pt.len; + + ret = parse_uint8_known_len_hex_str(key, src, val); + if (ret < 0) + return ret; + + src += val->len * 2; + + ret = parse_uint8_known_len_hex_str("", src, &vec.aead.digest); + if (ret < 0) { + rte_free(val->val); + memset(val, 0, sizeof(*val)); + return ret; + } + + return 0; +} + +struct fips_test_callback ccm_tests_interim_json_vectors[] = { + {DIR_JSON_STR, parser_read_ccm_direction_str, NULL}, + {IVLEN_JSON_STR, parser_read_uint32_bit_val, &vec.iv}, + {PTLEN_JSON_STR, parser_read_uint32_bit_val, &vec.pt}, + {AADLEN_JSON_STR, parser_read_uint32_bit_val, &vec.aead.aad}, + {TAGLEN_JSON_STR, parser_read_uint32_bit_val, &vec.aead.digest}, + {KEYLEN_JSON_STR, parser_read_uint32_bit_val, &vec.aead.key}, + {NULL, NULL, NULL} /**< end pointer */ +}; + +struct fips_test_callback ccm_tests_json_vectors[] = { + {PT_JSON_STR, parse_uint8_known_len_hex_str, &vec.pt}, + {CT_JSON_STR, parse_read_ccm_ct_str, &vec.ct}, + {KEY_JSON_STR, parse_uint8_known_len_hex_str, &vec.aead.key}, + {IV_JSON_STR, parse_uint8_known_len_hex_str, &vec.iv}, + {AAD_JSON_STR, parser_read_ccm_aad_str, &vec.aead.aad}, + {NULL, NULL, NULL} /**< end pointer */ +}; + +static int +parse_test_ccm_json_writeback(struct fips_val *val) +{ + struct fips_val tmp_val; + json_t *tcId; + + tcId = json_object_get(json_info.json_test_case, "tcId"); + json_info.json_write_case = json_object(); + json_object_set(json_info.json_write_case, "tcId", tcId); + + if (info.op == FIPS_TEST_ENC_AUTH_GEN) { + json_t *ct; + + info.one_line_text[0] = '\0'; + writeback_hex_str("", info.one_line_text, val); + ct = json_string(info.one_line_text); + json_object_set_new(json_info.json_write_case, CT_JSON_STR, ct); + } else { + if (vec.status == RTE_CRYPTO_OP_STATUS_SUCCESS) { + tmp_val.val = val->val; + tmp_val.len = vec.pt.len; + + info.one_line_text[0] = '\0'; + writeback_hex_str("", info.one_line_text, &tmp_val); + json_object_set_new(json_info.json_write_case, PT_JSON_STR, + json_string(info.one_line_text)); + } else { + json_object_set_new(json_info.json_write_case, "testPassed", + json_false()); + } + } + + return 0; +} + +int +parse_test_ccm_json_init(void) +{ + info.interim_callbacks = ccm_tests_interim_json_vectors; + info.parse_writeback = parse_test_ccm_json_writeback; + info.callbacks = ccm_tests_json_vectors; + return 0; +} +#endif /* USE_JANSSON */ + static int parse_test_ccm_writeback(struct fips_val *val) { diff --git a/examples/fips_validation/main.c b/examples/fips_validation/main.c index d9e8c0eb02..5c6c12982d 100644 --- a/examples/fips_validation/main.c +++ b/examples/fips_validation/main.c @@ -2679,6 +2679,9 @@ fips_test_one_test_group(void) case FIPS_TEST_ALGO_AES_GCM: ret = parse_test_gcm_json_init(); break; + case FIPS_TEST_ALGO_AES_CCM: + ret = parse_test_ccm_json_init(); + break; case FIPS_TEST_ALGO_HMAC: ret = parse_test_hmac_json_init(); break; From patchwork Tue Feb 28 17:28:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gowrishankar Muthukrishnan X-Patchwork-Id: 124586 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id 5A33441D9F; Tue, 28 Feb 2023 18:29:47 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9717942D2F; Tue, 28 Feb 2023 18:29:25 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 1DA6342BAC for ; Tue, 28 Feb 2023 18:29:19 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31SFswEe014212; Tue, 28 Feb 2023 09:29:18 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=tv6tRRXSys9jh0J5BIcjabkqGDv2By9sMlXTeMzbhHY=; b=DUN8RZfgBdYaag4DgId89VozwqWglMwBbtntj5dK9zgiOf2ENnWhkEZWx3CGPtCnl+om +XzBnt72cFZbkVARXMDi4B01LcqP3dxfrV3itexhWse0E1hT/HO28nh0kxEK7K5dnYNJ O97abUY+ez/6bZwWW+dyC7HXr958d1Ooy1jrk7Y4hQ+86lxL94cmf6XTroS1dx/rgcqB CpghvDg6rPoZz3QsW0pU0Dyyg6i8FMAUbv4Jb7Ej+wGj9yisMLbmrKeko8LSs9nHWh04 o8QwSv2+YuWQ9DqX7x8P22FcEFPRZAj1msEyJRWtXzhkVhVlXv7A9tK+A2qwNHkOlMNZ tQ== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nyjqty0pm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 28 Feb 2023 09:29:18 -0800 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Tue, 28 Feb 2023 09:29:16 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.42 via Frontend Transport; Tue, 28 Feb 2023 09:29:16 -0800 Received: from localhost.localdomain (unknown [10.28.34.38]) by maili.marvell.com (Postfix) with ESMTP id 3CA125B6943; Tue, 28 Feb 2023 09:29:14 -0800 (PST) From: Gowrishankar Muthukrishnan To: CC: Anoob Joseph , , Akhil Goyal , Brian Dooley , "Gowrishankar Muthukrishnan" Subject: [v2, 06/10] examples/fips_validation: add ECDSA keygen support Date: Tue, 28 Feb 2023 22:58:52 +0530 Message-ID: <5596bc0de2f2d39ed1e0a683cf145a4f3b9dd2d5.1677604524.git.gmuthukrishn@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: pXSt24w4XqWwQriHJEu2VOJt19gURmJM X-Proofpoint-GUID: pXSt24w4XqWwQriHJEu2VOJt19gURmJM X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-02-28_15,2023-02-28_03,2023-02-09_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Add support to validate ECDSA keygen mode tests. Signed-off-by: Gowrishankar Muthukrishnan --- .../fips_validation/fips_validation_ecdsa.c | 52 +++++++++++++++++++ examples/fips_validation/main.c | 13 +++++ 2 files changed, 65 insertions(+) diff --git a/examples/fips_validation/fips_validation_ecdsa.c b/examples/fips_validation/fips_validation_ecdsa.c index d47ab0b5d1..5c91abfc5a 100644 --- a/examples/fips_validation/fips_validation_ecdsa.c +++ b/examples/fips_validation/fips_validation_ecdsa.c @@ -295,6 +295,20 @@ parse_test_ecdsa_json_writeback(struct fips_val *val) json_object_set_new(json_info.json_write_case, "testPassed", json_true()); else json_object_set_new(json_info.json_write_case, "testPassed", json_false()); + } else if (info.op == FIPS_TEST_ASYM_KEYGEN) { + json_t *obj; + + writeback_hex_str("", info.one_line_text, &vec.ecdsa.pkey); + obj = json_string(info.one_line_text); + json_object_set_new(json_info.json_write_case, "d", obj); + + writeback_hex_str("", info.one_line_text, &vec.ecdsa.qx); + obj = json_string(info.one_line_text); + json_object_set_new(json_info.json_write_case, "qx", obj); + + writeback_hex_str("", info.one_line_text, &vec.ecdsa.qy); + obj = json_string(info.one_line_text); + json_object_set_new(json_info.json_write_case, "qy", obj); } return 0; @@ -367,6 +381,36 @@ parse_siggen_message_str(const char *key, char *src, struct fips_val *val) return ret; } +static int +parse_keygen_tc_str(const char *key, char *src, struct fips_val *val) +{ + RTE_SET_USED(key); + RTE_SET_USED(src); + RTE_SET_USED(val); + + if (info.op == FIPS_TEST_ASYM_KEYGEN) { + if (vec.ecdsa.pkey.val) { + rte_free(vec.ecdsa.pkey.val); + vec.ecdsa.pkey.val = NULL; + } + + if (vec.ecdsa.k.val) { + rte_free(vec.ecdsa.k.val); + vec.ecdsa.k.val = NULL; + } + + if (prepare_vec_ecdsa() < 0) + return -1; + + if (prepare_vec_ecdsa_k() < 0) + return -1; + + info.interim_info.ecdsa_data.pubkey_gen = 1; + } + + return 0; +} + static int parse_sigver_randomvalue_str(const char *key, char *src, struct fips_val *val) { @@ -402,6 +446,11 @@ struct fips_test_callback ecdsa_sigver_json_vectors[] = { {NULL, NULL, NULL} /**< end pointer */ }; +struct fips_test_callback ecdsa_keygen_json_vectors[] = { + {"tcId", parse_keygen_tc_str, &vec.pt}, + {NULL, NULL, NULL} /**< end pointer */ +}; + int parse_test_ecdsa_json_init(void) { @@ -421,6 +470,9 @@ parse_test_ecdsa_json_init(void) } else if (strcmp(mode_str, "sigVer") == 0) { info.op = FIPS_TEST_ASYM_SIGVER; info.callbacks = ecdsa_sigver_json_vectors; + } else if (strcmp(mode_str, "keyGen") == 0) { + info.op = FIPS_TEST_ASYM_KEYGEN; + info.callbacks = ecdsa_keygen_json_vectors; } else { return -EINVAL; } diff --git a/examples/fips_validation/main.c b/examples/fips_validation/main.c index 5c6c12982d..2c4353185e 100644 --- a/examples/fips_validation/main.c +++ b/examples/fips_validation/main.c @@ -1758,6 +1758,19 @@ fips_run_test(void) env.op = env.sym.op; if (env.is_asym_test) { + if (info.op == FIPS_TEST_ASYM_KEYGEN && + info.algo == FIPS_TEST_ALGO_ECDSA) { + env.op = env.asym.op; + test_ops.prepare_asym_xform = prepare_ecfpm_xform; + test_ops.prepare_asym_op = prepare_ecfpm_op; + ret = fips_run_asym_test(); + if (ret < 0) + return ret; + + info.interim_info.ecdsa_data.pubkey_gen = 0; + return ret; + } + vec.cipher_auth.digest.len = parse_test_sha_hash_size( info.interim_info.rsa_data.auth); test_ops.prepare_sym_xform = prepare_sha_xform; From patchwork Tue Feb 28 17:28:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gowrishankar Muthukrishnan X-Patchwork-Id: 124587 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id B119941D9F; Tue, 28 Feb 2023 18:29:54 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C24F642D1A; Tue, 28 Feb 2023 18:29:26 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 811A342BAC for ; Tue, 28 Feb 2023 18:29:22 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31SBEiKm025909; Tue, 28 Feb 2023 09:29:21 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=dDOl2Yuhckws79MWc1Bn67sYhwc9JwVOJ+Y9bhdHOkE=; b=IclPd1J3rHeS8nCnSvdd3/Eb1B1dwaHOHO50qqp5ZfpS75EOGgl8vf6PxYRJgxL0xDom DYn4NXOYfgVLHxRfUTEV7b8j1Qx03sn/TQII49VMdmVAniKm9MlR612ffi7E2mMQe8mr toUsNUsLTUg0bTf/fW3zyYXtnSOPCo6V73fXGgZBAJ0IEwa3sin3E0lRhBsPnQAe1mqV 4H2NtIX10toQwq/sc1ywEGfbKw3m6WcGStAWhpDq4Xxe5JN2ez0fTND1iJL2w+jdZR1g m0hUlYsD4CUXphFarXGHcncWapP9qYyXwaGsEM4Jl18UL7LcdZyBrmYbLDnfBy0kohQn cQ== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nyjqty0q5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 28 Feb 2023 09:29:21 -0800 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Tue, 28 Feb 2023 09:29:19 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.42 via Frontend Transport; Tue, 28 Feb 2023 09:29:19 -0800 Received: from localhost.localdomain (unknown [10.28.34.38]) by maili.marvell.com (Postfix) with ESMTP id A880D5B6971; Tue, 28 Feb 2023 09:29:16 -0800 (PST) From: Gowrishankar Muthukrishnan To: CC: Anoob Joseph , , Akhil Goyal , Brian Dooley , "Gowrishankar Muthukrishnan" Subject: [v2, 07/10] examples/fips_validation: add SHA3 algorithms in ECDSA test Date: Tue, 28 Feb 2023 22:58:53 +0530 Message-ID: <286a6083d7cc85d1395f14cada43b77410afdba6.1677604524.git.gmuthukrishn@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: nT5jdL87gXrjJU7yEVej9YHbEPLw4npT X-Proofpoint-GUID: nT5jdL87gXrjJU7yEVej9YHbEPLw4npT X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-02-28_15,2023-02-28_03,2023-02-09_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Add SHA3 algorithms in ECDSA as supported. Signed-off-by: Gowrishankar Muthukrishnan --- examples/fips_validation/fips_validation_ecdsa.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/examples/fips_validation/fips_validation_ecdsa.c b/examples/fips_validation/fips_validation_ecdsa.c index 5c91abfc5a..aef722d147 100644 --- a/examples/fips_validation/fips_validation_ecdsa.c +++ b/examples/fips_validation/fips_validation_ecdsa.c @@ -50,6 +50,10 @@ struct { {RTE_CRYPTO_AUTH_SHA256, "SHA2-256"}, {RTE_CRYPTO_AUTH_SHA384, "SHA2-384"}, {RTE_CRYPTO_AUTH_SHA512, "SHA2-512"}, + {RTE_CRYPTO_AUTH_SHA3_224, "SHA3-224"}, + {RTE_CRYPTO_AUTH_SHA3_256, "SHA3-256"}, + {RTE_CRYPTO_AUTH_SHA3_384, "SHA3-384"}, + {RTE_CRYPTO_AUTH_SHA3_512, "SHA3-512"}, }; struct { From patchwork Tue Feb 28 17:28:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gowrishankar Muthukrishnan X-Patchwork-Id: 124588 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id 6C77E41D9F; Tue, 28 Feb 2023 18:30:01 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DBBE64114B; Tue, 28 Feb 2023 18:29:37 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id D7F6F42D12 for ; Tue, 28 Feb 2023 18:29:23 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31SGu5E4023933; Tue, 28 Feb 2023 09:29:23 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=h75LEOtcItMpS8SSLzQIbKFRUC560K844WVi1ir3Tjg=; b=guGyZeat70D1fvhof9ck/7o9NtX2R4YVc4cYMdzqWeBBRalwbuD4oqlWyRDucIOQTU0G w0/zK6VYSal5GcSbo9VVza8y8rKtJUcAZxeBQ9fKJjz0nNmh3wyhT/9QIK3stDGfrurK 5dFLy6tNo1ZgJhQmiJhU0LLg65IFs3Glm80A2dbC212BNjBddjHkV4DCv9ERLmHJ8OeY bgSPmORIuMh/9An/ESSYZsfHSyquj23WfwUMDb71WOPSfPHEI+PjcYU2nMcIx5SID9zG t/i8+XEOS5R99uXO1KzF+oYzdSIQhY+Ib1HP6onTgQCfOi3hG1cQRv6Tz+tn5pIAKH4i zA== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nyjqty0qf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 28 Feb 2023 09:29:23 -0800 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Tue, 28 Feb 2023 09:29:21 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.42 via Frontend Transport; Tue, 28 Feb 2023 09:29:21 -0800 Received: from localhost.localdomain (unknown [10.28.34.38]) by maili.marvell.com (Postfix) with ESMTP id 353365B6942; Tue, 28 Feb 2023 09:29:18 -0800 (PST) From: Gowrishankar Muthukrishnan To: CC: Anoob Joseph , , Akhil Goyal , Brian Dooley , "Gowrishankar Muthukrishnan" Subject: [v2, 08/10] examples/fips_validation: fix AES GCM validation tests Date: Tue, 28 Feb 2023 22:58:54 +0530 Message-ID: <2827bb16bdf09d4ab432860bf3b56a537399b11b.1677604524.git.gmuthukrishn@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: cPZJGMoz0VrkarsbDCHGrtwokPsgVO-8 X-Proofpoint-GUID: cPZJGMoz0VrkarsbDCHGrtwokPsgVO-8 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-02-28_15,2023-02-28_03,2023-02-09_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org AES GCM validation tests fail in FIPS validation due to incorrect fields populated in response file. This patch fixes them. Fixes: 5b540bebac8e ("examples/fips_validation: fix GMAC decryption output") Signed-off-by: Gowrishankar Muthukrishnan --- examples/fips_validation/fips_validation_gcm.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/examples/fips_validation/fips_validation_gcm.c b/examples/fips_validation/fips_validation_gcm.c index a80d8b3e4d..bf08d1b995 100644 --- a/examples/fips_validation/fips_validation_gcm.c +++ b/examples/fips_validation/fips_validation_gcm.c @@ -79,7 +79,7 @@ parser_read_gcm_pt_len(const char *key, char *src, if (ret < 0) return ret; - if (vec.pt.len == 0) { + if (info.algo == FIPS_TEST_ALGO_AES_GMAC && vec.pt.len == 0) { info.interim_info.gcm_data.is_gmac = 1; test_ops.prepare_sym_op = prepare_auth_op; test_ops.prepare_sym_xform = prepare_gmac_xform; @@ -296,6 +296,7 @@ parse_test_gcm_json_writeback(struct fips_val *val) tmp_val.val = val->val; tmp_val.len = vec.pt.len; + info.one_line_text[0] = '\0'; writeback_hex_str("", info.one_line_text, &tmp_val); ct = json_string(info.one_line_text); json_object_set_new(json_info.json_write_case, CT_JSON_STR, ct); @@ -326,6 +327,7 @@ parse_test_gcm_json_writeback(struct fips_val *val) tmp_val.val = val->val; tmp_val.len = vec.pt.len; + info.one_line_text[0] = '\0'; writeback_hex_str("", info.one_line_text, &tmp_val); json_object_set_new(json_info.json_write_case, PT_JSON_STR, json_string(info.one_line_text)); @@ -334,12 +336,8 @@ parse_test_gcm_json_writeback(struct fips_val *val) json_true()); } } else { - if (!info.interim_info.gcm_data.is_gmac) - json_object_set_new(json_info.json_write_case, PT_JSON_STR, - json_string("")); - else - json_object_set_new(json_info.json_write_case, "testPassed", - json_false()); + json_object_set_new(json_info.json_write_case, "testPassed", + json_false()); } } From patchwork Tue Feb 28 17:28:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gowrishankar Muthukrishnan X-Patchwork-Id: 124590 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id 5A24F41D9F; Tue, 28 Feb 2023 18:30:15 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0DDCA42D38; Tue, 28 Feb 2023 18:29:40 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id A405E4113C for ; Tue, 28 Feb 2023 18:29:35 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31SFkDSQ023808; Tue, 28 Feb 2023 09:29:35 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=QEO0yVuwKGt76J/mvS9aIMRRbIs1sVHCtblmZT9TwPI=; b=TTGAuIjtlgIttg7clJi8aIFZWWvxHYK5VhFLsYXfNxexLtxjVrGL5KuOWJPDa6nXBnV9 CoyxOgMwjUmwKYTZc1ekmDqkY9wCVmHmmn/EK24vewFnPRMH4unygBsdw3r5gPZfXUVH 7Gx5CeFElZCQM95c4365+j7r3Ix+DSvxIL7UMmMS+aHFo9UmKTRW4l1ErOTlAil/6wpv 9OQmrkjb4i2gSeWAi8UP0v0luDsRdphDLPNRcxq/bV9SaaFUZIb6/06/gYveR91Bllhi rIs1IXaBZCIUDrVnCydnpIRCXVu5JRi89xCfqr5cbyXMfwNexrOLsd5FopJYHiBmN+J6 Rg== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nyjqty0qx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 28 Feb 2023 09:29:34 -0800 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Tue, 28 Feb 2023 09:29:23 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.42 via Frontend Transport; Tue, 28 Feb 2023 09:29:23 -0800 Received: from localhost.localdomain (unknown [10.28.34.38]) by maili.marvell.com (Postfix) with ESMTP id A291C5B6940; Tue, 28 Feb 2023 09:29:21 -0800 (PST) From: Gowrishankar Muthukrishnan To: CC: Anoob Joseph , , Akhil Goyal , Brian Dooley , "Gowrishankar Muthukrishnan" Subject: [v2, 09/10] examples/fips_validation: fix AES XTS to read seq number Date: Tue, 28 Feb 2023 22:58:55 +0530 Message-ID: <0cdaf5466f63d81fb0fa49b983a301e48bf80174.1677604524.git.gmuthukrishn@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: ey8l1ReD0zlmaI2uaV1mxtWDcTys330W X-Proofpoint-GUID: ey8l1ReD0zlmaI2uaV1mxtWDcTys330W X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-02-28_15,2023-02-28_03,2023-02-09_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Fix AES XTS test to read sequence number correctly. Fixes: f8e431ed8f6 ("examples/fips_validation: add parsing for AES-XTS") Signed-off-by: Gowrishankar Muthukrishnan --- examples/fips_validation/fips_validation_xts.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/examples/fips_validation/fips_validation_xts.c b/examples/fips_validation/fips_validation_xts.c index 531e3c688e..530df78ab4 100644 --- a/examples/fips_validation/fips_validation_xts.c +++ b/examples/fips_validation/fips_validation_xts.c @@ -34,6 +34,7 @@ #define DATAUNITLEN_JSON_STR "dataUnitLen" #define PAYLOADLEN_JSON_STR "payloadLen" #define TWEAKVALUE_JSON_STR "tweakValue" +#define SEQNUMBER_JSON_STR "sequenceNumber" #define PT_JSON_STR "pt" #define CT_JSON_STR "ct" @@ -95,14 +96,17 @@ parser_xts_read_keylen(const char *key, char *src, struct fips_val *val) static int parser_xts_read_tweakval(const char *key, char *src, struct fips_val *val) { + char num_str[4] = {0}; int ret; - if (info.interim_info.xts_data.tweak_mode == XTS_TWEAK_MODE_HEX) + if (info.interim_info.xts_data.tweak_mode == XTS_TWEAK_MODE_HEX) { ret = parse_uint8_hex_str(key, src, val); - else if (info.interim_info.xts_data.tweak_mode == XTS_TWEAK_MODE_NUMBER) - ret = parser_read_uint32_bit_val(key, src, val); - else + } else if (info.interim_info.xts_data.tweak_mode == XTS_TWEAK_MODE_NUMBER) { + snprintf(num_str, RTE_DIM(num_str), "%x", atoi(src)); + ret = parse_uint8_hex_str(key, num_str, val); + } else { ret = -1; + } return ret; } @@ -122,6 +126,7 @@ struct fips_test_callback xts_interim_json_vectors[] = { struct fips_test_callback xts_enc_json_vectors[] = { {KEY_JSON_STR, parse_uint8_known_len_hex_str, &vec.cipher_auth.key}, {TWEAKVALUE_JSON_STR, parser_xts_read_tweakval, &vec.iv}, + {SEQNUMBER_JSON_STR, parser_xts_read_tweakval, &vec.iv}, {PT_JSON_STR, parse_uint8_hex_str, &vec.pt}, {NULL, NULL, NULL} /**< end pointer */ }; From patchwork Tue Feb 28 17:28:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gowrishankar Muthukrishnan X-Patchwork-Id: 124591 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id BF23C41D9F; Tue, 28 Feb 2023 18:30:21 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2FD7542D3B; Tue, 28 Feb 2023 18:29:41 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 425814113C for ; Tue, 28 Feb 2023 18:29:36 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31SFkDSR023808; Tue, 28 Feb 2023 09:29:35 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=+JUP6wi6PyBPAQtFFAK2MxLqWC858u3jCQUz5L1pi2I=; b=ITt5bLbPDBgsaMCZVaqxjQFyb0E2teqj/UhnK/ohN++7SXiKlqOcIQH6PeIhZZtFeTqG NSNQ5TVoSt777UXUTJgizbhGL9jenR3NJHr6REmeJD2YM6QETerRi0XyquEBRO6mnLnQ E4yiR2I+3JPuUKyztnir3u5rtnw6oUQim1WPefo6/96ADJl96EHIAtXN4AV/ihXYAARg irjmqpag/r4RomyzJ55+rZB2x2bVk27dBD0nttPdslelZV8pOsDFKK+JeqB2UxmtGtu6 yY5YZiC8s02TEA9axIrLAroH1L0noeP6MlivaLZaXGan49aB1dzo50rOucoLsjHEvQ3/ sQ== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nyjqty0qx-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 28 Feb 2023 09:29:35 -0800 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Tue, 28 Feb 2023 09:29:26 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.42 via Frontend Transport; Tue, 28 Feb 2023 09:29:26 -0800 Received: from localhost.localdomain (unknown [10.28.34.38]) by maili.marvell.com (Postfix) with ESMTP id 1B6AC5B6944; Tue, 28 Feb 2023 09:29:23 -0800 (PST) From: Gowrishankar Muthukrishnan To: CC: Anoob Joseph , , Akhil Goyal , Brian Dooley , "Gowrishankar Muthukrishnan" Subject: [v2, 10/10] examples/fips_validation: add extra space in JSON buffer Date: Tue, 28 Feb 2023 22:58:56 +0530 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: O0VJNPqdMjSOpjwnKLrc0JnkG2m6hclV X-Proofpoint-GUID: O0VJNPqdMjSOpjwnKLrc0JnkG2m6hclV X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-02-28_15,2023-02-28_03,2023-02-09_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Current test buffer to copy input data of maximum possible length did not account NULL character, due to which a last input character is always ignored and it causes tests like RSA SIGVER for modulo of 4096 bits to fail. This patch fixes it. Fixes: 0b65d54f3a4 ("examples/fips_validation: fix JSON buffer size") Signed-off-by: Gowrishankar Muthukrishnan --- examples/fips_validation/fips_validation.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/fips_validation/fips_validation.h b/examples/fips_validation/fips_validation.h index c4988053c1..abc1d64742 100644 --- a/examples/fips_validation/fips_validation.h +++ b/examples/fips_validation/fips_validation.h @@ -247,7 +247,7 @@ struct ecdsa_interim_data { * Esp, in asym op, modulo bits decide char buffer size. * max = (modulo / 4) */ -#define FIPS_TEST_JSON_BUF_LEN (4096 / 4) +#define FIPS_TEST_JSON_BUF_LEN ((4096 / 4) + 1) struct fips_test_json_info { /* Information used for reading from json */