mirror of
https://github.com/php/php-src.git
synced 2024-09-22 02:17:32 +00:00
- use new function to get random bytes
This commit is contained in:
parent
dc3940bd1c
commit
cdaa87f57e
@ -27,8 +27,7 @@
|
||||
#if HAVE_LIBMCRYPT
|
||||
|
||||
#if PHP_WIN32
|
||||
# include <Wincrypt.h>
|
||||
# include <Ntsecapi.h>
|
||||
# include "win32/winutil.h"
|
||||
#endif
|
||||
|
||||
#include "php_mcrypt.h"
|
||||
@ -1391,23 +1390,14 @@ PHP_FUNCTION(mcrypt_create_iv)
|
||||
|
||||
if (source == RANDOM || source == URANDOM) {
|
||||
#if PHP_WIN32
|
||||
/* random/urandom equivalent on Windows */
|
||||
HCRYPTPROV hCryptProv;
|
||||
BYTE *iv_b = (BYTE *) iv;
|
||||
|
||||
/* It could be done using LoadLibrary but as we rely on 2k+ for 5.3, cleaner to use a clear dependency (Advapi32) and a
|
||||
standard API call (no f=getAddr..; f();) */
|
||||
if(!CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) {
|
||||
efree(iv);
|
||||
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Cannot open random device");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
if(!CryptGenRandom(hCryptProv, size, iv_b)) {
|
||||
efree(iv);
|
||||
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Could not gather sufficient random data");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
n = size;
|
||||
/* random/urandom equivalent on Windows */
|
||||
BYTE *iv_b = (BYTE *) iv;
|
||||
if (php_win32_get_random_bytes(iv_b, (size_t) size) == FAILURE){
|
||||
efree(iv);
|
||||
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Could not gather sufficient random data");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
n = size;
|
||||
#else
|
||||
int fd;
|
||||
size_t read_bytes = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user