[PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/win32/winutil.c trunk/win32/winutil.c

2010-08-09 Thread Pierre Joye
pajoye   Mon, 09 Aug 2010 07:32:21 +

Revision: http://svn.php.net/viewvc?view=revisionrevision=302023

Log:
- WS

Changed paths:
U   php/php-src/branches/PHP_5_3/win32/winutil.c
U   php/php-src/trunk/win32/winutil.c

Modified: php/php-src/branches/PHP_5_3/win32/winutil.c
===
--- php/php-src/branches/PHP_5_3/win32/winutil.c2010-08-09 07:16:08 UTC 
(rev 302022)
+++ php/php-src/branches/PHP_5_3/win32/winutil.c2010-08-09 07:32:21 UTC 
(rev 302023)
@@ -76,7 +76,7 @@
if (i == size) {
return SUCCESS;
}
-   }
+   }
return FAILURE;
 }
 /* }}} */

Modified: php/php-src/trunk/win32/winutil.c
===
--- php/php-src/trunk/win32/winutil.c   2010-08-09 07:16:08 UTC (rev 302022)
+++ php/php-src/trunk/win32/winutil.c   2010-08-09 07:32:21 UTC (rev 302023)
@@ -76,7 +76,7 @@
if (i == size) {
return SUCCESS;
}
-   }
+   }
return FAILURE;
 }
 /* }}} */

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/win32/winutil.c trunk/win32/winutil.c

2010-08-09 Thread Pierre Joye
pajoye   Mon, 09 Aug 2010 08:14:14 +

Revision: http://svn.php.net/viewvc?view=revisionrevision=302024

Log:
- #52523, fix logic (0 is perfectly valid as part of the data, bin data)

Bug: http://bugs.php.net/52523 (Assigned) mcrypt_create_iv not reliable on win: 
Could not gather sufficient random data
  
Changed paths:
U   php/php-src/branches/PHP_5_3/win32/winutil.c
U   php/php-src/trunk/win32/winutil.c

Modified: php/php-src/branches/PHP_5_3/win32/winutil.c
===
--- php/php-src/branches/PHP_5_3/win32/winutil.c2010-08-09 07:32:21 UTC 
(rev 302023)
+++ php/php-src/branches/PHP_5_3/win32/winutil.c2010-08-09 08:14:14 UTC 
(rev 302024)
@@ -70,13 +70,9 @@
ret = CryptGenRandom(hCryptProv, size, buf);
CryptReleaseContext(hCryptProv, 0);
if (ret) {
-   while (i  size  buf[i] != 0) {
-   i++;
-   }
-   if (i == size) {
-   return SUCCESS;
-   }
+   return SUCCESS;
+   } else {
+   return FAILURE;
}
-   return FAILURE;
 }
 /* }}} */

Modified: php/php-src/trunk/win32/winutil.c
===
--- php/php-src/trunk/win32/winutil.c   2010-08-09 07:32:21 UTC (rev 302023)
+++ php/php-src/trunk/win32/winutil.c   2010-08-09 08:14:14 UTC (rev 302024)
@@ -70,12 +70,7 @@
ret = CryptGenRandom(hCryptProv, size, buf);
CryptReleaseContext(hCryptProv, 0);
if (ret) {
-   while (i  size  buf[i] != 0) {
-   i++;
-   }
-   if (i == size) {
-   return SUCCESS;
-   }
+   return SUCCESS;
}
return FAILURE;
 }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/win32/winutil.c trunk/win32/winutil.c trunk/win32/winutil.h

2010-06-08 Thread Pierre Joye
pajoye   Tue, 08 Jun 2010 13:00:11 +

Revision: http://svn.php.net/viewvc?view=revisionrevision=300273

Log:
- add striped down version of RNG layer to have a reliable random src on windows

Changed paths:
U   php/php-src/branches/PHP_5_3/win32/winutil.c
U   php/php-src/trunk/win32/winutil.c
U   php/php-src/trunk/win32/winutil.h

Modified: php/php-src/branches/PHP_5_3/win32/winutil.c
===
--- php/php-src/branches/PHP_5_3/win32/winutil.c2010-06-08 12:54:11 UTC 
(rev 300272)
+++ php/php-src/branches/PHP_5_3/win32/winutil.c2010-06-08 13:00:11 UTC 
(rev 300273)
@@ -12,13 +12,15 @@
| obtain it through the world-wide-web, please send a note to  |
| lice...@php.net so we can mail you a copy immediately.   |
+--+
-   | Author:  |
+   | Author: Zeev Suraski z...@zend.com |
+   * Pierre Joye pie...@php.net |
+--+
  */

 /* $Id$ */

 #include php.h
+#include wincrypt.h

 PHPAPI char *php_win_err(int error)
 {
@@ -46,3 +48,35 @@
return 0;
}
 }
+
+PHPAPI int php_win32_get_random_bytes(unsigned char *buf, size_t size) {  /* 
{{{ */
+   HCRYPTPROV   hCryptProv;
+   int has_context = 0;
+   BOOL ret;
+   size_t i = 0;
+
+   if (!CryptAcquireContext(hCryptProv, NULL, NULL, PROV_RSA_FULL, 0)) {
+   /* Could mean that the key container does not exist, let try
+  again by asking for a new one */
+   if (GetLastError() == NTE_BAD_KEYSET) {
+   if (CryptAcquireContext(hCryptProv, NULL, NULL, 
PROV_RSA_FULL, CRYPT_NEWKEYSET)) {
+   has_context = 1;
+   } else {
+   return FAILURE;
+   }
+   }
+   }
+
+   ret = CryptGenRandom(hCryptProv, size, buf);
+   CryptReleaseContext(hCryptProv, 0);
+   if (ret) {
+   while (i  size  buf[i] != 0) {
+   i++;
+   }
+   if (i == size) {
+   return SUCCESS;
+   }
+   }
+   return FAILURE;
+}
+/* }}} */

Modified: php/php-src/trunk/win32/winutil.c
===
--- php/php-src/trunk/win32/winutil.c   2010-06-08 12:54:11 UTC (rev 300272)
+++ php/php-src/trunk/win32/winutil.c   2010-06-08 13:00:11 UTC (rev 300273)
@@ -12,13 +12,15 @@
| obtain it through the world-wide-web, please send a note to  |
| lice...@php.net so we can mail you a copy immediately.   |
+--+
-   | Author:  |
+   | Author: Zeev Suraski z...@zend.com |
+   * Pierre Joye pie...@php.net |
+--+
  */

 /* $Id$ */

 #include php.h
+#include wincrypt.h

 PHPAPI char *php_win_err(int error)
 {
@@ -46,3 +48,35 @@
return 0;
}
 }
+
+PHPAPI int php_win32_get_random_bytes(unsigned char *buf, size_t size) {  /* 
{{{ */
+   HCRYPTPROV   hCryptProv;
+   int has_context = 0;
+   BOOL ret;
+   size_t i = 0;
+
+   if (!CryptAcquireContext(hCryptProv, NULL, NULL, PROV_RSA_FULL, 0)) {
+   /* Could mean that the key container does not exist, let try
+  again by asking for a new one */
+   if (GetLastError() == NTE_BAD_KEYSET) {
+   if (CryptAcquireContext(hCryptProv, NULL, NULL, 
PROV_RSA_FULL, CRYPT_NEWKEYSET)) {
+   has_context = 1;
+   } else {
+   return FAILURE;
+   }
+   }
+   }
+
+   ret = CryptGenRandom(hCryptProv, size, buf);
+   CryptReleaseContext(hCryptProv, 0);
+   if (ret) {
+   while (i  size  buf[i] != 0) {
+   i++;
+   }
+   if (i == size) {
+   return SUCCESS;
+   }
+   }
+   return FAILURE;
+}
+/* }}} */

Modified: php/php-src/trunk/win32/winutil.h
===
--- php/php-src/trunk/win32/winutil.h   2010-06-08 12:54:11 UTC (rev 300272)
+++ php/php-src/trunk/win32/winutil.h   2010-06-08 13:00:11 UTC (rev 300273)
@@ -20,3 +20,4 @@

 #define php_win_err()  php_win_err(GetLastError())
 int php_win32_check_trailing_space(const char * path, const int path_len);
+PHPAPI