summaryrefslogtreecommitdiffstats
path: root/crypto/rand
diff options
context:
space:
mode:
authorMat <mberchtold@gmail.com>2016-05-29 20:38:37 +0200
committerRich Salz <rsalz@openssl.org>2016-06-03 12:18:59 -0400
commit0814afcfa46039c8f27739dbe6a355b731f34608 (patch)
treec1c8ab6758db524f2f1d7ba593ca2b0040aaaea4 /crypto/rand
parentfa64e63373fbc845a39907407ad990a6bbb84174 (diff)
Define USE_BCRYPT
Define USE_BCRYPT Removed _WIN32_WINNT define Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/1142)
Diffstat (limited to 'crypto/rand')
-rw-r--r--crypto/rand/rand_win.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/crypto/rand/rand_win.c b/crypto/rand/rand_win.c
index 2ddac8a0f8..21cc9b6bcb 100644
--- a/crypto/rand/rand_win.c
+++ b/crypto/rand/rand_win.c
@@ -13,13 +13,15 @@
#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32)
# include <windows.h>
+/* On Windows 7 or higher use BCrypt instead of the legacy CryptoAPI */
# if defined(_MSC_VER) && defined(_WIN32_WINNT) && _WIN32_WINNT>=0x0601
+# define USE_BCRYPT 1
+# endif
+
+# ifdef USE_BCRYPT
# include <bcrypt.h>
# pragma comment(lib, "bcrypt.lib")
# else
-# ifndef _WIN32_WINNT
-# define _WIN32_WINNT 0x0400
-# endif
# include <wincrypt.h>
/*
* Intel hardware RNG CSP -- available from
@@ -34,13 +36,13 @@ static void readtimer(void);
int RAND_poll(void)
{
MEMORYSTATUS mst;
-# if !(defined(_MSC_VER) && defined(_WIN32_WINNT) && _WIN32_WINNT>=0x0601)
+# ifndef USE_BCRYPT
HCRYPTPROV hProvider = 0;
# endif
DWORD w;
BYTE buf[64];
-# if defined(_MSC_VER) && defined(_WIN32_WINNT) && _WIN32_WINNT>=0x0601
+# ifdef USE_BCRYPT
if (BCryptGenRandom(NULL, buf, (ULONG)sizeof(buf), BCRYPT_USE_SYSTEM_PREFERRED_RNG) == 0) {
RAND_add(buf, sizeof(buf), sizeof(buf));
}