| /** @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); |