#/*++
#
# Copyright (c) 2013 Intel Corporation.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Intel Corporation nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# 
#  Module Name:
#
#    SecureBootHelperLib.inf
#
#  Abstract:
#
#    This library produces the secure boot helper protocol.
#
#--*/

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = SecureBootHelperDxeLib
  FILE_GUID                      = 906F3610-8FDA-4cac-93FC-50E1F5C77812
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = NULL|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
  CONSTRUCTOR                    = SecureBootHelperInitialize

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  CommonHeader.h
  SecureBootHelperLib.c
  SecureBootVariable.h
  SecureBootVariable.c
  SecureBootPeImage.h
  SecureBootPeImage.c
  SecureBootCrypto.h
  SecureBootCrypto.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  CryptoPkg/CryptoPkg.dec
  SecurityPkg/SecurityPkg.dec
  QuarkPlatformPkg/QuarkPlatformPkg.dec

[LibraryClasses]
  UefiDriverEntryPoint
  UefiBootServicesTableLib
  DebugLib
  BaseCryptLib
  SecurityManagementLib
  PlatformSecureLib
  DxeServicesLib

[Protocols]
  gSecureBootHelperProtocolGuid                 ## PRODUCED

[Guids]
  gEfiGlobalVariableGuid
  gEfiCustomModeEnableGuid
  gEfiSecureBootEnableDisableGuid
  gEfiCertPkcs7Guid
  gEfiCertRsa2048Guid                           ## CONSUMES
  gEfiCertX509Guid                              ## CONSUMES
  gEfiCertSha1Guid                              ## CONSUMES
  gEfiCertSha256Guid                            ## CONSUMES
  gEfiCertTypeRsa2048Sha256Guid                 ## CONSUMES
  gEfiImageSecurityDatabaseGuid                 ## CONSUMES

[Pcd]

