Commit: b2881db9a98db6e92d9f6964dd83a003c39a7fbd Author: datibbaw <datib...@php.net> Fri, 20 Sep 2013 16:56:50 +0800 Parents: 5cff92fb12e83f4c6c81c6e8b89480def3ee5e9e Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=b2881db9a98db6e92d9f6964dd83a003c39a7fbd Log: added option for hash function Changed paths: M ext/openssl/openssl.c Diff: diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c index 5dfb9b4..6979e35 100644 --- a/ext/openssl/openssl.c +++ b/ext/openssl/openssl.c @@ -132,6 +132,7 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_openssl_x509_digest, 0, 0, 2) ZEND_ARG_INFO(0, x509) ZEND_ARG_INFO(1, out) + ZEND_ARG_INFO(0, method) ZEND_ARG_INFO(0, raw_output) ZEND_END_ARG_INFO() @@ -1678,13 +1679,16 @@ PHP_FUNCTION(openssl_x509_digest) zval **zcert, *zout; long certresource; zend_bool raw_output = 0; + char *method = "sha1"; + int method_len; + const EVP_MD *mdtype; unsigned char md[EVP_MAX_MD_SIZE]; unsigned int n; RETVAL_FALSE; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Zz|b", &zcert, &zout, &raw_output) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Zz|sb", &zcert, &zout, &method, &method_len, &raw_output) == FAILURE) { return; } @@ -1694,7 +1698,13 @@ PHP_FUNCTION(openssl_x509_digest) return; } - if (!X509_digest(cert, EVP_sha1(), md, &n)) { + mdtype = EVP_get_digestbyname(method); + if (!mdtype) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown signature algorithm"); + RETURN_FALSE; + } + + if (!X509_digest(cert, mdtype, md, &n)) { php_error_docref(NULL TSRMLS_CC, E_ERROR, "out of memory"); return; } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php