## @file
#  Cryptographic Library Instance based on Runtime Crypt Protocol.
#  This instance will be only used by the Authenticated Variable driver for IPF.
#
#  Note: MD4/MD5/SHA1 Digest functions, HMAC-MD5 functions, HMAC-SHA1 functions,
#  AES/TDES/ARC4 functions, RSA external functions, PKCS#7 SignedData sign/verify
#  functions, Diffie-Hellman functions, X.509 certificate handler functions,
#  authenticode signature verification functions, PEM handler functions,
#  pseudorandom number generator functions, and Sha256Duplicate() are not supported
#  in this instance.
#
#  Copyright (c) 2010 - 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                      = BaseCryptLibRuntimeCryptProtocol
  MODULE_UNI_FILE                = BaseCryptLibRuntimeCryptProtocol.uni
  FILE_GUID                      = BBB31581-855A-44D7-A550-8A585D9B2DE9
  MODULE_TYPE                    = DXE_RUNTIME_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = BaseCryptLib|DXE_RUNTIME_DRIVER DXE_SAL_DRIVER
  CONSTRUCTOR                    = RuntimeDxeIpfCryptLibConstructor
  DESTRUCTOR                     = RuntimeDxeIpfCryptLibDestructor
#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IPF
#

[Sources]
  RuntimeDxeIpfCryptLib.c
  InternalCryptLib.h
  Hash/CryptMd4Null.c
  Hash/CryptMd5Null.c
  Hash/CryptSha1Null.c
  Hmac/CryptHmacMd5Null.c
  Hmac/CryptHmacSha1Null.c
  Cipher/CryptAesNull.c
  Cipher/CryptTdesNull.c
  Cipher/CryptArc4Null.c
  Pk/CryptRsaExtNull.c
  Pk/CryptPkcs7SignNull.c
  Pk/CryptPkcs7VerifyNull.c
  Pk/CryptDhNull.c
  Pk/CryptX509Null.c
  Pk/CryptAuthenticodeNull.c
  Pem/CryptPemNull.c
  Rand/CryptRandNull.c

[Packages]
  MdePkg/MdePkg.dec
  CryptoPkg/CryptoPkg.dec

[LibraryClasses]
  BaseLib
  DebugLib
  UefiBootServicesTableLib
  UefiRuntimeLib

[Guids]
  gEfiEventVirtualAddressChangeGuid      ## CONSUMES ## Event

[Protocols]
  gEfiRuntimeCryptProtocolGuid           ## CONSUMES

[Depex]
  gEfiRuntimeCryptProtocolGuid
