From patchwork Mon Feb 6 14:45: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: 123144 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 B18B841C12; Mon, 6 Feb 2023 15:46:20 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CA8B242D12; Mon, 6 Feb 2023 15:46:16 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 98C5A40FAE for ; Mon, 6 Feb 2023 15:46:15 +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 31688kg6015844; Mon, 6 Feb 2023 06:46:15 -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=R6xp3X+SgcZsAtf2fvJcbmMdGwq2cd8VSV0MlPnTQlOiDiceHSpxx9N2yx79Cde6NTmw ULpoB+zinaL/SPsvd0SJ3LJilgyOapCCqpDsOyufSQiiFLX6I/fttWdd3HvRPAdrkpO9 zM3SRI3ta6OltXMTtaDTpJldoWAkcl62GPKqM523NhGUSWFLje8ja7H4XcOUo+Exu2vN 1cwp7B8C0yNUUj1JtKOiluNAWxPe1buy+VRLfvh43e8L+GXvrFvUwzAD3cDUXWrQIV6o nA71LKZy2v0J6qFB66z5E0P3ndHZRemUCbYAbjknDhuCIOuUijNntuncfi7bRMh9w/hn JA== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nhqrtbkc8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 06 Feb 2023 06:46:14 -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; Mon, 6 Feb 2023 06:46:12 -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; Mon, 6 Feb 2023 06:46:12 -0800 Received: from localhost.localdomain (unknown [10.28.34.38]) by maili.marvell.com (Postfix) with ESMTP id D40603F7050; Mon, 6 Feb 2023 06:46:10 -0800 (PST) From: Gowrishankar Muthukrishnan To: CC: Anoob Joseph , , Akhil Goyal , Brian Dooley , "Gowrishankar Muthukrishnan" Subject: [v1, 01/10] examples/fips_validation: fix MCT output for SHA Date: Mon, 6 Feb 2023 20:15:53 +0530 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-Proofpoint-GUID: BV07pj1tBvqWkH-0bIh5AEoS5soQlVz3 X-Proofpoint-ORIG-GUID: BV07pj1tBvqWkH-0bIh5AEoS5soQlVz3 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-02-06_07,2023-02-06_03,2022-06-22_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 Acked-by: Brian Dooley --- 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 Mon Feb 6 14:45: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: 123145 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 E568D41C12; Mon, 6 Feb 2023 15:46:26 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EDF7642D42; Mon, 6 Feb 2023 15:46: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 4311A42D3F for ; Mon, 6 Feb 2023 15:46: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 31688kg8015844; Mon, 6 Feb 2023 06:46: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=xV+FV+g3XQvPF9jdWOD0hqAGw4K3ipVTdU7uwtZgDiE=; b=OzG0jxCzHvpRM+YvfrLuEm0058x5+DPqMJYuh9ZtgFunWBmFQNGPWtxNd/becqQ7OQvC 9KfQjCp+DxdvyxEvc96S7jchCJo0VaVw3ES4vdHUFmM0co6mmPYX8JET0Tj9FgQxt0qA b8BBArd4gwe7mJhPSoVK8WC2qgLhrYwzt/FFvQYSEAC32NnnDOo4dZiMdNxue6A9w1lA yvLny3HVqL++SKBHN6Nj877z3JFnet2PjmY1wFPrqtNaSb1TP9wlJAv6z7zckVkESqiC XsBgSjhwFfnlPe9p+cwfcZodRra5EdRNFkEaf30qa76TLDY1u4gNX4quMJbz2vZ7KixQ 2w== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nhqrtbkch-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 06 Feb 2023 06:46:21 -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; Mon, 6 Feb 2023 06:46:15 -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; Mon, 6 Feb 2023 06:46:15 -0800 Received: from localhost.localdomain (unknown [10.28.34.38]) by maili.marvell.com (Postfix) with ESMTP id 5C0C43F7043; Mon, 6 Feb 2023 06:46:13 -0800 (PST) From: Gowrishankar Muthukrishnan To: CC: Anoob Joseph , , Akhil Goyal , Brian Dooley , "Gowrishankar Muthukrishnan" Subject: [v1, 02/10] examples/fips_validation: add SHA3 validation Date: Mon, 6 Feb 2023 20:15:54 +0530 Message-ID: <18c7a6838c18d041c52ef57e807eb34871af3946.1675693844.git.gmuthukrishn@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-Proofpoint-GUID: As2fHJTZdswJnRlNeRfzdDhumq2o4Tvf X-Proofpoint-ORIG-GUID: As2fHJTZdswJnRlNeRfzdDhumq2o4Tvf X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-02-06_07,2023-02-06_03,2022-06-22_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 Acked-by: Brian Dooley --- 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 Mon Feb 6 14:45: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: 123147 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 BF64B41C12; Mon, 6 Feb 2023 15:46:40 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7A46C42D5A; Mon, 6 Feb 2023 15:46: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 D862142D3F for ; Mon, 6 Feb 2023 15:46: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 31688kgA015844; Mon, 6 Feb 2023 06:46:22 -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=jbXNbYRf1atZ3J+lyAR2r1zANg/WV0SgywLqdUrSNbgPCbeDnj5swr+3nSzXh2KZyqQP zjjN1UnAk8ATpyojY1v8h5mtALUuYayg1uiqkimIPS6bB42SRMpL9NuY9b+X7PYZdQfA aa7efyg0KRphRThz/DoZJ751MSdHIIwF2t7GgtuuLx+E9gKzIK36F5t2pWhyA7lG1ADK sRuIOblkUx8tOxfQRKD01PZQQdr+eOEgxsXC8r9ggeM7aBJ5fuLE1i1G1yyUV+xXZJdM 3CGEA5rgm6o5DU/9+Zjv5K0VIry43QYH02OvHU9kiTQjTu0XR7oEBeDrNj7wz2MbKnSz YQ== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nhqrtbkch-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 06 Feb 2023 06:46:22 -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; Mon, 6 Feb 2023 06:46:18 -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; Mon, 6 Feb 2023 06:46:18 -0800 Received: from localhost.localdomain (unknown [10.28.34.38]) by maili.marvell.com (Postfix) with ESMTP id DE2F63F707D; Mon, 6 Feb 2023 06:46:15 -0800 (PST) From: Gowrishankar Muthukrishnan To: CC: Anoob Joseph , , Akhil Goyal , Brian Dooley , "Gowrishankar Muthukrishnan" Subject: [v1, 03/10] examples/fips_validation: fix integer parse in test case Date: Mon, 6 Feb 2023 20:15:55 +0530 Message-ID: <1f5637764dc057ee58ad6354f13296acc3b46fa7.1675693844.git.gmuthukrishn@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-Proofpoint-GUID: sF6gep_sLU0XxfGNhGO-OpF2NfJolm1E X-Proofpoint-ORIG-GUID: sF6gep_sLU0XxfGNhGO-OpF2NfJolm1E X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-02-06_07,2023-02-06_03,2022-06-22_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 Acked-by: Brian Dooley --- 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 Mon Feb 6 14:45: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: 123146 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 0685041C12; Mon, 6 Feb 2023 15:46:34 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 28F8142D48; Mon, 6 Feb 2023 15:46: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 8EE6242D42 for ; Mon, 6 Feb 2023 15:46: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 3167xXxQ019068; Mon, 6 Feb 2023 06:46:22 -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=39YDz94PxAc2bDTzIlZTb3C9BA7rdtn3QQmpZd4KjLg=; b=cPikrWXTswQlU0KLW6j8cGV4jyh0amsF0OWtoZ8o7kElfkr9FfG8VmJQK460gxKIIbSE ZnKrAF8MSF4RGqUm5Bh+4uqZviXBswRJr1eLVAW4hIYTlIj3d+o6hqkcKIcyqmPnRZIZ 09AvT8pBIwYQLN15aD3fsXDDNV5m2cnQtvy2dcl1fkkuwvuSG8U4jL0KN1rnxgeKdhxz JIKJMWsCQ+2wyiK7KwuSQJf/UBZBIAJkiAbV1PsGhFUzEZapWB59NmcySjY2GlV6lewe IZWDbFsB2wKRSGIy9NAnPJZ8mBg3c8aGwAKJa5IUyEUNKB6wIs6OX0FzVAyCSk3n7arl +w== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nhqrtbkcx-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 06 Feb 2023 06:46: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; Mon, 6 Feb 2023 06:46:20 -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; Mon, 6 Feb 2023 06:46:20 -0800 Received: from localhost.localdomain (unknown [10.28.34.38]) by maili.marvell.com (Postfix) with ESMTP id 674653F705A; Mon, 6 Feb 2023 06:46:18 -0800 (PST) From: Gowrishankar Muthukrishnan To: CC: Anoob Joseph , , Akhil Goyal , Brian Dooley , "Gowrishankar Muthukrishnan" Subject: [v1, 04/10] examples/fips_validation: add SHAKE validation Date: Mon, 6 Feb 2023 20:15:56 +0530 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-Proofpoint-GUID: Kk7aFUG51aILa4KkZ4QiECZW119x4j4D X-Proofpoint-ORIG-GUID: Kk7aFUG51aILa4KkZ4QiECZW119x4j4D X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-02-06_07,2023-02-06_03,2022-06-22_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 Acked-by: Brian Dooley --- 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 | 93 ++++++++++++++++++- 4 files changed, 154 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..52076160b5 100644 --- a/examples/fips_validation/main.c +++ b/examples/fips_validation/main.c @@ -2356,6 +2356,93 @@ 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]; + 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]; + outlen = info.interim_info.sha_data.min_outlen + + (*(uint16_t *)rightmost % 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 +2495,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 Mon Feb 6 14:45:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gowrishankar Muthukrishnan X-Patchwork-Id: 123148 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 0F9DE41C12; Mon, 6 Feb 2023 15:46:51 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 31F7642D74; Mon, 6 Feb 2023 15:46:28 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id C472342D4A for ; Mon, 6 Feb 2023 15:46:25 +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 31688kgE015844; Mon, 6 Feb 2023 06:46:25 -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=DDylrUB6p9ESb/NDszO6ypLnIZkD6pn8V8vbsvnKuUY=; b=TwNn2WgO0JcFmqYTicfqiqTHwXK0jccFYWYqlVNzMTkjeMaC8fVf72QlZbn2I2W6J7E5 7w9l+W5zpVNuFr+8Vb1BDs/YffuUTL6aTx9qlXagwkcO5/czUwMr0vFK1JB37nLlB0Ue S1bb9dnY31JH0ihpmxQeSkG8AumRA3AYoSS5Ao1OPBbaVmziAfQgWybzshl38Qbg0HKU PplZqD3QUCxwpuQHPxwknMzfapD6QXCh55FvfeXTETamXfNKjcIsdJtDjqgqP4xTRQNZ e5akzpcLadZcf0HqpOOnT1IEILhno4ee0cnDZJ6gKRastmAfSC64U3pi8WXBQfQTfEtT tA== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nhqrtbkdf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 06 Feb 2023 06:46:25 -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; Mon, 6 Feb 2023 06:46:23 -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; Mon, 6 Feb 2023 06:46:23 -0800 Received: from localhost.localdomain (unknown [10.28.34.38]) by maili.marvell.com (Postfix) with ESMTP id F24333F7050; Mon, 6 Feb 2023 06:46:20 -0800 (PST) From: Gowrishankar Muthukrishnan To: CC: Anoob Joseph , , Akhil Goyal , Brian Dooley , "Gowrishankar Muthukrishnan" Subject: [v1, 05/10] examples/fips_validation: add CCM JSON validation Date: Mon, 6 Feb 2023 20:15:57 +0530 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-Proofpoint-GUID: mMk3INF737uvWsQ2AxxU9AhkEuU4shOZ X-Proofpoint-ORIG-GUID: mMk3INF737uvWsQ2AxxU9AhkEuU4shOZ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-02-06_07,2023-02-06_03,2022-06-22_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 Acked-by: Brian Dooley --- 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 52076160b5..1974dc959b 100644 --- a/examples/fips_validation/main.c +++ b/examples/fips_validation/main.c @@ -2677,6 +2677,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 Mon Feb 6 14:45:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gowrishankar Muthukrishnan X-Patchwork-Id: 123149 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 7E6BC41C12; Mon, 6 Feb 2023 15:46:58 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9C2BF42D46; Mon, 6 Feb 2023 15:46:35 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id C06DF42D59 for ; Mon, 6 Feb 2023 15:46:33 +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 31680KG2005847; Mon, 6 Feb 2023 06:46:31 -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=9plnb71skMVV0A2etfOq81nMn0In6p6Ktn7Vz8vlIXg=; b=gLcN3Xz0Kesqwv3clk/SGyVzWPHB61zeP+lM3PcEVSr2Z/N/N/dbu2ksN47Og4sSp8zU r516VMWIqIL1zz9l9BepJxCj3OmgcJ6owiuKCcfoyv6fWBiBKfZMUUHrKPkNVAOIoOds Ihwsr0K8dn9xQ5SWutT9kw7x/7IET5JXjdlJkegJN4TpKEYvtYWRgV+vpxYCMNM9gYGe LsZMdogL1nUP9tH+eD6X4muTRoJLT/MrJl+hyxfj4iGlvLFAGpOY+B+sDwr6YleNnJvy TkpYI7b9jjD07InCC7RlIKkLsPFzI/+tQC6y3dLcpNblAMxsew2IOK+JbkT06poJ/w+M zw== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nhqrtbkdt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 06 Feb 2023 06:46:28 -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; Mon, 6 Feb 2023 06:46:25 -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; Mon, 6 Feb 2023 06:46:25 -0800 Received: from localhost.localdomain (unknown [10.28.34.38]) by maili.marvell.com (Postfix) with ESMTP id 8C62B3F7043; Mon, 6 Feb 2023 06:46:23 -0800 (PST) From: Gowrishankar Muthukrishnan To: CC: Anoob Joseph , , Akhil Goyal , Brian Dooley , "Gowrishankar Muthukrishnan" Subject: [v1, 06/10] examples/fips_validation: add ECDSA keygen support Date: Mon, 6 Feb 2023 20:15:58 +0530 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-Proofpoint-GUID: KuMMkI7QuSZLMmwTrgtWtV7XrMAsyyhN X-Proofpoint-ORIG-GUID: KuMMkI7QuSZLMmwTrgtWtV7XrMAsyyhN X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-02-06_07,2023-02-06_03,2022-06-22_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 Acked-by: Brian Dooley --- .../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 1974dc959b..97190902aa 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 Mon Feb 6 14:45:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gowrishankar Muthukrishnan X-Patchwork-Id: 123150 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 7EDD741C12; Mon, 6 Feb 2023 15:47:06 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E486542D65; Mon, 6 Feb 2023 15:46: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 58E6542D67 for ; Mon, 6 Feb 2023 15:46:40 +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 31680KG3005847; Mon, 6 Feb 2023 06:46:39 -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=Xqayxl5uYpBbOj9EOlzuIdbNSNlvyQsBVJT5GxNSXxKsjjuTCrGAJ6O56hYVc/j9kNvS F/1v49Vcx/QQOG6efD49yf0T1dmfNSCLO/pvTUr2UtZBgE3mNP6OPqaGKbnyXWtYu6We A/gT4v+DpJT0wfKyVX8ksCeh30BzQHzjDO4wH7r8xeZrNNp8nJm3beyIqxksBNu4qqIw JUsRnvUtZQMgS2BuBWQRRY6k2DUQQGJ38snXmnCTQI96LkrCIPCOcqtdsvwfShluoyzp VsE+81V7bbUqePXzps8QEVeoWgF/YlRPYnWo+3oFJf6VLBNRrivLlvykiBgwDbWF/0Yt +w== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nhqrtbkdt-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 06 Feb 2023 06:46:36 -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; Mon, 6 Feb 2023 06:46:28 -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; Mon, 6 Feb 2023 06:46:28 -0800 Received: from localhost.localdomain (unknown [10.28.34.38]) by maili.marvell.com (Postfix) with ESMTP id 1B3FE3F7050; Mon, 6 Feb 2023 06:46:25 -0800 (PST) From: Gowrishankar Muthukrishnan To: CC: Anoob Joseph , , Akhil Goyal , Brian Dooley , "Gowrishankar Muthukrishnan" Subject: [v1, 07/10] examples/fips_validation: add SHA3 algorithms in ECDSA test Date: Mon, 6 Feb 2023 20:15:59 +0530 Message-ID: <9edd8d1ef099f6f00021f650df6bed64b5cf287c.1675693844.git.gmuthukrishn@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-Proofpoint-GUID: heHFp_JnNK6X9mzGsyvKJL4VGxnre63c X-Proofpoint-ORIG-GUID: heHFp_JnNK6X9mzGsyvKJL4VGxnre63c X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-02-06_07,2023-02-06_03,2022-06-22_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 Acked-by: Brian Dooley --- 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 Mon Feb 6 14:46:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gowrishankar Muthukrishnan X-Patchwork-Id: 123152 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 2777C41C12; Mon, 6 Feb 2023 15:47:21 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1CC4D42D8F; Mon, 6 Feb 2023 15:46:46 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id D760142D6D for ; Mon, 6 Feb 2023 15:46:42 +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 3167uqk9017823; Mon, 6 Feb 2023 06:46:42 -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=SprveiNYlv9vtqNTYD+EeQlF4CAccrQNNPw+CrJSlDCK4h/D5IsWj4EjpAmYP30O9sqa tPLqKijbM6DEZxXUUA/DDpaikzwO7sfD3Mc1pAaS9MWAhFkrgebloXNo40/kpDM2V8Y8 ZQEMy/BWG+SQao33cXjbOPSJmITwHSkgKDBEQktOq7y2lY/PngVwQNhdCKdt1UFQ0Oun 3O+uyowsolRHUYdI6af3+4Phd2BY9aF0rSD+/Y0gOmWFoX/G8KTm9FjS67jCYpJeBeHT w3qMARfhkWHzG2dy3/3iV6B1ind0Mt+2sUxGcCV26xtw6Bp8R+a158r+CYPRTvVUfpm3 GQ== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nhqrtbkec-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 06 Feb 2023 06:46:42 -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; Mon, 6 Feb 2023 06:46:30 -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; Mon, 6 Feb 2023 06:46:30 -0800 Received: from localhost.localdomain (unknown [10.28.34.38]) by maili.marvell.com (Postfix) with ESMTP id 9E8803F7043; Mon, 6 Feb 2023 06:46:28 -0800 (PST) From: Gowrishankar Muthukrishnan To: CC: Anoob Joseph , , Akhil Goyal , Brian Dooley , "Gowrishankar Muthukrishnan" Subject: [v1, 08/10] examples/fips_validation: fix AES GCM validation tests Date: Mon, 6 Feb 2023 20:16:00 +0530 Message-ID: <24a928d04200ab33b4ce19c109e5ed905871f993.1675693844.git.gmuthukrishn@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-Proofpoint-GUID: HTCvIes4kZLDHyXGlM2Ksee-JBWiDmgN X-Proofpoint-ORIG-GUID: HTCvIes4kZLDHyXGlM2Ksee-JBWiDmgN X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-02-06_07,2023-02-06_03,2022-06-22_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 Acked-by: Brian Dooley --- 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 Mon Feb 6 14:46:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gowrishankar Muthukrishnan X-Patchwork-Id: 123151 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 D8DB641C12; Mon, 6 Feb 2023 15:47:12 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 841E342D7E; Mon, 6 Feb 2023 15:46:44 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 48A2D42D6D for ; Mon, 6 Feb 2023 15:46:42 +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 31680KG4005847; Mon, 6 Feb 2023 06:46:41 -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=WjqI5fR54TqlHBNjvwXVPQcmYl6DJhOYUdJYt4y3aJm9D6jAJDMC9KW1H8hWlRxLEziP omYLYfez0mA3m4Ndk64sgFLJ0OJfFWcVDLfY36Qh7yaNsAY+389vwooPp5GelPvFvrTK +DRxCVR/pxe3YRT8MZ0ohIdmC7kvRngO1ouZsIpSGF8rWP8wG9buOaLtt8Z+xzKBcfEo C0nD2ddhpkocfelkEij2o+SP7lq7ktkUTHE3OI02rRRIJCudvGtWgIehUgovm1G6Bhb1 3EJlHMRw3M4Hyotk/NK+heN0+lfiHNX3lqXlJ9MW02F2JaWeAzRkZR0gvvli3UrYL6fB vQ== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nhqrtbkdt-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 06 Feb 2023 06:46:41 -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; Mon, 6 Feb 2023 06:46:33 -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; Mon, 6 Feb 2023 06:46:33 -0800 Received: from localhost.localdomain (unknown [10.28.34.38]) by maili.marvell.com (Postfix) with ESMTP id 2ABE53F705A; Mon, 6 Feb 2023 06:46:30 -0800 (PST) From: Gowrishankar Muthukrishnan To: CC: Anoob Joseph , , Akhil Goyal , Brian Dooley , "Gowrishankar Muthukrishnan" Subject: [v1, 09/10] examples/fips_validation: fix AES XTS to read seq number Date: Mon, 6 Feb 2023 20:16:01 +0530 Message-ID: <9a4bd9e1734efd66bdd4f064288db991e7dfe2e2.1675693844.git.gmuthukrishn@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-Proofpoint-GUID: 7fismgNFjXho5zG9jmUeJmX4QHPsbK_Q X-Proofpoint-ORIG-GUID: 7fismgNFjXho5zG9jmUeJmX4QHPsbK_Q X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-02-06_07,2023-02-06_03,2022-06-22_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 Acked-by: Brian Dooley --- 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 Mon Feb 6 14:46:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gowrishankar Muthukrishnan X-Patchwork-Id: 123153 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 28C1B41C12; Mon, 6 Feb 2023 15:47:26 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 361ED42BD9; Mon, 6 Feb 2023 15:46:47 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 70B5C42D6D for ; Mon, 6 Feb 2023 15:46:43 +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 3167uqkA017823; Mon, 6 Feb 2023 06:46:42 -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=bSk7UKbAIOLyrTYrJxmbDTTspoWf3ueZteE/bnjzmfElAprHLg7vr8GrmTDhI34fp4QP yjQalfDDfAXpZruczX/FImQvNHtgAbnbiJiGTpGHdBwAz4JA4LvEQOXXiW8FQaJxrJqR n67jg2LT8KWTDfsA57oxJUdNSDS4lF23sWwDFrUBCS92E2NhQJIOpISerwDh6Pj3EZo2 1saqol84/tar89wMOjS5w6tx2ywhHZ4u/05a1EvPT0yY8OQ6hno1ixqmeXT/s58Cnc6e 2cv/riyxE+iRqDRfPIBiE0iDoW1a5oYvmmZQstjxLRzMBrsvSSnLPEvUXNG/wq3HTMtl FQ== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nhqrtbkec-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 06 Feb 2023 06:46:42 -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; Mon, 6 Feb 2023 06:46:35 -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; Mon, 6 Feb 2023 06:46:35 -0800 Received: from localhost.localdomain (unknown [10.28.34.38]) by maili.marvell.com (Postfix) with ESMTP id B03463F7043; Mon, 6 Feb 2023 06:46:33 -0800 (PST) From: Gowrishankar Muthukrishnan To: CC: Anoob Joseph , , Akhil Goyal , Brian Dooley , "Gowrishankar Muthukrishnan" Subject: [v1, 10/10] examples/fips_validation: add extra space in JSON buffer Date: Mon, 6 Feb 2023 20:16:02 +0530 Message-ID: <311e28cd27874f1d75c36b5825425e6f84889d64.1675693844.git.gmuthukrishn@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-Proofpoint-GUID: OKEabUPg7zKl3y3gI9gddFgMB7blmuC7 X-Proofpoint-ORIG-GUID: OKEabUPg7zKl3y3gI9gddFgMB7blmuC7 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-02-06_07,2023-02-06_03,2022-06-22_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 Acked-by: Brian Dooley --- 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 */