summaryrefslogtreecommitdiff
path: root/mpi
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2006-08-28 09:40:39 +0000
committerWerner Koch <wk@gnupg.org>2006-08-28 09:40:39 +0000
commit9dba89cde740d7c518a73b869d07d6247e0e7488 (patch)
treef3f15bc215c20a02b6fb9f5c5691825aa3e48ec9 /mpi
parent5681a844ea16e74ededb45db7e9665b4ffd29045 (diff)
downloadlibgcrypt-9dba89cde740d7c518a73b869d07d6247e0e7488.tar.gz
Fixed a problem with shifting MPIs by 0.
Add a way to check whether the RNG is in fake mode.
Diffstat (limited to 'mpi')
-rw-r--r--mpi/ChangeLog5
-rw-r--r--mpi/mpi-bit.c12
2 files changed, 16 insertions, 1 deletions
diff --git a/mpi/ChangeLog b/mpi/ChangeLog
index 176ccf22..c670967e 100644
--- a/mpi/ChangeLog
+++ b/mpi/ChangeLog
@@ -1,3 +1,8 @@
+2006-08-25 Werner Koch <wk@g10code.com>
+
+ * mpi-bit.c (gcry_mpi_rshift): Don't shift if N == 0 but do a
+ plain copy.
+
2006-08-04 Werner Koch <wk@g10code.com>
* mpi-bit.c (gcry_mpi_rshift): Rewritten to remove the limitation
diff --git a/mpi/mpi-bit.c b/mpi/mpi-bit.c
index d16eaae1..fe4895dc 100644
--- a/mpi/mpi-bit.c
+++ b/mpi/mpi-bit.c
@@ -256,7 +256,17 @@ gcry_mpi_rshift ( gcry_mpi_t x, gcry_mpi_t a, unsigned int n )
x->nlimbs = xsize;
if ( xsize )
- _gcry_mpih_rshift (x->d, a->d, x->nlimbs, nbits );
+ {
+ if (nbits )
+ _gcry_mpih_rshift (x->d, a->d, x->nlimbs, nbits );
+ else
+ {
+ /* The rshift helper function is not specified for
+ NBITS==0, thus we do a plain copy here. */
+ for (i=0; i < x->nlimbs; i++ )
+ x->d[i] = a->d[i];
+ }
+ }
}
MPN_NORMALIZE (x->d, x->nlimbs);
}