## @file
#  Provides the capability to configure secure boot in a setup browser
#  By this module, user may change the content of DB, DBX, PK and KEK.
#
# Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = SecureBootConfigDxe
  MODULE_UNI_FILE                = SecureBootConfigDxe.uni
  FILE_GUID                      = F0E6A44F-7195-41c3-AC64-54F202CD0A21
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = SecureBootConfigDriverEntryPoint
  UNLOAD_IMAGE                   = SecureBootConfigDriverUnload

#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#

[Sources]
  SecureBootConfigDriver.c
  SecureBootConfigImpl.c
  SecureBootConfigFileExplorer.c
  SecureBootConfigDevicePath.c
  SecureBootConfigMisc.c
  SecureBootConfigImpl.h
  SecureBootConfig.vfr
  SecureBootConfigStrings.uni
  SecureBootConfigNvData.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  SecurityPkg/SecurityPkg.dec
  CryptoPkg/CryptoPkg.dec

[LibraryClasses]
  BaseLib
  BaseMemoryLib
  BaseCryptLib
  MemoryAllocationLib
  UefiLib
  UefiBootServicesTableLib
  UefiRuntimeServicesTableLib
  UefiDriverEntryPoint
  UefiHiiServicesLib
  DebugLib
  HiiLib
  PlatformSecureLib
  DevicePathLib
  FileExplorerLib
  PeCoffLib
  SecureBootVariableLib
  SecureBootVariableProvisionLib

[Guids]
  ## SOMETIMES_CONSUMES      ## Variable:L"CustomMode"
  ## SOMETIMES_PRODUCES      ## Variable:L"CustomMode"
  gEfiCustomModeEnableGuid

  ## SOMETIMES_CONSUMES      ## Variable:L"SecureBootEnable"
  ## SOMETIMES_PRODUCES      ## Variable:L"SecureBootEnable"
  gEfiSecureBootEnableDisableGuid

  ## SOMETIMES_CONSUMES      ## GUID            # Unique ID for the type of the signature.
  ## SOMETIMES_PRODUCES      ## GUID            # Unique ID for the type of the signature.
  gEfiCertRsa2048Guid

  ## SOMETIMES_CONSUMES      ## GUID            # Unique ID for the type of the signature.
  ## SOMETIMES_PRODUCES      ## GUID            # Unique ID for the type of the signature.
  gEfiCertX509Guid

  ## SOMETIMES_CONSUMES      ## GUID            # Unique ID for the type of the signature.
  ## SOMETIMES_PRODUCES      ## GUID            # Unique ID for the type of the signature.
  gEfiCertSha1Guid

  ## SOMETIMES_CONSUMES      ## GUID            # Unique ID for the type of the signature.
  ## SOMETIMES_PRODUCES      ## GUID            # Unique ID for the type of the signature.
  gEfiCertSha256Guid

  ## SOMETIMES_CONSUMES      ## Variable:L"db"
  ## SOMETIMES_PRODUCES      ## Variable:L"db"
  ## SOMETIMES_CONSUMES      ## Variable:L"dbx"
  ## SOMETIMES_PRODUCES      ## Variable:L"dbx"
  gEfiImageSecurityDatabaseGuid

  ## SOMETIMES_CONSUMES      ## Variable:L"SetupMode"
  ## SOMETIMES_PRODUCES      ## Variable:L"PK"
  ## SOMETIMES_CONSUMES      ## Variable:L"KEK"
  ## SOMETIMES_PRODUCES      ## Variable:L"KEK"
  ## SOMETIMES_CONSUMES      ## Variable:L"SecureBoot"
  gEfiGlobalVariableGuid

  gEfiIfrTianoGuid                              ## PRODUCES            ## GUID       # HII opcode
  ## PRODUCES                ## HII
  ## CONSUMES                ## HII
  gSecureBootConfigFormSetGuid
  gEfiCertPkcs7Guid                             ## SOMETIMES_PRODUCES  ## GUID  # Unique ID for the type of the certificate.
  gEfiCertTypeRsa2048Sha256Guid                 ## SOMETIMES_CONSUMES  ## GUID  # Unique ID for the type of the certificate.
  gEfiFileSystemVolumeLabelInfoIdGuid           ## SOMETIMES_CONSUMES  ## GUID  # Indicate the information type

  gEfiCertX509Sha256Guid                        ## SOMETIMES_PRODUCES  ## GUID  # Unique ID for the type of the certificate.
  gEfiCertX509Sha384Guid                        ## SOMETIMES_PRODUCES  ## GUID  # Unique ID for the type of the certificate.
  gEfiCertX509Sha512Guid                        ## SOMETIMES_PRODUCES  ## GUID  # Unique ID for the type of the certificate.

[Protocols]
  gEfiHiiConfigAccessProtocolGuid               ## PRODUCES
  gEfiDevicePathProtocolGuid                    ## PRODUCES
  gEfiHiiPopupProtocolGuid

[Depex]
  gEfiHiiConfigRoutingProtocolGuid  AND
  gEfiHiiDatabaseProtocolGuid       AND
  gEfiVariableArchProtocolGuid      AND
  gEfiVariableWriteArchProtocolGuid

[UserExtensions.TianoCore."ExtraFiles"]
  SecureBootConfigDxeExtra.uni
