## @file
#  Provides hash service by registered hash handler
#
#  This library is BaseCrypto router. It will redirect hash request to each individual
#  hash handler registered, such as SHA1, SHA256. Platform can use PcdTpm2HashMask to 
#  mask some hash engines.
#
# Copyright (c) 2013 - 2017, 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                      = HashLibBaseCryptoRouterPei
  MODULE_UNI_FILE                = HashLibBaseCryptoRouterPei.uni
  FILE_GUID                      = DDCBCFBA-8EEB-488a-96D6-097831A6E50B
  MODULE_TYPE                    = PEIM
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = HashLib|PEIM
  CONSTRUCTOR                    = HashLibBaseCryptoRouterPeiConstructor

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF
#

[Sources]
  HashLibBaseCryptoRouterCommon.h
  HashLibBaseCryptoRouterCommon.c
  HashLibBaseCryptoRouterPei.c

[Packages]
  MdePkg/MdePkg.dec
  SecurityPkg/SecurityPkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  BaseLib
  BaseMemoryLib
  DebugLib
  Tpm2CommandLib
  MemoryAllocationLib
  PcdLib
  HobLib

[Guids]
  ## CONSUMES   ## GUID
  gZeroGuid

[Pcd]
  gEfiSecurityPkgTokenSpaceGuid.PcdTpm2HashMask             ## CONSUMES
  ## SOMETIMES_CONSUMES
  ## SOMETIMES_PRODUCES
  gEfiSecurityPkgTokenSpaceGuid.PcdTcg2HashAlgorithmBitmap

