|
@@ -63,7 +63,11 @@ const std::unique_ptr<SimpleRandomizer>& SimpleRandomizer::getInstance()
|
|
|
return randomizer_;
|
|
|
}
|
|
|
|
|
|
-SimpleRandomizer::SimpleRandomizer()
|
|
|
+namespace {
|
|
|
+std::random_device rd;
|
|
|
+} // namespace
|
|
|
+
|
|
|
+SimpleRandomizer::SimpleRandomizer() : gen_(rd())
|
|
|
{
|
|
|
#ifdef __MINGW32__
|
|
|
BOOL r = ::CryptAcquireContext(&provider_, 0, 0, PROV_RSA_FULL,
|
|
@@ -120,12 +124,12 @@ void SimpleRandomizer::getRandomBytes(unsigned char* buf, size_t len)
|
|
|
#endif // defined(HAVE_GETRANDOM_INTERFACE)
|
|
|
auto ubuf = reinterpret_cast<result_type*>(buf);
|
|
|
size_t q = len / sizeof(result_type);
|
|
|
- auto gen = std::uniform_int_distribution<result_type>();
|
|
|
+ auto dis = std::uniform_int_distribution<result_type>();
|
|
|
for (; q > 0; --q, ++ubuf) {
|
|
|
- *ubuf = gen(dev_);
|
|
|
+ *ubuf = dis(gen_);
|
|
|
}
|
|
|
const size_t r = len % sizeof(result_type);
|
|
|
- auto last = gen(dev_);
|
|
|
+ auto last = dis(gen_);
|
|
|
memcpy(ubuf, &last, r);
|
|
|
#endif // ! __MINGW32__
|
|
|
}
|