summaryrefslogtreecommitdiff
path: root/mpi/mpi-bit.c
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>1997-11-19 13:12:21 +0000
committerWerner Koch <wk@gnupg.org>1997-11-19 13:12:21 +0000
commitf6b6e3639a266f1bb56cdc05a3a3307a19abafe0 (patch)
tree20405936a7ceed003631b7f4621fab4f0915dcf9 /mpi/mpi-bit.c
parent4b5e71ca4e84e61e595dec19e1c7cab0c0a73f24 (diff)
downloadlibgcrypt-f6b6e3639a266f1bb56cdc05a3a3307a19abafe0.tar.gz
Output armor works, RSA keygen works.
Diffstat (limited to 'mpi/mpi-bit.c')
-rw-r--r--mpi/mpi-bit.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/mpi/mpi-bit.c b/mpi/mpi-bit.c
index 9cb346aa..9bde9f0f 100644
--- a/mpi/mpi-bit.c
+++ b/mpi/mpi-bit.c
@@ -130,4 +130,25 @@ mpi_set_bytes( MPI a, unsigned nbits, byte (*fnc)(int), int opaque )
assert(!xbits);
}
+/****************
+ * Shift A by N bits to the right
+ * FIXME: should use alloc_limb if X and A are same.
+ */
+void
+mpi_rshift( MPI x, MPI a, unsigned n )
+{
+ mpi_ptr_t xp;
+ mpi_size_t xsize;
+
+ xsize = a->nlimbs;
+ x->sign = a->sign;
+ RESIZE_IF_NEEDED(x, xsize);
+ xp = x->d;
+
+ if( xsize ) {
+ mpihelp_rshift( xp, a->d, xsize, n);
+ MPN_NORMALIZE( xp, xsize);
+ }
+ x->nlimbs = xsize;
+}