MediaWiki  REL1_19
MWCryptRand Class Reference

List of all members.

Public Member Functions

 realGenerate ($bytes, $forceStrong=false)
 realGenerateHex ($chars, $forceStrong=false)
 realWasStrong ()

Static Public Member Functions

static generate ($bytes, $forceStrong=false)
 Generate a run of (ideally) cryptographically random data and return it in raw binary form.
static generateHex ($chars, $forceStrong=false)
 Generate a run of (ideally) cryptographically random data and return it in hexadecimal string format.
static wasStrong ()
 Return a boolean indicating whether or not the source used for cryptographic random bytes generation in the previously run generate* call was cryptographically strong.

Public Attributes

const MIN_ITERATIONS = 1000
 Minimum number of iterations we want to make in our drift calculations.
const MSEC_PER_BYTE = 0.5
 Number of milliseconds we want to spend generating each separate byte of the final generated bytes.

Protected Member Functions

 driftHash ($data)
 Randomly hash data while mixing in clock drift data for randomness.
 hash ($data)
 Generate an acceptably unstable one-way-hash of some text making use of the best hash algorithm that we have available.
 hashAlgo ()
 Decide on the best acceptable hash algorithm we have available for hash()
 hashLength ()
 Return the byte-length output of the hash algorithm we are using in self::hash and self::hmac.
 hmac ($data, $key)
 Generate an acceptably unstable one-way-hmac of some text making use of the best hash algorithm that we have available.
 initialRandomState ()
 Initialize an initial random state based off of whatever we can find.
 randomState ()
 Return a rolling random state initially build using data from unstable sources.

Static Protected Member Functions

static singleton ()
 Publicly exposed static methods.

Protected Attributes

 $algo = null
 The hash algorithm being used.
 $hashLength = null
 The number of bytes outputted by the hash algorithm.
 $strong = null
 A boolean indicating whether the previous random generation was done using cryptographically strong random number generator or not.

Static Protected Attributes

static $singleton = null
 Singleton instance for public use.

Detailed Description

Definition at line 12 of file CryptRand.php.


Member Function Documentation

MWCryptRand::driftHash ( data) [protected]

Randomly hash data while mixing in clock drift data for randomness.

Parameters:
$datastring The data to randomly hash.
Returns:
String The hashed bytes
Author:
Tim Starling

Definition at line 127 of file CryptRand.php.

References hash(), hashLength(), MIN_ITERATIONS, and wfDebug().

Referenced by randomState().

Here is the call graph for this function:

Here is the caller graph for this function:

static MWCryptRand::generate ( bytes,
forceStrong = false 
) [static]

Generate a run of (ideally) cryptographically random data and return it in raw binary form.

You can use MWCryptRand::wasStrong() if you wish to know if the source used was cryptographically strong.

Parameters:
$bytesint the number of bytes of random data to generate
$forceStrongbool 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.
Returns:
String Raw binary random data

Definition at line 448 of file CryptRand.php.

References singleton().

Referenced by realGenerateHex().

Here is the call graph for this function:

Here is the caller graph for this function:

static MWCryptRand::generateHex ( chars,
forceStrong = false 
) [static]

Generate a run of (ideally) cryptographically random data and return it in hexadecimal string format.

You can use MWCryptRand::wasStrong() if you wish to know if the source used was cryptographically strong.

Parameters:
$charsint the number of hex chars of random data to generate
$forceStrongbool 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.
Returns:
String Hexadecimal random data

Definition at line 464 of file CryptRand.php.

References singleton().

Referenced by User\confirmationToken(), User\crypt(), Installer\doGenerateKeys(), SpecialWatchlist\execute(), User\generateToken(), User\getEditToken(), User\randomPassword(), LoginForm\renewSessionId(), LoginForm\setCreateaccountToken(), LoginForm\setLoginToken(), User\setToken(), and wfFixSessionID().

Here is the call graph for this function:

Here is the caller graph for this function:

MWCryptRand::hash ( data) [protected]

Generate an acceptably unstable one-way-hash of some text making use of the best hash algorithm that we have available.

Parameters:
$datastring
Returns:
String A raw hash of the data

Definition at line 234 of file CryptRand.php.

References hashAlgo().

Referenced by driftHash(), hashLength(), and randomState().

Here is the call graph for this function:

Here is the caller graph for this function:

MWCryptRand::hashAlgo ( ) [protected]

Decide on the best acceptable hash algorithm we have available for hash()

Exceptions:
MWException
Returns:
String A hash algorithm

Definition at line 190 of file CryptRand.php.

References wfDebug().

Referenced by hash(), and hmac().

Here is the call graph for this function:

Here is the caller graph for this function:

MWCryptRand::hashLength ( ) [protected]

Return the byte-length output of the hash algorithm we are using in self::hash and self::hmac.

Returns:
int Number of bytes the hash outputs

Definition at line 220 of file CryptRand.php.

References hash().

Referenced by driftHash().

Here is the call graph for this function:

Here is the caller graph for this function:

MWCryptRand::hmac ( data,
key 
) [protected]

Generate an acceptably unstable one-way-hmac of some text making use of the best hash algorithm that we have available.

Parameters:
$datastring
$keystring
Returns:
String A raw hash of the data

Definition at line 246 of file CryptRand.php.

References hashAlgo().

Referenced by realGenerate().

Here is the call graph for this function:

Here is the caller graph for this function:

Initialize an initial random state based off of whatever we can find.

Definition at line 51 of file CryptRand.php.

References $file, $files, $wgProxyKey, $wgSecretKey, wfHostname(), wfRestoreWarnings(), wfSuppressWarnings(), and wfWikiID().

Referenced by randomState().

Here is the call graph for this function:

Here is the caller graph for this function:

MWCryptRand::randomState ( ) [protected]

Return a rolling random state initially build using data from unstable sources.

Returns:
string A new weak random state

Definition at line 171 of file CryptRand.php.

References driftHash(), hash(), and initialRandomState().

Referenced by realGenerate().

Here is the call graph for this function:

Here is the caller graph for this function:

MWCryptRand::realGenerate ( bytes,
forceStrong = false 
)
See also:
self::generate()

Definition at line 263 of file CryptRand.php.

References hmac(), randomState(), wfDebug(), wfGetAllCallers(), wfIsWindows(), wfProfileIn(), wfProfileOut(), wfRestoreWarnings(), and wfSuppressWarnings().

Here is the call graph for this function:

MWCryptRand::realGenerateHex ( chars,
forceStrong = false 
)
See also:
self::generateHex()

Definition at line 395 of file CryptRand.php.

References generate().

Here is the call graph for this function:

See also:
self::wasStrong()

Definition at line 253 of file CryptRand.php.

static MWCryptRand::singleton ( ) [static, protected]

Publicly exposed static methods.

Return a singleton instance of MWCryptRand

Returns:
MWCryptRand

Definition at line 418 of file CryptRand.php.

References $singleton.

Referenced by generate(), generateHex(), and wasStrong().

Here is the caller graph for this function:

static MWCryptRand::wasStrong ( ) [static]

Return a boolean indicating whether or not the source used for cryptographic random bytes generation in the previously run generate* call was cryptographically strong.

Returns:
bool Returns true if the source was strong, false if not.

Definition at line 432 of file CryptRand.php.

References singleton().

Referenced by Installer\doGenerateKeys().

Here is the call graph for this function:

Here is the caller graph for this function:


Member Data Documentation

MWCryptRand::$algo = null [protected]

The hash algorithm being used.

Definition at line 35 of file CryptRand.php.

MWCryptRand::$hashLength = null [protected]

The number of bytes outputted by the hash algorithm.

Definition at line 40 of file CryptRand.php.

MWCryptRand::$singleton = null [static, protected]

Singleton instance for public use.

Definition at line 30 of file CryptRand.php.

Referenced by singleton().

MWCryptRand::$strong = null [protected]

A boolean indicating whether the previous random generation was done using cryptographically strong random number generator or not.

Definition at line 46 of file CryptRand.php.

Minimum number of iterations we want to make in our drift calculations.

Definition at line 17 of file CryptRand.php.

Referenced by driftHash().

Number of milliseconds we want to spend generating each separate byte of the final generated bytes.

This is used in combination with the hash length to determine the duration we should spend doing drift calculations.

Definition at line 25 of file CryptRand.php.


The documentation for this class was generated from the following file: