From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 050F941D8F; Mon, 27 Feb 2023 10:30:03 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EC95A42B71; Mon, 27 Feb 2023 10:30:02 +0100 (CET) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mails.dpdk.org (Postfix) with ESMTP id 031F341140 for ; Mon, 27 Feb 2023 10:30:00 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1677490201; x=1709026201; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=xxyf4lM8MKPn+IFNTqhE2t5EVXtkV0x7QJQy8KaVdyU=; b=CLnnCELEqd3kLxNn9HqSF9BgHZHebCylNdtRs3TsTjSFcx04c7ZX/evg FX06CqmYJM9RuZnKc6b6gLbP1/MWUQzcGmsLQvmLPqxbe9d30S5jL+TGg EO/R6NptSMLTpLTHcqpjUzwKRFHAoAPwlXcyCrMZSg5mB7BV0ucv5lrL5 LS+M3pQYbIv0awtQ1wHTgp4aL6nvqPTK80Kc4h9efXmp5I/9VHPPspi9d OCJ1uBxMp2CBMzCGA7AXf9rwv9xOjoDTZo3tQdHNPvpxQLAh+A8NQWVgi W65BHY6TT1iMQ5j7HZ1UWv1tLhVzUAc5/V+26Om+Roh9MxlogVEo2cN0n w==; X-IronPort-AV: E=McAfee;i="6500,9779,10633"; a="313491431" X-IronPort-AV: E=Sophos;i="5.97,331,1669104000"; d="scan'208";a="313491431" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Feb 2023 01:29:56 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10633"; a="703962056" X-IronPort-AV: E=Sophos;i="5.97,331,1669104000"; d="scan'208";a="703962056" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga008.jf.intel.com with ESMTP; 27 Feb 2023 01:29:55 -0800 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Mon, 27 Feb 2023 01:29:55 -0800 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Mon, 27 Feb 2023 01:29:55 -0800 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16 via Frontend Transport; Mon, 27 Feb 2023 01:29:55 -0800 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.175) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.16; Mon, 27 Feb 2023 01:29:54 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QUqHzpTjSXoEH75AkB9r3svpzERirxN7FezeI6nfNICHmggGT+J8RQr0dh+wbl9uqfh6w7qcXlpHR2MUX3UMuw+3pYlTWkfck4qNr7C73b56lJ0P9Ue+duqLi2vQPK9XRGqxiOmSz47WEWb0eV5icsENAnPp58CyiD5nhzV/eNYPAOdRY4PeH7ZeAvlDncVqia3fW8Bedczyf5xrRE/cNd30RecEUPxbeZzEzZxGX68/p3Zhqo/TwJrLJhjApvBIKQbJaG5mm6j9/O3h+LtwkAeI3Kzt2g+zkHIM8wDpFKg+76ok/nbJ79cSYkd6Xkat3Buz1bZDGt//iAj6wDCRww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1dI/78Vp/ZODP3NFEju0nor/q8o3oNNxlubSza+d0Xo=; b=AXslOQjk5d9n6mGBdBevmQWNLlMtBF5GdrDwhHQiN1P1hdrdOm2pSw/Vgqf89OfdTNgfjxFEvkYuMLoG0yewebvLP9P38iWJlLmKl4t8Smgerd4u3V0yZnCmjPoMaTV8TSWAXOKYmlw4I/kO4X+J50iAOT/zuUPa6fxe5RLlP9utGogh4eHIXQ063J96YO+y8tyhj7FetqRydscxMdGMfePbYBaElS6oZ32U4i/Dt6+bF9M+Gogl7Bgu5lPVlI6121JllaetawPdXA/uU41Lu1KVJR9Psxq9uRzqhcl18QO2N79iFp7WXQSeSuyE9iBCkv4LkVEitUCWMEmgSICcSg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from DM5PR11MB1851.namprd11.prod.outlook.com (2603:10b6:3:114::18) by SA1PR11MB6664.namprd11.prod.outlook.com (2603:10b6:806:258::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.28; Mon, 27 Feb 2023 09:29:53 +0000 Received: from DM5PR11MB1851.namprd11.prod.outlook.com ([fe80::3c23:7638:8d23:670f]) by DM5PR11MB1851.namprd11.prod.outlook.com ([fe80::3c23:7638:8d23:670f%5]) with mapi id 15.20.6134.027; Mon, 27 Feb 2023 09:29:53 +0000 From: "Dooley, Brian" To: Gowrishankar Muthukrishnan , "dev@dpdk.org" CC: Anoob Joseph , "jerinj@marvell.com" , Akhil Goyal Subject: RE: [v1, 05/10] examples/fips_validation: add CCM JSON validation Thread-Topic: [v1, 05/10] examples/fips_validation: add CCM JSON validation Thread-Index: AQHZOjnNdkQNBDwwLUGBpJAfFtZhfq7ip5pQ Date: Mon, 27 Feb 2023 09:29:53 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM5PR11MB1851:EE_|SA1PR11MB6664:EE_ x-ms-office365-filtering-correlation-id: a3cec3ae-c38f-45c5-56ff-08db18a52ea8 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: nE+VYwbUQp7dc66NF7I+knVSr88RckfD2YwsQhtH49FrTKzN6B7c8Ymfg0WnHFoaexLmkOKf9kMnokkZvOOhjPkN4+Gyo+7cWAjiYzqA61LGc8xRHdzKgs6nuMHyfZnL3SStmMvCh2KCsmeif5sXjIJuH81WRBJE39Uc0eFpgAohMynxtlbqbEAVBXiZ46xbiX5K6vaakxri6LGRkrmIvKwEWCBeMlAHQ9nqtdvO0xKCr/W2UOJ+q72ahnk+ZfP54+PaufZYBOAYGyVmzzfUrjwyjlLQYQo7OMN9WsqWv0pwGElaS2GV+k2lI37mPUidc5rROIXhYgRencVuVivsG+hoVdnY8qDPHwKuThC+3ioGXZwWDnz+53Ug8wO97PUu+XgQJnn76DmYoU8L5VlOY+15++nO4wd/bU8+p2pGsl0ioPYfmJoWrrPo7C4aJcjCzKdn7dFiBw1ufk6oryPel29bOXqcMPyYcRSuLxphA4d+6LmfVJTp7x7+m3G1kPuSCBFb2ksmmDWx3i+VfxcV1YSquECeb5FfRmivq4luF0KWvOj36zqQpzchtrqdfgzsVx3MBdY1HA74GTzxA6/LS4DUyyC98/Jk03zUQ7Wgamgpp2nJ3ceeRjwfzJsZzdX9cB0OlyU2X2bgGLta9/5J9kHLXQMXuWPHM1ZEf09A/q/Ku7Nw/kYv1kkEnXUPL2paSK0QQwYx5Jm4ZVSvMpELlQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM5PR11MB1851.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(136003)(346002)(366004)(376002)(396003)(39860400002)(451199018)(110136005)(54906003)(316002)(33656002)(86362001)(55016003)(38100700002)(122000001)(82960400001)(53546011)(6506007)(83380400001)(38070700005)(9686003)(26005)(186003)(5660300002)(71200400001)(2906002)(7696005)(8936002)(52536014)(478600001)(4326008)(41300700001)(8676002)(66476007)(66446008)(64756008)(66946007)(66556008)(76116006); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?G2p0SQxlgaSTDTVpTi+/WVxmLkdYiVVEFIoGrF3s3YWcV8wgzc0FadIfMgbu?= =?us-ascii?Q?Bts9cyANaLwbRq0OjupC07aPzJ0Aie4Hj/KNqZevLYshhL8LCAodC3No1LtK?= =?us-ascii?Q?7g9uUIZIPh6VaJ1JMz2wLGS+K4Hg2G2RreEBBiLzlDvGD/z59Qd6wHHuWw1a?= =?us-ascii?Q?JItUNMmcsWibuvjFIwpBXzQmRmv6eYPsnPUqYAlNn8fNcj4lHuds0Ml+TgVA?= =?us-ascii?Q?CzMXWEduR1YdzYajPH66gskjA9vbcjN4gLNb4R7HkiXtUIDFxbH9xOXWR6Pe?= =?us-ascii?Q?DbXfC0byeUZe3gTQS4v9tRxwjzGI6gAKkcIeI1XnHTRwlWft+VgSU2tvei9y?= =?us-ascii?Q?sJeUA2hIY49UlZqDtTW+m4jACtxFkDXr+4YhDVl6EocR8yS5L6oRKtDomwfD?= =?us-ascii?Q?QWZvHT07MrvVXc1db0/FemB0e+W8KsWEiDl09jn2MhV3eKPAR59XI+VPx1IT?= =?us-ascii?Q?J/wIPWVsxyMpilJZNjrpmgUCPR1uZnAOLMYljIKrRoj/2WJTgs43h3Vr0SiP?= =?us-ascii?Q?TyM8cEVP54u3W2mD0sgKLaJ0i7CTHt79L3utMk6TJRF3NIYnP3cEZodPqdrI?= =?us-ascii?Q?qQVgtetwKt8GTiMn9W+DyzYiLcrNDPrXDhpGdMbhYFc/JwlIitw4I/hOnHTE?= =?us-ascii?Q?a5M4loBlyg2FFBGtl2jRMKmBbu48RVOrqjyEKEIY+pB+10RvmHI6nlnqYlwD?= =?us-ascii?Q?eaa16omby7Dh590Pg3eI2s01E5L/fGaqneLSdI3fqDTmo9P6592jUrOoODBX?= =?us-ascii?Q?l1Ta8dnBwMpMmg9FX3h+iGzvZHfCIqLHPskjBo3LJQCef8dqbAaypxz7S8HE?= =?us-ascii?Q?X8YGe3fi2SNm9SWJCXPD4z8PBAeHayGpk0IDXX05XnvQjBW9zw7mI6EoBehJ?= =?us-ascii?Q?21+83WHRFtztT+RF2F6c5puKQAwM6YzdhKChUy0Rxn+Uqhnx1Q3Js55ed8jI?= =?us-ascii?Q?9SiTHW1RV8ZXYtNLNgPTuLWz7fWBz+NX9dTEvS/H6DiGokEMSu8dAKTKWAcS?= =?us-ascii?Q?XDpURy7Sj2UZwNqqZcHLDlgeZ852RjYqeuq+iBpCt3bDaPjzAA4WVxbFP8sP?= =?us-ascii?Q?FsWv63o2aE+3rQAh+x8//hq73vcRsDNzXDySQtIIny/d0yVMttGxHuBJKK+G?= =?us-ascii?Q?f0rJM0JsoFdHI5yzjhOUwCNAlKf/30+DaqZ6+kAmR0qfZf5xMObE1G6n1Wp0?= =?us-ascii?Q?HYXT3C/7dVBEKYPUMSZa6xKC3NneiBgldNEvJqvsAbp8r0OB53v1sFSgFfuk?= =?us-ascii?Q?eqU+IB3pltXSXbe7tcgy+CdrCPOSulgPxQ2uPg6A9xRWxnDXzaYyJCnFvBFP?= =?us-ascii?Q?ncgs+kCoXZy3lm9/enSGDEwW1V6y+rdVzt7kjkh2Z05n6oqh/qX4u+B92VT9?= =?us-ascii?Q?+fBY6lh4u2QQBKxvyrSt+53QlWsCBQWS8B4FA9KmLt54qbVmbLNxOANbfM6a?= =?us-ascii?Q?+xTxiAhQ+KO0kAw35GUUy90WqLIqClyMjmpE4NxDfhqLJcozRJbuY5nAH0Xy?= =?us-ascii?Q?45GU3EYaxZNuGys5+0RB91iKZEE6TquHxlBS6NvjFNYYKkEMxNFqBMMLkHWN?= =?us-ascii?Q?7fG6QCogtSMpIcLF8ypKLXkyJnN0nQU+snzc6hg0?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM5PR11MB1851.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a3cec3ae-c38f-45c5-56ff-08db18a52ea8 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Feb 2023 09:29:53.4199 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: MVetnDp6OmByM3gsaP4k+jR5w/FZaoSMe+IQvIOhl+Rk5uvzzPOyP1diN7mF4ctQRlMbKi129GsS4k42sImfKA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR11MB6664 X-OriginatorOrg: intel.com 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 > -----Original Message----- > From: Gowrishankar Muthukrishnan > Sent: Monday 6 February 2023 14:46 > To: dev@dpdk.org > Cc: Anoob Joseph ; jerinj@marvell.com; Akhil Goyal > ; Dooley, Brian ; > Gowrishankar Muthukrishnan > Subject: [v1, 05/10] examples/fips_validation: add CCM JSON validation >=20 > Add support in fips_validation to parse CCM JSON vectors. >=20 > 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(+) >=20 > 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 =3D FIPS_TEST_ALGO_AES_GCM; > + else if (strstr(algo_str, "AES-CCM")) > + info.algo =3D FIPS_TEST_ALGO_AES_CCM; > else if (strstr(algo_str, "AES-GMAC")) > info.algo =3D 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); >=20 > +int > +parse_test_ccm_json_init(void); > + > int > parse_test_hmac_json_init(void); >=20 > 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" >=20 > +#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}, > }; >=20 > +#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") =3D=3D 0) > + info.op =3D FIPS_TEST_ENC_AUTH_GEN; > + else if (strcmp(src, "decrypt") =3D=3D 0) > + info.op =3D 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 =3D {0}; > + uint32_t len =3D val->len; > + > + /* CCM aad requires 18 bytes padding before the real content */ > + val->val =3D 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 =3D vec.pt.len; > + > + ret =3D parse_uint8_known_len_hex_str(key, src, val); > + if (ret < 0) > + return ret; > + > + src +=3D val->len * 2; > + > + ret =3D 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[] =3D { > + {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[] =3D { > + {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 =3D json_object_get(json_info.json_test_case, "tcId"); > + json_info.json_write_case =3D json_object(); > + json_object_set(json_info.json_write_case, "tcId", tcId); > + > + if (info.op =3D=3D FIPS_TEST_ENC_AUTH_GEN) { > + json_t *ct; > + > + info.one_line_text[0] =3D '\0'; > + writeback_hex_str("", info.one_line_text, val); > + ct =3D json_string(info.one_line_text); > + json_object_set_new(json_info.json_write_case, > CT_JSON_STR, ct); > + } else { > + if (vec.status =3D=3D RTE_CRYPTO_OP_STATUS_SUCCESS) { > + tmp_val.val =3D val->val; > + tmp_val.len =3D vec.pt.len; > + > + info.one_line_text[0] =3D '\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 =3D ccm_tests_interim_json_vectors; > + info.parse_writeback =3D parse_test_ccm_json_writeback; > + info.callbacks =3D 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 =3D parse_test_gcm_json_init(); > break; > + case FIPS_TEST_ALGO_AES_CCM: > + ret =3D parse_test_ccm_json_init(); > + break; > case FIPS_TEST_ALGO_HMAC: > ret =3D parse_test_hmac_json_init(); > break; > -- > 2.25.1 Acked-by: Brian Dooley