Commit | Line | Data |
6bc89f92 |
1 | # HMAC-SHA-256 test vectors from draft-ietf-ipsec-ciph-sha-256-01.txt |
2 | |
6bc89f92 |
3 | use strict; |
747da336 |
4 | |
5 | my $MODULE; |
6 | |
7 | BEGIN { |
72aa8e26 |
8 | $MODULE = ($ENV{PERL_CORE} || -e "SHA.pm") ? "Digest::SHA" : "Digest::SHA::PurePerl"; |
747da336 |
9 | eval "require $MODULE" || die $@; |
10 | $MODULE->import(qw(hmac_sha256_hex)); |
11 | } |
6bc89f92 |
12 | |
41c686de |
13 | BEGIN { |
77d2a621 |
14 | if ($ENV{PERL_CORE}) { |
15 | chdir 't' if -d 't'; |
16 | @INC = '../lib'; |
17 | } |
41c686de |
18 | } |
19 | |
747da336 |
20 | my @data = map { eval } <DATA>; |
6bc89f92 |
21 | |
747da336 |
22 | my $numtests = scalar @data; |
23 | print "1..$numtests\n"; |
6bc89f92 |
24 | |
747da336 |
25 | my $k1 = join( "", map { chr } (1 .. 32) ); |
26 | my $k2 = join( "", map { chr } (1 .. 37) ); |
6bc89f92 |
27 | |
747da336 |
28 | my @keys = ( |
6bc89f92 |
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 | |
747da336 |
41 | my @out = ( |
6bc89f92 |
42 | "a21b1f5d4cf4f73a4dd939750f7a066a7f98cc131cb16a6692759021cfab8181", |
43 | "104fdc1257328f08184ba73131c53caee698e36119421149ea8c712456697d30", |
44 | "470305fc7e40fe34d3eeb3e773d95aab73acf0fd060447a5eb4595bf33a9d1a3", |
45 | "198a607eb44bfbc69903a0f1cf2bbdc5ba0aa3f3d9ae3c1c7a3b1696a0b68cf7", |
46 | "5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843", |
47 | "cdcb1220d1ecccea91e53aba3092f962e549fe6ce9ed7fdc43191fbde45c30b0", |
48 | "d4633c17f6fb8d744c66dee0f8f074556ec4af55ef07998541468eb49bd2e917", |
49 | "7546af01841fc09b1ab9c3749a5f1c17d4f589668a587b2700a9c97c1193cf42", |
50 | "6953025ed96f0c09f80a96f78e6538dbe2e7b820e3dd970e7ddd39091b32352f", |
51 | "6355ac22e890d0a3c8481a5ca4825bc884d3e7a1ff98a2fc2ac7d8e064c3b2e6" |
52 | ); |
53 | |
747da336 |
54 | # do the first one using multi-argument data feed |
6bc89f92 |
55 | |
747da336 |
56 | my $testnum = 1; |
57 | my @args = split(//, shift @data); |
58 | print "not " unless hmac_sha256_hex(@args, shift @keys) eq shift @out; |
59 | print "ok ", $testnum++, "\n"; |
6bc89f92 |
60 | |
747da336 |
61 | while (@data) { |
62 | print "not " unless hmac_sha256_hex(shift @data, shift @keys) |
63 | eq shift @out; |
64 | print "ok ", $testnum++, "\n"; |
6bc89f92 |
65 | } |
747da336 |
66 | |
67 | __DATA__ |
68 | "abc" |
69 | "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" |
70 | "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqabcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" |
71 | "Hi There" |
72 | "what do ya want for nothing?" |
73 | chr(0xdd) x 50 |
74 | chr(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" |