aboutsummaryrefslogtreecommitdiff
path: root/sys/sys
diff options
context:
space:
mode:
authorConrad Meyer <cem@FreeBSD.org>2017-10-07 19:02:03 +0000
committerConrad Meyer <cem@FreeBSD.org>2017-10-07 19:02:03 +0000
commit095db7e6e7cc577ddcfaf7efb72bbbb7e8b06f34 (patch)
treeba13c69ed1e25cd288e1ac65f7e9fa925f5f2baf /sys/sys
parentf04c11c32bc351739c280ad89e075e89f5f0cb19 (diff)
downloadsrc-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.h8
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)