aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--phpBB/phpbb/passwords/driver/argon2i.php21
-rw-r--r--phpBB/phpbb/passwords/driver/base_native.php9
2 files changed, 14 insertions, 16 deletions
diff --git a/phpBB/phpbb/passwords/driver/argon2i.php b/phpBB/phpbb/passwords/driver/argon2i.php
index 3babbaa780..9aa2b6f14c 100644
--- a/phpBB/phpbb/passwords/driver/argon2i.php
+++ b/phpBB/phpbb/passwords/driver/argon2i.php
@@ -37,21 +37,12 @@ class argon2i extends base_native
{
parent::__construct($config, $helper);
- if ($this->is_sodium())
- {
- // For Sodium implementation, set special cost factor values (since PHP 7.4)
- // See https://wiki.php.net/rfc/sodium.argon.hash and PHPBB3-16266
- $this->memory_cost = max($memory_cost, 256*1024);
- $this->threads = 1;
- $this->time_cost = max($time_cost, 3);
- }
- else
- {
- // Otherwise don't allow cost factors to be below default settings
- $this->memory_cost = max($memory_cost, 1024);
- $this->threads = max($threads, 2);
- $this->time_cost = max($time_cost, 2);
- }
+ // For Sodium implementation, set special cost factor values (since PHP 7.4)
+ // See https://wiki.php.net/rfc/sodium.argon.hash and PHPBB3-16266
+ // Otherwise don't allow cost factors to be below default settings
+ $this->memory_cost = ($this->is_sodium()) ? max($memory_cost, 256*1024) : max($memory_cost, 1024);
+ $this->threads = ($this->is_sodium()) ? 1 : max($threads, 2);
+ $this->time_cost = ($this->is_sodium()) ? max($time_cost, 3) : max($time_cost, 2);
}
/**
diff --git a/phpBB/phpbb/passwords/driver/base_native.php b/phpBB/phpbb/passwords/driver/base_native.php
index 31d3465165..fa4f0995a5 100644
--- a/phpBB/phpbb/passwords/driver/base_native.php
+++ b/phpBB/phpbb/passwords/driver/base_native.php
@@ -66,7 +66,14 @@ abstract class base_native extends base
*/
public function is_sodium()
{
- return defined('PASSWORD_ARGON2_PROVIDER') && PASSWORD_ARGON2_PROVIDER == 'sodium';
+ static $is_sodium;
+
+ if (empty($is_sodium))
+ {
+ $is_sodium = defined('PASSWORD_ARGON2_PROVIDER') && PASSWORD_ARGON2_PROVIDER == 'sodium';
+ }
+
+ return $is_sodium;
}
/**