Revision history for Perl module App::bmkpasswd 2.012002 2016-07-26 - Safer Bytes::Random::Secure::Tiny require() 2.012001 2016-07-25 - Safer Crypt::Passwd::XS require() (ignore '.' in @INC) - bmkpasswd executable always drops '.' from @INC - Default salt generator now package-scoped - Test suite improvements 2.011006 2016-03-20 - Improved check for POSIX::Termios in `bmkpasswd` - Minor `bmkpasswd` cleanups; take advantage of IO::Handle methods as long as we have it 2.011005 2016-03-09 - Skip 'bmkpasswd' command tests on MSWin32 While the utility is reported to work without issue, the test does not, and I lack access to an appropriate machine for deeper diving. 2.011004 2016-03-09 - Fall back to Term::ReadKey on MSWin32 2.011003 2016-03-09 - Fall back to Term::ReadKey to turn off terminal echo on 5.8.x, if available; if not, warn loudly and suggest it before prompting for a password to crypt 2.011002 2016-03-09 - Fix `bmkpasswd` executable on 5.8.x (no POSIX::ECHO available) 2.011001 2016-03-08 - Add `bmkpasswd --available` for listing available crypt methods - Adjust constant time comparison to avoid potentially leaking any information regarding the length of random-length SHA salts - Add proper Test::Cmd tests for `bmkpasswd` 2.010001 2015-10-23 - Reintroduce constant time comparison for hashes - Minor test expansion 2.009001 2015-08-08 - Support calling Crypt::Bcrypt::Easy->crypt as a class method 2.008002 2015-08-02 - Bytes::Random::Secure::Tiny now defaults to seeding from nonblocking sources; fix our constructor call when 'strong' salts are enabled 2.008001 2015-07-02 - Switch to Bytes::Random::Secure::Tiny 2.007001 2015-06-21 - API change; passwdcmp now returns explicit undef rather than an empty list - API change; export mkpasswd and passwdcmp by default - Add 'reset_seed' option to Crypt::Bcrypt::Easy's constructor as sugar for calling 'mkpasswd_forked' at object construction time 2.006001 2015-06-21 - Add 'mkpasswd_forked' function for resetting salt generator seeds in child processes or threads. 2.005004 2015-03-11 - 'use strictures 2;' for saner fatal warnings behavior - Faster tests 2.005003 2014-12-02 - Kill constant time comparison completely; this was a silly addition that has only introduced bugs. - Switch to 'cpanfile' dependency list 2.005002 2014-09-18 - Better Crypt::Bcrypt::Easy documentation. - Improvements to constant time comparison. - Minor optimizations & cleanups. 2.005001 2014-09-11 - SECURITY; passwdcmp() constant time comparison fixes. The last character of a hash can be skipped during constant time comparison in previous versions (starting at 1.82.4). Real-world risk is reasonably low, but this does make collisions more likely. Mea culpa. - POD / test expansion 2.004002 2014-05-12 - Minor cleanups & test improvements 2.004001 2013-10-16 - Fix MD5 failures on machines without Crypt::Passwd::XS 2.004000 2013-10-15 - Add mkpasswd_available function for checking avail hash methods 2.003001 2013-10-14 - Fix failing t/04_hashopts.t on machines without SHA support - Use Pod::Usage to provide --help / --usage / --man 2.003000 2013-10-13 - Support for passing in a salt generator coderef - mkpasswd() can accept parameters via a HASH 2.002000 2013-09-12 - Use Exporter::Tiny 2.001003 2013-09-01 - No code changes; drop prereq to perl-5.6 2.001002 2013-08-09 - No code changes; fix 'Changes' to match CPAN::Changes::Spec 2.001001 2013-06-18 - Kill Term::ReadKey dependency entirely; instead use POSIX::Termios to turn off terminal echo. (haarg clued me in to this in a conversation he was having with tobyink on irc.perl.org #web-simple -- thanks!) 2.001000 2013-05-02 - Output `bmkpasswd` prompts to STDERR for more sensible redirection - Make Term::ReadKey optional and warn if we don't have it 2.000003 2013-04-21 - Cleaner --bench output - POD/test cleanups 2.000002 2013-04-19 - Fix single-digit work-cost adjustment - Crypt::Bcrypt::Easy: Add ->cost() method Possible to pass a 'type =>' to ->crypt() (undocumented -- bcrypt is your friend, use it) 2.000001 2013-04-19 - Add Crypt::Bcrypt::Easy 1.082005 2013-04-08 - Better passwdcmp() argument-checking - Trap dying 'crypt()' calls in tests to avoid fuzzy fails like http://www.cpantesters.org/cpan/report/be021b42-9e64-11e2-8d62-e95aab8f1a3b 1.082004 2013-04-05 - Use constant time comparison when comparing hashes. - POD enhancements. 1.082003 2013-04-01 - POD tweaks 1.082002 2013-02-23 - Lazy-build Bytes::Random::Secure instances 1.082001 2013-02-23 - Use Bytes::Random::Secure-0.24 1.082000 2013-02-17 - Use NonBlocking => 1 unless --strong is specified 1.081002 2013-02-17 - Fix stray reference to deprecated HAVE_PASSWD_XS in bin/bmkpasswd 1.081001 2013-02-17 - Use Crypt::Random::Seed in blocking mode to generate salts securely. - Switch to dzil & semantic versioning 1.07 2012-06-10 - Slightly more sane Crypt::Passwd::XS checking. - Improved POD. 1.06 2012-06-09 - Small t/ readability cleanup. - Missing changelog for 1.05. 1.05 2012-06-09 - Skip MD5 tests on systems without Crypt::Passwd::XS or working MD5. - Fixes test failures on Windows builds without proper crypt(), MD5 is only included for compat with ancient hashes anyway. 1.04 2012-06-09 - Fix a broken test on systems missing SHA support. - More consistent POD between bmkpasswd(1) and App::bmkpasswd 1.03 2012-06-08 - croak() if specified work cost factor is not numeric. - croak() on unknown types. - Clean up an old check that is no longer relevant; have_sha() will now do the Right Thing if Crypt::Passwd::XS is missing, so we don't need to check if someone was stupidly futzing with package variables. 1.02 2012-06-08 - Typo/style cleanups 1.01 2012-06-08 - Try::Tiny rather than raw block eval, 'use strictures' - Improved tests 1.00 2012-05-23 - Minor cleanups, 1.00 0.05 2012-04-07 - t/04_sha: mention Crypt::Passwd::XS if SHA is missing - Include . / in standard salt possibles (MD5/SHA) - croak() rather than die() from bmkpasswd.pm 0.04 2012-04-02 - Don't export mkpasswd/passwdcmp unless requested. 0.03 2012-03-29 - First known-working CPAN-able dist; based on code pulled out of the Bot::Cobalt IRC bot, with POD updates, optional Crypt::Passwd::XS detection/use, better tests