From 1e84a29c0c9d374226a478e5e9bf6d7fea9dca6b Mon Sep 17 00:00:00 2001 From: Loup Vaillant Date: Thu, 16 Aug 2018 21:29:13 +0200 Subject: [PATCH] Added tests for HChacha20 Not that it needed any (XChacha20 were enough), but it's easier to communicate to outsiders that HChacha20 is correct when we have explicit test vectors. --- tests/gen/hchacha20.c | 22 ++++++++++++++++++++++ tests/gen/makefile | 7 ++++--- tests/test.c | 8 ++++++++ 3 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 tests/gen/hchacha20.c diff --git a/tests/gen/hchacha20.c b/tests/gen/hchacha20.c new file mode 100644 index 0000000..a7e5b1b --- /dev/null +++ b/tests/gen/hchacha20.c @@ -0,0 +1,22 @@ +#include +#include "utils.h" + +int main(void) +{ + SODIUM_INIT; + + FOR (size, 0, 50) { + RANDOM_INPUT(key , 32); + RANDOM_INPUT(in , 16); + u8 out[32]; + + crypto_core_hchacha20(out, in, key, 0); + + print_vector(key , 32); + print_vector(in , 16); + print_vector(out , 32); + printf("\n"); + } + + return 0; +} diff --git a/tests/gen/makefile b/tests/gen/makefile index 57fa8ee..eb5369d 100644 --- a/tests/gen/makefile +++ b/tests/gen/makefile @@ -3,9 +3,9 @@ CFLAGS = -pedantic -Wall -Wextra .PHONY: all clean -VEC = chacha20.vec xchacha20.vec aead_ietf.vec poly1305.vec \ - blake2b.vec sha512.vec argon2i.vec \ - edDSA.vec edDSA_pk.vec ed_25519.vec ed_25519_check.vec \ +VEC = chacha20.vec hchacha20.vec xchacha20.vec aead_ietf.vec poly1305.vec \ + blake2b.vec sha512.vec argon2i.vec \ + edDSA.vec edDSA_pk.vec ed_25519.vec ed_25519_check.vec \ x25519.vec x25519_pk.vec VEC2 = $(patsubst %.vec, %.all.vec, $(VEC)) key_exchange.all.vec HEADERS = $(patsubst %.all.vec, %.h.vec, $(VEC2)) @@ -48,6 +48,7 @@ chacha20.all.vec : chacha20.vec ../vectors/chacha20 poly1305.all.vec : poly1305.vec ../vectors/poly1305 x25519.all.vec : x25519.vec ../vectors/x25519 x25519_pk.all.vec : x25519_pk.vec +hchacha20.all.vec : hchacha20.vec xchacha20.all.vec : xchacha20.vec aead_ietf.all.vec : aead_ietf.vec blake2b.all.vec : blake2b.vec diff --git a/tests/test.c b/tests/test.c index 758bc0c..88a7d68 100644 --- a/tests/test.c +++ b/tests/test.c @@ -103,6 +103,13 @@ static void chacha20(const vector in[], vector *out) crypto_chacha20_encrypt(&ctx, out->buf, plain->buf, plain->size); } +static void hchacha20(const vector in[], vector *out) +{ + const vector *key = in; + const vector *nonce = in + 1; + crypto_chacha20_H(out->buf, key->buf, nonce->buf); +} + static void xchacha20(const vector in[], vector *out) { const vector *key = in; @@ -821,6 +828,7 @@ int main(void) printf("\nTest against vectors"); printf("\n--------------------\n"); status |= TEST(chacha20 , 4); + status |= TEST(hchacha20 , 2); status |= TEST(xchacha20 , 4); status |= TEST(poly1305 , 2); status |= TEST(aead_ietf , 4); -- 2.47.3