/symm/chacha20-ietf.h
/symm/chacha8-ietf.h
/symm/xchacha.h
+/symm/safersk.c
+/symm/sha224.c
+/symm/sha384.c
+/symm/whirlpool256.c
PRECOMPS += $(precomp)/symm/safer-tab.c
PRECOMP_PROGS += safer-mktab
STUBS_HDR += SAFER-SK,safersk,safer
+STUBS_SRC += safersk,safer
if !CROSS_COMPILING
$(precomp)/symm/safer-tab.c:
$(AM_V_at)$(MKDIR_P) $(precomp)/symm
HASHES += sha384 sha512
STUBS_HDR += SHA-224,sha224,sha256
STUBS_HDR += SHA-384,sha384,sha512
+STUBS_SRC += sha224,sha256
+STUBS_SRC += sha384,sha512
## Anderson and Biham's `Tiger' hash function.
HASHES += tiger
PRECOMPS += $(precomp)/symm/whirlpool-tab.c
PRECOMP_PROGS += whirlpool-mktab
STUBS_HDR += Whirlpool-256,whirlpool256,whirlpool
+STUBS_SRC += whirlpool256,whirlpool
if !CROSS_COMPILING
$(precomp)/symm/whirlpool-tab.c:
$(AM_V_at)$(MKDIR_P) $(precomp)/symm
PACK(dst, a, b, c, d, e, f, g, h);
}
-BLKC_TEST(SAFER, safer)
+/*----- Test rig ----------------------------------------------------------*/
+
+#ifdef TEST_RIG
+
+#include <mLib/testrig.h>
+
+#define CIPHERS(_) \
+ _(SAFER, safer) \
+ _(SAFERSK, safersk)
+
+CIPHERS(BLKC_VERIFY)
+
+static const test_chunk defs[] = {
+ CIPHERS(BLKC_TESTDEFS)
+ { 0, 0, { 0 } }
+};
+
+int main(int argc, char *argv[])
+{
+ test_run(argc, argv, defs, SRCDIR "/t/safer");
+ return (0);
+}
+
+#endif
/*----- That's all, folks -------------------------------------------------*/
+++ /dev/null
-/* -*-c-*-
- *
- * Stub code for SAFER-SK
- */
-
-#include "blkc.h"
-#include "safersk.h"
-
-typedef int uninteresting;
-BLKC_TEST(SAFERSK, safersk)
+++ /dev/null
-/* -*-c-*-
- *
- * Stub code for SHA-224
- */
-
-#include "ghash.h"
-#include "ghash-def.h"
-#include "hash.h"
-#include "sha224.h"
-
-GHASH_DEF(SHA224, sha224)
-HASH_TEST(SHA224, sha224)
/* --- Generic interface --- */
-GHASH_DEF(SHA256, sha256)
+#define HASHES(_) \
+ _(SHA224, sha224) \
+ _(SHA256, sha256)
-/* --- Test code --- */
+HASHES(GHASH_DEF)
-HASH_TEST(SHA256, sha256)
+/*----- Test rig ----------------------------------------------------------*/
+
+#ifdef TEST_RIG
+
+#include <mLib/testrig.h>
+
+HASHES(HASH_VERIFY)
+
+static const test_chunk defs[] = {
+ HASHES(HASH_TESTDEFS)
+ { 0, 0, { 0 } }
+};
+
+int main(int argc, char *argv[])
+{
+ test_run(argc, argv, defs, SRCDIR "/t/sha256");
+ return (0);
+}
+
+#endif
/*----- That's all, folks -------------------------------------------------*/
+++ /dev/null
-/* -*-c-*-
- *
- * Stub code for SHA-384
- */
-
-#include "ghash.h"
-#include "ghash-def.h"
-#include "hash.h"
-#include "sha384.h"
-
-GHASH_DEF(SHA384, sha384)
-HASH_TEST(SHA384, sha384)
/* --- Generic interface --- */
-GHASH_DEF(SHA512, sha512)
+#define HASHES(_) \
+ _(SHA384, sha384, "sha384") \
+ _(SHA512, sha512, "sha512")
-/* --- Test code --- */
+HASHES(GHASH_DEFX)
-HASH_TEST(SHA512, sha512)
+/*----- Test rig ----------------------------------------------------------*/
+
+#ifdef TEST_RIG
+
+#include <mLib/testrig.h>
+
+HASHES(HASH_VERIFYX)
+
+static const test_chunk defs[] = {
+ HASHES(HASH_TESTDEFSX)
+ { 0, 0, { 0 } }
+};
+
+int main(int argc, char *argv[])
+{
+ test_run(argc, argv, defs, SRCDIR "/t/sha512");
+ return (0);
+}
+
+#endif
/*----- That's all, folks -------------------------------------------------*/
0807060504030201 0102030405060708 c8f29cdd87783ed9;
100f0e0d0c0b0a090807060504030201 0102030405060708 4a99b15cce9ada19;
}
+
+safersk {
+ 0102030405060708 0102030405060708 60d04ad7c49b8ded;
+ 100f0e0d0c0b0a090807060504030201 0102030405060708 b260740f80d2445d;
+}
-# Test vectors for SAFER
-
-# From HAC 7.114, and Richard de Moliner's implementation
-
-safersk {
- 0102030405060708 0102030405060708 60d04ad7c49b8ded;
- 100f0e0d0c0b0a090807060504030201 0102030405060708 b260740f80d2445d;
-}
+### No tests here. See `safer' instead.
# Test vectors for SHA-224
-# --- Basic hash function ---
-
-sha224 {
-
- # --- Test vectors from the definition [FALSE] ---
-
- "abc"
- 23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7;
- "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
- 75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525;
-
- # --- Other tests to trap regression ---
-
- ""
- d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f;
- "a"
- abd37534c7d9a2efb9465de931cd7055ffdb8879563ae98078d6d6d5;
- "message digest"
- 2cb21c83ae2f004de7e81c3c7019cbcb65b71ab656b22d6d0c39b8eb;
- "abcdefghijklmnopqrstuvwxyz"
- 45a5f72c39c5cff2522eb3429799e49e5f44b356ef926bcf390dccc2;
- "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
- 75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525;
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
- bff72b4fcb7d75e5632900ac5f90d219e05e97a7bde72e740db393d9;
-}
-
-sha224-rep {
- "1234567890" 8
- b50aecbe4e9bb0b57bc5f3ae760a8e01db24f203fb3cdcd13148046e;
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
-" 23
- 5a86156c37c95ab356e003d569370580737794815f46de7f4834d634;
- "a" 1000000
- 20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67;
-}
-
# --- HMAC mode ---
#
# Autogenerated, unofficial.
db4bfcbd4da0cd85a60c3c37d3fbd8805c77f15fc6b1fdfe614ee0a7c8fdb4c0;
}
+sha224 {
+
+ # --- Test vectors from the definition [FALSE] ---
+
+ "abc"
+ 23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7;
+ "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
+ 75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525;
+
+ # --- Other tests to trap regression ---
+
+ ""
+ d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f;
+ "a"
+ abd37534c7d9a2efb9465de931cd7055ffdb8879563ae98078d6d6d5;
+ "message digest"
+ 2cb21c83ae2f004de7e81c3c7019cbcb65b71ab656b22d6d0c39b8eb;
+ "abcdefghijklmnopqrstuvwxyz"
+ 45a5f72c39c5cff2522eb3429799e49e5f44b356ef926bcf390dccc2;
+ "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
+ 75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525;
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
+ bff72b4fcb7d75e5632900ac5f90d219e05e97a7bde72e740db393d9;
+}
+
sha256-rep {
"1234567890" 8
f371bc4a311f2b009eef952dd83ca80e2b60026c8e935592d0f9c308453c813e;
cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0;
}
+sha224-rep {
+ "1234567890" 8
+ b50aecbe4e9bb0b57bc5f3ae760a8e01db24f203fb3cdcd13148046e;
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
+" 23
+ 5a86156c37c95ab356e003d569370580737794815f46de7f4834d634;
+ "a" 1000000
+ 20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67;
+}
+
# --- HMAC mode ---
#
# Autogenerated, unofficial.
# Test vectors for SHA-384
-# --- Basic hash function ---
-
-sha384 {
-
- # --- Test vectors from the definition ---
-
- "abc"
- cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7;
- "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"
- 09330c33f71147e83d192fc782cd1b4753111b173b3b05d22fa08086e3b0f712fcc7c71a557e2db966c3e9fa91746039;
-
- # --- Other tests to trap regression ---
-
- ""
- 38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b;
- "a"
- 54a59b9f22b0b80880d8427e548b7c23abd873486e1f035dce9cd697e85175033caa88e6d57bc35efae0b5afd3145f31;
- "message digest"
- 473ed35167ec1f5d8e550368a3db39be54639f828868e9454c239fc8b52e3c61dbd0d8b4de1390c256dcbb5d5fd99cd5;
- "abcdefghijklmnopqrstuvwxyz"
- feb67349df3db6f5924815d6c3dc133f091809213731fe5c7b5f4999e463479ff2877f5f2936fa63bb43784b12f3ebb4;
- "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
- 3391fdddfc8dc7393707a65b1b4709397cf8b1d162af05abfe8f450de5f36bc6b0455a8520bc4e6f5fe95b1fe3c8452b;
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
- 1761336e3f7cbfe51deb137f026f89e01a448e3b1fafa64039c1464ee8732f11a5341a6f41e0c202294736ed64db1a84;
-}
-
-sha384-rep {
- "1234567890" 8
- b12932b0627d1c060942f5447764155655bd4da0c9afa6dd9b9ef53129af1b8fb0195996d2de9ca0df9d821ffee67026;
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
-" 23
- f77d169c73427bd30cceff74f822a0209657dfb78c07980509bf8452a3c5d671b7198081898d0a0034e0f7151211fa0f;
- "a" 1000000
- 9d0e1809716474cb086e834e310a4a1ced149e9c00f248527972cec5704c2a5b07b8b3dc38ecc4ebae97ddd87f3d8985;
-}
-
# --- HMAC mode ---
#
# Autogenerated, unofficial.
1e07be23c26a86ea37ea810c8ec7809352515a970e9253c26f536cfc7a9996c45c8370583e0a78fa4a90041d71a4ceab7423f19c71b9d5a3e01249f0bebd5894;
}
+sha384 {
+
+ # --- Test vectors from the definition ---
+
+ "abc"
+ cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7;
+ "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"
+ 09330c33f71147e83d192fc782cd1b4753111b173b3b05d22fa08086e3b0f712fcc7c71a557e2db966c3e9fa91746039;
+
+ # --- Other tests to trap regression ---
+
+ ""
+ 38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b;
+ "a"
+ 54a59b9f22b0b80880d8427e548b7c23abd873486e1f035dce9cd697e85175033caa88e6d57bc35efae0b5afd3145f31;
+ "message digest"
+ 473ed35167ec1f5d8e550368a3db39be54639f828868e9454c239fc8b52e3c61dbd0d8b4de1390c256dcbb5d5fd99cd5;
+ "abcdefghijklmnopqrstuvwxyz"
+ feb67349df3db6f5924815d6c3dc133f091809213731fe5c7b5f4999e463479ff2877f5f2936fa63bb43784b12f3ebb4;
+ "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
+ 3391fdddfc8dc7393707a65b1b4709397cf8b1d162af05abfe8f450de5f36bc6b0455a8520bc4e6f5fe95b1fe3c8452b;
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
+ 1761336e3f7cbfe51deb137f026f89e01a448e3b1fafa64039c1464ee8732f11a5341a6f41e0c202294736ed64db1a84;
+}
+
sha512-rep {
"1234567890" 8
72ec1ef1124a45b047e8b7c75a932195135bb61de24ec0d1914042246e0aec3a2354e093d76f3048b456764346900cb130d2a4fd5dd16abb5e30bcb850dee843;
e718483d0ce769644e2e42c7bc15b4638e1f98b13b2044285632a803afa973ebde0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b;
}
+sha384-rep {
+ "1234567890" 8
+ b12932b0627d1c060942f5447764155655bd4da0c9afa6dd9b9ef53129af1b8fb0195996d2de9ca0df9d821ffee67026;
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
+" 23
+ f77d169c73427bd30cceff74f822a0209657dfb78c07980509bf8452a3c5d671b7198081898d0a0034e0f7151211fa0f;
+ "a" 1000000
+ 9d0e1809716474cb086e834e310a4a1ced149e9c00f248527972cec5704c2a5b07b8b3dc38ecc4ebae97ddd87f3d8985;
+}
+
# --- HMAC mode ---
#
# Autogenerated, unofficial.
dc37e008cf9ee69bf11f00ed9aba26901dd7c28cdec066cc6af42e40f82f3a1e08eba26629129d8fb7cb57211b9281a65517cc879d7b962142c65f5a7af01467;
}
+whirlpool256 {
+ ""
+ 19fa61d75522a4669b44e39c1d2e1726c530232130d407f89afee0964997f7a7;
+ "a"
+ 8aca2602792aec6f11a67206531fb7d7f0dff59413145e6973c45001d0087b42;
+ "abc"
+ 4e2448a4c6f486bb16b6562c73b4020bf3043e3a731bce721ae1b303d97e6d4c;
+ "message digest"
+ 378c84a4126e2dc6e56dcc7458377aac838d00032230f53ce1f5700c0ffb4d3b;
+ "abcdefghijklmnopqrstuvwxyz"
+ f1d754662636ffe92c82ebb9212a484a8d38631ead4238f5442ee13b8054e41b;
+ "abcdbcdecdefdefgefghfghighijhijk"
+ 2a987ea40f917061f5d6f0a0e4644f488a7a5a52deee656207c562f988e95c69;
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
+ dc37e008cf9ee69bf11f00ed9aba26901dd7c28cdec066cc6af42e40f82f3a1e;
+}
+
whirlpool-rep {
"1234567890" 8
466ef18babb0154d25b9d38a6414f5c08784372bccb204d6549c4afadb6014294d5bd8df2a6c44e538cd047b2681a51a2c60481e88c5a20b2c2a80cf3a9a083b;
0c99005beb57eff50a7cf005560ddf5d29057fd86b20bfd62deca0f1ccea4af51fc15490eddc47af32bb2b66c34ff9ad8c6008ad677f77126953b226e4ed8b01;
}
+whirlpool256-rep {
+ "1234567890" 8
+ 466ef18babb0154d25b9d38a6414f5c08784372bccb204d6549c4afadb601429;
+ "a" 1000000
+ 0c99005beb57eff50a7cf005560ddf5d29057fd86b20bfd62deca0f1ccea4af5;
+}
+
# --- HMAC mode ---
#
# Home-made test vectors, for regression.
# Test vectors for the Whirlpool hash function
-# --- Basic hash function ---
-#
-# Some of these are taken from the ISO test vectors from the Whirlpool
-# distribution.
-
-whirlpool256 {
- ""
- 19fa61d75522a4669b44e39c1d2e1726c530232130d407f89afee0964997f7a7;
- "a"
- 8aca2602792aec6f11a67206531fb7d7f0dff59413145e6973c45001d0087b42;
- "abc"
- 4e2448a4c6f486bb16b6562c73b4020bf3043e3a731bce721ae1b303d97e6d4c;
- "message digest"
- 378c84a4126e2dc6e56dcc7458377aac838d00032230f53ce1f5700c0ffb4d3b;
- "abcdefghijklmnopqrstuvwxyz"
- f1d754662636ffe92c82ebb9212a484a8d38631ead4238f5442ee13b8054e41b;
- "abcdbcdecdefdefgefghfghighijhijk"
- 2a987ea40f917061f5d6f0a0e4644f488a7a5a52deee656207c562f988e95c69;
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
- dc37e008cf9ee69bf11f00ed9aba26901dd7c28cdec066cc6af42e40f82f3a1e;
-}
-
-whirlpool256-rep {
- "1234567890" 8
- 466ef18babb0154d25b9d38a6414f5c08784372bccb204d6549c4afadb601429;
- "a" 1000000
- 0c99005beb57eff50a7cf005560ddf5d29057fd86b20bfd62deca0f1ccea4af5;
-}
-
# --- HMAC mode ---
#
# Home-made test vectors, for regression.
/* --- Generic interface --- */
-GHASH_DEF(WHIRLPOOL, whirlpool)
+#define HASHES(_) \
+ _(WHIRLPOOL, whirlpool) \
+ _(WHIRLPOOL256, whirlpool256)
-/* --- Test code --- */
+HASHES(GHASH_DEF)
-HASH_TEST(WHIRLPOOL, whirlpool)
+/*----- Test rig ----------------------------------------------------------*/
+
+#ifdef TEST_RIG
+
+#include <mLib/testrig.h>
+
+HASHES(HASH_VERIFY)
+
+static const test_chunk defs[] = {
+ HASHES(HASH_TESTDEFS)
+ { 0, 0, { 0 } }
+};
+
+int main(int argc, char *argv[])
+{
+ test_run(argc, argv, defs, SRCDIR "/t/whirlpool");
+ return (0);
+}
+
+#endif
/*----- That's all, folks -------------------------------------------------*/
+++ /dev/null
-/* -*-c-*-
- *
- * Stub code for Whirlpool-256
- */
-
-#include "ghash.h"
-#include "ghash-def.h"
-#include "hash.h"
-#include "whirlpool256.h"
-
-GHASH_DEF(WHIRLPOOL256, whirlpool256)
-HASH_TEST(WHIRLPOOL256, whirlpool256)