## @file
#  Dxe Crc32 Guided Section Extract library.
#
#  This library doesn't produce any library class. The constructor function uses 
#  ExtractGuidedSectionLib service to register CRC32 guided section handler
#  that parses CRC32 encapsulation section and extracts raw data.
#
#  It uses UEFI boot service CalculateCrc32 to authenticate 32 bit CRC value.
#
# Copyright (c) 2006 - 2014, 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                      = DxeCrc32GuidedSectionExtractLib
  MODULE_UNI_FILE                = DxeCrc32GuidedSectionExtractLib.uni
  FILE_GUID                      = 387A2490-81FC-4E7C-8E0A-3E58C30FCD0B
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = NULL|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER

  CONSTRUCTOR                    = DxeCrc32GuidedSectionExtractLibConstructor

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  DxeCrc32GuidedSectionExtractLib.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  ExtractGuidedSectionLib
  UefiBootServicesTableLib
  DebugLib
  BaseMemoryLib

[Guids]
  gEfiCrc32GuidedSectionExtractionGuid             ## PRODUCES ## UNDEFINED

[Protocols]
  gEfiSecurityPolicyProtocolGuid                   ## SOMETIMES_CONSUMES # Set platform override AUTH status if exist
