diff options
author | Niels Möller <nisse@lysator.liu.se> | 2020-11-01 10:22:48 +0100 |
---|---|---|
committer | Niels Möller <nisse@lysator.liu.se> | 2020-11-01 10:22:48 +0100 |
commit | 172448b05931e791ce3470b45afe8de4cdffaaad (patch) | |
tree | cd7d238a5ba07568c71619a9bb7819e107cfe205 /ecc-add-ehh.c | |
parent | 98402b3b32b346a568c0d0d8e56a64f27116250c (diff) | |
download | nettle-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.c | 24 |
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); } |