1*f2ae886aSAndreas Gohr<?php 2*f2ae886aSAndreas Gohr 3*f2ae886aSAndreas Gohrrequire_once DOKU_INC.'inc/init.php'; 4*f2ae886aSAndreas Gohrrequire_once DOKU_INC.'inc/auth.php'; 5*f2ae886aSAndreas Gohr 6*f2ae886aSAndreas Gohrclass auth_password_test extends PHPUnit_Framework_TestCase { 7*f2ae886aSAndreas Gohr 8*f2ae886aSAndreas Gohr // hashes for the password foo$method, using abcdefgh as salt 9*f2ae886aSAndreas Gohr var $passes = array( 10*f2ae886aSAndreas Gohr 'smd5' => '$1$abcdefgh$SYbjm2AEvSoHG7Xapi8so.', 11*f2ae886aSAndreas Gohr 'apr1' => '$apr1$abcdefgh$C/GzYTF4kOVByYLEoD5X4.', 12*f2ae886aSAndreas Gohr 'md5' => '8fa22d62408e5351553acdd91c6b7003', 13*f2ae886aSAndreas Gohr 'sha1' => 'b456d3b0efd105d613744ffd549514ecafcfc7e1', 14*f2ae886aSAndreas Gohr 'ssha' => '{SSHA}QMHG+uC7bHNYKkmoLbNsNI38/dJhYmNk', 15*f2ae886aSAndreas Gohr 'lsmd5' => '{SMD5}HGbkPrkWgy9KgcRGWlrsUWFiY2RlZmdo', 16*f2ae886aSAndreas Gohr 'crypt' => 'ablvoGr1hvZ5k', 17*f2ae886aSAndreas Gohr 'mysql' => '4a1fa3780bd6fd55', 18*f2ae886aSAndreas Gohr 'my411' => '*e5929347e25f82e19e4ebe92f1dc6b6e7c2dbd29', 19*f2ae886aSAndreas Gohr 'kmd5' => 'a579299436d7969791189acadd86fcb716', 20*f2ae886aSAndreas Gohr 'pmd5' => '$P$abcdefgh1RC6Fd32heUzl7EYCG9uGw.', 21*f2ae886aSAndreas Gohr 'hmd5' => '$H$abcdefgh1ZbJodHxmeXVAhEzTG7IAp.', 22*f2ae886aSAndreas Gohr 'djangomd5' => 'md5$abcde$d0fdddeda8cd92725d2b54148ac09158', 23*f2ae886aSAndreas Gohr 'djangosha1' => 'sha1$abcde$c8e65a7f0acc9158843048a53dcc5a6bc4d17678', 24*f2ae886aSAndreas Gohr ); 25*f2ae886aSAndreas Gohr 26*f2ae886aSAndreas Gohr 27*f2ae886aSAndreas Gohr function test_cryptPassword(){ 28*f2ae886aSAndreas Gohr foreach($this->passes as $method => $hash){ 29*f2ae886aSAndreas Gohr $info = "testing method $method"; 30*f2ae886aSAndreas Gohr $this->assertEquals(auth_cryptPassword('foo'.$method, $method,'abcdefgh12345678912345678912345678'), 31*f2ae886aSAndreas Gohr $hash, $info); 32*f2ae886aSAndreas Gohr } 33*f2ae886aSAndreas Gohr } 34*f2ae886aSAndreas Gohr 35*f2ae886aSAndreas Gohr function test_verifyPassword(){ 36*f2ae886aSAndreas Gohr foreach($this->passes as $method => $hash){ 37*f2ae886aSAndreas Gohr $info = "testing method $method"; 38*f2ae886aSAndreas Gohr $this->assertTrue(auth_verifyPassword('foo'.$method, $hash), $info); 39*f2ae886aSAndreas Gohr } 40*f2ae886aSAndreas Gohr } 41*f2ae886aSAndreas Gohr 42*f2ae886aSAndreas Gohr function test_verifySelf(){ 43*f2ae886aSAndreas Gohr foreach($this->passes as $method => $hash){ 44*f2ae886aSAndreas Gohr $info = "testing method $method"; 45*f2ae886aSAndreas Gohr $hash = auth_cryptPassword('foo'.$method,$method); 46*f2ae886aSAndreas Gohr $this->assertTrue(auth_verifyPassword('foo'.$method, $hash), $info); 47*f2ae886aSAndreas Gohr } 48*f2ae886aSAndreas Gohr } 49*f2ae886aSAndreas Gohr 50*f2ae886aSAndreas Gohr function test_bcrypt_self(){ 51*f2ae886aSAndreas Gohr $hash = auth_cryptPassword('foobcrypt','bcrypt'); 52*f2ae886aSAndreas Gohr $this->assertTrue(auth_verifyPassword('foobcrypt',$hash)); 53*f2ae886aSAndreas Gohr } 54*f2ae886aSAndreas Gohr 55*f2ae886aSAndreas Gohr function test_verifyPassword_fixedbcrypt(){ 56*f2ae886aSAndreas Gohr $this->assertTrue(auth_verifyPassword('foobcrypt','$2a$12$uTWercxbq4sjp2xAzv3we.ZOxk51m5V/Bv5bp2H27oVFJl5neFQoC')); 57*f2ae886aSAndreas Gohr } 58*f2ae886aSAndreas Gohr 59*f2ae886aSAndreas Gohr function test_verifyPassword_nohash(){ 60*f2ae886aSAndreas Gohr $this->assertTrue(auth_verifyPassword('foo','$1$$n1rTiFE0nRifwV/43bVon/')); 61*f2ae886aSAndreas Gohr } 62*f2ae886aSAndreas Gohr 63*f2ae886aSAndreas Gohr function test_verifyPassword_fixedpmd5(){ 64*f2ae886aSAndreas Gohr $this->assertTrue(auth_verifyPassword('test12345','$P$9IQRaTwmfeRo7ud9Fh4E2PdI0S3r.L0')); 65*f2ae886aSAndreas Gohr $this->assertTrue(auth_verifyPassword('test12345','$H$9IQRaTwmfeRo7ud9Fh4E2PdI0S3r.L0')); 66*f2ae886aSAndreas Gohr } 67*f2ae886aSAndreas Gohr 68*f2ae886aSAndreas Gohr} 69*f2ae886aSAndreas Gohr 70*f2ae886aSAndreas Gohr//Setup VIM: ex: et ts=4 : 71