Changeset View
Changeset View
Standalone View
Standalone View
src/random.cpp
Show First 20 Lines • Show All 301 Lines • ▼ Show 20 Lines | void RandAddSeedSleep() { | ||||
// Combine with and update state | // Combine with and update state | ||||
AddDataToRng(&nPerfCounter1, sizeof(nPerfCounter1)); | AddDataToRng(&nPerfCounter1, sizeof(nPerfCounter1)); | ||||
AddDataToRng(&nPerfCounter2, sizeof(nPerfCounter2)); | AddDataToRng(&nPerfCounter2, sizeof(nPerfCounter2)); | ||||
memory_cleanse(&nPerfCounter1, sizeof(nPerfCounter1)); | memory_cleanse(&nPerfCounter1, sizeof(nPerfCounter1)); | ||||
memory_cleanse(&nPerfCounter2, sizeof(nPerfCounter2)); | memory_cleanse(&nPerfCounter2, sizeof(nPerfCounter2)); | ||||
} | } | ||||
static CWaitableCriticalSection cs_rng_state; | static Mutex cs_rng_state; | ||||
static uint8_t rng_state[32] = {0}; | static uint8_t rng_state[32] = {0}; | ||||
static uint64_t rng_counter = 0; | static uint64_t rng_counter = 0; | ||||
static void AddDataToRng(void *data, size_t len) { | static void AddDataToRng(void *data, size_t len) { | ||||
CSHA512 hasher; | CSHA512 hasher; | ||||
hasher.Write((const uint8_t *)&len, sizeof(len)); | hasher.Write((const uint8_t *)&len, sizeof(len)); | ||||
hasher.Write((const uint8_t *)data, len); | hasher.Write((const uint8_t *)data, len); | ||||
uint8_t buf[64]; | uint8_t buf[64]; | ||||
▲ Show 20 Lines • Show All 165 Lines • Show Last 20 Lines |