[ticket/14733] Extend passwords driver_interface in rehashable_driver_interface

PHPBB3-14733
This commit is contained in:
Marc Alexander 2016-09-25 20:32:42 +02:00
parent d15269950d
commit 722639a0e2
No known key found for this signature in database
GPG key ID: 50E0D2423696F995
2 changed files with 9 additions and 54 deletions

View file

@ -13,22 +13,8 @@
namespace phpbb\passwords\driver;
interface rehashable_driver_interface
interface rehashable_driver_interface extends driver_interface
{
/**
* Check if hash type is supported
*
* @return bool True if supported, false if not
*/
public function is_supported();
/**
* Check if hash type is a legacy hash type
*
* @return bool True if it's a legacy hash type, false if not
*/
public function is_legacy();
/**
* Check if password needs to be rehashed
*
@ -36,42 +22,4 @@ interface rehashable_driver_interface
* @return bool True if password needs to be rehashed, false if not
*/
public function needs_rehash($hash);
/**
* Returns the hash prefix
*
* @return string Hash prefix
*/
public function get_prefix();
/**
* Hash the password
*
* @param string $password The password that should be hashed
*
* @return bool|string Password hash or false if something went wrong
* during hashing
*/
public function hash($password);
/**
* Check the password against the supplied hash
*
* @param string $password The password to check
* @param string $hash The password hash to check against
* @param array $user_row User's row in users table
*
* @return bool True if password is correct, else false
*/
public function check($password, $hash, $user_row = array());
/**
* 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);
}

View file

@ -297,7 +297,14 @@ class manager
}
else
{
$this->convert_flag = $stored_hash_type->needs_rehash($hash);
if ($stored_hash_type instanceof driver\rehashable_driver_interface)
{
$this->convert_flag = $stored_hash_type->needs_rehash($hash);
}
else
{
$this->convert_flag = false;
}
}
// Check all legacy hash types if prefix is $CP$