diff --git a/testsuite/hmac-test.c b/testsuite/hmac-test.c index da0d28747f8dcc35383a1de60bb4651f56e5cd8d..84735dd51b2b5a091e2bd05ee35c4bcc7cc8bdde 100644 --- a/testsuite/hmac-test.c +++ b/testsuite/hmac-test.c @@ -7,12 +7,13 @@ test_main(void) struct hmac_md5_ctx md5; struct hmac_sha1_ctx sha1; struct hmac_sha256_ctx sha256; + struct hmac_sha512_ctx sha512; - /* sha256's digests are longest */ - uint8_t digest[SHA256_DIGEST_SIZE]; + /* sha512's digests are longest */ + uint8_t digest[SHA512_DIGEST_SIZE]; memset(digest, 0, sizeof(digest)); - + /* Test vectors for md5, from RFC-2202 */ /* md5 - 1 */ @@ -44,7 +45,7 @@ test_main(void) if (!MEMEQ(MD5_DIGEST_SIZE, digest, H("56be34521d144c88 dbb8c733f0e8b3f6"))) FAIL(); - + /* md5 - 4 */ hmac_md5_set_key(&md5, HL("0102030405060708 090a0b0c0d0e0f10" "1112131415161718 19")); @@ -97,7 +98,7 @@ test_main(void) H("6f630fad67cda0ee 1fb1f562db3aa53e"))) FAIL(); - + /* Test vectors for sha1, from RFC-2202 */ /* sha1 - 1 */ @@ -129,7 +130,7 @@ test_main(void) if (!MEMEQ(SHA1_DIGEST_SIZE, digest, H("125d7342b9ac11cd 91a39af48aa17b4f 63f175d3"))) FAIL(); - + /* sha1 - 4 */ hmac_sha1_set_key(&sha1, HL("0102030405060708 090a0b0c0d0e0f10" "1112131415161718 19")); @@ -316,5 +317,57 @@ test_main(void) "84d3e7a1ff98a2fc 2ac7d8e064c3b2e6"))) FAIL(); + /* Test vectors for sha512, from draft-kelly-ipsec-ciph-sha2-01.txt */ + + /* Test case AUTH512-1: */ + hmac_sha512_set_key(&sha512, HL("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b" + "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b" + "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b" + "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b")); + hmac_sha512_update(&sha512, LDATA("Hi There")); + hmac_sha512_digest(&sha512, SHA512_DIGEST_SIZE, digest); + + if (!MEMEQ(SHA512_DIGEST_SIZE, digest, + H("637edc6e01dce7e6742a99451aae82df" + "23da3e92439e590e43e761b33e910fb8" + "ac2878ebd5803f6f0b61dbce5e251ff8" + "789a4722c1be65aea45fd464e89f8f5b"))) + FAIL(); + + /* Test case AUTH512-2: */ + hmac_sha512_set_key(&sha512, LDATA("JefeJefeJefeJefe" + "JefeJefeJefeJefe" + "JefeJefeJefeJefe" + "JefeJefeJefeJefe")); + hmac_sha512_update(&sha512, LDATA("what do ya want for nothing?")); + hmac_sha512_digest(&sha512, SHA512_DIGEST_SIZE, digest); + + if (!MEMEQ(SHA512_DIGEST_SIZE, digest, + H("cb370917ae8a7ce28cfd1d8f4705d614" + "1c173b2a9362c15df235dfb251b15454" + "6aa334ae9fb9afc2184932d8695e397b" + "fa0ffb93466cfcceaae38c833b7dba38"))) + FAIL(); + + /* Test case AUTH512-3: */ + hmac_sha512_set_key(&sha512, HL("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")); + hmac_sha512_update(&sha512, HL("dddddddddddddddddddddddddddddddd" + "dddddddddddddddddddddddddddddddd" + "dddddddddddddddddddddddddddddddd" + "dddd")); + hmac_sha512_digest(&sha512, SHA512_DIGEST_SIZE, digest); + + if (!MEMEQ(SHA512_DIGEST_SIZE, digest, + H("2ee7acd783624ca9398710f3ee05ae41" + "b9f9b0510c87e49e586cc9bf961733d8" + "623c7b55cebefccf02d5581acc1c9d5f" + "b1ff68a1de45509fbe4da9a433922655"))) + FAIL(); + + /* Test case AUTH512-3 from same document seems broken. */ + SUCCESS(); }