xref: /openbsd-src/gnu/usr.bin/perl/cpan/Digest-SHA/t/hmacsha.t (revision f2da64fbbbf1b03f09f390ab01267c93dfd77c4c)
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