From 8ad6ffa9d64352fe361e985fbc3b5a9655ef376f Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Sun, 3 Dec 2017 20:56:17 +0100 Subject: [PATCH] More tests --- test/default/scalarmult_ed25519.c | 49 +++++++++++++++++++++++++------ 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/test/default/scalarmult_ed25519.c b/test/default/scalarmult_ed25519.c index 3ef7f96b..b1cf2ffd 100644 --- a/test/default/scalarmult_ed25519.c +++ b/test/default/scalarmult_ed25519.c @@ -1,15 +1,27 @@ #define TEST_NAME "scalarmult_ed25519" #include "cmptest.h" +static const unsigned char non_canonical_p[32] = { + 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f +}; +static const unsigned char non_canonical_invalid_p[32] = { + 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f +}; +static const unsigned char max_canonical_p[32] = { + 0xe4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f +}; + +static const unsigned char B[32] = { + 0x58, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, + 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66 +}; + int main(void) { - static const unsigned char B[32] = { - 0x58, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, - 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, - 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, - 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, - }; unsigned char *n, *p, *q, *q2; n = (unsigned char *) sodium_malloc(crypto_scalarmult_ed25519_SCALARBYTES); @@ -29,11 +41,30 @@ main(void) printf("crypto_scalarmult_ed25519_base(n) != crypto_scalarmult_ed25519(n, 9)\n"); } - memset(n, 0, crypto_scalarmult_ed25519_BYTES); - if (crypto_scalarmult_ed25519_base(q, n) != 0) { - printf("crypto_scalarmult_ed25519_base() didn't fail\n"); + memset(n, 0, crypto_scalarmult_ed25519_SCALARBYTES); + if (crypto_scalarmult_ed25519_base(q, n) != -1) { + printf("crypto_scalarmult_ed25519_base() failed\n"); } if (crypto_scalarmult_ed25519(q2, n, p) != 0) { + printf("crypto_scalarmult_ed25519() failed\n"); + } + + if (crypto_scalarmult_ed25519(q, n, non_canonical_p) != -1) { + printf("crypto_scalarmult_ed25519() didn't fail\n"); + } + if (crypto_scalarmult_ed25519(q, n, non_canonical_invalid_p) != -1) { + printf("crypto_scalarmult_ed25519() didn't fail\n"); + } + if (crypto_scalarmult_ed25519(q, n, max_canonical_p) != 0) { + printf("crypto_scalarmult_ed25519() failed\n"); + } + + memset(p, 0, crypto_scalarmult_ed25519_BYTES); + if (crypto_scalarmult_ed25519(q, n, p) != -1) { + printf("crypto_scalarmult_ed25519() didn't fail\n"); + } + n[0] = 8; + if (crypto_scalarmult_ed25519(q, n, p) != -1) { printf("crypto_scalarmult_ed25519() didn't fail\n"); }