added HMAC MD5 test vectors
This commit is contained in:
@@ -11,6 +11,7 @@ libstrongswan_test_vectors_la_SOURCES = \
|
|||||||
test_vectors/aes_cbc.c \
|
test_vectors/aes_cbc.c \
|
||||||
test_vectors/aes_xcbc.c \
|
test_vectors/aes_xcbc.c \
|
||||||
test_vectors/md5.c \
|
test_vectors/md5.c \
|
||||||
|
test_vectors/md5_hmac.c \
|
||||||
test_vectors/rng.c
|
test_vectors/rng.c
|
||||||
libstrongswan_test_vectors_la_LDFLAGS = -module
|
libstrongswan_test_vectors_la_LDFLAGS = -module
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,10 @@ TEST_VECTOR_SIGNER(aes_xcbc_s2)
|
|||||||
TEST_VECTOR_SIGNER(aes_xcbc_s3)
|
TEST_VECTOR_SIGNER(aes_xcbc_s3)
|
||||||
TEST_VECTOR_SIGNER(aes_xcbc_s4)
|
TEST_VECTOR_SIGNER(aes_xcbc_s4)
|
||||||
TEST_VECTOR_SIGNER(aes_xcbc_s5)
|
TEST_VECTOR_SIGNER(aes_xcbc_s5)
|
||||||
|
TEST_VECTOR_SIGNER(md5_hmac_s1)
|
||||||
|
TEST_VECTOR_SIGNER(md5_hmac_s2)
|
||||||
|
TEST_VECTOR_SIGNER(md5_hmac_s3)
|
||||||
|
TEST_VECTOR_SIGNER(md5_hmac_s4)
|
||||||
|
|
||||||
TEST_VECTOR_HASHER(md5_1)
|
TEST_VECTOR_HASHER(md5_1)
|
||||||
TEST_VECTOR_HASHER(md5_2)
|
TEST_VECTOR_HASHER(md5_2)
|
||||||
@@ -40,6 +44,12 @@ TEST_VECTOR_PRF(aes_xcbc_p4)
|
|||||||
TEST_VECTOR_PRF(aes_xcbc_p5)
|
TEST_VECTOR_PRF(aes_xcbc_p5)
|
||||||
TEST_VECTOR_PRF(aes_xcbc_p6)
|
TEST_VECTOR_PRF(aes_xcbc_p6)
|
||||||
TEST_VECTOR_PRF(aes_xcbc_p7)
|
TEST_VECTOR_PRF(aes_xcbc_p7)
|
||||||
|
TEST_VECTOR_PRF(md5_hmac_p1)
|
||||||
|
TEST_VECTOR_PRF(md5_hmac_p2)
|
||||||
|
TEST_VECTOR_PRF(md5_hmac_p3)
|
||||||
|
TEST_VECTOR_PRF(md5_hmac_p4)
|
||||||
|
TEST_VECTOR_PRF(md5_hmac_p5)
|
||||||
|
TEST_VECTOR_PRF(md5_hmac_p6)
|
||||||
|
|
||||||
TEST_VECTOR_RNG(rng_monobit_1)
|
TEST_VECTOR_RNG(rng_monobit_1)
|
||||||
TEST_VECTOR_RNG(rng_monobit_2)
|
TEST_VECTOR_RNG(rng_monobit_2)
|
||||||
|
|||||||
@@ -0,0 +1,112 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2009 Martin Willi
|
||||||
|
* Hochschule fuer Technik Rapperswil
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by the
|
||||||
|
* Free Software Foundation; either version 2 of the Licenseor (at your
|
||||||
|
* option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be usefulbut
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <crypto/crypto_tester.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MD5 hmac test vectors from RFC2202
|
||||||
|
*/
|
||||||
|
signer_test_vector_t md5_hmac_s1 = {
|
||||||
|
.alg = AUTH_HMAC_MD5_96, .len = 8,
|
||||||
|
.key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
|
||||||
|
.data = "Hi There",
|
||||||
|
.mac = "\x92\x94\x72\x7a\x36\x38\xbb\x1c\x13\xf4\x8e\xf8"
|
||||||
|
};
|
||||||
|
|
||||||
|
signer_test_vector_t md5_hmac_s2 = {
|
||||||
|
.alg = AUTH_HMAC_MD5_128, .len = 8,
|
||||||
|
.key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
|
||||||
|
.data = "Hi There",
|
||||||
|
.mac = "\x92\x94\x72\x7a\x36\x38\xbb\x1c\x13\xf4\x8e\xf8\x15\x8b\xfc\x9d"
|
||||||
|
};
|
||||||
|
|
||||||
|
prf_test_vector_t md5_hmac_p1 = {
|
||||||
|
.alg = PRF_HMAC_MD5, .key_size = 16, .len = 8,
|
||||||
|
.key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
|
||||||
|
.seed = "Hi There",
|
||||||
|
.out = "\x92\x94\x72\x7a\x36\x38\xbb\x1c\x13\xf4\x8e\xf8\x15\x8b\xfc\x9d"
|
||||||
|
};
|
||||||
|
|
||||||
|
prf_test_vector_t md5_hmac_p2 = {
|
||||||
|
.alg = PRF_HMAC_MD5, .key_size = 4, .len = 28,
|
||||||
|
.key = "Jefe",
|
||||||
|
.seed = "what do ya want for nothing?",
|
||||||
|
.out = "\x75\x0c\x78\x3e\x6a\xb0\xb5\x03\xea\xa8\x6e\x31\x0a\x5d\xb7\x38"
|
||||||
|
};
|
||||||
|
|
||||||
|
signer_test_vector_t md5_hmac_s3 = {
|
||||||
|
.alg = AUTH_HMAC_MD5_96, .len = 50,
|
||||||
|
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
|
||||||
|
.data = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
|
||||||
|
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
|
||||||
|
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
|
||||||
|
"\xdd\xdd",
|
||||||
|
.mac = "\x56\xbe\x34\x52\x1d\x14\x4c\x88\xdb\xb8\xc7\x33"
|
||||||
|
};
|
||||||
|
|
||||||
|
signer_test_vector_t md5_hmac_s4 = {
|
||||||
|
.alg = AUTH_HMAC_MD5_128, .len = 50,
|
||||||
|
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
|
||||||
|
.data = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
|
||||||
|
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
|
||||||
|
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
|
||||||
|
"\xdd\xdd",
|
||||||
|
.mac = "\x56\xbe\x34\x52\x1d\x14\x4c\x88\xdb\xb8\xc7\x33\xf0\xe8\xb3\xf6"
|
||||||
|
};
|
||||||
|
|
||||||
|
prf_test_vector_t md5_hmac_p3 = {
|
||||||
|
.alg = PRF_HMAC_MD5, .key_size = 16, .len = 50,
|
||||||
|
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
|
||||||
|
.seed = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
|
||||||
|
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
|
||||||
|
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
|
||||||
|
"\xdd\xdd",
|
||||||
|
.out = "\x56\xbe\x34\x52\x1d\x14\x4c\x88\xdb\xb8\xc7\x33\xf0\xe8\xb3\xf6"
|
||||||
|
};
|
||||||
|
|
||||||
|
prf_test_vector_t md5_hmac_p4 = {
|
||||||
|
.alg = PRF_HMAC_MD5, .key_size = 25, .len = 50,
|
||||||
|
.key = "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
|
||||||
|
"\x11\x12\x13\x14\x15\x16\x17\x18\x19",
|
||||||
|
.seed = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
|
||||||
|
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
|
||||||
|
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
|
||||||
|
"\xcd\xcd",
|
||||||
|
.out = "\x69\x7e\xaf\x0a\xca\x3a\x3a\xea\x3a\x75\x16\x47\x46\xff\xaa\x79"
|
||||||
|
};
|
||||||
|
|
||||||
|
prf_test_vector_t md5_hmac_p5 = {
|
||||||
|
.alg = PRF_HMAC_MD5, .key_size = 80, .len = 54,
|
||||||
|
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||||
|
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||||
|
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||||
|
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||||
|
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
|
||||||
|
.seed = "Test Using Larger Than Block-Size Key - Hash Key First",
|
||||||
|
.out = "\x6b\x1a\xb7\xfe\x4b\xd7\xbf\x8f\x0b\x62\xe6\xce\x61\xb9\xd0\xcd"
|
||||||
|
};
|
||||||
|
|
||||||
|
prf_test_vector_t md5_hmac_p6 = {
|
||||||
|
.alg = PRF_HMAC_MD5, .key_size = 80, .len = 73,
|
||||||
|
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||||
|
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||||
|
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||||
|
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||||
|
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
|
||||||
|
.seed = "Test Using Larger Than Block-Size Key and Larger "
|
||||||
|
"Than One Block-Size Data",
|
||||||
|
.out = "\x6f\x63\x0f\xad\x67\xcd\xa0\xee\x1f\xb1\xf5\x62\xdb\x3a\xa5\x3e"
|
||||||
|
};
|
||||||
|
|
||||||
Reference in New Issue
Block a user