From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mx.groups.io with SMTP id smtpd.web08.4792.1663914726099861986 for ; Thu, 22 Sep 2022 23:32:14 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=MlZ6T1c+; spf=pass (domain: intel.com, ip: 134.134.136.126, mailfrom: qi1.zhang@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1663914734; x=1695450734; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=4xZOnNWtmSBBFzl4g8w0r724D4GH56R39FlbAug6G64=; b=MlZ6T1c+05NAy+43Y2gF3ioP2SEvzpL4lFH/aFOcKejXSDTiIze+K9ZE PTQyTorRwUfJ3IL2mUORN/IQyqCuASEZtmKodDUtBO7QGn3YP9QCYK5jP 5+6pB1EP9AD5TkahdxSVWkM4zkVfJdUlRMLfpdlCNrzPIg4DRIYXbqTg/ tzsh0ZU2xhYQDglnF9JiHdugsVBwfFHe8maukqGRWyZiX9MRJ7PfTAhMZ zejsaihGyt1QtQdQmU+MGwmrJWjZJhzpA6gn3AVOp2dJUXvN39ewwq1Ug isF7uXD5cNBaQRHgx7s970JgGvJFr83/11fSL0fLigqAxeWhB8NwAxdja w==; X-IronPort-AV: E=McAfee;i="6500,9779,10478"; a="283619078" X-IronPort-AV: E=Sophos;i="5.93,337,1654585200"; d="scan'208";a="283619078" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Sep 2022 23:32:14 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,337,1654585200"; d="scan'208";a="571272387" Received: from shwdesssddpdqi.ccr.corp.intel.com ([10.239.157.129]) by orsmga003.jf.intel.com with ESMTP; 22 Sep 2022 23:32:12 -0700 From: "Qi Zhang" To: devel@edk2.groups.io Cc: Qi Zhang , Jiewen Yao , Jian J Wang , Xiaoyu Lu , Guomin Jiang Subject: [PATCH V2 4/4] CryptoPkg: add UnitTest for AeadAesGcm. Date: Fri, 23 Sep 2022 14:32:01 +0800 Message-Id: <29568e7024182754771fccabeb039847bdfa273c.1663914644.git.qi1.zhang@intel.com> X-Mailer: git-send-email 2.26.2.windows.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D4036 Signed-off-by: Qi Zhang Cc: Jiewen Yao Cc: Jian J Wang Cc: Xiaoyu Lu Cc: Guomin Jiang Reviewed-by: Jiewen Yao --- .../BaseCryptLib/UnitTestHostBaseCryptLib.inf | 1 + .../Library/BaseCryptLib/AeadAesGcmTests.c | 112 ++++++++++++++++++ .../BaseCryptLib/BaseCryptLibUnitTests.c | 1 + .../Library/BaseCryptLib/TestBaseCryptLib.h | 3 + .../BaseCryptLib/TestBaseCryptLibHost.inf | 1 + .../BaseCryptLib/TestBaseCryptLibShell.inf | 1 + 6 files changed, 119 insertions(+) create mode 100644 CryptoPkg/Test/UnitTest/Library/BaseCryptLib/AeadAesGcm= Tests.c diff --git a/CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf b/= CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf index 63282dc5ab..8a71b40a81 100644 --- a/CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf +++ b/CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf @@ -31,6 +31,7 @@ Hmac/CryptHmac.c=0D Kdf/CryptHkdf.c=0D Cipher/CryptAes.c=0D + Cipher/CryptAeadAesGcm.c=0D Pk/CryptRsaBasic.c=0D Pk/CryptRsaExt.c=0D Pk/CryptPkcs1Oaep.c=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/AeadAesGcmTests.c= b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/AeadAesGcmTests.c new file mode 100644 index 0000000000..989a4df788 --- /dev/null +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/AeadAesGcmTests.c @@ -0,0 +1,112 @@ +/** @file=0D + Application for Authenticated Encryption with Associated Data=0D + (AEAD) Validation.=0D +=0D +Copyright (c) 2022, Intel Corporation. All rights reserved.
=0D +SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D +**/=0D +=0D +#include "TestBaseCryptLib.h"=0D +=0D +/* AES-GCM test data from NIST public test vectors */=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 gcm_key[] =3D {=0D + 0xee, 0xbc, 0x1f, 0x57, 0x48, 0x7f, 0x51, 0x92, 0x1c, 0x04, 0x65, 0x66,= =0D + 0x5f, 0x8a, 0xe6, 0xd1, 0x65, 0x8b, 0xb2, 0x6d, 0xe6, 0xf8, 0xa0, 0x69,= =0D + 0xa3, 0x52, 0x02, 0x93, 0xa5, 0x72, 0x07, 0x8f=0D +};=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 gcm_iv[] =3D {=0D + 0x99, 0xaa, 0x3e, 0x68, 0xed, 0x81, 0x73, 0xa0, 0xee, 0xd0, 0x66, 0x84=0D +};=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 gcm_pt[] =3D {=0D + 0xf5, 0x6e, 0x87, 0x05, 0x5b, 0xc3, 0x2d, 0x0e, 0xeb, 0x31, 0xb2, 0xea,= =0D + 0xcc, 0x2b, 0xf2, 0xa5=0D +};=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 gcm_aad[] =3D {=0D + 0x4d, 0x23, 0xc3, 0xce, 0xc3, 0x34, 0xb4, 0x9b, 0xdb, 0x37, 0x0c, 0x43,= =0D + 0x7f, 0xec, 0x78, 0xde=0D +};=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 gcm_ct[] =3D {=0D + 0xf7, 0x26, 0x44, 0x13, 0xa8, 0x4c, 0x0e, 0x7c, 0xd5, 0x36, 0x86, 0x7e,= =0D + 0xb9, 0xf2, 0x17, 0x36=0D +};=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 gcm_tag[] =3D {=0D + 0x67, 0xba, 0x05, 0x10, 0x26, 0x2a, 0xe4, 0x87, 0xd7, 0x37, 0xee, 0x62,= =0D + 0x98, 0xf7, 0x7e, 0x0c=0D +};=0D +=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyAeadAesGcm (=0D + IN UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + BOOLEAN Status;=0D + UINT8 OutBuffer[1024];=0D + UINTN OutBufferSize;=0D + UINT8 OutTag[1024];=0D + UINTN OutTagSize;=0D +=0D + OutBufferSize =3D sizeof (OutBuffer);=0D + OutTagSize =3D sizeof (gcm_tag);=0D + ZeroMem (OutBuffer, sizeof (OutBuffer));=0D + ZeroMem (OutTag, sizeof (OutTag));=0D + Status =3D AeadAesGcmEncrypt (=0D + gcm_key,=0D + sizeof (gcm_key),=0D + gcm_iv,=0D + sizeof (gcm_iv),=0D + gcm_aad,=0D + sizeof (gcm_aad),=0D + gcm_pt,=0D + sizeof (gcm_pt),=0D + OutTag,=0D + OutTagSize,=0D + OutBuffer,=0D + &OutBufferSize=0D + );=0D + UT_ASSERT_TRUE (Status);=0D +=0D + UT_ASSERT_EQUAL (OutBufferSize, sizeof (gcm_ct));=0D +=0D + UT_ASSERT_MEM_EQUAL (OutBuffer, gcm_ct, sizeof (gcm_ct));=0D +=0D + UT_ASSERT_MEM_EQUAL (OutTag, gcm_tag, sizeof (gcm_tag));=0D +=0D + ZeroMem (OutBuffer, sizeof (OutBuffer));=0D + Status =3D AeadAesGcmDecrypt (=0D + gcm_key,=0D + sizeof (gcm_key),=0D + gcm_iv,=0D + sizeof (gcm_iv),=0D + gcm_aad,=0D + sizeof (gcm_aad),=0D + gcm_ct,=0D + sizeof (gcm_ct),=0D + gcm_tag,=0D + sizeof (gcm_tag),=0D + OutBuffer,=0D + &OutBufferSize=0D + );=0D + UT_ASSERT_TRUE (Status);=0D +=0D + UT_ASSERT_EQUAL (OutBufferSize, sizeof (gcm_pt));=0D +=0D + UT_ASSERT_MEM_EQUAL (OutBuffer, gcm_pt, sizeof (gcm_pt));=0D +=0D + return UNIT_TEST_PASSED;=0D +}=0D +=0D +TEST_DESC mAeadAesGcmTest[] =3D {=0D + //=0D + // -----Description--------------------------------------Class----------= ------------Function---------------------------------Pre-------------------= --Post---------Context=0D + //=0D + { "TestVerifyAeadAesGcm()", "CryptoPkg.BaseCryptLib.AeadAesGcm", TestVer= ifyAeadAesGcm, NULL, NULL, NULL },=0D +};=0D +=0D +UINTN mAeadAesGcmTestNum =3D ARRAY_SIZE (mAeadAesGcmTest);=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BaseCryptLibUnitT= ests.c b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BaseCryptLibUnitTests= .c index dc81143b43..eb8ed94078 100644 --- a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BaseCryptLibUnitTests.c +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BaseCryptLibUnitTests.c @@ -26,6 +26,7 @@ SUITE_DESC mSuiteDesc[] =3D { { "PRNG verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL,= &mPrngTestNum, mPrngTest },=0D { "OAEP encrypt verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL,= &mOaepTestNum, mOaepTest },=0D { "Hkdf extract and expand tests", "CryptoPkg.BaseCryptLib", NULL, NULL,= &mHkdfTestNum, mHkdfTest },=0D + { "Aead AES Gcm tests", "CryptoPkg.BaseCryptLib", NULL, NULL,= &mAeadAesGcmTestNum, mAeadAesGcmTest },=0D };=0D =0D EFI_STATUS=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLib.= h b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLib.h index b3aff86570..58da1ba6c2 100644 --- a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLib.h +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLib.h @@ -89,6 +89,9 @@ extern TEST_DESC mRsaPssTest[]; extern UINTN mHkdfTestNum;=0D extern TEST_DESC mHkdfTest[];=0D =0D +extern UINTN mAeadAesGcmTestNum;=0D +extern TEST_DESC mAeadAesGcmTest[];=0D +=0D /** Creates a framework you can use */=0D EFI_STATUS=0D EFIAPI=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibH= ost.inf b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibHost= .inf index e51877bded..70c11790e6 100644 --- a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibHost.inf +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibHost.inf @@ -38,6 +38,7 @@ RsaPssTests.c=0D ParallelhashTests.c=0D HkdfTests.c=0D + AeadAesGcmTests.c=0D =0D [Packages]=0D MdePkg/MdePkg.dec=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibS= hell.inf b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibShe= ll.inf index 81469f48e7..90f521f500 100644 --- a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibShell.inf +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibShell.inf @@ -37,6 +37,7 @@ OaepEncryptTests.c=0D RsaPssTests.c=0D HkdfTests.c=0D + AeadAesGcmTests.c=0D =0D [Packages]=0D MdePkg/MdePkg.dec=0D --=20 2.26.2.windows.1