aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPieter Wuille <pieter.wuille@gmail.com>2019-01-16 15:15:21 -0800
committerPieter Wuille <pieter.wuille@gmail.com>2019-01-16 15:46:31 -0800
commitd3f54d1c82b131d817b20cd9daa75f9d3c9475e1 (patch)
tree06cc865fcc9c9dcb678a8e5a36f5be275209782e /src
parent05fde14e3afe6f7156ebb6df6cd0e3ae12635b89 (diff)
Rename some hardware RNG related functions
Diffstat (limited to 'src')
-rw-r--r--src/random.cpp21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/random.cpp b/src/random.cpp
index caeb87ff05..f31d14acf6 100644
--- a/src/random.cpp
+++ b/src/random.cpp
@@ -78,7 +78,7 @@ static inline int64_t GetPerformanceCounter()
static std::atomic<bool> hwrand_initialized{false};
static bool rdrand_supported = false;
static constexpr uint32_t CPUID_F1_ECX_RDRAND = 0x40000000;
-static void RDRandInit()
+static void InitHardwareRand()
{
uint32_t eax, ebx, ecx, edx;
if (__get_cpuid(1, &eax, &ebx, &ecx, &edx) && (ecx & CPUID_F1_ECX_RDRAND)) {
@@ -87,7 +87,7 @@ static void RDRandInit()
hwrand_initialized.store(true);
}
-static void RDRandReport()
+static void ReportHardwareRand()
{
assert(hwrand_initialized.load(std::memory_order_relaxed));
if (rdrand_supported) {
@@ -98,11 +98,16 @@ static void RDRandReport()
}
#else
-static void RDRandInit() {}
-static void RDRandReport() {}
+/* Access to other hardware random number generators could be added here later,
+ * assuming it is sufficiently fast (in the order of a few hundred CPU cycles).
+ * Slower sources should probably be invoked separately, and/or only from
+ * RandAddSeedSleep (which is called during idle background operation).
+ */
+static void InitHardwareRand() {}
+static void ReportHardwareRand() {}
#endif
-static bool GetHWRand(unsigned char* ent32) {
+static bool GetHardwareRand(unsigned char* ent32) {
#if defined(__x86_64__) || defined(__amd64__) || defined(__i386__)
assert(hwrand_initialized.load(std::memory_order_relaxed));
if (rdrand_supported) {
@@ -296,7 +301,7 @@ struct RNGState {
uint64_t m_counter = 0;
explicit RNGState() {
- RDRandInit();
+ InitHardwareRand();
}
};
@@ -361,7 +366,7 @@ void GetStrongRandBytes(unsigned char* out, int num)
hasher.Write(buf, 32);
// Third source: HW RNG, if available.
- if (GetHWRand(buf)) {
+ if (GetHardwareRand(buf)) {
hasher.Write(buf, 32);
}
@@ -512,5 +517,5 @@ void RandomInit()
// Invoke RNG code to trigger initialization (if not already performed)
GetRNGState();
- RDRandReport();
+ ReportHardwareRand();
}