blob: 29e892a1514c61f900e33cdfca03df8bf15eadfb [file] [log] [blame]
/** @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[512];
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, sizeof (Prime), Prime);
UT_ASSERT_TRUE (Status);
Status = DhSetParameter (mDh2, 2, sizeof (Prime), 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);