EFI_RNG_PROTOCOL.GetRNG
Retrieves a Random Number Generation (RNG) value.
Syntax
typedef EFI_STATUS (EFIAPI *EFI_RNG_GET_RNG) (
IN struct _EFI_RNG_PROTOCOL *This,
IN EFI_RNG_ALGORITHM *RNGAlgorithm, OPTIONAL
IN UINTN RNGValueLength,
OUT UINT8 *RNGValue
);
Parameters
This
[in] A pointer to the EFI_RNG_PROTOCOL instance.
RNGAlgorithm
[in] A pointer to the EFI_RNG_ALGORITHM which identifies the RNG algorithm to use. If this parameter is NULL, the default algorithm supported by the driver will be used.
RNGValueLength
[in] The length, in bytes, of the buffer returned by RNGValue.
RNGValue
[in] Pointer to a buffer that will contain the RNG value. The value is allocated by this function using EFI_BOOT_SERVICES->AllocatePool(), and it is the caller's responsibility to free this memory by using EFI_BOOT_SERVICES->FreePool().
Remarks
The minimum size of RNGValue is 32 bytes.
Return value
Returns one of the following status codes.
Status code | Description |
---|---|
EFI_SUCCESS | The function successfully returned an RNG value. |
EFI_INVALID_PARAMETER | RNGAlgorithm is NULL when several algorithms are possible. |
EFI_UNSUPPORTED | The algorithm specified by RNGAlgorithm is not supported by this driver. |
EFI_DEVICE_ERROR | An RNG value could not be retrieved because of a hardware or firmware error. |
EFI_NOT_READY | There is not enough entropy data available. |
EFI_OUT_OF_RESOURCES | The driver is unable to allocate memory for the RNG value. |
Requirements
Header: User generated