From: Habu Date: Fri, 7 Mar 2014 15:31:12 +0000 (+0900) Subject: Use CryptGenRandom() for RNG initialize in Windows X-Git-Tag: v2.2.0~277^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=506146ca1093a8a4f05c3867cff9fc0ca9dd5a93;p=hengbandforosx%2Fhengbandosx.git Use CryptGenRandom() for RNG initialize in Windows --- 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 */