OpenPGP RFCs
PGPy is focused on eventually reaching complete OpenPGP implementation, adhering to the base OpenPGP message format specification, and its extension RFCs.
RFC 4880
PGPy is currently focused on achieving RFC 4880 compliance for OpenPGP, which is the latest complete OpenPGP Message Format specification. It supersedes RFC 1991 and RFC 2440.
Progress
118/139
Versioned Packets, v1
1/1
✓
Tag 18 Symmetrically Encrypted and Integrity Protected Data Packet
Versioned Packets, v3
2/7
✓
Tag 1 Public-Key Encrypted Session Key Packets
Tag 2 Signature Packet
✓
Tag 4 One-Pass Signature Packet
Tag 5 Secret-Key Packet
Tag 6 Public-Key Packet
Tag 7 Secret-Subkey Packet
Tag 14 Public-SubKey Packet
Versioned Packets, v4
6/6
✓
Tag 2 Signature Packet
✓
Tag 3 Symmetric-Key Encrypted Session Key Packet
✓
Tag 5 Secret-Key Packet
✓
Tag 6 Public-Key Packet
✓
Tag 7 Secret-Subkey Packet
✓
Tag 14 Public-SubKey Packet
Unversioned Packets
8/8
✓
Tag 8 Compressed Data Packet
✓
Tag 9 Symmetrically Encrypted Data Packet
✓
Tag 10 Marker Packet
✓
Tag 11 Literal Data Packet
✓
Tag 12 Trust Packet
✓
Tag 13 User ID Packet
✓
Tag 17 User Attribute Packet
✓
Tag 19 Modification Detection Code Packet
Signature Subpackets
22/23
✓
0x02 Signature Creation Time
✓
0x03 Signature Expiration Time
✓
0x04 Exportable Certification
✓
0x05 Trust Signature
✓
0x06 Regular Expression
✓
0x07 Revocable
✓
0x09 Key Expiration Time
✓
0x0B Preferred Symmetric Algorithms
✓
0x0C Revocation Key
✓
0x10 Issuer
✓
0x14 Notation Data
✓
0x15 Preferred Hash Algorithms
✓
0x16 Preferred Compression Algorithms
✓
0x17 Key Server Preferences
✓
0x18 Preferred Key Server
✓
0x19 Primary User ID
✓
0x1A Policy URI
✓
0x1B Key Flags
✓
0x1C Signer’s User ID
✓
0x1D Reason For Revocation
✓
0x1E Features
0x1F Signature Target
✓
0x20 Embedded Signature
User Attribute Subpackets
1/1
✓
0x01 Image
Storage Formats
3/4
✓
ASCII ASCII armored PGP blocks
✓
binary binary PGP packets
✓
GPG GPG <= 2.0.x keyrings
KBX GPG >= 2.1.x keyboxes
Other Sources
0/2
Retrieve Retrieve from HKP key servers
Upload Submit to HKP key servers
Key Types
3/3
✓
RSA RSA
✓
DSA DSA
✓
ElGamal ElGamal
Key Actions
8/10
✓
Protect Protect private keys encryped with CAST5
✓
Protect Protect private keys encryped with Blowfish
✓
Protect Protect private keys encryped with AES
Protect Protect private keys encryped with Twofish
✓
Unprotect Unprotect private keys encrypted with IDEA
✓
Unprotect Unprotect private keys encrypted with Triple-DES
✓
Unprotect Unprotect private keys encrypted with CAST5
✓
Unprotect Unprotect private keys encrypted with Blowfish
✓
Unprotect Unprotect private keys encrypted with AES
Unprotect Unprotect private keys encrypted with Twofish
RSA Key Actions
31/34
✓
Load Load Keys
✓
Generate Generate Keys
✓
Generate Generate Subkeys
✓
Sign Generate detached signatures of binary documents
✓
Sign Generate inline signatures of canonical documents
✓
Sign Sign messages
✓
Sign Sign keys
✓
Sign Certify User IDs
✓
Sign Certify User Attributes
✓
Sign Generate key binding signatures
✓
Sign Revoke certifications
✓
Sign Revoke keys
✓
Sign Revoke subkeys
✓
Sign Generate timestamp signatures
✓
Sign Generate standalone signatures
Sign Generate third party confirmation signatures
✓
Verify Verify detached signatures
✓
Verify Verify inline signatures of canonical documents
✓
Verify Verify messages
✓
Verify Verify key signatures
✓
Verify Verify User ID certification signatures
✓
Verify Verify User Attribute certification signatures
✓
Verify Verify key binding signatures
✓
Verify Verify key revocation signatures
✓
Verify Verify subkey revocation signatures
✓
Verify Verify certification revocation signatures
✓
Verify Verify timestamp signatures
✓
Verify Verify standalone signatures
Verify Verify third party confirmation signatures
✓
Revocation Designate Revocation Key
✓
Revocation Revoke (Sub)Key with Self Signature
Revocation Revoke (Sub)Key using Designated Revocation Key
✓
Encryption Encrypt data/messages
✓
Decryption Decrypt data/messages
DSA Key Actions
30/33
✓
Load Load Keys
✓
Generate Generate Keys
✓
Generate Generate Subkeys
✓
Sign Generate detached signatures of binary documents
✓
Sign Generate inline signatures of canonical documents
✓
Sign One-Pass Sign messages
✓
Sign Sign messages
✓
Sign Sign keys
✓
Sign Certify User IDs
✓
Sign Certify User Attributes
✓
Sign Generate key binding signatures
✓
Sign Revoke certifications
✓
Sign Revoke keys
✓
Sign Revoke subkeys
✓
Sign Generate timestamp signatures
✓
Sign Generate standalone signatures
Sign Generate third party confirmation signatures
✓
Verify Verify detached signatures
✓
Verify Verify inline signatures of canonical documents
✓
Verify Verify messages
✓
Verify Verify key signatures
✓
Verify Verify User ID certification signatures
✓
Verify Verify User Attribute certification signatures
✓
Verify Verify key binding signatures
✓
Verify Verify key revocation signatures
✓
Verify Verify subkey revocation signatures
✓
Verify Verify certification revocation signatures
✓
Verify Verify timestamp signatures
✓
Verify Verify standalone signatures
Verify Verify third party confirmation signatures
✓
Revocation Designate Revocation Key
✓
Revocation Revoke (Sub)Key with Self Signature
Revocation Revoke (Sub)Key using Designated Revocation Key
ElGamal Key Actions
1/5
✓
Load Load Keys
Generate Generate Keys
Generate Generate Subkeys
Encryption Encrypt data/messages
Decryption Decrypt data/messages
Other Actions
2/2
✓
Encryption Encrypt data/messages using symmetric ciphers with passphrases
✓
Decryption Decrypt data/messages using symmetric ciphers with passphrases
RFC 4398
RFC 4398 covers publishing and retrieving PGP public keys via DNS CERT records.
Progress
0/2
Key Sources
0/2
DNS CERT Look up and retrieve keys stored in Content-based DNS CERT records
DNS CERT Look up and retrieve keys stored in Purpose-based DNS CERT records
RFC 5581
RFC 5581 extends RFC 4880 to officially add support for the Camellia cipher
Progress
2/2
Actions
2/2
✓
Encryption Camellia
✓
Decryption Camellia
RFC 6637
RFC 6637 extends OpenPGP to officially add support for elliptic curve cryptography
Progress
40/43
Key Types
2/2
✓
ECDH Elliptic Curve Diffie-Hellman
✓
ECDSA Elliptic Curve Digital Signature Algorithm
Curves
3/3
✓
Curve NIST P-256
✓
Curve NIST P-386
✓
Curve NIST P-521
ECDH Key Actions
5/5
✓
Load Load Keys
✓
Generate Generate Keys
✓
Generate Generate Subkeys
✓
KDF Encode KDF data for encryption
✓
KDF Decode KDF data for decryption
ECDSA Key Actions
30/33
✓
Load Load Keys
✓
Generate Generate Keys
✓
Generate Generate Subkeys
✓
Sign Generate detached signatures of binary documents
✓
Sign Generate inline signatures of canonical documents
✓
Sign One-Pass Sign messages
✓
Sign Sign messages
✓
Sign Sign keys
✓
Sign Certify User IDs
✓
Sign Certify User Attributes
✓
Sign Generate key binding signatures
✓
Sign Revoke certifications
✓
Sign Revoke keys
✓
Sign Revoke subkeys
✓
Sign Generate timestamp signatures
✓
Sign Generate standalone signatures
Sign Generate third party confirmation signatures
✓
Verify Verify detached signatures
✓
Verify Verify inline signatures of canonical documents
✓
Verify Verify messages
✓
Verify Verify key signatures
✓
Verify Verify Use r ID certification signatures
✓
Verify Verify User Attribute certification signatures
✓
Verify Verify key binding signatures
✓
Verify Verify key revocation signatures
✓
Verify Verify subkey revocation signatures
✓
Verify Verify certification revocation signatures
✓
Verify Verify timestamp signatures
✓
Verify Verify standalone signatures
Verify Verify third party confirmation signatures
✓
Revocation Designate Revocation Key
✓
Revocation Revoke (Sub)Key with Self Signature
Revocation Revoke (Sub)Key using Designated Revocation Key
Non-RFC Extensions
This section covers things that are considered extensions to PGP, but are not codified in the form of an RFC.
DNS PKA
Publishing OpenPGP keys in DNS
Progress
0/1
Other Sources
0/1
DNS PKA Look up and retrieve keys stored in DNS PKA records.
OpenPGP HTTP Keyserver Protocol (HKP)
The protocol is specified in Marc Horowitz’s thesis paper , and an expired RFC draft by David Shaw, draft-shaw-openpgp-hkp-00 .
Progress
0/4
HKP
0/4
Discovery Round robin DNS and SRV lookups (section 7. Locating a HKP Keyserver)
Index Look up keys on key server, with multiple possible matches (section 3.1.2.2. The “index” Operation)
Get Retrieve keys from key server, single fingerprint fetch (section 3.1.2.1. The “get” operation)
Post Send keys to key server (section 4. Submitting Keys To A Keyserver)
OpenPGP Web Key Service (WKS)
LocatesOpenPGP keys by mail address using a Web service and the HTTPS protocol. Protocol specified in an in-progress RFC draft by Werner Koch, draft-koch-openpgp-webkey-service
Progress
0/2
WKS
0/2
Discovery Fetches keys matching a UID from the server, using DNS and SRV lookups (section 3.1. Key Discovery)
Update Update keys on the WKS (section 4. Web Key Directory Update Protocol)
EdDSA for OpenPGP
Use of Ed25519 with ECDSA and ECDH in OpenPGP is currently specified in an in-progress RFC draft by Werner Koch, draft-ietf-openpgp-rfc4880bis .
Progress
2/2
Curves
2/2
✓
Curve Ed25519
✓
Curve X25519
Additional Curves for OpenPGP
Some additional curves that can be used with ECDSA/ECDH that are not explicitly called out in RFC 6637 , but have standardized OIDs and are implemented in other software.
Progress
5/5
Curves
5/5
✓
Curve Brainpool P-256
✓
Curve Brainpool P-384
✓
Curve Brainpool P-512
✓
Curve Curve25519
✓
Curve SECP256K1
Note
Use of Brainpool curves with ECDSA/ECDH
Although these curves are not explicitly mentioned in an RFC for OpenPGP at this point, GnuPG 2.1.x+ does support
using them. As such, they have been included here.