1--TEST--
2Phar::setSupportedSignatures() with hash, tar-based
3--EXTENSIONS--
4phar
5--SKIPIF--
6<?php
7$arr = Phar::getSupportedSignatures();
8if (!in_array("OpenSSL", $arr)) die("skip openssl support required");
9?>
10--INI--
11phar.require_hash=0
12phar.readonly=0
13--FILE--
14<?php
15$fname = __DIR__ . '/' . basename(__FILE__, '.php') . '.phar.tar';
16$p = new Phar($fname);
17$p['file1.txt'] = 'hi';
18var_dump($p->getSignature());
19$p->setSignatureAlgorithm(Phar::MD5);
20var_dump($p->getSignature());
21$p->setSignatureAlgorithm(Phar::SHA1);
22var_dump($p->getSignature());
23try {
24$p->setSignatureAlgorithm(Phar::SHA256);
25var_dump($p->getSignature());
26} catch (Exception $e) {
27echo $e->getMessage();
28}
29try {
30$p->setSignatureAlgorithm(Phar::SHA512);
31var_dump($p->getSignature());
32} catch (Exception $e) {
33echo $e->getMessage();
34}
35try {
36$config = __DIR__ . '/../files/openssl.cnf';
37$config_arg = array('config' => $config);
38$private = openssl_get_privatekey(file_get_contents(dirname(__DIR__) . '/files/private.pem'));
39$pkey = '';
40openssl_pkey_export($private, $pkey, NULL, $config_arg);
41$p->setSignatureAlgorithm(Phar::OPENSSL, $pkey);
42var_dump($p->getSignature());
43$p->setSignatureAlgorithm(Phar::OPENSSL_SHA512, $pkey);
44var_dump($p->getSignature());
45$p->setSignatureAlgorithm(Phar::OPENSSL_SHA256, $pkey);
46var_dump($p->getSignature());
47} catch (Exception $e) {
48echo $e->getMessage();
49}
50?>
51--CLEAN--
52<?php
53unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.phar.tar');
54?>
55--EXPECTF--
56array(2) {
57  ["hash"]=>
58  string(%d) "%s"
59  ["hash_type"]=>
60  string(7) "SHA-256"
61}
62array(2) {
63  ["hash"]=>
64  string(%d) "%s"
65  ["hash_type"]=>
66  string(3) "MD5"
67}
68array(2) {
69  ["hash"]=>
70  string(%d) "%s"
71  ["hash_type"]=>
72  string(5) "SHA-1"
73}
74array(2) {
75  ["hash"]=>
76  string(%d) "%s"
77  ["hash_type"]=>
78  string(7) "SHA-256"
79}
80array(2) {
81  ["hash"]=>
82  string(%d) "%s"
83  ["hash_type"]=>
84  string(7) "SHA-512"
85}
86array(2) {
87  ["hash"]=>
88  string(%d) "%s"
89  ["hash_type"]=>
90  string(7) "OpenSSL"
91}
92array(2) {
93  ["hash"]=>
94  string(%d) "%s"
95  ["hash_type"]=>
96  string(14) "OpenSSL_SHA512"
97}
98array(2) {
99  ["hash"]=>
100  string(%d) "%s"
101  ["hash_type"]=>
102  string(14) "OpenSSL_SHA256"
103}
104