## @file
#  Shell application that will test the crypto library.
#
#  UEFI Application for the Validation of cryptography library (based on OpenSSL-1.0.2j).
#
#  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]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = Cryptest
  MODULE_UNI_FILE                = Cryptest.uni
  FILE_GUID                      = fb925ac7-192a-9567-8586-7c6f5f710607
  MODULE_TYPE                    = UEFI_APPLICATION
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = CryptestMain

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF
#

[Sources]
  Cryptest.h
  Cryptest.c
  HashVerify.c
  HmacVerify.c
  BlockCipherVerify.c
  RsaVerify.c
  RsaVerify2.c
  Pkcs5Pbkdf2Verify.c
  AuthenticodeVerify.c
  TSVerify.c
  DhVerify.c
  RandVerify.c
  
[Packages]
  MdePkg/MdePkg.dec
  CryptoPkg/CryptoPkg.dec

[LibraryClasses]
  UefiApplicationEntryPoint
  UefiLib
  BaseLib
  UefiBootServicesTableLib
  BaseMemoryLib
  DebugLib
  MemoryAllocationLib
  BaseCryptLib

[UserExtensions.TianoCore."ExtraFiles"]
  CryptestExtra.uni
  
