mpi: Normalize EXPO for mpi_powm.
authorNIIBE Yutaka <gniibe@fsij.org>
Thu, 25 Feb 2016 03:01:10 +0000 (12:01 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Thu, 25 Feb 2016 03:01:10 +0000 (12:01 +0900)
* mpi/mpi-pow.c (gcry_mpi_powm): Normalize EP.

--

Thanks to Dan Fandrich for the report with a reproducible test case.

GnuPG-bug-id: 2256

Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
mpi/mpi-pow.c

index 0be153f..a780ebd 100644 (file)
@@ -83,6 +83,7 @@ _gcry_mpi_powm (gcry_mpi_t res,
 
   rp = res->d;
   ep = expo->d;
+  MPN_NORMALIZE(ep, esize);
 
   if (!msize)
     _gcry_divide_by_zero();
@@ -429,6 +430,9 @@ _gcry_mpi_powm (gcry_mpi_t res,
   size = 2 * msize;
   msign = mod->sign;
 
+  ep = expo->d;
+  MPN_NORMALIZE(ep, esize);
+
   if (esize * BITS_PER_MPI_LIMB > 512)
     W = 5;
   else if (esize * BITS_PER_MPI_LIMB > 256)
@@ -445,7 +449,6 @@ _gcry_mpi_powm (gcry_mpi_t res,
   bsec = mpi_is_secure(base);
 
   rp = res->d;
-  ep = expo->d;
 
   if (!msize)
     _gcry_divide_by_zero();