<?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.34 (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-07" 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="April" day="21"/>

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



    </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>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>


  </back>

<!-- ##markdown-source:
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
jypfM9ALZfP6Rw/f/f5L6o6+f34WZGT5FtkKNZxG3yWOpTfSB+aolsDZzMWT
pRJQdUpuvij+UgYPx8fON+ilZ0nOmjRCil0WZ8ejkRBhzabR7WKKnc3wIJXo
yr+OMm3YxwjpLboSSeQ1Gk4K9b5c16V/R9jCcbstJKkNr3ptprYeT5IIRH8X
qh8EoWyReSeAs1jxOddpQVcE4unHvuax7sOi00lNUKM5rQ5tAKouxpwEizku
84N7ygnLtohl0xCvfhObqU9SFo4d8WYwayRpWZuwPQvtDshX3dqJT6yjetw6
FRurX/OUw6j1/XRU/HEQ1zTyUO9Ba7NdnystNpp7lP0q4wD4cQdlqzws/O5j
QaLm8RWmwYg8N+WnUPZ+MD1b471EQksPCuquBSLUtd+IlfAU3u++O69H5X6V
h7eQAs237YzrlJAbSGFeUc8FMkEM04kNf5VvLKdFsQgx+MsrFfgK7K7TAz5A
QerPvfpAZaNLK0ApEYpk8rsF3J9uMY2NppnoEvVOtkVulNXTFLRfNnW/ngSs
6za6jof2odQVFvZk3GFaDmc/LFBoXgTRsxsVyjR2KLieulXV4a7DjPAWXzfr
QqZ25vF79flUkVksLzgxbZtyunuBFIxFOTr7z5KPppIgeZUcdBXLtmCGayUc
KSbC5hcF+lLxcmHibZviquWOjcqUiKEW+6m/eP1+i93dSR6pssjCg0AfDKvH
X/JbN9WQHfWJ1cuF1N69wioPpdVzD1XYdAdU77G6oSb7JeeB/nIHadYGLiuK
S/SOd+5p01hEX0/Eiv5zDlsD5IHj1niSmjtfR6w3vcz56MKXp4UZvRTeXOP9
0tzvlEqrOM+rTlxEFfvHZ9Oz2WWRrqcg+PPtajvda4zITRGZAOJfUM78eAqL
oyDyXyY14YVJyE6mNTKGaycdDeYc56V/12ncAEroLotaeFI4lA8H6j0OFG+a
WKoSoANJtfC6r/U9avKNvfh1eFVjEmE1dIN5pI/fmGMN6+SkH6XabH2+SZdP
hY+J5VdZew43iD5uKk+PyF1FHEv7vMNOeZrXGYy30kZsoyTZU1Lo2I30KpeN
Y6TmSqqMmXAkem6dbtWnV9FU0pfgg7w2N9CS2iqS8x2LXc931rbTM7xTcyso
ipOEovSPwChyuR+GwiIAfUZJrcvh7DC6pIuuLA/sqJYG365KHqwZGo2+0dU/
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
AA==

-->

</rfc>

