## @file
#  Provides helper function for initialization of Secure Boot
#  keys and databases.
#
#  Copyright (c) 2021, ARM Ltd. All rights reserved.<BR>
#  Copyright (c) 2021, Semihalf All rights reserved.<BR>
#  Copyright (c) Microsoft Corporation.
#
#  SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = SecureBootVariableLib
  MODULE_UNI_FILE                = SecureBootVariableLib.uni
  FILE_GUID                      = D4FFF5CA-6D8E-4DBD-8A4B-7C7CEBD97F6F
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = SecureBootVariableLib|DXE_DRIVER DXE_RUNTIME_DRIVER UEFI_APPLICATION

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 AARCH64
#

[Sources]
  SecureBootVariableLib.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  SecurityPkg/SecurityPkg.dec

[LibraryClasses]
  BaseLib
  BaseMemoryLib
  DebugLib
  MemoryAllocationLib
  PlatformPKProtectionLib
  UefiLib
  UefiRuntimeServicesTableLib

[Guids]
  ## CONSUMES            ## Variable:L"SetupMode"
  ## PRODUCES            ## Variable:L"SetupMode"
  ## CONSUMES            ## Variable:L"SecureBoot"
  ## PRODUCES            ## Variable:L"SecureBoot"
  ## PRODUCES            ## Variable:L"PK"
  ## PRODUCES            ## Variable:L"KEK"
  ## CONSUMES            ## Variable:L"PKDefault"
  ## CONSUMES            ## Variable:L"KEKDefault"
  ## CONSUMES            ## Variable:L"dbDefault"
  ## CONSUMES            ## Variable:L"dbxDefault"
  ## CONSUMES            ## Variable:L"dbtDefault"
  gEfiGlobalVariableGuid

  ## SOMETIMES_CONSUMES  ## Variable:L"DB"
  ## SOMETIMES_CONSUMES  ## Variable:L"DBX"
  ## SOMETIMES_CONSUMES  ## Variable:L"DBT"
  gEfiImageSecurityDatabaseGuid

  ## CONSUMES            ## Variable:L"SecureBootEnable"
  ## PRODUCES            ## Variable:L"SecureBootEnable"
  gEfiSecureBootEnableDisableGuid

  ## CONSUMES            ## Variable:L"CustomMode"
  ## PRODUCES            ## Variable:L"CustomMode"
  gEfiCustomModeEnableGuid

  gEfiCertX509Guid               ## CONSUMES
  gEfiCertPkcs7Guid              ## CONSUMES
