X-Git-Url: https://git.mxchange.org/?p=core.git;a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fscrypt%2Fclass_Scrypt.php;h=e1c7cb9c307abca6b73289c6d52c3a937de527f6;hp=8f4891d06bfe5c657fc7fe942a1669d5d757b1c7;hb=0ccdb0379f308c6b7b5677b8b7c242df8e9dd300;hpb=bb8b878603734999e7fbc6c11b0d3c6dbf550ba6 diff --git a/inc/classes/main/scrypt/class_Scrypt.php b/inc/classes/main/scrypt/class_Scrypt.php index 8f4891d0..e1c7cb9c 100644 --- a/inc/classes/main/scrypt/class_Scrypt.php +++ b/inc/classes/main/scrypt/class_Scrypt.php @@ -51,7 +51,7 @@ abstract class Scrypt extends BaseFrameworkSystem * * @return int */ - protected static function strlen( $str ) { + protected static function strlen ($str) { static $isShadowed = null; if ($isShadowed === null) { @@ -73,7 +73,7 @@ abstract class Scrypt extends BaseFrameworkSystem * * @return string The salt */ - public static function generateScryptSalt($length = 8) + public static function generateScryptSalt ($length = 8) { $buffer = ''; $buffer_valid = false; @@ -90,7 +90,7 @@ abstract class Scrypt extends BaseFrameworkSystem $buffer_valid = true; } } - if (!$buffer_valid && is_readable('/dev/urandom')) { + if (!$buffer_valid && BaseFrameworkSystem::isReadableFile('/dev/urandom')) { $f = fopen('/dev/urandom', 'r'); $read = static::strlen($buffer); while ($read < $length) { @@ -128,18 +128,23 @@ abstract class Scrypt extends BaseFrameworkSystem * * @return string The hashed password */ - public static function hashScrypt($password, $salt = false, $N = 16384, $r = 8, $p = 1) + public static function hashScrypt ($password, $salt = false, $N = 16384, $r = 8, $p = 1) { + if (!FrameworkFeature::isFeatureAvailable('hubcoin_reward')) { + // Feature has been disabled + throw new \InvalidArgumentException('Feature "scrypt" disabled.'); + } + if ($N == 0 || ($N & ($N - 1)) != 0) { - throw new \InvalidArgumentException("N must be > 0 and a power of 2"); + throw new \InvalidArgumentException('N must be > 0 and a power of 2'); } if ($N > PHP_INT_MAX / 128 / $r) { - throw new \InvalidArgumentException("Parameter N is too large"); + throw new \InvalidArgumentException('Parameter N is too large'); } if ($r > PHP_INT_MAX / 128 / $p) { - throw new \InvalidArgumentException("Parameter r is too large"); + throw new \InvalidArgumentException('Parameter r is too large'); } if ($salt === false) { @@ -162,13 +167,18 @@ abstract class Scrypt extends BaseFrameworkSystem * * @return boolean If the clear text matches */ - public static function checkScrypt($password, $hash) + public static function checkScrypt ($password, $hash) { // Is there actually a hash? if (!$hash) { return false; } + if (!FrameworkFeature::isFeatureAvailable('hubcoin_reward')) { + // Feature has been disabled + throw new \InvalidArgumentException('Feature "scrypt" disabled.'); + } + list ($N, $r, $p, $salt, $hash) = explode('$', $hash); // No empty fields? @@ -206,7 +216,7 @@ abstract class Scrypt extends BaseFrameworkSystem * * @return boolean If the two strings match. */ - public static function compareScryptHashes($expected, $actual) + public static function compareScryptHashes ($expected, $actual) { $expected = (string) $expected; $actual = (string) $actual;