From 172448b05931e791ce3470b45afe8de4cdffaaad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= Date: Sun, 1 Nov 2020 10:22:48 +0100 Subject: Separate result area for ecc_mod_mul and ecc_mod_sqr. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ecc-mod-arith.c (ecc_mod_mul, ecc_mod_sqr): Separate argument for scratch area, reducing required size of result area. Update all callers to naïvely keep using result in scratch area. (ecc_mod_pow_2k, ecc_mod_pow_2k_mul): Simplified, also reducing required size of result area. --- ecc-dup-th.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'ecc-dup-th.c') diff --git a/ecc-dup-th.c b/ecc-dup-th.c index dd95b84a..c1582cd2 100644 --- a/ecc-dup-th.c +++ b/ecc-dup-th.c @@ -82,14 +82,14 @@ ecc_dup_th (const struct ecc_curve *ecc, /* B */ ecc_mod_add (&ecc->p, F, p, p + ecc->p.size); - ecc_mod_sqr (&ecc->p, B, F); + ecc_mod_sqr (&ecc->p, B, F, B); /* C */ - ecc_mod_sqr (&ecc->p, C, p); + ecc_mod_sqr (&ecc->p, C, p, C); /* D */ - ecc_mod_sqr (&ecc->p, D, p + ecc->p.size); + ecc_mod_sqr (&ecc->p, D, p + ecc->p.size, D); /* Can use r as scratch, even for in-place operation. */ - ecc_mod_sqr (&ecc->p, r, p + 2*ecc->p.size); + ecc_mod_sqr (&ecc->p, r, p + 2*ecc->p.size, r); /* F, */ ecc_mod_sub (&ecc->p, F, D, C); /* B - C - D */ @@ -100,10 +100,10 @@ ecc_dup_th (const struct ecc_curve *ecc, ecc_mod_sub (&ecc->p, J, r, F); /* x' */ - ecc_mod_mul (&ecc->p, r, B, J); + ecc_mod_mul (&ecc->p, r, B, J, r); /* y' */ - ecc_mod_mul (&ecc->p, r + ecc->p.size, F, C); + ecc_mod_mul (&ecc->p, r + ecc->p.size, F, C, r + ecc->p.size); /* z' */ - ecc_mod_mul (&ecc->p, B, F, J); + ecc_mod_mul (&ecc->p, B, F, J, B); mpn_copyi (r + 2*ecc->p.size, B, ecc->p.size); } -- cgit v1.2.1