]> git.proxmox.com Git - mirror_edk2.git/blame - SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDriver.c
SecurityPkg: Secure Boot Drivers: Added common header files
[mirror_edk2.git] / SecurityPkg / VariableAuthenticated / SecureBootConfigDxe / SecureBootConfigDriver.c
CommitLineData
beda2356 1/** @file\r
2 The module entry point for SecureBoot configuration module.\r
3\r
b3548d32 4Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>\r
289b714b 5SPDX-License-Identifier: BSD-2-Clause-Patent\r
beda2356 6\r
7**/\r
8\r
9#include "SecureBootConfigImpl.h"\r
10\r
11/**\r
12 The entry point for SecureBoot configuration driver.\r
13\r
14 @param[in] ImageHandle The image handle of the driver.\r
15 @param[in] SystemTable The system table.\r
16\r
17 @retval EFI_ALREADY_STARTED The driver already exists in system.\r
18 @retval EFI_OUT_OF_RESOURCES Fail to execute entry point due to lack of resources.\r
d6b926e7 19 @retval EFI_SUCCESS All the related protocols are installed on the driver.\r
beda2356 20 @retval Others Fail to get the SecureBootEnable variable.\r
21\r
22**/\r
23EFI_STATUS\r
24EFIAPI\r
25SecureBootConfigDriverEntryPoint (\r
c411b485
MK
26 IN EFI_HANDLE ImageHandle,\r
27 IN EFI_SYSTEM_TABLE *SystemTable\r
beda2356 28 )\r
29{\r
c411b485
MK
30 EFI_STATUS Status;\r
31 SECUREBOOT_CONFIG_PRIVATE_DATA *PrivateData;\r
b3548d32 32\r
beda2356 33 //\r
34 // If already started, return.\r
35 //\r
c411b485 36 Status = gBS->OpenProtocol (\r
beda2356 37 ImageHandle,\r
38 &gEfiCallerIdGuid,\r
39 NULL,\r
40 ImageHandle,\r
41 ImageHandle,\r
42 EFI_OPEN_PROTOCOL_TEST_PROTOCOL\r
43 );\r
44 if (!EFI_ERROR (Status)) {\r
45 return EFI_ALREADY_STARTED;\r
46 }\r
b3548d32 47\r
beda2356 48 //\r
49 // Create a private data structure.\r
50 //\r
51 PrivateData = AllocateCopyPool (sizeof (SECUREBOOT_CONFIG_PRIVATE_DATA), &mSecureBootConfigPrivateDateTemplate);\r
52 if (PrivateData == NULL) {\r
53 return EFI_OUT_OF_RESOURCES;\r
54 }\r
b3548d32 55\r
beda2356 56 //\r
57 // Install SecureBoot configuration form\r
58 //\r
59 Status = InstallSecureBootConfigForm (PrivateData);\r
60 if (EFI_ERROR (Status)) {\r
61 goto ErrorExit;\r
62 }\r
63\r
64 //\r
65 // Install private GUID.\r
b3548d32 66 //\r
beda2356 67 Status = gBS->InstallMultipleProtocolInterfaces (\r
68 &ImageHandle,\r
69 &gEfiCallerIdGuid,\r
70 PrivateData,\r
71 NULL\r
72 );\r
73\r
74 if (EFI_ERROR (Status)) {\r
75 goto ErrorExit;\r
76 }\r
77\r
78 return EFI_SUCCESS;\r
79\r
80ErrorExit:\r
81 if (PrivateData != NULL) {\r
82 UninstallSecureBootConfigForm (PrivateData);\r
b3548d32
LG
83 }\r
84\r
beda2356 85 return Status;\r
86}\r
87\r
88/**\r
89 Unload the SecureBoot configuration form.\r
90\r
91 @param[in] ImageHandle The driver's image handle.\r
92\r
93 @retval EFI_SUCCESS The SecureBoot configuration form is unloaded.\r
94 @retval Others Failed to unload the form.\r
95\r
96**/\r
97EFI_STATUS\r
98EFIAPI\r
99SecureBootConfigDriverUnload (\r
100 IN EFI_HANDLE ImageHandle\r
101 )\r
102{\r
c411b485
MK
103 EFI_STATUS Status;\r
104 SECUREBOOT_CONFIG_PRIVATE_DATA *PrivateData;\r
beda2356 105\r
106 Status = gBS->HandleProtocol (\r
107 ImageHandle,\r
108 &gEfiCallerIdGuid,\r
c411b485 109 (VOID **)&PrivateData\r
b3548d32 110 );\r
beda2356 111 if (EFI_ERROR (Status)) {\r
b3548d32 112 return Status;\r
beda2356 113 }\r
b3548d32 114\r
beda2356 115 ASSERT (PrivateData->Signature == SECUREBOOT_CONFIG_PRIVATE_DATA_SIGNATURE);\r
116\r
117 gBS->UninstallMultipleProtocolInterfaces (\r
a629d5b9 118 ImageHandle,\r
beda2356 119 &gEfiCallerIdGuid,\r
120 PrivateData,\r
121 NULL\r
122 );\r
b3548d32 123\r
beda2356 124 UninstallSecureBootConfigForm (PrivateData);\r
125\r
126 return EFI_SUCCESS;\r
127}\r