CryptoPkg: BaseCryptLib: Add unit tests (Host and Shell based)
This adds a new INF for BaseCryptLib suitable for host based environments. It adds a host based unit test for BaseCryptLib that can also be built as a shell based Unit Test. In addition, this also adds a UnitTestHostCrtWrapper.c file, which provides some of the functionality not provided by the default host based unit test system that OpenSSL expects. This is used by UnitTestHostBaseCryptLib, a version of the BaseCryptLib meant specifically for host based unit testing. Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Xiaoyu Lu <xiaoyux.lu@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Guomin Jiang <guomin.jiang@intel.com> Signed-off-by: Matthew Carlson <matthewfcarlson@gmail.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
This commit is contained in:
committed by
mergify[bot]
parent
30f0ec8d80
commit
694bfd6ff5
106
CryptoPkg/Test/UnitTest/Library/BaseCryptLib/DhTests.c
Normal file
106
CryptoPkg/Test/UnitTest/Library/BaseCryptLib/DhTests.c
Normal file
@@ -0,0 +1,106 @@
|
||||
/** @file
|
||||
Application for Diffie-Hellman Primitives Validation.
|
||||
|
||||
Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
|
||||
**/
|
||||
|
||||
#include "TestBaseCryptLib.h"
|
||||
|
||||
VOID *mDh1;
|
||||
VOID *mDh2;
|
||||
|
||||
UNIT_TEST_STATUS
|
||||
EFIAPI
|
||||
TestVerifyDhPreReq (
|
||||
UNIT_TEST_CONTEXT Context
|
||||
)
|
||||
{
|
||||
mDh1 = DhNew ();
|
||||
if (mDh1 == NULL) {
|
||||
return UNIT_TEST_ERROR_TEST_FAILED;
|
||||
}
|
||||
|
||||
mDh2 = DhNew ();
|
||||
if (mDh2 == NULL) {
|
||||
return UNIT_TEST_ERROR_TEST_FAILED;
|
||||
}
|
||||
|
||||
return UNIT_TEST_PASSED;
|
||||
}
|
||||
|
||||
VOID
|
||||
EFIAPI
|
||||
TestVerifyDhCleanUp (
|
||||
UNIT_TEST_CONTEXT Context
|
||||
)
|
||||
{
|
||||
if (mDh1 != NULL) {
|
||||
DhFree (mDh1);
|
||||
mDh1 = NULL;
|
||||
}
|
||||
if (mDh2 != NULL) {
|
||||
DhFree (mDh2);
|
||||
mDh2 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
UNIT_TEST_STATUS
|
||||
EFIAPI
|
||||
TestVerifyDhGenerateKey (
|
||||
UNIT_TEST_CONTEXT Context
|
||||
)
|
||||
{
|
||||
UINT8 Prime[64];
|
||||
UINT8 PublicKey1[64];
|
||||
UINTN PublicKey1Length;
|
||||
UINT8 PublicKey2[64];
|
||||
UINTN PublicKey2Length;
|
||||
UINT8 Key1[64];
|
||||
UINTN Key1Length;
|
||||
UINT8 Key2[64];
|
||||
UINTN Key2Length;
|
||||
BOOLEAN Status;
|
||||
|
||||
//
|
||||
// Initialize Key Length
|
||||
//
|
||||
PublicKey1Length = sizeof (PublicKey1);
|
||||
PublicKey2Length = sizeof (PublicKey2);
|
||||
Key1Length = sizeof (Key1);
|
||||
Key2Length = sizeof (Key2);
|
||||
|
||||
Status = DhGenerateParameter (mDh1, 2, 64, Prime);
|
||||
UT_ASSERT_TRUE (Status);
|
||||
|
||||
Status = DhSetParameter (mDh2, 2, 64, Prime);
|
||||
UT_ASSERT_TRUE (Status);
|
||||
|
||||
Status = DhGenerateKey (mDh1, PublicKey1, &PublicKey1Length);
|
||||
UT_ASSERT_TRUE (Status);
|
||||
|
||||
Status = DhGenerateKey (mDh2, PublicKey2, &PublicKey2Length);
|
||||
UT_ASSERT_TRUE (Status);
|
||||
|
||||
Status = DhComputeKey (mDh1, PublicKey2, PublicKey2Length, Key1, &Key1Length);
|
||||
UT_ASSERT_TRUE (Status);
|
||||
|
||||
Status = DhComputeKey (mDh2, PublicKey1, PublicKey1Length, Key2, &Key2Length);
|
||||
UT_ASSERT_TRUE (Status);
|
||||
|
||||
UT_ASSERT_EQUAL (Key1Length, Key2Length);
|
||||
|
||||
UT_ASSERT_MEM_EQUAL (Key1, Key2, Key1Length);
|
||||
|
||||
return UNIT_TEST_PASSED;
|
||||
}
|
||||
|
||||
TEST_DESC mDhTest[] = {
|
||||
//
|
||||
// -----Description--------------------------------Class---------------------Function----------------Pre-----------------Post------------Context
|
||||
//
|
||||
{"TestVerifyDhGenerateKey()", "CryptoPkg.BaseCryptLib.Dh", TestVerifyDhGenerateKey, TestVerifyDhPreReq, TestVerifyDhCleanUp, NULL},
|
||||
};
|
||||
|
||||
UINTN mDhTestNum = ARRAY_SIZE(mDhTest);
|
Reference in New Issue
Block a user