$this->logger->debug( "Clock drift calculation " .
"(time-taken=" . ( $timeTaken * 1000 ) . "ms, " .
"iterations=$iterations, " .
- "time-per-iteration=" . ( $timeTaken / $iterations * 1e6 ) . "us)\n" );
+ "time-per-iteration=" . ( $timeTaken / $iterations * 1e6 ) . "us)" );
return $data;
}
*/
public function generate( $bytes, $forceStrong = false ) {
- $this->logger->debug( "Generating cryptographic random bytes for\n" );
-
$bytes = floor( $bytes );
static $buffer = '';
if ( is_null( $this->strong ) ) {
$rem = $bytes - strlen( $buffer );
$iv = mcrypt_create_iv( $rem, MCRYPT_DEV_URANDOM );
if ( $iv === false ) {
- $this->logger->debug( "mcrypt_create_iv returned false.\n" );
+ $this->logger->debug( "mcrypt_create_iv returned false." );
} else {
$buffer .= $iv;
$this->logger->debug( "mcrypt_create_iv generated " . strlen( $iv ) .
- " bytes of randomness.\n" );
+ " bytes of randomness." );
}
}
}
$rem = $bytes - strlen( $buffer );
$openssl_bytes = openssl_random_pseudo_bytes( $rem, $openssl_strong );
if ( $openssl_bytes === false ) {
- $this->logger->debug( "openssl_random_pseudo_bytes returned false.\n" );
+ $this->logger->debug( "openssl_random_pseudo_bytes returned false." );
} else {
$buffer .= $openssl_bytes;
$this->logger->debug( "openssl_random_pseudo_bytes generated " .
strlen( $openssl_bytes ) . " bytes of " .
- ( $openssl_strong ? "strong" : "weak" ) . " randomness.\n" );
+ ( $openssl_strong ? "strong" : "weak" ) . " randomness." );
}
if ( strlen( $buffer ) >= $bytes ) {
// openssl tells us if the random source was strong, if some of our data was generated
$rem = $bytes - strlen( $buffer );
if ( !function_exists( 'stream_set_read_buffer' ) && $forceStrong ) {
$this->logger->debug( "Was forced to read from /dev/urandom " .
- "without control over the buffer size.\n" );
+ "without control over the buffer size." );
}
// /dev/urandom is generally considered the best possible commonly
// available random source, and is available on most *nix systems.
$buffer .= $random_bytes;
fclose( $urandom );
$this->logger->debug( "/dev/urandom generated " . strlen( $random_bytes ) .
- " bytes of randomness.\n" );
+ " bytes of randomness." );
if ( strlen( $buffer ) >= $bytes ) {
// urandom is always strong, set to true if all our data was generated using it
$this->strong = true;
}
} else {
- $this->logger->debug( "/dev/urandom could not be opened.\n" );
+ $this->logger->debug( "/dev/urandom could not be opened." );
}
}
// out and being used to predict the /randomness/ that follows.
if ( strlen( $buffer ) < $bytes ) {
$this->logger->debug( __METHOD__ .
- ": Falling back to using a pseudo random state to generate randomness.\n" );
+ ": Falling back to using a pseudo random state to generate randomness." );
}
while ( strlen( $buffer ) < $bytes ) {
$buffer .= MWCryptHash::hmac( $this->randomState(), strval( mt_rand() ) );
$buffer = substr( $buffer, $bytes );
$this->logger->debug( strlen( $buffer ) .
- " bytes of randomness leftover in the buffer.\n" );
+ " bytes of randomness leftover in the buffer." );
return $generated;
}