## @file
#
#  Produces EFI_CC_MEASUREMENT_PROTOCOL and measure boot environment
#
#
# Copyright (c) 2020 - 2022, Intel Corporation. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = TdTcg2Dxe
  FILE_GUID                      = F062221E-C607-44C2-B0B4-C3886331D351
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = DriverEntry

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = X64
#

[Sources]
  TdTcg2Dxe.c
  MeasureBootPeCoff.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  SecurityPkg/SecurityPkg.dec
  CryptoPkg/CryptoPkg.dec
  OvmfPkg/OvmfPkg.dec

[LibraryClasses]
  MemoryAllocationLib
  BaseLib
  UefiBootServicesTableLib
  HobLib
  UefiDriverEntryPoint
  UefiRuntimeServicesTableLib
  BaseMemoryLib
  DebugLib
  PrintLib
  UefiLib
  HashLib
  PerformanceLib
  ReportStatusCodeLib
  PeCoffLib
  TpmMeasurementLib
  TdxLib

[Guids]
  ## SOMETIMES_CONSUMES     ## Variable:L"SecureBoot"
  ## SOMETIMES_CONSUMES     ## Variable:L"PK"
  ## SOMETIMES_CONSUMES     ## Variable:L"KEK"
  ## SOMETIMES_CONSUMES     ## Variable:L"BootXXXX"
  gEfiGlobalVariableGuid

  ## SOMETIMES_CONSUMES      ## Variable:L"db"
  ## SOMETIMES_CONSUMES      ## Variable:L"dbx"
  gEfiImageSecurityDatabaseGuid

  # gTcgEventEntryHobGuid                              ## SOMETIMES_CONSUMES  ## HOB
  gEfiEventExitBootServicesGuid                      ## CONSUMES            ## Event
  gEventExitBootServicesFailedGuid                   ## SOMETIMES_CONSUMES  ## Event

  gCcEventEntryHobGuid                               ## SOMETIMES_CONSUMES  ## HOB
  gTcg800155PlatformIdEventHobGuid                   ## SOMETIMES_CONSUMES  ## HOB
  gEfiCcFinalEventsTableGuid                         ## PRODUCES

[Protocols]
  gEfiCcMeasurementProtocolGuid                      ## PRODUCES
  gEfiMpServiceProtocolGuid                          ## SOMETIMES_CONSUMES
  gEfiVariableWriteArchProtocolGuid                  ## NOTIFY
  gEfiResetNotificationProtocolGuid                  ## CONSUMES
  gEfiAcpiTableProtocolGuid                          ## NOTIFY

[Pcd]
  gEfiSecurityPkgTokenSpaceGuid.PcdTpmPlatformClass                         ## SOMETIMES_CONSUMES
  gEfiSecurityPkgTokenSpaceGuid.PcdFirmwareDebuggerInitialized              ## SOMETIMES_CONSUMES
  gEfiSecurityPkgTokenSpaceGuid.PcdStatusCodeSubClassTpmDevice              ## SOMETIMES_CONSUMES
  gEfiSecurityPkgTokenSpaceGuid.PcdTcg2HashAlgorithmBitmap                  ## CONSUMES
  gEfiSecurityPkgTokenSpaceGuid.PcdTcg2NumberOfPCRBanks                     ## CONSUMES
  gEfiSecurityPkgTokenSpaceGuid.PcdTcgLogAreaMinLen                         ## CONSUMES
  gEfiSecurityPkgTokenSpaceGuid.PcdTcg2FinalLogAreaLen                      ## CONSUMES
  gUefiOvmfPkgTokenSpaceGuid.PcdCcEventlogAcpiTableLaml                     ## PRODUCES
  gUefiOvmfPkgTokenSpaceGuid.PcdCcEventlogAcpiTableLasa                     ## PRODUCES
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemId                        ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemTableId                   ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemRevision                  ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorId                    ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorRevision              ## CONSUMES

[Depex]
  # According to PcdTpm2AcpiTableRev definition in SecurityPkg.dec
  # This PCD should be configured at DynamicHii or DynamicHiiEx.
  # So, this PCD read operation depends on GetVariable service.
  # Add VariableArch protocol dependency to make sure PCD read works.
  gEfiVariableArchProtocolGuid AND gEfiAcpiTableProtocolGuid
