summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Lowrey <rdlowrey@php.net>2015-03-05 10:21:32 -0700
committerDaniel Lowrey <rdlowrey@php.net>2015-03-05 10:21:32 -0700
commit5939de35a8fc6b439c8a60db02a5181a386edaa0 (patch)
tree00372a834427609051028ee7300e6d55abeb8d1b
parente8e5913e5e3500d2efee4a60fdfd77ab46fe2021 (diff)
parent94140afa69e334405688d3cb09a47c07aeaef825 (diff)
downloadphp-git-5939de35a8fc6b439c8a60db02a5181a386edaa0.tar.gz
Merge branch 'PHP-5.5' into PHP-5.6
* PHP-5.5: Fix bug #67403 (Add signatureType to openssl_x509_parse) 5.5.24 now Conflicts: configure.in main/php_version.h
-rw-r--r--NEWS1
-rw-r--r--ext/openssl/openssl.c13
-rw-r--r--ext/openssl/tests/bug67403.phpt23
-rw-r--r--ext/openssl/tests/openssl_x509_parse_basic.phpt16
4 files changed, 45 insertions, 8 deletions
diff --git a/NEWS b/NEWS
index fa78889146..0f86ea8552 100644
--- a/NEWS
+++ b/NEWS
@@ -41,6 +41,7 @@
. Fixed bug #68879 (IP Address fields in subjectAltNames not used)
(Daniel Lowrey)
. Fixed bug #68265 (SAN match fails with trailing DNS dot) (Daniel Lowrey)
+ . Fixed bug #67403 (Add signatureType to openssl_x509_parse) (Daniel Lowrey)
- pgsql:
. Fixed bug #68638 (pg_update() fails to store infinite values).
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c
index 5538ef76da..290b480eaa 100644
--- a/ext/openssl/openssl.c
+++ b/ext/openssl/openssl.c
@@ -1927,7 +1927,7 @@ PHP_FUNCTION(openssl_x509_parse)
zval ** zcert;
X509 * cert = NULL;
long certresource = -1;
- int i;
+ int i, sig_nid;
zend_bool useshortnames = 1;
char * tmpstr;
zval * subitem;
@@ -1974,11 +1974,12 @@ PHP_FUNCTION(openssl_x509_parse)
if (tmpstr) {
add_assoc_string(return_value, "alias", tmpstr, 1);
}
-/*
- add_assoc_long(return_value, "signaturetypeLONG", X509_get_signature_type(cert));
- add_assoc_string(return_value, "signaturetype", OBJ_nid2sn(X509_get_signature_type(cert)), 1);
- add_assoc_string(return_value, "signaturetypeLN", OBJ_nid2ln(X509_get_signature_type(cert)), 1);
-*/
+
+ sig_nid = OBJ_obj2nid((cert)->sig_alg->algorithm);
+ add_assoc_string(return_value, "signatureTypeSN", (char*)OBJ_nid2sn(sig_nid), 1);
+ add_assoc_string(return_value, "signatureTypeLN", (char*)OBJ_nid2ln(sig_nid), 1);
+ add_assoc_long(return_value, "signatureTypeNID", sig_nid TSRMLS_CC);
+
MAKE_STD_ZVAL(subitem);
array_init(subitem);
diff --git a/ext/openssl/tests/bug67403.phpt b/ext/openssl/tests/bug67403.phpt
new file mode 100644
index 0000000000..0a19686af1
--- /dev/null
+++ b/ext/openssl/tests/bug67403.phpt
@@ -0,0 +1,23 @@
+--TEST--
+Bug #67403: Add signatureType to openssl_x509_parse
+--SKIPIF--
+<?php
+if (!extension_loaded("openssl")) die("skip");
+--FILE--
+<?php
+$r = openssl_x509_parse(file_get_contents(__DIR__.'/bug64802.pem'));
+var_dump($r['signatureTypeSN']);
+var_dump($r['signatureTypeLN']);
+var_dump($r['signatureTypeNID']);
+
+$r = openssl_x509_parse(file_get_contents(__DIR__.'/bug37820cert.pem'));
+var_dump($r['signatureTypeSN']);
+var_dump($r['signatureTypeLN']);
+var_dump($r['signatureTypeNID']);
+--EXPECTF--
+string(8) "RSA-SHA1"
+string(21) "sha1WithRSAEncryption"
+int(65)
+string(7) "RSA-MD5"
+string(20) "md5WithRSAEncryption"
+int(8)
diff --git a/ext/openssl/tests/openssl_x509_parse_basic.phpt b/ext/openssl/tests/openssl_x509_parse_basic.phpt
index fb0bbc7604..325b2ee4b9 100644
--- a/ext/openssl/tests/openssl_x509_parse_basic.phpt
+++ b/ext/openssl/tests/openssl_x509_parse_basic.phpt
@@ -12,7 +12,7 @@ var_dump(openssl_x509_parse($cert));
var_dump(openssl_x509_parse($cert, false));
?>
--EXPECTF--
-array(12) {
+array(15) {
["name"]=>
string(96) "/C=BR/ST=Rio Grande do Sul/L=Porto Alegre/CN=Henrique do N. Angelo/emailAddress=hnangelo@php.net"
["subject"]=>
@@ -55,6 +55,12 @@ array(12) {
int(1214821723)
["validTo_time_t"]=>
int(1217413723)
+ ["signatureTypeSN"]=>
+ string(8) "RSA-SHA1"
+ ["signatureTypeLN"]=>
+ string(21) "sha1WithRSAEncryption"
+ ["signatureTypeNID"]=>
+ int(65)
["purposes"]=>
array(9) {
[1]=>
@@ -152,7 +158,7 @@ serial:AE:C5:56:CC:72:37:50:A2
string(7) "CA:TRUE"
}
}
-array(12) {
+array(15) {
["name"]=>
string(96) "/C=BR/ST=Rio Grande do Sul/L=Porto Alegre/CN=Henrique do N. Angelo/emailAddress=hnangelo@php.net"
["subject"]=>
@@ -195,6 +201,12 @@ array(12) {
int(1214821723)
["validTo_time_t"]=>
int(1217413723)
+ ["signatureTypeSN"]=>
+ string(8) "RSA-SHA1"
+ ["signatureTypeLN"]=>
+ string(21) "sha1WithRSAEncryption"
+ ["signatureTypeNID"]=>
+ int(65)
["purposes"]=>
array(9) {
[1]=>