- config.m4 needs bringing into line with config.w32, there may be broken behaviour under *nix until this is done
// 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);
}
} 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);
--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
--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
--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
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.
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.
--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
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.
--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
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.
--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
<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>
<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>
--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
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);
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) {