summaryrefslogtreecommitdiffstats
path: root/tests/yescrypt.phpt
diff options
context:
space:
mode:
authorRemi Collet <remi@remirepo.net>2024-08-27 10:50:21 +0200
committerRemi Collet <remi@php.net>2024-08-27 10:50:21 +0200
commitd4ff70e6cd95010bbe47f9a5a81a19bdae52e241 (patch)
tree3271a8fee984854524f79987cdcf21e3d6289fe6 /tests/yescrypt.phpt
parent1c8bfa97ff1976f212b07e3dc30b78eac60b253d (diff)
start development
Diffstat (limited to 'tests/yescrypt.phpt')
-rw-r--r--tests/yescrypt.phpt92
1 files changed, 92 insertions, 0 deletions
diff --git a/tests/yescrypt.phpt b/tests/yescrypt.phpt
new file mode 100644
index 0000000..38c84e2
--- /dev/null
+++ b/tests/yescrypt.phpt
@@ -0,0 +1,92 @@
+--TEST--
+Check if xpass is loaded
+--EXTENSIONS--
+xpass
+--SKIPIF--
+<?php
+if (!defined("PASSWORD_YESCRYPT")) die("skip YESCRYPT missing");
+?>
+--FILE--
+<?php
+$data = [
+ 'mysecret' => '$y$j9T$EWkxmhFdtlCH.UrDi8l6T1$65TpODO1HXFLut3PhZhxiFweWNWFpo7QHTQtMVanr2B',
+ 'remicollet' => '$y$j9T$XxuuhBKq0UT68HX8KXaXy0$p.PggRtVfQ6rO5TReD0TgMKFyfNEA2l3QQi/dW8fS63',
+];
+foreach($data as $pass => $hash) {
+ echo "-- $pass\n";
+ var_dump(password_verify($pass, $hash));
+ var_dump(password_get_info($hash));
+ var_dump(password_verify($pass."bad", $hash));
+ var_dump(password_verify($pass, $hash."bad"));
+ var_dump(password_needs_rehash($hash, PASSWORD_YESCRYPT));
+}
+
+echo "-- no cost\n";
+$pass = 'secret';
+var_dump($hash = password_hash($pass, PASSWORD_YESCRYPT));
+var_dump(password_get_info($hash));
+var_dump(password_verify($pass, $hash));
+foreach([0,4,8,99] as $cost) {
+ echo "-- cost=$cost\n";
+ try {
+ $pass = "secret$cost";
+ var_dump($hash = password_hash($pass, PASSWORD_YESCRYPT, ['cost'=>$cost]));
+ var_dump(password_verify($pass, $hash));
+ } catch (ValueError $e) {
+ printf("EXCEPTION %s\n", $e->getMessage());
+ }
+}
+?>
+--EXPECTF--
+-- mysecret
+bool(true)
+array(3) {
+ ["algo"]=>
+ string(1) "y"
+ ["algoName"]=>
+ string(8) "yescrypt"
+ ["options"]=>
+ array(0) {
+ }
+}
+bool(false)
+bool(false)
+bool(false)
+-- remicollet
+bool(true)
+array(3) {
+ ["algo"]=>
+ string(1) "y"
+ ["algoName"]=>
+ string(8) "yescrypt"
+ ["options"]=>
+ array(0) {
+ }
+}
+bool(false)
+bool(false)
+bool(false)
+-- no cost
+string(73) "$y$j9T$%s"
+array(3) {
+ ["algo"]=>
+ string(1) "y"
+ ["algoName"]=>
+ string(8) "yescrypt"
+ ["options"]=>
+ array(0) {
+ }
+}
+bool(true)
+-- cost=0
+string(73) "$y$j9T$%s"
+bool(true)
+-- cost=4
+string(73) "$y$j8T$%s"
+bool(true)
+-- cost=8
+string(73) "$y$jCT$%s"
+bool(true)
+-- cost=99
+EXCEPTION Bad password options
+