diff --git a/MdePkg/Library/DxeRngLib/DxeRngLib.c b/MdePkg/Library/DxeRngLib/DxeRngLib.c index 17c932d802..3092d3ebcf 100644 --- a/MdePkg/Library/DxeRngLib/DxeRngLib.c +++ b/MdePkg/Library/DxeRngLib/DxeRngLib.c @@ -33,6 +33,13 @@ typedef struct { // the RNG protocol and are generally considered secure. // GLOBAL_REMOVE_IF_UNREFERENCED SECURE_RNG_ALGO_ARRAY mSecureHashAlgorithms[] = { + #ifdef MDE_CPU_AARCH64 + { + &gEfiRngAlgorithmArmRndr, // unspecified SP800-90A DRBG (through RNDR instr.) + "ARM-RNDR", + FALSE, + }, + #endif { &gEfiRngAlgorithmSp80090Ctr256Guid, // SP800-90A DRBG CTR using AES-256 "DRBG-CTR", diff --git a/MdePkg/Library/DxeRngLib/DxeRngLib.inf b/MdePkg/Library/DxeRngLib/DxeRngLib.inf index 0eff20d988..f430b12586 100644 --- a/MdePkg/Library/DxeRngLib/DxeRngLib.inf +++ b/MdePkg/Library/DxeRngLib/DxeRngLib.inf @@ -40,5 +40,8 @@ gEfiRngAlgorithmSp80090Hmac256Guid gEfiRngAlgorithmRaw +[Guids.AARCH64] + gEfiRngAlgorithmArmRndr + [FixedPcd] gEfiMdePkgTokenSpaceGuid.PcdEnforceSecureRngAlgorithms ## CONSUMES