diff options
author | Jakub Zelenka <bukka@php.net> | 2016-03-02 19:54:04 +0000 |
---|---|---|
committer | Jakub Zelenka <bukka@php.net> | 2016-07-17 17:33:42 +0100 |
commit | 0598a8da2bc005b3a0be2801033b5347020f8316 (patch) | |
tree | 267ece810376497bc92fb608839bddcf1f7ddd24 | |
parent | e138b51dad1fa9ba845c4669722545cb05aa7207 (diff) | |
download | php-git-0598a8da2bc005b3a0be2801033b5347020f8316.tar.gz |
Do not use X509 props directly in openssl_x509_parse
-rw-r--r-- | ext/openssl/openssl.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c index fa63fb4e4c..d1c104e52e 100644 --- a/ext/openssl/openssl.c +++ b/ext/openssl/openssl.c @@ -2128,6 +2128,8 @@ PHP_FUNCTION(openssl_x509_parse) char * tmpstr; zval subitem; X509_EXTENSION *extension; + X509_NAME *subject_name; + char *cert_name; char *extname; BIO *bio_out; BUF_MEM *bio_buf; @@ -2142,12 +2144,12 @@ PHP_FUNCTION(openssl_x509_parse) } array_init(return_value); - if (cert->name) { - add_assoc_string(return_value, "name", cert->name); - } -/* add_assoc_bool(return_value, "valid", cert->valid); */ + subject_name = X509_get_subject_name(cert); + cert_name = X509_NAME_oneline(subject_name, NULL, 0); + add_assoc_string(return_value, "name", cert_name); + OPENSSL_free(cert_name); - add_assoc_name_entry(return_value, "subject", X509_get_subject_name(cert), useshortnames); + add_assoc_name_entry(return_value, "subject", subject_name, useshortnames); /* hash as used in CA directories to lookup cert by subject name */ { char buf[32]; @@ -2171,7 +2173,7 @@ PHP_FUNCTION(openssl_x509_parse) add_assoc_string(return_value, "alias", tmpstr); } - sig_nid = OBJ_obj2nid((cert)->sig_alg->algorithm); + sig_nid = X509_get_signature_nid(cert); add_assoc_string(return_value, "signatureTypeSN", (char*)OBJ_nid2sn(sig_nid)); add_assoc_string(return_value, "signatureTypeLN", (char*)OBJ_nid2ln(sig_nid)); add_assoc_long(return_value, "signatureTypeNID", sig_nid); |