<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-lundberg-cose-two-party-signing-algs-04" category="std" consensus="true" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="Split signing algorithms for COSE">Split signing algorithms for COSE</title>
    <seriesInfo name="Internet-Draft" value="draft-lundberg-cose-two-party-signing-algs-04"/>
    <author fullname="Emil Lundberg" role="editor">
      <organization>Yubico</organization>
      <address>
        <postal>
          <street>Gävlegatan 22</street>
          <city>Stockholm</city>
          <country>SE</country>
        </postal>
        <email>emil@emlun.se</email>
      </address>
    </author>
    <author initials="M. B." surname="Jones" fullname="Michael B. Jones">
      <organization>Self-Issued Consulting</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>michael_b_jones@hotmail.com</email>
        <uri>https://self-issued.info/</uri>
      </address>
    </author>
    <date year="2025" month="November" day="24"/>
    <area>Security</area>
    <workgroup>COSE</workgroup>
    <keyword>COSE</keyword>
    <keyword>Signing</keyword>
    <keyword>Algorithms</keyword>
    <keyword>Split algorithms</keyword>
    <keyword>Split signing</keyword>
    <abstract>
      <?line 124?>

<t>This specification defines COSE algorithm identifiers
for negotiating how to split a signature algorithm between two cooperating parties.
Typically the first party hashes the data to be signed
and the second party finishes the signature over the hashed data.
This is a common technique, useful for example when the signing private key is held in a smart card
or similar hardware component with limited processing power and communication bandwidth.
The resulting signatures are identical in structure to those computed by a single party,
and can be verified using the same verification algorithm
without additional steps to preprocess the signed data.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-lundberg-cose-two-party-signing-algs/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        COSE Working Group mailing list (<eref target="mailto:cose@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/cose/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/cose/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/YubicoLabs/cose-two-party-signing-algs-rfc"/>.</t>
    </note>
  </front>
  <middle>
    <?line 136?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>CBOR Object Signing and Encryption (COSE) <xref target="RFC9052"/>
algorithm identifiers are used for algorithm negotiation
and to annotate cryptographic objects with how to interpret them,
for example which algorithm to use to verify a signature or decapsulate a shared key.
Existing COSE algorithm identifiers omit some internal details of how the object was constructed,
since those details are typically irrelevant for the recipient.</t>
      <t>The algorithm identifiers defined in this specification are meant for a complementary use case:
to divide responsibilities during <em>construction</em> of a cryptographic object,
instead of describing how to <em>consume</em> the object.
Specifically, they provide an interoperable way to negotiate
how a signing operation is split between two cooperating parties,
for example, a smart card and a software application,
while the verification algorithm for the resulting signature remains the same
as if the signature was created by a single party.
These split algorithm identifiers are therefore not meant for annotating signature objects,
since the verification algorithm is better indicated using already existing algorithm identifiers.</t>
      <t>As mentioned above, a primary use case for this is for algorithm negotiation
between a software application and a smart card or other hardware security module (HSM) holding the signing private key.
Since the HSM may have limited processing power and communication bandwidth,
it may not be practical to send the entire original message to the HSM.
Instead, since most signature algorithms begin with digesting the message
into a fixed-length intermediate input, this initial digest can be computed by the software application
while the HSM performs the rest of the signature algorithm on the digest.
This is a common technique used in standards such as OpenPGP <xref target="OPENPGPCARD"/>,
PKCS #11 <xref target="PKCS11-Spec-v3.1"/>, and PIV <xref target="FIPS-201"/>.</t>
      <t>Since different signature algorithms digest the message in different ways
and at different stages of the algorithm,
it is not possible for a cryptographic API to specify that, for example, "the hash digest is computed by the caller"
generically for all algorithms.
Instead, the algorithm identifiers defined in this specification
enable the parties of that cryptographic API to signal precisely, for each signature algorithm individually,
which steps of the algorithm are performed by which party.
We thus define two roles:
the <em>digester</em> (e.g., a software application) that initializes the signing procedure,
and the <em>signer</em> (e.g., an HSM) that holds exclusive control of the signing private key.</t>
      <t>Note that these algorithm identifiers do not define new "pre-hashed" variants of the base signature algorithm,
nor an intermediate "hash envelope" data structure, such as that defined in <xref target="I-D.COSE-Hash-Envelope"/>.
Rather, these identifiers denote existing signature algorithms
that would typically be executed by a single party,
but split into two stages.</t>
      <t>Some signature algorithms,
such as PureEdDSA <xref target="RFC8032"/>,
by their design, cannot be split in this way, and therefore cannot be assigned split signing algorithm identifiers.
However, if such a signature algorithm defines a "pre-hashed" variant,
such as Ed25519ph <xref target="RFC8032"/>,
that "pre-hashed" algorithm can be assigned a split signing algorithm identifier,
enabling the pre-hashing step to be performed by the <em>digester</em>
and the remaining steps by the <em>signer</em>.</t>
      <section anchor="requirements-notation-and-conventions">
        <name>Requirements Notation and Conventions</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <xref target="RFC8174">RFC2119</xref> when, and only when, they appear in all capitals, as shown here.</t>
      </section>
    </section>
    <section anchor="split-algs">
      <name>Split Signing Algorithms</name>
      <t>This section defines divisions of signing algorithm steps between a <em>digester</em> and a <em>signer</em>
in a split signing protocol,
and assigns algorithm identifiers to these algorithm divisions.
The <em>digester</em> performs the first part of the split algorithm and does not have access to the signing private key,
while the <em>signer</em> performs the second part of the split algorithm and has access to the signing private key.
For signing algorithms that format the message to insert domain separation tags,
as described in <xref section="2.2.5" sectionFormat="of" target="RFC9380"/>,
this message formatting is also performed by the <em>signer</em>.</t>
      <t>The algorithm identifiers defined in this specification
MAY appear in COSE structures used internally between the <em>digester</em> and the <em>signer</em> in a split signing protocol,
but SHOULD NOT appear in COSE structures consumed by signature verifiers.
COSE structures consumed by signature verifiers
SHOULD instead use the corresponding conventional algorithm identifiers for the verification algorithm.
These are listed in the "Verification algorithm" column in the tables defining split signing algorithm identifiers.</t>
      <section anchor="ecdsa-split">
        <name>ECDSA</name>
        <t>ECDSA <xref target="FIPS-186-5"/> split signing uses the following division between the <em>digester</em> and the <em>signer</em>
of the steps of the ECDSA signature generation algorithm <xref target="FIPS-186-5"/>:</t>
        <ul spacing="normal">
          <li>
            <t>The signing procedure is defined in Section 6.4.1 of <xref target="FIPS-186-5"/>.</t>
          </li>
          <li>
            <t>The <em>digester</em> performs Step 1 of the signing procedure - hashing the message, producing the value <em>H</em>.</t>
          </li>
          <li>
            <t>The message input to the <em>signer</em> is the value <em>H</em> defined in the signing procedure.</t>
          </li>
          <li>
            <t>The <em>signer</em> resumes the signing procedure from Step 2.</t>
          </li>
        </ul>
        <t>The following algorithm identifiers are defined:</t>
        <table anchor="tbl-ecdsa-split">
          <name>ECDSA split signing algorithm values.</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">COSE Value</th>
              <th align="left">Verification algorithm</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">ESP256-split</td>
              <td align="left">TBD</td>
              <td align="left">ESP256</td>
              <td align="left">ESP256 split signing as defined in <xref target="ecdsa-split"/></td>
            </tr>
            <tr>
              <td align="left">ESP384-split</td>
              <td align="left">TBD</td>
              <td align="left">ESP384</td>
              <td align="left">ESP384 split signing as defined in <xref target="ecdsa-split"/></td>
            </tr>
            <tr>
              <td align="left">ESP512-split</td>
              <td align="left">TBD</td>
              <td align="left">ESP512</td>
              <td align="left">ESP512 split signing as defined in <xref target="ecdsa-split"/></td>
            </tr>
          </tbody>
        </table>
        <t>Note: This is distinct from the similarly named Split-ECDSA (SECDSA) <xref target="SECDSA"/>,
although SECDSA can be implemented using this split procedure as a component.</t>
      </section>
      <section anchor="eddsa-split">
        <name>HashEdDSA</name>
        <t>Split HashEdDSA <xref target="RFC8032"/> uses the following division between the <em>digester</em> and the <em>signer</em>
of the steps of the HashEdDSA signing algorithm <xref target="RFC8032"/>:</t>
        <ul spacing="normal">
          <li>
            <t>HashEdDSA is a combination of the EdDSA signing procedure and the PureEdDSA signing procedure.
The EdDSA signing procedure is defined in the first paragraph of <xref section="3.3" sectionFormat="of" target="RFC8032"/>.
The PureEdDSA signing procedure is defined in the second paragraph of <xref section="3.3" sectionFormat="of" target="RFC8032"/>.</t>
          </li>
          <li>
            <t>The <em>digester</em> computes the value <tt>PH(M)</tt> defined in the EdDSA signing procedure.</t>
          </li>
          <li>
            <t>The message input to the <em>signer</em> is the value <tt>PH(M)</tt> defined in the EdDSA signing procedure.
This value is represented as <tt>M</tt> in the PureEdDSA signing procedure.</t>
          </li>
          <li>
            <t>The <em>signer</em> executes the PureEdDSA signing procedure,
where the value denoted <tt>M</tt> in the PureEdDSA signing procedure
takes the value denoted <tt>PH(M)</tt> in the EdDSA signing procedure.</t>
          </li>
        </ul>
        <t>PureEdDSA <xref target="RFC8032"/> cannot be divided in this way
since such a division would require that the <em>digester</em> has access to the private key.</t>
        <t>The following algorithm identifiers are defined:</t>
        <table anchor="tbl-eddsa-split">
          <name>HashEdDSA algorithm values.</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">COSE Value</th>
              <th align="left">Verification algorithm</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Ed25519ph</td>
              <td align="left">TBD</td>
              <td align="left">Ed25519ph</td>
              <td align="left">EdDSA using the Ed25519ph parameter set in <xref section="5.1" sectionFormat="of" target="RFC8032"/></td>
            </tr>
            <tr>
              <td align="left">Ed25519ph-split</td>
              <td align="left">TBD</td>
              <td align="left">Ed25519ph</td>
              <td align="left">EdDSA using the Ed25519ph parameter set in <xref section="5.1" sectionFormat="of" target="RFC8032"/> and split as defined in <xref target="eddsa-split"/></td>
            </tr>
            <tr>
              <td align="left">Ed448ph</td>
              <td align="left">TBD</td>
              <td align="left">Ed448ph</td>
              <td align="left">EdDSA using the Ed448ph parameter set in <xref section="5.2" sectionFormat="of" target="RFC8032"/></td>
            </tr>
            <tr>
              <td align="left">Ed448ph-split</td>
              <td align="left">TBD</td>
              <td align="left">Ed448ph</td>
              <td align="left">EdDSA using the Ed448ph parameter set in <xref section="5.2" sectionFormat="of" target="RFC8032"/> and split as defined in <xref target="eddsa-split"/></td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="cose-sign-args">
      <name>COSE Signing Arguments</name>
      <t>While many signature algorithms take the private key and data to be signed as the only two parameters,
some signature algorithms have additional parameters that must also be set.
For example,
to sign using a key derived by ARKG <xref target="I-D.bradleylundberg-ARKG"/>,
two additional arguments <tt>kh</tt> and <tt>ctx</tt> are needed in <tt>ARKG-Derive-Private-Key</tt> to derive the signing private key.</t>
      <t>While such additional arguments are simple to provide to the API of the signing procedure in a single-party context,
in a split signing context these additional arguments also need to be conveyed from the <em>digester</em> to the <em>signer</em>.
For this purpose, we define a new COSE structure <tt>COSE_Sign_Args</tt> for "COSE signing arguments".
This enables defining a unified, algorithm-agnostic protocol between the <em>digester</em> and the <em>signer</em>,
rather than requiring a distinct protocol for each signature algorithm for the sake of conveying algorithm-specific parameters.</t>
      <t><tt>COSE_Sign_Args</tt> is built on a CBOR map.
The set of common parameters that can appear in a <tt>COSE_Sign_Args</tt>
can be found in the IANA "COSE Signing Arguments Common Parameters" registry (TODO).
Additional parameters defined for specific signing algorithms
can be found in the IANA "COSE Signing Arguments Algorithm Parameters" registry (TODO).</t>
      <t>The CDDL grammar describing <tt>COSE_Sign_Args</tt>, using the CDDL fragment defined in <xref section="1.5" sectionFormat="of" target="RFC9052"/>, is:</t>
      <sourcecode type="cddl"><![CDATA[
COSE_Sign_Args = {
    3 ^ => tstr / int,  ; alg
    * label => values,
}
]]></sourcecode>
      <section anchor="cose-sign-args-common">
        <name>COSE Signing Arguments Common Parameters</name>
        <t>This document defines a set of common parameters for a COSE Signing Arguments object.
<xref target="tbl-cose-sign-args-common"/> provides a summary of the parameters defined in this section.</t>
        <table anchor="tbl-cose-sign-args-common">
          <name>Common parameters of the COSE_Sign_Args structure.</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Label</th>
              <th align="left">CBOR Type</th>
              <th align="left">Value Registry</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">alg</td>
              <td align="left">3</td>
              <td align="left">tstr / int</td>
              <td align="left">COSE Algorithms</td>
              <td align="left">Signing algorithm to use</td>
            </tr>
          </tbody>
        </table>
        <ul spacing="normal">
          <li>
            <t>alg: This parameter identifies the signing algorithm the additional arguments apply to.
The signer MUST verify that this algorithm matches any key usage restrictions set on the key to be used.
If the algorithms do not match, then the signature operation MUST be aborted with an error.</t>
          </li>
        </ul>
        <t>Definitions of COSE algorithms MAY define additional algorithm-specific parameters for <tt>COSE_Sign_Args</tt>.</t>
        <t>The following CDDL example conveys additional arguments for signing data
using the ESP256-split algorithm (see <xref target="ecdsa-split"/>)
and a key derived using <tt>ARKG-P256</tt> <xref target="I-D.bradleylundberg-ARKG"/>:</t>
        <sourcecode type="cddl"><![CDATA[
{
  3: -65539,   ; alg: ESP256-split with ARKG-P256 (placeholder value)

               ; ARKG-P256 key handle
               ; (HMAC-SHA-256-128 followed by
                  SEC1 uncompressed ECDH public key)
  -1: h'27987995f184a44cfa548d104b0a461d
        0487fc739dbcdabc293ac5469221da91b220e04c681074ec4692a76ffacb9043de
          c2847ea9060fd42da267f66852e63589f0c00dc88f290d660c65a65a50c86361',

               ; ctx argument to ARKG-Derive-Private-Key
  -2: 'ARKG-P256.test vectors',
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="security-cons">
      <name>Security Considerations</name>
      <section anchor="sec-cons-trusted-roles-protocol">
        <name>Protocol-Level Trusted Roles</name>
        <t>This specification assumes that both the <em>digester</em> and <em>signer</em> roles
described in <xref target="split-algs"/> are trusted and cooperate honestly.
This is because these split signing procedures concern details
that are considered implementation details from a verifier's perspective.
When a signature is generated by a single party,
that single party takes on both the <em>digester</em> and the <em>signer</em> roles,
and obviously trusts itself to perform the <em>digester</em> role honestly.
This assumption is carried forward for the split signing use case:
the <em>digester</em> is assumed trusted,
since it is part of the overall procedure of generating a signature over some input data.
From the verifier's perspective,
a malicious <em>digester</em> in the split signing model would have the same powers
as a malicious signature generator in a single-party signing model.
Thus, on the application or protocol level,
assuming an honest <em>digester</em> is no more restrictive than assuming an honest signature generator.</t>
      </section>
      <section anchor="sec-cons-trusted-roles-comp">
        <name>Component-Level Trusted Roles</name>
        <t>The reasoning in <xref target="sec-cons-trusted-roles-protocol"/> does not hold on the component level.
A <em>signer</em> implementation MUST NOT assume that the <em>digester</em> implementation
it interoperates with is necessarily honest.
Split signing algorithms MUST NOT be defined in a way
that enables a malicious <em>digester</em> with access to an honest <em>signer</em>
to produce forgeries or extract secrets from the <em>signer</em>.</t>
        <t>For example, for ECDSA (<xref target="ecdsa-split"/>), a malicious <em>digester</em> can choose <em>H</em>
in such a way that the <em>signer</em> will derive any <em>digester</em>-chosen value of <em>e</em>,
including zero or other potentially problematic values.
Fortunately, in this case, this does not enable the <em>digester</em> to extract the signature nonce or private key.
It also does not enable forgeries,
since the <em>digester</em> still needs to find a preimage of <em>e</em> for the relevant hash function.
Definitions of other algorithms need to ensure that similar chosen-input attacks
do not enable extracting secrets or forging protocol-level messages.</t>
      </section>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <section anchor="cose-alg-reg">
        <name>COSE Algorithms Registrations</name>
        <t>This section registers the following values in the IANA "COSE Algorithms" registry <xref target="IANA.COSE"/>:</t>
        <ul spacing="normal">
          <li>
            <t>Name: ESP256-split
            </t>
            <ul spacing="normal">
              <li>
                <t>Value: TBD (Requested Assignment -300)</t>
              </li>
              <li>
                <t>Description: ESP256 split signing</t>
              </li>
              <li>
                <t>Capabilities: [kty]</t>
              </li>
              <li>
                <t>Change Controller: IETF</t>
              </li>
              <li>
                <t>Reference: <xref target="ecdsa-split"/> of this specification</t>
              </li>
              <li>
                <t>Recommended: Yes</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Name: ESP384-split
            </t>
            <ul spacing="normal">
              <li>
                <t>Value: TBD (Requested Assignment -301)</t>
              </li>
              <li>
                <t>Description: ESP384 split signing</t>
              </li>
              <li>
                <t>Capabilities: [kty]</t>
              </li>
              <li>
                <t>Change Controller: IETF</t>
              </li>
              <li>
                <t>Reference: <xref target="ecdsa-split"/> of this specification</t>
              </li>
              <li>
                <t>Recommended: Yes</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Name: ESP512-split
            </t>
            <ul spacing="normal">
              <li>
                <t>Value: TBD (Requested Assignment -302)</t>
              </li>
              <li>
                <t>Description: ESP512 split signing</t>
              </li>
              <li>
                <t>Capabilities: [kty]</t>
              </li>
              <li>
                <t>Change Controller: IETF</t>
              </li>
              <li>
                <t>Reference: <xref target="ecdsa-split"/> of this specification</t>
              </li>
              <li>
                <t>Recommended: Yes</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Name: Ed25519ph
            </t>
            <ul spacing="normal">
              <li>
                <t>Value: TBD</t>
              </li>
              <li>
                <t>Description: EdDSA using the Ed25519ph parameter set in <xref section="5.1" sectionFormat="of" target="RFC8032"/></t>
              </li>
              <li>
                <t>Capabilities: [kty]</t>
              </li>
              <li>
                <t>Change Controller: IETF</t>
              </li>
              <li>
                <t>Reference: <xref section="5.1" sectionFormat="of" target="RFC8032"/></t>
              </li>
              <li>
                <t>Recommended: Yes</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Name: Ed25519ph-split
            </t>
            <ul spacing="normal">
              <li>
                <t>Value: TBD (Requested Assignment -303)</t>
              </li>
              <li>
                <t>Description: Ed25519ph split as defined in <xref target="eddsa-split"/></t>
              </li>
              <li>
                <t>Capabilities: [kty]</t>
              </li>
              <li>
                <t>Change Controller: IETF</t>
              </li>
              <li>
                <t>Reference: <xref target="eddsa-split"/> of this specification</t>
              </li>
              <li>
                <t>Recommended: Yes</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Name: Ed448ph
            </t>
            <ul spacing="normal">
              <li>
                <t>Value: TBD</t>
              </li>
              <li>
                <t>Description: EdDSA using the Ed448ph parameter set in <xref section="5.2" sectionFormat="of" target="RFC8032"/></t>
              </li>
              <li>
                <t>Capabilities: [kty]</t>
              </li>
              <li>
                <t>Change Controller: IETF</t>
              </li>
              <li>
                <t>Reference: <xref section="5.2" sectionFormat="of" target="RFC8032"/></t>
              </li>
              <li>
                <t>Recommended: Yes</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Name: Ed448ph-split
            </t>
            <ul spacing="normal">
              <li>
                <t>Value: TBD (Requested Assignment -304)</t>
              </li>
              <li>
                <t>Description: Ed448ph split as defined in <xref target="eddsa-split"/></t>
              </li>
              <li>
                <t>Capabilities: [kty]</t>
              </li>
              <li>
                <t>Change Controller: IETF</t>
              </li>
              <li>
                <t>Reference: <xref target="eddsa-split"/> of this specification</t>
              </li>
              <li>
                <t>Recommended: Yes</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="cose-signing-arguments-common-parameters-registry">
        <name>COSE Signing Arguments Common Parameters Registry</name>
        <t>TODO</t>
      </section>
      <section anchor="cose-signing-arguments-algorithm-parameters-registry">
        <name>COSE Signing Arguments Algorithm Parameters Registry</name>
        <t>TODO</t>
      </section>
    </section>
    <section anchor="impl-status">
      <name>Implementation Status</name>
      <t>This section is to be removed from the specification by the RFC Editor before publication as an RFC.</t>
      <t>There are currently two known implementations using features defined by this specification:</t>
      <ul spacing="normal">
        <li>
          <t><eref target="https://github.com/wwWallet">wwWallet</eref>, an EU Digital Identity pilot project.
wwWallet was entered into the
<eref target="https://www.sprind.org/en/actions/challenges/eudi-wallet-prototypes">"EUDI Wallet Prototypes" competition held by SprinD GmbH</eref>,
and a branch of the wallet was submitted in the competition.
The competition entry implements ARKG <xref target="I-D.bradleylundberg-ARKG"/>
for efficiently generating single-use hardware-bound holder binding keys.  </t>
          <t>
The <eref target="https://github.com/gunet/funke-s3a-wallet-frontend/blob/stage-3/src/services/keystore.ts">implementation</eref>
uses the <tt>COSE_Key_Ref</tt> data structure defined in version 01 of this specification
in order to send ARKG inputs to a WebAuthn authenticator,
and uses the placeholder value for the experimental split algorithm identifier ESP256-split-ARKG
defined in Section 5.2 of <xref target="I-D.bradleylundberg-ARKG"/>
to negotiate creation and usage of ARKG-derived keys for signing operations.
Thus wwWallet assumes the <em>digester</em> role while the WebAuthn authenticator assumes the <em>signer</em> role.</t>
        </li>
        <li>
          <t><eref target="https://www.yubico.com/">Yubico</eref>, a hardware security key vendor,
has produced limited-availability prototypes of their YubiKey product
with an ARKG implementation interoperable with wwWallet.
The YubiKey implementation uses the <tt>COSE_Key_Ref</tt> data structure defined in version 01 of this specification
to receive ARKG inputs from a WebAuthn Relying Party,
and uses the placeholder value for the experimental split algorithm identifier ESP256-split-ARKG
defined in Section 5.2 of <xref target="I-D.bradleylundberg-ARKG"/>
to negotiate creation and usage of ARKG-derived keys for signing operations.
Thus the YubiKey assumes the <em>signer</em> role while the WebAuthn Relying Party assumes the <em>digester</em> role.</t>
        </li>
      </ul>
      <t><xref target="tbl-impl-status-matrix"/> summarizes implementation status for individual features.</t>
      <table anchor="tbl-impl-status-matrix">
        <name>Implementation status of individual features.</name>
        <thead>
          <tr>
            <th align="left">Feature</th>
            <th align="left">Defined by</th>
            <th align="left">Digester</th>
            <th align="left">Signer</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">ESP256-split</td>
            <td align="left">This specification</td>
            <td align="left">-</td>
            <td align="left">-</td>
          </tr>
          <tr>
            <td align="left">ESP381-split</td>
            <td align="left">This specification</td>
            <td align="left">-</td>
            <td align="left">-</td>
          </tr>
          <tr>
            <td align="left">ESP512-split</td>
            <td align="left">This specification</td>
            <td align="left">-</td>
            <td align="left">-</td>
          </tr>
          <tr>
            <td align="left">Ed25519ph-split</td>
            <td align="left">This specification</td>
            <td align="left">-</td>
            <td align="left">-</td>
          </tr>
          <tr>
            <td align="left">Ed448ph-split</td>
            <td align="left">This specification</td>
            <td align="left">-</td>
            <td align="left">-</td>
          </tr>
          <tr>
            <td align="left">ESP256-split-ARKG</td>
            <td align="left">
              <xref target="I-D.bradleylundberg-ARKG"/></td>
            <td align="left">wwWallet</td>
            <td align="left">Yubico</td>
          </tr>
          <tr>
            <td align="left">ESP381-split-ARKG</td>
            <td align="left">
              <xref target="I-D.bradleylundberg-ARKG"/></td>
            <td align="left">-</td>
            <td align="left">-</td>
          </tr>
          <tr>
            <td align="left">ESP512-split-ARKG</td>
            <td align="left">
              <xref target="I-D.bradleylundberg-ARKG"/></td>
            <td align="left">-</td>
            <td align="left">-</td>
          </tr>
          <tr>
            <td align="left">
              <tt>COSE_Sign_Args</tt></td>
            <td align="left">This specification</td>
            <td align="left">wwWallet</td>
            <td align="left">Yubico</td>
          </tr>
        </tbody>
      </table>
      <section anchor="impl-status-dependents">
        <name>Dependent Specifications</name>
        <t>As indicated in the previous section,
the Internet-Draft of ARKG <xref target="I-D.bradleylundberg-ARKG"/> extends this specification with definitions for ARKG:</t>
        <ul spacing="normal">
          <li>
            <t>Section "5.2 COSE algorithms" defines COSE algorithm identifiers ESP256-split-ARKG, ESP384-split-ARKG
and ESP512-split-ARKG based on the ECDSA identifiers defined in this specification (<xref target="ecdsa-split"/>).</t>
          </li>
          <li>
            <t>Section "5.3 COSE signing arguments" defines a representation for ARKG arguments
using the <tt>COSE_Sign_Args</tt> data structure defined in this specification (<xref target="cose-sign-args"/>).</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.bradleylundberg-ARKG">
          <front>
            <title>The Asynchronous Remote Key Generation (ARKG) algorithm</title>
            <author fullname="Emil Lundberg" initials="E." surname="Lundberg">
              <organization>Yubico</organization>
            </author>
            <author fullname="John Bradley" initials="J." surname="Bradley">
              <organization>Yubico</organization>
            </author>
            <date day="7" month="July" year="2025"/>
            <abstract>
              <t>   Asynchronous Remote Key Generation (ARKG) is an abstract algorithm
   that enables delegation of asymmetric public key generation without
   giving access to the corresponding private keys.  This capability
   enables a variety of applications: a user agent can generate
   pseudonymous public keys to prevent tracking; a message sender can
   generate ephemeral recipient public keys to enhance forward secrecy;
   two paired authentication devices can each have their own private
   keys while each can register public keys on behalf of the other.

   This document provides three main contributions: a specification of
   the generic ARKG algorithm using abstract primitives; a set of
   formulae for instantiating the abstract primitives using concrete
   primitives; and an initial set of fully specified concrete ARKG
   instances.  We expect that additional instances will be defined in
   the future.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bradleylundberg-cfrg-arkg-09"/>
        </reference>
        <reference anchor="IANA.COSE" target="https://www.iana.org/assignments/cose/">
          <front>
            <title>CBOR Object Signing and Encryption (COSE)</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </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="RFC8032">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA). The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves. An example implementation and test vectors are provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8032"/>
          <seriesInfo name="DOI" value="10.17487/RFC8032"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9864">
          <front>
            <title>Fully-Specified Algorithms for JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE)</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="O. Steele" initials="O." surname="Steele"/>
            <date month="October" year="2025"/>
            <abstract>
              <t>This specification refers to cryptographic algorithm identifiers that fully specify the cryptographic operations to be performed, including any curve, key derivation function (KDF), and hash functions, as being "fully specified". It refers to cryptographic algorithm identifiers that require additional information beyond the algorithm identifier to determine the cryptographic operations to be performed as being "polymorphic". This specification creates fully-specified algorithm identifiers for registered JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE) polymorphic algorithm identifiers, enabling applications to use only fully-specified algorithm identifiers. It deprecates those polymorphic algorithm identifiers.</t>
              <t>This specification updates RFCs 7518, 8037, and 9053. It deprecates polymorphic algorithms defined by RFCs 8037 and 9053 and provides fully-specified replacements for them. It adds to the instructions to designated experts in RFCs 7518 and 9053.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9864"/>
          <seriesInfo name="DOI" value="10.17487/RFC9864"/>
        </reference>
        <reference anchor="SEC1" target="https://www.secg.org/sec1-v2.pdf">
          <front>
            <title>SEC 1: Elliptic Curve Cryptography</title>
            <author>
              <organization>Certicom Research</organization>
            </author>
            <date year="2009" month="May"/>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="FIPS-201" target="https://doi.org/10.6028/NIST.SP.800-73pt2-5">
          <front>
            <title>Interfaces for Personal Identity Verification: Part 2 – PIV Card Application Card Command Interface</title>
            <author fullname="Hildegard Ferraiolo">
              <organization>National Institute of Standards and Technology, Gaithersburg, MD</organization>
            </author>
            <author fullname="Ketan Mehta">
              <organization>National Institute of Standards and Technology, Gaithersburg, MD</organization>
            </author>
            <author fullname="Salvatore Francomacaro">
              <organization>National Institute of Standards and Technology, Gaithersburg, MD</organization>
            </author>
            <author fullname="Ramaswamy Chandramouli">
              <organization>National Institute of Standards and Technology, Gaithersburg, MD</organization>
            </author>
            <author fullname="Sarbari Gupta">
              <organization>National Institute of Standards and Technology, Gaithersburg, MD</organization>
            </author>
            <date year="2024"/>
          </front>
          <refcontent>NIST Special Publication (SP) NIST SP 800-73pt2-5</refcontent>
        </reference>
        <reference anchor="FIPS-204" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.204.pdf">
          <front>
            <title>Module-Lattice-Based Digital Signature Standard</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2024" month="August"/>
          </front>
        </reference>
        <reference anchor="FIPS-186-5" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf">
          <front>
            <title>Digital Signature Standard (DSS)</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2023" month="February"/>
          </front>
        </reference>
        <reference anchor="I-D.COSE-Hash-Envelope">
          <front>
            <title>COSE Hash Envelope</title>
            <author fullname="Orie Steele" initials="O." surname="Steele">
         </author>
            <author fullname="Steve Lasker" initials="S." surname="Lasker">
         </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <date day="15" month="November" year="2025"/>
            <abstract>
              <t>   This document defines new COSE header parameters for signaling a
   payload as an output of a hash function.  This mechanism enables
   faster validation, as access to the original payload is not required
   for signature validation.  Additionally, hints of the hashed
   payload's content format and availability are defined, providing
   references to optional discovery mechanisms that can help to find
   original payload content.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-hash-envelope-10"/>
        </reference>
        <reference anchor="PKCS11-Spec-v3.1" target="https://docs.oasis-open.org/pkcs11/pkcs11-spec/v3.1/os/pkcs11-spec-v3.1-os.html">
          <front>
            <title>PKCS #11 Specification Version 3.1.</title>
            <author fullname="Dieter Bong">
              <organization/>
            </author>
            <author fullname="Tony Cox">
              <organization/>
            </author>
            <date year="2023" month="July" day="23"/>
          </front>
          <annotation>Latest stage: <eref target="https://docs.oasis-open.org/pkcs11/pkcs11-spec/v3.1/pkcs11-spec-v3.1.html">https://docs.oasis-open.org/pkcs11/pkcs11-spec/v3.1/pkcs11-spec-v3.1.html</eref>.</annotation>
          <refcontent>OASIS Standard</refcontent>
        </reference>
        <reference anchor="OPENPGPCARD" target="https://gnupg.org/ftp/specs/OpenPGP-smart-card-application-3.4.1.pdf">
          <front>
            <title>Functional Specification of the OpenPGP application on ISO Smart Card Operating Systems</title>
            <author fullname="Achim Pietig">
              <organization/>
            </author>
            <date year="2020" month="March"/>
          </front>
          <refcontent>Version 3.4.1</refcontent>
        </reference>
        <reference anchor="RFC9380">
          <front>
            <title>Hashing to Elliptic Curves</title>
            <author fullname="A. Faz-Hernandez" initials="A." surname="Faz-Hernandez"/>
            <author fullname="S. Scott" initials="S." surname="Scott"/>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <author fullname="R. S. Wahby" initials="R. S." surname="Wahby"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="August" year="2023"/>
            <abstract>
              <t>This document specifies a number of algorithms for encoding or hashing an arbitrary string to a point on an elliptic curve. This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9380"/>
          <seriesInfo name="DOI" value="10.17487/RFC9380"/>
        </reference>
        <reference anchor="SECDSA" target="https://eprint.iacr.org/2021/910">
          <front>
            <title>SECDSA: Mobile signing and authentication under classical "sole control"</title>
            <author fullname="Eric Verheul">
              <organization/>
            </author>
            <date year="2021" month="July"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 509?>

<section numbered="false" anchor="document-history">
      <name>Document History</name>
      <t>-04</t>
      <ul spacing="normal">
        <li>
          <t>Added Implementation Status section.</t>
        </li>
      </ul>
      <t>-03</t>
      <ul spacing="normal">
        <li>
          <t>Updated reference to ARKG parameter <tt>info</tt> renamed to <tt>ctx</tt>.</t>
        </li>
        <li>
          <t>Refined abstract and introduction to emphasize that the central novelty is not split algorithms as a concept,
but providing COSE algorithm identifiers for use cases that benefit from such splitting.</t>
        </li>
        <li>
          <t>Replaced reference to draft-ietf-jose-fully-specified-algorithms with RFC 9864.</t>
        </li>
        <li>
          <t>Added inline definitions of Ed25519ph and Ed448ph registrations,
replacing speculative references to registrations that do not exist elsewhere.</t>
        </li>
        <li>
          <t>Added missing captions to Tables 1 and 2.</t>
        </li>
        <li>
          <t>Added Security Considerations section.</t>
        </li>
      </ul>
      <t>-02</t>
      <ul spacing="normal">
        <li>
          <t>Renamed document from "COSE Algorithms for Two-Party Signing" to "Split signing algorithms for COSE"
and updated introduction and terminology accordingly.</t>
        </li>
        <li>
          <t>Dropped definitions for HashML-DSA, as split variants of ML-DSA are being actively discussed in other IETF groups.</t>
        </li>
        <li>
          <t>Changed "Base algorithm" heading in definition tables to "Verification algorithm".</t>
        </li>
        <li>
          <t>Remodeled COSE_Key_Ref as COSE_Sign_Args.
          </t>
          <ul spacing="normal">
            <li>
              <t>Dropped definitions of reference types for COSE Key Types registry.</t>
            </li>
          </ul>
        </li>
      </ul>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>Added IANA registration requests for algorithms defined.</t>
        </li>
        <li>
          <t>Updated references and other editorial tweaks.</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Initial individual draft</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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
LPes9rmRKC9ccYJC72ZC7sJ1iJs7rtvCR1QCR5KtGu1hzR6Xc2fpmUnabNUI
felgPZy0y/jCel1H07v4QVgE9vFSxpCU3by+sStVyRCkHNbEVNqg66PqKtkC
RYmAnQErMfNNkbWYZOmcERsaS1DxcXN9xQBxiFVX8SQfx74jNdzA+K5jOLhB
AAkj3evce1/EW6wN23++sC7/SBh/Ee1iDy9OyDhyvfYLTOI7/wj3T1F/t+kF
TXI6uhzu7hk8vojr708qsPidaP5TvmhgWpO5z59dtbrnlbb3dzauBO/aV8IX
37zS7mC4cSV4174SvviWlTiXOhS2FhFSihHkLGMsftTQAGeAvaeQ4x6f5eQZ
t7uei/f8A8JkGWNbYDozrTQbGke2nOv0F8q6ZyXZ0lRDuGNijBwmSpxmgKEL
XUPHMVj1vgzXfzMLV621rh3l6mTVqi9tiWccJbVuaH0ehwgGkCq9ajEYggzG
piki3bQ5ZbwmqRqBMFTByXZv24QmCP/9vZ3+AQhalqhis8etsWa0TQXHtZ63
l6+fnT+/bS61kSzfbJ6/dQHBqsKD4Qd2usD5JyYDuT2/tVM8yL6GvTdJuv7a
wC6sf4cpiIMBVwfCRy6N+1DlxxqNywkMKb5GAq8l73dSd+7PhG6eb6r0JjUv
FZGrFRlnpmU9x5WI9Ti+Xgj6Bb4vXPN9lcY+wuP9Sk7vF/m9skxh4am7icZr
5wXiWHV5qw9Rdee02UWrvJ6/7HLYVapvHYINjuq3hQDtpEn+mj7O8RIW0p2d
fQeQNUjrrx+AlD98EM5hG6VonKHT/+76j6cT1jVIpsuyRjYtuGT0+Qlt60Jz
4MuMKhs/Ua4+l4mbfLlpNNiZps5yVaC5vYMLpYqrMViFLNHDauOmQqQpKlT7
D6pRbEzmuDWPMmlcSeWc8NsmgmdK8bYbSOCFoMRLTihxezaXa9s2bmNFEAB1
VpclrW4/zm4J0dsg/3RLBihRytjEWxztn9A6/iVTxv9BrW6RIrz8A5Vvpjkb
0ralqT9IwRbvw+DetLGd2H/YmAhxCk/lYT4jQKV49Yka5WvZvXlnq0etoCDh
EW/DasqzV7jxwoaWjqFv+GjmFLmPRZEtQPK64s6acQAGi/n1YoC4xb9vUHBv
QGr1LSXtHf7IhmoWto5pvnHnxsm8pSgS2gTTreTMl9Mk1bhN3JY0HhtBdr2M
avoojYnxc7xKGWaXUz7YArL1B40aBRxkUtZcnm/LPI4WgLysUQXb4UUU59iM
lHwaYC4XXOtDU0KzUzeyqU0YyTvl0TWCeybUn6SgJzaIwNMChgvrNuWYF7os
F+oAkaZAmmwlnl1fnFw873lHreptrRgSpkR8vZL37SCVddyHoSJyHZ+cvBEQ
6c7nMnN3kDQJ03XsN42ZQIBMheyaMbb2e1DVCfu7YL+7wDMIXP7xj38EYRh7
9cnFd+Iz7QDcFv8mvvuDyAFMsYUlvK4Qv0dS0NvfiViOVYxfcETT9e5xRk6w
HsueNSfgs6jYKndZoK8aLRtFivu+G1a2220+f8ZQrX3Ne2vdaJliTnsxjHVr
kZSyGspU7lWRYOv0NiY8XgPcLNFgQ2mHnFDxi3hDRP/Cana9Wih06RwvXlmR
2hAg2njvK9FhS1gIPMdJt00EUUmEDVidXsWXajNdc3/aF0xi4ampDVQBRxlb
18tTzgSzTR5hsUD/ntr0ks2koOaS2QtnkoDIbVjMZR7gLk8MNNBHF5Tb4WaL
LCJmahYzVm/8gh0OFrNxqbNGm7zsDNPE1Pip6nJme1G5OYuAw97eOM0wSaId
KGBVVJalGUjRCbmO3PZy6jvztMByu/VaDkkestqkGk0bspbrkCGxWwzZH+h2
qk+cJgdGXp4TTbqVs4rgz7RSzUrRc+4m1YIknogDGpzo9oFwybFgaLC2D4W/
t7u7fQBmiu3UYR0aonM5s3i2iGWgcLMACAyZsOee14iWf+98j2DiUZxYrX/1
7PX50bE/en3k43KD4b4hK4V9zc8FH1SDuACrEyB02CE5PT55DYEJnn3BlfDk
hT84FLOnwxcH+y8ODnYng/0dubMTTOTuzn446O+M+3JnbxCWs/d39l9Mghfb
B+E4COU4GB5sy2B3Z+9gOByE8mAwHg77qr8T7O0P+i92VIBv5Iu9yUQG44P+
znbo4hUM93deKHnQ3+tPwp1hKId7LyZ7e/u7Q7W3vbt/MOkH/X4Y7O9Phgf9
cG+vH+ztSvh3tx/s723vDZ52W2gJoWspRKhQG8JWRH14KJ6WpO/RSYYlmNk0
008dPyPsIVw6hAlWhDWMGqbmjY8NnXvySZcmMPLfqCXY0Gs86AyUv8INKzyC
PvZzfuHTThbfhlP3rVvepbZVdTAy4xQErCWAq2rwOKPXaOc5rd177kMbwHi3
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
Fc/M/TxO1EYq6f0PraK9tgxfAAA=

-->

</rfc>
