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


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

]>


<rfc ipr="trust200902" docName="draft-ietf-openpgp-replacementkey-05" 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="2025" month="August" day="17"/>

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

    <abstract>


<?line 38?>

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

<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 or direct key signature.
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>2</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>2</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 big-endian two-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 used by the enclosing signature, e.g. 32 octets for SHA2-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 generalisation of a fingerprint.
It is calculated in the same way as the fingerprint, 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>

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

<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 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.
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><artwork><![CDATA[
                                                   .---------------------.
                                                  | Replacement Cert      |
                                                  | +-------------------+ |
                                                  | | Reverse 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></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 hard-revoked.</t>
  <t>if either primary key overrides the equivalence binding with a new direct self-signature that a) does not contain a Replacement Key subpacket, or b) contains a Replacement Key subpacket that does not refer to the other key, 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 soft-revoked or expired, the equivalence binding is unaffected.</t>
  <t>If either primary key is hard-revoked, 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.
It should be noted however 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 that it 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 the third parties who certified the User ID(s) on the deprecated certificate to certify the corresponding User ID(s) 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>For the purposes of Key Revocation signatures:</t>

<t><list style="symbols">
  <t>"hard-revoked" means the key has been revoked with a Reason for Revocation subpacket specifying "Key material has been compromised" or "No reason specified"; the absence of a Reason for Revocation subpacket is equivalent to "No reason specified".</t>
  <t>"soft-revoked" means the key has been revoked with a Reason for Revocation subpacket specifying "Key is superseded" or "Key is retired and no longer used".</t>
</list></t>

<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", which is a hard revocation.
If the Reason for Revocation subpacket, or lack thereof, indicates a hard revocation then any additional subpackets, including the Reason for Revocation subpacket, <bcp14>MUST</bcp14> be ignored as they could have been faked by an attacker who compromised the secret key material.</t>

<t><list style="symbols">
  <t>if a Replacement Key subpacket is included in a revocation signature, then the Reason For Revocation subpacket <bcp14>SHOULD</bcp14> indicate "Key is superseded".</t>
  <t>if no Replacement Key subpacket is included in a 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>

</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 the Replacement Key subpacket was allowed in the unhashed subpackets area, an attacker could add a bogus Replacement Key subpacket to an existing signature.</t>

<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.</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 the same digest algorithm as the enclosing signature, we ensure that the indirect cryptographic binding between the equivalent keys is of the same overall strength as a signature made directly over the target primary public key (as in a certification signature or subkey binding signature).
We intentionally chose not to use embedded back-signatures or third-party certifications, both to keep the design simple and to limit the size of the subpacket(s) required.</t>

<t>In the absence of a complete 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='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://docs.autocrypt.org">
  <front>
    <title>Autocrypt</title>
    <author >
      <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="2" month="June" year="2025"/>
      <abstract>
	 <t>   This specification describes a service to locate OpenPGP 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-20"/>
   
</reference>



    </references>


<?line 380?>

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

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

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

<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, 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 anchor="bobs-actions"><name>Bob's Actions</name>

<t>If Alice has revoked her deprecated Primary Key:</t>

<t><list style="symbols">
  <t>Bob wants to send Alice a message; Bob has Alice's deprecated (v4) certificate but they have not corresponded for some time.</t>
  <t>Bob's client refreshes Alice's deprecated certificate from a keyserver; it contains a Primary Key Revocation signature with a Replacement Key subpacket.</t>
  <t>Bob'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 Bob's client automatically validates.</t>
  <t>Bob'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 Bob an autocrypt message since revoking her deprecated primary key.</t>

<t>If Alice has not revoked her deprecated Primary Key:</t>

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

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

<figure><artwork><![CDATA[
                                                   .-----------------------.
                                                  | Alice's ML-DSA Key      |
        Bob's Second Signature--------------------+-> alice@example.com     |
                                                  | a.lovelace@example.com  |
Bob's First Signature---------.                   | +---------------------+ |
                               |                  | | Reverse RKSP        | |
 .------------------------.    |                  | |                     | |
| Alice's RSA Key          |   |                  | |                     | |
| alice@example.com <------+--'                   | |  .-------------.    | |
| +----------------------+ | <--------------------+-+-+ Target Record |   | |
| | Forward RKSP         | |           "Replaces" | |  '-------------'    | |
| |  .-------------.     | |                      | |                     | |
| | | Target Record +----+-+--------------------> | |                     | |
| |  '-------------'     | | "Replaced by"        | |                     | |
| +----------------------+ |                      | |                     | |
 '------------------------'                       | |                     | |
                                                  | |                     | |
                Bob's Third Signature             | |                     | |
                             |                    | |                     | |
 .------------------------.  |                    | |                     | |
| Alice's ECC Key          | |                    | |                     | |
| a.lovelace@example.com <-+'                     | |  .-------------.    | |
| +----------------------+ | <--------------------+-+-+ Target Record |   | |
| | Forward RKSP         | |           "Replaces" | |  '-------------'    | |
| |  .-------------.     | |                      | |                     | |
| | | Target Record +----+-+--------------------> | |                     | |
| |  '-------------'     | | "Replaced by"        | |                     | |
| +----------------------+ |                      | |                     | |
 '------------------------'                       | |                     | |
                                                  | +---------------------+ |
                                                   '-----------------------'
"RKSP" = Replacement Key Subpacket
]]></artwork></figure>

<t>If Bob has made a certification signature (1) over <spanx style="verb">alice@example.com</spanx> and the RSA key, then from his point of view there is a direct identity link between <spanx style="verb">alice@example.com</spanx> and her RSA 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 RSA 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 ECC 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 ECC 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-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:
H4sIAAAAAAAAA+192ZIbx7XgO76iBnxQtwRAJEXp2pSur5ubRFNcht26CoVC
MUwUEkCahSq4stAtmFSEf+NGzETMw3zJzJ/4S+ZsudUCNFvym9oOsRuoyjp5
8uxbTafTUWOaQt/Pxi+3unz19avsmd5nr/W2ULne6LIZj3LV6FVV7+9ntlmM
FlVeqg3csKjVspka3SynFdy6XW2ndbjtrd5Pb38+2m0XcLe9n/3x8z/cHplt
fT9r6p1t7t6+/cfbd0eq1gqW1fnoqqrfrupqt72fyWojWAI+XdzPnpaNrkvd
TB/hI0d2N98Ya01VXuy3AMjTxxdPRpe63On7oyyTRdx2xvBRQ5eNv4dHmHKV
fY1X4OcbZQr4XJ73Z9zKrKpX+JWq8zV8tW6arb3/6ad4JX5kLvXMXfYpfvDp
vK6urP5U1vgU7wUsVNG9K8Cvms/yavOpKhe1vlotqgb/6scarlAgzppojeTG
maxoqsElbAN3/A9VVCVsfK/taGvuZz82VT7JbFU3tV5a+G2/wV9+Gqlds65q
QN4Unp1ly11R8BE/Utt1qbPztbqib2DXqjR/Vw3g/n72FzWf6/qqyt/uswud
r+kSzUhdWLjnz38NV+D+uw84o31lX6uiUKu1rnueAmcIFGlnj7+L1xeE/Fn+
5dXhp66QlvXCNFU9Kqt6A6tcEl28fvIQafD+yJTL+POzHaCl3m+b+7RAo+qV
BtQ7zAO525ly1+C582XMNP5m+PDp9NHsbZWvPTdc6TlygdX1pcnhWaPpdJqp
uW1qlTej0cXa2AyW3+GpZXarc7M02mYq22g4j0VmyszxZFNldrdaAVHA19Fh
Z7AVwEWmf96aWi8m8N1l9RZ/gc8XeltrZN5Ftq3NRtX7DOCZMRwbs1gUejS6
hdxVV4tdjujO3t0y0Z+/IJTaQ7HR1qqVzhh/2Y+C0p/gSUtTAujNVZVdqb1F
eE15qQqD3A8gJ89/CSQFV2Ww/WYN6zTwiOgCYMt9Nte4p8LkgOe921V2aRQs
htfgJzlRSGbNqlTNrtawsgCqCosI226B1i2tn1dlrrdNVi3pdsIX3T6BBRnI
JQiZ7Gpt8jXdgZfZdbUrFllZNQjQzurFbPT9WpfpjnAjDkJAO58F8Nelhu8r
WLbEBWuN1ylYC35PbickwHeAeV0uYBHAnpxxZho4rzO6rLoq4UZEDm0vB9FJ
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

-->

</rfc>

