summaryrefslogtreecommitdiff
path: root/ecc-dup-th.c
diff options
context:
space:
mode:
authorNiels Möller <nisse@lysator.liu.se>2020-11-01 10:22:48 +0100
committerNiels Möller <nisse@lysator.liu.se>2020-11-01 10:22:48 +0100
commit172448b05931e791ce3470b45afe8de4cdffaaad (patch)
treecd7d238a5ba07568c71619a9bb7819e107cfe205 /ecc-dup-th.c
parent98402b3b32b346a568c0d0d8e56a64f27116250c (diff)
downloadnettle-172448b05931e791ce3470b45afe8de4cdffaaad.tar.gz
Separate result area for ecc_mod_mul and ecc_mod_sqr.
* 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.
Diffstat (limited to 'ecc-dup-th.c')
-rw-r--r--ecc-dup-th.c14
1 files changed, 7 insertions, 7 deletions
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);
}