summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRemi Collet <remi@php.net>2019-07-10 09:00:41 +0200
committerRemi Collet <remi@php.net>2019-07-10 09:00:41 +0200
commitdb0eaa8cf1cbeeec5968a5f91a416541d354ccfe (patch)
tree3bba357e967e57e0c6a2d768462dc5d99e0b059e
parent48abed7fd89a50c568ab3f5932fbc85ba93dae79 (diff)
downloadphp-git-db0eaa8cf1cbeeec5968a5f91a416541d354ccfe.tar.gz
improve libargon2/libsodium compatibility
-rw-r--r--ext/standard/password.c15
-rw-r--r--ext/standard/tests/password/bug75221.phpt2
-rw-r--r--ext/standard/tests/password/password_hash_error_argon2.phpt4
3 files changed, 18 insertions, 3 deletions
diff --git a/ext/standard/password.c b/ext/standard/password.c
index aacb30e61c..a12590c0e0 100644
--- a/ext/standard/password.c
+++ b/ext/standard/password.c
@@ -571,6 +571,21 @@ static const php_password_algo* php_password_algo_find_zval_ex(zval *arg, const
#if HAVE_ARGON2LIB
case 2: return &php_password_algo_argon2i;
case 3: return &php_password_algo_argon2id;
+#else
+ case 2:
+ {
+ zend_string *n = zend_string_init("argon2i", sizeof("argon2i")-1, 0);
+ const php_password_algo* ret = php_password_algo_find(n);
+ zend_string_release(n);
+ return ret;
+ }
+ case 3:
+ {
+ zend_string *n = zend_string_init("argon2id", sizeof("argon2id")-1, 0);
+ const php_password_algo* ret = php_password_algo_find(n);
+ zend_string_release(n);
+ return ret;
+ }
#endif
}
return NULL;
diff --git a/ext/standard/tests/password/bug75221.phpt b/ext/standard/tests/password/bug75221.phpt
index ec03f92ea6..bd6e386a16 100644
--- a/ext/standard/tests/password/bug75221.phpt
+++ b/ext/standard/tests/password/bug75221.phpt
@@ -9,7 +9,7 @@ if (!defined('PASSWORD_ARGON2I')) die('skip password_hash not built with Argon2'
$hash = password_hash(
"php",
PASSWORD_ARGON2I,
- ['memory_cost' => 16384, 'time_cost' => 2, 'threads' => 4]
+ ['memory_cost' => 64 << 10, 'time_cost' => 4, 'threads' => 1]
);
var_dump(substr($hash, -1, 1) !== "\0");
?>
diff --git a/ext/standard/tests/password/password_hash_error_argon2.phpt b/ext/standard/tests/password/password_hash_error_argon2.phpt
index 070d61656a..2ea6b93627 100644
--- a/ext/standard/tests/password/password_hash_error_argon2.phpt
+++ b/ext/standard/tests/password/password_hash_error_argon2.phpt
@@ -21,7 +21,7 @@ NULL
Warning: password_hash(): Time cost is outside of allowed time range in %s on line %d
NULL
-Warning: password_hash(): Invalid number of threads in %s on line %d
+Warning: password_hash(): %sthread%s
NULL
Warning: password_hash(): Memory cost is outside of allowed memory range in %s on line %d
@@ -30,5 +30,5 @@ NULL
Warning: password_hash(): Time cost is outside of allowed time range in %s on line %d
NULL
-Warning: password_hash(): Invalid number of threads in %s on line %d
+Warning: password_hash(): %sthread%s
NULL