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