From db0eaa8cf1cbeeec5968a5f91a416541d354ccfe Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Wed, 10 Jul 2019 09:00:41 +0200 Subject: [PATCH] improve libargon2/libsodium compatibility --- ext/standard/password.c | 15 +++++++++++++++ ext/standard/tests/password/bug75221.phpt | 2 +- .../password/password_hash_error_argon2.phpt | 4 ++-- 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 -- 2.50.1