## @file
#  Cryptographic Library Instance for PEIM.
#
#  Caution: This module requires additional review when modified.
#  This library will have external input - signature.
#  This external input must be validated carefully to avoid security issues such as
#  buffer overflow or integer overflow.
#
#  Note: MD4 Digest functions, SHA-384 Digest functions, SHA-512 Digest functions,
#  HMAC-MD5 functions, HMAC-SHA1/SHA256 functions, AES/TDES/ARC4 functions, RSA external
#  functions, PKCS#7 SignedData sign functions, Diffie-Hellman functions, X.509 
#  certificate handler functions, authenticode signature verification functions, 
#  PEM handler functions, and pseudorandom number generator functions are not 
#  supported in this instance.
#
#  Copyright (c) 2010 - 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                      = PeiCryptLib
  MODULE_UNI_FILE                = PeiCryptLib.uni
  FILE_GUID                      = 9a2a4375-194c-4e97-9f67-547ec98d96ca
  MODULE_TYPE                    = PEIM
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = BaseCryptLib|PEIM PEI_CORE

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64
#

[Sources]
  Hash/CryptMd4Null.c
  Hash/CryptMd5.c
  Hash/CryptSha1.c
  Hash/CryptSha256.c
  Hash/CryptSha512Null.c
  Hmac/CryptHmacMd5Null.c
  Hmac/CryptHmacSha1Null.c
  Hmac/CryptHmacSha256Null.c
  Cipher/CryptAesNull.c
  Cipher/CryptTdesNull.c
  Cipher/CryptArc4Null.c

  Pk/CryptRsaBasic.c
  Pk/CryptRsaExtNull.c
  Pk/CryptPkcs5Pbkdf2Null.c
  Pk/CryptPkcs7SignNull.c
  Pk/CryptPkcs7Verify.c

  Pk/CryptDhNull.c
  Pk/CryptX509Null.c
  Pk/CryptAuthenticodeNull.c
  Pk/CryptTsNull.c
  Pem/CryptPemNull.c

  Rand/CryptRandNull.c

  SysCall/CrtWrapper.c
  SysCall/ConstantTimeClock.c
  SysCall/BaseMemAllocation.c

[Packages]
  MdePkg/MdePkg.dec
  CryptoPkg/CryptoPkg.dec

[LibraryClasses]
  BaseLib
  BaseMemoryLib
  MemoryAllocationLib
  DebugLib
  OpensslLib
  IntrinsicLib

#
# Remove these [BuildOptions] after this library is cleaned up
#
[BuildOptions]
  #
  # suppress the following warnings so we do not break the build with warnings-as-errors:
  # C4090: 'function' : different 'const' qualifiers
  # C4718: 'function call' : recursive call has no side effects, deleting
  #
  MSFT:*_*_*_CC_FLAGS = /wd4090 /wd4718

  GCC:*_GCC44_IA32_CC_FLAGS = "-D__cdecl=__attribute__((cdecl))" "-D__declspec(t)=__attribute__((t))"

  # -JCryptoPkg/Include : To disable the use of the system includes provided by RVCT
  # --diag_remark=1     : Reduce severity of "#1-D: last line of file ends without a newline"
  RVCT:*_*_ARM_CC_FLAGS = -JCryptoPkg/Include --diag_remark=1
