tony2001 Fri Sep 8 20:09:08 2006 UTC Modified files: /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/ext/openssl/openssl.c?r1=1.121&r2=1.122&diff_format=u Index: php-src/ext/openssl/openssl.c diff -u php-src/ext/openssl/openssl.c:1.121 php-src/ext/openssl/openssl.c:1.122 --- php-src/ext/openssl/openssl.c:1.121 Thu Sep 7 14:16:53 2006 +++ php-src/ext/openssl/openssl.c Fri Sep 8 20:09:07 2006 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: openssl.c,v 1.121 2006/09/07 14:16:53 iliaa Exp $ */ +/* $Id: openssl.c,v 1.122 2006/09/08 20:09:07 tony2001 Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -1963,9 +1963,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