diff options
Diffstat (limited to 'phpBB/includes/crypto/driver')
| -rw-r--r-- | phpBB/includes/crypto/driver/base.php | 47 | ||||
| -rw-r--r-- | phpBB/includes/crypto/driver/bcrypt.php | 108 | ||||
| -rw-r--r-- | phpBB/includes/crypto/driver/bcrypt_2y.php | 48 | ||||
| -rw-r--r-- | phpBB/includes/crypto/driver/helper.php | 143 | ||||
| -rw-r--r-- | phpBB/includes/crypto/driver/interface.php | 68 | ||||
| -rw-r--r-- | phpBB/includes/crypto/driver/phpass.php | 40 | ||||
| -rw-r--r-- | phpBB/includes/crypto/driver/salted_md5.php | 152 |
7 files changed, 0 insertions, 606 deletions
diff --git a/phpBB/includes/crypto/driver/base.php b/phpBB/includes/crypto/driver/base.php deleted file mode 100644 index c134122174..0000000000 --- a/phpBB/includes/crypto/driver/base.php +++ /dev/null @@ -1,47 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2013 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* @package crypto -*/ -abstract class phpbb_crypto_driver_base implements phpbb_crypto_driver_interface -{ - /** @var phpbb_config */ - protected $config; - - /** @var phpbb_crypto_driver_helper */ - protected $helper; - - /** - * Constructor of crypto driver object - * - * @return string Hash prefix - */ - public function __construct(phpbb_config $config) - { - $this->config = $config; - $this->helper = new phpbb_crypto_driver_helper($this); - } - - /** - * @inheritdoc - */ - public function is_supported() - { - return true; - } -} diff --git a/phpBB/includes/crypto/driver/bcrypt.php b/phpBB/includes/crypto/driver/bcrypt.php deleted file mode 100644 index ad5a8036c3..0000000000 --- a/phpBB/includes/crypto/driver/bcrypt.php +++ /dev/null @@ -1,108 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2013 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* @package crypto -*/ -class phpbb_crypto_driver_bcrypt extends phpbb_crypto_driver_base -{ - const PREFIX = '$2a$'; - - /** - * @inheritdoc - */ - public function get_prefix() - { - return self::PREFIX; - } - - /** - * @inheritdoc - */ - public function get_type() - { - return get_class($this); - } - - /** - * @inheritdoc - */ - public function hash($password, $salt = '') - { - // The 2x and 2y prefixes of bcrypt might not be supported - // Revert to 2a if this is the case - $prefix = (!$this->is_supported()) ? '$2a$' : $this->get_prefix(); - - if ($salt == '') - { - $salt = $prefix . '10$' . $this->get_random_salt(); - } - - $hash = crypt($password, $salt); - if (strlen($hash) < 60) - { - return false; - } - return $hash; - } - - /** - * @inheritdoc - */ - public function check($password, $hash) - { - $salt = substr($hash, 0, 29); - if (strlen($salt) != 29) - { - return false; - } - - if ($hash == $this->hash($password, $salt)) - { - return true; - } - return false; - } - - /** - * Get a random salt value with a length of 22 characters - * - * @return string Salt for password hashing - */ - protected function get_random_salt() - { - 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/bcrypt_2y.php b/phpBB/includes/crypto/driver/bcrypt_2y.php deleted file mode 100644 index 8bce171a25..0000000000 --- a/phpBB/includes/crypto/driver/bcrypt_2y.php +++ /dev/null @@ -1,48 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2013 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* @package crypto -*/ -class phpbb_crypto_driver_bcrypt_2y extends phpbb_crypto_driver_bcrypt -{ - const PREFIX = '$2y$'; - - /** - * @inheritdoc - */ - public function get_prefix() - { - return self::PREFIX; - } - - /** - * @inheritdoc - */ - public function get_type() - { - return get_class($this); - } - - /** - * @inheritdoc - */ - public function is_supported() - { - return (version_compare(PHP_VERSION, '5.3.7', '<')) ? false : true; - } -} diff --git a/phpBB/includes/crypto/driver/helper.php b/phpBB/includes/crypto/driver/helper.php deleted file mode 100644 index 308ee7dce2..0000000000 --- a/phpBB/includes/crypto/driver/helper.php +++ /dev/null @@ -1,143 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2013 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* @package crypto -*/ -class phpbb_crypto_driver_helper -{ - /** @var phpbb_config */ - protected $driver; - - /** - * base64 alphabet - * @var string - */ - public $itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; - - /** - * Constructor of crypto driver helper object - */ - public function __construct($driver) - { - $this->driver = $driver; - } - - /** - * Base64 encode hash - * - * @param string $input Input string - * @param int $count Input string length - * - * @return string base64 encoded string - */ - public function hash_encode64($input, $count) - { - $output = ''; - $i = 0; - - do - { - $value = ord($input[$i++]); - $output .= $this->itoa64[$value & 0x3f]; - - if ($i < $count) - { - $value |= ord($input[$i]) << 8; - } - - $output .= $this->itoa64[($value >> 6) & 0x3f]; - - if ($i++ >= $count) - { - break; - } - - if ($i < $count) - { - $value |= ord($input[$i]) << 16; - } - - $output .= $this->itoa64[($value >> 12) & 0x3f]; - - if ($i++ >= $count) - { - break; - } - - $output .= $this->itoa64[($value >> 18) & 0x3f]; - } - while ($i < $count); - - return $output; - } - - /** - * Return unique id - * @param string $extra additional entropy - * - * @return string Unique id - */ - public function unique_id($extra = 'c') - { - static $dss_seeded = false; - global $config; - - $val = $config['rand_seed'] . microtime(); - $val = md5($val); - $config['rand_seed'] = md5($config['rand_seed'] . $val . $extra); - - if ($dss_seeded !== true && ($config['rand_seed_last_update'] < time() - rand(1,10))) - { - set_config('rand_seed_last_update', time(), true); - set_config('rand_seed', $config['rand_seed'], true); - $dss_seeded = true; - } - - return substr($val, 4, 16); - } - - /** - * Get random salt with specified length - * - * @param int $length Salt length - */ - public function get_random_salt($length) - { - $random = ''; - - if (($fh = @fopen('/dev/urandom', 'rb'))) - { - $random = fread($fh, $length); - fclose($fh); - } - - if (strlen($random) < $length) - { - $random = ''; - $random_state = $this->unique_id(); - - for ($i = 0; $i < $length; $i += 16) - { - $random_state = md5($this->unique_id() . $random_state); - $random .= pack('H*', md5($random_state)); - } - $random = substr($random, 0, $length); - } - return $random; - } -} diff --git a/phpBB/includes/crypto/driver/interface.php b/phpBB/includes/crypto/driver/interface.php deleted file mode 100644 index 9686aa33de..0000000000 --- a/phpBB/includes/crypto/driver/interface.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2013 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* @package crypto -*/ -interface phpbb_crypto_driver_interface -{ - /** - * Check if hash type is supported - * - * @return bool True if supported, false if not - */ - public function is_supported(); - /** - * Returns the hash prefix - * - * @return string Hash prefix - */ - public function get_prefix(); - - /** - * Returns the name of the hash type - * - * @return string Hash type of driver - */ - public function get_type(); - - /** - * Hash the password - * - * @return string Password hash - */ - 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 - * @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/phpass.php b/phpBB/includes/crypto/driver/phpass.php deleted file mode 100644 index 4868464d73..0000000000 --- a/phpBB/includes/crypto/driver/phpass.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2013 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* @package crypto -*/ -class phpbb_crypto_driver_phpass extends phpbb_crypto_driver_salted_md5 -{ - const PREFIX = '$P$'; - - /** - * @inheritdoc - */ - public function get_prefix() - { - return self::PREFIX; - } - - /** - * @inheritdoc - */ - public function get_type() - { - return get_class($this); - } -} diff --git a/phpBB/includes/crypto/driver/salted_md5.php b/phpBB/includes/crypto/driver/salted_md5.php deleted file mode 100644 index c5a8345453..0000000000 --- a/phpBB/includes/crypto/driver/salted_md5.php +++ /dev/null @@ -1,152 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2013 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* @package crypto -*/ -class phpbb_crypto_driver_salted_md5 extends phpbb_crypto_driver_base -{ - const PREFIX = '$H$'; - - /** - * @inheritdoc - */ - public function get_prefix() - { - return self::PREFIX; - } - - /** - * @inheritdoc - */ - public function get_type() - { - return get_class($this); - } - - /** - * @inheritdoc - */ - public function hash($password, $setting = '') - { - if ($setting != '') - { - if (($settings = $this->get_hash_settings($setting)) === false) - { - return false; - } - } - else - { - if (($settings = $this->get_hash_settings($this->generate_salt())) === false) - { - return false; - } - } - - $hash = md5($settings['salt'] . $password, true); - do - { - $hash = md5($hash . $password, true); - } - while (--$settings['count']); - - $output = $settings['full']; - $output .= $this->helper->hash_encode64($hash, 16); - - if (strlen($output) == 34) - { - return $output; - } - - // Should we really just return the md5 of the password? O.o - return md5($password); - } - - /** - * @inheritdoc - */ - public function check($password, $hash) - { - if (strlen($hash) !== 34) - { - return (md5($password) === $hash) ? true : false; - } - // No need to check prefix, already did that in manage - - if ($hash === $this->hash($password, $hash)) - { - return true; - } - return false; - } - - /** - * Generate salt for hashing method - * - * @return string Salt for hashing method - */ - protected function generate_salt() - { - $salt = ''; - $random = ''; - $count = 6; - - $random = $this->helper->get_random_salt($count); - - $salt = $this->get_prefix(); - $salt .= $this->helper->itoa64[min($count + 5, 30)]; - $salt .= $this->helper->hash_encode64($random, $count); - - return $salt; - } - - /** - * Get hash settings - * - * @return array Array containing the count_log2, salt, and full hash - * settings string - */ - public function get_hash_settings($hash) - { - if (empty($hash)) - { - return false; - } - $count_log2 = strpos($this->helper->itoa64, $hash[3]); - $salt = substr($hash, 4, 8); - - if ($count_log2 < 7 || $count_log2 > 30 || strlen($salt) != 8) - { - return false; - } - - return array( - 'count' => 1 << $count_log2, - 'salt' => $salt, - 'full' => substr($hash, 0, 12), - ); - } - - /** - * @inheritdoc - */ - public function get_settings_only($hash, $full = false) - { - return substr($hash, 3, 9); - } -} |
