4 See RFC2440 for a description of OpenPGP. We have an annotated version
5 of this RFC online: http://www.gnupg.org/rfc2440.html
11 GnuPG (>=1.0.3) is in compliance with RFC2440 despite these exceptions:
13 * (9.2) states that IDEA SHOULD be implemented. This is not done
14 due to patent problems.
17 All MAY features are implemented with this exception:
19 * multi-part armored messages are not supported.
20 MIME (rfc2015) should be used instead.
22 Most of the OPTIONAL stuff is implemented.
24 There are a couple of options which can be used to override some
25 RFC requirements. This is always mentioned with the description
28 A special format of partial packet length exists for v3 packets
29 which can be considered to be in compliance with RFC1991; this
30 format is only created if a special option is active.
32 GnuPG uses a S2K mode of 101 for GNU extensions to the secret key
33 protection algorithms. This number is not defined in OpenPGP, but
34 given the fact that this number is in a range which used at many
35 other places in OpenPGP for private/experimenat algorithm identifiers,
36 this should be not a so bad choice. The 3 bytes "GNU" are used
37 to identify this as a GNU extension - see the file DETAILS for a
38 definition of the used data formats.
42 Some Notes on OpenPGP / PGP Compatibility:
43 ==========================================
45 * PGP 5.x does not accept V4 signatures for anything other than
46 key material. The GnuPG option --force-v3-sigs mimics this
49 * PGP 5.x does not recognize the "five-octet" lengths in
50 new-format headers or in signature subpacket lengths.
52 * PGP 5.0 rejects an encrypted session key if the keylength
53 differs from the S2K symmetric algorithm. This is a bug in its
56 * PGP 5.0 does not handle multiple one-pass signature headers and
57 trailers. Signing one will compress the one-pass signed literal
58 and prefix a V3 signature instead of doing a nested one-pass
61 * When exporting a private key, PGP 2.x generates the header
62 "BEGIN PGP SECRET KEY BLOCK" instead of "BEGIN PGP PRIVATE KEY
63 BLOCK". All previous versions ignore the implied data type, and
64 look directly at the packet data type.
66 * In a clear-signed signature, PGP 5.0 will figure out the correct
67 hash algorithm if there is no "Hash:" header, but it will reject
68 a mismatch between the header and the actual algorithm used. The
69 "standard" (i.e. Zimmermann/Finney/et al.) version of PGP 2.x
70 rejects the "Hash:" header and assumes MD5. There are a number
71 of enhanced variants of PGP 2.6.x that have been modified for
74 * PGP 5.0 can read an RSA key in V4 format, but can only recognize
75 it with a V3 keyid, and can properly use only a V3 format RSA
78 * Neither PGP 5.x nor PGP 6.0 recognize ElGamal Encrypt and Sign
79 keys. They only handle ElGamal Encrypt-only keys.
82 Parts of this document are taken from:
83 ======================================
85 OpenPGP Message Format
86 draft-ietf-openpgp-formats-07.txt
89 Copyright 1998 by The Internet Society. All Rights Reserved.
91 This document and translations of it may be copied and furnished to
92 others, and derivative works that comment on or otherwise explain it
93 or assist in its implementation may be prepared, copied, published
94 and distributed, in whole or in part, without restriction of any
95 kind, provided that the above copyright notice and this paragraph
96 are included on all such copies and derivative works. However, this
97 document itself may not be modified in any way, such as by removing
98 the copyright notice or references to the Internet Society or other
99 Internet organizations, except as needed for the purpose of
100 developing Internet standards in which case the procedures for
101 copyrights defined in the Internet Standards process must be
102 followed, or as required to translate it into languages other than
105 The limited permissions granted above are perpetual and will not be
106 revoked by the Internet Society or its successors or assigns.