diff options
| author | Remi Collet <remi@php.net> | 2019-07-10 09:00:41 +0200 |
|---|---|---|
| committer | Remi Collet <remi@php.net> | 2019-07-10 09:00:41 +0200 |
| commit | db0eaa8cf1cbeeec5968a5f91a416541d354ccfe (patch) | |
| tree | 3bba357e967e57e0c6a2d768462dc5d99e0b059e | |
| parent | 48abed7fd89a50c568ab3f5932fbc85ba93dae79 (diff) | |
| download | php-git-db0eaa8cf1cbeeec5968a5f91a416541d354ccfe.tar.gz | |
improve libargon2/libsodium compatibility
| -rw-r--r-- | ext/standard/password.c | 15 | ||||
| -rw-r--r-- | ext/standard/tests/password/bug75221.phpt | 2 | ||||
| -rw-r--r-- | ext/standard/tests/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 |
