aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes
diff options
context:
space:
mode:
authorMarc Alexander <admin@m-a-styles.de>2013-06-27 14:20:47 +0200
committerMarc Alexander <admin@m-a-styles.de>2013-09-14 13:53:19 +0200
commit857b90057b6b613c844b0358340f452cd8174df5 (patch)
treed6bbed6e475b44f5ade38a4a27ddab2421786e0a /phpBB/includes
parentdae4327cfcd0908dc751f47cbbc462df454d153c (diff)
downloadforums-857b90057b6b613c844b0358340f452cd8174df5.tar
forums-857b90057b6b613c844b0358340f452cd8174df5.tar.gz
forums-857b90057b6b613c844b0358340f452cd8174df5.tar.bz2
forums-857b90057b6b613c844b0358340f452cd8174df5.tar.xz
forums-857b90057b6b613c844b0358340f452cd8174df5.zip
[feature/passwords] Add method for obtaining the hash settings only
This is needed for combined hashing of passwords. PHPBB3-11610
Diffstat (limited to 'phpBB/includes')
-rw-r--r--phpBB/includes/crypto/driver/bcrypt.php18
-rw-r--r--phpBB/includes/crypto/driver/interface.php12
-rw-r--r--phpBB/includes/crypto/driver/salted_md5.php8
3 files changed, 38 insertions, 0 deletions
diff --git a/phpBB/includes/crypto/driver/bcrypt.php b/phpBB/includes/crypto/driver/bcrypt.php
index c6334d1779..ad5a8036c3 100644
--- a/phpBB/includes/crypto/driver/bcrypt.php
+++ b/phpBB/includes/crypto/driver/bcrypt.php
@@ -87,4 +87,22 @@ class phpbb_crypto_driver_bcrypt extends phpbb_crypto_driver_base
{
return $this->helper->hash_encode64($this->helper->get_random_salt(22), 22);
}
+
+ /**
+ * @inheritdoc
+ */
+ public function get_settings_only($hash, $full = false)
+ {
+ if ($full)
+ {
+ $pos = stripos($hash, '$', 1) + 1;
+ $length = 22 + (strripos($hash, '$') + 1 - $pos);
+ }
+ else
+ {
+ $pos = strripos($hash, '$') + 1;
+ $length = 22;
+ }
+ return substr($hash, $pos, $length);
+ }
}
diff --git a/phpBB/includes/crypto/driver/interface.php b/phpBB/includes/crypto/driver/interface.php
index b8383bda5a..9686aa33de 100644
--- a/phpBB/includes/crypto/driver/interface.php
+++ b/phpBB/includes/crypto/driver/interface.php
@@ -50,7 +50,19 @@ interface phpbb_crypto_driver_interface
/**
* Check the password against the supplied hash
*
+ * @param string $password The password to check
+ * @param string $hash The password hash to check against
* @return bool True if password is correct, else false
*/
public function check($password, $hash);
+
+ /**
+ * Get only the settings of the specified hash
+ *
+ * @param string $hash Password hash
+ * @param bool $full Return full settings or only settings
+ * related to the salt
+ * @return string String containing the hash settings
+ */
+ public function get_settings_only($hash, $full = false);
}
diff --git a/phpBB/includes/crypto/driver/salted_md5.php b/phpBB/includes/crypto/driver/salted_md5.php
index 1bb7a17afc..26331e9a5b 100644
--- a/phpBB/includes/crypto/driver/salted_md5.php
+++ b/phpBB/includes/crypto/driver/salted_md5.php
@@ -141,4 +141,12 @@ class phpbb_crypto_driver_salted_md5 extends phpbb_crypto_driver_base
'full' => substr($hash, 0, 12),
);
}
+
+ /**
+ * @inheritdoc
+ */
+ public function get_settings_only($hash, $full = false)
+ {
+ return substr($hash, 3, 9);
+ }
}