From e9926004f7caf25abbfb87ebd921a01e6bf865dc Mon Sep 17 00:00:00 2001 From: mdw Date: Sun, 21 Mar 2004 22:44:36 +0000 Subject: [PATCH] Test hashing on long strings. --- hash.h | 46 +++++++++++++++++++++++++++++++++++++++++++++- tests/rmd128 | 9 ++++++--- tests/rmd160 | 9 ++++++--- tests/sha | 31 +++++-------------------------- tests/sha256 | 32 ++++++-------------------------- tests/sha384 | 31 ++++++------------------------- tests/sha512 | 32 +++++++------------------------- 7 files changed, 81 insertions(+), 109 deletions(-) diff --git a/hash.h b/hash.h index 1d659d3..f5d21de 100644 --- a/hash.h +++ b/hash.h @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: hash.h,v 1.3 2000/06/17 11:23:27 mdw Exp $ + * $Id: hash.h,v 1.4 2004/03/21 22:42:27 mdw Exp $ * * Generic handling for message digest functions * @@ -30,6 +30,9 @@ /*----- Revision history --------------------------------------------------* * * $Log: hash.h,v $ + * Revision 1.4 2004/03/21 22:42:27 mdw + * Test hashing on long strings. + * * Revision 1.3 2000/06/17 11:23:27 mdw * Portability fix for broken compilers. * @@ -179,6 +182,8 @@ #include #include +#define HASH_BUFLEN 100000 + #define HASH_TEST(PRE, pre) \ \ static int verify(dstr *v) \ @@ -227,8 +232,47 @@ static int verify(dstr *v) \ return (ok); \ } \ \ +static int verifyrep(dstr *v) \ +{ \ + pre##_ctx ctx; \ + size_t len = v[0].len; \ + int n = *(int *)v[1].buf; \ + int nd = 0; \ + int nn = len; \ + int ok = 1; \ + octet *p, *q; \ + dstr d = DSTR_INIT; \ + \ + while (nn < HASH_BUFLEN && (n & 1) == 0) { nd++; nn <<= 1; n >>= 1; } \ + p = xmalloc(nn); \ + memcpy(p, v[0].buf, len); \ + q = p + len; \ + while (nd--) { memcpy(q, p, len); q += len; len <<= 1; } \ + \ + dstr_ensure(&d, PRE##_HASHSZ); \ + d.len = PRE##_HASHSZ; \ + pre##_init(&ctx); \ + while (n--) pre##_hash(&ctx, p, len); \ + pre##_done(&ctx, d.buf); \ + \ + if (memcmp(d.buf, v[2].buf, PRE##_HASHSZ) != 0) { \ + printf("\nfail:\n\tinput = `%s'\n\treps = `%i'\n\texpected = ", \ + v[0].buf, *(int *)v[1].buf); \ + type_hex.dump(&v[2], stdout); \ + fputs("\n\tcomputed = ", stdout); \ + type_hex.dump(&d, stdout); \ + putchar('\n'); \ + ok = 0; \ + } \ + free(p); \ + dstr_destroy(&d); \ + return (ok); \ +} \ + \ static test_chunk defs[] = { \ { #pre, verify, { &type_string, &type_hex, 0 } }, \ + { #pre "-rep", verifyrep, \ + { &type_string, &type_int, &type_hex, 0 } }, \ { 0, 0, { 0 } } \ }; \ \ diff --git a/tests/rmd128 b/tests/rmd128 index 574a344..c82b25d 100644 --- a/tests/rmd128 +++ b/tests/rmd128 @@ -1,6 +1,6 @@ # Test vectors for RIPEMD-160 # -# $Id: rmd128,v 1.2 2000/07/15 10:03:51 mdw Exp $ +# $Id: rmd128,v 1.3 2004/03/21 22:44:36 mdw Exp $ # --- Basic hash function --- # @@ -17,8 +17,11 @@ rmd128 { a1aa0689d0fafa2ddc22e88b49133a06; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" d1e959eb179c911faea4624c60c5c702; - "12345678901234567890123456789012345678901234567890123456789012345678901234567890" - 3f45ef194732c2dbb2c4a2c769795fa3; +} + +rmd128-rep { + "1234567890" 8 3f45ef194732c2dbb2c4a2c769795fa3; + "a" 1000000 4a7f5723f954eba1216c9d8f6320431f; } # --- HMAC mode --- diff --git a/tests/rmd160 b/tests/rmd160 index ef12d1b..1bd3a77 100644 --- a/tests/rmd160 +++ b/tests/rmd160 @@ -1,6 +1,6 @@ # Test vectors for RIPEMD-160 # -# $Id: rmd160,v 1.3 2000/07/15 10:03:51 mdw Exp $ +# $Id: rmd160,v 1.4 2004/03/21 22:44:36 mdw Exp $ # --- Basic hash function --- # @@ -17,8 +17,11 @@ rmd160 { 12a053384a9c0c88e405a06c27dcf49ada62eb2b; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" b0e20b6e3116640286ed3a87a5713079b21f5189; - "12345678901234567890123456789012345678901234567890123456789012345678901234567890" - 9b752e45573d4b39f4dbd3323cab82bf63326bfb; +} + +rmd160-rep { + "1234567890" 8 9b752e45573d4b39f4dbd3323cab82bf63326bfb; + "a" 1000000 52783243c1697bdbe16d37f97f68f08325dc1528; } # --- HMAC mode --- diff --git a/tests/sha b/tests/sha index 99f5a40..94e4219 100644 --- a/tests/sha +++ b/tests/sha @@ -1,6 +1,6 @@ # Test vectors for the SHA-1 hash function # -# $Id: sha,v 1.4 2000/07/15 10:03:13 mdw Exp $ +# $Id: sha,v 1.5 2004/03/21 22:44:36 mdw Exp $ # --- Basic hash function --- # @@ -19,33 +19,12 @@ sha { 84983e441c3bd26ebaae4aa1f95129e5e54670f1; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" 761c457bf73b14d27e9e9265c46f4b4dda11f940; - "12345678901234567890123456789012345678901234567890123456789012345678901234567890" - 50abf5706a150990a08b2c5ea40fa0e585554732; +} +sha-rep { + "1234567890" 8 50abf5706a150990a08b2c5ea40fa0e585554732; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -" f74d36bf17ee23c46ec166a48a24da6ab999eaea; +" 23 f74d36bf17ee23c46ec166a48a24da6ab999eaea; } # --- HMAC mode --- diff --git a/tests/sha256 b/tests/sha256 index d58d442..ee4691f 100644 --- a/tests/sha256 +++ b/tests/sha256 @@ -1,4 +1,4 @@ -# $Id: sha256,v 1.1 2000/10/15 17:48:16 mdw Exp $ +# $Id: sha256,v 1.2 2004/03/21 22:44:36 mdw Exp $ # # Test vectors for SHA-256 @@ -27,33 +27,13 @@ sha256 { 248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" db4bfcbd4da0cd85a60c3c37d3fbd8805c77f15fc6b1fdfe614ee0a7c8fdb4c0; - "12345678901234567890123456789012345678901234567890123456789012345678901234567890" +} + +sha256-rep { + "1234567890" 8 f371bc4a311f2b009eef952dd83ca80e2b60026c8e935592d0f9c308453c813e; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -" - 4804a2a4759acebe127b62ba651ae601a756ca0b509e4987498224acaffb0d98; +" 23 4804a2a4759acebe127b62ba651ae601a756ca0b509e4987498224acaffb0d98; } # --- HMAC mode --- diff --git a/tests/sha384 b/tests/sha384 index d05102d..192b6b6 100644 --- a/tests/sha384 +++ b/tests/sha384 @@ -1,4 +1,4 @@ -# $Id: sha384,v 1.2 2000/10/15 19:09:32 mdw Exp $ +# $Id: sha384,v 1.3 2004/03/21 22:44:36 mdw Exp $ # # Test vectors for SHA-384 @@ -27,32 +27,13 @@ sha384 { 3391fdddfc8dc7393707a65b1b4709397cf8b1d162af05abfe8f450de5f36bc6b0455a8520bc4e6f5fe95b1fe3c8452b; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" 1761336e3f7cbfe51deb137f026f89e01a448e3b1fafa64039c1464ee8732f11a5341a6f41e0c202294736ed64db1a84; - "12345678901234567890123456789012345678901234567890123456789012345678901234567890" +} + +sha384-rep { + "1234567890" 8 b12932b0627d1c060942f5447764155655bd4da0c9afa6dd9b9ef53129af1b8fb0195996d2de9ca0df9d821ffee67026; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -" +" 23 f77d169c73427bd30cceff74f822a0209657dfb78c07980509bf8452a3c5d671b7198081898d0a0034e0f7151211fa0f; } diff --git a/tests/sha512 b/tests/sha512 index 2acf2f4..60f4574 100644 --- a/tests/sha512 +++ b/tests/sha512 @@ -1,4 +1,4 @@ -# $Id: sha512,v 1.2 2001/04/03 19:37:01 mdw Exp $ +# $Id: sha512,v 1.3 2004/03/21 22:44:36 mdw Exp $ # # Test vectors for SHA-512 @@ -27,32 +27,14 @@ sha512 { 204a8fc6dda82f0a0ced7beb8e08a41657c16ef468b228a8279be331a703c33596fd15c13b1b07f9aa1d3bea57789ca031ad85c7a71dd70354ec631238ca3445; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" 1e07be23c26a86ea37ea810c8ec7809352515a970e9253c26f536cfc7a9996c45c8370583e0a78fa4a90041d71a4ceab7423f19c71b9d5a3e01249f0bebd5894; - "12345678901234567890123456789012345678901234567890123456789012345678901234567890" +} + +sha512-rep { + "1234567890" 8 72ec1ef1124a45b047e8b7c75a932195135bb61de24ec0d1914042246e0aec3a2354e093d76f3048b456764346900cb130d2a4fd5dd16abb5e30bcb850dee843; + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -" +" 23 4def32cfb1107a104eae530fe04326a57e839a0bd9675f6770ff18d0b3b3ee2d4343bf99e9d54adc272617d49d0f61eab4b4bc177f9d2bac086cd2d902b5780e; } -- 2.11.0