From 469e2fefb64e3a4bd80995935f82caf416e3a4ae Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Fri, 17 Apr 2020 14:50:57 +0900 Subject: mpi: Use mpi_invm_pow2 for N=2^k. * mpi/mpi-inv.c (mpi_invm_pow2): Fix. (_gcry_mpi_invm): Use mpi_invm_pow2. Signed-off-by: NIIBE Yutaka --- mpi/mpi-inv.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'mpi') diff --git a/mpi/mpi-inv.c b/mpi/mpi-inv.c index 85f95ec1..b44aeb78 100644 --- a/mpi/mpi-inv.c +++ b/mpi/mpi-inv.c @@ -134,7 +134,7 @@ mpi_invm_pow2 (gcry_mpi_t x, gcry_mpi_t a_orig, unsigned int k) mpi_resize (b, usize); mpi_resize (x, usize); - tb = mpi_copy (tb); + tb = mpi_copy (b); wp = tb->d; up = b->d; @@ -441,5 +441,12 @@ _gcry_mpi_invm (gcry_mpi_t x, gcry_mpi_t a, gcry_mpi_t n) return 0; /* Inverse does not exists. */ } else - return mpi_invm_generic (x, a, n); + { + unsigned int count = mpi_trailing_zeros (n); + + if (count == _gcry_mpi_get_nbits (n) - 1) + return mpi_invm_pow2 (x, a, count); + + return mpi_invm_generic (x, a, n); + } } -- cgit v1.2.1