diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-07-18 00:07:07 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-07-18 00:07:07 +0000 |
commit | b12c5a85b47c55d94b5baace09ad668ce610f716 (patch) | |
tree | 271786db12747eec021cf7c26961a22c5e627f8f | |
parent | 924e2fcefa36ad9f2750590e3daa184b03b9d734 (diff) | |
download | ruby-b12c5a85b47c55d94b5baace09ad668ce610f716.tar.gz |
* random.c (fill_random_seed): use cryptographic service on Windows.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24187 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | random.c | 7 |
2 files changed, 11 insertions, 0 deletions
@@ -1,3 +1,7 @@ +Sat Jul 18 09:07:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * random.c (fill_random_seed): use cryptographic service on Windows. + Sat Jul 18 07:56:00 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp> * ext/tk/lib/tk.rb: fail to create a widget object for an unknown @@ -389,6 +389,8 @@ fill_random_seed(unsigned int seed[DEFAULT_SEED_CNT]) #if USE_DEV_URANDOM int fd; struct stat statbuf; +#elif defined(_WIN32) + HCRYPTPROV prov; #endif memset(seed, 0, DEFAULT_SEED_LEN); @@ -410,6 +412,11 @@ fill_random_seed(unsigned int seed[DEFAULT_SEED_CNT]) } close(fd); } +#elif defined(_WIN32) + if (CryptAcquireContext(&prov, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) { + CryptGenRandom(prov, DEFAULT_SEED_LEN, seed); + CryptReleaseContext(prov, 0); + } #endif gettimeofday(&tv, 0); |