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 ,
2022-11-21 22:51:12 +00:00
'cost' => 4 ,
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 () {
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' , " " ],
2021-11-21 16:23:11 +00:00
// False positive 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
}
}