diff options
author | Werner Koch <[email protected]> | 2015-03-16 18:57:11 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2015-03-16 19:12:44 +0000 |
commit | bcc8250bc5b9a357c6d1444f03e334edec573ede (patch) | |
tree | 90b3aa179c4e5bccb6a97ccd0b9bda15a4e51413 /g10/misc.c | |
parent | gpg: Fix broken write of opaque MPI length header. (diff) | |
download | gnupg-bcc8250bc5b9a357c6d1444f03e334edec573ede.tar.gz gnupg-bcc8250bc5b9a357c6d1444f03e334edec573ede.zip |
gpg: Allow printing of MPI values in --list-mode.
* g10/parse-packet.c (set_packet_list_mode): Set mpi_print_mode.
* g10/misc.c (mpi_print): Do not print an extra leading zero.
--
This was in older versions possible using "--debug 4" but that was
disabled in 2.1 due to a conflict using this values also for
Libgcrypt. Now the values are dumped either with --debug 4 or using
--list-packets along with --verbose.
Because OpenPGP only uses unsigned integers an extra leading zero will
not be printed anymore.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to '')
-rw-r--r-- | g10/misc.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/g10/misc.c b/g10/misc.c index 4cff2dc88..654908d37 100644 --- a/g10/misc.c +++ b/g10/misc.c @@ -1636,7 +1636,8 @@ pubkey_nbits( int algo, gcry_mpi_t *key ) int mpi_print (estream_t fp, gcry_mpi_t a, int mode) { - int n=0; + int n = 0; + size_t nwritten; if (!a) return es_fprintf (fp, "[MPI_NULL]"); @@ -1654,19 +1655,19 @@ mpi_print (estream_t fp, gcry_mpi_t a, int mode) n += es_fprintf (fp, "[invalid opaque value]"); else { - nbits = (nbits + 7)/8; - for (; nbits; nbits--, p++) - n += es_fprintf (fp, "%02X", *p); + if (!es_write_hexstring (fp, p, (nbits + 7)/8, 0, &nwritten)) + n += nwritten; } } else { unsigned char *buffer; + size_t buflen; - if (gcry_mpi_aprint (GCRYMPI_FMT_HEX, &buffer, NULL, a)) + if (gcry_mpi_aprint (GCRYMPI_FMT_USG, &buffer, &buflen, a)) BUG (); - es_fputs (buffer, fp); - n += strlen (buffer); + if (!es_write_hexstring (fp, buffer, buflen, 0, &nwritten)) + n += nwritten; gcry_free (buffer); } return n; |