|
Packit |
fa4fcc |
# HMAC-SHA-256 test vectors from draft-ietf-ipsec-ciph-sha-256-01.txt
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
use strict;
|
|
Packit |
fa4fcc |
use Digest::SHA qw(hmac_sha256 hmac_sha256_hex);
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
my @data = map { eval } <DATA>;
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
my $numtests = scalar @data;
|
|
Packit |
fa4fcc |
print "1..$numtests\n";
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
my $k1 = join( "", map { chr } (1 .. 32) );
|
|
Packit |
fa4fcc |
my $k2 = join( "", map { chr } (1 .. 37) );
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
my @keys = (
|
|
Packit |
fa4fcc |
$k1,
|
|
Packit |
fa4fcc |
$k1,
|
|
Packit |
fa4fcc |
$k1,
|
|
Packit |
fa4fcc |
chr(0x0b) x 32,
|
|
Packit |
fa4fcc |
"Jefe",
|
|
Packit |
fa4fcc |
chr(0xaa) x 32,
|
|
Packit |
fa4fcc |
$k2,
|
|
Packit |
fa4fcc |
chr(0x0c) x 32,
|
|
Packit |
fa4fcc |
chr(0xaa) x 80,
|
|
Packit |
fa4fcc |
chr(0xaa) x 80
|
|
Packit |
fa4fcc |
);
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
my @out = (
|
|
Packit |
fa4fcc |
"a21b1f5d4cf4f73a4dd939750f7a066a7f98cc131cb16a6692759021cfab8181",
|
|
Packit |
fa4fcc |
"104fdc1257328f08184ba73131c53caee698e36119421149ea8c712456697d30",
|
|
Packit |
fa4fcc |
"470305fc7e40fe34d3eeb3e773d95aab73acf0fd060447a5eb4595bf33a9d1a3",
|
|
Packit |
fa4fcc |
"198a607eb44bfbc69903a0f1cf2bbdc5ba0aa3f3d9ae3c1c7a3b1696a0b68cf7",
|
|
Packit |
fa4fcc |
"5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843",
|
|
Packit |
fa4fcc |
"cdcb1220d1ecccea91e53aba3092f962e549fe6ce9ed7fdc43191fbde45c30b0",
|
|
Packit |
fa4fcc |
"d4633c17f6fb8d744c66dee0f8f074556ec4af55ef07998541468eb49bd2e917",
|
|
Packit |
fa4fcc |
"7546af01841fc09b1ab9c3749a5f1c17d4f589668a587b2700a9c97c1193cf42",
|
|
Packit |
fa4fcc |
"6953025ed96f0c09f80a96f78e6538dbe2e7b820e3dd970e7ddd39091b32352f",
|
|
Packit |
fa4fcc |
"6355ac22e890d0a3c8481a5ca4825bc884d3e7a1ff98a2fc2ac7d8e064c3b2e6"
|
|
Packit |
fa4fcc |
);
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
# do first one using multi-argument data feed and binary output
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
my $testnum = 1;
|
|
Packit |
fa4fcc |
my @args = split(//, shift @data);
|
|
Packit |
fa4fcc |
print "not " unless hmac_sha256(@args, shift @keys) eq pack("H*", shift @out);
|
|
Packit |
fa4fcc |
print "ok ", $testnum++, "\n";
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
while (@data) {
|
|
Packit |
fa4fcc |
print "not " unless hmac_sha256_hex(shift @data, shift @keys)
|
|
Packit |
fa4fcc |
eq shift @out;
|
|
Packit |
fa4fcc |
print "ok ", $testnum++, "\n";
|
|
Packit |
fa4fcc |
}
|
|
Packit |
fa4fcc |
|
|
Packit |
fa4fcc |
__DATA__
|
|
Packit |
fa4fcc |
"abc"
|
|
Packit |
fa4fcc |
"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
|
|
Packit |
fa4fcc |
"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopqabcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
|
|
Packit |
fa4fcc |
"Hi There"
|
|
Packit |
fa4fcc |
"what do ya want for nothing?"
|
|
Packit |
fa4fcc |
chr(0xdd) x 50
|
|
Packit |
fa4fcc |
chr(0xcd) x 50
|
|
Packit |
fa4fcc |
"Test With Truncation"
|
|
Packit |
fa4fcc |
"Test Using Larger Than Block-Size Key - Hash Key First"
|
|
Packit |
fa4fcc |
"Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data"
|