mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2024-11-23 11:35:19 +01:00
620401dca6
Signed-off-by: Sergey Isakov <isakov-sl@bk.ru>
82 lines
1.9 KiB
C
82 lines
1.9 KiB
C
/** @file
|
|
Copyright (C) 2020, vit9696. All rights reserved.
|
|
|
|
All rights reserved.
|
|
|
|
This program and the accompanying materials
|
|
are licensed and made available under the terms and conditions of the BSD License
|
|
which accompanies this distribution. The full text of the license may be found at
|
|
http://opensource.org/licenses/bsd-license.php
|
|
|
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
**/
|
|
|
|
#ifndef OC_RNG_INTERNALS_H
|
|
#define OC_RNG_INTERNALS_H
|
|
|
|
#include <Library/OcCryptoLib.h>
|
|
|
|
/**
|
|
Performs delay on target platform to cause microoperating scheduling
|
|
and introduce timing entropy.
|
|
|
|
@param[in] Value Dummy value.
|
|
|
|
@retval Dummy value.
|
|
**/
|
|
UINT64
|
|
EFIAPI
|
|
AsmAddRngJitter (
|
|
IN UINT64 Value
|
|
);
|
|
|
|
//
|
|
// Limited retry number when valid random data is returned.
|
|
// Uses the recommended value defined in Section 7.3.17 of "Intel 64 and IA-32
|
|
// Architectures Software Developer's Mannual".
|
|
//
|
|
#define RDRAND_RETRY_LIMIT 10
|
|
|
|
//
|
|
// Maximum amount of bytes emitted by PRNG before next reseed.
|
|
//
|
|
#define MAX_BYTES_TO_EMIT 1600000
|
|
|
|
//
|
|
// Maximum bytes in one buffer.
|
|
//
|
|
#define MAX_BYTES_IN_BUF (16*64)
|
|
|
|
/**
|
|
Random Number Generator context.
|
|
**/
|
|
typedef struct OC_RNG_CONTEXT_ {
|
|
//
|
|
// Hardware random number generator available.
|
|
//
|
|
BOOLEAN HardwareRngAvailable;
|
|
//
|
|
// Done initialising pseudo random number generator.
|
|
//
|
|
BOOLEAN PrngInitialised;
|
|
//
|
|
// Amount of bytes to emit before next reseed.
|
|
//
|
|
UINT32 BytesTillReseed;
|
|
//
|
|
// Amount of bytes in the current buffer.
|
|
//
|
|
UINT32 BytesInBuffer;
|
|
//
|
|
// Current CPRNG buffer.
|
|
//
|
|
UINT8 Buffer[MAX_BYTES_IN_BUF];
|
|
//
|
|
// ChaCha context.
|
|
//
|
|
CHACHA_CONTEXT ChaCha;
|
|
} OC_RNG_CONTEXT;
|
|
|
|
#endif // OC_RNG_INTERNALS_H
|