From 0d5d805ba3d2f91973e06a39d7ca2e6d0b12e39c Mon Sep 17 00:00:00 2001 From: nekral-guest Date: Fri, 10 Apr 2009 22:58:06 +0000 Subject: [PATCH] Added support for SHA256 and SHA512 tests. --- tests/common/compare_file.pl | 49 ++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/tests/common/compare_file.pl b/tests/common/compare_file.pl index e4a6142d..e1762c89 100755 --- a/tests/common/compare_file.pl +++ b/tests/common/compare_file.pl @@ -48,6 +48,55 @@ while ($tmp =~ m/^(.*?)([^\n]*):\@PASS_MD5 (.*)\@:(.*)$/s) { } } +$tmp = $template; +while ($tmp =~ m/^(.*?)([^\n]*):\@PASS_SHA256 (.*)\@:(.*)$/s) { + my $user = $2; + my $pass = $3; + $tmp = $4; + if ($file =~ m/^$user:/m) { + $file =~ s/^$user:([^:]*):(.*)$/$user:\@PASS_SHA256 $pass\@:$2/m; + my $cryptpass = $1; + # Check the password + my $salt = $cryptpass; + $salt =~ s/^\$5\$//; + my $rounds = ""; + if ($salt =~ s/rounds=([0-9]*)\$//) { + $rounds = "-R $1"; + } + + $salt =~ s/\$.*$//; + my $checkpass = qx!echo '$pass' | /usr/bin/mkpasswd -m sha-256 --salt '$salt' $rounds --stdin!; + chomp $checkpass; + + die "Wrong password: '$cryptpass'. Expected password: '$checkpass'\n" + if ($checkpass ne $cryptpass); + } else { + die "No user '$user' in ".$ARGV[1].".\n"; + } +} + +$tmp = $template; +while ($tmp =~ m/^(.*?)([^\n]*):\@PASS_SHA512 (.*)\@:(.*)$/s) { + my $user = $2; + my $pass = $3; + $tmp = $4; + if ($file =~ m/^$user:/m) { + $file =~ s/^$user:([^:]*):(.*)$/$user:\@PASS_SHA512 $pass\@:$2/m; + my $cryptpass = $1; + # Check the password + my $salt = $cryptpass; + $salt =~ s/^\$6\$//; + $salt =~ s/\$.*$//; + my $checkpass = qx!echo '$pass' | /usr/bin/mkpasswd -m sha-512 --salt '$salt' --stdin!; + chomp $checkpass; + + die "Wrong password: '$cryptpass'. Expected password: '$checkpass'\n" + if ($checkpass ne $cryptpass); + } else { + die "No user '$user' in ".$ARGV[1].".\n"; + } +} + exit 0 if ($file =~ m/^\Q$template\E$/s);