diff options
author | Werner Koch <wk@gnupg.org> | 2013-09-07 10:06:46 +0200 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2013-09-16 14:42:37 +0200 |
commit | 44a2c34e90ed7de149952398787906d8823b636b (patch) | |
tree | b8ee249bb3669ba9b7ec87152d09f5c2340a48d2 | |
parent | 8ebc94d11a1eb93f2365c93f555e958700fdfbd4 (diff) | |
download | libgcrypt-44a2c34e90ed7de149952398787906d8823b636b.tar.gz |
mpi: Add internal convenience function.
* mpi/mpiutil.c (_gcry_mpi_get_opaque_copy): New.
Signed-off-by: Werner Koch <wk@gnupg.org>
-rw-r--r-- | mpi/mpiutil.c | 16 | ||||
-rw-r--r-- | src/mpi.h | 1 |
2 files changed, 17 insertions, 0 deletions
diff --git a/mpi/mpiutil.c b/mpi/mpiutil.c index 433dda6b..57fe72a7 100644 --- a/mpi/mpiutil.c +++ b/mpi/mpiutil.c @@ -291,6 +291,22 @@ gcry_mpi_get_opaque( gcry_mpi_t a, unsigned int *nbits ) } +void * +_gcry_mpi_get_opaque_copy (gcry_mpi_t a, unsigned int *nbits) +{ + const void *s; + void *d; + unsigned int n; + + s = gcry_mpi_get_opaque (a, nbits); + if (!s && nbits) + return NULL; + n = (*nbits+7)/8; + d = gcry_is_secure (s)? gcry_malloc_secure (n) : gcry_malloc (n); + memcpy (d, s, n); + return d; +} + /**************** * Note: This copy function should not interpret the MPI * but copy it transparently. @@ -134,6 +134,7 @@ void _gcry_mpi_m_check( gcry_mpi_t a ); void _gcry_mpi_swap( gcry_mpi_t a, gcry_mpi_t b); gcry_mpi_t _gcry_mpi_new (unsigned int nbits); gcry_mpi_t _gcry_mpi_snew (unsigned int nbits); +void *_gcry_mpi_get_opaque_copy (gcry_mpi_t a, unsigned int *nbits); int _gcry_mpi_is_neg (gcry_mpi_t a); void _gcry_mpi_neg (gcry_mpi_t w, gcry_mpi_t u); void _gcry_mpi_abs (gcry_mpi_t w); |