From 84740acd2a185514f1f5be84ca3fae52ca1f6576 Mon Sep 17 00:00:00 2001 From: Andrew Poelstra Date: Mon, 1 Oct 2018 21:00:41 +0000 Subject: [PATCH] ecmult_impl: save one fe_inv_var --- src/ecmult_impl.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ecmult_impl.h b/src/ecmult_impl.h index 74c350fcde902..bf6bb63fd10d4 100644 --- a/src/ecmult_impl.h +++ b/src/ecmult_impl.h @@ -183,6 +183,7 @@ static void secp256k1_ecmult_odd_multiples_table_storage_var(const int n, secp25 } /* Map `pj` back to our curve by multiplying its z-coordinate by `d.z`. */ + zr = pj.z; /* save pj.z so we can use it to extract (d.z)^-1 from zi */ secp256k1_fe_mul(&pj.z, &pj.z, &d.z); /* Directly set `pre[n - 1]` to `pj`, saving the inverted z-coordinate so * that we can combine it with the saved z-ratios to compute the other zs @@ -193,7 +194,7 @@ static void secp256k1_ecmult_odd_multiples_table_storage_var(const int n, secp25 secp256k1_ge_to_storage(&pre[n - 1], &p_ge); /* Compute the actual x-coordinate of D, which will be needed below. */ - secp256k1_fe_inv_var(&d.z, &d.z); + secp256k1_fe_mul(&d.z, &zi, &zr); /* d.z = 1/d.z */ secp256k1_fe_sqr(&dx_over_dz_squared, &d.z); secp256k1_fe_mul(&dx_over_dz_squared, &dx_over_dz_squared, &d.x);