1f1b824b5SAndreas Gohr<?php 2f1b824b5SAndreas Gohr 3*c3cc6e05SAndreas Gohruse dokuwiki\PassHash; 4*c3cc6e05SAndreas Gohr 5f1b824b5SAndreas Gohr/** 6f1b824b5SAndreas Gohr * Class PassHash_test 7f1b824b5SAndreas Gohr * 8f1b824b5SAndreas Gohr * most tests are in auth_password.test.php 9f1b824b5SAndreas Gohr */ 1036340418SAndreas Gohrclass PassHash_test extends DokuWikiTest { 11f1b824b5SAndreas Gohr 12f1b824b5SAndreas Gohr function test_hmac(){ 13f1b824b5SAndreas Gohr // known hashes taken from https://code.google.com/p/yii/issues/detail?id=1942 14f1b824b5SAndreas Gohr $this->assertEquals('df08aef118f36b32e29d2f47cda649b6', PassHash::hmac('md5','data','secret')); 15f1b824b5SAndreas Gohr $this->assertEquals('9818e3306ba5ac267b5f2679fe4abd37e6cd7b54', PassHash::hmac('sha1','data','secret')); 16f1b824b5SAndreas Gohr 17f1b824b5SAndreas Gohr // known hashes from https://en.wikipedia.org/wiki/Hash-based_message_authentication_code 18f1b824b5SAndreas Gohr $this->assertEquals('74e6f7298a9c2d168935f58c001bad88', PassHash::hmac('md5','','')); 19f1b824b5SAndreas Gohr $this->assertEquals('fbdb1d1b18aa6c08324b7d64b71fb76370690e1d', PassHash::hmac('sha1','','')); 20f1b824b5SAndreas Gohr $this->assertEquals('80070713463e7749b90c2dc24911e275', PassHash::hmac('md5','The quick brown fox jumps over the lazy dog','key')); 21f1b824b5SAndreas Gohr $this->assertEquals('de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9', PassHash::hmac('sha1','The quick brown fox jumps over the lazy dog','key')); 22924cc11cSAndreas Gohr } 23f1b824b5SAndreas Gohr 24924cc11cSAndreas Gohr function test_djangopbkdf2() { 25924cc11cSAndreas Gohr if(!function_exists('hash_pbkdf2') || !in_array('sha256', hash_algos())){ 26924cc11cSAndreas Gohr $this->markTestSkipped('missing hash functions for djangopbkdf2 password tests'); 27924cc11cSAndreas Gohr return; 28924cc11cSAndreas Gohr } 29924cc11cSAndreas Gohr 30924cc11cSAndreas Gohr $ph = new PassHash(); 31924cc11cSAndreas Gohr $knownpasses = array ( 32924cc11cSAndreas Gohr 'pbkdf2_sha256$24000$LakQQ2OOTO1v$dmUgz8V7zcpaoBSA3MV76J5a4rzrszF0NpxGx6HRBbE=', 33924cc11cSAndreas Gohr 'pbkdf2_sha256$24000$PXogIZpE4gaK$F/P/L5SRrbb6taOGEr4w6DhxjMzNAj1jEWTPyAUn8WU=', 34924cc11cSAndreas Gohr 'pbkdf2_sha256$24000$vtn5APnhirmB$/jzJXYvm78X8/FCOMhGUmcCy0iWhtk0L1hcBWN1AYZc=', 35924cc11cSAndreas Gohr 'pbkdf2_sha256$24000$meyCtGKrS5Ai$vkMfMzB/yGFKplmXujgtfl3OGR27AwOQmP+YeRP6lbw=', 36924cc11cSAndreas Gohr 'pbkdf2_sha256$24000$M8ecC8zfqLmJ$l6cIa/Od+m56VMm9hJbdPNhTXZykPVbUGGTPx7/VRE4=', 37924cc11cSAndreas Gohr ); 38924cc11cSAndreas Gohr foreach($knownpasses as $known) { 39924cc11cSAndreas Gohr $this->assertTrue($ph->verify_hash('P4zzW0rd!', $known)); 40924cc11cSAndreas Gohr } 41f1b824b5SAndreas Gohr } 42f1b824b5SAndreas Gohr} 43