blob: c9c170fb0b4b27c7018e2594aae6e91fc97bf5ca (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#ifndef _IPXE_RDRAND_H
#define _IPXE_RDRAND_H
/** @file
*
* Hardware random number generator
*
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <stdint.h>
#include <ipxe/drbg.h>
#ifdef ENTROPY_RDRAND
#define ENTROPY_PREFIX_rdrand
#else
#define ENTROPY_PREFIX_rdrand __rdrand_
#endif
/**
* min-entropy per sample
*
* @ret min_entropy min-entropy of each sample
*/
static inline __always_inline min_entropy_t
ENTROPY_INLINE ( rdrand, min_entropy_per_sample ) ( void ) {
/* Data returned by RDRAND is theoretically full entropy, up
* to a security strength of 128 bits.
*/
if ( DRBG_SECURITY_STRENGTH > 128 )
return 0;
return MIN_ENTROPY ( 8 * sizeof ( noise_sample_t ) );
}
#endif /* _IPXE_RDRAND_H */
|