File: Pbkdf2PasswordTest.php

package info (click to toggle)
mediawiki 1%3A1.35.13-1%2Bdeb11u2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 274,932 kB
  • sloc: php: 677,563; javascript: 572,709; sql: 11,565; python: 4,447; xml: 3,145; sh: 892; perl: 788; ruby: 496; pascal: 365; makefile: 128
file content (44 lines) | stat: -rw-r--r-- 1,170 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php

/**
 * @group large
 * @covers Pbkdf2Password
 * @covers Password
 * @covers ParameterizedPassword
 * @requires function hash_pbkdf2
 */
class Pbkdf2PasswordTest extends PasswordTestCase {
	protected function getTypeConfigs() {
		return [ 'pbkdf2' => [
			'class' => Pbkdf2Password::class,
			'algo' => 'sha256',
			'cost' => '10000',
			'length' => '128',
		] ];
	}

	public static function providePasswordTests() {
		return [
			[ true, ":pbkdf2:sha1:1:20:c2FsdA==:DGDID5YfDnHzqbUkr2ASBi/gN6Y=", 'password' ],
			[ true, ":pbkdf2:sha1:2:20:c2FsdA==:6mwBTcctb4zNHtkqzh1B8NjeiVc=", 'password' ],
			[ true, ":pbkdf2:sha1:4096:20:c2FsdA==:SwB5AbdlSJq+rUnZJvch0GWkKcE=", 'password' ],
			[ true, ":pbkdf2:sha1:4096:16:c2EAbHQ=:Vvpqp1VICZ3MN9fwNCXgww==", "pass\x00word" ],
		];
	}

	public function testCryptThrows() {
		$factory = new PasswordFactory();
		$password = new Pbkdf2Password(
			$factory,
			[
				'type' => 'pbkdf2',
				'algo' => 'fail',
				'cost' => '10000',
				'length' => '128',
			]
		);
		$this->expectException( PasswordError::class );
		$this->expectExceptionMessage( 'Error when hashing password.' );
		@$password->crypt( 'whatever' );
	}
}