oo_encryption.phpt 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. --TEST--
  2. ZipArchive::setEncryption*() functions
  3. --EXTENSIONS--
  4. zip
  5. --SKIPIF--
  6. <?php
  7. if (!method_exists('ZipArchive', 'setEncryptionName')) die('skip encryption not supported');
  8. ?>
  9. --FILE--
  10. <?php
  11. $name = __DIR__ . '/encrypted.zip';
  12. $pass = 'secret';
  13. echo "== Write\n";
  14. $zip = new ZipArchive;
  15. $r = $zip->open($name, ZIPARCHIVE::CREATE);
  16. // Clear
  17. $zip->addFromString('foo.txt', 'foo');
  18. // Encrypted
  19. $zip->addFromString('bar.txt', 'bar');
  20. var_dump($zip->setEncryptionName('bar.txt', 9999, $pass)); // Fails
  21. var_dump($zip->setEncryptionName('bar.txt', ZipArchive::EM_AES_256, $pass));
  22. $zip->close();
  23. echo "== Read\n";
  24. $r = $zip->open($name);
  25. $s = $zip->statName('foo.txt');
  26. var_dump($s['encryption_method'] === ZipArchive::EM_NONE);
  27. $s = $zip->statName('bar.txt');
  28. var_dump($s['encryption_method'] === ZipArchive::EM_AES_256);
  29. var_dump($zip->getFromName('foo.txt')); // Clear, ok
  30. var_dump($zip->getFromName('bar.txt')); // Encrypted, fails
  31. $zip->setPassword($pass);
  32. var_dump($zip->getFromName('bar.txt')); // Ecnrypted, ok
  33. $zip->close();
  34. echo "== Stream\n";
  35. var_dump(file_get_contents("zip://$name#foo.txt")); // Clear, ok
  36. var_dump(file_get_contents("zip://$name#bar.txt")); // Encrypted, fails
  37. $ctx = stream_context_create(array('zip' => array('password' => $pass)));
  38. var_dump(file_get_contents("zip://$name#bar.txt", false, $ctx)); // Ecnrypted, ok
  39. ?>
  40. == Done
  41. --CLEAN--
  42. <?php
  43. $name = __DIR__ . '/encrypted.zip';
  44. @unlink($name);
  45. ?>
  46. --EXPECTF--
  47. == Write
  48. bool(false)
  49. bool(true)
  50. == Read
  51. bool(true)
  52. bool(true)
  53. string(3) "foo"
  54. bool(false)
  55. string(3) "bar"
  56. == Stream
  57. string(3) "foo"
  58. Warning: file_get_contents(%s): Failed to open stream: operation failed in %s on line %d
  59. bool(false)
  60. string(3) "bar"
  61. == Done