added SHA2 HMAC signer test vectors
authorMartin Willi <martin@strongswan.org>
Fri, 12 Jun 2009 09:09:09 +0000 (11:09 +0200)
committerMartin Willi <martin@strongswan.org>
Fri, 12 Jun 2009 09:09:09 +0000 (11:09 +0200)
src/libstrongswan/plugins/test_vectors/test_vectors.h
src/libstrongswan/plugins/test_vectors/test_vectors/sha2_hmac.c

index d91ffaf..66915e7 100644 (file)
@@ -34,6 +34,15 @@ TEST_VECTOR_SIGNER(sha1_hmac_s3)
 TEST_VECTOR_SIGNER(sha1_hmac_s4)
 TEST_VECTOR_SIGNER(sha1_hmac_s5)
 TEST_VECTOR_SIGNER(sha1_hmac_s6)
+TEST_VECTOR_SIGNER(sha256_hmac_s1)
+TEST_VECTOR_SIGNER(sha256_hmac_s2)
+TEST_VECTOR_SIGNER(sha256_hmac_s3)
+TEST_VECTOR_SIGNER(sha384_hmac_s1)
+TEST_VECTOR_SIGNER(sha384_hmac_s2)
+TEST_VECTOR_SIGNER(sha384_hmac_s3)
+TEST_VECTOR_SIGNER(sha512_hmac_s1)
+TEST_VECTOR_SIGNER(sha512_hmac_s2)
+TEST_VECTOR_SIGNER(sha512_hmac_s3)
 
 TEST_VECTOR_HASHER(md5_1)
 TEST_VECTOR_HASHER(md5_2)
index caba472..536eba8 100644 (file)
@@ -16,7 +16,7 @@
 #include <crypto/crypto_tester.h>
 
 /**
- * SHA-256, SHA384, SHA512 hmac test vectors from RFC 4231
+ * SHA-256, SHA384, SHA512 hmac test vectors from RFC 4868
  */
 prf_test_vector_t sha256_hmac_p1 = {
        .alg = PRF_HMAC_SHA2_256, .key_size = 20, .len = 8,
@@ -27,6 +27,14 @@ prf_test_vector_t sha256_hmac_p1 = {
                          "\x88\x1d\xc2\x00\xc9\x83\x3d\xa7\x26\xe9\x37\x6c\x2e\x32\xcf\xf7"
 };
 
+signer_test_vector_t sha256_hmac_s1 = {
+       .alg = AUTH_HMAC_SHA2_256_128, .len = 8,
+       .key    = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
+                         "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
+       .data   = "Hi There",
+       .mac    = "\x19\x8a\x60\x7e\xb4\x4b\xfb\xc6\x99\x03\xa0\xf1\xcf\x2b\xbd\xc5"
+};
+
 prf_test_vector_t sha384_hmac_p1 = {
        .alg = PRF_HMAC_SHA2_384, .key_size = 20, .len = 8,
        .key    = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
@@ -37,6 +45,16 @@ prf_test_vector_t sha384_hmac_p1 = {
                          "\xfa\xea\x9e\xa9\x07\x6e\xde\x7f\x4a\xf1\x52\xe8\xb2\xfa\x9c\xb6"
 };
 
+signer_test_vector_t sha384_hmac_s1 = {
+       .alg = AUTH_HMAC_SHA2_384_192, .len = 8,
+       .key    = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
+                         "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
+                         "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
+       .data   = "Hi There",
+       .mac    = "\xb6\xa8\xd5\x63\x6f\x5c\x6a\x72\x24\xf9\x97\x7d\xcf\x7e\xe6\xc7"
+                         "\xfb\x6d\x0c\x48\xcb\xde\xe9\x73"
+};
+
 prf_test_vector_t sha512_hmac_p1 = {
        .alg = PRF_HMAC_SHA2_512, .key_size = 20, .len = 8,
        .key    = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
@@ -48,6 +66,17 @@ prf_test_vector_t sha512_hmac_p1 = {
                          "\xbe\x9d\x91\x4e\xeb\x61\xf1\x70\x2e\x69\x6c\x20\x3a\x12\x68\x54"
 };
 
+signer_test_vector_t sha512_hmac_s1 = {
+       .alg = AUTH_HMAC_SHA2_512_256, .len = 8,
+       .key    = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
+                         "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
+                         "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
+                         "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
+       .data   = "Hi There",
+       .mac    = "\x63\x7e\xdc\x6e\x01\xdc\xe7\xe6\x74\x2a\x99\x45\x1a\xae\x82\xdf"
+                         "\x23\xda\x3e\x92\x43\x9e\x59\x0e\x43\xe7\x61\xb3\x3e\x91\x0f\xb8"
+};
+
 prf_test_vector_t sha256_hmac_p2 = {
        .alg = PRF_HMAC_SHA2_256, .key_size = 4, .len = 28,
        .key    = "Jefe",
@@ -56,6 +85,13 @@ prf_test_vector_t sha256_hmac_p2 = {
                          "\x5a\x00\x3f\x08\x9d\x27\x39\x83\x9d\xec\x58\xb9\x64\xec\x38\x43"
 };
 
+signer_test_vector_t sha256_hmac_s2 = {
+       .alg = AUTH_HMAC_SHA2_256_128, .len = 28,
+       .key    = "JefeJefeJefeJefeJefeJefeJefeJefe",
+       .data   = "what do ya want for nothing?",
+       .mac    = "\x16\x7f\x92\x85\x88\xc5\xcc\x2e\xef\x8e\x30\x93\xca\xa0\xe8\x7c"
+};
+
 prf_test_vector_t sha384_hmac_p2 = {
        .alg = PRF_HMAC_SHA2_384, .key_size = 4, .len = 28,
        .key    = "Jefe",
@@ -65,6 +101,14 @@ prf_test_vector_t sha384_hmac_p2 = {
                          "\x8e\x22\x40\xca\x5e\x69\xe2\xc7\x8b\x32\x39\xec\xfa\xb2\x16\x49"
 };
 
+signer_test_vector_t sha384_hmac_s2 = {
+       .alg = AUTH_HMAC_SHA2_384_192, .len = 28,
+       .key    = "JefeJefeJefeJefeJefeJefeJefeJefeJefeJefeJefeJefe",
+       .data   = "what do ya want for nothing?",
+       .mac    = "\x2c\x73\x53\x97\x4f\x18\x42\xfd\x66\xd5\x3c\x45\x2c\xa4\x21\x22"
+                         "\xb2\x8c\x0b\x59\x4c\xfb\x18\x4d"
+};
+
 prf_test_vector_t sha512_hmac_p2 = {
        .alg = PRF_HMAC_SHA2_512, .key_size = 4, .len = 28,
        .key    = "Jefe",
@@ -75,6 +119,14 @@ prf_test_vector_t sha512_hmac_p2 = {
                          "\xca\xea\xb1\xa3\x4d\x4a\x6b\x4b\x63\x6e\x07\x0a\x38\xbc\xe7\x37"
 };
 
+signer_test_vector_t sha512_hmac_s2 = {
+       .alg = AUTH_HMAC_SHA2_512_256, .len = 28,
+       .key    = "JefeJefeJefeJefeJefeJefeJefeJefeJefeJefeJefeJefeJefeJefeJefeJefe",
+       .data   = "what do ya want for nothing?",
+       .mac    = "\xcb\x37\x09\x17\xae\x8a\x7c\xe2\x8c\xfd\x1d\x8f\x47\x05\xd6\x14"
+                         "\x1c\x17\x3b\x2a\x93\x62\xc1\x5d\xf2\x35\xdf\xb2\x51\xb1\x54\x54"
+};
+
 prf_test_vector_t sha256_hmac_p3 = {
        .alg = PRF_HMAC_SHA2_256, .key_size = 20, .len = 50,
        .key    = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
@@ -86,6 +138,18 @@ prf_test_vector_t sha256_hmac_p3 = {
        .out    = "\x77\x3e\xa9\x1e\x36\x80\x0e\x46\x85\x4d\xb8\xeb\xd0\x91\x81\xa7"
                          "\x29\x59\x09\x8b\x3e\xf8\xc1\x22\xd9\x63\x55\x14\xce\xd5\x65\xfe"
 };
+
+signer_test_vector_t sha256_hmac_s3 = {
+       .alg = AUTH_HMAC_SHA2_256_128, .len = 50,
+       .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",
+       .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    = "\xcd\xcb\x12\x20\xd1\xec\xcc\xea\x91\xe5\x3a\xba\x30\x92\xf9\x62"
+};
+
 prf_test_vector_t sha384_hmac_p3 = {
        .alg = PRF_HMAC_SHA2_384, .key_size = 20, .len = 50,
        .key    = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
@@ -99,6 +163,19 @@ prf_test_vector_t sha384_hmac_p3 = {
                          "\x2a\x5a\xb3\x9d\xc1\x38\x14\xb9\x4e\x3a\xb6\xe1\x01\xa3\x4f\x27"
 };
 
+signer_test_vector_t sha384_hmac_s3 = {
+       .alg = AUTH_HMAC_SHA2_384_192, .len = 50,
+       .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",
+       .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    = "\x80\x9f\x43\x9b\xe0\x02\x74\x32\x1d\x4a\x53\x86\x52\x16\x4b\x53"
+                         "\x55\x4a\x50\x81\x84\xa0\xc3\x16"
+};
+
 prf_test_vector_t sha512_hmac_p3 = {
        .alg = PRF_HMAC_SHA2_512, .key_size = 20, .len = 50,
        .key    = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
@@ -113,6 +190,20 @@ prf_test_vector_t sha512_hmac_p3 = {
                          "\xb9\x46\xa3\x37\xbe\xe8\x94\x26\x74\x27\x88\x59\xe1\x32\x92\xfb"
 };
 
+signer_test_vector_t sha512_hmac_s3 = {
+       .alg = AUTH_HMAC_SHA2_512_256, .len = 50,
+       .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",
+       .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    = "\x2e\xe7\xac\xd7\x83\x62\x4c\xa9\x39\x87\x10\xf3\xee\x05\xae\x41"
+                         "\xb9\xf9\xb0\x51\x0c\x87\xe4\x9e\x58\x6c\xc9\xbf\x96\x17\x33\xd8"
+};
+
 prf_test_vector_t sha256_hmac_p4 = {
        .alg = PRF_HMAC_SHA2_256, .key_size = 25, .len = 50,
        .key    = "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"