aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB
diff options
context:
space:
mode:
authorMarc Alexander <admin@m-a-styles.de>2019-12-29 21:43:06 +0100
committerMarc Alexander <admin@m-a-styles.de>2019-12-29 21:43:06 +0100
commit036871cd9535503f1f7456096e6368544bdd8fc5 (patch)
treebe47690fd00a1225f409e02457704029b7103a99 /phpBB
parent71a1c9fee7aaf3f92e934302abd121d75d4c5df2 (diff)
parentc71d4c364adc27dfecd60b47857968f1050f6df6 (diff)
downloadforums-036871cd9535503f1f7456096e6368544bdd8fc5.tar
forums-036871cd9535503f1f7456096e6368544bdd8fc5.tar.gz
forums-036871cd9535503f1f7456096e6368544bdd8fc5.tar.bz2
forums-036871cd9535503f1f7456096e6368544bdd8fc5.tar.xz
forums-036871cd9535503f1f7456096e6368544bdd8fc5.zip
Merge pull request #5790 from rxu/ticket/16266
[ticket/16266] Fix argon2 driver issue for Sodium implementation
Diffstat (limited to 'phpBB')
-rw-r--r--phpBB/phpbb/passwords/driver/argon2i.php21
1 files changed, 17 insertions, 4 deletions
diff --git a/phpBB/phpbb/passwords/driver/argon2i.php b/phpBB/phpbb/passwords/driver/argon2i.php
index 49d7d6393e..bf4d6ec33a 100644
--- a/phpBB/phpbb/passwords/driver/argon2i.php
+++ b/phpBB/phpbb/passwords/driver/argon2i.php
@@ -37,10 +37,23 @@ class argon2i extends base_native
{
parent::__construct($config, $helper);
- // 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);
+ // Workaround to prevent "Use of undefined constant" warning on some unsupported PHP installations
+ if (!defined('PASSWORD_ARGON2I'))
+ {
+ define('PASSWORD_ARGON2_DEFAULT_MEMORY_COST', 1024);
+ define('PASSWORD_ARGON2_DEFAULT_TIME_COST', 2);
+ define('PASSWORD_ARGON2_DEFAULT_THREADS', 1);
+ }
+
+ /**
+ * For Sodium implementation of argon2 algorithm (since PHP 7.4), set special value of 1 for "threads" cost factor
+ * See https://wiki.php.net/rfc/sodium.argon.hash and PHPBB3-16266
+ * Don't allow cost factors to be below default settings where possible
+ */
+ $this->memory_cost = max($memory_cost, PASSWORD_ARGON2_DEFAULT_MEMORY_COST);
+ $this->time_cost = max($time_cost, PASSWORD_ARGON2_DEFAULT_TIME_COST);
+ $this->threads = (defined('PASSWORD_ARGON2_PROVIDER') && PASSWORD_ARGON2_PROVIDER == 'sodium') ?
+ PASSWORD_ARGON2_DEFAULT_THREADS : max($threads, PASSWORD_ARGON2_DEFAULT_THREADS);
}
/**