7 $MODULE = ($ENV{PERL_CORE} || -e "SHA.pm") ? "Digest::SHA" : "Digest::SHA::PurePerl";
8 eval "require $MODULE" || die $@;
13 if ($ENV{PERL_CORE}) {
20 "ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0",
21 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1",
24 my $numtests = 6 + scalar @out;
25 print "1..$numtests\n";
27 # attempt to use an invalid algorithm, and check for failure
30 my $NSA = "SHA-42"; # No Such Algorithm
31 print "not " if $MODULE->new($NSA);
32 print "ok ", $testnum++, "\n";
34 my $tempfile = "methods.tmp";
35 END { 1 while unlink $tempfile }
37 # test OO methods using first two SHA-256 vectors from NIST
39 my $fh = FileHandle->new($tempfile, "w");
41 print $fh "bcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq";
44 my $sha = $MODULE->new()->reset("SHA-256")->new();
45 $sha->add_bits("a", 5)->add_bits("001");
47 my $rsp = shift(@out);
48 print "not " unless $sha->clone->add("b", "c")->b64digest eq $rsp;
49 print "ok ", $testnum++, "\n";
53 # test addfile with bareword filehandle
55 open(FILE, "<$tempfile");
58 $sha->clone->addfile(*FILE)->hexdigest eq $rsp;
59 print "ok ", $testnum++, "\n";
62 # test addfile with indirect filehandle
64 $fh = FileHandle->new($tempfile, "r");
66 print "not " unless $sha->clone->addfile($fh)->hexdigest eq $rsp;
67 print "ok ", $testnum++, "\n";
70 # test addfile using file name instead of handle
72 print "not " unless $sha->addfile($tempfile, "b")->hexdigest eq $rsp;
73 print "ok ", $testnum++, "\n";
75 # test addfile portable mode
77 $fh = FileHandle->new($tempfile, "w");
79 print $fh "abc\012" x 2048; # using UNIX newline
82 print "not " unless $sha->new(1)->addfile($tempfile, "p")->hexdigest eq
83 "d449e19c1b0b0c191294c8dc9fa2e4a6ff77fc51";
84 print "ok ", $testnum++, "\n";
86 $fh = FileHandle->new($tempfile, "w");
88 print $fh "abc\015\012" x 2048; # using DOS/Windows newline
91 print "not " unless $sha->new(1)->addfile($tempfile, "p")->hexdigest eq
92 "d449e19c1b0b0c191294c8dc9fa2e4a6ff77fc51";
93 print "ok ", $testnum++, "\n";
95 $fh = FileHandle->new($tempfile, "w");
97 print $fh "abc\015" x 2048; # using early-Mac newline
100 print "not " unless $sha->new(1)->addfile($tempfile, "p")->hexdigest eq
101 "d449e19c1b0b0c191294c8dc9fa2e4a6ff77fc51";
102 print "ok ", $testnum++, "\n";