1
0
mirror of git://git.gnupg.org/gnupg.git synced 2025-04-17 15:44:34 +02:00

g10: Fix exporting secret keys of certain sizes.

* g10/build-packet.c (do_key): Do not use the header length specified
by the public key packet from the keyring, but let 'write_header2'
compute the required length.
--
Specifically exporting RSA keys of length 1024 failed, as the encoded
public key packet requires 141 bytes a length that fits into one byte,
but the secret key is significantly larger, making the export fail.

GnuPG-bug-id: 2307
Signed-off-by: Justus Winter <justus@g10code.com>
This commit is contained in:
Justus Winter 2016-04-07 13:55:42 +02:00
parent 71040f48ef
commit 02cf1357dd

View File

@ -486,7 +486,7 @@ do_key (iobuf_t out, int ctb, PKT_public_key *pk)
/* Build the header of the packet - which we must do after /* Build the header of the packet - which we must do after
writing all the other stuff, so that we know the length of writing all the other stuff, so that we know the length of
the packet */ the packet */
write_header2 (out, ctb, iobuf_get_temp_length(a), pk->hdrbytes); write_header2 (out, ctb, iobuf_get_temp_length(a), 0);
/* And finally write it out to the real stream. */ /* And finally write it out to the real stream. */
err = iobuf_write_temp (out, a); err = iobuf_write_temp (out, a);
} }