Preserve public/secret distinction in _serialize_signature_packet_target master
authorW. Trevor King <wking@tremily.us>
Tue, 7 Jan 2014 17:48:38 +0000 (09:48 -0800)
committerW. Trevor King <wking@tremily.us>
Tue, 7 Jan 2014 21:20:26 +0000 (13:20 -0800)
commita0dc8d6ec2184564c7980d1731f7dd652dbe1d83
tree115c7a50802e64eca3259039442545e680291a56
parentf5e936a32fc016c24eabac90ce3b638acb7eafe4
Preserve public/secret distinction in _serialize_signature_packet_target

When promoting subkey packets to key packets as signature targets,
keep secret keys secret and public keys public.  This avoids:

  ValueError: corrupted hash

warnings (and was mostly a lucky guess ;), as all RFC 4880 gives us is
[1]:

  When a signature is made over a key, the hash data starts with the
  octet 0x99, followed by a two-octet length of the key, and then body
  of the key packet.  (Note that this is an old-style packet header
  for a key packet with two-octet length.)  A subkey binding signature
  (type 0x18) or primary key binding signature (type 0x19) then hashes
  the subkey using the same format as the main key (also using 0x99 as
  the first octet).

http://tools.ietf.org/search/rfc4880#section-5.2.4
gpg-migrate.py