use Test::More tests => 9; use strict; use warnings; BEGIN { use_ok( 'App::bmkpasswd', qw/mkpasswd passwdcmp/ ); } SKIP: { unless ( App::bmkpasswd::have_sha(256) ) { diag("No SHA support found\n", "You may want to install Crypt::Passwd::XS"); skip( "No SHA support", 8 ); } else { diag("Found SHA support"); } if ( App::bmkpasswd::have_passwd_xs() ) { diag("Using Crypt::Passwd::XS for SHA"); } else { diag("Using system crypt() for SHA"); } my $sha; ok( $sha = mkpasswd('snacks', 'sha256'), 'SHA256 crypt()' ); ok( index($sha, '$5$') == 0, 'Looks like SHA256' ); ok( passwdcmp('snacks', $sha), 'SHA256 compare' ); ok( !passwdcmp('things', $sha), 'SHA256 negative compare' ); my $sha512; ok( $sha512 = mkpasswd('snacks', 'sha512'), 'SHA512 crypt()' ); ok( index($sha512, '$6$') == 0, 'Looks like SHA512' ); ok( passwdcmp('snacks', $sha512), 'SHA512 compare' ); ok( !passwdcmp('things', $sha512), 'SHA512 negative compare' ); }