Network Working Group J. Callas
Request for Comments: 4880 PGP Corporation
Obsoletes: 1991, 2440 L. Donnerhacke
Category: Standards Track IKS GmbH
H. Finney
PGP Corporation
D. Shaw
R. Thayer
November 2007
OpenPGP Message Format
Status of This Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Abstract
This document is maintained in order to publish all necessary
information needed to develop interoperable applications based on the
OpenPGP format. It is not a step-by-step cookbook for writing an
application. It describes only the format and methods needed to
read, check, generate, and write conforming packets crossing any
network. It does not deal with storage and implementation questions.
It does, however, discuss implementation issues necessary to avoid
security flaws.
OpenPGP software uses a combination of strong public-key and
symmetric cryptography to provide security services for electronic
communications and data storage. These services include
confidentiality, key management, authentication, and digital
signatures. This document specifies the message formats used in
OpenPGP.
Callas, et al Standards Track [Page 1]
RFC 4880 OpenPGP Message Format November 2007
Table of Contents
1. Introduction ....................................................5
1.1. Terms ......................................................5
2. General functions ...............................................6
2.1. Confidentiality via Encryption .............................6
2.2. Authentication via Digital Signature .......................7
2.3. Compression ................................................7
2.4. Conversion to Radix-64 .....................................8
2.5. Signature-Only Applications ................................8
3. Data Element Formats ............................................8
3.1. Scalar Numbers .............................................8
3.2. Multiprecision Integers ....................................9
3.3. Key IDs ....................................................9
3.4. Text .......................................................9
3.5. Time Fields ...............................................10
3.6. Keyrings ..................................................10
3.7. String-to-Key (S2K) Specifiers ............................10
3.7.1. String-to-Key (S2K) Specifier Types ................10
3.7.1.1. Simple S2K ................................10
3.7.1.2. Salted S2K ................................11
3.7.1.3. Iterated and Salted S2K ...................11
3.7.2. String-to-Key Usage ................................12
3.7.2.1. Secret-Key Encryption .....................12
3.7.2.2. Symmetric-Key Message Encryption ..........13
4. Packet Syntax ..................................................13
4.1. Overview ..................................................13
4.2. Packet Headers ............................................13
4.2.1. Old Format Packet Lengths ..........................14
4.2.2. New Format Packet Lengths ..........................15
4.2.2.1. One-Octet Lengths .........................15
4.2.2.2. Two-Octet Lengths .........................15
4.2.2.3. Five-Octet Lengths ........................15
4.2.2.4. Partial Body Lengths ......................16
4.2.3. Packet Length Examples .............................16
4.3. Packet Tags ...............................................17
5. Packet Types ...................................................17
5.1. Public-Key Encrypted Session Key Packets (Tag 1) ..........17
5.2. Signature Packet (Tag 2) ..................................19
5.2.1. Signature Types ....................................19