From 506146ca1093a8a4f05c3867cff9fc0ca9dd5a93 Mon Sep 17 00:00:00 2001 From: Habu Date: Sat, 8 Mar 2014 00:31:12 +0900 Subject: [PATCH] Use CryptGenRandom() for RNG initialize in Windows --- src/z-rand.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/z-rand.c b/src/z-rand.c index fbdd462c1..699e1fa1b 100644 --- a/src/z-rand.c +++ b/src/z-rand.c @@ -11,6 +11,10 @@ /* Purpose: a simple random number generator -BEN- */ +#if defined(WINDOWS) +#include +#endif + #include "z-rand.h" @@ -118,6 +122,19 @@ void Rand_state_init(void) memcpy(Rand_state, buf, sizeof(buf)); fclose(fp); +#elif defined(WINDOWS) + + HCRYPTPROV hProvider; + u32b buf[4]; + + CryptAcquireContext(&hProvider, NULL, NULL, PROV_RSA_FULL, 0); + + do { + CryptGenRandom(hProvider, sizeof(buf[0]) * 4, (BYTE*)buf); + } while ((buf[0] | buf[1] | buf[2] | buf[3]) == 0); + + CryptReleaseContext(hProvider, 0); + #else /* Basic seed */ -- 2.11.0