## @file
#  Provides the capbility 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>
# This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License
# which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#
##

[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

[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
  gEfiFileInfoGuid                              ## 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
  gEfiSimpleFileSystemProtocolGuid              ## SOMETIMES_CONSUMES
  gEfiBlockIoProtocolGuid                       ## SOMETIMES_CONSUMES

[Depex]
  gEfiHiiConfigRoutingProtocolGuid  AND
  gEfiHiiDatabaseProtocolGuid       AND
  gEfiVariableArchProtocolGuid      AND
  gEfiVariableWriteArchProtocolGuid

[UserExtensions.TianoCore."ExtraFiles"]
  SecureBootConfigDxeExtra.uni
