summaryrefslogtreecommitdiff
path: root/testsuite/testutils.c
diff options
context:
space:
mode:
authorNiels Möller <nisse@lysator.liu.se>2019-12-25 17:55:19 +0100
committerNiels Möller <nisse@lysator.liu.se>2019-12-25 17:55:19 +0100
commit64a6def6410eccdf3f8cef658a4ec761f889dc48 (patch)
treebec38cd4ad7120f3a087e84ac033fdcaca5a6b66 /testsuite/testutils.c
parent4c658fbfae00580593b9d82a25aee182f313773a (diff)
downloadnettle-64a6def6410eccdf3f8cef658a4ec761f889dc48.tar.gz
Support for SHAKE256, based on patch by Daiki Ueno.
* shake256.c (sha3_256_shake): New file and function. * Makefile.in (nettle_SOURCES): Add shake256.c. * testsuite/testutils.c (test_hash): Allow arbitrary digest size, if hash->digest_size == 0. * testsuite/shake.awk: New script to extract test vectors. * testsuite/Makefile.in (TS_NETTLE_SOURCES): Add shake256-test.c. (DISTFILES): Add shake.awk.
Diffstat (limited to 'testsuite/testutils.c')
-rw-r--r--testsuite/testutils.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/testsuite/testutils.c b/testsuite/testutils.c
index 53bb8703..7772d2b0 100644
--- a/testsuite/testutils.c
+++ b/testsuite/testutils.c
@@ -866,33 +866,36 @@ test_hash(const struct nettle_hash *hash,
const struct tstring *digest)
{
void *ctx = xalloc(hash->context_size);
- uint8_t *buffer = xalloc(hash->digest_size);
+ uint8_t *buffer = xalloc(digest->length);
uint8_t *input;
unsigned offset;
- ASSERT (digest->length == hash->digest_size);
+ /* Here, hash->digest_size zero means arbitrary size. */
+ if (hash->digest_size)
+ ASSERT (digest->length == hash->digest_size);
hash->init(ctx);
hash->update(ctx, msg->length, msg->data);
- hash->digest(ctx, hash->digest_size, buffer);
+ hash->digest(ctx, digest->length, buffer);
- if (MEMEQ(hash->digest_size, digest->data, buffer) == 0)
+ if (MEMEQ(digest->length, digest->data, buffer) == 0)
{
fprintf(stdout, "\nGot:\n");
- print_hex(hash->digest_size, buffer);
+ print_hex(digest->length, buffer);
fprintf(stdout, "\nExpected:\n");
- print_hex(hash->digest_size, digest->data);
+ print_hex(digest->length, digest->data);
abort();
}
- memset(buffer, 0, hash->digest_size);
+ memset(buffer, 0, digest->length);
hash->update(ctx, msg->length, msg->data);
- hash->digest(ctx, hash->digest_size - 1, buffer);
+ ASSERT(digest->length > 0);
+ hash->digest(ctx, digest->length - 1, buffer);
- ASSERT(MEMEQ(hash->digest_size - 1, digest->data, buffer));
+ ASSERT(MEMEQ(digest->length - 1, digest->data, buffer));
- ASSERT(buffer[hash->digest_size - 1] == 0);
+ ASSERT(buffer[digest->length - 1] == 0);
input = xalloc (msg->length + 16);
for (offset = 0; offset < 16; offset++)
@@ -900,13 +903,13 @@ test_hash(const struct nettle_hash *hash,
memset (input, 0, msg->length + 16);
memcpy (input + offset, msg->data, msg->length);
hash->update (ctx, msg->length, input + offset);
- hash->digest (ctx, hash->digest_size, buffer);
- if (MEMEQ(hash->digest_size, digest->data, buffer) == 0)
+ hash->digest (ctx, digest->length, buffer);
+ if (MEMEQ(digest->length, digest->data, buffer) == 0)
{
fprintf(stdout, "hash input address: %p\nGot:\n", input + offset);
- print_hex(hash->digest_size, buffer);
+ print_hex(digest->length, buffer);
fprintf(stdout, "\nExpected:\n");
- print_hex(hash->digest_size, digest->data);
+ print_hex(digest->length, digest->data);
abort();
}
}