<?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.14 (Ruby 3.1.2) -->


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

]>


<rfc ipr="trust200902" docName="draft-ietf-openpgp-replacementkey-01" category="std" consensus="true" submissionType="IETF" updates="9580" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title>OpenPGP Key Replacement</title>

    <author fullname="Daphne Shaw">
      <organization>Jabberwocky Tech</organization>
      <address>
        <email>dshaw@jabberwocky.com</email>
      </address>
    </author>
    <author fullname="Andrew Gallagher" role="editor">
      <organization>PGPKeys.EU</organization>
      <address>
        <email>andrewg@andrewg.com</email>
      </address>
    </author>

    <date year="2024" month="October" day="21"/>

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

    <abstract>


<?line 34?>

<t>This document specifies a method in OpenPGP to suggest a replacement for an expired, revoked, or deprecated primary key.</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-replacementkey"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-openpgp-replacementkey/"/>.
      </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-replacementkey"/>.</t>
    </note>


  </front>

  <middle>


<?line 38?>

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

<t>The OpenPGP message format <xref target="RFC9580"></xref> defines two ways to invalidate a primary key.
One way is that the primary key may be explicitly revoked via a key revocation signature.
OpenPGP also supports the concept of key expiration, a date after which the key should not be used.
When a primary key is revoked or expires, very often there is another primary key that is intended to replace it.</t>

<t>A key owner may also create a new primary key that is intended to deprecate and replace their existing primary key, but without revoking or expiring that key.
This is useful during the rollout of new key versions and algorithms which may not (yet) enjoy universal support.
In such cases, a key owner may prefer that their correspondents use their new primary key, but if this is not possible for technical reasons they may continue to use the non-preferred key, which remains valid.</t>

<t>In the past some key owners have created key transition documents, which are signed, human-readable statements stating that a newer primary key should be preferred by their correspondents.
It is desirable that this process be automated through a standardised machine-readable mechanism.</t>

<t>This document is to specify the format of a Signature Subpacket to be optionally included in a revocation signature or direct self-signature over a primary key.
This subpacket contains a pointer to a suggested replacement for the primary key that is signed over, or a primary key for which the current primary key is the suggested replacement.
The corresponding replacement certificate may then be automatically retrieved and (if supported and validated) used instead of the original.</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 anchor="terminology"><name>Terminology</name>

<t>In OpenPGP, the term "key" has historically been used loosely to refer to several distinct concepts.
Care is therefore required when talking about "keys" in a non-specific sense.
In this document, we use the following convention:</t>

<t><list style="symbols">
  <t>"replacement primary key" and "original primary key" refer to a primary key as contained in a Transferable Public Key (certificate) or Transferable Secret Key.</t>
  <t>"target key" refers to either a replacement or original primary key that is referred to by a record in a Replacement Key subpacket.</t>
  <t>"current primary key" refers to the primary key that the self-signature currently under discussion belongs to.</t>
  <t>"replacement certificate", "original certificate" and "current certificate" refer to the TPK within which the corresponding primary key is distributed.</t>
</list></t>

</section>
</section>
<section anchor="replacement-key-subpacket"><name>The Replacement Key Subpacket</name>

<t>The Replacement Key subpacket is a Signature Subpacket (<xref target="RFC9580"></xref> section 5.2.3.7), and all general Signature Subpacket considerations from there apply here as well.
The value of the Signature Subpacket type octet for the Replacement Key subpacket is (insert this later).</t>

<t>A Preferred Key Server subpacket (<xref target="RFC9580"></xref> section 5.2.3.26) <bcp14>MAY</bcp14> be included in the revocation or direct key signature to recommend a location and method to fetch the replacement certificate.
Note however that since this subpacket automatically also applies to the current certificate, it cannot be used to set the replacement certificate's preferred keyserver to a different value than that of the current certificate.</t>

<t>To explicitly state that the current primary key has no replacement (or original), a Replacement Key subpacket with the "no replacement" bit set, and with no target key specified, is used (see below).
The absence of a Replacement Key subpacket <bcp14>SHOULD NOT</bcp14> be interpreted as meaning that there is no replacement (or original) for the current primary key.</t>

<t>The Replacement Key subpacket <bcp14>MUST</bcp14> only be used in the hashed subpackets area of a primary key revocation or direct key signature.</t>

</section>
<section anchor="replacement-key-subpacket-format"><name>Format of the Replacement Key Subpacket</name>

<t>The format of the Replacement Key subpacket is:</t>

<texttable title="Replacement Key Subpacket Fields" anchor="replacement-key-subpacket-fields">
      <ttcol align='left'>Octets</ttcol>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Notes</ttcol>
      <c>1</c>
      <c>Class</c>
      <c>&#160;</c>
      <c>1</c>
      <c>Record length (1)</c>
      <c>optional</c>
      <c>1</c>
      <c>Target Key Version (1)</c>
      <c>optional</c>
      <c>N1</c>
      <c>Target Key Fingerprint (1)</c>
      <c>optional</c>
      <c>M</c>
      <c>Target Key Imprint (1)</c>
      <c>optional</c>
      <c>1</c>
      <c>Record length (2)</c>
      <c>optional</c>
      <c>1</c>
      <c>Target Key Version (2)</c>
      <c>optional</c>
      <c>N2</c>
      <c>Target Key Fingerprint (2)</c>
      <c>optional</c>
      <c>M</c>
      <c>Target Key Imprint (2)</c>
      <c>optional</c>
      <c>...</c>
      <c>...</c>
      <c>...</c>
</texttable>

<t>The class octet contains flags that indicate the form and semantics of the subpacket:</t>

<texttable title="Replacement Key Subpacket Flags" anchor="replacement-key-subpacket-flags">
      <ttcol align='left'>Flag bit</ttcol>
      <ttcol align='left'>Flag name</ttcol>
      <ttcol align='left'>Form of remainder of packet</ttcol>
      <c>0x80</c>
      <c>No replacement</c>
      <c>No optional fields</c>
      <c>0x40</c>
      <c>Inverse relationship</c>
      <c>Multiple targets may be given</c>
</texttable>

<t>The 0x80 bit of the class octet is the "no replacement" bit.
When set, this explicitly specifies there is neither a replacement nor an original primary key for the current primary key.</t>

<t>The 0x40 bit of the class octet is the "inverse relationship" bit.
When set, this means that the target key(s) identified by the packet are the primary keys for which the current primary key is the replacement primary key.</t>

<t>All other bits of the class octet are currently undefined and <bcp14>MUST</bcp14> be set to zero.
An implementation that encounters a class octet that has other bits set <bcp14>MUST</bcp14> disregard that Replacement Key subpacket.</t>

<t>Note that if the critical bit on the Replacement Key subpacket is set, a receiving implementation could consider the whole self-signature to be in error (<xref target="RFC9580"></xref> section 5.2.3.7).
The critical bit therefore <bcp14>SHOULD NOT</bcp14> be set on the Replacement Key subpacket.</t>

<t>The remainder of the subpacket contains zero or more target records of the form ( Record Length || Target Key Version || Target Key Fingerprint || Target Key Imprint ).
The Record Length field indicates the length of the next three fields; a pointer incremented by this length will skip to the beginning of the next record.</t>

<t><list style="symbols">
  <t>If the class octet has the 0x80 bit set, the subpacket <bcp14>MUST</bcp14> contain zero target records.</t>
  <t>Otherwise, if the class octet does not have the 0x40 bit set, the subpacket <bcp14>MUST</bcp14> contain exactly one target record to identify the replacement primary key.</t>
  <t>Otherwise, if the class octet has the 0x40 bit set, the subpacket <bcp14>MUST</bcp14> contain one or more target records, to identify the original primary keys that the current primary key is a replacement for.</t>
</list></t>

<t>If present, the length of the Target Key Fingerprint field (N) <bcp14>MUST</bcp14> equal the fingerprint length corresponding to the immediately preceding Target Key Version field, e.g.
20 octets for version 4, or 32 octets for version 6.
If present, the length of the Target Key Imprint field (M) <bcp14>MUST</bcp14> equal the length of the output of the digest algorithm used by the enclosing signature, e.g.
32 octets for SHA2-256.</t>

<t>If the intent is to state that the replacement (or original) primary key is unknown, then no Replacement Key subpacket should be included in the signature.</t>

<section anchor="key-imprints"><name>Key Imprints</name>

<t>An imprint of a public key packet is a generalisation of a fingerprint.
It is calculated in the same way as the fingerprint, except that it <bcp14>MAY</bcp14> use a digest algorithm other than the one specified for the fingerprint.
Conversely, the fingerprint of a public key packet can be considered a special case of an imprint.
A public key packet has only one fingerprint, but may have any number of imprints, each using a different digest algorithm.</t>

<t>When used in a Replacement Key subpacket, an imprint <bcp14>MUST</bcp14> use the same digest algorithm as the enclosing signature.
This guards against key-substitution attacks when referring to keys that use weaker digest algorithms in their fingerprints.
If the signature's digest algorithm is the same as that used by the fingerprint, then the imprint and the fingerprint will be identical.
In such a case, the imprint <bcp14>MUST</bcp14> still be included for parsing reasons.</t>

</section>
<section anchor="graph-topology"><name>Graph Topology</name>

<t>A given signature <bcp14>MUST</bcp14> contain at most one Replacement Key subpacket.
If a signature contains more than one such subpacket, a receiving implementation <bcp14>MUST</bcp14> disregard them all.
This imposes a simple graph topology:</t>

<t><list style="symbols">
  <t>An original certificate <bcp14>MUST NOT</bcp14> claim to have more than one replacement.</t>
  <t>An original certificate that claims to have a replacement <bcp14>MUST NOT</bcp14> claim to be the replacement for any other(s).</t>
</list></t>

<t>In addition, the order of the original primary keys specified in an inverse-relationship Replacement Key subpacket is meaningful.
If a replacement primary key is supported by a receiving implementation, but is not usable for the desired purpose (for example, it may not have an encryption-capable subkey), the implementation <bcp14>MAY</bcp14> use the ordering of the original primary keys in its inverse Replacement Key subpacket (if one exists) to indicate which original primary key is preferred as a fallback.
The original primary keys <bcp14>SHOULD</bcp14> therefore be listed in order of decreasing preference.</t>

</section>
</section>
<section anchor="replacement-key-subpacket-trust"><name>Trust and Validation of the Replacement Key Subpacket</name>

<section anchor="key-equivalence-binding"><name>Key Equivalence Binding</name>

<t>The existence of a matching pair of forward and inverse Replacement Key subpackets on the most recent direct self-signatures (or key revocations) over two primary keys, with each referring to the other primary key, forms a Key Equivalence Binding.
If one primary key is validated for use in a particular context, then a bound-equivalent primary key and its subkeys are also valid, regardless of any User ID certifications over the second primary key (or lack thereof).</t>

<t>The equivalence binding is invalidated under the following circumstances:</t>

<t><list style="symbols">
  <t>if either primary key is hard-revoked.</t>
  <t>if either primary key overrides the equivalence binding with a new direct self-signature that a) does not contain a Replacement Key subpacket, or b) contains a Replacement Key subpacket that does not refer to the other key.</t>
  <t>if either signature that forms the equivalence binding has expired.</t>
</list></t>

<t>Note however:</t>

<t><list style="symbols">
  <t>If either primary key is soft-revoked or expired, the equivalence binding is unaffected.</t>
  <t>If either primary key is hard-revoked, then the equivalence binding is invalidated and the other key is unaffected.</t>
  <t>Other properties (such as expiry dates, usage preferences, custom notations) <bcp14>SHOULD NOT</bcp14> be applied across the equivalence binding.</t>
  <t>Key Equivalence is transitive; if A is equivalent to B and B is equivalent to C, then A is equivalent to C.</t>
</list></t>

<t>If two or more primary keys are bound-equivalent, they <bcp14>MUST</bcp14> be treated as a single key for the purposes of the Web of Trust, particularly when calculating partial trust values.</t>

</section>
<section anchor="without-a-key-equivalence-binding"><name>Without a Key Equivalence Binding</name>

<t>The Replacement Key subpacket <bcp14>MUST NOT</bcp14> be treated as a Web of Trust certification over either the current or replacement primary key.
In the absence of a Key Equivalence Binding, a receiving implementation <bcp14>SHOULD</bcp14> validate the replacement certificate as they would any other.
If the replacement certificate is supported, and validates successfully, it <bcp14>SHOULD</bcp14> be preferred over the current certificate when determining which one to use for correspondence.</t>

<t>It is also suggested that the key owner asks the third parties who certified their original primary key to certify the replacement primary key.
Distribution of the replacement certificate over a trusted mechanism (such as WKD) <bcp14>MAY</bcp14> also be used to confer legitimacy.</t>

</section>
</section>
<section anchor="selection-of-encryption-subkeys"><name>Selection of Encryption Subkeys</name>

<t>If a replacement certificate has been validated, whether through key equivalence or other means, correspondents <bcp14>SHOULD</bcp14> assign it preference over the current certificate.
When a correspondent of the key owner selects subkeys for encryption, the subkeys of the replacement primary key <bcp14>SHOULD</bcp14> therefore be considered first.
If there are no usable subkeys on the replacement primary key, then:</t>

<t><list style="symbols">
  <t>If there is an equivalence binding, the subkeys of the first listed original primary key <bcp14>SHOULD</bcp14> be considered next.
  If none of those are usable, then the subkeys of the next original primary key (if any) <bcp14>SHOULD</bcp14> be considered, and so forth.</t>
  <t>If there is no equivalence binding, the subkeys of the current primary key <bcp14>SHOULD</bcp14> be used.</t>
</list></t>

</section>
<section anchor="replacement-key-subpacket-placement"><name>Placement of the Replacement Key Subpacket</name>

<t>The Replacement Key subpacket is only meaningful on a primary key revocation or direct key signature, and <bcp14>MUST NOT</bcp14> appear elsewhere.
The Replacement Key subpacket <bcp14>MUST</bcp14> be placed in the hashed subpackets area of the signature to prevent a possible key substitution attack.
If the Replacement Key subpacket was allowed in the unhashed subpackets area, an attacker could add a bogus Replacement Key subpacket to an existing signature.</t>

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

<t>A Key Equivalence Binding requires the active consent of both primary key owners.
This is to prevent one key owner from unilaterally claiming signatures made by the other key owner, using the same argument that motivates the embedded Primary Key Binding signature in a signing-capable subkey's binding signature.</t>

<t>The Target Key Imprint is included to mitigate against weaknesses in the fingerprint digest algorithm used by older key versions.
By including a digest over the target primary public key packet, using the same digest algorithm as the enclosing signature, we ensure that the indirect cryptographic binding between the equivalent keys is of the same overall strength as a signature made directly over the target primary public key (as in a certification signature or subkey binding signature).
We intentionally chose not to use embedded back-signatures or third-party certifications, both to keep the design simple and to limit the size of the subpacket(s) required.</t>

<t>In the absence of a complete Key Equivalence Binding, the Replacement Key subpacket <bcp14>MUST</bcp14> be treated as merely advisory.
In this scenario, it provides information for the purposes of key discovery and order of preference only, without any trust statement regarding the replacement.
Implementations <bcp14>SHOULD NOT</bcp14> infer any trust value from a single Replacement Key subpacket, and <bcp14>SHOULD</bcp14> validate the replacement certificate as they would any other.</t>

<t>In addition, as this document is an update of <xref target="RFC9580"></xref>, the security considerations there should be carefully reviewed.</t>

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

<t>This document requests that the following entry be added to the OpenPGP Signature Subpacket registry:</t>

<texttable title="Signature Subpacket Registry" anchor="signature-subpacket-registry">
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Specification</ttcol>
      <c>TBC</c>
      <c>Replacement Key</c>
      <c>This document</c>
</texttable>

</section>


  </middle>

  <back>


    <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="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>



<?line 253?>

<section anchor="example-workflows"><name>Example Workflows</name>

<section anchor="alice-revokes-her-primary-key"><name>Alice Revokes her Primary Key</name>

<t><list style="symbols">
  <t>Bob wants to send Alice a message; Bob has Alice's original certificate but they have not corresponded for some time.</t>
  <t>Bob's client refreshes Alice’s original certificate from a keyserver (by primary key fingerprint); it contains a revocation signature with a Replacement Key subpacket.</t>
  <t>Bob's client looks up Alice’s replacement certificate on a keyserver (by primary key fingerprint); it is certified by the same people that certified her original (some of whom Bob may trust) and/or Alice’s original itself (which Bob's policy may consider sufficient).</t>
  <t>Bob's client uses Alice’s replacement certificate instead of the original certificate.</t>
</list></t>

<t>There are other means to achieve a similar result, such as WKD or Autocrypt, but they may not be available.
For example, Alice’s service provider may not support WKD, and Alice may not have sent Bob an autocrypt message since revoking her original primary key.</t>

</section>
<section anchor="alice-creates-a-v6-primary-key"><name>Alice Creates a V6 Primary Key</name>

<t><list style="symbols">
  <t>Bob wants to send Alice a message and has Alice's v4 original certificate.</t>
  <t>Either Bob's copy of Alice's original certificate already has the Replacement Key subpacket pointing to a v6 primary key, or Bob refreshes Alice's original certificate from a keyserver and sees a new Replacement Key subpacket.</t>
  <t>If Bob has a v6 implementation, it can proceed with fetching Alice's v6 replacement certificate, validating it, etc, and then use it to send his message to Alice.</t>
  <t>If Bob doesn't have a v6 implementation, it can continue to use Alice's v4 original certificate.</t>
</list></t>

<t>WKD does not currently allow more than one valid certificate to be returned for a query, therefore it cannot easily support this use case.</t>

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

<t>The authors would like to thank Bart Butler, Kai Engert, Daniel Kahn Gillmor, Daniel Huigens, Simon Josefsson, Heiko Schäfer, Falko Strenzke, Justus Winter and Aron Wussler for suggestions and discussions.</t>

</section>
<section anchor="document-history"><name>Document History</name>

<t>Note to RFC Editor: this section should be removed before publication.</t>

<section anchor="changes-between-00-and-01"><name>Changes Between -00 and -01</name>

<t><list style="symbols">
  <t>Updated references to RFC9580.</t>
  <t>Removed subpacket version octet.</t>
  <t>Added guidance for encryption subkey selection.</t>
  <t>Added record length fields.</t>
  <t>Renamed to "OpenPGP Key Replacement" and normalised terminology.</t>
</list></t>

</section>
<section anchor="changes-between-draft-gallagher-openpgp-replacementkey-02-and-draft-ietf-openpgp-replacementkey-00"><name>Changes Between draft-gallagher-openpgp-replacementkey-02 and draft-ietf-openpgp-replacementkey-00</name>

<t><list style="symbols">
  <t>Standardised capitalisation and terminology.</t>
</list></t>

</section>
<section anchor="changes-between-01-and-02"><name>Changes Between -01 and -02</name>

<t><list style="symbols">
  <t>Specified Public Key Imprints.</t>
  <t>Specified inverse relationship flag and packet format.</t>
  <t>Restricted graph topology.</t>
  <t>Specified Key Equivalence Binding.</t>
  <t>Guidance re subpacket placement escalated from <bcp14>SHOULD</bcp14> to <bcp14>MUST</bcp14>, and critical bit to <bcp14>SHOULD NOT</bcp14>.</t>
</list></t>

</section>
<section anchor="changes-between-00-and-01-1"><name>Changes Between -00 and -01</name>

<t><list style="symbols">
  <t>Added example workflows.</t>
  <t>Specifically describe "deprecation without expiry or revocation" use case.</t>
  <t>Add note about weakness of signatures over fingerprints.</t>
  <t>Miscellaneous clarifications.</t>
</list></t>

</section>
<section anchor="changes-between-draft-shaw-openpgp-replacementkey-00-and-draft-gallagher-openpgp-replacementkey-00"><name>Changes Between draft-shaw-openpgp-replacementkey-00 and draft-gallagher-openpgp-replacementkey-00</name>

<t><list style="symbols">
  <t>Changed <spanx style="verb">algid</spanx> octet to <spanx style="verb">key version</spanx> octet.</t>
  <t>Changed initial subpacket version number to 1.</t>
  <t>Clarified semantics of some edge cases.</t>
</list></t>

</section>
</section>


  </back>

<!-- ##markdown-source:
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
EEWaANbMTFjy/wLbuqkpIkwAAA==

-->

</rfc>

