## @file
#  Package for cryptography modules.
#
#  This Package provides cryptographic-related libraries for UEFI security modules.
#  It also provides a test application to test libraries.
#
#  Copyright (c) 2009 - 2020, Intel Corporation. All rights reserved.<BR>
#  SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  DEC_SPECIFICATION              = 0x00010005
  PACKAGE_NAME                   = CryptoPkg
  PACKAGE_UNI_FILE               = CryptoPkg.uni
  PACKAGE_GUID                   = 36470E80-36F2-4ba0-8CC8-937C7D9FF888
  PACKAGE_VERSION                = 0.98

[Includes]
  Include

[Includes.Common.Private]
  Private
  Library/Include
  Library/OpensslLib/openssl/include

[LibraryClasses]
  ##  @libraryclass  Provides basic library functions for cryptographic primitives.
  ##
  BaseCryptLib|Include/Library/BaseCryptLib.h

  ##  @libraryclass  Provides TLS library functions for EFI TLS protocol.
  ##
  TlsLib|Include/Library/TlsLib.h

  ##  @libraryclass  Provides Unified API for different hash implementations.
  #
  HashApiLib|Include/Library/HashApiLib.h

[Protocols]
  ## EDK II Crypto DXE protocol
  # 2C2275C9-3A7B-426F-BE54-2D22BD9D1092
  gEdkiiCryptoProtocolGuid =  { 0x2C2275C9, 0x3A7B, 0x426F, { 0xBE, 0x54, 0x2D, 0x22, 0xBD, 0x9D, 0x10, 0x92 }}

  ## EDK II Crypto SMM protocol
  # F46B2EB2-E0D7-4C96-A3B1-CB7C572EB300
  gEdkiiSmmCryptoProtocolGuid =  { 0xF46B2EB2, 0xE0D7, 0x4C96, { 0xA3, 0xB1, 0xc, 0x61, 0xbb, 0x24, 0x5c, 0x42 }}

[Ppis]
  ## EDK II Crypto PPI
  # 7DCE671B-C223-446A-A705-ED637AAF6771
  gEdkiiCryptoPpiGuid =  { 0x7DCE671B, 0xC223, 0x446A, { 0xA7, 0x05, 0xED, 0x63, 0x7A, 0xAF, 0x67, 0x71 }}

[Guids]
  ## Crypto package token space guid.
  gEfiCryptoPkgTokenSpaceGuid      = { 0x6bd7de60, 0x9ef7, 0x4899, { 0x97, 0xd0, 0xab, 0xff, 0xfd, 0xe9, 0x70, 0xf2 } }

[PcdsFixedAtBuild]
  ## Enable/Disable the families and individual services produced by the
  #  EDK II Crypto Protocols/PPIs.  The default is all services disabled.
  #  This Structured PCD is associated with PCD_CRYPTO_SERVICE_FAMILY_ENABLE
  #  structure that is defined in Include/Pcd/PcdCryptoServiceFamilyEnable.h.
  # @Prompt Enable/Disable EDK II Crypto Protocol/PPI services
  gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable|{0x00}|PCD_CRYPTO_SERVICE_FAMILY_ENABLE|0x00000002 {
    <Packages>
      CryptoPkg/CryptoPkg.dec
    <HeaderFiles>
      Pcd/PcdCryptoServiceFamilyEnable.h
  }

  ## This PCD indicates the HASH algorithm to calculate hash of data
  #  Based on the value set, the required algorithm is chosen to calculate
  #  the hash of data.<BR>
  #  The default hashing algorithm for BaseHashApiLib is set to SHA256.<BR>
  #     0x00000001    - HASH_ALG_SHA1.<BR>
  #     0x00000002    - HASH_ALG_SHA256.<BR>
  #     0x00000004    - HASH_ALG_SHA384.<BR>
  #     0x00000008    - HASH_ALG_SHA512.<BR>
  #     0x00000010    - HASH_ALG_SM3_256.<BR>
  # @Prompt Set policy for hashing unsigned image for Secure Boot.
  # @ValidList 0x80000001 | 0x00000001, 0x00000002, 0x00000004, 0x00000008, 0x00000010
  gEfiCryptoPkgTokenSpaceGuid.PcdHashApiLibPolicy|0x00000002|UINT32|0x00000001

  ## Enable/Disable the ECC feature in openssl library. The default is disabled.
  #  If ECC feature is disabled, all related source files will not be compiled.
  gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled|FALSE|BOOLEAN|0x0000003

[UserExtensions.TianoCore."ExtraFiles"]
  CryptoPkgExtra.uni
