diff options
author | Ezio Melotti <ezio.melotti@gmail.com> | 2013-08-26 01:33:30 +0300 |
---|---|---|
committer | Ezio Melotti <ezio.melotti@gmail.com> | 2013-08-26 01:33:30 +0300 |
commit | cdef59b761d57045069f73d399313ea256431ac7 (patch) | |
tree | d21bea56f874517c6702961c5a6654725474e71f /Python/random.c | |
parent | 9a3c839867c75374dfc3ad1d36e34e61b17a009b (diff) | |
parent | 4e8edc666b9e76e4db18b97fdfa9ea342f5a49f2 (diff) | |
download | cpython-cdef59b761d57045069f73d399313ea256431ac7.tar.gz |
#18803: merge with 3.3.
Diffstat (limited to 'Python/random.c')
-rw-r--r-- | Python/random.c | 33 |
1 files changed, 3 insertions, 30 deletions
diff --git a/Python/random.c b/Python/random.c index e5caa828b5..709f980dca 100644 --- a/Python/random.c +++ b/Python/random.c @@ -12,13 +12,6 @@ static int _Py_HashSecret_Initialized = 0; #endif #ifdef MS_WINDOWS -typedef BOOL (WINAPI *CRYPTACQUIRECONTEXTA)(HCRYPTPROV *phProv,\ - LPCSTR pszContainer, LPCSTR pszProvider, DWORD dwProvType,\ - DWORD dwFlags ); -typedef BOOL (WINAPI *CRYPTGENRANDOM)(HCRYPTPROV hProv, DWORD dwLen,\ - BYTE *pbBuffer ); - -static CRYPTGENRANDOM pCryptGenRandom = NULL; /* This handle is never explicitly released. Instead, the operating system will release it when the process terminates. */ static HCRYPTPROV hCryptProv = 0; @@ -26,29 +19,9 @@ static HCRYPTPROV hCryptProv = 0; static int win32_urandom_init(int raise) { - HINSTANCE hAdvAPI32 = NULL; - CRYPTACQUIRECONTEXTA pCryptAcquireContext = NULL; - - /* Obtain handle to the DLL containing CryptoAPI. This should not fail. */ - hAdvAPI32 = GetModuleHandle("advapi32.dll"); - if(hAdvAPI32 == NULL) - goto error; - - /* Obtain pointers to the CryptoAPI functions. This will fail on some early - versions of Win95. */ - pCryptAcquireContext = (CRYPTACQUIRECONTEXTA)GetProcAddress( - hAdvAPI32, "CryptAcquireContextA"); - if (pCryptAcquireContext == NULL) - goto error; - - pCryptGenRandom = (CRYPTGENRANDOM)GetProcAddress(hAdvAPI32, - "CryptGenRandom"); - if (pCryptGenRandom == NULL) - goto error; - /* Acquire context */ - if (! pCryptAcquireContext(&hCryptProv, NULL, NULL, - PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) + if (!CryptAcquireContext(&hCryptProv, NULL, NULL, + PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) goto error; return 0; @@ -77,7 +50,7 @@ win32_urandom(unsigned char *buffer, Py_ssize_t size, int raise) while (size > 0) { chunk = size > INT_MAX ? INT_MAX : size; - if (!pCryptGenRandom(hCryptProv, chunk, buffer)) + if (!CryptGenRandom(hCryptProv, chunk, buffer)) { /* CryptGenRandom() failed */ if (raise) |