* @see PasswordFactory::register
* @see Setup.php
*/
- private $types = array(
- '' => array( 'type' => '', 'class' => 'InvalidPassword' ),
- );
+ private $types = [
+ '' => [ 'type' => '', 'class' => 'InvalidPassword' ],
+ ];
/**
* Register a new type of password hash
*/
public function newFromCiphertext( $hash ) {
if ( $hash === null || $hash === false || $hash === '' ) {
- return new InvalidPassword( $this, array( 'type' => '' ), null );
+ return new InvalidPassword( $this, [ 'type' => '' ], null );
} elseif ( $hash[0] !== ':' ) {
throw new PasswordError( 'Invalid hash given' );
}
*/
public function newFromPlaintext( $password, Password $existing = null ) {
if ( $password === null ) {
- return new InvalidPassword( $this, array( 'type' => '' ), null );
+ return new InvalidPassword( $this, [ 'type' => '' ], null );
}
if ( $existing === null ) {
// stopping at a minimum of 10 chars.
$length = max( 10, $minLength );
// 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 );
+ $hex = MWCryptRand::generateHex( ceil( $length * 1.25 ) );
// Convert from base 16 to base 32 to get a proper password like string
- return Wikimedia\base_convert( $hex, 16, 32 );
+ return substr( Wikimedia\base_convert( $hex, 16, 32, $length ), -$length );
}
/**
if ( $password === null ) {
$factory = new self();
- $password = new InvalidPassword( $factory, array( 'type' => '' ), null );
+ $password = new InvalidPassword( $factory, [ 'type' => '' ], null );
}
return $password;