MdeModulePkg: Duplicate BaseRngLibTimerLib to MdeModulePkg

BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4504

The BaseRngLibTimerLib allows to generate number based on a timer.
This mechanism allows to have a basic non-secure implementation
for non-production platforms.
To bind and identify Random Number Generators implementations with
a GUID, an unsafe GUID should be added. This GUID cannot be added
to the MdePkg unless it is also added to a specification.

To keep the MdePkg self-contained, copy the BaseRngLibTimerLib to
the MdeModulePkg. This will allow to define an unsafe Rng GUID
in a later patch in the MdeModulePkg.

The MdePkg implementation will be removed later. This allows to give
some time to platform owners to switch to the MdeModulePkg
implementation.

Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
Acked-by: Ard Biesheuvel <ardb@kernel.org>
Tested-by: Kun Qin <kun.qin@microsoft.com>
This commit is contained in:
Pierre Gondois
2023-08-11 16:33:02 +02:00
committed by mergify[bot]
parent 2ce5ae43c2
commit 2f981bddcb
19 changed files with 262 additions and 18 deletions

View File

@@ -0,0 +1,36 @@
## @file
# Instance of RNG (Random Number Generator) Library.
#
# BaseRng Library that uses the TimerLib to provide reasonably random numbers.
# Do NOT use this on a production system as this uses the system performance
# counter rather than a true source of random in addition to having a weak
# random algorithm. This is provided primarily as a source of entropy for
# OpenSSL for platforms that do not have a good built in RngLib as this
# emulates what was done before (though it isn't perfect).
#
# Copyright (c) Microsoft Corporation. All rights reserved.<BR>
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
#
##
[Defines]
INF_VERSION = 1.27
BASE_NAME = BaseRngLibTimerLib
MODULE_UNI_FILE = BaseRngLibTimerLib.uni
FILE_GUID = 74950C45-10FC-4AB5-B114-49C87C17409B
MODULE_TYPE = BASE
VERSION_STRING = 1.0
LIBRARY_CLASS = RngLib
[Sources]
RngLibTimer.c
[Packages]
MdePkg/MdePkg.dec
[LibraryClasses]
BaseLib
DebugLib
TimerLib