<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-lundberg-cose-two-party-signing-algs-06" 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-06"/>
    <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="2026" month="February" day="27"/>
    <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 148?>

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

<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="NIST-SP-800-73-5"/>.</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.
Security considerations for this split may also differ between 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,
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>.
For example, this specification defines Ed25519ph-split (<xref target="eddsa-split"/>) as a split variant of Ed25519ph <xref target="RFC8032"/>.
Note that Ed25519 and Ed25519ph have distinct verification algorithms,
but Ed25519ph and Ed25519ph-split use the same verification algorithm.</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 anchor="prior-art">
        <name>Prior Art</name>
        <t>Split signing is a common technique used in existing smart card standards.
The following subsections expand on how the technique is applied in OpenPGP <xref target="OPENPGPCARD"/>,
PKCS #11 <xref target="PKCS11-Spec-v3.1"/>, and PIV <xref target="NIST-SP-800-73-5"/>.</t>
        <section anchor="openpgp">
          <name>OpenPGP</name>
          <t>The OpenPGP smart card protocol <xref target="OPENPGPCARD"/>
defines the format of signing commands in section "7.2.10 PSO: COMPUTE DIGITAL SIGNATURE":</t>
          <ul empty="true">
            <li>
              <t><strong>7.2.10 PSO: COMPUTE DIGITAL SIGNATURE</strong></t>
              <t>The command for digital signature computation is shown in the table below.
The hash value (ECDSA) or the DigestInfo is delivered in the data field of the command. [...]</t>
            </li>
          </ul>
          <t>The "Data field" parameter is subsequently defined as "Data to be integrated in the DSI: hash value (ELC) or DigestInfo (RSA)".
Thus both ECDSA and RSA signatures are computed jointly by the host computing the digest of the signed data
and the smart card finalizing the signature on the digest;
the host acts as <em>digester</em> and the smart card acts as <em>signer</em>.</t>
          <t>TODO: Spec 3.4.1 only covers ECDSA and RSA, but some implementations also support Ed25519.
Identify and include good references for how OpenPGP smart cards handle Ed25519.</t>
        </section>
        <section anchor="pkcs-11">
          <name>PKCS #11</name>
          <t>PKCS #11 <xref target="PKCS11-Spec-v3.1"/>
defines signing commands in sections "5.13 Signing and MACing functions" and "5.14 Message-based signing and MACing functions".
These sections define <tt>C_SignInit</tt> and <tt>C_MessageSignInit</tt> functions that both take a <tt>pMechanism</tt> parameter indicating the signature mechanism.
Mechanisms are defined in section "6 Mechanisms", which notably includes the subsections
"6.3.12 ECDSA without hashing" and "6.3.13 ECDSA with hashing":</t>
          <ul empty="true">
            <li>
              <t><strong>6.3.12 ECDSA without hashing</strong></t>
              <t>[...]</t>
              <t>The ECDSA without hashing mechanism, denoted <strong>CKM_ECDSA</strong>, is a mechanism for single-part signatures and verification for ECDSA.
(This mechanism corresponds only to the part of ECDSA that processes the hash value, which should not be longer than 1024 bits;
it does not compute the hash value.)</t>
              <t>[...]</t>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t><strong>6.3.13 ECDSA with hashing</strong></t>
              <t>[...]</t>
              <t>The ECDSA with SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA3-224, SHA3-256, SHA3-384, SHA3-512 mechanism,
denoted <strong>CKM_ECDSA_[SHA1|SHA224|SHA256|SHA384|SHA512|SHA3_224|SHA3_256|SHA3_384|SHA3_512]</strong> respectively,
is a mechanism for single- and multiple-part signatures and verification for ECDSA.
This mechanism computes the entire ECDSA specification, including the hashing with
SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA3-224, SHA3-256, SHA3-384, SHA3-512 respectively.</t>
              <t>[...]</t>
            </li>
          </ul>
          <t>Thus PKCS #11 supports both split signing using the <strong>CKM_ECDSA</strong> mechanism
and "non-split" signing using the <strong>CKM_ECDSA_SHA*</strong> mechanisms;
when using <strong>CKM_ECDSA</strong>,
the PKCS #11 caller acts as <em>host</em> and the Cryptoki implementation acts as <em>signer</em>.</t>
        </section>
        <section anchor="piv-fips-201-nist-sp-800">
          <name>PIV: FIPS-201, NIST SP 800</name>
          <t>NIST Special Publication 800 <xref target="NIST-SP-800-73-5"/>
contains technical specifications for the Personal Identity Verification (PIV) standard <xref target="FIPS-201"/>,
and defines the format of signing commands in section "3.2.4. GENERAL AUTHENTICATE Card Command":</t>
          <ul empty="true">
            <li>
              <t><strong>3.2.4. GENERAL AUTHENTICATE Card Command</strong>
[...]</t>
              <t>The GENERAL AUTHENTICATE command SHALL be used with the digital signature key ('9C') to
realize the signing functionality on the PIV client application programming interface. Data to be
signed is expected to be hashed off-card. Appendix A.4 illustrates the use of the GENERAL
AUTHENTICATE command for signature generation.</t>
              <t>[...]</t>
            </li>
          </ul>
          <t>Appendix A.4 gives examples of RSA and ECDSA signature generation commands.
For RSA the command needs to be sent in two parts,
giving the "Data Field" argument first as "'7C' – L1 { '82' '00' '81' L2 {first part of the PKCS #1 v1.5 or PSS padded message hash value }}"
and then "{second and last part of the PKCS #1 v1.5 or PSS padded message hash value}";
for ECDSA the "Data Field" argument is given as "'7C' – L1 { '82' '00' '81' L2 {hash value of message}}".</t>
          <t>Thus both ECDSA and RSA signatures are computed jointly by the host computing the digest of the signed data
and the smart card finalizing the signature on the digest;
the host acts as <em>digester</em> and the smart card acts as <em>signer</em>.</t>
        </section>
      </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>How the digest, and any related <tt>COSE_Sign_Args</tt> structure (see <xref target="cose-sign-args"/>),
are transported from <em>digester</em> to <em>signer</em> is out of scope for this specification,
but it is expected that the digest will usually be transmitted as the "data to be signed" argument.</t>
      <t>The algorithm identifiers defined in this specification with "-split" in their names
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>
      <t>The following subsections define an initial set of split signing algorithm identifiers.
The last subsection provides guidance for defining additional identifiers beyond this initial set.</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 anchor="defining-split-algs">
        <name>Defining Split Signing Algorithms</name>
        <t>Future definitions of additional split signing algorithm identifiers
SHOULD follow the conventions established in <xref target="split-algs"/> as far as possible.
For example, if a signature algorithm prescribes insertion of domain separation tags
in a way that requires processing the entirety of the data to be signed,
it might be necessary to delegate the domain separation responsibility to the <em>digester</em>.
Per the considerations in <xref target="sec-cons-trusted-roles-comp"/>,
split signing algorithm identifiers SHOULD be defined in ways that minimize
how much responsibility is delegated to the <em>digester</em>.</t>
        <t>As a concrete example, consider ML-DSA and HashML-DSA <xref target="FIPS-204"/>.
ML-DSA and HashML-DSA prefix the input data with a 0 octet and a 1 octet respectively,
which enforces domain separation between ML-DSA and HashML-DSA signatures.
<xref section="D" sectionFormat="of" target="RFC9881"/> describes a mode of ML-DSA
that could be assigned a split signing algorithm identifier
where the <em>digester</em> performs <tt>Computeμ</tt> and the <em>signer</em> performs <tt>Signμ</tt>.
Note that this puts the <em>digester</em> in control of the domain separation tags;
this is necessary if the hash step is not performed by the <em>signer</em>.
Therefore with this construction, it is the <em>digester</em> that decides
whether the signing protocol will produce an ML-DSA signature or a HashML-DSA signature.
In contrast, HashML-DSA first hashes the input data alone and then another time with domain separation tags;
therefore HashML-DSA can be assigned a split signing algorithm identifier
that keeps the <em>signer</em> in control of the domain separation tags
and ensures that the signing protocol can only produce HashML-DSA signatures.</t>
      </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 a similar division between "application" and "secure element"
typically exists already:
even if all steps of the signing algorithm are executed in a trusted secure element,
the inputs to the secure element are provided by some outside component such as a software application.
If the application can provide any input to be signed,
then for all practical purposes it is trusted with possession of any private keys
for as long as it is authorized to exercise the secure element.
The application can in practice obtain a signature over any chosen message
without needing to perform a forgery attack.
The same relationship exists between <em>digester</em> and <em>signer</em>.
Applications that cannot trust an external <em>digester</em> -
for example a hardware security device with an integrated secure display of what data is about to be signed -
by definition have no use for split signing algorithm identifiers.</t>
        <t>Similarly from a verifier's perspective,
these split signing procedures are implementation details.
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.
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 -
any that could not be produced by simply requesting a signature over the desired message -
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 make forgeries easier,
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>
        <t>For example, a naively prehashed version of FALCON <xref target="FALCON"/> would allow such a key compromise:
A FALCON signature is a value <tt>s</tt> such that both <tt>s</tt> and <tt>s * h - hash(r || m)</tt> are short,
where <tt>h</tt> is the public key and <tt>r</tt> a randomizer.
If the digester gets to query the signer for signatures of arbitrary stand-ins for <tt>hash(r || m)</tt>,
they can extract the private key by for example asking for repeated signatures of 0.
Therefore, definitions of split signing algorithms need to be reviewed and potentially have security proofs adjusted.</t>
      </section>
      <section anchor="sec-cons-invalid-alg-use">
        <name>Incorrect Use of Split Signing Algorithm Identifiers</name>
        <t><xref target="split-algs"/> recommends against exposing split signing algorithm identifiers -
including those defined in this specification with "-split" in their names -
to signature verifiers.
For example, they should not appear as the "alg" parameter of a COSE_Key public key sent to a signature verifier.
If a split signing algorithm identifier is encountered in an invalid context like this,
the recipient SHOULD reject the message with a fatal error.</t>
        <t>This is because the purpose of these split signing algorithm identifiers
is to enable more flexible production of signatures that can be verified by existing implementations of existing verification algorithms.
A prevalence of these identifiers appearing outside the split signing context would defeat this purpose;
we therefore recommend such use SHOULD NOT be tolerated.</t>
        <t>This recommendation is the opposite of the oft-cited "robustness principle" stated in paragraph 3.9 of <xref target="RFC1958"/>.
Implementations MAY choose to instead follow the robustness principle and tolerate incorrect use of split signing algorithm identifiers,
instead interpreting the identifier as referencing the defined corresponding verification algorithm.
Note however that this is no longer considered a best practice and is likely to harm interoperability <xref target="RFC9413"/>.</t>
        <t>A verifier's choice to tolerate or not tolerate incorrect use of split signing algorithm identifiers
is expected to not affect security,
assuming a split algorithm identifier is interpreted as an alias representing the same verification algorithm as a non-split algorithm identifier.</t>
      </section>
    </section>
    <section anchor="impl-cons">
      <name>Implementation Considerations</name>
      <section anchor="impl-cons-non-split-algs">
        <name>Using Non-Split Signing Algorithm Identifiers in a Split Signing Protocol</name>
        <t>A protocol designed to use split signing algorithm identifiers such as those defined in this specification
MAY also allow use of algorithm identifiers that do not represent split signing algorithms.
In this case, the <em>signer</em> performs all steps of the signing procedure as usual.
For example, if the <em>signer</em> receives a signature request with an the algorithm identifier "ESP256",
then the <em>digester</em> passes the input data through unmodified
and it is the <em>signer</em> that computes the SHA-256 digest of the input data as defined in the ESP256 definition <xref target="RFC9864"/>.</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">ESP384-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">ESP384-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="27" month="February" year="2026"/>
            <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-10"/>
        </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="FALCON" target="https://falcon-sign.info/">
          <front>
            <title>FALCON: Fast-Fourier Lattice-based Compact Signatures over NTRU</title>
            <author fullname="Pierre-Alain Fouque">
              <organization/>
            </author>
            <author fullname="Jeffrey Hoffstein">
              <organization/>
            </author>
            <author fullname="Paul Kirchner">
              <organization/>
            </author>
            <author fullname="Vadim Lyubashevsky">
              <organization/>
            </author>
            <author fullname="Thomas Pornin">
              <organization/>
            </author>
            <author fullname="Thomas Prest">
              <organization/>
            </author>
            <author fullname="Thomas Ricosset">
              <organization/>
            </author>
            <author fullname="Gregor Seiler">
              <organization/>
            </author>
            <author fullname="William Whyte">
              <organization/>
            </author>
            <author fullname="Zhenfei Zhang">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
        </reference>
        <reference anchor="FIPS-201" target="https://csrc.nist.gov/pubs/fips/201-3/final">
          <front>
            <title>Personal Identity Verification (PIV) of Federal Employees and Contractors</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2022"/>
          </front>
        </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="NIST-SP-800-73-5" 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="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="RFC1958">
          <front>
            <title>Architectural Principles of the Internet</title>
            <author fullname="B. Carpenter" initials="B." role="editor" surname="Carpenter"/>
            <date month="June" year="1996"/>
            <abstract>
              <t>The Internet and its architecture have grown in evolutionary fashion from modest beginnings, rather than from a Grand Plan. While this process of evolution is one of the main reasons for the technology's success, it nevertheless seems useful to record a snapshot of the current principles of the Internet architecture. This is intended for general guidance and general interest, and is in no way intended to be a formal or invariant reference model. This memo provides information for the Internet community. This memo does not specify an Internet standard of any kind.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1958"/>
          <seriesInfo name="DOI" value="10.17487/RFC1958"/>
        </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="RFC9413">
          <front>
            <title>Maintaining Robust Protocols</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <date month="June" year="2023"/>
            <abstract>
              <t>The main goal of the networking standards process is to enable the long-term interoperability of protocols. This document describes active protocol maintenance, a means to accomplish that goal. By evolving specifications and implementations, it is possible to reduce ambiguity over time and create a healthy ecosystem.</t>
              <t>The robustness principle, often phrased as "be conservative in what you send, and liberal in what you accept", has long guided the design and implementation of Internet protocols. However, it has been interpreted in a variety of ways. While some interpretations help ensure the health of the Internet, others can negatively affect interoperability over time. When a protocol is actively maintained, protocol designers and implementers can avoid these pitfalls.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9413"/>
          <seriesInfo name="DOI" value="10.17487/RFC9413"/>
        </reference>
        <reference anchor="RFC9881">
          <front>
            <title>Internet X.509 Public Key Infrastructure -- Algorithm Identifiers for the Module-Lattice-Based Digital Signature Algorithm (ML-DSA)</title>
            <author fullname="J. Massimo" initials="J." surname="Massimo"/>
            <author fullname="P. Kampanakis" initials="P." surname="Kampanakis"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="B. E. Westerbaan" initials="B. E." surname="Westerbaan"/>
            <date month="October" year="2025"/>
            <abstract>
              <t>Digital signatures are used within X.509 certificates and Certificate Revocation Lists (CRLs), and to sign messages. This document specifies the conventions for using FIPS 204, the Module-Lattice-Based Digital Signature Algorithm (ML-DSA) in Internet X.509 certificates and CRLs. The conventions for the associated signatures, subject public keys, and private key are also described.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9881"/>
          <seriesInfo name="DOI" value="10.17487/RFC9881"/>
        </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 716?>

<section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>We would like to thank
Ilari Liusvaara,
Lucas Prabel,
Sophie Schmieg
and
Falko Strenzke
for their reviews of and contributions to this specification.</t>
    </section>
    <section numbered="false" anchor="document-history">
      <name>Document History</name>
      <t>-06</t>
      <ul spacing="normal">
        <li>
          <t>Added "Prior Art" section to Introduction.</t>
        </li>
      </ul>
      <t>-05</t>
      <ul spacing="normal">
        <li>
          <t>Fixed ESP384-split misspelled as ESP381-split.</t>
        </li>
        <li>
          <t>Clarified that non-"-split" alg IDs defined here may be exposed to verifiers.</t>
        </li>
        <li>
          <t>Clarified that transport of digest is out of scope, but expected to be passed as data to be signed.</t>
        </li>
        <li>
          <t>Added Security Considerations section "Incorrect Use of Split Signing Algorithm Identifiers".</t>
        </li>
        <li>
          <t>Added Implementation Considerations section "Using Non-Split Signing Algorithm Identifiers in a Split Signing Protocol".</t>
        </li>
        <li>
          <t>Added section "Defining Split Signing Algorithms" with guidance for handling domain separation tags in new definitions.</t>
        </li>
        <li>
          <t>Clarified in introduction that Ed25519 and Ed25519ph(-split) have distinct verification algorithms.</t>
        </li>
        <li>
          <t>Clarified in section "Protocol-Level Trusted Roles" why digester is necessarily trusted.</t>
        </li>
        <li>
          <t>Clarified in section "Component-Level Trusted Roles" that redundant forgeries are acceptable,
and added example of key compromise concern for naively hashed FALCON.</t>
        </li>
      </ul>
      <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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
//d7Sgc61fj3p4DcLH9a6seb2g3+1VYMHRZhtY5ydKSADlK0HsfFNeDRRE/s
1VGXkCFbJcFXv95mjWnlycNec7M0i9vmfXX0sMPJoiqZaZTumVrD1UPfW+bY
EaZ9Qwwaw7y/0RRkUfl3FKkZ9RV0jjqhx9bOAEnVy42oXQFoJ0KDrWQyZUxc
hkS8uhWsIjIT3KnOf4X9Tbz53SwmzeheJmEPO3jRw+skG+XXcAu36YIb6GQv
gubcvjbEvGDZvKXCx3Eu1HQGS+WO06YoL8JoAliIWQ474Z4NmONr2Pradu3K
EFwIKmRprounU0CrFSTCyb6P0h55UBms1vQfo4wlTYfhCN4KOSQNUMRoC4SJ
Kkfhb6hG8NXTC3tuSVH1j10r8QtGvDBBVrFckqV4/qlR3tR8JxNHLQs/P4b7
LWhRXDEEUgmr22+U/+YP8sT8pJqfMqUSEaFA+t/yO4fsmlB2U22HnDndcsl1
pgNa0MaDpSGR0kZAAGT6cOcgCdDN3Bxh5vI2D9m5MYKngyvorCyTxWdwnI71
IQ3V1iiNajJUMU2yPM3HC2SyvEA6wcrup+II/OeZipeMsqoZAL+iyX87l66a
YxDfDhUtzDTsQLkUzbV5JxOXPWKIWIyLfD5jqURBZFC2P0q/43EHdJ6MTYGz
l141rUYRFit6kzKlUvE3DOu79Lj4uqWEjmj7vmFXHpVTYMKCWKC3ekk/2SQq
oXjgiRbMufpUZ5Pejbe9Og3faxM0/DYIhpqiGDE2IC1vlfyoacY+znhiGpN6
XiWxZPB/ASJLi8r5jgAA

-->

</rfc>
