## @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 - 2016, 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]
  DEC_SPECIFICATION              = 0x00010005
  PACKAGE_NAME                   = CryptoPkg
  PACKAGE_UNI_FILE               = CryptoPkg.uni
  PACKAGE_GUID                   = 36470E80-36F2-4ba0-8CC8-937C7D9FF888
  PACKAGE_VERSION                = 0.96

[Includes]
  Include
  Library/OpensslLib/openssl-1.0.2j/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

[Protocols]
  ## Include/Protocol/RuntimeCrypt.h
  gEfiRuntimeCryptProtocolGuid = { 0xe1475e0c, 0x1746, 0x4802, {0x86, 0x2e, 0x1, 0x1c, 0x2c, 0x2d, 0x9d, 0x86 }}

[UserExtensions.TianoCore."ExtraFiles"]
  CryptoPkgExtra.uni
  
