Skip to content

Commit 51e2c18

Browse files
poloaegis83mergify[bot]
authored andcommitted
CryptoPkg/BaseCryptLibUnitTest: Separate MbedTls UnitTest Library.
Separate Unit test functions for MbedTls. BaseCryptLibMbedTls does not support all Crypto services So deprecate below function for MbedTls Unit test: TestVerifyEKUsWith3CertsInSignature() TestVerifyEKUsWith2CertsInSignature() TestNoEKUsInSignature() TestVerifyRsaCertPkcs1SignVerify TestVerifyPkcs7SignVerifyNonSelfIssued() TestVerifyDhGenerateKey() Pkcs1v2Decrypt Pkcs1v2EncryptDecrypt RsaOaepEncrypt (Interface) RsaOaepEncrypt (NoSeed) RsaOaepEncrypt (Seeded) RsaOaepDecrypt RsaOaepEncryptDecrypt RsaOaepEncryptPkcs1v2Decrypt Pkcs1v2EncryptRsaOaepDecrypt RsaOaepEncrypt (MdDefaultMgf1Default) RsaOaepDecrypt (MdDefaultMgf1Default) RsaOaepEncryptDecrypt (MdDefaultMgf1Default) RsaOaepEncrypt (MdSha1Bgf1Sha1 RsaOaepDecrypt (MdSha1Bgf1Sha1) RsaOaepEncryptDecrypt (MdSha1Bgf1Sha1) RsaOaepEncrypt (MdSha256Bgf1Sha256) RsaOaepDecrypt (MdSha256Bgf1Sha256) RsaOaepEncryptDecrypt (MdSha256Bgf1Sha256) TestVerifyBn() TestVerifyEcKey() TestPkcs7Attached() TestPkcs7Detached() TestVerifyPkcs7ContentData() REF: tianocore/edk2#11605 Signed-off-by: Longhaox Lee <[email protected]>
1 parent 3e55bab commit 51e2c18

File tree

9 files changed

+203
-1
lines changed

9 files changed

+203
-1
lines changed

CryptoPkg/Test/CryptoPkgHostUnitTest.dsc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
!endif
5858

5959
!if $(CRYPTO_TEST_TYPE) IN "MBEDTLS"
60-
CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibHost.inf {
60+
CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibHostMbedTls.inf {
6161
<LibraryClasses>
6262
BaseCryptLib|CryptoPkg/Library/BaseCryptLibMbedTls/UnitTestHostBaseCryptLib.inf
6363
OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibSm3.inf
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/** @file
2+
This is defines the tests that will run on BaseCryptLib
3+
4+
Copyright (c) Microsoft Corporation.<BR>
5+
SPDX-License-Identifier: BSD-2-Clause-Patent
6+
7+
**/
8+
#include "TestBaseCryptLib.h"
9+
10+
SUITE_DESC mSuiteDesc[] = {
11+
//
12+
// Title--------------------------Package-------------------Sup--Tdn----TestNum------------TestDesc
13+
//
14+
{ "EKU verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, &mPkcs7EkuTestMbedTlsNum, mPkcs7EkuTestMbedTls },
15+
{ "HASH verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, &mHashTestNum, mHashTest },
16+
{ "HMAC verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, &mHmacTestNum, mHmacTest },
17+
{ "BlockCipher verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, &mBlockCipherTestNum, mBlockCipherTest },
18+
{ "RSA verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, &mRsaTestMbedTlsNum, mRsaTestMbedTls },
19+
{ "RSA PSS verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, &mRsaPssTestNum, mRsaPssTest },
20+
{ "RSACert verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, &mRsaCertTestNum, mRsaCertTest },
21+
{ "PKCS7 verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, &mPkcs7TestMbedTlsNum, mPkcs7TestMbedTls },
22+
{ "PKCS5 verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, &mPkcs5TestNum, mPkcs5Test },
23+
{ "Authenticode verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, &mAuthenticodeTestNum, mAuthenticodeTest },
24+
{ "ImageTimestamp verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, &mImageTimestampTestNum, mImageTimestampTest },
25+
{ "PRNG verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, &mPrngTestNum, mPrngTest },
26+
{ "OAEP encrypt verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, &mOaepTestMbedTlsNum, mOaepTestMbedTls },
27+
{ "Hkdf extract and expand tests", "CryptoPkg.BaseCryptLib", NULL, NULL, &mHkdfTestNum, mHkdfTest },
28+
{ "Aead AES Gcm tests", "CryptoPkg.BaseCryptLib", NULL, NULL, &mAeadAesGcmTestNum, mAeadAesGcmTest },
29+
{ "X509 Verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, &mX509TestNum, mX509Test },
30+
{ "PKCS7 Attach Content tests", "CryptoPkg.BaseCryptLib", NULL, NULL, &mPkcs7ContentTestMbedTlsNum, mPkcs7ContentTestMbedTls },
31+
};
32+
33+
EFI_STATUS
34+
EFIAPI
35+
CreateUnitTest (
36+
IN CHAR8 *UnitTestName,
37+
IN CHAR8 *UnitTestVersion,
38+
IN OUT UNIT_TEST_FRAMEWORK_HANDLE *Framework
39+
)
40+
{
41+
EFI_STATUS Status;
42+
UINTN SuiteIndex;
43+
UINTN TestIndex;
44+
45+
if ((Framework == NULL) || (UnitTestVersion == NULL) || (UnitTestName == NULL)) {
46+
return EFI_INVALID_PARAMETER;
47+
}
48+
49+
Status = EFI_SUCCESS;
50+
//
51+
// Start setting up the test framework for running the tests.
52+
//
53+
Status = InitUnitTestFramework (Framework, UnitTestName, gEfiCallerBaseName, UnitTestVersion);
54+
if (EFI_ERROR (Status)) {
55+
DEBUG ((DEBUG_ERROR, "Failed in InitUnitTestFramework. Status = %r\n", Status));
56+
goto EXIT;
57+
}
58+
59+
for (SuiteIndex = 0; SuiteIndex < ARRAY_SIZE (mSuiteDesc); SuiteIndex++) {
60+
UNIT_TEST_SUITE_HANDLE Suite = NULL;
61+
Status = CreateUnitTestSuite (&Suite, *Framework, mSuiteDesc[SuiteIndex].Title, mSuiteDesc[SuiteIndex].Package, mSuiteDesc[SuiteIndex].Sup, mSuiteDesc[SuiteIndex].Tdn);
62+
if (EFI_ERROR (Status)) {
63+
Status = EFI_OUT_OF_RESOURCES;
64+
goto EXIT;
65+
}
66+
67+
for (TestIndex = 0; TestIndex < *mSuiteDesc[SuiteIndex].TestNum; TestIndex++) {
68+
AddTestCase (Suite, (mSuiteDesc[SuiteIndex].TestDesc + TestIndex)->Description, (mSuiteDesc[SuiteIndex].TestDesc + TestIndex)->ClassName, (mSuiteDesc[SuiteIndex].TestDesc + TestIndex)->Func, (mSuiteDesc[SuiteIndex].TestDesc + TestIndex)->PreReq, (mSuiteDesc[SuiteIndex].TestDesc + TestIndex)->CleanUp, (mSuiteDesc[SuiteIndex].TestDesc + TestIndex)->Context);
69+
}
70+
}
71+
72+
EXIT:
73+
return Status;
74+
}

CryptoPkg/Test/UnitTest/Library/BaseCryptLib/OaepEncryptTests.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -920,3 +920,15 @@ TEST_DESC mOaepTest[] = {
920920
};
921921

922922
UINTN mOaepTestNum = ARRAY_SIZE (mOaepTest);
923+
924+
TEST_DESC mOaepTestMbedTls[] = {
925+
//
926+
// -----Description--------------------------------------Class----------------------Function-----------------Pre---Post--Context
927+
//
928+
// Pkcs1v2Encrypt
929+
{ "Pkcs1v2Encrypt (Interface)", "CryptoPkg.BaseCryptLib.Pkcs1v2Encrypt.Interface", TestVerifyPkcs1v2EncryptInterface, NULL, NULL, &mTestVerifyPkcs1v2Msg1230 },
930+
{ "Pkcs1v2Encrypt (NoSeed)", "CryptoPkg.BaseCryptLib.Pkcs1v2Encrypt.NoSeed", TestVerifyEncrypt, NULL, NULL, &mTestVerifyPkcs1v2Msg1230 },
931+
{ "Pkcs1v2Encrypt (Seeded)", "CryptoPkg.BaseCryptLib.Pkcs1v2Encrypt.Seeded", TestVerifyEncrypt, NULL, NULL, &mTestVerifyPkcs1v2Msg1230PrngSeed },
932+
};
933+
934+
UINTN mOaepTestMbedTlsNum = ARRAY_SIZE (mOaepTestMbedTls);

CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs7AttachedContentTest.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,3 +247,13 @@ TEST_DESC mPkcs7ContentTest[] = {
247247
};
248248

249249
UINTN mPkcs7ContentTestNum = ARRAY_SIZE (mPkcs7ContentTest);
250+
251+
TEST_DESC mPkcs7ContentTestMbedTls[] = {
252+
//
253+
// -----Description--------------------------------Class----------------------------Function------------------------------Pre---Post--Context
254+
//
255+
{ "TestWithInvalidPkcs7()", "CryptoPkg.BaseCryptLib.TestWithInvalidPkcs7", TestWithInvalidPkcs7, NULL, NULL, NULL },
256+
{ "TestWithInvalidParameters()", "CryptoPkg.BaseCryptLib.TestWithInvalidParameters", TestWithInvalidParameters, NULL, NULL, NULL },
257+
};
258+
259+
UINTN mPkcs7ContentTestMbedTlsNum = ARRAY_SIZE (mPkcs7ContentTestMbedTls);

CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs7EkuTests.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,3 +541,18 @@ TEST_DESC mPkcs7EkuTest[] = {
541541
};
542542

543543
UINTN mPkcs7EkuTestNum = ARRAY_SIZE (mPkcs7EkuTest);
544+
545+
TEST_DESC mPkcs7EkuTestMbedTls[] = {
546+
//
547+
// -----Description--------------------------------Class----------------------------Function------------------------------Pre---Post--Context
548+
//
549+
{ "TestVerifyEKUsWith1CertInSignature()", "CryptoPkg.BaseCryptLib.Eku", TestVerifyEKUsWith1CertInSignature, NULL, NULL, NULL },
550+
{ "TestVerifyEKUsWithMultipleEKUsInCert()", "CryptoPkg.BaseCryptLib.Eku", TestVerifyEKUsWithMultipleEKUsInCert, NULL, NULL, NULL },
551+
{ "TestEkusNotPresentInSignature()", "CryptoPkg.BaseCryptLib.Eku", TestEkusNotPresentInSignature, NULL, NULL, NULL },
552+
{ "TestProductId10001PresentInSignature()", "CryptoPkg.BaseCryptLib.Eku", TestProductId10001PresentInSignature, NULL, NULL, NULL },
553+
{ "TestOnlyOneEkuInListRequired()", "CryptoPkg.BaseCryptLib.Eku", TestOnlyOneEkuInListRequired, NULL, NULL, NULL },
554+
{ "TestInvalidParameters()", "CryptoPkg.BaseCryptLib.Eku", TestInvalidParameters, NULL, NULL, NULL },
555+
{ "TestEKUSubsetSupersetFails()", "CryptoPkg.BaseCryptLib.Eku", TestEKUSubsetSupersetFails, NULL, NULL, NULL },
556+
};
557+
558+
UINTN mPkcs7EkuTestMbedTlsNum = ARRAY_SIZE (mPkcs7EkuTestMbedTls);

CryptoPkg/Test/UnitTest/Library/BaseCryptLib/RsaPkcs7Tests.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -668,3 +668,12 @@ TEST_DESC mPkcs7Test[] = {
668668
};
669669

670670
UINTN mPkcs7TestNum = ARRAY_SIZE (mPkcs7Test);
671+
672+
TEST_DESC mPkcs7TestMbedTls[] = {
673+
//
674+
// -----Description--------------------------------------Class----------------------Function-----------------Pre---Post--Context
675+
//
676+
{ "TestVerifyPkcs7SignVerify()", "CryptoPkg.BaseCryptLib.Pkcs7", TestVerifyPkcs7SignVerify, NULL, NULL, NULL },
677+
};
678+
679+
UINTN mPkcs7TestMbedTlsNum = ARRAY_SIZE (mPkcs7TestMbedTls);

CryptoPkg/Test/UnitTest/Library/BaseCryptLib/RsaTests.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,3 +340,13 @@ TEST_DESC mRsaTest[] = {
340340
};
341341

342342
UINTN mRsaTestNum = ARRAY_SIZE (mRsaTest);
343+
344+
TEST_DESC mRsaTestMbedTls[] = {
345+
//
346+
// -----Description--------------------------------------Class----------------------Function---------------------------------Pre---------------------Post---------Context
347+
//
348+
{ "TestVerifyRsaSetGetKeyComponents()", "CryptoPkg.BaseCryptLib.Rsa", TestVerifyRsaSetGetKeyComponents, TestVerifyRsaPreReq, TestVerifyRsaCleanUp, NULL },
349+
{ "TestVerifyRsaPkcs1SignVerify()", "CryptoPkg.BaseCryptLib.Rsa", TestVerifyRsaPkcs1SignVerify, TestVerifyRsaPreReq, TestVerifyRsaCleanUp, NULL },
350+
};
351+
352+
UINTN mRsaTestMbedTlsNum = ARRAY_SIZE (mRsaTestMbedTls);

CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLib.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,24 @@ extern TEST_DESC mX509Test[];
104104
extern UINTN mPkcs7ContentTestNum;
105105
extern TEST_DESC mPkcs7ContentTest[];
106106

107+
//
108+
// Test Case only for MbedTls.
109+
//
110+
extern UINTN mPkcs7EkuTestMbedTlsNum;
111+
extern TEST_DESC mPkcs7EkuTestMbedTls[];
112+
113+
extern UINTN mRsaTestMbedTlsNum;
114+
extern TEST_DESC mRsaTestMbedTls[];
115+
116+
extern UINTN mPkcs7TestMbedTlsNum;
117+
extern TEST_DESC mPkcs7TestMbedTls[];
118+
119+
extern UINTN mOaepTestMbedTlsNum;
120+
extern TEST_DESC mOaepTestMbedTls[];
121+
122+
extern UINTN mPkcs7ContentTestMbedTlsNum;
123+
extern TEST_DESC mPkcs7ContentTestMbedTls[];
124+
107125
/** Creates a framework you can use */
108126
EFI_STATUS
109127
EFIAPI
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
## @file
2+
# Host-based UnitTest for BaseCryptLibMbedTls
3+
#
4+
# Copyright (c) 2025, Intel Corporation. All rights reserved.<BR>
5+
# SPDX-License-Identifier: BSD-2-Clause-Patent
6+
##
7+
8+
[Defines]
9+
INF_VERSION = 0x00010005
10+
BASE_NAME = BaseCryptLibUnitTestHost
11+
FILE_GUID = ab0bc736-2552-4a3c-a2c5-eb106b8a75d1
12+
MODULE_TYPE = HOST_APPLICATION
13+
VERSION_STRING = 1.0
14+
15+
#
16+
# The following information is for reference only and not required by the build tools.
17+
#
18+
# VALID_ARCHITECTURES = IA32 X64
19+
#
20+
21+
[Sources]
22+
UnitTestMain.c
23+
UnitTestMainHost.c
24+
BaseCryptLibUnitTestsMbedTls.c
25+
TestBaseCryptLib.h
26+
HashTests.c
27+
HmacTests.c
28+
BlockCipherTests.c
29+
RsaTests.c
30+
RsaPkcs7Tests.c
31+
Pkcs5Pbkdf2Tests.c
32+
AuthenticodeTests.c
33+
TSTests.c
34+
RandTests.c
35+
Pkcs7EkuTests.c
36+
Pkcs7AttachedContentTest.c
37+
OaepEncryptTests.c
38+
RsaPssTests.c
39+
ParallelhashTests.c
40+
HkdfTests.c
41+
AeadAesGcmTests.c
42+
X509Tests.c
43+
44+
[Packages]
45+
MdePkg/MdePkg.dec
46+
CryptoPkg/CryptoPkg.dec
47+
48+
[LibraryClasses]
49+
BaseLib
50+
DebugLib
51+
BaseCryptLib
52+
UnitTestLib
53+
MmServicesTableLib
54+
SynchronizationLib

0 commit comments

Comments
 (0)