diff options
| author | Michael Brown | 2023-02-15 23:43:33 +0100 |
|---|---|---|
| committer | Michael Brown | 2023-02-15 23:43:33 +0100 |
| commit | cff857461be443339aa39d614635d9a4eae8f8b2 (patch) | |
| tree | a145a1a693e24028edcd9cbf61c2127c160cdc2e /src/arch/x86/include/ipxe/rdrand.h | |
| parent | [efi] Support the initrd autodetection mechanism in newer Linux kernels (diff) | |
| download | ipxe-cff857461be443339aa39d614635d9a4eae8f8b2.tar.gz ipxe-cff857461be443339aa39d614635d9a4eae8f8b2.tar.xz ipxe-cff857461be443339aa39d614635d9a4eae8f8b2.zip | |
[rng] Add RDRAND as an entropy source
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/arch/x86/include/ipxe/rdrand.h')
| -rw-r--r-- | src/arch/x86/include/ipxe/rdrand.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/arch/x86/include/ipxe/rdrand.h b/src/arch/x86/include/ipxe/rdrand.h new file mode 100644 index 000000000..c9c170fb0 --- /dev/null +++ b/src/arch/x86/include/ipxe/rdrand.h @@ -0,0 +1,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 */ |
