1use strict;
2
3my $MODULE;
4
5BEGIN {
6	$MODULE = (-e "SHA.pm") ? "Digest::SHA" : "Digest::SHA::PurePerl";
7	eval "require $MODULE" || die $@;
8	$MODULE->import(qw(hmac_sha1_hex));
9}
10
11BEGIN {
12	if ($ENV{PERL_CORE}) {
13		chdir 't' if -d 't';
14		@INC = '../lib';
15	}
16}
17
18my @data = map { eval } <DATA>;
19
20my $numtests = scalar @data;
21print "1..$numtests\n";
22
23my @keys = (
24	chr(0x0b) x 20,
25	"Jefe",
26	chr(0xaa) x 20,
27	join("", map { chr } (1 .. 25)),
28	chr(0x0c) x 20,
29	chr(0xaa) x 80,
30	chr(0xaa) x 80
31);
32
33my @out = (
34	"b617318655057264e28bc0b6fb378c8ef146be00",
35	"effcdf6ae5eb2fa2d27416d5f184df9c259a7c79",
36	"125d7342b9ac11cd91a39af48aa17b4f63f175d3",
37	"4c9007f4026250c6bc8414f9bf50c86c2d7235da",
38	"4c1a03424b55e07fe7f27be1d58bb9324a9a5a04",
39	"aa4ae5e15272d00e95705637ce8a3b55ed402112",
40	"e8e99d0f45237d786d6bbaa7965c7808bbff1a91"
41);
42
43my $testnum = 1;
44while (@data) {
45	print "not " unless hmac_sha1_hex(shift @data, shift @keys)
46		eq shift @out;
47	print "ok ", $testnum++, "\n";
48}
49
50__DATA__
51"Hi There"
52"what do ya want for nothing?"
53chr(0xdd) x 50
54chr(0xcd) x 50
55"Test With Truncation"
56"Test Using Larger Than Block-Size Key - Hash Key First"
57"Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data"
58