crypto_secretstream.phpt 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. --TEST--
  2. Check for libsodium secretstream
  3. --EXTENSIONS--
  4. sodium
  5. --SKIPIF--
  6. <?php
  7. if (!defined('SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES')) print "skip libsodium without secretbytes";
  8. ?>
  9. --FILE--
  10. <?php
  11. echo "secretstream_xchacha20poly1305:\n";
  12. $msg1 = random_bytes(random_int(1, 1000));
  13. $msg2 = random_bytes(random_int(1, 1000));
  14. $key = sodium_crypto_secretstream_xchacha20poly1305_keygen();
  15. $ad = random_bytes(random_int(1, 1000));
  16. $res = sodium_crypto_secretstream_xchacha20poly1305_init_push($key);
  17. $stream = $res[0];
  18. $header = $res[1];
  19. $c1 = sodium_crypto_secretstream_xchacha20poly1305_push($stream, $msg1, $ad);
  20. $c2 = sodium_crypto_secretstream_xchacha20poly1305_push($stream, $msg2, '', SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_FINAL);
  21. $stream = sodium_crypto_secretstream_xchacha20poly1305_init_pull($header, $key);
  22. $r1 = sodium_crypto_secretstream_xchacha20poly1305_pull($stream, $c1, $ad);
  23. $r2 = sodium_crypto_secretstream_xchacha20poly1305_pull($stream, $c2);
  24. var_dump($msg1 === $r1[0]);
  25. var_dump($msg2 === $r2[0]);
  26. var_dump($r1[1]);
  27. var_dump($r2[1]);
  28. var_dump(sodium_crypto_secretstream_xchacha20poly1305_pull($stream, $c2));
  29. var_dump(sodium_crypto_secretstream_xchacha20poly1305_pull($stream, 'x'));
  30. $stream = sodium_crypto_secretstream_xchacha20poly1305_init_pull($header, $key);
  31. $r1 = sodium_crypto_secretstream_xchacha20poly1305_pull($stream, $c1);
  32. var_dump($r1);
  33. $r1 = sodium_crypto_secretstream_xchacha20poly1305_pull($stream, $c1, $ad);
  34. var_dump($msg1 === $r1[0]);
  35. $stream = sodium_crypto_secretstream_xchacha20poly1305_init_pull($header, $key);
  36. sodium_crypto_secretstream_xchacha20poly1305_rekey($stream);
  37. $r1 = sodium_crypto_secretstream_xchacha20poly1305_pull($stream, $c1, $ad);
  38. var_dump($r1);
  39. $r2 = sodium_crypto_secretstream_xchacha20poly1305_pull($stream, $c2);
  40. var_dump($r2);
  41. ?>
  42. --EXPECT--
  43. secretstream_xchacha20poly1305:
  44. bool(true)
  45. bool(true)
  46. int(0)
  47. int(3)
  48. bool(false)
  49. bool(false)
  50. bool(false)
  51. bool(true)
  52. bool(false)
  53. bool(false)