diff options
author | Werner Koch <wk@gnupg.org> | 2013-03-12 20:20:42 +0100 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2013-03-13 12:38:30 +0100 |
commit | 1fecae98ee7e0fa49b29f98efa6817ca121ed98a (patch) | |
tree | 02a3ba8f73f47d1ee629563d1abde0b56dc5d31d /mpi/mpicoder.c | |
parent | 5e743bc72e3fee3d550d0d7ae98596b7de6b46f8 (diff) | |
download | libgcrypt-1fecae98ee7e0fa49b29f98efa6817ca121ed98a.tar.gz |
Add GCRYMPI_FLAG_IMMUTABLE to help debugging.
* src/gcrypt.h.in (GCRYMPI_FLAG_IMMUTABLE): New.
* src/mpi.h (mpi_is_immutable): New macro.
* mpi/mpiutil.c (gcry_mpi_set_flag, gcry_mpi_clear_flag)
(gcry_mpi_get_flag): Implement new flag
(_gcry_mpi_immutable_failed): New.
* mpi/mpiutil.c (_gcry_mpi_clear, _gcry_mpi_free, gcry_mpi_snatch)
(gcry_mpi_set, gcry_mpi_randomize): Act upon the immutable flag.
* mpi/mpi-bit.c (gcry_mpi_set_bit, gcry_mpi_set_highbit)
(gcry_mpi_clear_highbit, gcry_mpi_clear_bit)
(_gcry_mpi_rshift_limbs, gcry_mpi_lshift): Ditto.
* mpi/mpicoder.c (_gcry_mpi_set_buffer): Ditto.
--
Note that this flag is currently only checked by a few MPI functions.
The reason why we eventually need such a flag is to help implementing
a generic way to retrieve and set ECC parameters without accidentally
changing a curve parameter taken from a list of predefined curves.
Diffstat (limited to 'mpi/mpicoder.c')
-rw-r--r-- | mpi/mpicoder.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/mpi/mpicoder.c b/mpi/mpicoder.c index a3435ed1..06d5553e 100644 --- a/mpi/mpicoder.c +++ b/mpi/mpicoder.c @@ -305,6 +305,12 @@ _gcry_mpi_set_buffer (gcry_mpi_t a, const void *buffer_arg, int nlimbs; int i; + if (mpi_is_immutable (a)) + { + mpi_immutable_failed (); + return; + } + nlimbs = (nbytes + BYTES_PER_MPI_LIMB - 1) / BYTES_PER_MPI_LIMB; RESIZE_IF_NEEDED(a, nlimbs); a->sign = sign; |