pajoye Tue Aug 15 20:27:20 2006 UTC Modified files: (Branch: PHP_5_2) /php-src NEWS /php-src/ext/openssl php_openssl.h openssl.c Log: - add openssl_csr_get_subject() and openssl_csr_get_public_key() http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.205&r2=1.2027.2.547.2.206&diff_format=u Index: php-src/NEWS diff -u php-src/NEWS:1.2027.2.547.2.205 php-src/NEWS:1.2027.2.547.2.206 --- php-src/NEWS:1.2027.2.547.2.205 Tue Aug 15 20:13:47 2006 +++ php-src/NEWS Tue Aug 15 20:27:20 2006 @@ -29,6 +29,7 @@ . Added openssl_pkey_get_details, returns the details of a key . Added x509 v3 extensions support . Added a new constant OPENSSL_KEYTYPE_EC + . Added openssl_csr_get_subject() and openssl_csr_get_public_key() - Fixed overflow on 64bit systems in str_repeat() and wordwrap(). (Stefan E.) - Disabled CURLOPT_FOLLOWLOCATION in curl when open_basedir or safe_mode are http://cvs.php.net/viewvc.cgi/php-src/ext/openssl/php_openssl.h?r1=1.16.2.1.2.1&r2=1.16.2.1.2.2&diff_format=u Index: php-src/ext/openssl/php_openssl.h diff -u php-src/ext/openssl/php_openssl.h:1.16.2.1.2.1 php-src/ext/openssl/php_openssl.h:1.16.2.1.2.2 --- php-src/ext/openssl/php_openssl.h:1.16.2.1.2.1 Tue Aug 15 00:38:04 2006 +++ php-src/ext/openssl/php_openssl.h Tue Aug 15 20:27:20 2006 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_openssl.h,v 1.16.2.1.2.1 2006/08/15 00:38:04 pajoye Exp $ */ +/* $Id: php_openssl.h,v 1.16.2.1.2.2 2006/08/15 20:27:20 pajoye Exp $ */ #ifndef PHP_OPENSSL_H #define PHP_OPENSSL_H @@ -67,7 +67,8 @@ PHP_FUNCTION(openssl_csr_export); PHP_FUNCTION(openssl_csr_export_to_file); PHP_FUNCTION(openssl_csr_sign); - +PHP_FUNCTION(openssl_csr_get_subject); +PHP_FUNCTION(openssl_csr_get_public_key); #else #define phpext_openssl_ptr NULL http://cvs.php.net/viewvc.cgi/php-src/ext/openssl/openssl.c?r1=1.98.2.5.2.10&r2=1.98.2.5.2.11&diff_format=u Index: php-src/ext/openssl/openssl.c diff -u php-src/ext/openssl/openssl.c:1.98.2.5.2.10 php-src/ext/openssl/openssl.c:1.98.2.5.2.11 --- php-src/ext/openssl/openssl.c:1.98.2.5.2.10 Tue Aug 15 00:38:04 2006 +++ php-src/ext/openssl/openssl.c Tue Aug 15 20:27:20 2006 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: openssl.c,v 1.98.2.5.2.10 2006/08/15 00:38:04 pajoye Exp $ */ +/* $Id: openssl.c,v 1.98.2.5.2.11 2006/08/15 20:27:20 pajoye Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -113,6 +113,8 @@ PHP_FE(openssl_csr_export, second_arg_force_ref) PHP_FE(openssl_csr_export_to_file, NULL) PHP_FE(openssl_csr_sign, NULL) + PHP_FE(openssl_csr_get_subject, NULL) + PHP_FE(openssl_csr_get_public_key, NULL) PHP_FE(openssl_sign, second_arg_force_ref) PHP_FE(openssl_verify, NULL) @@ -248,9 +250,13 @@ ASN1_STRING * str = NULL; ASN1_OBJECT * obj; - MAKE_STD_ZVAL(subitem); - array_init(subitem); - + if (key != NULL) { + MAKE_STD_ZVAL(subitem); + array_init(subitem); + } else { + subitem = val; + } + for (i = 0; i < X509_NAME_entry_count(name); i++) { ne = X509_NAME_get_entry(name, i); obj = X509_NAME_ENTRY_get_object(ne); @@ -291,7 +297,9 @@ } } } - zend_hash_update(HASH_OF(val), key, strlen(key) + 1, (void *)&subitem, sizeof(subitem), NULL); + if (key != NULL) { + zend_hash_update(HASH_OF(val), key, strlen(key) + 1, (void *)&subitem, sizeof(subitem), NULL); + } } /* }}} */ @@ -1527,8 +1535,6 @@ } /* }}} */ - - /* {{{ proto bool openssl_csr_export(resource csr, string &out [, bool notext=true]) Exports a CSR to file or a var */ PHP_FUNCTION(openssl_csr_export) @@ -1789,6 +1795,61 @@ } /* }}} */ +/* {{{ proto mixed openssl_csr_get_subject(mixed csr) + Returns the subject of a CERT or FALSE on error */ +PHP_FUNCTION(openssl_csr_get_subject) +{ + zval * zcsr; + zend_bool use_shortnames = 1; + long csr_resource; + X509_NAME * subject; + X509_REQ * csr; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|b", &zcsr, &use_shortnames) == FAILURE) { + return; + } + + csr = php_openssl_csr_from_zval(&zcsr, 0, &csr_resource TSRMLS_CC); + + if (csr == NULL) { + RETURN_FALSE; + } + + subject = X509_REQ_get_subject_name(csr); + + array_init(return_value); + add_assoc_name_entry(return_value, NULL, subject, use_shortnames TSRMLS_CC); + return; +} +/* }}} */ + +/* {{{ proto mixed openssl_csr_get_public_key(mixed csr) + Returns the subject of a CERT or FALSE on error */ +PHP_FUNCTION(openssl_csr_get_public_key) +{ + zval * zcsr; + zend_bool use_shortnames = 1; + long csr_resource; + + X509_REQ * csr; + EVP_PKEY *tpubkey; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|b", &zcsr, &use_shortnames) == FAILURE) { + return; + } + + csr = php_openssl_csr_from_zval(&zcsr, 0, &csr_resource TSRMLS_CC); + + if (csr == NULL) { + RETURN_FALSE; + } + + tpubkey=X509_REQ_get_pubkey(csr); + RETVAL_RESOURCE(zend_list_insert(tpubkey, le_key)); + return; +} +/* }}} */ + /* }}} */ /* {{{ EVP Public/Private key functions */
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php