| /** @file | |
| This driver init default Secure Boot variables | |
| Copyright (c) 2021, ARM Ltd. All rights reserved.<BR> | |
| Copyright (c) 2021, Semihalf All rights reserved.<BR> | |
| Copyright (c) 2021, Ampere Computing LLC. All rights reserved.<BR> | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #include <Guid/AuthenticatedVariableFormat.h> | |
| #include <Guid/ImageAuthentication.h> | |
| #include <Library/BaseLib.h> | |
| #include <Library/BaseMemoryLib.h> | |
| #include <Library/DebugLib.h> | |
| #include <Library/MemoryAllocationLib.h> | |
| #include <Library/UefiBootServicesTableLib.h> | |
| #include <Library/UefiRuntimeServicesTableLib.h> | |
| #include <UefiSecureBoot.h> | |
| #include <Library/SecureBootVariableLib.h> | |
| #include <Library/SecureBootVariableProvisionLib.h> | |
| /** | |
| The entry point for SecureBootDefaultKeys driver. | |
| @param[in] ImageHandle The image handle of the driver. | |
| @param[in] SystemTable The system table. | |
| @retval EFI_SUCCESS The secure default keys are initialized successfully. | |
| @retval EFI_UNSUPPORTED One of the secure default keys already exists. | |
| @retval EFI_NOT_FOUND One of the PK, KEK, or DB default keys is not found. | |
| @retval Others Fail to initialize the secure default keys. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| SecureBootDefaultKeysEntryPoint ( | |
| IN EFI_HANDLE ImageHandle, | |
| IN EFI_SYSTEM_TABLE *SystemTable | |
| ) | |
| { | |
| EFI_STATUS Status; | |
| Status = SecureBootInitPKDefault (); | |
| if (EFI_ERROR (Status)) { | |
| DEBUG ((DEBUG_ERROR, "%a: Cannot initialize PKDefault: %r\n", __func__, Status)); | |
| return Status; | |
| } | |
| Status = SecureBootInitKEKDefault (); | |
| if (EFI_ERROR (Status)) { | |
| DEBUG ((DEBUG_ERROR, "%a: Cannot initialize KEKDefault: %r\n", __func__, Status)); | |
| return Status; | |
| } | |
| Status = SecureBootInitDbDefault (); | |
| if (EFI_ERROR (Status)) { | |
| DEBUG ((DEBUG_ERROR, "%a: Cannot initialize dbDefault: %r\n", __func__, Status)); | |
| return Status; | |
| } | |
| Status = SecureBootInitDbtDefault (); | |
| if (Status == EFI_NOT_FOUND) { | |
| DEBUG ((DEBUG_INFO, "%a: dbtDefault not initialized\n", __func__)); | |
| } else if (EFI_ERROR (Status)) { | |
| DEBUG ((DEBUG_ERROR, "%a: Cannot initialize dbtDefault: %r\n", __func__, Status)); | |
| return Status; | |
| } | |
| Status = SecureBootInitDbxDefault (); | |
| if (Status == EFI_NOT_FOUND) { | |
| DEBUG ((DEBUG_INFO, "%a: dbxDefault not initialized\n", __func__)); | |
| } else if (EFI_ERROR (Status)) { | |
| DEBUG ((DEBUG_ERROR, "%a: Cannot initialize dbxDefault: %r\n", __func__, Status)); | |
| return Status; | |
| } | |
| return EFI_SUCCESS; | |
| } |