From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by mx.groups.io with SMTP id smtpd.web11.68027.1661762578443490177 for ; Mon, 29 Aug 2022 01:43:06 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=HFKfiX2W; spf=pass (domain: intel.com, ip: 134.134.136.31, 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=1661762586; x=1693298586; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=rOgZeaNE9IMBUspCHekESZ5DJM0SUy2xPjKr3AvV+/4=; b=HFKfiX2WEJWH3lDRgYbQqkmcqQIe9UUhQ8oY3RoUt8z2BGpIF8li7GbI PtAaMd7j0dFYngnQ6FiZVyvgQRcvVPunnd5gjEBgzdjDieGrBwmCJuk4O ECf7yEwm1jdFXOOw835bjZpz1FNVp2Uyn2Xa/HNc8rQ6uiuGj3028Y5sN g4046WrIC669qvbu4x+eY5sIzLAyq/jTUvaV5yayXJCVMT0lDK2JDn/ub 55KnIHj0nIk8BnnITij6ZXsh+4FPniZETnV0lc+5ViUElRrgP0ZicJgcl LyWsbsfB7f/BsK+ii54SbwSUDpaQbccRah0Ly9C3lQsoEAR+eccUu2pOh A==; X-IronPort-AV: E=McAfee;i="6500,9779,10453"; a="356560030" X-IronPort-AV: E=Sophos;i="5.93,272,1654585200"; d="scan'208";a="356560030" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Aug 2022 01:43:06 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,272,1654585200"; d="scan'208";a="588089270" Received: from shwdesssddpdqi.ccr.corp.intel.com ([10.239.157.129]) by orsmga006.jf.intel.com with ESMTP; 29 Aug 2022 01:43:04 -0700 From: "Qi Zhang" To: devel@edk2.groups.io Cc: Qi Zhang , Jiewen Yao , Jian J Wang , Xiaoyu Lu , Guomin Jiang Subject: [PATCH 4/4] CryptoPkg: add UnitTest for AeadAesGcm. Date: Mon, 29 Aug 2022 16:42:54 +0800 Message-Id: <20220829084254.8624-5-qi1.zhang@intel.com> X-Mailer: git-send-email 2.26.2.windows.1 In-Reply-To: <20220829084254.8624-1-qi1.zhang@intel.com> References: <20220829084254.8624-1-qi1.zhang@intel.com> 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 --- .../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 11ff1c6931..49c75ecccd 100644 --- a/CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf +++ b/CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf @@ -31,6 +31,7 @@ Hmac/CryptHmacSha256.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 3c57aead1e..8cec308157 100644 --- a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BaseCryptLibUnitTests.c +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BaseCryptLibUnitTests.c @@ -25,6 +25,7 @@ SUITE_DESC mSuiteDesc[] =3D { { "DH verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, &= mDhTestNum, mDhTest },=0D { "PRNG verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, &= mPrngTestNum, mPrngTest },=0D { "OAEP encrypt verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, &= mOaepTestNum, mOaepTest },=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 a6b3482742..ca763177a7 100644 --- a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLib.h +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLib.h @@ -86,6 +86,9 @@ extern TEST_DESC mOaepTest[]; extern UINTN mRsaPssTestNum;=0D extern TEST_DESC mRsaPssTest[];=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 399db596c2..cf08b6553d 100644 --- a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibHost.inf +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibHost.inf @@ -37,6 +37,7 @@ OaepEncryptTests.c=0D RsaPssTests.c=0D ParallelhashTests.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 ca789aa6ad..dc81b78357 100644 --- a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibShell.inf +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibShell.inf @@ -36,6 +36,7 @@ Pkcs7EkuTests.c=0D OaepEncryptTests.c=0D RsaPssTests.c=0D + AeadAesGcmTests.c=0D =0D [Packages]=0D MdePkg/MdePkg.dec=0D --=20 2.26.2.windows.1