1--TEST-- 2Test normal operation of password_needs_rehash() 3--FILE-- 4<?php 5//-=-=-=- 6 7// Invalid Hash, always rehash 8var_dump(password_needs_rehash('', PASSWORD_BCRYPT)); 9 10// Valid, as it's an unknown algorithm 11var_dump(password_needs_rehash('', 0)); 12 13// Valid with cost the same 14var_dump(password_needs_rehash('$2y$10$MTIzNDU2Nzg5MDEyMzQ1Nej0NmcAWSLR.oP7XOR9HD/vjUuOj100y', PASSWORD_BCRYPT, array('cost' => 10))); 15 16// Valid with cost the same, additional params 17var_dump(password_needs_rehash('$2y$10$MTIzNDU2Nzg5MDEyMzQ1Nej0NmcAWSLR.oP7XOR9HD/vjUuOj100y', PASSWORD_BCRYPT, array('cost' => 10, 'foo' => 3))); 18 19// Invalid, different (lower) cost 20var_dump(password_needs_rehash('$2y$10$MTIzNDU2Nzg5MDEyMzQ1Nej0NmcAWSLR.oP7XOR9HD/vjUuOj100y', PASSWORD_BCRYPT, array('cost' => 0))); 21 22// Invalid, different (higher) cost 23var_dump(password_needs_rehash('$2y$10$MTIzNDU2Nzg5MDEyMzQ1Nej0NmcAWSLR.oP7XOR9HD/vjUuOj100y', PASSWORD_BCRYPT, array('cost' => 11))); 24 25// Valid with cost the default 26$cost = str_pad(PASSWORD_BCRYPT_DEFAULT_COST, 2, '0', STR_PAD_LEFT); 27var_dump(password_needs_rehash('$2y$'.$cost.'$MTIzNDU2Nzg5MDEyMzQ1Nej0NmcAWSLR.oP7XOR9HD/vjUuOj100y', PASSWORD_BCRYPT)); 28 29// Should Issue Needs Rehash, Since Foo is cast to 0... 30var_dump(password_needs_rehash('$2y$10$MTIzNDU2Nzg5MDEyMzQ1Nej0NmcAWSLR.oP7XOR9HD/vjUuOj100y', PASSWORD_BCRYPT, array('cost' => 'foo'))); 31 32 33 34echo "OK!"; 35?> 36--EXPECT-- 37bool(true) 38bool(false) 39bool(false) 40bool(false) 41bool(true) 42bool(true) 43bool(false) 44bool(true) 45OK! 46