/**
* @see self::generate()
*/
- public function realGenerate( $bytes, $forceStrong = false, $method = null ) {
+ public function realGenerate( $bytes, $forceStrong = false ) {
wfProfileIn( __METHOD__ );
- if ( is_string( $forceStrong ) && is_null( $method ) ) {
- // If $forceStrong is a string then it's really $method
- $method = $forceStrong;
- $forceStrong = false;
- }
- if ( !is_null( $method ) ) {
- wfDebug( __METHOD__ . ": Generating cryptographic random bytes for $method\n" );
- }
+ wfDebug( __METHOD__ . ": Generating cryptographic random bytes for " . wfGetAllCallers( 5 ) . "\n" );
$bytes = floor( $bytes );
static $buffer = '';
if ( function_exists( 'mcrypt_create_iv' ) ) {
wfProfileIn( __METHOD__ . '-mcrypt' );
$rem = $bytes - strlen( $buffer );
- wfDebug( __METHOD__ . ": Trying to generate $rem bytes of randomness using mcrypt_create_iv.\n" );
$iv = mcrypt_create_iv( $rem, MCRYPT_DEV_URANDOM );
if ( $iv === false ) {
wfDebug( __METHOD__ . ": mcrypt_create_iv returned false.\n" );
) {
wfProfileIn( __METHOD__ . '-openssl' );
$rem = $bytes - strlen( $buffer );
- wfDebug( __METHOD__ . ": Trying to generate $rem bytes of randomness using openssl_random_pseudo_bytes.\n" );
$openssl_bytes = openssl_random_pseudo_bytes( $rem, $openssl_strong );
if ( $openssl_bytes === false ) {
wfDebug( __METHOD__ . ": openssl_random_pseudo_bytes returned false.\n" );
if ( strlen( $buffer ) < $bytes && ( function_exists( 'stream_set_read_buffer' ) || $forceStrong ) ) {
wfProfileIn( __METHOD__ . '-fopen-urandom' );
$rem = $bytes - strlen( $buffer );
- wfDebug( __METHOD__ . ": Trying to generate $rem bytes of randomness using /dev/urandom.\n" );
if ( !function_exists( 'stream_set_read_buffer' ) && $forceStrong ) {
wfDebug( __METHOD__ . ": Was forced to read from /dev/urandom without control over the buffer size.\n" );
}
stream_set_read_buffer( $urandom, $rem );
$chunk_size = $rem;
}
- wfDebug( __METHOD__ . ": Reading from /dev/urandom with a buffer size of $chunk_size.\n" );
$random_bytes = fread( $urandom, max( $chunk_size, $rem ) );
$buffer .= $random_bytes;
fclose( $urandom );
/**
* @see self::generateHex()
*/
- public function realGenerateHex( $chars, $forceStrong = false, $method = null ) {
+ public function realGenerateHex( $chars, $forceStrong = false ) {
// hex strings are 2x the length of raw binary so we divide the length in half
// odd numbers will result in a .5 that leads the generate() being 1 character
// short, so we use ceil() to ensure that we always have enough bytes
$bytes = ceil( $chars / 2 );
// Generate the data and then convert it to a hex string
- $hex = bin2hex( $this->generate( $bytes, $forceStrong, $method ) );
+ $hex = bin2hex( $this->generate( $bytes, $forceStrong ) );
// A bit of paranoia here, the caller asked for a specific length of string
// here, and it's possible (eg when given an odd number) that we may actually
// have at least 1 char more than they asked for. Just in case they made this
* @param $forceStrong bool Pass true if you want generate to prefer cryptographically
* strong sources of entropy even if reading from them may steal
* more entropy from the system than optimal.
- * @param $method The calling method, for debug info. May be the second argument if you are not using forceStrong
* @return String Raw binary random data
*/
- public static function generate( $bytes, $forceStrong = false, $method = null ) {
- return self::singleton()->realGenerate( $bytes, $forceStrong, $method );
+ public static function generate( $bytes, $forceStrong = false ) {
+ return self::singleton()->realGenerate( $bytes, $forceStrong );
}
/**
* @param $forceStrong bool Pass true if you want generate to prefer cryptographically
* strong sources of entropy even if reading from them may steal
* more entropy from the system than optimal.
- * @param $method The calling method, for debug info. May be the second argument if you are not using forceStrong
* @return String Hexadecimal random data
*/
- public static function generateHex( $chars, $forceStrong = false, $method = null ) {
- return self::singleton()->realGenerateHex( $chars, $forceStrong, $method );
+ public static function generateHex( $chars, $forceStrong = false ) {
+ return self::singleton()->realGenerateHex( $chars, $forceStrong );
}
}
// Multiply by 1.25 to get the number of hex characters we need
$length = $length * 1.25;
// Generate random hex chars
- $hex = MWCryptRand::generateHex( $length, __METHOD__ );
+ $hex = MWCryptRand::generateHex( $length );
// Convert from base 16 to base 32 to get a proper password like string
return wfBaseConvert( $hex, 16, 32 );
}
global $wgSecretKey, $wgProxyKey;
$this->load();
if ( !$token ) {
- $this->mToken = MWCryptRand::generateHex( USER_TOKEN_LENGTH, __METHOD__ );
+ $this->mToken = MWCryptRand::generateHex( USER_TOKEN_LENGTH );
} else {
$this->mToken = $token;
}
} else {
$token = $request->getSessionData( 'wsEditToken' );
if ( $token === null ) {
- $token = MWCryptRand::generateHex( 32, __METHOD__ );
+ $token = MWCryptRand::generateHex( 32 );
$request->setSessionData( 'wsEditToken', $token );
}
if( is_array( $salt ) ) {
* @deprecated since 1.20; Use MWCryptRand for secure purposes or wfRandomString for pesudo-randomness
*/
public static function generateToken( $salt = '' ) {
- return MWCryptRand::generateHex( 32, __METHOD__ );
+ return MWCryptRand::generateHex( 32 );
}
/**
$now = time();
$expires = $now + $wgUserEmailConfirmationTokenExpiry;
$this->load();
- $token = MWCryptRand::generateHex( 32, __METHOD__ );
+ $token = MWCryptRand::generateHex( 32 );
$hash = md5( $token );
$this->mEmailToken = $hash;
$this->mEmailTokenExpires = wfTimestamp( TS_MW, $expires );
if( $wgPasswordSalt ) {
if ( $salt === false ) {
- $salt = MWCryptRand::generateHex( 8, __METHOD__ );
+ $salt = MWCryptRand::generateHex( 8 );
}
return ':B:' . $salt . ':' . md5( $salt . '-' . md5( $password ) );
} else {