diff options
| author | Marc Alexander <admin@m-a-styles.de> | 2013-06-27 14:20:47 +0200 |
|---|---|---|
| committer | Marc Alexander <admin@m-a-styles.de> | 2013-09-14 13:53:19 +0200 |
| commit | 857b90057b6b613c844b0358340f452cd8174df5 (patch) | |
| tree | d6bbed6e475b44f5ade38a4a27ddab2421786e0a /phpBB/includes | |
| parent | dae4327cfcd0908dc751f47cbbc462df454d153c (diff) | |
| download | forums-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.php | 18 | ||||
| -rw-r--r-- | phpBB/includes/crypto/driver/interface.php | 12 | ||||
| -rw-r--r-- | phpBB/includes/crypto/driver/salted_md5.php | 8 |
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); + } } |
