]> git.proxmox.com Git - mirror_edk2.git/blame - CryptoPkg/Driver/CryptoPei.c
CryptoPkg: Apply uncrustify changes
[mirror_edk2.git] / CryptoPkg / Driver / CryptoPei.c
CommitLineData
cc1d13c9
MK
1/** @file\r
2 Installs the EDK II Crypto PPI. If this PEIM is dispatched before memory is\r
3 discovered, the RegisterForShadow() feature is used to reload this PEIM into\r
4 memory after memory is discovered.\r
5\r
6 Copyright (C) Microsoft Corporation. All rights reserved.\r
7 SPDX-License-Identifier: BSD-2-Clause-Patent\r
8\r
9**/\r
10\r
11#include <PiPei.h>\r
12#include <Library/PeiServicesLib.h>\r
13#include <Library/DebugLib.h>\r
14#include <Ppi/Crypto.h>\r
15\r
16extern CONST EDKII_CRYPTO_PROTOCOL mEdkiiCrypto;\r
17\r
18CONST EFI_PEI_PPI_DESCRIPTOR mEdkiiCryptoPpiList = {\r
19 (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
20 &gEdkiiCryptoPpiGuid,\r
7c342378 21 (EDKII_CRYPTO_PPI *)&mEdkiiCrypto\r
cc1d13c9
MK
22};\r
23\r
24/**\r
25Entry to CryptoPeiEntry.\r
26\r
27@param FileHandle The image handle.\r
28@param PeiServices The PEI services table.\r
29\r
30@retval Status From internal routine or boot object, should not fail\r
31**/\r
32EFI_STATUS\r
33EFIAPI\r
34CryptoPeiEntry (\r
35 IN EFI_PEI_FILE_HANDLE FileHandle,\r
36 IN CONST EFI_PEI_SERVICES **PeiServices\r
37 )\r
38{\r
39 EFI_STATUS Status;\r
40 VOID *MemoryDiscoveredPpi;\r
41 EDKII_CRYPTO_PPI *EdkiiCryptoPpi;\r
42 EFI_PEI_PPI_DESCRIPTOR *EdkiiCryptoPpiDescriptor;\r
43\r
44 //\r
45 // Not all Open SSL services support XIP due to use of global variables.\r
46 // Use gEfiPeiMemoryDiscoveredPpiGuid to detect Pre-Mem and Post-Mem and\r
47 // always shadow this module in memory in Post-Mem.\r
48 //\r
49 Status = PeiServicesLocatePpi (\r
7c342378
MK
50 &gEfiPeiMemoryDiscoveredPpiGuid,\r
51 0,\r
52 NULL,\r
53 (VOID **)&MemoryDiscoveredPpi\r
54 );\r
cc1d13c9
MK
55 if (Status == EFI_NOT_FOUND) {\r
56 //\r
57 // CryptoPei is dispatched before gEfiPeiMemoryDiscoveredPpiGuid\r
58 //\r
59 Status = PeiServicesRegisterForShadow (FileHandle);\r
60 ASSERT_EFI_ERROR (Status);\r
61 if (!EFI_ERROR (Status)) {\r
62 //\r
63 // First CryptoPpi installation. CryptoPei could come from memory or flash\r
64 // it will be re-installed after gEfiPeiMemoryDiscoveredPpiGuid\r
65 //\r
66 DEBUG ((DEBUG_INFO, "CryptoPeiEntry: Install Pre-Memory Crypto PPI\n"));\r
67 Status = PeiServicesInstallPpi (&mEdkiiCryptoPpiList);\r
68 ASSERT_EFI_ERROR (Status);\r
69 }\r
70 } else if (Status == EFI_SUCCESS) {\r
71 //\r
72 // CryptoPei is dispatched after gEfiPeiMemoryDiscoveredPpiGuid\r
73 //\r
74 Status = PeiServicesLocatePpi (\r
75 &gEdkiiCryptoPpiGuid,\r
76 0,\r
77 &EdkiiCryptoPpiDescriptor,\r
78 (VOID **)&EdkiiCryptoPpi\r
79 );\r
80 if (!EFI_ERROR (Status)) {\r
81 //\r
82 // CryptoPei was also dispatched before gEfiPeiMemoryDiscoveredPpiGuid\r
83 //\r
7c342378 84 DEBUG ((DEBUG_INFO, "CryptoPeiEntry: ReInstall Post-Memmory Crypto PPI\n"));\r
cc1d13c9
MK
85 Status = PeiServicesReInstallPpi (\r
86 EdkiiCryptoPpiDescriptor,\r
87 &mEdkiiCryptoPpiList\r
88 );\r
89 ASSERT_EFI_ERROR (Status);\r
90 } else {\r
91 DEBUG ((DEBUG_INFO, "CryptoPeiEntry: Install Post-Memmory Crypto PPI\n"));\r
92 Status = PeiServicesInstallPpi (&mEdkiiCryptoPpiList);\r
93 }\r
94 } else {\r
95 ASSERT_EFI_ERROR (Status);\r
96 }\r
97\r
98 return Status;\r
99}\r