summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNIIBE Yutaka <gniibe@fsij.org>2020-03-11 16:09:07 +0900
committerWerner Koch <wk@gnupg.org>2020-07-30 10:23:09 +0200
commitd9103048d11bcd8c9cce42dd450b394acd8949ac (patch)
treee3666c6abbca928b88a7e5ca75c95dd632ae36f1
parentc917ebb48d1b784f6f29bc5b292bab78469aabfb (diff)
downloadlibgcrypt-d9103048d11bcd8c9cce42dd450b394acd8949ac.tar.gz
mpi: Support opaque MPI with gcry_mpi_print.
* mpi/mpicoder.c (_gcry_mpi_get_buffer): Return the bytes as-is. -- GnuPG-bug-id: 4872 Signed-off-by: NIIBE Yutaka <gniibe@fsij.org> Backport-from-master: b4b04ae6c2e55bc2b24efc663d1eeaa0b3613f4c
-rw-r--r--mpi/mpicoder.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/mpi/mpicoder.c b/mpi/mpicoder.c
index 4c63a147..a133421e 100644
--- a/mpi/mpicoder.c
+++ b/mpi/mpicoder.c
@@ -298,7 +298,18 @@ byte *
_gcry_mpi_get_buffer (gcry_mpi_t a, unsigned int fill_le,
unsigned int *r_nbytes, int *sign)
{
- return do_get_buffer (a, fill_le, 0, r_nbytes, sign, 0);
+ if (mpi_get_flag (a, GCRYMPI_FLAG_OPAQUE))
+ {
+ unsigned int nbits;
+ byte *p = _gcry_mpi_get_opaque_copy (a, &nbits);
+
+ if (r_nbytes)
+ *r_nbytes = (nbits+7)/8;
+
+ return p;
+ }
+ else
+ return do_get_buffer (a, fill_le, 0, r_nbytes, sign, 0);
}
byte *