CryptoPkg: Add new API to retrieve commonName of X.509 certificate
[mirror_edk2.git] / CryptoPkg / Application / Cryptest / RandVerify.c
1 /** @file  \r
2   Application for Pseudorandom Number Generator Validation.\r
3 \r
4 Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>\r
5 This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution.  The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9 \r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12 \r
13 **/\r
14 \r
15 #include "Cryptest.h"\r
16 \r
17 #define  RANDOM_NUMBER_SIZE  256\r
18 \r
19 CONST  UINT8  SeedString[] = "This is the random seed for PRNG verification.";\r
20 \r
21 UINT8  PreviousRandomBuffer[RANDOM_NUMBER_SIZE] = { 0x0 };\r
22 \r
23 UINT8  RandomBuffer[RANDOM_NUMBER_SIZE] = { 0x0 };\r
24 \r
25 /**\r
26   Validate UEFI-OpenSSL pseudorandom number generator interfaces.\r
27 \r
28   @retval  EFI_SUCCESS  Validation succeeded.\r
29   @retval  EFI_ABORTED  Validation failed.\r
30 \r
31 **/\r
32 EFI_STATUS\r
33 ValidateCryptPrng (\r
34   VOID\r
35   )\r
36 {\r
37   UINTN    Index;\r
38   BOOLEAN  Status;\r
39 \r
40   Print (L" \nUEFI-OpenSSL PRNG Engine Testing:\n");\r
41 \r
42   Print (L"- Random Generation...");\r
43 \r
44   Status = RandomSeed (SeedString, sizeof (SeedString));\r
45   if (!Status) {\r
46     Print (L"[Fail]");\r
47     return EFI_ABORTED;\r
48   }\r
49 \r
50   for (Index = 0; Index < 10; Index ++) {\r
51     Status = RandomBytes (RandomBuffer, RANDOM_NUMBER_SIZE);\r
52     if (!Status) {\r
53       Print (L"[Fail]");\r
54       return EFI_ABORTED;\r
55     }\r
56 \r
57     if (CompareMem (PreviousRandomBuffer, RandomBuffer, RANDOM_NUMBER_SIZE) == 0) {\r
58       Print (L"[Fail]");\r
59       return EFI_ABORTED;\r
60     }\r
61 \r
62     CopyMem (PreviousRandomBuffer, RandomBuffer, RANDOM_NUMBER_SIZE);\r
63   }\r
64 \r
65   Print (L"[Pass]\n");\r
66 \r
67   return EFI_SUCCESS;\r
68 \r
69 }\r