## @file
#  Produces the UEFI Random Number Generator protocol
#
#  This module will leverage Intel Secure Key technology to produce the Random
#  Number Generator protocol, which is used to provide high-quality random numbers
#  for use in applications, or entropy for seeding other random number generators.
#  Refer to http://software.intel.com/en-us/articles/intel-digital-random-number
#  -generator-drng-software-implementation-guide/ for more information about Intel
#  Secure Key technology.
#
#  Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
#  (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
#  Copyright (c) 2021 - 2022, Arm Limited. All rights reserved.<BR>
#  SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = RngDxe
  FILE_GUID                      = B981A835-6EE8-4f4c-AE0B-210AA0BFBF01
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = RngDriverEntry
  UNLOAD_IMAGE                   = RngDriverUnLoad
  MODULE_UNI_FILE                = RngDxe.uni

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 AARCH64 ARM
#

[Sources.common]
  RngDxe.c
  RngDxeInternals.h

[Sources.IA32, Sources.X64]
  Rand/RngDxe.c
  Rand/RdRand.c
  Rand/AesCore.c
  Rand/AesCore.h

[Sources.AARCH64, Sources.ARM]
  ArmRngDxe.c
  ArmTrng.c

[Sources.AARCH64]
  AArch64/AArch64Algo.c

[Sources.ARM]
  Arm/ArmAlgo.c

[Packages]
  MdeModulePkg/MdeModulePkg.dec
  MdePkg/MdePkg.dec
  SecurityPkg/SecurityPkg.dec

[LibraryClasses]
  UefiLib
  UefiBootServicesTableLib
  BaseLib
  DebugLib
  UefiDriverEntryPoint
  TimerLib
  RngLib

[LibraryClasses.AARCH64, LibraryClasses.ARM]
  ArmTrngLib

[Guids]
  gEfiRngAlgorithmSp80090Hash256Guid  ## SOMETIMES_PRODUCES    ## GUID        # Unique ID of the algorithm for RNG
  gEfiRngAlgorithmSp80090Hmac256Guid  ## SOMETIMES_PRODUCES    ## GUID        # Unique ID of the algorithm for RNG
  gEfiRngAlgorithmSp80090Ctr256Guid   ## SOMETIMES_PRODUCES    ## GUID        # Unique ID of the algorithm for RNG
  gEfiRngAlgorithmX9313DesGuid        ## SOMETIMES_PRODUCES    ## GUID        # Unique ID of the algorithm for RNG
  gEfiRngAlgorithmX931AesGuid         ## SOMETIMES_PRODUCES    ## GUID        # Unique ID of the algorithm for RNG
  gEfiRngAlgorithmRaw                 ## SOMETIMES_PRODUCES    ## GUID        # Unique ID of the algorithm for RNG
  gEdkiiRngAlgorithmUnSafe            ## SOMETIMES_PRODUCES    ## GUID        # Unique ID of the algorithm for RNG

[Protocols]
  gEfiRngProtocolGuid                ## PRODUCES

[Depex]
  TRUE

[BuildOptions]
  XCODE:*_*_*_CC_FLAGS = -mmmx -msse

[UserExtensions.TianoCore."ExtraFiles"]
  RngDxeExtra.uni
