* ecc-mod-arith.c (ecc_mod_addmul_1): Use assert_maybe.
* ecc-curve448.c (ecc_curve448_modp): Likewise.
+ * ecc-curve25519.c (ecc_curve25519_modq): Likewise.
+ * eddsa-hash.c (_eddsa_hash): Likewise.
+ * eddsa-sign.c (_eddsa_sign): Likewise.
* testsuite/curve25519-dh-test.c (test_g): Add calls to
mark_bytes_undefined and mark_bytes_defined.
(test_main): Skip side-channel tests in builds with mini-gmp or
extra asserts enabled.
* testsuite/curve448-dh-test.c: Analogous changes.
+ * testsuite/ed448-test.c (test_one): Analogous changes.
+ * testsuite/ed25519-test.c: Analogous changes.
* testsuite/Makefile.in (TS_SC_HOGWEED): New make variable. Added
- sc-curve25519-dh-test and sc-curve448-dh-test to list.
+ sc-curve25519-dh-test, sc-curve448-dh-test, sc-ed25519-test, and
+ sc-ed448-test to list.
* testsuite/sc-curve25519-dh-test: New testcase.
* testsuite/sc-curve448-dh-test: New testcase.
+ * testsuite/sc-ed448-test: New testcase.
+ * testsuite/sc-ed25519-test: New testcase.
2023-11-14 Niels Möller <nisse@lysator.liu.se>
q->B_shifted, ECC_LIMB_SIZE,
xp[n + ECC_LIMB_SIZE]);
/* Top limb of mBmodq_shifted is zero, so we get cy == 0 or 1 */
- assert (cy < 2);
+ assert_maybe (cy < 2);
mpn_cnd_add_n (cy, xp+n, xp+n, q->m, ECC_LIMB_SIZE);
}
cy = mpn_submul_1 (xp, q->m, ECC_LIMB_SIZE,
xp[ECC_LIMB_SIZE-1] >> (GMP_NUMB_BITS - QHIGH_BITS));
- assert (cy < 2);
+ assert_maybe (cy < 2);
mpn_cnd_add_n (cy, rp, xp, q->m, ECC_LIMB_SIZE);
}
assert (nlimbs == 2*m->size + 1);
hi = mpn_addmul_1 (rp + m->size, m->B, m->size, hi);
- assert (hi <= 1);
+ assert_maybe (hi <= 1);
hi = mpn_cnd_add_n (hi, rp + m->size, rp + m->size, m->B, m->size);
- assert (hi == 0);
+ assert_maybe (hi == 0);
}
m->mod (m, rp + m->size , rp);
/* Ensure canonical reduction. */
}
cy = mpn_submul_1 (sp, ecc->q.m, ecc->p.size, q);
- assert (cy < 2);
+ assert_maybe (cy < 2);
cy -= mpn_cnd_add_n (cy, sp, sp, ecc->q.m, ecc->p.size);
- assert (cy == 0);
+ assert_maybe (cy == 0);
mpn_get_base256_le (signature + nbytes, nbytes, sp, ecc->q.size);
#undef rp
TS_CXX = @IF_CXX@ $(CXX_SOURCES:.cxx=$(EXEEXT))
TARGETS = $(TS_C) $(TS_CXX)
TS_SC_HOGWEED = sc-pkcs1-sec-decrypt-test sc-rsa-sec-decrypt-test \
- sc-ecdsa-sign-test sc-curve25519-dh-test sc-curve448-dh-test
+ sc-ecdsa-sign-test sc-curve25519-dh-test sc-curve448-dh-test \
+ sc-ed25519-test sc-ed448-test
TS_SC = sc-cnd-memcpy-test sc-gcm-test sc-memeql-test \
@IF_HOGWEED@ $(TS_SC_HOGWEED)
decode_hex (msg_size, msg, mp);
+ mark_bytes_undefined (ED25519_KEY_SIZE, sk);
ed25519_sha512_public_key (t, sk);
+ mark_bytes_defined (ED25519_KEY_SIZE, t);
+
ASSERT (MEMEQ(ED25519_KEY_SIZE, t, pk));
ed25519_sha512_sign (pk, sk, msg_size, msg, s2);
+ mark_bytes_defined (ED25519_SIGNATURE_SIZE, s2);
+
ASSERT (MEMEQ (ED25519_SIGNATURE_SIZE, s, s2));
ASSERT (ed25519_sha512_verify (pk, msg_size, msg, s));
void
test_main(void)
{
+#if NETTLE_USE_MINI_GMP || WITH_EXTRA_ASSERTS
+ if (test_side_channel)
+ SKIP();
+#endif
const char *input = getenv ("ED25519_SIGN_INPUT");
if (input)
{
decode_hex (msg_size, msg, mp);
+ mark_bytes_undefined (ED448_KEY_SIZE, sk);
ed448_shake256_public_key (t, sk);
+ mark_bytes_defined (ED448_KEY_SIZE, t);
+
ASSERT (MEMEQ(ED448_KEY_SIZE, t, pk));
ed448_shake256_sign (pk, sk, msg_size, msg, s2);
+ mark_bytes_defined (ED448_SIGNATURE_SIZE, s2);
+
ASSERT (MEMEQ (ED448_SIGNATURE_SIZE, s, s2));
ASSERT (ed448_shake256_verify (pk, msg_size, msg, s));
void
test_main(void)
{
+#if NETTLE_USE_MINI_GMP || WITH_EXTRA_ASSERTS
+ if (test_side_channel)
+ SKIP();
+#endif
const char *input = getenv ("ED448_SIGN_INPUT");
if (input)
{
--- /dev/null
+#! /bin/sh
+
+srcdir=`dirname $0`
+. "${srcdir}/sc-valgrind.sh"
+
+with_valgrind ./ed25519-test
--- /dev/null
+#! /bin/sh
+
+srcdir=`dirname $0`
+. "${srcdir}/sc-valgrind.sh"
+
+with_valgrind ./ed448-test