diff options
author | Mattias Andrée <maandree@kth.se> | 2024-09-01 18:12:21 +0200 |
---|---|---|
committer | Mattias Andrée <maandree@kth.se> | 2024-09-01 18:12:21 +0200 |
commit | 85b12e691577b4d4fe09b80b06e91a801dc3dfa9 (patch) | |
tree | 69c64bc9a9fc97826fe8cb2d7ef82f00b1193efc /keccak.c | |
parent | Add support for BLAKE2 (but not tree-hashing) (diff) | |
download | libhashsum-85b12e691577b4d4fe09b80b06e91a801dc3dfa9.tar.gz libhashsum-85b12e691577b4d4fe09b80b06e91a801dc3dfa9.tar.bz2 libhashsum-85b12e691577b4d4fe09b80b06e91a801dc3dfa9.tar.xz |
Move test files into t/
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'keccak.c')
-rw-r--r-- | keccak.c | 244 |
1 files changed, 0 insertions, 244 deletions
diff --git a/keccak.c b/keccak.c deleted file mode 100644 index 9b20bbc..0000000 --- a/keccak.c +++ /dev/null @@ -1,244 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#ifndef SUPPORT_KECCAK -# include "common.h" - -int -main(void) -{ - struct libhashsum_hasher hasher; - if (!libhashsum_init_keccak_hasher(&hasher, 0, 0, 0, 0)) { - fprintf(stderr, "expected libhashsum_init_keccak_hasher to fail, but it returned successfully\n"); - return 2; - } - if (errno != ENOSYS) { - perror("expected libhashsum_init_keccak_hasher to set errno to ENOSYS, but got"); - return 2; - } - return 0; -} - -#else -# include "common.h" - - -# define ASSERT(ASSERTION)\ - do {\ - if ((ASSERTION))\ - break;\ - fprintf(stderr, "assertion `%s` at line %i failed\n", #ASSERTION, __LINE__);\ - exit(2);\ - } while (0) - - -static const char * -hex(const struct libhashsum_hasher *hasher) -{ - static char buffer[4096]; - char *restrict out = buffer; - unsigned char *restrict in = hasher->hash_output; - size_t n = hasher->hash_size; - for (; n--; in++) { - *out++ = "0123456789abcdef"[(*in >> 4) & 15]; - *out++ = "0123456789abcdef"[(*in >> 0) & 15]; - } - *out = '\0'; - return buffer; -} - - -int -main(void) -{ - char buffer[4096]; - struct libhashsum_hasher h1, h2; - int i; - - for (i = 0; i < 8; i++) { - if ((i&3) == 3) - continue; - - ASSERT(!libhashsum_init_keccak_hasher(&h1, (i&1)?0: 1600 - 2 * 224, (i&2)?0: 2 * 224, 224, 1)); - ASSERT(!libhashsum_init_keccak_224_hasher(&h2)); - ASSERT(!h1.finalise_const(&h1, (i&4) ? "testdata" : 0, (i&4) ? 8 : 0, 0)); - ASSERT(!h2.finalise_const(&h2, (i&4) ? "testdata" : 0, (i&4) ? 8 : 0, 0)); - ASSERT(h1.hash_size == h2.hash_size); - ASSERT(!memcmp(h1.hash_output, h2.hash_output, h2.hash_size)); - ASSERT(h1.algorithm == h2.algorithm); - ASSERT(!strcmp(h1.algorithm_string, h2.algorithm_string)); - - ASSERT(!libhashsum_init_keccak_hasher(&h1, (i&1)?0: 1600 - 2 * 256, (i&2)?0: 2 * 256, 256, 1)); - ASSERT(!libhashsum_init_keccak_256_hasher(&h2)); - ASSERT(!h1.finalise_const(&h1, (i&4) ? "testdata" : 0, (i&4) ? 8 : 0, 0)); - ASSERT(!h2.finalise_const(&h2, (i&4) ? "testdata" : 0, (i&4) ? 8 : 0, 0)); - ASSERT(h1.hash_size == h2.hash_size); - ASSERT(!memcmp(h1.hash_output, h2.hash_output, h2.hash_size)); - ASSERT(h1.algorithm == h2.algorithm); - ASSERT(!strcmp(h1.algorithm_string, h2.algorithm_string)); - - ASSERT(!libhashsum_init_keccak_hasher(&h1, (i&1)?0: 1600 - 2 * 384, (i&2)?0: 2 * 384, 384, 1)); - ASSERT(!libhashsum_init_keccak_384_hasher(&h2)); - ASSERT(!h1.finalise_const(&h1, (i&4) ? "testdata" : 0, (i&4) ? 8 : 0, 0)); - ASSERT(!h2.finalise_const(&h2, (i&4) ? "testdata" : 0, (i&4) ? 8 : 0, 0)); - ASSERT(h1.hash_size == h2.hash_size); - ASSERT(!memcmp(h1.hash_output, h2.hash_output, h2.hash_size)); - ASSERT(h1.algorithm == h2.algorithm); - ASSERT(!strcmp(h1.algorithm_string, h2.algorithm_string)); - - ASSERT(!libhashsum_init_keccak_hasher(&h1, (i&1)?0: 1600 - 2 * 512, (i&2)?0: 2 * 512, 512, 1)); - ASSERT(!libhashsum_init_keccak_512_hasher(&h2)); - ASSERT(!h1.finalise_const(&h1, (i&4) ? "testdata" : 0, (i&4) ? 8 : 0, 0)); - ASSERT(!h2.finalise_const(&h2, (i&4) ? "testdata" : 0, (i&4) ? 8 : 0, 0)); - ASSERT(h1.hash_size == h2.hash_size); - ASSERT(!memcmp(h1.hash_output, h2.hash_output, h2.hash_size)); - ASSERT(h1.algorithm == h2.algorithm); - ASSERT(!strcmp(h1.algorithm_string, h2.algorithm_string)); - } - - ASSERT(!libhashsum_init_keccak_hasher(&h1, 0, 0, 224, 1)); - ASSERT(!libhashsum_init_keccak_224_hasher(&h2)); - ASSERT(!h1.finalise_const(&h1, NULL, 0, 0)); - ASSERT(!h2.finalise_const(&h2, NULL, 0, 0)); - ASSERT(h1.hash_size == h2.hash_size); - ASSERT(memcmp(h1.hash_output, h2.hash_output, h2.hash_size)); - ASSERT(h1.algorithm == LIBHASHSUM_KECCAK); - ASSERT(!strcmp(h1.algorithm_string, "Keccak[r=1024,c=576,n=224]")); - - ASSERT(!libhashsum_init_keccak_hasher(&h1, 0, 0, 256, 1)); - ASSERT(!libhashsum_init_keccak_256_hasher(&h2)); - ASSERT(!h1.finalise_const(&h1, NULL, 0, 0)); - ASSERT(!h2.finalise_const(&h2, NULL, 0, 0)); - ASSERT(h1.hash_size == h2.hash_size); - ASSERT(memcmp(h1.hash_output, h2.hash_output, h2.hash_size)); - ASSERT(h1.algorithm == LIBHASHSUM_KECCAK); - ASSERT(!strcmp(h1.algorithm_string, "Keccak[r=1024,c=576,n=256]")); - - ASSERT(!libhashsum_init_keccak_hasher(&h1, 0, 0, 512, 0)); - ASSERT(!h1.finalise_const(&h1, NULL, 0, 0)); - ASSERT(h1.hash_size == 512U / 8U); - ASSERT(h1.algorithm == LIBHASHSUM_KECCAK); - ASSERT(strcmp(h1.algorithm_string, h2.algorithm_string)); - ASSERT(!strcmp(h1.algorithm_string, "Keccak[r=1024,c=576,n=512]")); - - ASSERT(!libhashsum_init_keccak_hasher(&h1, 0, 0, 0, 0)); - ASSERT(h1.hash_size == 512U / 8U); - ASSERT(h1.algorithm == LIBHASHSUM_KECCAK); - ASSERT(!strcmp(h1.algorithm_string, "Keccak[r=1024,c=576,n=512]")); - - ASSERT(!libhashsum_init_keccak_hasher(&h1, 0, 0, 224, 1)); - ASSERT(!libhashsum_init_keccak_hasher(&h2, 0, 0, 512, 1)); - ASSERT(!h1.finalise(&h1, buffer, 0, 0, sizeof(buffer))); - ASSERT(!h2.finalise(&h2, buffer, 0, 0, sizeof(buffer))); - ASSERT(!memcmp(h1.hash_output, h2.hash_output, h1.hash_size)); - -#define Z1\ - "6753e3380c09e385d0339eb6b050a68f66cfd60a73476e6fd6adeb72f5edd7c6"\ - "f04a5d017a19cbe291935855b4860f69df04c98aa78b407a9ba9826f7266ef14" -#define Z2\ - "c3a2fa33f0bfb1cfef8da7875c4967f332c7fc93c050e81fb404f9a91503d601"\ - "0ee16f50b4ed0bc563ba8431668b003d7e2e6f226cb7fa93bb2e132c861fdc21" -#define Z200\ - "f8354bead24cc78c835813c0eec02dcad2b8caf37d79566ea6dc2836f231070d"\ - "cd786213580093a296578518ecc705c461264359e46c51b7c6beef3e3fb21a05" - - ASSERT(!libhashsum_init_keccak_hasher(&h1, 0, 0, 0, 0)); - ASSERT(!libhashsum_init_keccak_hasher(&h2, 0, 0, 0, 1)); - ASSERT(!h1.finalise(&h1, buffer, 0, 0, sizeof(buffer))); - ASSERT(!h2.finalise(&h2, buffer, 0, 0, sizeof(buffer))); - ASSERT(!strcmp(h1.algorithm_string, "Keccak[r=1024,c=576,n=512]")); - ASSERT(!strcmp(h2.algorithm_string, "Keccak[r=1024,c=576,n=512]")); - ASSERT(!memcmp(h1.hash_output, h2.hash_output, h1.hash_size)); - ASSERT(!strcmp(hex(&h2), Z1)); - - ASSERT(!libhashsum_init_keccak_hasher(&h1, 0, 0, 0, 0)); - ASSERT(!libhashsum_init_keccak_hasher(&h2, 0, 0, 0, 200)); - ASSERT(!h1.finalise(&h1, buffer, 0, 0, sizeof(buffer))); - ASSERT(!h2.finalise(&h2, buffer, 0, 0, sizeof(buffer))); - ASSERT(!strcmp(h1.algorithm_string, "Keccak[r=1024,c=576,n=512]")); - ASSERT(!strcmp(h2.algorithm_string, "Keccak[r=1024,c=576,n=512,z=200]")); - ASSERT(memcmp(h1.hash_output, h2.hash_output, h1.hash_size)); - ASSERT(!strcmp(hex(&h2), Z200)); - - ASSERT(!libhashsum_init_keccak_hasher(&h1, 0, 0, 0, 0)); - ASSERT(!libhashsum_init_keccak_hasher(&h2, 0, 0, 0, 2)); - ASSERT(!h1.finalise(&h1, buffer, 0, 0, sizeof(buffer))); - ASSERT(!h2.finalise(&h2, buffer, 0, 0, sizeof(buffer))); - ASSERT(!strcmp(h1.algorithm_string, "Keccak[r=1024,c=576,n=512]")); - ASSERT(!strcmp(h2.algorithm_string, "Keccak[r=1024,c=576,n=512,z=2]")); - ASSERT(memcmp(h1.hash_output, h2.hash_output, h1.hash_size)); - ASSERT(!strcmp(hex(&h2), Z2)); - - ASSERT(!libhashsum_init_keccak_hasher(&h1, 0, 0, 224, 1)); - ASSERT(!libhashsum_init_keccak_hasher(&h2, 0, 0, 512, 1)); - ASSERT(!h1.finalise(&h1, buffer, 0, 0, 0)); - ASSERT(!h2.finalise(&h2, buffer, 0, 0, 0)); - ASSERT(!memcmp(h1.hash_output, h2.hash_output, h1.hash_size)); - - ASSERT(!libhashsum_init_keccak_hasher(&h1, 0, 0, 0, 0)); - ASSERT(!libhashsum_init_keccak_hasher(&h2, 0, 0, 0, 1)); - ASSERT(!h1.finalise(&h1, buffer, 0, 0, 0)); - ASSERT(!h2.finalise(&h2, buffer, 0, 0, 0)); - ASSERT(!strcmp(h1.algorithm_string, "Keccak[r=1024,c=576,n=512]")); - ASSERT(!strcmp(h2.algorithm_string, "Keccak[r=1024,c=576,n=512]")); - ASSERT(!memcmp(h1.hash_output, h2.hash_output, h1.hash_size)); - ASSERT(!strcmp(hex(&h2), Z1)); - - ASSERT(!libhashsum_init_keccak_hasher(&h1, 0, 0, 0, 0)); - ASSERT(!libhashsum_init_keccak_hasher(&h2, 0, 0, 0, 200)); - ASSERT(!h1.finalise(&h1, buffer, 0, 0, 0)); - ASSERT(!h2.finalise(&h2, buffer, 0, 0, 0)); - ASSERT(!strcmp(h1.algorithm_string, "Keccak[r=1024,c=576,n=512]")); - ASSERT(!strcmp(h2.algorithm_string, "Keccak[r=1024,c=576,n=512,z=200]")); - ASSERT(memcmp(h1.hash_output, h2.hash_output, h1.hash_size)); - ASSERT(!strcmp(hex(&h2), Z200)); - - ASSERT(!libhashsum_init_keccak_hasher(&h1, 0, 0, 0, 0)); - ASSERT(!libhashsum_init_keccak_hasher(&h2, 0, 0, 0, 2)); - ASSERT(!h1.finalise(&h1, buffer, 0, 0, 0)); - ASSERT(!h2.finalise(&h2, buffer, 0, 0, 0)); - ASSERT(!strcmp(h1.algorithm_string, "Keccak[r=1024,c=576,n=512]")); - ASSERT(!strcmp(h2.algorithm_string, "Keccak[r=1024,c=576,n=512,z=2]")); - ASSERT(memcmp(h1.hash_output, h2.hash_output, h1.hash_size)); - ASSERT(!strcmp(hex(&h2), Z2)); - - ASSERT(!libhashsum_init_keccak_hasher(&h1, 0, 0, 224, 1)); - ASSERT(!libhashsum_init_keccak_hasher(&h2, 0, 0, 512, 1)); - ASSERT(!h1.finalise_const(&h1, NULL, 0, 0)); - ASSERT(!h2.finalise_const(&h2, NULL, 0, 0)); - ASSERT(!memcmp(h1.hash_output, h2.hash_output, h1.hash_size)); - - ASSERT(!libhashsum_init_keccak_hasher(&h1, 0, 0, 0, 0)); - ASSERT(!libhashsum_init_keccak_hasher(&h2, 0, 0, 0, 1)); - ASSERT(!h1.finalise_const(&h1, NULL, 0, 0)); - ASSERT(!h2.finalise_const(&h2, NULL, 0, 0)); - ASSERT(!strcmp(h1.algorithm_string, "Keccak[r=1024,c=576,n=512]")); - ASSERT(!strcmp(h2.algorithm_string, "Keccak[r=1024,c=576,n=512]")); - ASSERT(!memcmp(h1.hash_output, h2.hash_output, h1.hash_size)); - ASSERT(!strcmp(hex(&h2), Z1)); - - ASSERT(!libhashsum_init_keccak_hasher(&h1, 0, 0, 0, 0)); - ASSERT(!libhashsum_init_keccak_hasher(&h2, 0, 0, 0, 200)); - ASSERT(!h1.finalise_const(&h1, NULL, 0, 0)); - ASSERT(!h2.finalise_const(&h2, NULL, 0, 0)); - ASSERT(!strcmp(h1.algorithm_string, "Keccak[r=1024,c=576,n=512]")); - ASSERT(!strcmp(h2.algorithm_string, "Keccak[r=1024,c=576,n=512,z=200]")); - ASSERT(memcmp(h1.hash_output, h2.hash_output, h1.hash_size)); - ASSERT(!strcmp(hex(&h2), Z200)); - - ASSERT(!libhashsum_init_keccak_hasher(&h1, 0, 0, 0, 0)); - ASSERT(!libhashsum_init_keccak_hasher(&h2, 0, 0, 0, 2)); - ASSERT(!h1.finalise_const(&h1, NULL, 0, 0)); - ASSERT(!h2.finalise_const(&h2, NULL, 0, 0)); - ASSERT(!strcmp(h1.algorithm_string, "Keccak[r=1024,c=576,n=512]")); - ASSERT(!strcmp(h2.algorithm_string, "Keccak[r=1024,c=576,n=512,z=2]")); - ASSERT(memcmp(h1.hash_output, h2.hash_output, h1.hash_size)); - ASSERT(!strcmp(hex(&h2), Z2)); - -#undef Z1 -#undef Z2 -#undef Z200 - - return 0; -} - - -#endif |