diff options
author | Conrad Meyer <cem@FreeBSD.org> | 2017-10-07 19:02:03 +0000 |
---|---|---|
committer | Conrad Meyer <cem@FreeBSD.org> | 2017-10-07 19:02:03 +0000 |
commit | 095db7e6e7cc577ddcfaf7efb72bbbb7e8b06f34 (patch) | |
tree | ba13c69ed1e25cd288e1ac65f7e9fa925f5f2baf /sys/sys | |
parent | f04c11c32bc351739c280ad89e075e89f5f0cb19 (diff) | |
download | src-095db7e6e7cc577ddcfaf7efb72bbbb7e8b06f34.tar.gz src-095db7e6e7cc577ddcfaf7efb72bbbb7e8b06f34.zip |
random(4): Gather entropy from Pure sources
At initialization, hc_source_mask only includes non-Pure sources.
The patch changes source registration to enable the registered source in the
hc_source_mask bitmask. This mask governs which sources are harvested.
This patch also disallows userspace from disabling such sources.
PR: 222807
Submitted by: W. Dean Freeman <badfilemagic AT gmail.com>
Reviewed by: jmg (earlier version), delphij
Approved by: secteam (delphij)
Obtained from: HBSD 0054e3e170e083811acc9f3b637f8be8a86c03e7
Security: yes
Differential Revision: https://reviews.freebsd.org/D12611
Notes
Notes:
svn path=/head/; revision=324394
Diffstat (limited to 'sys/sys')
-rw-r--r-- | sys/sys/random.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/sys/random.h b/sys/sys/random.h index fb73d1646fb3..9d4a9fb097f7 100644 --- a/sys/sys/random.h +++ b/sys/sys/random.h @@ -81,7 +81,8 @@ enum random_entropy_source { RANDOM_UMA, /* Special!! UMA/SLAB Allocator */ RANDOM_ENVIRONMENTAL_END = RANDOM_UMA, /* Fast hardware random-number sources from here on. */ - RANDOM_PURE_OCTEON, + RANDOM_PURE_START, + RANDOM_PURE_OCTEON = RANDOM_PURE_START, RANDOM_PURE_SAFE, RANDOM_PURE_GLXSB, RANDOM_PURE_UBSEC, @@ -95,6 +96,7 @@ enum random_entropy_source { }; #define RANDOM_HARVEST_EVERYTHING_MASK ((1 << (RANDOM_ENVIRONMENTAL_END + 1)) - 1) +#define RANDOM_HARVEST_PURE_MASK (((1 << ENTROPYSOURCE) - 1) & (-1UL << RANDOM_PURE_START)) #define RANDOM_LEGACY_BOOT_ENTROPY_MODULE "/boot/entropy" #define RANDOM_CACHED_BOOT_ENTROPY_MODULE "boot_entropy_cache" @@ -104,10 +106,14 @@ enum random_entropy_source { void random_harvest_queue(const void *, u_int, u_int, enum random_entropy_source); void random_harvest_fast(const void *, u_int, u_int, enum random_entropy_source); void random_harvest_direct(const void *, u_int, u_int, enum random_entropy_source); +void random_harvest_register_source(enum random_entropy_source); +void random_harvest_deregister_source(enum random_entropy_source); #else #define random_harvest_queue(a, b, c, d) do {} while (0) #define random_harvest_fast(a, b, c, d) do {} while (0) #define random_harvest_direct(a, b, c, d) do {} while (0) +#define random_harvest_register_source(a) do {} while (0) +#define random_harvest_deregister_source(a) do {} while (0) #endif #if defined(RANDOM_ENABLE_UMA) |