23#include <Library/BaseLib.h>
24#include <Library/BaseMemoryLib.h>
25#include <Library/DebugLib.h>
30#include <Register/Intel/Cpuid.h>
67 for (Index = 0; Index <
ARRAY_SIZE (KeySeed); ++Index) {
75 for (Index = 0; Index <
ARRAY_SIZE (IvSeed); ++Index) {
95 for (Index = 0; Index <
ARRAY_SIZE (KeySeed); ++Index) {
99 for (Index = 0; Index <
ARRAY_SIZE (IvSeed); ++Index) {
178 for (Index = 0; Index < Bits; ++Index) {
180 if ((Tmp & BIT0) != 0) {
205 CPUID_VERSION_INFO_ECX RegEcx;
211 AsmCpuid (1, 0, 0, &RegEcx.Uint32, 0);
248 if (AsmRdRand16 (Rand)) {
284 if (AsmRdRand32 (Rand)) {
320 if (AsmRdRand64 (Rand)) {
#define ARRAY_SIZE(Array)
DMG_SIZE_DEVICE_PATH Size
STATIC_ASSERT(BYTES_PER_PIXEL==sizeof(UINT32), "Non 4-byte pixels are unsupported!")
VOID ChaChaCryptBuffer(IN OUT CHACHA_CONTEXT *Context, IN CONST UINT8 *Source, OUT UINT8 *Destination, IN UINT32 Length)
VOID ChaChaInitCtx(OUT CHACHA_CONTEXT *Context, IN CONST UINT8 *Key, IN CONST UINT8 *Iv, IN UINT32 Counter)
VOID * SecureZeroMem(OUT VOID *Buffer, IN UINTN Length)
UINT64 EFIAPI AsmAddRngJitter(IN UINT64 Value)
#define MAX_BYTES_TO_EMIT
#define RDRAND_RETRY_LIMIT
EFI_STATUS EFIAPI OcRngLibConstructor(VOID)
STATIC OC_RNG_CONTEXT mRng
UINT64 EFIAPI GetPseudoRandomNumber64(VOID)
BOOLEAN EFIAPI GetRandomNumber16(OUT UINT16 *Rand)
STATIC VOID ChaChaRngGenerate(OUT UINT8 *Data, IN UINT32 Size)
BOOLEAN EFIAPI GetRandomNumber32(OUT UINT32 *Rand)
STATIC VOID ChaChaRngStir(IN UINT32 BytesNeeded)
UINT16 EFIAPI GetPseudoRandomNumber16(VOID)
STATIC UINT64 GetEntropyBits(IN UINTN Bits)
BOOLEAN EFIAPI GetRandomNumber128(OUT UINT64 *Rand)
UINT32 EFIAPI GetPseudoRandomNumber32(VOID)
BOOLEAN EFIAPI GetRandomNumber64(OUT UINT64 *Rand)
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
VOID *EFIAPI ZeroMem(OUT VOID *Buffer, IN UINTN Length)
UINT64 EFIAPI LShiftU64(IN UINT64 Operand, IN UINTN Count)
UINT64 EFIAPI AsmReadTsc(VOID)
UINT32 AsmCpuid(IN UINT32 Index, OUT UINT32 *Eax, OPTIONAL OUT UINT32 *Ebx, OPTIONAL OUT UINT32 *Ecx, OPTIONAL OUT UINT32 *Edx OPTIONAL)
BOOLEAN HardwareRngAvailable
UINT8 Buffer[MAX_BYTES_IN_BUF]