SecurityPkg/RngDxe: Rename RdRandGenerateEntropy to generic name

Bugzilla: 3668 (https://bugzilla.tianocore.org/show_bug.cgi?id=3668)

Rename RdRandGenerateEntropy() to GenerateEntropy() to provide a
common interface to generate entropy on other architectures.
GenerateEntropy() is intended to generate high quality entropy.

Also move the definition to RngDxeInternals.h

Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
Acked-by: Jiewen Yao <jiewen.yao@intel.com>
This commit is contained in:
Sami Mujawar 2022-10-28 17:32:50 +02:00 committed by mergify[bot]
parent e00ec499c5
commit 8a89747844
5 changed files with 36 additions and 49 deletions

View File

@ -1,15 +1,23 @@
/** @file
Support routines for RDRAND instruction access.
Support routines for RDRAND instruction access, which will leverage
Intel Secure Key technology 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) 2021 - 2022, Arm Limited. All rights reserved.<BR>
Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
(C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include <Library/BaseLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/RngLib.h>
#include <Library/TimerLib.h>
#include "AesCore.h"
#include "RdRand.h"
#include "RngDxeInternals.h"
/**
@ -87,7 +95,7 @@ RdRandGetSeed128 (
**/
EFI_STATUS
EFIAPI
RdRandGenerateEntropy (
GenerateEntropy (
IN UINTN Length,
OUT UINT8 *Entropy
)

View File

@ -1,43 +0,0 @@
/** @file
Header for the RDRAND APIs used by RNG DXE driver.
Support API definitions for RDRAND instruction access, which will leverage
Intel Secure Key technology 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, Intel Corporation. All rights reserved.<BR>
(C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef __RD_RAND_H__
#define __RD_RAND_H__
#include <Library/BaseLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/TimerLib.h>
#include <Protocol/Rng.h>
/**
Generate high-quality entropy source through RDRAND.
@param[in] Length Size of the buffer, in bytes, to fill with.
@param[out] Entropy Pointer to the buffer to store the entropy data.
@retval EFI_SUCCESS Entropy generation succeeded.
@retval EFI_NOT_READY Failed to request random data.
**/
EFI_STATUS
EFIAPI
RdRandGenerateEntropy (
IN UINTN Length,
OUT UINT8 *Entropy
);
#endif // __RD_RAND_H__

View File

@ -14,13 +14,16 @@
- EFI_RNG_ALGORITHM_X9_31_3DES_GUID - Unsupported
- EFI_RNG_ALGORITHM_X9_31_AES_GUID - Unsupported
Copyright (c) 2021 - 2022, Arm Limited. All rights reserved.<BR>
Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
(C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include "RdRand.h"
#include <Library/BaseLib.h>
#include <Library/BaseMemoryLib.h>
#include "RngDxeInternals.h"
/**
@ -88,7 +91,7 @@ RngGetRNG (
return EFI_INVALID_PARAMETER;
}
Status = RdRandGenerateEntropy (RNGValueLength, RNGValue);
Status = GenerateEntropy (RNGValueLength, RNGValue);
return Status;
}

View File

@ -10,6 +10,7 @@
#
# 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
#
##
@ -36,7 +37,6 @@
[Sources.IA32, Sources.X64]
Rand/RngDxe.c
Rand/RdRand.c
Rand/RdRand.h
Rand/AesCore.c
Rand/AesCore.h

View File

@ -10,6 +10,8 @@
#ifndef RNGDXE_INTERNALS_H_
#define RNGDXE_INTERNALS_H_
#include <Protocol/Rng.h>
/**
Returns information about the random number generation implementation.
@ -114,4 +116,21 @@ RngGetBytes (
OUT UINT8 *RandBuffer
);
/**
Generate high-quality entropy source using a TRNG or through RDRAND.
@param[in] Length Size of the buffer, in bytes, to fill with.
@param[out] Entropy Pointer to the buffer to store the entropy data.
@retval EFI_SUCCESS Entropy generation succeeded.
@retval EFI_NOT_READY Failed to request random data.
**/
EFI_STATUS
EFIAPI
GenerateEntropy (
IN UINTN Length,
OUT UINT8 *Entropy
);
#endif // RNGDXE_INTERNALS_H_