From 6d9e2f0c8490a3af0384bff397779e3440a05ba6 Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Mon, 6 May 2019 13:02:20 +0200 Subject: [PATCH] More tests --- test/default/box_seal.c | 11 +++++++-- test/default/core_ristretto255.c | 40 ++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/test/default/box_seal.c b/test/default/box_seal.c index e19ddd62..01765ca8 100644 --- a/test/default/box_seal.c +++ b/test/default/box_seal.c @@ -81,14 +81,21 @@ void tv2(void) assert(crypto_box_curve25519xchacha20poly1305_sealbytes() == crypto_box_curve25519xchacha20poly1305_SEALBYTES); } + +#else + +static +void tv2(void) +{ + printf("0\n-1\n-1\n-1\n"); +} #endif int main(void) { tv1(); -#ifndef SODIUM_LIBRARY_MINIMAL tv2(); -#endif + return 0; } diff --git a/test/default/core_ristretto255.c b/test/default/core_ristretto255.c index c6bbd7a5..bd67f71d 100644 --- a/test/default/core_ristretto255.c +++ b/test/default/core_ristretto255.c @@ -206,12 +206,52 @@ tv3(void) sodium_free(r); } +static void +tv4(void) +{ + unsigned char *r; + unsigned char *s1; + unsigned char *s2; + unsigned char *s3; + unsigned char *s4; + + r = (unsigned char *) sodium_malloc(crypto_core_ristretto255_NONREDUCEDSCALARBYTES); + s1 = (unsigned char *) sodium_malloc(crypto_core_ristretto255_SCALARBYTES); + s2 = (unsigned char *) sodium_malloc(crypto_core_ristretto255_SCALARBYTES); + s3 = (unsigned char *) sodium_malloc(crypto_core_ristretto255_SCALARBYTES); + s4 = (unsigned char *) sodium_malloc(crypto_core_ristretto255_SCALARBYTES); + + crypto_core_ristretto255_scalar_random(s1); + randombytes_buf(r, crypto_core_ristretto255_NONREDUCEDSCALARBYTES); + crypto_core_ristretto255_scalar_reduce(s2, r); + memcpy(s4, s1, crypto_core_ristretto255_SCALARBYTES); + crypto_core_ristretto255_scalar_add(s3, s1, s2); + crypto_core_ristretto255_scalar_sub(s4, s1, s2); + crypto_core_ristretto255_scalar_add(s2, s3, s4); + crypto_core_ristretto255_scalar_sub(s2, s2, s1); + crypto_core_ristretto255_scalar_mul(s2, s3, s2); + crypto_core_ristretto255_scalar_invert(s4, s3); + crypto_core_ristretto255_scalar_mul(s2, s2, s4); + crypto_core_ristretto255_scalar_negate(s1, s1); + crypto_core_ristretto255_scalar_add(s2, s2, s1); + crypto_core_ristretto255_scalar_complement(s1, s2); + s1[0]--; + assert(sodium_is_zero(s1, crypto_core_ristretto255_SCALARBYTES)); + + sodium_free(s1); + sodium_free(s2); + sodium_free(s3); + sodium_free(s4); + sodium_free(r); +} + int main(void) { tv1(); tv2(); tv3(); + tv4(); assert(crypto_core_ristretto255_BYTES == crypto_core_ristretto255_bytes()); assert(crypto_core_ristretto255_SCALARBYTES == crypto_core_ristretto255_scalarbytes());