oo_encryption.phpt 1.7 KB

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