1# HMAC-SHA-256 test vectors from draft-ietf-ipsec-ciph-sha-256-01.txt 2 3use strict; 4 5my $MODULE; 6 7BEGIN { 8 $MODULE = (-d "src") ? "Digest::SHA" : "Digest::SHA::PurePerl"; 9 eval "require $MODULE" || die $@; 10 $MODULE->import(qw(hmac_sha256 hmac_sha256_hex)); 11} 12 13BEGIN { 14 if ($ENV{PERL_CORE}) { 15 chdir 't' if -d 't'; 16 @INC = '../lib'; 17 } 18} 19 20my @data = map { eval } <DATA>; 21 22my $numtests = scalar @data; 23print "1..$numtests\n"; 24 25my $k1 = join( "", map { chr } (1 .. 32) ); 26my $k2 = join( "", map { chr } (1 .. 37) ); 27 28my @keys = ( 29 $k1, 30 $k1, 31 $k1, 32 chr(0x0b) x 32, 33 "Jefe", 34 chr(0xaa) x 32, 35 $k2, 36 chr(0x0c) x 32, 37 chr(0xaa) x 80, 38 chr(0xaa) x 80 39); 40 41my @out = ( 42 "a21b1f5d4cf4f73a4dd939750f7a066a7f98cc131cb16a6692759021cfab8181", 43 "104fdc1257328f08184ba73131c53caee698e36119421149ea8c712456697d30", 44 "470305fc7e40fe34d3eeb3e773d95aab73acf0fd060447a5eb4595bf33a9d1a3", 45 "198a607eb44bfbc69903a0f1cf2bbdc5ba0aa3f3d9ae3c1c7a3b1696a0b68cf7", 46 "5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843", 47 "cdcb1220d1ecccea91e53aba3092f962e549fe6ce9ed7fdc43191fbde45c30b0", 48 "d4633c17f6fb8d744c66dee0f8f074556ec4af55ef07998541468eb49bd2e917", 49 "7546af01841fc09b1ab9c3749a5f1c17d4f589668a587b2700a9c97c1193cf42", 50 "6953025ed96f0c09f80a96f78e6538dbe2e7b820e3dd970e7ddd39091b32352f", 51 "6355ac22e890d0a3c8481a5ca4825bc884d3e7a1ff98a2fc2ac7d8e064c3b2e6" 52); 53 54 # do first one using multi-argument data feed and binary output 55 56my $testnum = 1; 57my @args = split(//, shift @data); 58print "not " unless hmac_sha256(@args, shift @keys) eq pack("H*", shift @out); 59print "ok ", $testnum++, "\n"; 60 61while (@data) { 62 print "not " unless hmac_sha256_hex(shift @data, shift @keys) 63 eq shift @out; 64 print "ok ", $testnum++, "\n"; 65} 66 67__DATA__ 68"abc" 69"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" 70"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqabcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" 71"Hi There" 72"what do ya want for nothing?" 73chr(0xdd) x 50 74chr(0xcd) x 50 75"Test With Truncation" 76"Test Using Larger Than Block-Size Key - Hash Key First" 77"Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data" 78