tony2001                Fri Sep  8 20:10:47 2006 UTC

  Modified files:              (Branch: PHP_5_2)
    /php-src    NEWS 
    /php-src/ext/openssl        openssl.c 
  Log:
  implement feature request #38731 (openssl_pkey_new does not support DSA key 
generation)
  patch by marci at balabit dot hu
  
  
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.238&r2=1.2027.2.547.2.239&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.238 php-src/NEWS:1.2027.2.547.2.239
--- php-src/NEWS:1.2027.2.547.2.238     Wed Sep  6 17:25:57 2006
+++ php-src/NEWS        Fri Sep  8 20:10:46 2006
@@ -1,6 +1,8 @@
 'PHP                                                                        
NEWS
 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 ?? Sep 2006, PHP 5.2.0RC4
+- Added DSA key generation support to openssl_pkey_new(), FR #38731
+  (marci at balabit dot hu, Tony)
 - Removed current working directory from the php.ini search path for CLI and
   readded it for other SAPIs (restore to pre 5.1.x behaviour). (Edin)
 - Fixed bug #38700 (SoapClient::__getTypes never returns). (Dmitry)
http://cvs.php.net/viewvc.cgi/php-src/ext/openssl/openssl.c?r1=1.98.2.5.2.18&r2=1.98.2.5.2.19&diff_format=u
Index: php-src/ext/openssl/openssl.c
diff -u php-src/ext/openssl/openssl.c:1.98.2.5.2.18 
php-src/ext/openssl/openssl.c:1.98.2.5.2.19
--- php-src/ext/openssl/openssl.c:1.98.2.5.2.18 Thu Sep  7 14:11:05 2006
+++ php-src/ext/openssl/openssl.c       Fri Sep  8 20:10:47 2006
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: openssl.c,v 1.98.2.5.2.18 2006/09/07 14:11:05 iliaa Exp $ */
+/* $Id: openssl.c,v 1.98.2.5.2.19 2006/09/08 20:10:47 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -2051,9 +2051,27 @@
        if ((req->priv_key = EVP_PKEY_new()) != NULL) {
                switch(req->priv_key_type) {
                        case OPENSSL_KEYTYPE_RSA:
-                               if (EVP_PKEY_assign_RSA(req->priv_key, 
RSA_generate_key(req->priv_key_bits, 0x10001, NULL, NULL)))
+                               if (EVP_PKEY_assign_RSA(req->priv_key, 
RSA_generate_key(req->priv_key_bits, 0x10001, NULL, NULL))) {
                                        return_val = req->priv_key;
+                               }
+                               break;
+#ifndef NO_DSA
+                       case OPENSSL_KEYTYPE_DSA:
+                               {
+                                       DSA *dsapar = 
DSA_generate_parameters(req->priv_key_bits, NULL, 0, NULL, NULL, NULL, NULL);
+                                       if (dsapar) {
+                                               DSA_set_method(dsapar, 
DSA_get_default_method());
+                                               if (DSA_generate_key(dsapar)) {
+                                                       if 
(EVP_PKEY_assign_DSA(req->priv_key, dsapar)) {
+                                                               return_val = 
req->priv_key;
+                                                       }
+                                               } else {
+                                                       DSA_free(dsapar);
+                                               }
+                                       }
+                               }
                                break;
+#endif
                        default:
                                php_error_docref(NULL TSRMLS_CC, E_WARNING, 
"Unsupported private key type");
                }

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

Reply via email to