]> git.proxmox.com Git - mirror_edk2.git/commitdiff
CryptoPkg: add UnitTest for AeadAesGcm.
authorQi Zhang <qi1.zhang@intel.com>
Fri, 23 Sep 2022 06:32:01 +0000 (14:32 +0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Fri, 23 Sep 2022 08:24:42 +0000 (08:24 +0000)
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4036

Signed-off-by: Qi Zhang <qi1.zhang@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Xiaoyu Lu <xiaoyu1.lu@intel.com>
Cc: Guomin Jiang <guomin.jiang@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf
CryptoPkg/Test/UnitTest/Library/BaseCryptLib/AeadAesGcmTests.c [new file with mode: 0644]
CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BaseCryptLibUnitTests.c
CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLib.h
CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibHost.inf
CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibShell.inf

index 63282dc5ab305fe7cc6d3d9c7b819e2bfb169ffc..8a71b40a81f33d1e12f1f2e61e03693cd5950802 100644 (file)
@@ -31,6 +31,7 @@
   Hmac/CryptHmac.c\r
   Kdf/CryptHkdf.c\r
   Cipher/CryptAes.c\r
+  Cipher/CryptAeadAesGcm.c\r
   Pk/CryptRsaBasic.c\r
   Pk/CryptRsaExt.c\r
   Pk/CryptPkcs1Oaep.c\r
diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/AeadAesGcmTests.c b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/AeadAesGcmTests.c
new file mode 100644 (file)
index 0000000..989a4df
--- /dev/null
@@ -0,0 +1,112 @@
+/** @file\r
+  Application for Authenticated Encryption with Associated Data\r
+  (AEAD) Validation.\r
+\r
+Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
+**/\r
+\r
+#include "TestBaseCryptLib.h"\r
+\r
+/* AES-GCM test data from NIST public test vectors */\r
+GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8  gcm_key[] = {\r
+  0xee, 0xbc, 0x1f, 0x57, 0x48, 0x7f, 0x51, 0x92, 0x1c, 0x04, 0x65, 0x66,\r
+  0x5f, 0x8a, 0xe6, 0xd1, 0x65, 0x8b, 0xb2, 0x6d, 0xe6, 0xf8, 0xa0, 0x69,\r
+  0xa3, 0x52, 0x02, 0x93, 0xa5, 0x72, 0x07, 0x8f\r
+};\r
+\r
+GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8  gcm_iv[] = {\r
+  0x99, 0xaa, 0x3e, 0x68, 0xed, 0x81, 0x73, 0xa0, 0xee, 0xd0, 0x66, 0x84\r
+};\r
+\r
+GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8  gcm_pt[] = {\r
+  0xf5, 0x6e, 0x87, 0x05, 0x5b, 0xc3, 0x2d, 0x0e, 0xeb, 0x31, 0xb2, 0xea,\r
+  0xcc, 0x2b, 0xf2, 0xa5\r
+};\r
+\r
+GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8  gcm_aad[] = {\r
+  0x4d, 0x23, 0xc3, 0xce, 0xc3, 0x34, 0xb4, 0x9b, 0xdb, 0x37, 0x0c, 0x43,\r
+  0x7f, 0xec, 0x78, 0xde\r
+};\r
+\r
+GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8  gcm_ct[] = {\r
+  0xf7, 0x26, 0x44, 0x13, 0xa8, 0x4c, 0x0e, 0x7c, 0xd5, 0x36, 0x86, 0x7e,\r
+  0xb9, 0xf2, 0x17, 0x36\r
+};\r
+\r
+GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8  gcm_tag[] = {\r
+  0x67, 0xba, 0x05, 0x10, 0x26, 0x2a, 0xe4, 0x87, 0xd7, 0x37, 0xee, 0x62,\r
+  0x98, 0xf7, 0x7e, 0x0c\r
+};\r
+\r
+UNIT_TEST_STATUS\r
+EFIAPI\r
+TestVerifyAeadAesGcm (\r
+  IN UNIT_TEST_CONTEXT  Context\r
+  )\r
+{\r
+  BOOLEAN  Status;\r
+  UINT8    OutBuffer[1024];\r
+  UINTN    OutBufferSize;\r
+  UINT8    OutTag[1024];\r
+  UINTN    OutTagSize;\r
+\r
+  OutBufferSize = sizeof (OutBuffer);\r
+  OutTagSize    = sizeof (gcm_tag);\r
+  ZeroMem (OutBuffer, sizeof (OutBuffer));\r
+  ZeroMem (OutTag, sizeof (OutTag));\r
+  Status = AeadAesGcmEncrypt (\r
+             gcm_key,\r
+             sizeof (gcm_key),\r
+             gcm_iv,\r
+             sizeof (gcm_iv),\r
+             gcm_aad,\r
+             sizeof (gcm_aad),\r
+             gcm_pt,\r
+             sizeof (gcm_pt),\r
+             OutTag,\r
+             OutTagSize,\r
+             OutBuffer,\r
+             &OutBufferSize\r
+             );\r
+  UT_ASSERT_TRUE (Status);\r
+\r
+  UT_ASSERT_EQUAL (OutBufferSize, sizeof (gcm_ct));\r
+\r
+  UT_ASSERT_MEM_EQUAL (OutBuffer, gcm_ct, sizeof (gcm_ct));\r
+\r
+  UT_ASSERT_MEM_EQUAL (OutTag, gcm_tag, sizeof (gcm_tag));\r
+\r
+  ZeroMem (OutBuffer, sizeof (OutBuffer));\r
+  Status = AeadAesGcmDecrypt (\r
+             gcm_key,\r
+             sizeof (gcm_key),\r
+             gcm_iv,\r
+             sizeof (gcm_iv),\r
+             gcm_aad,\r
+             sizeof (gcm_aad),\r
+             gcm_ct,\r
+             sizeof (gcm_ct),\r
+             gcm_tag,\r
+             sizeof (gcm_tag),\r
+             OutBuffer,\r
+             &OutBufferSize\r
+             );\r
+  UT_ASSERT_TRUE (Status);\r
+\r
+  UT_ASSERT_EQUAL (OutBufferSize, sizeof (gcm_pt));\r
+\r
+  UT_ASSERT_MEM_EQUAL (OutBuffer, gcm_pt, sizeof (gcm_pt));\r
+\r
+  return UNIT_TEST_PASSED;\r
+}\r
+\r
+TEST_DESC  mAeadAesGcmTest[] = {\r
+  //\r
+  // -----Description--------------------------------------Class----------------------Function---------------------------------Pre---------------------Post---------Context\r
+  //\r
+  { "TestVerifyAeadAesGcm()", "CryptoPkg.BaseCryptLib.AeadAesGcm", TestVerifyAeadAesGcm, NULL, NULL, NULL },\r
+};\r
+\r
+UINTN  mAeadAesGcmTestNum = ARRAY_SIZE (mAeadAesGcmTest);\r
index dc81143b4322b7982f2ca84258c849db279f5018..eb8ed9407854316f47b1c984b1f80825a94f1faf 100644 (file)
@@ -26,6 +26,7 @@ SUITE_DESC  mSuiteDesc[] = {
   { "PRNG verify tests",             "CryptoPkg.BaseCryptLib", NULL, NULL, &mPrngTestNum,           mPrngTest           },\r
   { "OAEP encrypt verify tests",     "CryptoPkg.BaseCryptLib", NULL, NULL, &mOaepTestNum,           mOaepTest           },\r
   { "Hkdf extract and expand tests", "CryptoPkg.BaseCryptLib", NULL, NULL, &mHkdfTestNum,           mHkdfTest           },\r
+  { "Aead AES Gcm tests",            "CryptoPkg.BaseCryptLib", NULL, NULL, &mAeadAesGcmTestNum,     mAeadAesGcmTest     },\r
 };\r
 \r
 EFI_STATUS\r
index b3aff8657091067a97a4937000a8e19f08993f8e..58da1ba6c26e43384a7a4338598d11b01de87b45 100644 (file)
@@ -89,6 +89,9 @@ extern TEST_DESC  mRsaPssTest[];
 extern UINTN      mHkdfTestNum;\r
 extern TEST_DESC  mHkdfTest[];\r
 \r
+extern UINTN      mAeadAesGcmTestNum;\r
+extern TEST_DESC  mAeadAesGcmTest[];\r
+\r
 /** Creates a framework you can use */\r
 EFI_STATUS\r
 EFIAPI\r
index e51877bded68e21f70d3e3cddf33774acb31c67c..70c11790e6dc28a82dd406c9625867994298ca66 100644 (file)
@@ -38,6 +38,7 @@
   RsaPssTests.c\r
   ParallelhashTests.c\r
   HkdfTests.c\r
+  AeadAesGcmTests.c\r
 \r
 [Packages]\r
   MdePkg/MdePkg.dec\r
index 81469f48e79a5c3094a803a862574237ac902c82..90f521f500db6aa974df5361b4e6b3707c34a312 100644 (file)
@@ -37,6 +37,7 @@
   OaepEncryptTests.c\r
   RsaPssTests.c\r
   HkdfTests.c\r
+  AeadAesGcmTests.c\r
 \r
 [Packages]\r
   MdePkg/MdePkg.dec\r