]> git.proxmox.com Git - mirror_edk2.git/blame - CryptoPkg/Test/UnitTest/Library/BaseCryptLib/DhTests.c
CryptoPkg: BaseCryptLib: Add unit tests (Host and Shell based)
[mirror_edk2.git] / CryptoPkg / Test / UnitTest / Library / BaseCryptLib / DhTests.c
CommitLineData
694bfd6f
MC
1/** @file\r
2 Application for Diffie-Hellman Primitives Validation.\r
3\r
4Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>\r
5SPDX-License-Identifier: BSD-2-Clause-Patent\r
6\r
7**/\r
8\r
9#include "TestBaseCryptLib.h"\r
10\r
11VOID *mDh1;\r
12VOID *mDh2;\r
13\r
14UNIT_TEST_STATUS\r
15EFIAPI\r
16TestVerifyDhPreReq (\r
17 UNIT_TEST_CONTEXT Context\r
18 )\r
19{\r
20 mDh1 = DhNew ();\r
21 if (mDh1 == NULL) {\r
22 return UNIT_TEST_ERROR_TEST_FAILED;\r
23 }\r
24\r
25 mDh2 = DhNew ();\r
26 if (mDh2 == NULL) {\r
27 return UNIT_TEST_ERROR_TEST_FAILED;\r
28 }\r
29\r
30 return UNIT_TEST_PASSED;\r
31}\r
32\r
33VOID\r
34EFIAPI\r
35TestVerifyDhCleanUp (\r
36 UNIT_TEST_CONTEXT Context\r
37 )\r
38{\r
39 if (mDh1 != NULL) {\r
40 DhFree (mDh1);\r
41 mDh1 = NULL;\r
42 }\r
43 if (mDh2 != NULL) {\r
44 DhFree (mDh2);\r
45 mDh2 = NULL;\r
46 }\r
47}\r
48\r
49UNIT_TEST_STATUS\r
50EFIAPI\r
51TestVerifyDhGenerateKey (\r
52 UNIT_TEST_CONTEXT Context\r
53 )\r
54{\r
55 UINT8 Prime[64];\r
56 UINT8 PublicKey1[64];\r
57 UINTN PublicKey1Length;\r
58 UINT8 PublicKey2[64];\r
59 UINTN PublicKey2Length;\r
60 UINT8 Key1[64];\r
61 UINTN Key1Length;\r
62 UINT8 Key2[64];\r
63 UINTN Key2Length;\r
64 BOOLEAN Status;\r
65\r
66 //\r
67 // Initialize Key Length\r
68 //\r
69 PublicKey1Length = sizeof (PublicKey1);\r
70 PublicKey2Length = sizeof (PublicKey2);\r
71 Key1Length = sizeof (Key1);\r
72 Key2Length = sizeof (Key2);\r
73\r
74 Status = DhGenerateParameter (mDh1, 2, 64, Prime);\r
75 UT_ASSERT_TRUE (Status);\r
76\r
77 Status = DhSetParameter (mDh2, 2, 64, Prime);\r
78 UT_ASSERT_TRUE (Status);\r
79\r
80 Status = DhGenerateKey (mDh1, PublicKey1, &PublicKey1Length);\r
81 UT_ASSERT_TRUE (Status);\r
82\r
83 Status = DhGenerateKey (mDh2, PublicKey2, &PublicKey2Length);\r
84 UT_ASSERT_TRUE (Status);\r
85\r
86 Status = DhComputeKey (mDh1, PublicKey2, PublicKey2Length, Key1, &Key1Length);\r
87 UT_ASSERT_TRUE (Status);\r
88\r
89 Status = DhComputeKey (mDh2, PublicKey1, PublicKey1Length, Key2, &Key2Length);\r
90 UT_ASSERT_TRUE (Status);\r
91\r
92 UT_ASSERT_EQUAL (Key1Length, Key2Length);\r
93\r
94 UT_ASSERT_MEM_EQUAL (Key1, Key2, Key1Length);\r
95\r
96 return UNIT_TEST_PASSED;\r
97}\r
98\r
99TEST_DESC mDhTest[] = {\r
100 //\r
101 // -----Description--------------------------------Class---------------------Function----------------Pre-----------------Post------------Context\r
102 //\r
103 {"TestVerifyDhGenerateKey()", "CryptoPkg.BaseCryptLib.Dh", TestVerifyDhGenerateKey, TestVerifyDhPreReq, TestVerifyDhCleanUp, NULL},\r
104};\r
105\r
106UINTN mDhTestNum = ARRAY_SIZE(mDhTest);\r