Blame t/nistbit.t

Packit fa4fcc
# Test against SHA-1 Sample Vectors from NIST
Packit fa4fcc
Packit fa4fcc
use strict;
Packit fa4fcc
use Digest::SHA;
Packit fa4fcc
Packit fa4fcc
my $nist_hashes = <
Packit fa4fcc
DA39A3EE5E6B4B0D3255BFEF95601890AFD80709 ^
Packit fa4fcc
59C4526AA2CC59F9A5F56B5579BA7108E7CCB61A ^
Packit fa4fcc
6E42FB84067CFF056C43A49E484997AF23190879 ^
Packit fa4fcc
C63FBB9A87171A176E6E054890E29A8C5F125F6C ^
Packit fa4fcc
3109E33C1C4B9A0169D1599169D0E5A520A1E71C ^
Packit fa4fcc
9195E1E73CC68D7170F44BD1D83CB624BC87FA0B ^
Packit fa4fcc
64F7C374527278C0436DBC8DE5AABEC2BBF634BC ^
Packit fa4fcc
154B622EA426FB151B1FF1BE1CE871752B9EDEB4 ^
Packit fa4fcc
12BDD00FD4038756CBCF8ECDAD1B0CD862603CD8 ^
Packit fa4fcc
6700F93E1691E83735279E167F67AF61FEE9813B ^
Packit fa4fcc
END_OF_NIST_HASHES
Packit fa4fcc
Packit fa4fcc
my @hashes = $nist_hashes =~ /\b[0-9A-F]{40}\b/g;
Packit fa4fcc
Packit fa4fcc
my $nist_messages = <
Packit fa4fcc
0 1 ^
Packit fa4fcc
1 1 1 ^
Packit fa4fcc
2 1 1 1 ^
Packit fa4fcc
3 0 1 1 1 ^
Packit fa4fcc
2 0 2 2 ^
Packit fa4fcc
4 1 1 1 2 1 ^
Packit fa4fcc
3 0 2 2 2 ^
Packit fa4fcc
4 1 1 2 2 2 ^
Packit fa4fcc
5 1 2 2 1 1 2 ^
Packit fa4fcc
5 0 2 2 1 1 3 ^
Packit fa4fcc
END_OF_NIST_MESSAGES
Packit fa4fcc
Packit fa4fcc
my @lines = split(/\n/, $nist_messages);
Packit fa4fcc
Packit fa4fcc
print "1..", scalar(@hashes), "\n";
Packit fa4fcc
my $testnum = 1;
Packit fa4fcc
Packit fa4fcc
my $message = "";
Packit fa4fcc
my $sha = Digest::SHA->new(1);
Packit fa4fcc
for (@lines) {
Packit fa4fcc
	next unless /^[\d ^]/;
Packit fa4fcc
	$message .= $_;
Packit fa4fcc
	next unless /\^\s*$/;
Packit fa4fcc
	my @vals = $message =~ /\d+/g; $message = "";
Packit fa4fcc
	my $count = shift(@vals);
Packit fa4fcc
	my $bit = shift(@vals);
Packit fa4fcc
	my $bitstr = "";
Packit fa4fcc
	while (@vals) {
Packit fa4fcc
		$bitstr .= $bit x shift(@vals);
Packit fa4fcc
		$bit = 1 - $bit;
Packit fa4fcc
	}
Packit fa4fcc
	print "not " unless uc($sha->add_bits($bitstr)->hexdigest)
Packit fa4fcc
		eq shift(@hashes);
Packit fa4fcc
	print "ok ", $testnum++, "\n";
Packit fa4fcc
}