summaryrefslogtreecommitdiff
path: root/ecc-add-ehh.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-add-ehh.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-add-ehh.c')
-rw-r--r--ecc-add-ehh.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/ecc-add-ehh.c b/ecc-add-ehh.c
index 1c57a728..414ded83 100644
--- a/ecc-add-ehh.c
+++ b/ecc-add-ehh.c
@@ -80,32 +80,32 @@ ecc_add_ehh (const struct ecc_curve *ecc,
#define F D
#define G E
- ecc_mod_mul (&ecc->p, C, x1, x2);
- ecc_mod_mul (&ecc->p, D, y1, y2);
+ ecc_mod_mul (&ecc->p, C, x1, x2, C);
+ ecc_mod_mul (&ecc->p, D, y1, y2, D);
ecc_mod_add (&ecc->p, A, x1, y1);
ecc_mod_add (&ecc->p, B, x2, y2);
- ecc_mod_mul (&ecc->p, T, A, B);
+ ecc_mod_mul (&ecc->p, T, A, B, T);
ecc_mod_sub (&ecc->p, T, T, C);
ecc_mod_sub (&ecc->p, T, T, D);
- ecc_mod_mul (&ecc->p, x3, C, D);
- ecc_mod_mul (&ecc->p, E, x3, ecc->b);
+ ecc_mod_mul (&ecc->p, x3, C, D, x3);
+ ecc_mod_mul (&ecc->p, E, x3, ecc->b, E);
ecc_mod_sub (&ecc->p, C, D, C);
- ecc_mod_mul (&ecc->p, A, z1, z2);
- ecc_mod_sqr (&ecc->p, B, A);
+ ecc_mod_mul (&ecc->p, A, z1, z2, A);
+ ecc_mod_sqr (&ecc->p, B, A, B);
ecc_mod_sub (&ecc->p, F, B, E);
ecc_mod_add (&ecc->p, G, B, E);
/* x3 */
- ecc_mod_mul (&ecc->p, B, F, T);
- ecc_mod_mul (&ecc->p, x3, B, A);
+ ecc_mod_mul (&ecc->p, B, F, T, B);
+ ecc_mod_mul (&ecc->p, x3, B, A, x3);
/* y3 */
- ecc_mod_mul (&ecc->p, B, G, C);
- ecc_mod_mul (&ecc->p, y3, B, A);
+ ecc_mod_mul (&ecc->p, B, G, C, B);
+ ecc_mod_mul (&ecc->p, y3, B, A, y3);
/* z3 */
- ecc_mod_mul (&ecc->p, B, F, G);
+ ecc_mod_mul (&ecc->p, B, F, G, B);
mpn_copyi (z3, B, ecc->p.size);
}