From 3658afd09c3b03b4398aaa5748387220c93b1a94 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Thu, 26 Nov 2015 11:37:47 +0900 Subject: ecc: minor improvement of point multiplication. * mpi/ec.c (_gcry_mpi_ec_mul_point): Move ec_subm out of the loop. --- mpi/ec.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'mpi/ec.c') diff --git a/mpi/ec.c b/mpi/ec.c index 4d59a7e5..40e09bed 100644 --- a/mpi/ec.c +++ b/mpi/ec.c @@ -1415,6 +1415,10 @@ _gcry_mpi_ec_mul_point (mpi_point_t result, point_init (&p2); point_init (&p1inv); + /* Invert point: y = p - y mod p */ + point_set (&p1inv, &p1); + ec_subm (p1inv.y, ctx->p, p1inv.y, ctx); + for (i=loops-2; i > 0; i--) { _gcry_mpi_ec_dup_point (result, result, ctx); @@ -1426,9 +1430,6 @@ _gcry_mpi_ec_mul_point (mpi_point_t result, if (mpi_test_bit (h, i) == 0 && mpi_test_bit (k, i) == 1) { point_set (&p2, result); - /* Invert point: y = p - y mod p */ - point_set (&p1inv, &p1); - ec_subm (p1inv.y, ctx->p, p1inv.y, ctx); _gcry_mpi_ec_add_points (result, &p2, &p1inv, ctx); } } -- cgit v1.2.1