]> granicus.if.org Git - php/commitdiff
- One solution for the openssl issues
authorSteph Fox <sfox@php.net>
Mon, 23 Jun 2008 19:18:01 +0000 (19:18 +0000)
committerSteph Fox <sfox@php.net>
Mon, 23 Jun 2008 19:18:01 +0000 (19:18 +0000)
- config.m4 needs bringing into line with config.w32, there may be broken behaviour under *nix until this is done

ext/phar/config.w32
ext/phar/phar.c
ext/phar/tests/phar_get_supported_signatures_002.phpt
ext/phar/tests/phar_setsignaturealgo2.phpt
ext/phar/tests/phpinfo_001.phpt
ext/phar/tests/phpinfo_002.phpt
ext/phar/tests/phpinfo_003.phpt
ext/phar/tests/phpinfo_004.phpt
ext/phar/tests/test_signaturealgos.phpt
ext/phar/util.c

index f612f0dd1379ab56053d7e17cc819cba4df63ed7..e88b237535f8f588083dadab73ce36b376d65af5 100644 (file)
@@ -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);
 }
index 4de7904354b74ca7d4c02b36d1f17a1483949af3..6a0620eebf743989140c004250929bfe32d45be1 100644 (file)
@@ -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);
index 21bb56d7ea7fda8f73f1dcda102bef573f5fbfab..fa9d02e584398c9f187aee5021cc707ba067b66f 100644 (file)
@@ -1,9 +1,13 @@
 --TEST--
 Phar::getSupportedSignatures()
 --SKIPIF--
-<?php if (!extension_loaded("phar")) die("skip"); ?>
-<?php if (!extension_loaded("hash")) die("skip extension hash required"); ?>
-<?php if (extension_loaded("openssl")) die("skip extension openssl loaded"); ?>
+<?php
+if (!extension_loaded("phar")) die("skip");
+if (!extension_loaded("hash")) die("skip extension hash required");
+if (extension_loaded("openssl")) die("skip extension openssl loaded");
+$arr = Phar::getSupportedSignatures();
+if (in_array("OpenSSL", $arr)) die ("skip native openssl support enabled");
+?>
 --INI--
 phar.require_hash=0
 phar.readonly=0
index c7f5f9ecfca1c591fbf382b5e41103d7b357c94f..e3f858d5d626224ac629fe02fc7172e6ce7420b5 100644 (file)
@@ -1,9 +1,11 @@
 --TEST--
 Phar::setSupportedSignatures() with hash
 --SKIPIF--
-<?php if (!extension_loaded("phar")) die("skip"); ?>
-<?php if (!extension_loaded("hash")) die("skip extension hash required"); ?>
-<?php if (!extension_loaded("openssl")) die("skip extension openssl required"); ?>
+<?php
+if (!extension_loaded("phar")) die("skip");
+if (!extension_loaded("hash")) die("skip hash extension required");
+if (!extension_loaded("openssl")) die("skip openssl extension required");
+?>
 --INI--
 phar.require_hash=0
 phar.readonly=0
index 400a553226d642e676e5b4585fa924cb2dab6861..b81751dc729f3f58136fb1c4653e11fcc33a79ff 100644 (file)
@@ -1,9 +1,13 @@
 --TEST--
 Phar: phpinfo display 1
 --SKIPIF--
-<?php if (!extension_loaded("phar")) die("skip"); ?>
-<?php if (!extension_loaded("zlib")) die("skip zlib not loaded"); ?>
-<?php if (!extension_loaded("bz2")) die("skip bz2 not loaded"); ?>
+<?php
+if (!extension_loaded("phar")) die("skip");
+if (!extension_loaded("zlib")) die("skip zlib not loaded");
+if (!extension_loaded("bz2")) die("skip bz2 not loaded");
+$arr = Phar::getSupportedSignatures();
+if (in_array("OpenSSL", $arr)) die("skip openssl support enabled");
+?>
 --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.
index 5fd0370d3397081f533a5018ed103683d9ebb354..68e7af0d5199a1c3f55b640f7d4ec64c7024da32 100644 (file)
@@ -1,9 +1,13 @@
 --TEST--
 Phar: phpinfo display 2
 --SKIPIF--
-<?php if (!extension_loaded("phar")) die("skip"); ?>
-<?php if (!extension_loaded("zlib")) die("skip zlib not loaded"); ?>
-<?php if (!extension_loaded("bz2")) die("skip bz2 not loaded"); ?>
+<?php
+if (!extension_loaded("phar")) die("skip");
+if (!extension_loaded("zlib")) die("skip zlib not loaded");
+if (!extension_loaded("bz2")) die("skip bz2 not loaded");
+$arr = Phar::getSupportedSignatures();
+if (in_array("OpenSSL", $arr)) die("skip openssl support enabled");
+?>
 --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.
index 16690b476cf28a0b473b080b14f3c33f4a592deb..6908ba1e7f48e3b7f7ef195f0fc14804b392567d 100644 (file)
@@ -1,9 +1,13 @@
 --TEST--
 Phar: phpinfo display 3
 --SKIPIF--
-<?php if (!extension_loaded("phar")) die("skip"); ?>
-<?php if (extension_loaded("zlib")) die("skip zlib loaded"); ?>
-<?php if (extension_loaded("bz2")) die("skip bz2 loaded"); ?>
+<?php
+if (!extension_loaded("phar")) die("skip");
+if (extension_loaded("zlib")) die("skip zlib loaded");
+if (extension_loaded("bz2")) die("skip bz2 loaded");
+$arr = Phar::getSupportedSignatures();
+if (in_array("OpenSSL", $arr)) die("skip openssl support enabled");
+?>
 --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.
index b541c6f00a2e51103d60c8c649b40750ebb7bfb2..473b5332c04b696e150168cba723742d5dd45be6 100644 (file)
@@ -1,9 +1,13 @@
 --TEST--
 Phar: phpinfo display 4
 --SKIPIF--
-<?php if (!extension_loaded("phar")) die("skip"); ?>
-<?php if (!extension_loaded("zlib")) die("skip zlib not loaded"); ?>
-<?php if (!extension_loaded("bz2")) die("skip bz2 not loaded"); ?>
+<?php
+if (!extension_loaded("phar")) die("skip");
+if (!extension_loaded("zlib")) die("skip zlib not loaded");
+if (!extension_loaded("bz2")) die("skip bz2 not loaded");
+$arr = Phar::getSupportedSignatures();
+if (in_array("OpenSSL", $arr)) die("skip native openssl support enabled");
+?>
 --INI--
 phar.readonly=0
 phar.require_hash=0
@@ -31,6 +35,7 @@ phpinfo(INFO_MODULES);
 <tr><td class="e">ZIP-based phar archives </td><td class="v">enabled </td></tr>
 <tr><td class="e">gzip compression </td><td class="v">enabled </td></tr>
 <tr><td class="e">bzip2 compression </td><td class="v">enabled </td></tr>
+<tr><td class="e">OpenSSL support </td><td class="v">disabled (install ext/openssl) </td></tr>
 </table><br />
 <table border="0" cellpadding="3" width="600">
 <tr class="v"><td>
@@ -54,6 +59,7 @@ Phar based on pear/PHP_Archive, original concept by Davey Shafik.<br />Phar full
 <tr><td class="e">ZIP-based phar archives </td><td class="v">enabled </td></tr>
 <tr><td class="e">gzip compression </td><td class="v">enabled </td></tr>
 <tr><td class="e">bzip2 compression </td><td class="v">enabled </td></tr>
+<tr><td class="e">OpenSSL support </td><td class="v">disabled (install ext/openssl) </td></tr>
 </table><br />
 <table border="0" cellpadding="3" width="600">
 <tr class="v"><td>
index 990cf1e66a76c4e5129e02a79bf888f2cc09def0..2ef7ca109fb2b600f640d02f41a06e0d43ec95f5 100644 (file)
@@ -1,9 +1,12 @@
 --TEST--
 Phar: verify signature parsing works
 --SKIPIF--
-<?php if (!extension_loaded("phar")) die("skip"); ?>
-<?php if (!extension_loaded("hash")) die("skip extension hash conflicts"); ?>
-<?php if (!extension_loaded("openssl")) die("skip extension openssl conflicts"); ?>
+<?php
+if (!extension_loaded("phar")) die("skip");
+if (!extension_loaded("hash")) die("skip extension hash conflicts");
+$arr = Phar::getSupportedSignatures();
+if (!in_array("OpenSSL", $arr)) die("skip openssl support required");
+?>
 --INI--
 phar.require_hash=0
 phar.readonly=0
index 4ea546097a97401feee76e771dc2989cb9e71e2a..fb6edb464c5be08bdf3031abebff191f1287a9ab 100644 (file)
@@ -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) {