Messages in this thread | | | Subject | Re: [PATCH 04/16] PGP: Add definitions (RFC 4880) and packet parser [ver #2] | From | Ben Hutchings <> | Date | Sun, 04 Dec 2011 16:03:02 +0000 |
| |
On Tue, 2011-11-29 at 23:43 +0000, David Howells wrote: > Add some useful PGP definitions from RFC 4880. These describe details of > public key crypto as used by crypto keys for things like signature > verification. [...] > +struct pgp_signature_v3_packet { > + enum pgp_signature_version version : 8; /* == PGP_SIG_VERSION_3 */ > + u8 length_of_hashed; /* == 5 */ > + struct { > + enum pgp_signature_type signature_type : 8; > + struct pgp_time creation_time; > + } hashed; > + struct pgp_key_ID issuer; > + enum pgp_pubkey_algo pubkey_algo : 8; > + enum pgp_hash_algo hash_algo : 8; > +}; > + > +struct pgp_signature_v4_packet { > + enum pgp_signature_version version : 8; /* == PGP_SIG_VERSION_4 */ > + enum pgp_signature_type signature_type : 8; > + enum pgp_pubkey_algo pubkey_algo : 8; > + enum pgp_hash_algo hash_algo : 8; > +}; [...] > +struct pgp_key_v3_packet { > + enum pgp_key_version version : 8; > + struct pgp_time creation_time; > + u8 expiry[2]; /* 0 or time in days till expiry */ > + enum pgp_pubkey_algo pubkey_algo : 8; > + u8 key_material[0]; > +}; > + > +struct pgp_key_v4_packet { > + enum pgp_key_version version : 8; > + struct pgp_time creation_time; > + enum pgp_pubkey_algo pubkey_algo : 8; > + u8 key_material[0]; > +}; [...]
I'm a little uneasy about these structure definitions. There have been C ABIs that set the structure alignment to at least 4 by default. It may be better to play safe by declaring them '__packed'.
Ben.
-- Ben Hutchings Klipstein's 4th Law of Prototyping and Production: A fail-safe circuit will destroy others. [unhandled content-type:application/pgp-signature] | |