## @file
#  UEFI RNG (Random Number Generator) Protocol test application.
#  
#  This application can print out the supported RNG algorithm in UEFI RNG Protocol. 
#  And then it will do a generation test on the supported RNG algorithm.  
#
#  Copyright (c) 2013 - 2014, 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                      = RngTest
  FILE_GUID                      = B8AC7FB2-4211-4c2b-B62F-504421666C87
  MODULE_TYPE                    = UEFI_APPLICATION
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = UefiMain
  MODULE_UNI_FILE                = RngTest.uni

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64
#

[Sources]
  RngTest.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  SecurityPkg/SecurityPkg.dec

[LibraryClasses]
  UefiApplicationEntryPoint
  UefiLib

[Protocols]
  gEfiRngProtocolGuid            ## CONSUMES

[Guids]
  gEfiRngAlgorithmSp80090Hash256Guid    ## SOMETIMES_CONSUMES    ## GUID        # Unique ID of the algorithm for RNG
  gEfiRngAlgorithmSp80090Hmac256Guid    ## SOMETIMES_CONSUMES    ## GUID        # Unique ID of the algorithm for RNG
  gEfiRngAlgorithmSp80090Ctr256Guid     ## SOMETIMES_CONSUMES    ## GUID        # Unique ID of the algorithm for RNG
  gEfiRngAlgorithmX9313DesGuid          ## SOMETIMES_CONSUMES    ## GUID        # Unique ID of the algorithm for RNG
  gEfiRngAlgorithmX931AesGuid           ## SOMETIMES_CONSUMES    ## GUID        # Unique ID of the algorithm for RNG
  gEfiRngAlgorithmRaw                   ## SOMETIMES_CONSUMES    ## GUID        # Unique ID of the algorithm for RNG
  
  [UserExtensions.TianoCore."ExtraFiles"]
  RngTestExtra.uni