phar_setsignaturealgo2.phpt 2.8 KB

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