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