## @file
#  Cryptographic Library Instance for DXE_RUNTIME_DRIVER.
#
#  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: SHA-384 Digest functions, SHA-512 Digest functions,
#  HMAC-SHA256 functions, AES functions, RSA external
#  functions, PKCS#7 SignedData sign functions, Diffie-Hellman functions, and
#  authenticode signature verification functions are not supported in this instance.
#
#  Copyright (c) 2009 - 2020, Intel Corporation. All rights reserved.<BR>
#  Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
#  SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = RuntimeCryptLib
  MODULE_UNI_FILE                = RuntimeCryptLib.uni
  FILE_GUID                      = 78189cc0-727d-46a4-84ea-f7dd860de64a
  MODULE_TYPE                    = DXE_RUNTIME_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = BaseCryptLib|DXE_RUNTIME_DRIVER
  CONSTRUCTOR                    = RuntimeCryptLibConstructor

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
#

[Sources]
  InternalCryptLib.h
  Hash/CryptMd5.c
  Hash/CryptSha1.c
  Hash/CryptSha256.c
  Hash/CryptSm3.c
  Hash/CryptSha512Null.c
  Hmac/CryptHmacSha256.c
  Kdf/CryptHkdf.c
  Cipher/CryptAes.c
  Pk/CryptRsaBasic.c
  Pk/CryptRsaExtNull.c
  Pk/CryptPkcs1OaepNull.c
  Pk/CryptPkcs5Pbkdf2Null.c
  Pk/CryptPkcs7SignNull.c
  Pk/CryptPkcs7VerifyCommon.c
  Pk/CryptPkcs7VerifyRuntime.c
  Pk/CryptPkcs7VerifyEkuRuntime.c
  Pk/CryptDhNull.c
  Pk/CryptX509.c
  Pk/CryptAuthenticodeNull.c
  Pk/CryptTsNull.c
  Pem/CryptPem.c

  SysCall/CrtWrapper.c
  SysCall/TimerWrapper.c
  SysCall/RuntimeMemAllocation.c

[Sources.Ia32]
  Rand/CryptRandTsc.c

[Sources.X64]
  Rand/CryptRandTsc.c

[Sources.ARM]
  Rand/CryptRand.c

[Sources.AARCH64]
  Rand/CryptRand.c

[Sources.RISCV64]
  Rand/CryptRand.c

[Packages]
  MdePkg/MdePkg.dec
  CryptoPkg/CryptoPkg.dec

[LibraryClasses]
  BaseLib
  BaseMemoryLib
  UefiBootServicesTableLib
  UefiRuntimeServicesTableLib
  DebugLib
  OpensslLib
  IntrinsicLib
  PrintLib

#
# 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
  #
  MSFT:*_*_*_CC_FLAGS = /wd4090

  # -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

  GCC:*_CLANG35_*_CC_FLAGS = -std=c99
  GCC:*_CLANG38_*_CC_FLAGS = -std=c99
  GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=incompatible-pointer-types

  XCODE:*_*_*_CC_FLAGS = -std=c99
