<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.35 (Ruby 3.3.8) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-gallagher-openpgp-messages-00" category="std" consensus="true" submissionType="IETF" updates="9580" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title>OpenPGP Message Grammar</title>

    <author fullname="Andrew Gallagher" role="editor">
      <organization>PGPKeys.EU</organization>
      <address>
        <email>andrewg@andrewg.com</email>
      </address>
    </author>

    <date year="2026" month="June" day="04"/>

    <area>int</area>
    <workgroup>openpgp</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 49?>

<t>This document specifies several updates and clarifications to the grammar and semantics of OpenPGP messages.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        The latest revision of this draft can be found at <eref target="https://andrewgdotcom.gitlab.io/openpgp-messages"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-gallagher-openpgp-messages/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        OpenPGP Working Group mailing list (<eref target="mailto:openpgp@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/openpgp/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/openpgp/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://gitlab.com/andrewgdotcom/openpgp-messages"/>.</t>
    </note>


  </front>

  <middle>


<?line 53?>

<section anchor="introduction"><name>Introduction</name>

<t>OpenPGP messages have a complex grammar and sometimes poorly-understood semantics.
This document attempts to address this by:</t>

<t><list style="symbols">
  <t>Expanding on specifications where <xref target="RFC9580"></xref> does not fully describe the existing or expected behaviour of deployed implementations.</t>
  <t>Adding clarification where deployed implementations differ in their interpretation of <xref target="RFC9580"></xref> and its predecessors.</t>
  <t>Deprecating unused or error-prone features.</t>
</list></t>

<t>This document does not specify any new wire formats.</t>

</section>
<section anchor="conventions-definitions"><name>Conventions and Definitions</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

</section>
<section anchor="signed-messages"><name>Signed Messages</name>

<t>The accepted convention is that a prefixed Signature packet signs over the next literal packet only, skipping any intervening signatures - however this is not explicitly specified in <xref target="RFC9580"></xref>.
Historically, PGP 2.X treated a prefixed Signature packet as applying to the entire following sequence of packets, but this usage is deprecated <xref target="FINNEY1998"></xref>.
See <xref target="nested-signatures"/> for an alternative construction.</t>

<t>In addition, One-Pass Signature (OPS) nesting semantics are complex, and under-specified <xref target="SCHAUB2022"></xref>.
<xref section="5.4" sectionFormat="of" target="RFC9580"/> defines the nesting octet as:</t>

<ul empty="true"><li>
  <t>A 1-octet number holding a flag showing whether the signature is nested.
A zero value indicates that the next packet is another One-Pass Signature packet that describes another signature to be applied to the same message data.</t>
</li></ul>

<t>The terminology is imprecise, and non-zero "nesting" flags are completely unspecified.
One self-consistent interpretation is as follows:</t>

<t><list style="symbols">
  <t>A zero nesting octet means that the following OPS and its counterpart signature are not signed over by the current OPS.
  <list style="symbols">
      <t>This process is recursive if multiple sequential OPS packets have a nesting octet of zero.</t>
    </list></t>
  <t>To add multiple OPS signatures over the same message data, all OPS constructions except the innermost one have the nesting octet zeroed.
  <list style="symbols">
      <t>It is not clear what happens if the innermost nesting octet is zero but no OPS packet follows.</t>
    </list></t>
</list></t>

<t>The above implies that an OPS with a nonzero nesting octet signs over all packets between the OPS packet and its matching signature packet, including any further signatures, however it is not clear whether any current implementation supports this.</t>

<t>This is further expanded in <xref target="OPENPGPDEVBOOK"></xref>.</t>

<t>This still leaves us with an overly complex grammar that resists rigorous formalization.
We attempt to improve the formalism below.</t>

<section anchor="prefix-signed-message-constraints"><name>Prefix-Signed Message Constraints</name>

<t>Prefixed signatures are deprecated, and their use is hereby restricted:</t>

<t><list style="symbols">
  <t>A prefixed Signature packet <bcp14>MUST</bcp14> be followed by one Literal Data packet and no other packets except further prefixed Signature packets, and Marker packets.</t>
  <t>A prefixed Signature packet <bcp14>MUST NOT</bcp14> have a version number greater than 4.</t>
</list></t>

<t>Prefixed signatures <bcp14>SHOULD NOT</bcp14> be generated, but <bcp14>MAY</bcp14> be interpreted.
A receiving implementation <bcp14>MAY</bcp14> convert a prefixed signature to the equivalent OPS signature, by moving the signature after the Literal Data packet and prefixing an appropriate OPS packet.</t>

</section>
<section anchor="ops-message-constraints"><name>OPS Message Constraints</name>

<t>We constrain OPS structures to a subset of previously-allowed configurations:</t>

<t><list style="symbols">
  <t>Prefixed signatures and OPS signatures <bcp14>MUST NOT</bcp14> both be used in the same message.</t>
  <t>When generating an OPS packet that is not followed by another OPS packet, the nesting octet <bcp14>SHOULD</bcp14> be set to 1.
  <list style="symbols">
      <t>Otherwise, the nesting octet <bcp14>SHOULD</bcp14> be set to 0.</t>
    </list></t>
  <t>When consuming an OPS packet, the nesting octet <bcp14>MUST</bcp14> be ignored.</t>
</list></t>

<t>This effectively deprecates the nesting octet, while maintaining backwards compatibility with legacy code.</t>

</section>
<section anchor="subject-normalization"><name>Subject Normalization</name>

<t>The <em>subject</em> of an OpenPGP signature refers to the packet(s) that are signed over.
The <em>type-specific data</em> of an OpenPGP signature refers to the section of the data stream that is passed to the signature's digest function after the optional salt and before the trailer.
The type-specific data differs from the subject in that it has been normalized, the details of which are dependent on the signature type.</t>

<t>The subject of a signature in the Literal Data or Timestamping categories (<xref target="I-D.gallagher-openpgp-signatures"/>) is the Literal Data packet that immediately follows one or more prefixed signatures, or is enclosed by one or more OPS constructions.
If no Literal Data packet is present, the signature is malformed.</t>

<t>The following normalization steps are applied to the subject of the signature to produce the type-specific data:</t>

<t><list style="symbols">
  <t>The framing of the Literal Data packet is discarded, and any partial-length packets are concatenated.</t>
  <t>If the Signature Type is 0x01, the Literal Data packet body is converted to Canonical Text, by converting line endings to CRLF and removing any trailing whitespace (<xref target="line-ending-normalization"/>).</t>
</list></t>

<t>A One-Pass Signature over a Literal Data packet, a prefixed Signature over the same packet, and a detached signature over a file containing the body of the same packet are all calculated the same way.
This means that they can be losslessly transformed into each other with the exception of the Literal Data metadata fields, which an application <bcp14>MAY</bcp14> assume contain their recommended default values as per <xref section="5.9" sectionFormat="of" target="RFC9580"/>.</t>

<t>A signature of Type 0x01 <bcp14>MUST NOT</bcp14> be made over arbitrary binary data, only over UTF-8 text.</t>

<section anchor="line-ending-normalization"><name>Line Ending Normalization</name>

<t>When normalizing line endings, only bare linefeeds (an <spanx style="verb">LF</spanx> control character that is not preceded by a <spanx style="verb">CR</spanx>) are normalized to <spanx style="verb">CRLF</spanx>.
In particular, bare carriage returns <bcp14>MUST NOT</bcp14> be converted to <spanx style="verb">CRLF</spanx>.</t>

</section>
</section>
<section anchor="nested-signatures"><name>Nested Signatures</name>

<t>To sign over an entire signed message together with its signatures, the wire format of the inner message <bcp14>SHOULD</bcp14> first be encapsulated in a Literal Data packet.
A Canonical Text signature <bcp14>MUST NOT</bcp14> be made over such a nested message, and the Cleartext Signature Framework <bcp14>MUST NOT</bcp14> be used.</t>

<t>Beware that the outer signature will thus be sensitive to the inner message's packet framing, i.e. the otherwise inconsequential choice of packet header format and partial body lengths.
If the inner message is parsed and re-serialized unmodified, but using a different framing, the outer signature will no longer validate.</t>

</section>
</section>
<section anchor="formal-grammar"><name>Formal Grammar</name>

<t>The message grammar in <xref section="10.3" sectionFormat="of" target="RFC9580"/> is therefore updated to:</t>

<t><list style="symbols">
  <t>Literal Message:<br />
  Literal Data Packet.</t>
  <t>Encrypted Session Key:<br />
  Public Key Encrypted Session Key Packet | Symmetric Key Encrypted Session Key Packet.</t>
  <t>Encrypted Data:<br />
  Symmetrically Encrypted Data Packet | Symmetrically Encrypted and Integrity Protected Data Packet.</t>
  <t>Encrypted Message:<br />
  Encrypted Data | Encrypted Session Key, Encrypted Message.</t>
  <t>Prefixed Signed Message:
  Signature Packet, Prefixed Signed Message | Literal Message.</t>
  <t>Multiply One-Pass Signed Message:<br />
  One-Pass Signature Packet (with nesting octet 0), One-Pass Signed Message, Corresponding Signature Packet.</t>
  <t>Singly One-Pass Signed Message:<br />
  One-Pass Signature Packet (with nesting octet 1), Literal Message, Corresponding Signature Packet.</t>
  <t>One-Pass Signed Message:<br />
  Multiply One-Pass Signed Message | Singly One-Pass Signed Message.</t>
  <t>Signed Message:<br />
  Prefixed Signed Message | One-Pass Signed Message.</t>
  <t>Optionally Signed Message:<br />
  Signed Message | Literal Message.</t>
  <t>Compressed Message:<br />
  Compressed Data Packet.</t>
  <t>Unencrypted Message:<br />
  Compressed Message | Optionally Signed Message.</t>
  <t>Optionally Padded Unencrypted Message:<br />
  Unencrypted Message | Unencrypted Message, Padding Packet.</t>
  <t>OpenPGP Message:<br />
  Encrypted Message | Unencrypted Message.</t>
</list></t>

<t>In addition to these rules, a Marker packet (<xref section="5.8" sectionFormat="of" target="RFC9580"/>) can appear anywhere in the sequence.</t>

</section>
<section anchor="encrypted-and-compressed-messages"><name>Encrypted and Compressed Messages</name>

<t><xref target="RFC9580"></xref> permits an encrypted message to contain another encrypted message, and a compressed message to contain another compressed message, possibly recursively.
Such messages require potentially unbounded resources for negligible added utility, and therefore <bcp14>MUST NOT</bcp14> be created.</t>

<t>In addition, encrypt-then-sign messages are not idiomatic OpenPGP, and <bcp14>MUST NOT</bcp14> be generated.</t>

<t>The guidance in <xref section="10.3.1" sectionFormat="of" target="RFC9580"/> is therefore updated to:</t>

<t><list style="symbols">
  <t>Decrypting a version 2 Symmetrically Encrypted and Integrity Protected Data packet <bcp14>MUST</bcp14> yield a valid Optionally Padded Unencrypted Message.</t>
  <t>Decrypting a version 1 Symmetrically Encrypted and Integrity Protected Data packet or -- for historic data -- a Symmetrically Encrypted Data packet <bcp14>MUST</bcp14> yield a valid Unencrypted Message.</t>
  <t>Decompressing a Compressed Data packet <bcp14>MUST</bcp14> yield a valid Optionally Signed Message.</t>
</list></t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>The OPS nesting octet is not signed over and is malleable in principle.
An intermediary could swap an outer OPS with its inner OPS by also swapping the nesting octets.
The order of OPS nesting therefore <bcp14>MUST NOT</bcp14> be considered meaningful.</t>

<t>In addition, the normalization applied during Literal Data signature calculation may result in semantic collisions.
It is possible to construct distinct sequences of packets that map to the same sequence of octets after Literal Data normalization is applied.
It is not known whether such a pair of colliding packet sequences might also have different semantics.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<section anchor="openpgp-packet-types-registry"><name>OpenPGP Packet Types Registry</name>

<t>IANA is requested to update the following existing entry in the registry, to add a reference to this document:</t>

<t><list style="symbols">
  <t>OPS Packet</t>
</list></t>

</section>
</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC9580">
  <front>
    <title>OpenPGP</title>
    <author fullname="P. Wouters" initials="P." role="editor" surname="Wouters"/>
    <author fullname="D. Huigens" initials="D." surname="Huigens"/>
    <author fullname="J. Winter" initials="J." surname="Winter"/>
    <author fullname="Y. Niibe" initials="Y." surname="Niibe"/>
    <date month="July" year="2024"/>
    <abstract>
      <t>This document specifies the message formats used in OpenPGP. OpenPGP provides encryption with public key or symmetric cryptographic algorithms, digital signatures, compression, and key management.</t>
      <t>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.</t>
      <t>This document obsoletes RFCs 4880 ("OpenPGP Message Format"), 5581 ("The Camellia Cipher in OpenPGP"), and 6637 ("Elliptic Curve Cryptography (ECC) in OpenPGP").</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9580"/>
  <seriesInfo name="DOI" value="10.17487/RFC9580"/>
</reference>

<reference anchor="I-D.gallagher-openpgp-signatures">
   <front>
      <title>OpenPGP Signatures and Signed Messages</title>
      <author fullname="Andrew Gallagher" initials="A." surname="Gallagher">
         <organization>PGPKeys.EU</organization>
      </author>
      <author fullname="Daniel Kahn Gillmor" initials="D. K." surname="Gillmor">
         <organization>ACLU</organization>
      </author>
      <date day="3" month="November" year="2025"/>
      <abstract>
	 <t>   This document specifies several updates and clarifications to the
   OpenPGP signature and message format specifications.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-gallagher-openpgp-signatures-02"/>
   
</reference>
<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>



    </references>

    <references title='Informative References' anchor="sec-informative-references">

<reference anchor="OPENPGPDEVBOOK" target="https://openpgp.dev/book/">
  <front>
    <title>OpenPGP for Application Developers</title>
    <author >
      <organization></organization>
    </author>
    <date year="2024" month="May" day="06"/>
  </front>
</reference>
<reference anchor="FINNEY1998" target="https://mailarchive.ietf.org/arch/msg/openpgp/U4Qg3Z9bj-RDgpwW5nmRNetOZKY/">
  <front>
    <title>Re: More spec-ulations - update</title>
    <author initials="H." surname="Finney" fullname="Hal Finney">
      <organization></organization>
    </author>
    <date year="1998" month="March" day="26"/>
  </front>
</reference>
<reference anchor="SCHAUB2022" target="https://mailarchive.ietf.org/arch/msg/openpgp/uepOF6XpSegMO4c59tt9e5H1i4g/">
  <front>
    <title>[openpgp] Proposing a Simplification of Message Syntax</title>
    <author initials="P." surname="Schaub" fullname="Paul Schaub">
      <organization></organization>
    </author>
    <date year="2022" month="October" day="07"/>
  </front>
</reference>


    </references>

</references>


<?line 234?>

<section anchor="acknowledgments"><name>Acknowledgments</name>

<t>This document would not have been possible without the extensive work of the authors of <xref target="OPENPGPDEVBOOK"></xref>.</t>

<t>The author would also like to thank Daniel Huigens, Daniel Kahn Gillmor, Heiko Schäfer, Neal Walfield, Justus Winter and Paul Schaub for additional discussions and suggestions.</t>

</section>


  </back>

<!-- ##markdown-source:
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

-->

</rfc>

