From b9e8695e753d5e5c4512772aa04b62a7ec59dd01 Mon Sep 17 00:00:00 2001 From: Steph Fox Date: Mon, 23 Jun 2008 19:18:01 +0000 Subject: [PATCH] - One solution for the openssl issues - config.m4 needs bringing into line with config.w32, there may be broken behaviour under *nix until this is done --- ext/phar/config.w32 | 10 ++++++++++ ext/phar/phar.c | 9 +++++++++ .../tests/phar_get_supported_signatures_002.phpt | 10 +++++++--- ext/phar/tests/phar_setsignaturealgo2.phpt | 8 +++++--- ext/phar/tests/phpinfo_001.phpt | 12 +++++++++--- ext/phar/tests/phpinfo_002.phpt | 11 ++++++++--- ext/phar/tests/phpinfo_003.phpt | 11 ++++++++--- ext/phar/tests/phpinfo_004.phpt | 12 +++++++++--- ext/phar/tests/test_signaturealgos.phpt | 9 ++++++--- ext/phar/util.c | 9 ++------- 10 files changed, 73 insertions(+), 28 deletions(-) diff --git a/ext/phar/config.w32 b/ext/phar/config.w32 index f612f0dd13..e88b237535 100644 --- a/ext/phar/config.w32 +++ b/ext/phar/config.w32 @@ -2,11 +2,21 @@ // vim:ft=javascript ARG_ENABLE("phar", "disable phar support", "yes"); +ARG_ENABLE("phar-ssl", "enable phar with native OpenSSL support", "no"); + +if (PHP_PHAR_SSL != "no") { + PHP_PHAR = PHP_PHAR_SSL; + PHP_PHAR_SHARED = PHP_PHAR_SSL_SHARED; +} if (PHP_PHAR != "no") { EXTENSION("phar", "dirstream.c func_interceptors.c phar.c phar_object.c phar_path_check.c stream.c tar.c util.c zip.c"); if (PHP_PHAR_SHARED) { ADD_FLAG("CFLAGS_PHAR", "/D COMPILE_DL_PHAR "); } + if (PHP_PHAR_SSL != "no") { + ADD_FLAG("LIBS_PHAR", "libeay32.lib"); + AC_DEFINE('PHAR_HAVE_OPENSSL', 1); + } ADD_EXTENSION_DEP('phar', 'spl', true); } diff --git a/ext/phar/phar.c b/ext/phar/phar.c index 4de7904354..6a0620eebf 100644 --- a/ext/phar/phar.c +++ b/ext/phar/phar.c @@ -3422,6 +3422,15 @@ PHP_MINFO_FUNCTION(phar) /* {{{ */ } else { php_info_print_table_row(2, "bzip2 compression", "disabled (install pecl/bz2)"); } +#ifdef PHAR_HAVE_OPENSSL + php_info_print_table_row(2, "Native OpenSSL support", "enabled"); +#else + if (zend_hash_exists(&module_registry, "openssl", sizeof("openssl"))) { + php_info_print_table_row(2, "OpenSSL support", "enabled"); + } else { + php_info_print_table_row(2, "OpenSSL support", "disabled (install ext/openssl)"); + } +#endif php_info_print_table_end(); php_info_print_box_start(0); diff --git a/ext/phar/tests/phar_get_supported_signatures_002.phpt b/ext/phar/tests/phar_get_supported_signatures_002.phpt index 21bb56d7ea..fa9d02e584 100644 --- a/ext/phar/tests/phar_get_supported_signatures_002.phpt +++ b/ext/phar/tests/phar_get_supported_signatures_002.phpt @@ -1,9 +1,13 @@ --TEST-- Phar::getSupportedSignatures() --SKIPIF-- - - - + --INI-- phar.require_hash=0 phar.readonly=0 diff --git a/ext/phar/tests/phar_setsignaturealgo2.phpt b/ext/phar/tests/phar_setsignaturealgo2.phpt index c7f5f9ecfc..e3f858d5d6 100644 --- a/ext/phar/tests/phar_setsignaturealgo2.phpt +++ b/ext/phar/tests/phar_setsignaturealgo2.phpt @@ -1,9 +1,11 @@ --TEST-- Phar::setSupportedSignatures() with hash --SKIPIF-- - - - + --INI-- phar.require_hash=0 phar.readonly=0 diff --git a/ext/phar/tests/phpinfo_001.phpt b/ext/phar/tests/phpinfo_001.phpt index 400a553226..b81751dc72 100644 --- a/ext/phar/tests/phpinfo_001.phpt +++ b/ext/phar/tests/phpinfo_001.phpt @@ -1,9 +1,13 @@ --TEST-- Phar: phpinfo display 1 --SKIPIF-- - - - + --INI-- phar.readonly=0 phar.require_hash=0 @@ -28,6 +32,7 @@ Tar-based phar archives => enabled ZIP-based phar archives => enabled gzip compression => enabled bzip2 compression => enabled +OpenSSL support => disabled (install ext/openssl) Phar based on pear/PHP_Archive, original concept by Davey Shafik. @@ -49,6 +54,7 @@ Tar-based phar archives => enabled ZIP-based phar archives => enabled gzip compression => enabled bzip2 compression => enabled +OpenSSL support => disabled (install ext/openssl) Phar based on pear/PHP_Archive, original concept by Davey Shafik. diff --git a/ext/phar/tests/phpinfo_002.phpt b/ext/phar/tests/phpinfo_002.phpt index 5fd0370d33..68e7af0d51 100644 --- a/ext/phar/tests/phpinfo_002.phpt +++ b/ext/phar/tests/phpinfo_002.phpt @@ -1,9 +1,13 @@ --TEST-- Phar: phpinfo display 2 --SKIPIF-- - - - + --INI-- phar.readonly=1 phar.require_hash=1 @@ -26,6 +30,7 @@ Tar-based phar archives => enabled ZIP-based phar archives => enabled gzip compression => enabled bzip2 compression => enabled +OpenSSL support => disabled (install ext/openssl) Phar based on pear/PHP_Archive, original concept by Davey Shafik. diff --git a/ext/phar/tests/phpinfo_003.phpt b/ext/phar/tests/phpinfo_003.phpt index 16690b476c..6908ba1e7f 100644 --- a/ext/phar/tests/phpinfo_003.phpt +++ b/ext/phar/tests/phpinfo_003.phpt @@ -1,9 +1,13 @@ --TEST-- Phar: phpinfo display 3 --SKIPIF-- - - - + --INI-- phar.readonly=1 phar.require_hash=1 @@ -26,6 +30,7 @@ Tar-based phar archives => enabled ZIP-based phar archives => enabled gzip compression => disabled (install ext/zlib) bzip2 compression => disabled (install pecl/bz2) +OpenSSL support => disabled (install ext/openssl) Phar based on pear/PHP_Archive, original concept by Davey Shafik. diff --git a/ext/phar/tests/phpinfo_004.phpt b/ext/phar/tests/phpinfo_004.phpt index b541c6f00a..473b5332c0 100644 --- a/ext/phar/tests/phpinfo_004.phpt +++ b/ext/phar/tests/phpinfo_004.phpt @@ -1,9 +1,13 @@ --TEST-- Phar: phpinfo display 4 --SKIPIF-- - - - + --INI-- phar.readonly=0 phar.require_hash=0 @@ -31,6 +35,7 @@ phpinfo(INFO_MODULES); ZIP-based phar archives enabled gzip compression enabled bzip2 compression enabled +OpenSSL support disabled (install ext/openssl)
+
@@ -54,6 +59,7 @@ Phar based on pear/PHP_Archive, original concept by Davey Shafik.
Phar full
ZIP-based phar archives enabled
gzip compression enabled
bzip2 compression enabled
OpenSSL support disabled (install ext/openssl)

diff --git a/ext/phar/tests/test_signaturealgos.phpt b/ext/phar/tests/test_signaturealgos.phpt index 990cf1e66a..2ef7ca109f 100644 --- a/ext/phar/tests/test_signaturealgos.phpt +++ b/ext/phar/tests/test_signaturealgos.phpt @@ -1,9 +1,12 @@ --TEST-- Phar: verify signature parsing works --SKIPIF-- - - - + --INI-- phar.require_hash=0 phar.readonly=0 diff --git a/ext/phar/util.c b/ext/phar/util.c index 4ea546097a..fb6edb464c 100644 --- a/ext/phar/util.c +++ b/ext/phar/util.c @@ -1596,13 +1596,14 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, php_uint32 sig_typ char *pubkey = NULL, *pfile; php_stream *pfp; +#ifndef PHAR_HAVE_OPENSSL if (!zend_hash_exists(&module_registry, "openssl", sizeof("openssl"))) { if (error) { spprintf(error, 0, "openssl not loaded"); } return FAILURE; } - +#endif /* use __FILE__ . '.pubkey' for public key file */ spprintf(&pfile, 0, "%s.pubkey", fname); pfp = php_stream_open_wrapper(pfile, "rb", 0, NULL); @@ -1873,12 +1874,6 @@ int phar_create_signature(phar_archive_data *phar, php_stream *fp, char **signat EVP_MD *mdtype = (EVP_MD *) EVP_sha1(); EVP_MD_CTX md_ctx; - if (!zend_hash_exists(&module_registry, "openssl", sizeof("openssl"))) { - if (error) { - spprintf(error, 0, "phar \"%s\" openssl signature cannot be created, openssl not loaded", phar->fname); - } - return FAILURE; - } in = BIO_new_mem_buf(PHAR_G(openssl_privatekey), PHAR_G(openssl_privatekey_len)); if (in == NULL) { -- 2.40.0