Blame t/gglong.t

Packit fa4fcc
# Test against long bitwise vectors from Jim Gillogly and Francois Grieu
Packit fa4fcc
Packit fa4fcc
use strict;
Packit fa4fcc
use Digest::SHA;
Packit fa4fcc
Packit fa4fcc
#	SHA-1 Test Vectors
Packit fa4fcc
#
Packit fa4fcc
#	In the following we use the notation bitstring#n to mean a bitstring
Packit fa4fcc
#	repeated n (in decimal) times, and we use | for concatenation.
Packit fa4fcc
#	Therefore 110#3|1 is 1101101101.
Packit fa4fcc
#
Packit fa4fcc
#	Here is a set near 2^32 bits to test the roll-over in the length
Packit fa4fcc
#	field from one to two 32-bit words:
Packit fa4fcc
#
Packit fa4fcc
#	110#1431655764|11 1eef5a18 969255a3 b1793a2a 955c7ec2 8cd221a5
Packit fa4fcc
#	110#1431655765|   7a1045b9 14672afa ce8d90e6 d19b3a6a da3cb879
Packit fa4fcc
#	110#1431655765|1  d5e09777 a94f1ea9 240874c4 8d9fecb6 b634256b
Packit fa4fcc
#	110#1431655765|11 eb256904 3c3014e5 1b2862ae 6eb5fb4e 0b851d99
Packit fa4fcc
#
Packit fa4fcc
#	011#1431655764|01 4CB0C4EF 69143D5B F34FC35F 1D4B19F6 ECCAE0F2
Packit fa4fcc
#	011#1431655765    47D92F91 1FC7BB74 DE00ADFC 4E981A81 05556D52
Packit fa4fcc
#	011#1431655765|0  A3D7438C 589B0B93 2AA91CC2 446F06DF 9ABC73F0
Packit fa4fcc
#	011#1431655765|01 3EEE3E1E 28DEDE2C A444D68D A5675B2F AAAB3203
Packit fa4fcc
Packit fa4fcc
my @vec110 = (	# 110 rep 1431655764
Packit fa4fcc
	"11", "1eef5a18969255a3b1793a2a955c7ec28cd221a5",
Packit fa4fcc
	"110", "7a1045b914672aface8d90e6d19b3a6ada3cb879",
Packit fa4fcc
	"1101", "d5e09777a94f1ea9240874c48d9fecb6b634256b",
Packit fa4fcc
	"11011", "eb2569043c3014e51b2862ae6eb5fb4e0b851d99"
Packit fa4fcc
);
Packit fa4fcc
Packit fa4fcc
my @vec011 = (	# 011 rep 1431655764
Packit fa4fcc
	"01", "4cb0c4ef69143d5bf34fc35f1d4b19f6eccae0f2",
Packit fa4fcc
	"011", "47d92f911fc7bb74de00adfc4e981a8105556d52",
Packit fa4fcc
	"0110", "a3d7438c589b0b932aa91cc2446f06df9abc73f0",
Packit fa4fcc
	"01101", "3eee3e1e28dede2ca444d68da5675b2faaab3203"
Packit fa4fcc
);
Packit fa4fcc
Packit fa4fcc
my($STATE110, $STATE011) = ('', '');
Packit fa4fcc
for (1 .. 8) { my $line = <DATA>; $STATE110 .= $line }
Packit fa4fcc
for (1 .. 8) { my $line = <DATA>; $STATE011 .= $line }
Packit fa4fcc
Packit fa4fcc
my $testnum = 1;
Packit fa4fcc
print "1..", scalar(@vec110)/2 + scalar(@vec011)/2, "\n";
Packit fa4fcc
Packit fa4fcc
my $state110 = Digest::SHA->putstate($STATE110);
Packit fa4fcc
while (@vec110) {
Packit fa4fcc
	my $state = $state110->clone;
Packit fa4fcc
	$state->add_bits(shift @vec110);
Packit fa4fcc
	print "not " unless $state->hexdigest eq (shift @vec110);
Packit fa4fcc
	print "ok ", $testnum++, "\n";
Packit fa4fcc
}
Packit fa4fcc
Packit fa4fcc
my $state011 = Digest::SHA->putstate($STATE011);
Packit fa4fcc
while (@vec011) {
Packit fa4fcc
	my $state = $state011->clone;
Packit fa4fcc
	$state->add_bits(shift @vec011);
Packit fa4fcc
	print "not " unless $state->hexdigest eq (shift @vec011);
Packit fa4fcc
	print "ok ", $testnum++, "\n";
Packit fa4fcc
}
Packit fa4fcc
Packit fa4fcc
__DATA__
Packit fa4fcc
alg:1
Packit fa4fcc
H:dfc51a14:87b4a4b7:ecf19acd:8cbbe40e:03a435f8:00000000:00000000:00000000
Packit fa4fcc
block:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d
Packit fa4fcc
blockcnt:508
Packit fa4fcc
lenhh:0
Packit fa4fcc
lenhl:0
Packit fa4fcc
lenlh:0
Packit fa4fcc
lenll:4294967292
Packit fa4fcc
alg:1
Packit fa4fcc
H:7950cbe2:86a45aa0:91ff7dff:29015b42:3912e764:00000000:00000000:00000000
Packit fa4fcc
block:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6:db:6d:b6
Packit fa4fcc
blockcnt:508
Packit fa4fcc
lenhh:0
Packit fa4fcc
lenhl:0
Packit fa4fcc
lenlh:0
Packit fa4fcc
lenll:4294967292