<?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-ietf-openpgp-replacementkey-08" 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="2026" month="May" day="29"/>

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

    <abstract>


<?line 48?>

<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 52?>

<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 (now deprecated) primary key that is signed over, or one or more (deprecated) primary keys for which the current primary key is the suggested replacement.
The replacement certificate may then be automatically retrieved by the key owner's correspondents and (if supported and validated) used instead of the deprecated certificate.</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 often been used broadly to describe different concepts, which can lead to confusion.
To avoid ambiguity in this document, we define the following terms:</t>

<t><list style="symbols">
  <t>"Replacement Primary Key" and "Deprecated Primary Key": These refer to a primary key as contained in an OpenPGP Certificate (<xref section="10.1" sectionFormat="of" target="RFC9580"/>) or Transferable Secret Key (<xref section="10.2" sectionFormat="of" target="RFC9580"/>).</t>
  <t>"Target Key": This refers to either a replacement or deprecated primary key that is referenced in a Replacement Key subpacket.</t>
  <t>"Current Primary Key": This refers to the primary key that contains the self-signature being discussed.</t>
  <t>"Replacement Certificate", "Deprecated Certificate" and "Current Certificate": These refer to the certificate that contains the respective primary key.</t>
</list></t>

<t>The term "OpenPGP Certificate", or just "certificate", is used in this document interchangeably with "OpenPGP Transferable Public Key".</t>

<t>This document also introduces the following terms:</t>

<t><list style="symbols">
  <t>An "identity" is any identifying label such as an email address or "real name"; it is not limited to User IDs, for example it may be a record in a local database.</t>
  <t>An "identity claim" is any statement, explicit or implied, that an identity belongs to a particular primary key; it does not need to be a certification signature, and is not necessarily true.</t>
  <t>An "identity link" is an identity claim that is considered to be true and accurate by the receiving implementation.</t>
  <t>An "Identity Equivalence Binding" is a doubly-linked, directed relationship between two primary keys, one of which is the stated replacement for the other.</t>
  <t>An "Identity Equivalence Set" is a collection of two or more primary keys whose Identity Equivalence Bindings form a maximal connected graph.</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 as specified in <xref section="5.2.3.7" sectionFormat="of" target="RFC9580"/>, 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 100 (TEMPORARY, permanent code point TBC).</t>

<t>The Replacement Key subpacket is a statement by the key owner that either:</t>

<t><list style="symbols">
  <t>The current primary key is replaced by another primary key.</t>
  <t>The current primary key is the replacement for one or more deprecated primary key(s).</t>
</list></t>

<t>Use of the Replacement Key subpacket is optional.
The absence of a Replacement Key subpacket <bcp14>SHOULD NOT</bcp14> be interpreted as meaning that there is no replacement or deprecated primary key(s) relating to 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 <xref section="5.2.1.11" sectionFormat="of" target="RFC9580"/> or Direct Key signature <xref section="5.2.1.10" sectionFormat="of" target="RFC9580"/>.
A receiving implementation <bcp14>MUST</bcp14> ignore any Replacement Key subpacket found elsewhere.</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>&#160;</c>
      <c>1</c>
      <c>Target Key Version (1)</c>
      <c>&#160;</c>
      <c>N1</c>
      <c>Target Key Fingerprint (1)</c>
      <c>&#160;</c>
      <c>M</c>
      <c>Target Key Imprint (1)</c>
      <c>&#160;</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>0x01</c>
      <c>Backward reference(s)</c>
      <c>Multiple targets may be given</c>
</texttable>

<t>The 0x01 bit of the class octet is the "backward reference(s)" 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.
Otherwise, the subpacket represents a forward reference and the target key is the replacement primary key for the current primary key.</t>

<t>All other flag bits of the class octet are currently undefined.
All undefined flags <bcp14>MUST</bcp14> be zeroed when generating the class octet.
An implementation that encounters a class octet with nonzero bits that it does not recognise <bcp14>MUST</bcp14> ignore those bits.</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 section="5.2.3.7" sectionFormat="of" target="RFC9580"/>).
The critical bit therefore <bcp14>SHOULD NOT</bcp14> be set on the Replacement Key subpacket.</t>

<t>The remainder of the subpacket contains one or more target records of the form:</t>

<figure><artwork><![CDATA[
( Record Length || Target Key Version || Target Key Fingerprint || Target Key Imprint )
]]></artwork></figure>

<t>The Record Length field contains a one-octet number which indicates the length of the next three fields in octets.
If a receiving implementation does not understand the target key version, it <bcp14>SHOULD</bcp14> ignore the target record and skip to the next.
The Record Length field is authoritative, and a receiving implementation <bcp14>MUST NOT</bcp14> infer the length of a target record by any other means.
If the Record Length field indicates that a target record contains more octets than expected, a receiving implementation <bcp14>MUST</bcp14> ignore any trailing extra octets.
If a target record contains fewer octets than expected, it is malformed and <bcp14>MUST</bcp14> be ignored.</t>

<t><list style="symbols">
  <t>If the class octet does not have the 0x01 bit set, the subpacket <bcp14>MUST</bcp14> contain exactly one target record to identify the replacement primary key.</t>
  <t>If the class octet has the 0x01 bit set, the subpacket contains one or more target records, to identify the deprecated primary key(s) that the current primary key is a replacement for.</t>
</list></t>

<t>If a subpacket contains an unexpected number of target records, it is malformed and <bcp14>MUST</bcp14> be ignored.</t>

<t>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.
The length of the Target Key Imprint field (M) <bcp14>MUST</bcp14> equal the length of the output of the digest algorithm specified in <xref target="imprint-digest-algorithms"/>, e.g. 32 octets for SHA3-256.</t>

<t>If a replacement or deprecated primary key is unknown, then a Replacement Key subpacket <bcp14>SHOULD NOT</bcp14> be included in the signature.</t>

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

<t>An imprint of a public key packet is a generalization of a fingerprint.
It is a digest calculated over the same normalized octet sequence that the fingerprint is calculated over, except that it may 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>

<section anchor="imprint-digest-algorithms"><name>Imprint Digest Algorithms in the Replacement Key Subpacket</name>

<t>When used in a Replacement Key subpacket, the Target Key Imprint is calculated using SHA3-256 (<xref section="9.5" sectionFormat="of" target="RFC9580"/>) for all target keys of version 6 or less.
This guards against a key-substitution attack when referring to a key that uses a weaker digest algorithm in its fingerprint.
The use of distinct algorithm families for the fingerprint and imprint also provides robustness against future attacks against either of the digest constructions.</t>

<t>A receiving implementation <bcp14>MAY</bcp14> use the fingerprint to locate a target key, but <bcp14>MUST</bcp14> verify that the imprint matches.</t>

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

<t>A given signature <bcp14>MUST</bcp14> contain at most one Replacement Key subpacket in its hashed subpacket area.
If a signature contains more than one such subpacket, even if malformed, a receiving implementation <bcp14>MUST</bcp14> disregard them all.</t>

<t>A certificate <bcp14>MAY</bcp14> have multiple signatures that contain Replacement Key subpackets, however at most one Replacement Key subpacket in a certificate is current (and therefore meaningful) at any given time.
If the primary key is revoked with a Reason for Revocation of "Key is superseded" <xref section="5.2.3.31" sectionFormat="of" target="RFC9580"/>, the current Replacement Key subpacket (if any) is found in the most recent valid Key Revocation signature.
If it is not revoked, the current Replacement Key subpacket (if any) is found in the most recent valid Direct Key signature.
If the most recent valid Key Revocation or Direct Key signature does not contain a Replacement Key subpacket, or the primary key is revoked with any other Reason for Revocation, then there is no current Replacement Key subpacket.</t>

<t>This imposes a simple graph topology:</t>

<t><list style="symbols">
  <t>A deprecated certificate <bcp14>MUST NOT</bcp14> claim to have more than one replacement.</t>
  <t>A deprecated 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 deprecated primary keys specified in a backward-reference 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 deprecated primary keys in its backward Replacement Key subpacket (if one exists) to indicate which deprecated primary key is preferred as a fallback.
The deprecated primary keys <bcp14>SHOULD</bcp14> therefore be listed in order of decreasing preference.</t>

<figure title="Example Topology of Replacement Key Subpackets"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="576" width="608" viewBox="0 0 608 576" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 8,112 L 8,208" fill="none" stroke="black"/>
<path d="M 8,256 L 8,352" fill="none" stroke="black"/>
<path d="M 8,400 L 8,496" fill="none" stroke="black"/>
<path d="M 24,128 L 24,208" fill="none" stroke="black"/>
<path d="M 24,272 L 24,352" fill="none" stroke="black"/>
<path d="M 24,416 L 24,496" fill="none" stroke="black"/>
<path d="M 184,128 L 184,208" fill="none" stroke="black"/>
<path d="M 184,272 L 184,352" fill="none" stroke="black"/>
<path d="M 184,416 L 184,496" fill="none" stroke="black"/>
<path d="M 200,112 L 200,208" fill="none" stroke="black"/>
<path d="M 200,256 L 200,352" fill="none" stroke="black"/>
<path d="M 200,400 L 200,496" fill="none" stroke="black"/>
<path d="M 408,48 L 408,528" fill="none" stroke="black"/>
<path d="M 424,64 L 424,528" fill="none" stroke="black"/>
<path d="M 584,64 L 584,528" fill="none" stroke="black"/>
<path d="M 600,48 L 600,528" fill="none" stroke="black"/>
<path d="M 424,32 L 584,32" fill="none" stroke="black"/>
<path d="M 424,64 L 584,64" fill="none" stroke="black"/>
<path d="M 24,96 L 184,96" fill="none" stroke="black"/>
<path d="M 456,112 L 552,112" fill="none" stroke="black"/>
<path d="M 24,128 L 184,128" fill="none" stroke="black"/>
<path d="M 216,128 L 440,128" fill="none" stroke="black"/>
<path d="M 456,144 L 552,144" fill="none" stroke="black"/>
<path d="M 56,160 L 152,160" fill="none" stroke="black"/>
<path d="M 168,176 L 392,176" fill="none" stroke="black"/>
<path d="M 56,192 L 152,192" fill="none" stroke="black"/>
<path d="M 24,208 L 184,208" fill="none" stroke="black"/>
<path d="M 24,224 L 184,224" fill="none" stroke="black"/>
<path d="M 24,240 L 184,240" fill="none" stroke="black"/>
<path d="M 456,256 L 552,256" fill="none" stroke="black"/>
<path d="M 24,272 L 184,272" fill="none" stroke="black"/>
<path d="M 216,272 L 440,272" fill="none" stroke="black"/>
<path d="M 456,288 L 552,288" fill="none" stroke="black"/>
<path d="M 56,304 L 152,304" fill="none" stroke="black"/>
<path d="M 168,320 L 392,320" fill="none" stroke="black"/>
<path d="M 56,336 L 152,336" fill="none" stroke="black"/>
<path d="M 24,352 L 184,352" fill="none" stroke="black"/>
<path d="M 24,368 L 184,368" fill="none" stroke="black"/>
<path d="M 24,384 L 184,384" fill="none" stroke="black"/>
<path d="M 456,400 L 552,400" fill="none" stroke="black"/>
<path d="M 24,416 L 184,416" fill="none" stroke="black"/>
<path d="M 216,416 L 440,416" fill="none" stroke="black"/>
<path d="M 456,432 L 552,432" fill="none" stroke="black"/>
<path d="M 56,448 L 152,448" fill="none" stroke="black"/>
<path d="M 168,464 L 392,464" fill="none" stroke="black"/>
<path d="M 56,480 L 152,480" fill="none" stroke="black"/>
<path d="M 24,496 L 184,496" fill="none" stroke="black"/>
<path d="M 24,512 L 184,512" fill="none" stroke="black"/>
<path d="M 424,528 L 584,528" fill="none" stroke="black"/>
<path d="M 424,544 L 584,544" fill="none" stroke="black"/>
<path d="M 424,32 C 415.16936,32 408,39.16936 408,48" fill="none" stroke="black"/>
<path d="M 584,32 C 592.83064,32 600,39.16936 600,48" fill="none" stroke="black"/>
<path d="M 24,96 C 15.16936,96 8,103.16936 8,112" fill="none" stroke="black"/>
<path d="M 184,96 C 192.83064,96 200,103.16936 200,112" fill="none" stroke="black"/>
<path d="M 456,112 C 447.16936,112 440,119.16936 440,128" fill="none" stroke="black"/>
<path d="M 552,112 C 560.83064,112 568,119.16936 568,128" fill="none" stroke="black"/>
<path d="M 456,144 C 447.16936,144 440,136.83064 440,128" fill="none" stroke="black"/>
<path d="M 552,144 C 560.83064,144 568,136.83064 568,128" fill="none" stroke="black"/>
<path d="M 56,160 C 47.16936,160 40,167.16936 40,176" fill="none" stroke="black"/>
<path d="M 152,160 C 160.83064,160 168,167.16936 168,176" fill="none" stroke="black"/>
<path d="M 56,192 C 47.16936,192 40,184.83064 40,176" fill="none" stroke="black"/>
<path d="M 152,192 C 160.83064,192 168,184.83064 168,176" fill="none" stroke="black"/>
<path d="M 24,224 C 15.16936,224 8,216.83064 8,208" fill="none" stroke="black"/>
<path d="M 184,224 C 192.83064,224 200,216.83064 200,208" fill="none" stroke="black"/>
<path d="M 24,240 C 15.16936,240 8,247.16936 8,256" fill="none" stroke="black"/>
<path d="M 184,240 C 192.83064,240 200,247.16936 200,256" fill="none" stroke="black"/>
<path d="M 456,256 C 447.16936,256 440,263.16936 440,272" fill="none" stroke="black"/>
<path d="M 552,256 C 560.83064,256 568,263.16936 568,272" fill="none" stroke="black"/>
<path d="M 456,288 C 447.16936,288 440,280.83064 440,272" fill="none" stroke="black"/>
<path d="M 552,288 C 560.83064,288 568,280.83064 568,272" fill="none" stroke="black"/>
<path d="M 56,304 C 47.16936,304 40,311.16936 40,320" fill="none" stroke="black"/>
<path d="M 152,304 C 160.83064,304 168,311.16936 168,320" fill="none" stroke="black"/>
<path d="M 56,336 C 47.16936,336 40,328.83064 40,320" fill="none" stroke="black"/>
<path d="M 152,336 C 160.83064,336 168,328.83064 168,320" fill="none" stroke="black"/>
<path d="M 24,368 C 15.16936,368 8,360.83064 8,352" fill="none" stroke="black"/>
<path d="M 184,368 C 192.83064,368 200,360.83064 200,352" fill="none" stroke="black"/>
<path d="M 24,384 C 15.16936,384 8,391.16936 8,400" fill="none" stroke="black"/>
<path d="M 184,384 C 192.83064,384 200,391.16936 200,400" fill="none" stroke="black"/>
<path d="M 456,400 C 447.16936,400 440,407.16936 440,416" fill="none" stroke="black"/>
<path d="M 552,400 C 560.83064,400 568,407.16936 568,416" fill="none" stroke="black"/>
<path d="M 456,432 C 447.16936,432 440,424.83064 440,416" fill="none" stroke="black"/>
<path d="M 552,432 C 560.83064,432 568,424.83064 568,416" fill="none" stroke="black"/>
<path d="M 56,448 C 47.16936,448 40,455.16936 40,464" fill="none" stroke="black"/>
<path d="M 152,448 C 160.83064,448 168,455.16936 168,464" fill="none" stroke="black"/>
<path d="M 56,480 C 47.16936,480 40,472.83064 40,464" fill="none" stroke="black"/>
<path d="M 152,480 C 160.83064,480 168,472.83064 168,464" fill="none" stroke="black"/>
<path d="M 24,512 C 15.16936,512 8,504.83064 8,496" fill="none" stroke="black"/>
<path d="M 184,512 C 192.83064,512 200,504.83064 200,496" fill="none" stroke="black"/>
<path d="M 424,544 C 415.16936,544 408,536.83064 408,528" fill="none" stroke="black"/>
<path d="M 584,544 C 592.83064,544 600,536.83064 600,528" fill="none" stroke="black"/>
<polygon class="arrowhead" points="400,464 388,458.4 388,469.6" fill="black" transform="rotate(0,392,464)"/>
<polygon class="arrowhead" points="400,320 388,314.4 388,325.6" fill="black" transform="rotate(0,392,320)"/>
<polygon class="arrowhead" points="400,176 388,170.4 388,181.6" fill="black" transform="rotate(0,392,176)"/>
<polygon class="arrowhead" points="224,416 212,410.4 212,421.6" fill="black" transform="rotate(180,216,416)"/>
<polygon class="arrowhead" points="224,272 212,266.4 212,277.6" fill="black" transform="rotate(180,216,272)"/>
<polygon class="arrowhead" points="224,128 212,122.4 212,133.6" fill="black" transform="rotate(180,216,128)"/>
<g class="text">
<text x="464" y="52">Replacement</text>
<text x="532" y="52">Cert</text>
<text x="468" y="84">Backward</text>
<text x="524" y="84">RKSP</text>
<text x="60" y="116">Deprecated</text>
<text x="124" y="116">Cert</text>
<text x="152" y="116">1</text>
<text x="476" y="132">Target</text>
<text x="532" y="132">Record</text>
<text x="64" y="148">Forward</text>
<text x="116" y="148">RKSP</text>
<text x="356" y="148">&quot;Replaces&quot;</text>
<text x="76" y="180">Target</text>
<text x="132" y="180">Record</text>
<text x="248" y="196">&quot;Replaced</text>
<text x="304" y="196">by&quot;</text>
<text x="60" y="260">Deprecated</text>
<text x="124" y="260">Cert</text>
<text x="152" y="260">2</text>
<text x="476" y="276">Target</text>
<text x="532" y="276">Record</text>
<text x="64" y="292">Forward</text>
<text x="116" y="292">RKSP</text>
<text x="356" y="292">&quot;Replaces&quot;</text>
<text x="76" y="324">Target</text>
<text x="132" y="324">Record</text>
<text x="248" y="340">&quot;Replaced</text>
<text x="304" y="340">by&quot;</text>
<text x="60" y="404">Deprecated</text>
<text x="124" y="404">Cert</text>
<text x="152" y="404">3</text>
<text x="476" y="420">Target</text>
<text x="532" y="420">Record</text>
<text x="64" y="436">Forward</text>
<text x="116" y="436">RKSP</text>
<text x="356" y="436">&quot;Replaces&quot;</text>
<text x="76" y="468">Target</text>
<text x="132" y="468">Record</text>
<text x="248" y="484">&quot;Replaced</text>
<text x="304" y="484">by&quot;</text>
<text x="28" y="564">&quot;RKSP&quot;</text>
<text x="64" y="564">=</text>
<text x="120" y="564">Replacement</text>
<text x="184" y="564">Key</text>
<text x="240" y="564">Subpacket</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
                                                   .---------------------.
                                                  | Replacement Cert      |
                                                  | +-------------------+ |
                                                  | | Backward RKSP     | |
 .---------------------.                          | |                   | |
| Deprecated Cert 1     |                         | |  .-------------.  | |
| +-------------------+ | <-----------------------+-+-+ Target Record | | |
| | Forward RKSP      | |              "Replaces" | |  '-------------'  | |
| |  .-------------.  | |                         | |                   | |
| | | Target Record +-+-+-----------------------> | |                   | |
| |  '-------------'  | | "Replaced by"           | |                   | |
| +-------------------+ |                         | |                   | |
 '---------------------'                          | |                   | |
 .---------------------.                          | |                   | |
| Deprecated Cert 2     |                         | |  .-------------.  | |
| +-------------------+ | <-----------------------+-+-+ Target Record | | |
| | Forward RKSP      | |              "Replaces" | |  '-------------'  | |
| |  .-------------.  | |                         | |                   | |
| | | Target Record +-+-+-----------------------> | |                   | |
| |  '-------------'  | | "Replaced by"           | |                   | |
| +-------------------+ |                         | |                   | |
 '---------------------'                          | |                   | |
 .---------------------.                          | |                   | |
| Deprecated Cert 3     |                         | |  .-------------.  | |
| +-------------------+ | <-----------------------+-+-+ Target Record | | |
| | Forward RKSP      | |              "Replaces" | |  '-------------'  | |
| |  .-------------.  | |                         | |                   | |
| | | Target Record +-+-+-----------------------> | |                   | |
| |  '-------------'  | | "Replaced by"           | |                   | |
| +-------------------+ |                         | |                   | |
 '---------------------'                          | |                   | |
                                                  | +-------------------+ |
                                                   '---------------------'
"RKSP" = Replacement Key Subpacket
]]></artwork></artset></figure>

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

<t>The relationships expressed by Replacement Key subpackets may be either singly- or doubly-linked.
Doubly-linked Replacement Key subpackets have a more consequential interpretation.
If a Replacement Key subpacket is found in a Key Revocation signature, then the Reason for Revocation subpacket provides crucial additional context.</t>

<section anchor="identity-equivalence-binding"><name>Identity Equivalence Binding</name>

<t>The existence of a matching pair of forward- and backward-reference 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 an Identity Equivalence Binding.
A collection of certificates whose Identity Equivalence Bindings form a maximal connected graph (see <xref target="graph-topology"/>) is an Identity Equivalence Set, and all members of that set are said to be Identity Equivalent to each other.</t>

<t>If an implementation links a particular identity (such as a User ID or a database record) to one primary key by a means other than Identity Equivalence, then it <bcp14>SHOULD</bcp14> treat that identity as being linked, in the same manner and to the same extent, with each other primary key in the same Identity Equivalence Set.
Each such "derived" identity link is a subsidiary relationship of the original "direct" identity link.
If the same identity is directly linked into the Identity Equivalence Set by multiple identity claims, the derived link(s) are subsidiary to the strongest or most reliable direct link.
A derived identity link is otherwise independent of any identity claims over the other primary keys, or lack thereof.
Each distinct identity <bcp14>SHOULD</bcp14> be modelled separately; a direct or derived link to one identity makes no statement about any other identities found in the Identity Equivalence Set.</t>

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

<t><list style="symbols">
  <t>if either primary key is revoked with a Reason for Revocation other than "Key is superseded".</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, or c) contains a Replacement Key subpacket that inverts the direction of the binding, and there is no corresponding update to the other certificate.</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 expired or revoked with a Reason for Revocation of "Key is superseded", the equivalence binding is unaffected.</t>
  <t>If either primary key is revoked with any other Reason for Revocation, then the equivalence binding is invalidated but the other key is not revoked.</t>
  <t>Other properties (such as expiry dates, usage preferences, custom notations) <bcp14>SHOULD NOT</bcp14> be applied to other members of the Identity Equivalence Set.</t>
</list></t>

<t>If a backward Replacement Key subpacket refers to multiple deprecated keys, it is possible that only some of those have a valid Identity Equivalence Binding.
If a particular Identity Equivalence Binding is invalid, it does not invalidate the other bindings associated with the same backward Replacement Key subpacket.</t>

<t>Identity Equivalence is transitive; if <spanx style="verb">A</spanx> and <spanx style="verb">B</spanx> are both Identity Equivalent to <spanx style="verb">C</spanx> (in other words, if <spanx style="verb">C</spanx> replaces both <spanx style="verb">A</spanx> and <spanx style="verb">B</spanx>), then <spanx style="verb">A</spanx> is also Identity Equivalent to <spanx style="verb">B</spanx>.
This transitivity is the basis for an Identity Equivalence Set, in which an identity linked to any of the primary keys is linked to them all.
This equality of identity, and the distinction between direct and derived identity links, is independent of the order of preference of fallback primary keys (<xref target="graph-topology"/>).</t>

<t>Members of an Identity Equivalence Set <bcp14>MUST</bcp14> be treated as a single key for the purposes of the Web of Trust, particularly when relying on multiple independent certification pathways.</t>

<section anchor="time-evolution-of-identity-equivalence"><name>Time Evolution of Identity Equivalence</name>

<t>An implementation <bcp14>MUST NOT</bcp14> assume that Identity Equivalence Bindings have any permanent significance.
For example, if an MUA relies solely upon an Identity Equivalence Binding between <spanx style="verb">A</spanx> and <spanx style="verb">B</spanx> to validate <spanx style="verb">B</spanx>, the validity of <spanx style="verb">B</spanx> at a future date depends on the continuing validity of the Identity Equivalence Binding.
If the binding is no longer valid, and there are no other certification pathways to <spanx style="verb">B</spanx>, then <spanx style="verb">B</spanx> is no longer valid.</t>

<t>It is therefore <bcp14>RECOMMENDED</bcp14> that applications attempt to find alternative certification pathways for replacement certificates.
The optimal method of obtaining alternative certification pathways is application-dependent, and therefore beyond the scope of this document.
Note that similar time evolution concens also apply to other methods of validation, such as the Web of Trust.</t>

</section>
<section anchor="consequences-of-identity-equivalence"><name>Consequences of Identity Equivalence</name>

<t>Identity Equivalence Binding operates at the same conceptual level as subkey binding.
A subkey is linked to a particular identity if its primary key is linked to that identity.
It is not possible to limit the use of particular subkeys of the same primary to particular identities.</t>

<t>Similarly, a primary key is linked to an identity if any of the primary keys in its Identity Equivalence Group is so linked.
This means that it is not possible to limit the use of particular certificates in the group to particular identities.
Any identities that the key owner's correspondents link to any member of an Identity Equivalence Group will be equally linked to them all.</t>

<t>For example, if a key owner has a particular User ID in one certificate, but not in an Identity Equivalent certificate, her correspondents will still link that User ID with both certificates.
If so, they may (in some circumstances) send messages encrypted to one of the certificates but addressed to an identity which that particular certificate does not claim.</t>

<t>An implementation <bcp14>SHOULD</bcp14> warn the user if they try to create an Identity Equivalence Group using certificates with mismatched current User IDs.
It <bcp14>SHOULD</bcp14> similarly warn the user if they try to add a new User ID to only one member of an Identity Equivalence Group, and (if possible) offer to add it to all members instead.</t>

<t>This is a design limitation of the Key Replacement mechanism.
Since <xref section="10.1" sectionFormat="of" target="RFC9580"/> does not require a certificate to contain a User ID, it <bcp14>MUST</bcp14> still be possible to link an identity to it by other means.
If we were to require matching User IDs for Identity Equivalence, the Replacement Key mechanism would not be fully functional for identity links that did not rely on User IDs.</t>

</section>
</section>
<section anchor="absence-of-an-identity-equivalence-binding"><name>Absence of an Identity 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 an Identity Equivalence Binding, a receiving implementation <bcp14>SHOULD</bcp14> validate the replacement certificate as they would any other.</t>

<t>If an implementation supports the creation of unpaired Replacement Key subpackets, it <bcp14>SHOULD</bcp14> warn the key owner that correspondents may not be able to use the preferred certificate in the absence of other means of identity verification.
For example, it could prompt the key owner to ask any third party who certified a User ID on the deprecated certificate to certify the corresponding User ID on the replacement.</t>

<section anchor="limiting-chaining-of-non-equivalent-replacements"><name>Limiting Chaining of Non-Equivalent Replacements</name>

<t>It is possible for a singly-linked chain of certificates to exist, where each (non-final) certificate contains a valid forward Replacement Key subpacket with no equivalence binding.
Such a chain may terminate, or may form a closed loop.
A generating implementation <bcp14>SHOULD NOT</bcp14> intentionally create singly-linked chains or loops, however they may be encountered in practice as a result of a stale cache, user or implementation error, or malice.</t>

<t>It may be possible for the certificates in a singly-linked chain to be validated without Identity Equivalence Bindings, such as by provenance or Web of Trust.
In such a scenario, a receiving implementation might be induced to process the chain of references until it found the end, or a certificate that did not validate.
An implementation <bcp14>SHOULD</bcp14> limit the maximum number of references it follows (per invocation), and/or implement a loop detection mechanism to prevent following a closed loop of references indefinitely.</t>

<t>For example, a receiving implementation <bcp14>MAY</bcp14> choose to process only one unpaired forward Key Replacement subpacket per invocation.
Such an implementation <bcp14>MAY</bcp14> however process a subsequent unpaired subpacket on its next invocation, if the current certificate in the chain successfully validated.
While this could result in unstable behaviour, where the apparent preferred certificate of the correspondent changes continually, each invocation will consume a finite amount of resources.</t>

</section>
</section>
<section anchor="reasons-for-revocation"><name>Reasons for Revocation</name>

<t>If a Key Revocation signature contains a Replacement Key subpacket, a Reason for Revocation subpacket <bcp14>MUST</bcp14> also be included, to prevent it from being interpreted as "No reason specified".</t>

<t><list style="symbols">
  <t>if a Replacement Key subpacket is included in a Key Revocation signature, then the Reason For Revocation subpacket <bcp14>MUST</bcp14> indicate "Key is superseded".</t>
  <t>if no Replacement Key subpacket is included in a Key Revocation signature, but a Replacement Key might be specified at a later date, then the Reason For Revocation subpacket <bcp14>MAY</bcp14> indicate "Key is superseded".</t>
  <t>otherwise, the Reason for Revocation subpacket <bcp14>SHOULD</bcp14> indicate "Key is retired and no longer used", to explicitly state that the revoked primary key has no replacement.</t>
</list></t>

<t>A receiving implementation <bcp14>MUST</bcp14> ignore any Replacement Key subpacket present in a Key Revocation signature with a Reason for Revocation that is not "Key is superseded".</t>

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

<t>If a replacement certificate has been validated, whether as a member of an Identity Equivalence Set or otherwise, correspondents <bcp14>SHOULD</bcp14> assign it preference over the current certificate.
When a correspondent of the key owner selects subkeys for encryption, the subkeys in the replacement certificate <bcp14>SHOULD</bcp14> therefore be considered first.
If the subkeys in the replacement certificate are not usable, then:</t>

<t><list style="symbols">
  <t>If there is an equivalence binding, the subkeys in the first listed deprecated certificate <bcp14>SHOULD</bcp14> be considered next.
  If the subkeys in the first deprecated certificate are not usable, then the subkeys in the next deprecated certificate (if any) <bcp14>SHOULD</bcp14> be considered, and so forth.</t>
  <t>If there is no equivalence binding, the subkeys in the current certificate <bcp14>SHOULD</bcp14> be used.</t>
</list></t>

<t>When encrypting to herself, the key owner <bcp14>MAY</bcp14> use a different encryption subkey selection algorithm from the one used for her correspondents.</t>

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

<t>If an implementation were to accept a Replacement Key subpacket in the unhashed subpackets area, an attacker could trick the implementation into accepting a key transition by adding a bogus Replacement Key subpacket to an existing signature.</t>

<t>An Identity 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 (see <xref section="5.2.1.9" sectionFormat="of" target="RFC9580"/> and <xref section="10.1.5" sectionFormat="of" target="RFC9580"/>).</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 key material in the target primary public key packet, using a different digest algorithm family from the one used by the fingerprint, we mitigate against both known weaknesses in older fingerprint algorithms, and potential future attacks against current fingerprint algorithms.
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>It is <bcp14>RECOMMENDED</bcp14> that future OpenPGP specifications update the requirements in <xref target="imprint-digest-algorithms"/> so that the digest algorithm used in the Target Key Imprint field always comes from a different family than the target key version's fingerprint algorithm.
This will help ensure that the above security property will also apply to future key versions.</t>

<t>In the absence of a complete Identity Equivalence Binding, the Replacement Key subpacket is merely advisory.
In this scenario, it provides information for the purposes of key discovery only, without any actionable statement about the User IDs on the replacement.</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>100 (TEMPORARY)</c>
      <c>Replacement Key</c>
      <c>This document</c>
</texttable>

</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="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>
<reference anchor="RFC7942">
  <front>
    <title>Improving Awareness of Running Code: The Implementation Status Section</title>
    <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
    <author fullname="A. Farrel" initials="A." surname="Farrel"/>
    <date month="July" year="2016"/>
    <abstract>
      <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
      <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="205"/>
  <seriesInfo name="RFC" value="7942"/>
  <seriesInfo name="DOI" value="10.17487/RFC7942"/>
</reference>

<reference anchor="I-D.draft-bre-openpgp-samples">
   <front>
      <title>OpenPGP Example Keys and Certificates</title>
      <author fullname="Bjarni Rúnar Einarsson" initials="B. R." surname="Einarsson">
         <organization>Mailpile ehf</organization>
      </author>
      <author fullname="&quot;juga&quot;" initials="" surname="&quot;juga&quot;">
         <organization>Independent</organization>
      </author>
      <author fullname="Daniel Kahn Gillmor" initials="D. K." surname="Gillmor">
         <organization>American Civil Liberties Union</organization>
      </author>
      <date day="8" month="May" year="2025"/>
      <abstract>
	 <t>   The OpenPGP development community benefits from sharing samples of
   signed or encrypted data.  This document facilitates such
   collaboration by defining a small set of OpenPGP certificates and
   keys for use when generating such samples.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-bre-openpgp-samples-03"/>
   
</reference>



    </references>

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

<reference anchor="Autocrypt" target="https://autocrypt.org/">
  <front>
    <title>Autocrypt - Convenient End-to-End Encryption for E-Mail</title>
    <author initials="V." surname="Breitmoser" fullname="Vincent Breitmoser">
      <organization></organization>
    </author>
    <author initials="H." surname="Krekel" fullname="Holger Krekel">
      <organization></organization>
    </author>
    <author initials="D. K." surname="Gillmor" fullname="Daniel Kahn Gillmor">
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>



<reference anchor="I-D.koch-openpgp-webkey-service">
   <front>
      <title>OpenPGP Web Key Directory</title>
      <author fullname="Werner Koch" initials="W." surname="Koch">
         <organization>g10 Code GmbH</organization>
      </author>
      <date day="24" month="November" year="2025"/>
      <abstract>
	 <t>   This specification describes a service to locate OpenPGP and LibrePGP
   keys by mail address using a Web service and the HTTPS protocol.  It
   also provides a method for secure communication between the key owner
   and the mail provider to publish and revoke the public key.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-koch-openpgp-webkey-service-21"/>
   
</reference>



    </references>

</references>


<?line 399?>

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

<t>In the following, Alice has a v4 primary keypair and subsequently generates a new v6 primary keypair, then at a later date she revokes her v4 primary key.
Bob is her correspondent who consumes the updated certificate(s).
We do not assume that Alice's secret keys are stored on the same hardware device.</t>

<section anchor="alice-generates-a-new-primary-key"><name>Alice Generates a New Primary Key</name>

<section anchor="alices-actions"><name>Alice's Actions</name>

<t>If Alice's client supports v6 certificates, and Alice only has a v4 certificate, it may suggest to Alice that she should generate a v6 primary keypair and certificate.
If the secret key material for the v4 certificate is available, the client may offer to generate the new keypair and certificate automatically.
The client should warn Alice of potential compatibility issues with any other devices that she may have which share the v4 secret key material.
The client should also perform pre-flight checks that may include:</t>

<t><list style="symbols">
  <t>Refreshing the certificate from the internet to check whether another client has already created a replacement.</t>
  <t>Attempting to sync with other devices in a multi-device deployment, e.g. by emailing itself.</t>
</list></t>

<t>On creation of a v6 primary keypair and certificate, Alice's client will:</t>

<t><list style="symbols">
  <t>Add a Direct Key signature to Alice's new (v6) certificate, including a backward Replacement Key subpacket that references her deprecated v4 certificate.</t>
  <t>If the deprecated (v4) secret key is available, add a new Direct Key signature to its certificate with a forward Replacement Key subpacket that references the v6 replacement.</t>
  <t>Publish the updated certificate(s) to a keyserver.</t>
  <t>Back up the new secret key material and (if necessary) sync it to any other devices.</t>
</list></t>

</section>
<section anchor="bobs-actions"><name>Bob's Actions</name>

<t><list style="symbols">
  <t>Bob wants to send Alice a message and has Alice's deprecated (v4) certificate.</t>
  <t>Either Bob's copy of Alice's deprecated certificate already has a Replacement Key subpacket that references her replacement (v6) fingerprint, or Bob refreshes Alice's deprecated certificate from a keyserver and sees the new Replacement Key subpacket.</t>
  <t>If Bob has a v6 implementation, it can proceed with fetching Alice's v6 replacement certificate, validating it, and using 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 deprecated 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>

<t>Bob's client has previously marked Alice's deprecated certificate as usable for her email address.
If this was done directly (as opposed to via the Web of Trust), Bob's client may also directly mark her replacement certificate as usable.</t>

</section>
<section anchor="alices-second-device"><name>Alice's Second Device</name>

<t>Alice's client should perform regular consistency tests, by performing the pre-flight checks above to discover whether another client or device has published a different replacement certificate.
In such a scenario, the client should warn the user and attempt to reconcile the differences by first syncing the secret key material, and then updating the older "replacement" certificate to be an additional deprecated certificate for the newer replacement, and finally updating the proper replacement certificate to refer to the additional deprecated certificate.</t>

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

<section anchor="alices-actions-1"><name>Alice's Actions</name>

<t>On revocation of her v4 primary key, Alice's client will:</t>

<t><list style="symbols">
  <t>Add a forward Replacement Key subpacket to the Primary Key Revocation signature, referencing the replacement.</t>
  <t>If the replacement secret key is available, add a new Direct Key signature to its certificate with a new or updated backward Replacement Key subpacket that references the deprecated certificate.</t>
  <t>Publish the updated certificate(s) to a keyserver.</t>
</list></t>

</section>
<section anchor="bobs-actions-1"><name>Bob's Actions</name>

<t>Bob already has both Alice's v4 and v6 certificates.</t>

<t><list style="symbols">
  <t>Bob's client refreshes Alice's certificates from a keyserver; her deprecated certificate contains a Primary Key Revocation signature with a Replacement Key subpacket but the preferred certificate is unchanged.</t>
  <t>There is an Identity Equivalence Binding between the deprecated and replacement certificates, which Bob's client automatically validates.</t>
  <t>Bob's v6-aware client continues to use Alice's preferred certificate as before.</t>
</list></t>

<t>Bob's client has previously marked Alice's deprecated certificate as usable for her email address.
If it has not yet directly marked Alice's replacement certificate as usable, it should do so now to remove the requirement to validate the now-revoked v4 certificate.</t>

</section>
<section anchor="carols-actions"><name>Carol's Actions</name>

<t>Carol wants to send Alice a message; Carol has Alice's deprecated (v4) certificate but they have not corresponded for some time.</t>

<t><list style="symbols">
  <t>Carol's client refreshes Alice's deprecated certificate from a keyserver; it contains a Primary Key Revocation signature with a Replacement Key subpacket.</t>
  <t>Carol's client looks up Alice's replacement (v6) certificate on a keyserver.</t>
  <t>There is an Identity Equivalence Binding between the deprecated and replacement certificates, which Carol's client automatically validates.</t>
  <t>Carol's client uses Alice's replacement certificate instead of the deprecated certificate.</t>
</list></t>

<t>(There are other means to achieve a similar result, such as WKD <xref target="I-D.koch-openpgp-webkey-service"></xref> or <xref target="Autocrypt"></xref>, but they may not be available.
For example, Alice's service provider may not support WKD, and Alice may not have sent Carol an autocrypt message since revoking her deprecated primary key.)</t>

<t>Carol's client has previously marked Alice's deprecated certificate as usable for her email address.
Carol's client should now directly mark Alice's replacement certificate as usable.</t>

</section>
<section anchor="alices-second-device-1"><name>Alice's Second Device</name>

<t>On receipt of the new (v6) certificate on a second device, Alice's second client will:</t>

<t><list style="symbols">
  <t>Check to see if the certificate contains an unpaired backward Replacement Key subpacket that refers to any of the available secret keys.</t>
  <t>If the reference is correct and Alice consents, add a Direct Key signature to the affected certificate with a forward Replacement Key subpacket.</t>
  <t>Publish the updated certificate to a keyserver.</t>
</list></t>

<t>If Alice has a local encryption subkey that she prefers for encryption to herself, her client <bcp14>MAY</bcp14> use it regardless of any Replacement Key subpacket(s) in her published certificate.</t>

</section>
</section>
<section anchor="time-evolution-of-an-identity-equivalence-group"><name>Time Evolution of an Identity Equivalence Group</name>

<t>Let’s say that Alice has two deprecated keys (one ECC and one RSA), and a replacement key (ML-DSA).
Let’s also say that she has the identity <spanx style="verb">alice@example.com</spanx> on the ECC and ML-DSA keys, and the identity <spanx style="verb">a.lovelace@example.com</spanx> on the RSA and ML-DSA keys.</t>

<figure title="Bob's View of Alice's Certificates"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="544" width="624" viewBox="0 0 624 544" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 8,144 L 8,256" fill="none" stroke="black"/>
<path d="M 8,352 L 8,464" fill="none" stroke="black"/>
<path d="M 24,176 L 24,256" fill="none" stroke="black"/>
<path d="M 24,384 L 24,464" fill="none" stroke="black"/>
<path d="M 208,176 L 208,256" fill="none" stroke="black"/>
<path d="M 208,384 L 208,464" fill="none" stroke="black"/>
<path d="M 224,144 L 224,256" fill="none" stroke="black"/>
<path d="M 224,352 L 224,464" fill="none" stroke="black"/>
<path d="M 256,112 L 256,144" fill="none" stroke="black"/>
<path d="M 256,320 L 256,352" fill="none" stroke="black"/>
<path d="M 408,48 L 408,496" fill="none" stroke="black"/>
<path d="M 424,96 L 424,496" fill="none" stroke="black"/>
<path d="M 600,96 L 600,496" fill="none" stroke="black"/>
<path d="M 616,48 L 616,496" fill="none" stroke="black"/>
<path d="M 424,32 L 600,32" fill="none" stroke="black"/>
<path d="M 248,64 L 424,64" fill="none" stroke="black"/>
<path d="M 176,96 L 240,96" fill="none" stroke="black"/>
<path d="M 424,96 L 600,96" fill="none" stroke="black"/>
<path d="M 24,128 L 208,128" fill="none" stroke="black"/>
<path d="M 168,160 L 240,160" fill="none" stroke="black"/>
<path d="M 456,160 L 552,160" fill="none" stroke="black"/>
<path d="M 24,176 L 208,176" fill="none" stroke="black"/>
<path d="M 240,176 L 440,176" fill="none" stroke="black"/>
<path d="M 456,192 L 552,192" fill="none" stroke="black"/>
<path d="M 56,208 L 152,208" fill="none" stroke="black"/>
<path d="M 168,224 L 392,224" fill="none" stroke="black"/>
<path d="M 56,240 L 152,240" fill="none" stroke="black"/>
<path d="M 24,256 L 208,256" fill="none" stroke="black"/>
<path d="M 24,272 L 208,272" fill="none" stroke="black"/>
<path d="M 24,336 L 208,336" fill="none" stroke="black"/>
<path d="M 208,368 L 240,368" fill="none" stroke="black"/>
<path d="M 456,368 L 552,368" fill="none" stroke="black"/>
<path d="M 24,384 L 208,384" fill="none" stroke="black"/>
<path d="M 240,384 L 440,384" fill="none" stroke="black"/>
<path d="M 456,400 L 552,400" fill="none" stroke="black"/>
<path d="M 56,416 L 152,416" fill="none" stroke="black"/>
<path d="M 168,432 L 392,432" fill="none" stroke="black"/>
<path d="M 56,448 L 152,448" fill="none" stroke="black"/>
<path d="M 24,464 L 208,464" fill="none" stroke="black"/>
<path d="M 24,480 L 208,480" fill="none" stroke="black"/>
<path d="M 424,496 L 600,496" fill="none" stroke="black"/>
<path d="M 424,512 L 600,512" fill="none" stroke="black"/>
<path d="M 424,32 C 415.16936,32 408,39.16936 408,48" fill="none" stroke="black"/>
<path d="M 600,32 C 608.83064,32 616,39.16936 616,48" fill="none" stroke="black"/>
<path d="M 240,96 C 248.83064,96 256,103.16936 256,112" fill="none" stroke="black"/>
<path d="M 24,128 C 15.16936,128 8,135.16936 8,144" fill="none" stroke="black"/>
<path d="M 208,128 C 216.83064,128 224,135.16936 224,144" fill="none" stroke="black"/>
<path d="M 240,160 C 248.83064,160 256,152.83064 256,144" fill="none" stroke="black"/>
<path d="M 456,160 C 447.16936,160 440,167.16936 440,176" fill="none" stroke="black"/>
<path d="M 552,160 C 560.83064,160 568,167.16936 568,176" fill="none" stroke="black"/>
<path d="M 456,192 C 447.16936,192 440,184.83064 440,176" fill="none" stroke="black"/>
<path d="M 552,192 C 560.83064,192 568,184.83064 568,176" fill="none" stroke="black"/>
<path d="M 56,208 C 47.16936,208 40,215.16936 40,224" fill="none" stroke="black"/>
<path d="M 152,208 C 160.83064,208 168,215.16936 168,224" fill="none" stroke="black"/>
<path d="M 56,240 C 47.16936,240 40,232.83064 40,224" fill="none" stroke="black"/>
<path d="M 152,240 C 160.83064,240 168,232.83064 168,224" fill="none" stroke="black"/>
<path d="M 24,272 C 15.16936,272 8,264.83064 8,256" fill="none" stroke="black"/>
<path d="M 208,272 C 216.83064,272 224,264.83064 224,256" fill="none" stroke="black"/>
<path d="M 24,336 C 15.16936,336 8,343.16936 8,352" fill="none" stroke="black"/>
<path d="M 208,336 C 216.83064,336 224,343.16936 224,352" fill="none" stroke="black"/>
<path d="M 240,368 C 248.83064,368 256,360.83064 256,352" fill="none" stroke="black"/>
<path d="M 456,368 C 447.16936,368 440,375.16936 440,384" fill="none" stroke="black"/>
<path d="M 552,368 C 560.83064,368 568,375.16936 568,384" fill="none" stroke="black"/>
<path d="M 456,400 C 447.16936,400 440,392.83064 440,384" fill="none" stroke="black"/>
<path d="M 552,400 C 560.83064,400 568,392.83064 568,384" fill="none" stroke="black"/>
<path d="M 56,416 C 47.16936,416 40,423.16936 40,432" fill="none" stroke="black"/>
<path d="M 152,416 C 160.83064,416 168,423.16936 168,432" fill="none" stroke="black"/>
<path d="M 56,448 C 47.16936,448 40,440.83064 40,432" fill="none" stroke="black"/>
<path d="M 152,448 C 160.83064,448 168,440.83064 168,432" fill="none" stroke="black"/>
<path d="M 24,480 C 15.16936,480 8,472.83064 8,464" fill="none" stroke="black"/>
<path d="M 208,480 C 216.83064,480 224,472.83064 224,464" fill="none" stroke="black"/>
<path d="M 424,512 C 415.16936,512 408,504.83064 408,496" fill="none" stroke="black"/>
<path d="M 600,512 C 608.83064,512 616,504.83064 616,496" fill="none" stroke="black"/>
<polygon class="arrowhead" points="432,64 420,58.4 420,69.6" fill="black" transform="rotate(0,424,64)"/>
<polygon class="arrowhead" points="400,432 388,426.4 388,437.6" fill="black" transform="rotate(0,392,432)"/>
<polygon class="arrowhead" points="400,224 388,218.4 388,229.6" fill="black" transform="rotate(0,392,224)"/>
<polygon class="arrowhead" points="248,384 236,378.4 236,389.6" fill="black" transform="rotate(180,240,384)"/>
<polygon class="arrowhead" points="248,176 236,170.4 236,181.6" fill="black" transform="rotate(180,240,176)"/>
<polygon class="arrowhead" points="216,368 204,362.4 204,373.6" fill="black" transform="rotate(180,208,368)"/>
<polygon class="arrowhead" points="176,160 164,154.4 164,165.6" fill="black" transform="rotate(180,168,160)"/>
<g class="text">
<text x="448" y="52">Alice's</text>
<text x="508" y="52">ML-DSA</text>
<text x="552" y="52">Key</text>
<text x="88" y="68">Bob's</text>
<text x="140" y="68">Second</text>
<text x="208" y="68">Signature</text>
<text x="504" y="68">alice@example.com</text>
<text x="508" y="84">a.lovelace@example.com</text>
<text x="24" y="100">Bob's</text>
<text x="72" y="100">First</text>
<text x="136" y="100">Signature</text>
<text x="468" y="116">Backward</text>
<text x="524" y="116">RKSP</text>
<text x="48" y="148">Alice's</text>
<text x="96" y="148">ECC</text>
<text x="128" y="148">Key</text>
<text x="88" y="164">alice@example.com</text>
<text x="476" y="180">Target</text>
<text x="532" y="180">Record</text>
<text x="64" y="196">Forward</text>
<text x="116" y="196">RKSP</text>
<text x="356" y="196">&quot;Replaces&quot;</text>
<text x="76" y="228">Target</text>
<text x="132" y="228">Record</text>
<text x="272" y="244">&quot;Replaced</text>
<text x="328" y="244">by&quot;</text>
<text x="152" y="308">Bob's</text>
<text x="200" y="308">Third</text>
<text x="264" y="308">Signature</text>
<text x="48" y="356">Alice's</text>
<text x="96" y="356">RSA</text>
<text x="128" y="356">Key</text>
<text x="108" y="372">a.lovelace@example.com</text>
<text x="476" y="388">Target</text>
<text x="532" y="388">Record</text>
<text x="64" y="404">Forward</text>
<text x="116" y="404">RKSP</text>
<text x="356" y="404">&quot;Replaces&quot;</text>
<text x="76" y="436">Target</text>
<text x="132" y="436">Record</text>
<text x="272" y="452">&quot;Replaced</text>
<text x="328" y="452">by&quot;</text>
<text x="28" y="532">&quot;RKSP&quot;</text>
<text x="64" y="532">=</text>
<text x="120" y="532">Replacement</text>
<text x="184" y="532">Key</text>
<text x="240" y="532">Subpacket</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
                                                   .-----------------------.
                                                  | Alice's ML-DSA Key      |
        Bob's Second Signature--------------------+-> alice@example.com     |
                                                  | a.lovelace@example.com  |
Bob's First Signature---------.                   | +---------------------+ |
                               |                  | | Backward RKSP       | |
 .------------------------.    |                  | |                     | |
| Alice's ECC Key          |   |                  | |                     | |
| alice@example.com <------+--'                   | |  .-------------.    | |
| +----------------------+ | <--------------------+-+-+ Target Record |   | |
| | Forward RKSP         | |           "Replaces" | |  '-------------'    | |
| |  .-------------.     | |                      | |                     | |
| | | Target Record +----+-+--------------------> | |                     | |
| |  '-------------'     | | "Replaced by"        | |                     | |
| +----------------------+ |                      | |                     | |
 '------------------------'                       | |                     | |
                                                  | |                     | |
                Bob's Third Signature             | |                     | |
                               |                  | |                     | |
 .------------------------.    |                  | |                     | |
| Alice's RSA Key          |   |                  | |                     | |
| a.lovelace@example.com <-+--'                   | |  .-------------.    | |
| +----------------------+ | <--------------------+-+-+ Target Record |   | |
| | Forward RKSP         | |           "Replaces" | |  '-------------'    | |
| |  .-------------.     | |                      | |                     | |
| | | Target Record +----+-+--------------------> | |                     | |
| |  '-------------'     | | "Replaced by"        | |                     | |
| +----------------------+ |                      | |                     | |
 '------------------------'                       | |                     | |
                                                  | +---------------------+ |
                                                   '-----------------------'
"RKSP" = Replacement Key Subpacket
]]></artwork></artset></figure>

<t>If Bob has made a certification signature (1) over <spanx style="verb">alice@example.com</spanx> and the ECC key, then from his point of view there is a direct identity link between <spanx style="verb">alice@example.com</spanx> and her ECC key, and a derived identity link (via equivalence) between it and both of the other two keys.
These derived links are subsidiary to the direct link and do not have an independent existence - if Bob’s certification expires, the direct link is invalidated and by extension the derived links are also invalidated.
If however Bob also made a certification signature (2) over Alice’s ML-DSA key, then the expiration of the first certification would not invalidate the second, and all three keys would remain linked to <spanx style="verb">alice@example.com</spanx> - but now Bob’s certification over the ML-DSA key would anchor the direct identity link, and the link between <spanx style="verb">alice@example.com</spanx> and her ECC key would now be equivalence-derived.</t>

<t>None of the above has any consequence for the identity <spanx style="verb">a.lovelace@example.com</spanx>.
Bob knows of no proof that Alice owns that email address, and while her RSA certificate may claim <spanx style="verb">a.lovelace@example.com</spanx>, and we may therefore infer that the owner of the other certificates also claims <spanx style="verb">a.lovelace@example.com</spanx> (because equivalence implies they are the same person), there is no supporting evidence to elevate any of these claims to a concrete link.</t>

<t>But let’s say that Bob then receives an email from <spanx style="verb">a.lovelace@example.com</spanx> with the ML-DSA certificate in its <xref target="Autocrypt"></xref> header.
He <bcp14>MAY</bcp14> therefore infer that the identity <spanx style="verb">a.lovelace@example.com</spanx> is directly linked (via the TOFU principle) to the ML-DSA certificate - and thereby also to the other two certificates.
This TOFU-based direct identity link may be considered “weaker” than one based on a certification signature, and so the derived identity links on the other two certificates <bcp14>SHOULD</bcp14> be considered equally “weak".
If Bob subsequently certifies (3) the identity <spanx style="verb">a.lovelace@example.com</spanx> on the RSA key (for example), all the derived links would become subsidiary to that link, and also become equally “strong”.</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, Johannes Roth, Heiko Schäfer, Falko Strenzke, Neal Walfield, 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-draft-ietf-openpgp-replacementkey-06-and-07"><name>Changes Between draft-ietf-openpgp-replacementkey-06 and -07</name>

<t><list style="symbols">
  <t>Added Implementation Status section.</t>
  <t>Added test vectors.</t>
</list></t>

</section>
<section anchor="changes-between-draft-ietf-openpgp-replacementkey-06-and-07-1"><name>Changes Between draft-ietf-openpgp-replacementkey-06 and -07</name>

<t><list style="symbols">
  <t>Changed imprint algorithm calculation to be SHA3-256 for all currently-known target key versions.</t>
  <t>Swap role of ECC and RSA certificates in Alice-Bob example.</t>
  <t>Minor textual cleanup.</t>
</list></t>

</section>
<section anchor="changes-between-draft-ietf-openpgp-replacementkey-05-and-06"><name>Changes Between draft-ietf-openpgp-replacementkey-05 and -06</name>

<t><list style="symbols">
  <t>Specified "current" Replacement Key subpacket.</t>
  <t>Record length is now one octet again.</t>
  <t>Removed references to "hard" and "soft" revocation reasons, and tightened BCP14 language around reasons.</t>
  <t>Cleaned up artwork.</t>
  <t>Improved example workflows.</t>
  <t>Various minor clarifications.</t>
</list></t>

</section>
<section anchor="changes-between-draft-ietf-openpgp-replacementkey-04-and-05"><name>Changes Between draft-ietf-openpgp-replacementkey-04 and -05</name>

<t><list style="symbols">
  <t>Key Equivalence is now Identity Equivalence.</t>
  <t>Specified Identity Equivalence Sets.</t>
  <t>Defined terms "identity", "identity claim", "identity link", "direct link", "derived link".</t>
  <t>Moved 0x40 to 0x01 and renamed from "inverse relationship" to "backward reference(s)".</t>
  <t>Substituted "original" with "deprecated".</t>
  <t>Expanded and improved "Terminology" section.</t>
  <t>Merged content of "Placement of the Replacement Key Subpacket" section into other sections.</t>
  <t>Removed reference to draft-ietf-openpgp-persistent-symmetric-keys (but kept the surrounding text).</t>
  <t>Renamed and reordered some sections.</t>
  <t>Added receiving implementation MUSTs in several places.</t>
  <t>Various minor clarifications.</t>
</list></t>

</section>
<section anchor="changes-between-draft-ietf-openpgp-replacementkey-03-and-04"><name>Changes Between draft-ietf-openpgp-replacementkey-03 and -04</name>

<t><list style="symbols">
  <t>Made target records forward-compatible.</t>
  <t>Added additional guidance for Alice's client.</t>
  <t>Removed unnecessary reference to WKD.</t>
  <t>Removed requirement for unilateral reference to be treated as a preference.</t>
  <t>Modified wording to avoid incompatibility with future encryption subkey selection draft.</t>
</list></t>

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

<t><list style="symbols">
  <t>Added section clarifying time evolution of equivalence.</t>
  <t>Added section clarifying how to prevent resource exhaustion when following chains.</t>
  <t>Clarified description of equivalence transitivity.</t>
</list></t>

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

<t><list style="symbols">
  <t>Added explanation of hard vs soft revocations.</t>
  <t>Remove the "No Replacement" bit and use the Reason for Revocation subpacket instead.</t>
  <t>Record length field is now two octets.</t>
  <t>Inverted treatment of undefined flag bits.</t>
  <t>Remove references to the Preferred Key Server subpacket.</t>
  <t>Expanded example workflows section and add reference to draft-ietf-openpgp-persistent-symmetric-keys.</t>
  <t>Various terminology nitpicking.</t>
</list></t>

</section>
<section anchor="changes-between-draft-ietf-openpgp-replacementkey-00-and-01"><name>Changes Between draft-ietf-openpgp-replacementkey-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-draft-gallagher-openpgp-replacementkey-01-and-02"><name>Changes Between draft-gallagher-openpgp-replacementkey-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 Identity 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-draft-gallagher-openpgp-replacementkey-00-and-01"><name>Changes Between draft-gallagher-openpgp-replacementkey-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>
<section anchor="implementation-status"><name>Implementation Status</name>

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

<t>This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in <xref target="RFC7942"/>.
The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs. 
Please note that the listing of any individual implementation here does not imply endorsement by the IETF.
Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors.
This is not intended as, and must not be construed to be, a catalog of available implementations or their features.<br />
Readers are advised to note that other implementations may exist.</t>

<t>According to RFC7942:</t>

<ul empty="true"><li>
  <t>this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature. 
It is up to the individual working groups to use this information as they see fit.</t>
</li></ul>

<section anchor="protonmailgo-crypto"><name>ProtonMail/go-crypto</name>

<t><list style="symbols">
  <t>https://github.com/ProtonMail/go-crypto/pull/311/</t>
  <t>Maturity: alpha.</t>
  <t>Coverage: wire formats.</t>
  <t>Version compatibility: draft-ietf-openpgp-replacementkey-07.</t>
  <t>Licensing: BSD 3-clause.</t>
  <t>Implementation experience: TBC.</t>
  <t>Contact information: Andrew Gallagher.</t>
  <t>Updated: 2026-05-18.</t>
</list></t>

</section>
<section anchor="rpgp"><name>rPGP</name>

<t><list style="symbols">
  <t>https://github.com/rpgp/rpgp/pull/725/</t>
  <t>Maturity: alpha.</t>
  <t>Coverage: wire formats.</t>
  <t>Version compatibility: draft-ietf-openpgp-replacementkey-07.</t>
  <t>Licensing: Apache/MIT.</t>
  <t>Implementation experience: TBC.</t>
  <t>Contact information: Heiko Schäfer.</t>
  <t>Updated: 2026-05-18.</t>
</list></t>

</section>
</section>
<section anchor="test-vectors"><name>Test Vectors</name>

<section anchor="minimal-identity-equivalence-group"><name>Minimal Identity Equivalence Group</name>

<t>This group contains two unrevoked primary keys.
The deprecated key is RSA1024, and the replacement key is Ed25519.
Neither certificate contains any user IDs or subkeys.</t>

<figure><artwork><![CDATA[
-----BEGIN PGP PUBLIC KEY BLOCK-----

xo0ETMNJqAEEALcMoAEOmMCQAI1F0e6PkRO9WGH9V7iLrLfGhlh0dmPx4aO1qY8y
/aZHI3PAJLlzWc0u/Ij/YPd3Ua379q9eYV5qFAjPrYvwzqMLDV9TqietWQibqbFb
frwnd6Jde0NhRAJ+O80gOQnxR9DjMrJAz2PTOV9d/g3wpsBOhlWvfqzfABEBAAHC
wGcEHwEIAJsFgmn2vHE1FAAAAAAAHAAQc2FsdEBub3RhdGlvbnMub3BlbnBncGpz
Lm9yZ4ayVjQBlTBq0g1lzxcP00UCmwMWIQQPC/tCs7CL7OVW//zBgcBT3oSb8kRk
AEEGyxhsTwYJppfk1S36bHIrDB8eJ8GKVnCPZSXsJ7rZrMnHcOtVZHA7uJOffvok
6zEVk0kQyr4qq7hMPE2Z+YOm/wAAxBID/2KpaOeUw1NT4XH6SC7258gVYSS/eqko
7GPAz4Yen9XPIhmQjNflZa3NaBmz1L6VNw8JPadqztuPrpMDURhUD2A7ZICjNObY
Bic/7FEBuj0sY4yQjSHApPbgCYQVjfZMy0ImD2AoR/zm3aao6Bnoy8PArjp6277L
A+TUcyLLhFQ0xioGY4d/4xsAAAAg+U2nu0jWCmHlZ3BqZYfQMxmZu52JGggkLq2E
VD34laPCwAQGHxsIAAAAZQWCafa8cQKbAyKhBssYbE8GCaaX5NUt+mxyKwwfHifB
ilZwj2Ul7Ce62azJOGQBNQQPC/tCs7CL7OVW//zBgcBT3oSb8t6vSXAJl0xjL1oE
NxU8/rxgQ8lSnW1tsgnGO2QnhQdbAAAAANWJEAABAgMEBQYHCAkKCwwNDg/m30sj
ocXA95FoWaQ8ROAD6BHtYSGzO5IuFjd/MnuuWdncWNdYh+XzOca4Pb/3YH7IYNwm
JXIeHlLuWWlSAcIB
-----END PGP PUBLIC KEY BLOCK-----
]]></artwork></figure>

</section>
<section anchor="realistic-identity-equivalence-group"><name>Realistic Identity Equivalence Group</name>

<t>This group contains three keys:</t>

<t><list style="symbols">
  <t>A deprecated, revoked v4 Ed25519 key with a User ID of <spanx style="verb">Alice Lovelace &lt;alice@openpgp.example&gt;</spanx></t>
  <t>A deprecated, unrevoked v4 RSA3072 key with a User ID of <spanx style="verb">Bob Babbage &lt;bob@openpgp.example&gt;</spanx></t>
  <t>A replacement v6 Ed25519 key with a User ID of <spanx style="verb">David Deluxe &lt;david@openpgp.example&gt;</spanx></t>
</list></t>

<t>The key material for these was sourced from <xref target="I-D.draft-bre-openpgp-samples"/>.</t>

<figure><artwork><![CDATA[
-----BEGIN PGP PUBLIC KEY BLOCK-----

xjMEXEcE6RYJKwYBBAHaRw8BAQdArjWwk3FAqyiFbFBKT4TzXcVBqPTB3gmzlC/U
b7O1u13CwCkEIBYIAJsFgmn2vHE1FAAAAAAAHAAQc2FsdEBub3RhdGlvbnMub3Bl
bnBncGpzLm9yZ2H67XjLZJxMPApNG8k5IDgCnQEWIQTrhbtfozp14V6UTmPyMVUM
T0fjjkRkAEEGQZnZ6qZoKnjVpTT2K/diIqVOTevHhdvmpsWzRYYCb+JFinZF8aDX
WZDHxuKgG+A2X+gFWDyPj/CCTGyyoezsMQAALOYBAMbr0Cw61uwTcSMwkheLdXqJ
q47j07skK3B2ejwviBtXAQDdRxGGf1aF6fd+e6c2/C0GKmeMF4l9I5ehXOxiyd2O
CbQmQWxpY2UgTG92ZWxhY2UgPGFsaWNlQG9wZW5wZ3AuZXhhbXBsZT6IkAQTFggA
OAIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBOuFu1+jOnXhXpROY/IxVQxP
R+OOBQJdpZ86AAoJEPIxVQxPR+OO6SsA+gOccFKiA6awc6x32oayJmmBGc53Km9u
b5C1dmq2H2u/AP0dwMLS0L48cCw7s5OHVLVML1GImy9rAB8I9pBmh53yArg4BFxH
BOkSCisGAQQBl1UBBQEBB0BC/wYhratJPOCptcKkMNgyIpFWK0KzLbTfHewT356+
IgMBCAeIeAQYFggAIBYhBOuFu1+jOnXhXpROY/IxVQxPR+OOBQJcRwTpAhsMAAoJ
EPIxVQxPR+OOWdABAMUdSzpMhzGs1O0RkWNQWbUzQ8nUOeD9wNbjE3zR+yfRAQDb
YqvtWQKN4AQLTxVJN5X5AWybPnn+We1aTBhaGa86AcbAzQRdpZzyAQwAuXC/T0KE
C0zLoY22L2+DXLrqNG35oD0RcsF+d4z4aBX+GYOpr/7Hjl6YHnE3TnFbbX8wvMnC
Cq7d2kE4sDhv3LWkeAZP7emsjRX3VDcR1pOFgis3c/+en1tjtBdt6iEXfFFCaeSC
JTeEQ3UQrXYVUCALs76dqFcvy2ktpMUKCr6Yf+aUP+cIarMq6BFgyaEldMjm9uQf
4sJP6S1BaMoQxvW49JCMw8axKlvuwWvJ6HEJXnDBd1+SjDeZKds62i7/XZQQaVlu
N15LY3AmYDMttEqLq2lZmvCXvxAsFFmFIgGcSyJTL/QrqxDrcVMOjd0XTrS5mGUv
bhJ5+ctVJBfPKPDZLvPdLpOga3sBcyciwMecEWeBdKlf8qt+lFkNCQfwFBoR1T3R
X+qZenmsQcE+Rl72wVIm7X/GCNqIOUbIE1rV31O3m0hl65eWTKWwOpm34XdEfGj8
Vn5g1oiDoQbn4TAr1B4dbAKTClWZ7yH3/f9A3Gt8G7yyMGt0+AsrIX09ABEBAAHC
wY8EHwEKAMMFgmn2vHEFCwkIBwJFFAAAAAAAHAAgc2FsdEBub3RhdGlvbnMub3Bl
bnBncGpzLm9yZ35e8Ut9FjUSq+agcFXsGW13GZtNT09eXWsGwOUdr5A9BhUKCQgL
AgQWAgMBAheAApsDAh4BFiEE0aZuGiOxgsmYD3iM+/zIKgFeczBEZABBBkGZ2eqm
aCp41aU09iv3YiKlTk3rx4Xb5qbFs0WGAm/iRYp2RfGg11mQx8bioBvgNl/oBVg8
j4/wgkxssqHs7DEAAFugDAC21BuyiU9OMDnxQRnM5A7iRMJ2IiXbZ/WS2UW6e3AZ
IyBRVA3v4G7S2aFEPQnYIEjlz79p8K2zfxY9u1c01qS51NXUty9UKxh7DAUmdwZM
MsnyqE/B/rFi9VLphJney5qjeY/yLXG9zrTX+MSwYwZSe5ckaKJBgVb+sFaHP4qi
pe+KaMaMCtOkV4bcLf6T4bYhxzz494zp/vuWNkEXB6De6eZ88pOexVgKpOmF0aua
dHGNZN3b5BsQC238VOH0l9QK/pq062CdPdtiQ4ccwL6pEeFgALHwosT0yrrkeC33
8GQpWbUufQG6SaVrkaYZAsrKLYG0UxqAEH1R2Tu7UNWEImSmvWM7sclAnjqKSMWI
m4cGBIXZ3BdxkuBX0cxFfzEirWC9G6+PtBelwU47U3ZFzDDlP2U0zqE+TGHdIpXM
7hmIeAlg9HtAFyYtoeZtx6oKN8NBqay5fJ9zFhgOtKnSZGonDiA2MIoUfthS5Fo/
oJaD0dapliez4MbKl2FL5y20IUJvYiBCYWJiYWdlIDxib2JAb3BlbnBncC5leGFt
cGxlPokBzgQTAQoAOAIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBNGmbhoj
sYLJmA94jPv8yCoBXnMwBQJdpZ76AAoJEPv8yCoBXnMwb2wL/1TZPdGuoRvDnfcU
818R+WERVEhnyANcozyFTpyqoTMKbNlPrFhN7qy/jL48kEZckVfKGPSDoUORLJug
zmWK05xO6lRE5tWoyAD9jhQoRHOebh/PMf2p6TzlziWO0vI25952gvamne+Qa2ft
4PRAVFosuafE8pD9OVkp0sTUbe7xSi3xAeJxpHoacB1zlRdAkTcGJXuNm4PJaZnV
xQ3AmQovqhG2n5k0M5AKss0t5wodyAKqumNJAbmii5trUjVDpWWw/jh2EDWeSYse
3GVM7Ol4ePiOeTUVpebJqy6uusjkKBT8vY6Lf0MYpMf8D9zLAM3hmmUhD3NHx6eR
teq5Rm8UN75fP7rFFe1vkzBDJY4MHecfDzkehwvBGgg31Z1AQj4vxr/noC47CGzy
WWRK6IhONHuv1KAokLZaUAeXsTyWEndUNbcQsLnooffTx3qbA4ZlECogArMzVPkU
aMwGGrtlXR6p0Se0GHcRw4h+PYzyuDUzMm/7SYdk4iMHJrCKRrkBjQRdpZzyAQwA
1jC/XGxjK6ddgrRfW9j+s/U00++EvIsgTs2kr3Rg0GP7FLWV0YNtR1mpl55/bEl7
yAxCDTkOgPUMXcaKlnQh6zrlt6H53mF6Bvs3inOHQvOsGtU0dqvb1vkTF0juLiJg
PlM7pWv+pNQ6IA39vKoQsTMBv4v5vYNXP9GgKbg8inUNT17BxzZYHfw5+q63ectg
Dm2on1e8CIRCZ76oBVwzdkVxoy3gjh1eENlk2D4P0uJNZzF1Q8GV67yLANGMCDIC
E/OkWn6daipYDzW4iJQtYPUWP4hWhjdm+CK+hg6IQUEn2Vtvi16D2blRP8BpUNNa
4fNuylWVuJV76rIHvsLZ1pbM3LHpRgE8s6jivS3Rz3WRs0TmWCNnvHPqWizQ3VTy
+r3UQVJ5AmhJDrZdZq9iaUIuZ01PoE1+CHiJwuxPtWvVAxf2POcm1M/F1fK1J0e+
lKlQuyonTXqXR22Y41wrfP2aPk3nPSTW2DUAf3vRMZg57ZpRxLEhEMxcM4/LMR+P
ABEBAAGJAbYEGAEKACAWIQTRpm4aI7GCyZgPeIz7/MgqAV5zMAUCXaWc8gIbDAAK
CRD7/MgqAV5zMOn/C/9ugt+HZIwX308zI+QXc5vDLReuzmJ3ieE0DMO/uNSC+K1X
EioSIZP91HeZJ2kbT9nn9fuReuoff0T0DiefrbwcIQQHFFkrqSp1K3VWmUGp2JrU
sXFVdjy/fkBIjTd7c5boWljv/6wAsSfiv2V0JSM8EFU6TYXxswGjFVfc6X97tJNe
IrXL+mpSmPPqy2bztcCCHkWS5lNLWQw+R7Vg71Fe6yBSNVrqC2/imYG2J9zlowjx
1XU63Wdgqp2Wxt0l8OmsB/W80S1fRF5G4SDHs9HXglXXqPsBRZJYfP+VStm9L5P/
sKjCcX6WtZR7yS6G8zj/X767MLK/djANvpPdNVniEke6hM3CNBXYPAMhQBMWhCul
coz+0lxi8L34rMN+Dsbma96psdUrn7uLaB916we0CTfF8qqm7BsVAgalon/UUiuM
Y80U3ueoj3okiSTiHIjD/YtpXSPioC8nMng7xqAY9Bwizt4FWgXuLm1a4+So4V9j
1TRCXd12Uc2l2RNmgDHGKgZn/yPTGwAAACDOsxFDNa8v1HaPxvTMIQxZgNKrEtVn
YlLbEL9SDz58o8LAXwYfGwoAAACwBYJp9rxxAwsJBwMVCggDFgACApsDAh4JIqEG
QZnZ6qZoKnjVpTT2K/diIqVOTevHhdvmpsWzRYYCb+IFJwkCBwJuZAE1BOuFu1+j
OnXhXpROY/IxVQxPR+OOTmpcMAKpM3K5olyaGNuXRkwK9nGDdCYXG0OkqukqaS41
BNGmbhojsYLJmA94jPv8yCoBXnMwnUjpjJRMJ7eQj/o4DuRKH5f5AzujSIb0xD6l
BXT4L8YAAAAAhSsg09KRxXJW+tYJtHdIcLfXNVoqoxt2ca9AHzaNtXCbbIj0XPlm
I2mD0OTRsZVJjGrBoxNyIqpoY7CnqUHmthOYOM8si5B7jfBAI9lZmvHghQmQ9IKj
32zvCiNmaFd1KC8KwrAGHxsKAAAAQQWCZ/8j0wMLCQcDFQoIAxYAAgKbAwIeCSKh
BkGZ2eqmaCp41aU09iv3YiKlTk3rx4Xb5qbFs0WGAm/iBScJAgcCAAAAAOvfIHJL
maagy+E2kszqHvGBUy3tIKtbmxV4ab1GPn9RqDRWsPeqM+2cokFhQViITLInu6Cz
cUh79YCkAtGfn7TG2D0lpxhsjBhLzMZlow/sm3dvgY+7sjRAXF9Ewsi2GKzYD80k
RGF2aWQgRGVsdXhlIDxkYXZpZEBvcGVucGdwLmV4YW1wbGU+wpsGExsKAAAALAWC
Z/8j0wIZASKhBkGZ2eqmaCp41aU09iv3YiKlTk3rx4Xb5qbFs0WGAm/iAAAAAPP1
ILq5gxUm6UjTzo7NgmjKD4Q/sI7lv1MZ3z3xfz1PPAlPjJBWlAeQ69TsSVoDB8wW
SFc2jtUBmOgBiF5ok/bu9i5IzwqU0q68SlYqWoDmJ9O1Q50gQ2zkMxsKAL5SJ3yY
Cs4qBmf/I9MZAAAAIKt0U8/nHmOsm+50rpMBulklH1jBe1RxwIdSXeOUKVc8wpsG
GBsKAAAALAWCZ/8j0wKbDCKhBkGZ2eqmaCp41aU09iv3YiKlTk3rx4Xb5qbFs0WG
Am/iAAAAAKHJIN+mT4uw6cM+twe2F7+HZVlmakecer2m1AB6UlMbrkvtURDrGeHU
h+269oy6Wd/c0nZaAXV0ncf6D/YyvMGJ61oTMpB8ZFBstB7SNYz8TRfW+V32WkSg
SO8jm2690w6HCw==
-----END PGP PUBLIC KEY BLOCK-----
]]></artwork></figure>

</section>
</section>


  </back>

<!-- ##markdown-source:
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
vxEqM7M6jSerC6sziuXF2dSsnrrjlZHm8oUt2uL+Bildm/4UaSMFbitynG6W
uC06pVK5HOMXdlXqnjcm2qCk1I5Er/XmpiIK10J5wRUKhX11kRAPCsMX9VSc
H8fy0jE5l5ryaJ80zqnZMo1UczM2rXJKVBrM9cRgXd3E40r/nFtKWuG46chR
rTDZ5JhdKnra7M+meaiZ2RLSjir2psQVE/GCfZHG+W67pJ77A7Wd5rLSoN1I
1KXZchGdDhPjaUZMcgumfikMJlzymKpmhwm+Uu711Xm9vJOv2byeayau6/M8
b8eFWPwwTMc7s7F1yY+b5222xI2V1WnRZtqmejmUo4WoUZHyk5a+bajiJX3Y
ifPopTWr5q/GaBZpD0/z02IopoU932wUNpNlxKzwtV7qIDG6GGnybb5dtLr7
SWoptNaZUWo5356v11Q+ddWjR3va2ZdnhUxJzIiLXE7viufJpql3lUqMt3lm
Vat2Fp3kMl0w+8VEMjfp1mJyvt+M6odYJlFc9VaW1E8JwqmV0ctiZcO1aifN
HMUuhrEXi8kkk6v2dcSy7HW/mhnyE2PPzxeI2JqteTU2PiPTrBYfJEZ2dtyZ
luvKUDlO21lTkDl1d2gOkX3CKCmhWqjPkG69Ou/twiwmnCvra1kypsV8NRPp
WQVRPo1T2XFyUbmWSnIvMY5dD+XIqFpb1fVZm8luFcSR5U2+ZnGVy9zSxIV1
zmjNTq5TOPCX9LqRv1a2m67VVIeLqqaWJC7RrmvjtbUdIoU3ymgNvhRb8eD3
u6bay6acqLTSl0SsPm4c51KhOJ82pPl0JddLZ2mZaHCuAVZMy2K1YjFC9Sz3
tH3huumPuL7GfVpWdqrKcqvtGHPeaihcPrXrHXOXolaYqe0TkZVZKiu9z5eJ
UysaHy16q6qtDY4ldS2MmVw8N4hMy4NJeateuI6gXS+VkX45aKN2c9mRe0Zl
28keLtEdkpf78kLYT9bNam9Y0sbdQathb5irgsRd+tzNyINy2ppqF66U3237
2qDWFZfbaK+9TuiZ0VW+StNu7FhPpPPpxObIK6oY6fOJtcWkegNuUtFMm1+X
c3op353s9Zg5Gi/F7HkoJc+c2DjrNY0XCvGrPFhx+5FQbczsjpLqNfiFOmHO
fcSS+9rxsK0m1PQ+ho5d0zRjVvqkrS5c82ArHYR6RZLSljHeTUr6dHqK7raJ
cmkqDuemyCSrk3a2K6fEntQVR+OJLi4bh0vGts3dvlkY5Y7zTGsda8/19jpX
yl9bXDu5VZTxtpTs1M4ZccBY4iE9UHLjTja97mWNSkWMH/fXQqkxT7VrorAu
Xffi9nQsILMvGV/Euf4udTwbUVUrprLF6vXCTKeDZqa+7XZq9jHe5LR9a8GP
OXFmji7Tsroad5ZC32ypmrZej87Jw5JLLeRyUdtwRvs66e3HDN8+VauGJc8G
GT02FGPVGtIfUttIb3692KXxta1Es8P5ap+S2rWGUWwOjH1h5xPzTHxXjM6q
510zs1ptjMF6mt9FzOg4FotEyse6uRmZib2RHGxi1V620ppOYvOONYgjtT6d
ji7Lcpa5cOdiabTvbnrj9kzgm7La32auhmxlaumkUskUjmZSUru1/rFrVq1x
bHU4LhGWRpXYzm5JjQ3Tk9tZfXqM6J1+ps4l88em1jdH7cIxdUwf551ZL1/d
NJebnKSOO6N4tnC+Lua19SkdOWSSomBtmJKS0NS4mCvWB0VE/ohVn66r/eSs
XZKb3TYuljvyPlFK9WJ2o7O4VuL9XHWSyV5aXKfaLpbqRaYc7e6nambFS/q8
dJ2mpEbfmvfG015qO93uVkqk2IxsN5l6f1xWExPrKMUzpcRSHvRyBX3c6fBM
at2xL/J0Yjcm2YxRrx3N1iKuL9vJVk0fbMo5M7OTjsPk4JqcDszYSJkWO+qx
1jtMpWs/ORldmIiB9JtJI80p20bJWKwWh7zEj+v2IhbvaeV4pFiTGif73LOm
xwl3Xid6XUGJt6OV+LoZb8TECCM35b590dTR7DAbJBLzVPxkrHsJvrdPqr3h
aJoojbl18jhoLzbp7EIfnFvlbbl9FtqpaKs9iPQYIuer6MDMy1UOifkiB+bN
QFdSfD1bLV4Wm55Yv2aj7c2Bm6SvbW5cnPFTIbepL0sc12SKg5L3ZVeNFqN5
e2NFaov6aZaM5a71SH8mpI+l1kC0r0ojKYnlWKndjdqdYTHSjM+YsqQN64te
Pl4TF43EfjnKq2p+baPHEfXHRrGSJK6N5Umo9/u1SmVvHIZ6vJmcTJVxVU80
jDFjziqT1e4SXe8L9d1olRXSS20q747RzIkzh2vpmJjEGsN2rlwZZ0bz2dk8
VXeVyVrIzPJZq9ERmboxa0UUfaj0eodLYnm1hGKxtp8O03KnNe2fIoPsZJON
V8TMpTDsTIxDMRGVlHk1gcSFrJ12ZyY+G2eS09XmoCemZysm57qKWYhOc7Fh
fD2opKupYalm5muzjTybHXpmYbBozNe9yGRoKflWuhdlzOauKMwyU2sxyF6G
mWruuovOsplsu4Wsxh3XOeq9VWeiSuW9mNm2k8VOYTbvce1tv9Cebou2zCA+
HonJZynXSqaMdidSMpcKn8/o5mpsqFm7xRfy8cxJjBVH60rucFCyBXPCbXhZ
U6PjsWS3mXkuNk7aorZLantpOJJq9V0pOrf02bAnacWc2lY3WSSk5/nCSbpa
qcp0M7NbSpxPRYZaapLfMfHRoDhbxRNjISEnBh1lU6pVm5uFGr30RtUTUhKL
pa55rpQ6fO4Yr/G983HUrvfPi02naZSticrM5day3MoPS9d0Tsu1uNlpvq6e
NHjzVJg39LxxPnMns1E4tZGc3JSQilGk6mCjfihXmc8b3PVK47QvIg3WXnDl
uGOYMWGW2UjRhTbX1NvJZlqTL3y1Y88G+1Mzr1ZLq+J8Vo119wd7f+CHqTjj
iOkwKa2Od/qugbTDrNjfRbVUyR40a+l1mrvau2F9GTuXMjJTmI1SrdwcK9Xb
obmJ5ZuD86wxjVjzhoW0GKS2zToT7aCdrYTA57nale9Ys+JyWd/FZj1ZYeoJ
pRTrjgbmYtLYVY2Cdu5c6gddm2eL6mFcU6xtd95t50wpXcju1gWungeLprbZ
IqM/X2/umGTieixKHYWvrOLNYq55MjhwVDYBon5/WlxEc7sYMqiLfaFU6Wt1
7oygRXyaO9XF4rC5ZRyt+zNKd2EoNJDlUMTr7R7X9VqjxSg8v7lEyom9eT3U
jtXC+JK06k1rqZwnKX4Zr/bU/OBQGkzNnnhoRxKCtq9s+xOpPmrVVTtTvDLC
eJvNz4t7zqqu1eyomijFZP28NXeFbevaXqAjGzWV5Oq4mUeyyBrlZpV8+WRK
iWrzOi/lYntmUK0k+Gl/M6hOzNVsC+rcfj5b6Ity4ShUJ7ZQXZ1ayiQ1n8ZP
y+o4ctLNapniqMVNiwxBUn3BIYR8Dz4wHnq9OFNvHdKb81jJjHejq5btbJRd
s5TqR816Vj7G24vkNXleX+O9Hif3do3CVObEfiY/MocTrVTInabMsCIkdta4
oHQ3BamS1vbRpZ2X0vXr6TCOHTK5oTw/TLWS0sh34/10bNNPXPdtWEIrPWwk
L3OmaKYOBWUdrefbC4AK7UBsnIuqNaVrKpF0zNDbBVvey7X4riDGB+dTfTWc
id1xcyLkAB9MteAhhOCjuSwVP48PxkVIs9aodyLKKGWfMkI7Yp3ERCWLBMxE
Vvi9KIhGQolzhcxYbi+N/dEaD0pGVayNmW0kkclrl8x0FRVi6oLnZpOYKqwz
iK9dju1qIxNHSq9eyC0qBdMqZIed+TU3QppQZJJMTPfDDTPs5nYKGiN2ytSK
p3/+5886qv8PT+4q3TjQAAA=

-->

</rfc>

