2013-07-31 05:11:18 +00:00
< ? php
/**
* @ group large
2017-06-06 05:05:22 +00:00
* @ covers BcryptPassword
* @ covers ParameterizedPassword
* @ covers Password
* @ covers PasswordFactory
2013-07-31 05:11:18 +00:00
*/
2016-02-22 17:46:57 +00:00
class BcryptPasswordTest extends PasswordTestCase {
2013-07-31 05:11:18 +00:00
protected function getTypeConfigs () {
2016-02-17 09:09:32 +00:00
return [ 'bcrypt' => [
2018-01-13 00:02:09 +00:00
'class' => BcryptPassword :: class ,
2013-07-31 05:11:18 +00:00
'cost' => 9 ,
2016-02-17 09:09:32 +00:00
] ];
2013-07-31 05:11:18 +00:00
}
2014-09-18 01:28:26 +00:00
public static function providePasswordTests () {
2018-01-01 13:10:16 +00:00
// phpcs:disable Generic.Files.LineLength
2016-03-19 01:05:19 +00:00
return [
2013-07-31 05:11:18 +00:00
// Tests from glibc bcrypt implementation
2016-03-19 01:05:19 +00:00
[ true , ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW' , " U*U " ],
[ true , ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$VGOzA784oUp/Z0DY336zx7pLYAy0lwK' , " U*U* " ],
[ true , ':bcrypt:5$XXXXXXXXXXXXXXXXXXXXXO$AcXxm9kjPGEMsLznoKqmqw7tc8WCx4a' , " U*U*U " ],
[ true , ':bcrypt:5$abcdefghijklmnopqrstuu$5s2v8.iXieOjg/.AySBTTZIIVFJeBui' , " 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789chars after 72 are ignored " ],
[ true , ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$CE5elHaaO4EbggVDjb8P19RukzXSM3e' , " \xff \xff \xa3 " ],
[ true , ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$Sa7shbm4.OzKpvFnX1pQLmQW96oUlCq' , " \xa3 " ],
[ true , ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$Sa7shbm4.OzKpvFnX1pQLmQW96oUlCq' , " \xa3 " ],
[ true , ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$o./n25XVfn6oAPaUvHe.Csk4zRfsYPi' , " \xff \xa3 34 \xff \xff \xff \xa3 345 " ],
[ true , ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$nRht2l/HRhr6zmCp9vYUvvsqynflf9e' , " \xff \xa3 345 " ],
[ true , ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$nRht2l/HRhr6zmCp9vYUvvsqynflf9e' , " \xff \xa3 345 " ],
[ true , ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$6IflQkJytoRVc1yuaNtHfiuq.FRlSIS' , " \xa3 ab " ],
[ true , ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$6IflQkJytoRVc1yuaNtHfiuq.FRlSIS' , " \xa3 ab " ],
[ true , ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$swQOIzjOiJ9GHEPuhEkvqrUyvWhEMx6' , " \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa \xaa chars after 72 are ignored as usual " ],
[ true , ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$R9xrDjiycxMbQE2bp.vgqlYpW5wx2yy' , " \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 \xaa \x55 " ],
[ true , ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$9tQZzcJfm3uj2NvJ/n5xkhpqLrMpWCe' , " \x55 \xaa \xff \x55 \xaa \xff \x55 \xaa \xff \x55 \xaa \xff \x55 \xaa \xff \x55 \xaa \xff \x55 \xaa \xff \x55 \xaa \xff \x55 \xaa \xff \x55 \xaa \xff \x55 \xaa \xff \x55 \xaa \xff \x55 \xaa \xff \x55 \xaa \xff \x55 \xaa \xff \x55 \xaa \xff \x55 \xaa \xff \x55 \xaa \xff \x55 \xaa \xff \x55 \xaa \xff \x55 \xaa \xff \x55 \xaa \xff \x55 \xaa \xff \x55 \xaa \xff " ],
[ true , ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$7uG0VCzI2bS7j6ymqJi9CdcdxiRTWNy' , " " ],
2013-07-31 05:11:18 +00:00
// One or two false sanity tests
2016-03-19 01:05:19 +00:00
[ false , ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW' , " UXU " ],
[ false , ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW' , " " ],
];
2018-01-01 13:10:16 +00:00
// phpcs:enable
2013-07-31 05:11:18 +00:00
}
}