<?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-ietf-openpgp-nist-bp-comp-01" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.2 -->
  <front>
    <title abbrev="NIST Brainpool PQC">PQ/T Composite Schemes for OpenPGP using NIST and Brainpool Elliptic Curve Domain Parameters</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-openpgp-nist-bp-comp-01"/>
    <author initials="Q." surname="Dang" fullname="Quynh Dang">
      <organization>NIST</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>quynh.dang@nist.gov</email>
      </address>
    </author>
    <author initials="S." surname="Ehlen" fullname="Stephan Ehlen">
      <organization>BSI</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>stephan.ehlen@bsi.bund.de</email>
      </address>
    </author>
    <author initials="S." surname="Kousidis" fullname="Stavros Kousidis">
      <organization>BSI</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>kousidis.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="J." surname="Roth" fullname="Johannes Roth">
      <organization>MTG AG</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>johannes.roth@mtg.de</email>
      </address>
    </author>
    <author initials="F." surname="Strenzke" fullname="Falko Strenzke">
      <organization>MTG AG</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>falko.strenzke@mtg.de</email>
      </address>
    </author>
    <date year="2025" month="October" day="16"/>
    <area>sec</area>
    <workgroup>Network Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 149?>

<t>This document defines PQ/T composite schemes based on ML-KEM and ML-DSA combined with ECDH and ECDSA algorithms using the NIST and Brainpool domain parameters for the OpenPGP protocol.</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-ietf-openpgp-nist-bp-comp/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        WG Working Group mailing list (<eref target="mailto:openpgp@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/openpgp/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/openpgp/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/openpgp-pqc/draft-ehlen-openpgp-nist-bp-comp"/>.</t>
    </note>
  </front>
  <middle>
    <?line 153?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines PQ/T composite schemes based on ML-KEM and ML-DSA combined with ECDH and ECDSA using the NIST and Brainpool domain parameters for the OpenPGP protocol. It is an extension of <xref target="I-D.draft-ietf-openpgp-pqc"/>, which introduces post-quantum cryptography in OpenPGP using hybrid KEMs and digital signatures combining ML-KEM and ML-DSA with ECC algorithms based on the Edwards Curves defined in <xref target="RFC7748"/> and <xref target="RFC8032"/>.</t>
      <t>Due to their long-standing and wide deployment, there are well-tested, secure, and efficient implementations of ECDSA and ECDH with NIST-curves <xref target="SP800-186"/>. The same applies to Brainpool curves <xref target="RFC5639"/> which are recommended or required in certain regulatory domains, for instance in Germany <xref target="TR-03111"/>.  The purpose of this document is to support users who would like to or have to use such hybrid KEMs and/or signatures with OpenPGP.</t>
      <section anchor="conventions-used-in-this-document">
        <name>Conventions used in this Document</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>In wire format descriptions, the operator "<tt>||</tt>" is used to indicate concatenation of groups of octets.</t>
        <section anchor="terminology-for-multi-algorithm-schemes">
          <name>Terminology for Multi-Algorithm Schemes</name>
          <t>The terminology in this document is oriented towards the definitions in <xref target="RFC9794"/>.
Specifically, the terms "multi-algorithm", "composite" and "non-composite" are used in correspondence with the definitions therein.
The abbreviation "PQ" is used for post-quantum schemes.
To denote the combination of post-quantum and traditional schemes, the abbreviation "PQ/T" is used.
The short form "PQ(/T)" stands for PQ or PQ/T.</t>
        </section>
      </section>
      <section anchor="post-quantum-cryptography">
        <name>Post-Quantum Cryptography</name>
        <t>This section describes the individual post-quantum cryptographic schemes.
All schemes listed here are believed to provide security in the presence of a cryptographically relevant quantum computer.</t>
        <section anchor="mlkem-intro">
          <name>ML-KEM</name>
          <t>ML-KEM <xref target="FIPS-203"/> is based on the hardness of solving the Learning with Errors problem in module lattices (MLWE).
The scheme is believed to provide security against cryptanalytic attacks based on classical as well as quantum algorithms.
This specification defines ML-KEM only in composite combination with ECDH encryption schemes in order to provide a pre-quantum security fallback.</t>
        </section>
        <section anchor="mldsa-intro">
          <name>ML-DSA</name>
          <t>ML-DSA <xref target="FIPS-204"/> is a signature scheme that, like ML-KEM, is based on the hardness of solving the Learning With Errors problem and a variant of the Short Integer Solution problem in module lattices (MLWE and SelfTargetMSIS).
Accordingly, this specification only defines ML-DSA in composite combination with ECDSA signature schemes.</t>
        </section>
      </section>
      <section anchor="elliptic-curve-cryptography">
        <name>Elliptic Curve Cryptography</name>
        <t>The ECDH encryption is defined here as a KEM.</t>
        <t>All elliptic curves for the use in the composite combinations are taken from <xref target="RFC9580"/>.</t>
        <t>For interoperability this extension offers ML-* in composite combinations with the NIST curves P-256, P-384 defined in <xref target="SP800-186"/> and the Brainpool curves brainpoolP256r1, brainpoolP384r1 defined in <xref target="RFC5639"/>.</t>
      </section>
      <section anchor="applicable-specifications-for-the-use-of-pqc-algorithms-in-openpgp">
        <name>Applicable Specifications for the use of PQC Algorithms in OpenPGP</name>
        <t>This document is to be understood as an extension of <xref target="I-D.draft-ietf-openpgp-pqc"/>, which introduced PQC in OpenPGP, in that it defines further algorithm code points.
All general specifications in <xref target="I-D.draft-ietf-openpgp-pqc"/> that pertain to the ML-KEM and ML-DSA composite schemes or generally cryptographic schemes defined therein equally apply to the schemes specified in this document.</t>
      </section>
    </section>
    <section anchor="preliminaries">
      <name>Preliminaries</name>
      <t>This section provides some preliminaries for the definitions in the subsequent sections.</t>
      <section anchor="elliptic-curves">
        <name>Elliptic curves</name>
        <section anchor="sec1-format">
          <name>SEC1 EC Point Wire Format</name>
          <t>Elliptic curve points of the generic prime curves are encoded using the SEC1 (uncompressed) format as the following octet string:</t>
          <artwork><![CDATA[
B = 04 || X || Y
]]></artwork>
          <t>where <tt>X</tt> and <tt>Y</tt> are coordinates of the elliptic curve point <tt>P = (X, Y)</tt>, and each coordinate is encoded in the big-endian format and zero-padded to the adjusted underlying field size.
The adjusted underlying field size is the underlying field size rounded up to the nearest 8-bit boundary, as noted in the "Field size" column in <xref target="tab-ecdh-nist-artifacts"/>, <xref target="tab-ecdh-brainpool-artifacts"/>, or <xref target="tab-ecdsa-artifacts"/>.
This encoding is compatible with the definition given in <xref target="SEC1"/>.</t>
        </section>
        <section anchor="measures-to-ensure-secure-implementations">
          <name>Measures to Ensure Secure Implementations</name>
          <t>In the following measures are described that ensure secure implementations according to existing best practices and standards defining the operations of Elliptic Curve Cryptography.</t>
          <t>Even though the zero point, also called the point at infinity, may occur as a result of arithmetic operations on points of an elliptic curve, it <bcp14>MUST NOT</bcp14> appear in any ECC data structure defined in this document.</t>
          <t>Furthermore, when performing the explicitly listed operations in <xref target="ecdh-kem"/> it is <bcp14>REQUIRED</bcp14> to follow the specification and security advisory mandated from the respective elliptic curve specification.</t>
        </section>
      </section>
    </section>
    <section anchor="supported-public-key-algorithms">
      <name>Supported Public Key Algorithms</name>
      <t>This section specifies the composite ML-KEM + ECDH and ML-DSA + ECDSA schemes.
All of these schemes are fully specified via their algorithm ID, that is, they are not parametrized.</t>
      <section anchor="algorithm-specifications">
        <name>Algorithm Specifications</name>
        <t>For encryption, the following composite KEM schemes are specified:</t>
        <table anchor="kem-alg-specs">
          <name>KEM algorithm specifications</name>
          <thead>
            <tr>
              <th align="right">ID</th>
              <th align="left">Algorithm</th>
              <th align="left">Requirement</th>
              <th align="left">Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">TBD</td>
              <td align="left">ML-KEM-512+ECDH-NIST-P-256</td>
              <td align="left">
                <bcp14>MAY</bcp14></td>
              <td align="left">
                <xref target="ecc-mlkem"/></td>
            </tr>
            <tr>
              <td align="right">TBD</td>
              <td align="left">ML-KEM-768+ECDH-NIST-P-384</td>
              <td align="left">
                <bcp14>MAY</bcp14></td>
              <td align="left">
                <xref target="ecc-mlkem"/></td>
            </tr>
            <tr>
              <td align="right">TBD</td>
              <td align="left">ML-KEM-1024+ECDH-NIST-P-384</td>
              <td align="left">
                <bcp14>MAY</bcp14></td>
              <td align="left">
                <xref target="ecc-mlkem"/></td>
            </tr>
            <tr>
              <td align="right">TBD</td>
              <td align="left">ML-KEM-768+ECDH-brainpoolP256r1</td>
              <td align="left">
                <bcp14>MAY</bcp14></td>
              <td align="left">
                <xref target="ecc-mlkem"/></td>
            </tr>
            <tr>
              <td align="right">TBD</td>
              <td align="left">ML-KEM-1024+ECDH-brainpoolP384r1</td>
              <td align="left">
                <bcp14>MAY</bcp14></td>
              <td align="left">
                <xref target="ecc-mlkem"/></td>
            </tr>
          </tbody>
        </table>
        <t>For signatures, the following composite signature schemes are specified:</t>
        <table anchor="sig-alg-specs">
          <name>Signature algorithm specifications</name>
          <thead>
            <tr>
              <th align="right">ID</th>
              <th align="left">Algorithm</th>
              <th align="left">Requirement</th>
              <th align="left">Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">TBD</td>
              <td align="left">ML-DSA-44+ECDSA-NIST-P-256</td>
              <td align="left">
                <bcp14>MAY</bcp14></td>
              <td align="left">
                <xref target="ecc-mldsa"/></td>
            </tr>
            <tr>
              <td align="right">TBD</td>
              <td align="left">ML-DSA-65+ECDSA-NIST-P-384</td>
              <td align="left">
                <bcp14>MAY</bcp14></td>
              <td align="left">
                <xref target="ecc-mldsa"/></td>
            </tr>
            <tr>
              <td align="right">TBD</td>
              <td align="left">ML-DSA-87+ECDSA-NIST-P-384</td>
              <td align="left">
                <bcp14>MAY</bcp14></td>
              <td align="left">
                <xref target="ecc-mldsa"/></td>
            </tr>
            <tr>
              <td align="right">TBD</td>
              <td align="left">ML-DSA-65+ECDSA-brainpoolP256r1</td>
              <td align="left">
                <bcp14>MAY</bcp14></td>
              <td align="left">
                <xref target="ecc-mldsa"/></td>
            </tr>
            <tr>
              <td align="right">TBD</td>
              <td align="left">ML-DSA-87+ECDSA-brainpoolP384r1</td>
              <td align="left">
                <bcp14>MAY</bcp14></td>
              <td align="left">
                <xref target="ecc-mldsa"/></td>
            </tr>
          </tbody>
        </table>
        <section anchor="experimental-codepoints-for-interop-testing">
          <name>Experimental Codepoints for Interop Testing</name>
          <t>[ Note: this section to be removed before publication ]</t>
          <t>The algorithms in this draft are not assigned a codepoint in the current state of the draft since there are not enough private/experimental code points available to cover all newly introduced public-key algorithm identifiers.</t>
          <t>The use of private/experimental codepoints during development are intended to be used in non-released software only, for experimentation and interop testing purposes only.
An OpenPGP implementation <bcp14>MUST NOT</bcp14> produce a formal release using these experimental codepoints.
This draft will not be sent to IANA without every listed algorithm having a non-experimental codepoint.</t>
        </section>
      </section>
    </section>
    <section anchor="algorithm-combinations">
      <name>Algorithm Combinations</name>
      <section anchor="composite-kems">
        <name>Composite KEMs</name>
        <t>The ML-KEM + ECDH public-key encryption involves both the ML-KEM and an ECDH KEM in a non-separable manner.
This is achieved via KEM combination, that is, both key encapsulations/decapsulations are performed in parallel, and the resulting key shares are fed into a key combiner to produce a single shared secret for message encryption.</t>
      </section>
      <section anchor="composite-signatures">
        <name>Composite Signatures</name>
        <t>The ML-DSA + ECDSA signature consists of independent ML-DSA and ECDSA signatures, and an implementation <bcp14>MUST</bcp14> successfully validate both signatures to state that the ML-DSA + ECDSA signature is valid.</t>
      </section>
      <section anchor="key-version-binding">
        <name>Key Version Binding</name>
        <t>All PQ/T asymmetric algorithms defined in this document are to be used only in v6 (and newer) keys and certificates.</t>
      </section>
    </section>
    <section anchor="composite-kem-schemes">
      <name>Composite KEM Schemes</name>
      <section anchor="building-blocks">
        <name>Building Blocks</name>
        <section anchor="ecc-kem">
          <name>ECDH KEM</name>
          <t>In this section we define the encryption, decryption, and data formats for the ECDH component of the composite algorithms.</t>
          <t><xref target="tab-ecdh-nist-artifacts"/> and <xref target="tab-ecdh-brainpool-artifacts"/> describe the ECDH KEM parameters and artifact lengths.</t>
          <table anchor="tab-ecdh-nist-artifacts">
            <name>NIST curves parameters and artifact lengths</name>
            <thead>
              <tr>
                <th align="left"> </th>
                <th align="left">NIST P-256</th>
                <th align="left">NIST P-384</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Algorithm ID reference</td>
                <td align="left">TBD (ML-KEM-512+ECDH-NIST-P-256)</td>
                <td align="left">TBD (ML-KEM-768+ECDH-NIST-P-384, ML-KEM-1024+ECDH-NIST-P-384, )</td>
              </tr>
              <tr>
                <td align="left">Field size</td>
                <td align="left">32 octets</td>
                <td align="left">48 octets</td>
              </tr>
              <tr>
                <td align="left">ECDH KEM</td>
                <td align="left">ECDH-KEM <xref target="ecdh-kem"/></td>
                <td align="left">ECDH-KEM <xref target="ecdh-kem"/></td>
              </tr>
              <tr>
                <td align="left">ECDH public key</td>
                <td align="left">65 octets of SEC1-encoded public point</td>
                <td align="left">97 octets of SEC1-encoded public point</td>
              </tr>
              <tr>
                <td align="left">ECDH secret key</td>
                <td align="left">32 octets big-endian encoded secret scalar</td>
                <td align="left">48 octets big-endian encoded secret scalar</td>
              </tr>
              <tr>
                <td align="left">ECDH ephemeral</td>
                <td align="left">65 octets of SEC1-encoded ephemeral point</td>
                <td align="left">97 octets of SEC1-encoded ephemeral point</td>
              </tr>
              <tr>
                <td align="left">ECDH key share</td>
                <td align="left">32 octets</td>
                <td align="left">48 octets</td>
              </tr>
            </tbody>
          </table>
          <table anchor="tab-ecdh-brainpool-artifacts">
            <name>Brainpool curves parameters and artifact lengths</name>
            <thead>
              <tr>
                <th align="left"> </th>
                <th align="left">brainpoolP256r1</th>
                <th align="left">brainpoolP384r1</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Algorithm ID reference</td>
                <td align="left">TBD (ML-KEM-768+ECDH-brainpoolP256r1)</td>
                <td align="left">TBD (ML-KEM-1024+ECDH-brainpoolP384r1)</td>
              </tr>
              <tr>
                <td align="left">Field size</td>
                <td align="left">32 octets</td>
                <td align="left">48 octets</td>
              </tr>
              <tr>
                <td align="left">ECDH KEM</td>
                <td align="left">ECDH-KEM <xref target="ecdh-kem"/></td>
                <td align="left">ECDH-KEM <xref target="ecdh-kem"/></td>
              </tr>
              <tr>
                <td align="left">ECDH public key</td>
                <td align="left">65 octets of SEC1-encoded public point</td>
                <td align="left">97 octets of SEC1-encoded public point</td>
              </tr>
              <tr>
                <td align="left">ECDH secret key</td>
                <td align="left">32 octets big-endian encoded secret scalar</td>
                <td align="left">48 octets big-endian encoded secret scalar</td>
              </tr>
              <tr>
                <td align="left">ECDH ephemeral</td>
                <td align="left">65 octets of SEC1-encoded ephemeral point</td>
                <td align="left">97 octets of SEC1-encoded ephemeral point</td>
              </tr>
              <tr>
                <td align="left">ECDH key share</td>
                <td align="left">32 octets</td>
                <td align="left">48 octets</td>
              </tr>
            </tbody>
          </table>
          <t>The SEC1 format for point encoding is defined in <xref target="sec1-format"/>.</t>
          <t>The various procedures to perform the operations of an ECDH KEM are defined in the following subsections.
Specifically, each of these subsections defines the instances of the following operations:</t>
          <artwork><![CDATA[
(ecdhCipherText, ecdhKeyShare) <- ECDH-KEM.Encaps(ecdhPublicKey)
]]></artwork>
          <t>and</t>
          <artwork><![CDATA[
(ecdhKeyShare) <- ECDH-KEM.Decaps(ecdhCipherText, ecdhSecretKey)
]]></artwork>
          <t>To instantiate <tt>ECDH-KEM</tt>, one must select a parameter set from <xref target="tab-ecdh-nist-artifacts"/> or <xref target="tab-ecdh-brainpool-artifacts"/>.</t>
          <section anchor="ecdh-kem">
            <name>ECDH-KEM</name>
            <t>The operation <tt>ECDH-KEM.Encaps()</tt> is defined as follows:</t>
            <ol spacing="normal" type="1"><li>
                <t>Generate an ephemeral key pair {<tt>v</tt>, <tt>V=vG</tt>} as defined in <xref target="SP800-186"/> or <xref target="RFC5639"/> where <tt>v</tt> is a random scalar with <tt>0 &lt; v &lt; n</tt>, <tt>n</tt> being the base point order of the elliptic curve domain parameters</t>
              </li>
              <li>
                <t>Compute the shared point <tt>S = vR</tt>, where <tt>R</tt> is the recipient's public key <tt>ecdhPublicKey</tt>, according to <xref target="SP800-186"/> or <xref target="RFC5639"/></t>
              </li>
              <li>
                <t>Extract the <tt>X</tt> coordinate from the SEC1 encoded point <tt>S = 04 || X || Y</tt> as defined in section <xref target="sec1-format"/></t>
              </li>
              <li>
                <t>Set the output <tt>ecdhCipherText</tt> to the SEC1 encoding of <tt>V</tt></t>
              </li>
              <li>
                <t>Set the output <tt>ecdhKeyShare</tt> to <tt>X</tt></t>
              </li>
            </ol>
            <t>The operation <tt>ECDH-KEM.Decaps()</tt> is defined as follows:</t>
            <ol spacing="normal" type="1"><li>
                <t>Compute the shared Point <tt>S</tt> as <tt>rV</tt>, where <tt>r</tt> is the <tt>ecdhSecretKey</tt> and <tt>V</tt> is the <tt>ecdhCipherText</tt>, according to <xref target="SP800-186"/> or <xref target="RFC5639"/></t>
              </li>
              <li>
                <t>Extract the <tt>X</tt> coordinate from the SEC1 encoded point <tt>S = 04 || X || Y</tt> as defined in section <xref target="sec1-format"/></t>
              </li>
              <li>
                <t>Set the output <tt>ecdhKeyShare</tt> to <tt>X</tt></t>
              </li>
            </ol>
          </section>
        </section>
        <section anchor="mlkem-ops">
          <name>ML-KEM</name>
          <t>ML-KEM features the following operations:</t>
          <artwork><![CDATA[
(mlkemCipherText, mlkemKeyShare) <- ML-KEM.Encaps(mlkemPublicKey)
]]></artwork>
          <t>and</t>
          <artwork><![CDATA[
(mlkemKeyShare) <- ML-KEM.Decaps(mlkemCipherText, mlkemSecretKey)
]]></artwork>
          <t>The above are the operations <tt>ML-KEM.Encaps</tt> and <tt>ML-KEM.Decaps</tt> defined in <xref target="FIPS-203"/>.
Note that <tt>mlkemPublicKey</tt> is the encapsulation and <tt>mlkemSecretKey</tt> is the decapsulation key.</t>
          <t>ML-KEM has the parametrization with the corresponding artifact lengths in octets as given in <xref target="tab-mlkem-artifacts"/>.
All artifacts are encoded as defined in <xref target="FIPS-203"/>.</t>
          <table anchor="tab-mlkem-artifacts">
            <name>ML-KEM parameters and artifact lengths</name>
            <thead>
              <tr>
                <th align="left"> </th>
                <th align="left">ML-KEM-512</th>
                <th align="left">ML-KEM-768</th>
                <th align="left">ML-KEM-1024</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Algorithm ID reference</td>
                <td align="left">TBD</td>
                <td align="left">TBD</td>
                <td align="left">TBD</td>
              </tr>
              <tr>
                <td align="left">Public key</td>
                <td align="left">800 octets</td>
                <td align="left">1184 octets</td>
                <td align="left">1568 octets</td>
              </tr>
              <tr>
                <td align="left">Secret key</td>
                <td align="left">64 octets</td>
                <td align="left">64 octets</td>
                <td align="left">64 octets</td>
              </tr>
              <tr>
                <td align="left">Ciphertext</td>
                <td align="left">768 octets</td>
                <td align="left">1088 octets</td>
                <td align="left">1568 octets</td>
              </tr>
              <tr>
                <td align="left">Key share</td>
                <td align="left">32 octets</td>
                <td align="left">32 octets</td>
                <td align="left">32 octets</td>
              </tr>
            </tbody>
          </table>
          <t>To instantiate <tt>ML-KEM</tt>, one must select a parameter set from the column "ML-KEM" of <xref target="tab-mlkem-artifacts"/>.</t>
        </section>
      </section>
      <section anchor="ecc-mlkem">
        <name>Composite Encryption Schemes with ML-KEM</name>
        <t><xref target="kem-alg-specs"/> specifies the following ML-KEM + ECDH composite public-key encryption schemes:</t>
        <table anchor="tab-mlkem-ecc-composite">
          <name>ML-KEM + ECDH composite schemes</name>
          <thead>
            <tr>
              <th align="right">Algorithm ID reference</th>
              <th align="left">ML-KEM</th>
              <th align="left">ECDH-KEM curve</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">TBD (ML-KEM-512+ECDH-NIST-P-256)</td>
              <td align="left">ML-KEM-512</td>
              <td align="left">NIST P-256</td>
            </tr>
            <tr>
              <td align="right">TBD (ML-KEM-768+ECDH-NIST-P-384)</td>
              <td align="left">ML-KEM-768</td>
              <td align="left">NIST P-384</td>
            </tr>
            <tr>
              <td align="right">TBD (ML-KEM-1024+ECDH-NIST-P-384)</td>
              <td align="left">ML-KEM-1024</td>
              <td align="left">NIST P-384</td>
            </tr>
            <tr>
              <td align="right">TBD (ML-KEM-768+ECDH-brainpoolP256r1)</td>
              <td align="left">ML-KEM-768</td>
              <td align="left">brainpoolP256r1</td>
            </tr>
            <tr>
              <td align="right">TBD (ML-KEM-1024+ECDH-brainpoolP384r1)</td>
              <td align="left">ML-KEM-1024</td>
              <td align="left">brainpoolP384r1</td>
            </tr>
          </tbody>
        </table>
        <t>The ML-KEM + ECDH composite public-key encryption schemes are built according to the following principal design:</t>
        <ul spacing="normal">
          <li>
            <t>The ML-KEM encapsulation algorithm is invoked to create an ML-KEM ciphertext together with an ML-KEM symmetric key share.</t>
          </li>
          <li>
            <t>The encapsulation algorithm of an ECDH KEM is invoked to create an ECDH ciphertext together with an ECDH symmetric key share.</t>
          </li>
          <li>
            <t>A Key-Encryption-Key (KEK) is computed as the output of a key combiner that receives as input both of the above created symmetric key shares, the ECDH ciphertext, the ECDH public key, and the protocol binding information.</t>
          </li>
          <li>
            <t>The session key for content encryption is then wrapped as described in <xref target="RFC3394"/> using AES-256 as algorithm and the KEK as key.</t>
          </li>
          <li>
            <t>The PKESK packet's algorithm-specific parts are made up of the ML-KEM ciphertext, the ECDH ciphertext, and the wrapped session key.</t>
          </li>
        </ul>
        <section anchor="kem-key-combiner">
          <name>Key Combiner</name>
          <t>For the composite KEM schemes defined in this document the procedure <tt>multiKeyCombine</tt> that is defined in <xref section="4.2.1" sectionFormat="of" target="I-D.draft-ietf-openpgp-pqc"/> <bcp14>MUST</bcp14> be used to compute the KEK that wraps a session key.</t>
        </section>
        <section anchor="ecc-mlkem-generation">
          <name>Key Generation Procedure</name>
          <t>The implementation <bcp14>MUST</bcp14> generate the ML-KEM and the ECDH component keys independently.
ML-KEM key generation follows the specification in <xref target="FIPS-203"/>, and the artifacts are encoded as fixed-length octet strings whose sizes are listed <xref target="mlkem-ops"/>.
ECDH key generation follows the specification in <xref target="SP800-186"/> or <xref target="RFC5639"/>, and the artifacts are encoded as fixed-length octet strings whose sizes and format are listed in <xref target="tab-ecdh-nist-artifacts"/> or <xref target="tab-ecdh-brainpool-artifacts"/>.</t>
        </section>
        <section anchor="ecc-mlkem-encryption">
          <name>Encryption Procedure</name>
          <t>The procedure to perform public-key encryption with an ML-KEM + ECDH composite scheme is as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Take the recipient's authenticated public-key packet <tt>pkComposite</tt> and <tt>sessionKey</tt> as input</t>
            </li>
            <li>
              <t>Parse the algorithm ID from <tt>pkComposite</tt> and set it as <tt>algId</tt></t>
            </li>
            <li>
              <t>Extract the <tt>ecdhPublicKey</tt> and <tt>mlkemPublicKey</tt> component from the algorithm specific data encoded in <tt>pkComposite</tt> with the format specified in <xref target="mlkem-ecc-key"/>.</t>
            </li>
            <li>
              <t>Instantiate the ECDH-KEM and the ML-KEM depending on the algorithm ID according to <xref target="tab-mlkem-ecc-composite"/></t>
            </li>
            <li>
              <t>Compute <tt>(ecdhCipherText, ecdhKeyShare) = ECDH-KEM.Encaps(ecdhPublicKey)</tt></t>
            </li>
            <li>
              <t>Compute <tt>(mlkemCipherText, mlkemKeyShare) = ML-KEM.Encaps(mlkemPublicKey)</tt></t>
            </li>
            <li>
              <t>Compute <tt>KEK = multiKeyCombine(mlkemKeyShare, ecdhKeyShare, ecdhCipherText, ecdhPublicKey, algId)</tt> as defined in <xref target="kem-key-combiner"/></t>
            </li>
            <li>
              <t>Compute <tt>C = AESKeyWrap(KEK, sessionKey)</tt> with AES-256 as per <xref target="RFC3394"/> that includes a 64 bit integrity check</t>
            </li>
            <li>
              <t>Output the algorithm specific part of the PKESK as <tt>ecdhCipherText || mlkemCipherText || len(C, symAlgId) (|| symAlgId) || C</tt>, where both <tt>symAlgId</tt> and <tt>len(C, symAlgId)</tt> are single octet fields, <tt>symAlgId</tt> denotes the symmetric algorithm ID used and is present only for a v3 PKESK, and <tt>len(C, symAlgId)</tt> denotes the combined octet length of the fields specified as the arguments.</t>
            </li>
          </ol>
        </section>
        <section anchor="decryption-procedure">
          <name>Decryption Procedure</name>
          <t>The procedure to perform public-key decryption with an ML-KEM + ECDH composite scheme is as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Take the matching PKESK and own secret key packet as input</t>
            </li>
            <li>
              <t>From the PKESK extract the algorithm ID as <tt>algId</tt> and the wrapped session key as <tt>encryptedKey</tt></t>
            </li>
            <li>
              <t>Check that the own and the extracted algorithm ID match</t>
            </li>
            <li>
              <t>Parse the <tt>ecdhSecretKey</tt> and <tt>mlkemSecretKey</tt> from the algorithm specific data of the own secret key encoded in the format specified in <xref target="mlkem-ecc-key"/></t>
            </li>
            <li>
              <t>Instantiate the ECDH-KEM and the ML-KEM depending on the algorithm ID according to <xref target="tab-mlkem-ecc-composite"/></t>
            </li>
            <li>
              <t>Parse <tt>ecdhCipherText</tt>, <tt>mlkemCipherText</tt>, and <tt>C</tt> from <tt>encryptedKey</tt> encoded as <tt>ecdhCipherText || mlkemCipherText || len(C, symAlgId) (|| symAlgId) || C</tt> as specified in <xref target="ecc-mlkem-pkesk"/>, where <tt>symAlgId</tt> is present only in the case of a v3 PKESK.</t>
            </li>
            <li>
              <t>Compute <tt>(ecdhKeyShare) = ECDH-KEM.Decaps(ecdhCipherText, ecdhSecretKey)</tt></t>
            </li>
            <li>
              <t>Compute <tt>(mlkemKeyShare) = ML-KEM.Decaps(mlkemCipherText, mlkemSecretKey)</tt></t>
            </li>
            <li>
              <t>Compute <tt>KEK = multiKeyCombine(mlkemKeyShare, ecdhKeyShare, ecdhCipherText, ecdhPublicKey, algId)</tt> as defined in <xref target="kem-key-combiner"/></t>
            </li>
            <li>
              <t>Compute <tt>sessionKey = AESKeyUnwrap(KEK, C)</tt> with AES-256 as per <xref target="RFC3394"/>, aborting if the 64 bit integrity check fails</t>
            </li>
            <li>
              <t>Output <tt>sessionKey</tt></t>
            </li>
          </ol>
        </section>
      </section>
      <section anchor="packet-specifications">
        <name>Packet Specifications</name>
        <section anchor="ecc-mlkem-pkesk">
          <name>Public-Key Encrypted Session Key Packets (Packet Type ID 1)</name>
          <t>The algorithm-specific fields consist of the output of the encryption procedure described in <xref target="ecc-mlkem-encryption"/>:</t>
          <ul spacing="normal">
            <li>
              <t>A fixed-length octet string representing an ECDH ephemeral public key in the format associated with the curve as specified in <xref target="ecc-kem"/>.</t>
            </li>
            <li>
              <t>A fixed-length octet string of the ML-KEM ciphertext, whose length depends on the algorithm ID as specified in <xref target="tab-mlkem-artifacts"/>.</t>
            </li>
            <li>
              <t>A one-octet size of the following fields.</t>
            </li>
            <li>
              <t>Only in the case of a v3 PKESK packet: a one-octet symmetric algorithm identifier.</t>
            </li>
            <li>
              <t>The wrapped session key represented as an octet string.</t>
            </li>
          </ul>
          <t>Note that like in the case of the algorithms X25519 and X448 specified in <xref target="RFC9580"/>, for the ML-KEM composite schemes, in the case of a v3 PKESK packet, the symmetric algorithm identifier is not encrypted.
Instead, it is placed in plaintext after the <tt>mlkemCipherText</tt> and before the length octet preceding the wrapped session key.
In the case of v3 PKESK packets for ML-KEM composite schemes, the symmetric algorithm used <bcp14>MUST</bcp14> be AES-128, AES-192 or AES-256 (algorithm ID 7, 8 or 9).</t>
          <t>In the case of a v3 PKESK, a receiving implementation <bcp14>MUST</bcp14> check if the length of the unwrapped symmetric key matches the symmetric algorithm identifier, and abort if this is not the case.</t>
          <t>Implementations <bcp14>MUST NOT</bcp14> use the obsolete Symmetrically Encrypted Data packet (Packet Type ID 9) to encrypt data protected with the algorithms described in this document.</t>
        </section>
        <section anchor="mlkem-ecc-key">
          <name>Key Material Packets</name>
          <t>The composite ML-KEM + ECDH schemes defined in this specification <bcp14>MUST</bcp14> be used only with v6 keys, as defined in <xref target="RFC9580"/>, or newer versions defined by updates of that document.</t>
          <section anchor="public-key-packets-packet-type-ids-6-and-14">
            <name>Public Key Packets (Packet Type IDs 6 and 14)</name>
            <t>The algorithm-specific public key is this series of values:</t>
            <ul spacing="normal">
              <li>
                <t>A fixed-length octet string representing an ECC public key, in the point format associated with the curve specified in <xref target="ecc-kem"/>.</t>
              </li>
              <li>
                <t>A fixed-length octet string containing the ML-KEM public key, whose length depends on the algorithm ID as specified in <xref target="tab-mlkem-artifacts"/>.</t>
              </li>
            </ul>
          </section>
          <section anchor="secret-key-packets-packet-type-ids-5-and-7">
            <name>Secret Key Packets (Packet Type IDs 5 and 7)</name>
            <t>The algorithm-specific secret key is these two values:</t>
            <ul spacing="normal">
              <li>
                <t>A fixed-length octet string of the encoded ECDH secret key, whose encoding and length depend on the algorithm ID as specified in <xref target="ecc-kem"/>.</t>
              </li>
              <li>
                <t>A fixed-length octet string containing the ML-KEM secret key in seed format, whose length is 64 octets (compare <xref target="tab-mlkem-artifacts"/>).
The seed format is defined in accordance with Section 3.3 of <xref target="FIPS-203"/>.
Namely, the secret key is given by the concatenation of the values of <tt>d</tt> and <tt>z</tt>, generated in steps 1 and 2 of <tt>ML-KEM.KeyGen</tt> <xref target="FIPS-203"/>, each of a length of 32 octets.
Upon parsing the secret key format, or before using the secret key, for the expansion of the key, the function <tt>ML-KEM.KeyGen_internal</tt> <xref target="FIPS-203"/> has to be invoked with the parsed values of <tt>d</tt> and <tt>z</tt> as input.</t>
              </li>
            </ul>
          </section>
        </section>
      </section>
    </section>
    <section anchor="composite-signature-schemes">
      <name>Composite Signature Schemes</name>
      <section anchor="building-blocks-1">
        <name>Building Blocks</name>
        <section anchor="ecdsa-signature">
          <name>ECDSA-Based Signatures</name>
          <t>To sign and verify with ECDSA the following operations are defined:</t>
          <artwork><![CDATA[
(ecdsaSignatureR, ecdsaSignatureS) <- ECDSA.Sign(ecdsaSecretKey,
                                                 dataDigest)
]]></artwork>
          <t>and</t>
          <artwork><![CDATA[
(verified) <- ECDSA.Verify(ecdsaPublicKey, dataDigest,
                           ecdsaSignatureR, ecdsaSignatureS)
]]></artwork>
          <t>Here, the operation <tt>ECDSA.Sign()</tt> is defined as the algorithm in Section "6.4.1 ECDSA Signature Generation Algorithm" of <xref target="SP800-186-5"/>, however, excluding Step 1: <tt>H = Hash(M)</tt> in that algorithm specification, as in this specification the message digest <tt>H</tt> is a direct input to the operation <tt>ECDSA.Sign()</tt>. Equivalently, the operation <tt>ECDSA.Sign()</tt> can be understood as representing the algorithm under Section "4.2.1.1. Signature Algorithm" in <xref target="TR-03111"/>, again with the difference that in this specification the message digest <tt>H_Tau(M)</tt> appearing in Step 5 of the algorithm specification is the direct input to the operation <tt>ECDSA.Sign()</tt> and thus the hash computation is not carried out.
The same statement holds for the definition of the verification operation <tt>ECDSA.Verify()</tt>: it is given either through the algorithm defined in Section "6.4.2 ECDSA Signature Verification Algorithm" of <xref target="SP800-186-5"/> omitting the message digest computation in Step 2 or by the algorithm in Section "4.2.1.2. Verification Algorithm" of <xref target="TR-03111"/> omitting the message digest computation in Step 3.</t>
          <t>The public keys <bcp14>MUST</bcp14> be encoded in SEC1 format as defined in section <xref target="sec1-format"/>.
The secret key, as well as both values <tt>R</tt> and <tt>S</tt> of the signature <bcp14>MUST</bcp14> each be encoded as a big-endian integer in a fixed-length octet string of the specified size.</t>
          <t>The following table describes the ECDSA parameters and artifact lengths:</t>
          <table anchor="tab-ecdsa-artifacts">
            <name>ECDSA parameters and artifact lengths</name>
            <thead>
              <tr>
                <th align="right"> </th>
                <th align="left">NIST-P-256</th>
                <th align="left">NIST P-384</th>
                <th align="left">brainpoolP256r1</th>
                <th align="left">brainpoolP384r1</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="right">Algorithm ID reference</td>
                <td align="left">TBD (ML-DSA-44+ECDSA-NIST-P-256)</td>
                <td align="left">TBD (ML-DSA-65+ECDSA-NIST-P-384,ML-DSA-87+ECDSA-NIST-P-384</td>
                <td align="left">TBD (ML-DSA-65+ECDSA-brainpoolP256r1)</td>
                <td align="left">TBD (ML-DSA-87+ECDSA-brainpoolP384r1)</td>
              </tr>
              <tr>
                <td align="right">Field size</td>
                <td align="left">32 octets</td>
                <td align="left">48 octets</td>
                <td align="left">32 octets</td>
                <td align="left">48 octets</td>
              </tr>
              <tr>
                <td align="right">Public key</td>
                <td align="left">65 octets</td>
                <td align="left">97 octets</td>
                <td align="left">65 octets</td>
                <td align="left">97 octets</td>
              </tr>
              <tr>
                <td align="right">Secret key</td>
                <td align="left">32 octets</td>
                <td align="left">48 octets</td>
                <td align="left">32 octets</td>
                <td align="left">48 octets</td>
              </tr>
              <tr>
                <td align="right">Signature value R</td>
                <td align="left">32 octets</td>
                <td align="left">48 octets</td>
                <td align="left">32 octets</td>
                <td align="left">48 octets</td>
              </tr>
              <tr>
                <td align="right">Signature value S</td>
                <td align="left">32 octets</td>
                <td align="left">48 octets</td>
                <td align="left">32 octets</td>
                <td align="left">48 octets</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="mldsa-signature">
          <name>ML-DSA Signatures</name>
          <t>Throughout this specification ML-DSA refers to the default pure and hedged version of ML-DSA defined in <xref target="FIPS-204"/>.</t>
          <t>ML-DSA signature generation is performed using the default hedged version of the <tt>ML-DSA.Sign</tt> algorithm, as specified in <xref target="FIPS-204"/>, with an empty context string <tt>ctx</tt>.
That is, to sign with ML-DSA the following operation is defined:</t>
          <artwork><![CDATA[
(mldsaSignature) <- ML-DSA.Sign(mldsaSecretKey, dataDigest)
]]></artwork>
          <t>ML-DSA signature verification is performed using the <tt>ML-DSA.Verify</tt> algorithm, as specified in <xref target="FIPS-204"/>, with an empty context string <tt>ctx</tt>.
That is, to verify with ML-DSA the following operation is defined:</t>
          <artwork><![CDATA[
(verified) <- ML-DSA.Verify(mldsaPublicKey, dataDigest, mldsaSignature)
]]></artwork>
          <t>ML-DSA has the parametrization with the corresponding artifact lengths in octets as given in <xref target="tab-mldsa-artifacts"/>.
All artifacts are encoded as defined in <xref target="FIPS-204"/>.</t>
          <table anchor="tab-mldsa-artifacts">
            <name>ML-DSA parameters and artifact lengths</name>
            <thead>
              <tr>
                <th align="left"> </th>
                <th align="left">ML-DSA-44</th>
                <th align="left">ML-DSA-65</th>
                <th align="left">ML-DSA-87</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Algorithm ID reference</td>
                <td align="left">TBD</td>
                <td align="left">TBD</td>
                <td align="left">TBD</td>
              </tr>
              <tr>
                <td align="left">Public key</td>
                <td align="left">1312 octets</td>
                <td align="left">1952 octets</td>
                <td align="left">2592 octets</td>
              </tr>
              <tr>
                <td align="left">Secret key</td>
                <td align="left">32 octets</td>
                <td align="left">32 octets</td>
                <td align="left">32 octets</td>
              </tr>
              <tr>
                <td align="left">Signature</td>
                <td align="left">2420 octets</td>
                <td align="left">3309 octets</td>
                <td align="left">4627 octets</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="ecc-mldsa">
        <name>Composite Signature Schemes with ML-DSA</name>
        <section anchor="ecc-mldsa-generation">
          <name>Key Generation Procedure</name>
          <t>The implementation <bcp14>MUST</bcp14> generate the ML-DSA and the ECDSA component keys independently.
ML-DSA key generation follows the specification in <xref target="FIPS-204"/> and the artifacts are encoded as fixed-length octet strings whose sizes are listed in <xref target="mldsa-signature"/>.
ECDSA key generation follows the specification in <xref target="SP800-186"/> or <xref target="RFC5639"/>, and the artifacts are encoded as fixed-length octet strings whose sizes are listed in <xref target="ecdsa-signature"/>.</t>
        </section>
        <section anchor="signature-generation">
          <name>Signature Generation</name>
          <t>To sign a message <tt>M</tt> with ML-DSA + ECDSA the following sequence of operations has to be performed:</t>
          <ol spacing="normal" type="1"><li>
              <t>Generate <tt>dataDigest</tt> according to <xref section="5.2.4" sectionFormat="of" target="RFC9580"/></t>
            </li>
            <li>
              <t>Create the ECDSA signature over <tt>dataDigest</tt> with <tt>ECDSA.Sign()</tt> from <xref target="ecdsa-signature"/></t>
            </li>
            <li>
              <t>Create the ML-DSA signature over <tt>dataDigest</tt> with <tt>ML-DSA.Sign()</tt> from <xref target="mldsa-signature"/></t>
            </li>
            <li>
              <t>Encode the ECDSA and ML-DSA signatures according to the packet structure given in <xref target="ecc-mldsa-sig-packet"/></t>
            </li>
          </ol>
        </section>
        <section anchor="signature-verification">
          <name>Signature Verification</name>
          <t>To verify an ML-DSA + ECDSA signature the following sequence of operations has to be performed:</t>
          <ol spacing="normal" type="1"><li>
              <t>Verify the ECDSA signature with <tt>ECDSA.Verify()</tt> from <xref target="ecdsa-signature"/></t>
            </li>
            <li>
              <t>Verify the ML-DSA signature with <tt>ML-DSA.Verify()</tt> from <xref target="mldsa-signature"/></t>
            </li>
          </ol>
          <t>As specified in <xref target="composite-signatures"/> an implementation <bcp14>MUST</bcp14> validate both signatures, that is, ECDSA and ML-DSA, successfully to state that a composite ML-DSA + ECDSA signature is valid.</t>
        </section>
      </section>
      <section anchor="packet-specifications-1">
        <name>Packet Specifications</name>
        <section anchor="ecc-mldsa-sig-packet">
          <name>Signature Packet (Packet Type ID 2)</name>
          <t>The composite ML-DSA + ECDSA schemes <bcp14>MUST</bcp14> be used only with v6 signatures, as defined in <xref target="RFC9580"/>, or newer versions defined by updates of that document.</t>
          <t>The algorithm-specific v6 signature parameters for ML-DSA + ECDSA signatures consist of:</t>
          <ul spacing="normal">
            <li>
              <t>A fixed-length octet string of the big-endian encoded ECDSA value <tt>R</tt>, whose length depends on the algorithm ID as specified in <xref target="tab-ecdsa-artifacts"/>.</t>
            </li>
            <li>
              <t>A fixed-length octet string of the big-endian encoded ECDSA value <tt>S</tt>, whose length depends on the algorithm ID as specified in <xref target="tab-ecdsa-artifacts"/>.</t>
            </li>
            <li>
              <t>A fixed-length octet string of the ML-DSA signature value, whose length depends on the algorithm ID as specified in <xref target="tab-mldsa-artifacts"/>.</t>
            </li>
          </ul>
          <t>A composite ML-DSA + ECDSA signature <bcp14>MUST</bcp14> use a hash algorithm with a digest size of at least 256 bits for the computation of the message digest.
A verifying implementation <bcp14>MUST</bcp14> reject any composite ML-DSA + ECDSA signature that uses a hash algorithm with a smaller digest size.</t>
        </section>
        <section anchor="key-material-packets">
          <name>Key Material Packets</name>
          <t>The composite ML-DSA + ECDSA schemes <bcp14>MUST</bcp14> be used only with v6 keys, as defined in <xref target="RFC9580"/>, or newer versions defined by updates of that document.</t>
          <section anchor="public-key-packets-packet-type-ids-6-and-14-1">
            <name>Public Key Packets (Packet Type IDs 6 and 14)</name>
            <t>The algorithm-specific public key for ML-DSA + ECDSA keys is this series of values:</t>
            <ul spacing="normal">
              <li>
                <t>A fixed-length octet string representing the ECDSA public key in SEC1 format, as specified in section <xref target="sec1-format"/>, whose length depends on the algorithm ID as specified in <xref target="tab-ecdsa-artifacts"/>.</t>
              </li>
              <li>
                <t>A fixed-length octet string containing the ML-DSA public key, whose length depends on the algorithm ID as specified in <xref target="tab-mldsa-artifacts"/>.</t>
              </li>
            </ul>
          </section>
          <section anchor="secret-key-packets-packet-type-ids-5-and-7-1">
            <name>Secret Key Packets (Packet Type IDs 5 and 7)</name>
            <t>The algorithm-specific secret key for ML-DSA + ECDSA keys is this series of values:</t>
            <ul spacing="normal">
              <li>
                <t>A fixed-length octet string representing the ECDSA secret key as a big-endian encoded integer, whose length depends on the algorithm ID as specified in <xref target="tab-ecdsa-artifacts"/>.</t>
              </li>
              <li>
                <t>A fixed-length octet string containing the ML-DSA secret key in seed format, whose length is 32 octets (compare <xref target="tab-mldsa-artifacts"/>).
The seed format is defined in accordance with Section 3.6.3 of <xref target="FIPS-204"/>.
Namely, the secret key is given by the value <tt>xi</tt> generated in step 1 of <tt>ML-DSA.KeyGen</tt> <xref target="FIPS-204"/>.
Upon parsing the secret key format, or before using the secret key, for the expansion of the key, the function <tt>ML-DSA.KeyGen_internal</tt> <xref target="FIPS-204"/> has to be invoked with the parsed value of <tt>xi</tt> as input.</t>
              </li>
            </ul>
          </section>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The following security considerations given in <xref target="I-D.draft-ietf-openpgp-pqc"/> equally apply to this document:</t>
      <ul spacing="normal">
        <li>
          <t>the security aspects of composite signatures (Section 9.1 in <xref target="I-D.draft-ietf-openpgp-pqc"/>),</t>
        </li>
        <li>
          <t>the arguments for the security features of the KEM combiner given in Section 9.2 of <xref target="I-D.draft-ietf-openpgp-pqc"/>, as also the NIST and Brainpool curves represent nominal groups according to <xref target="ABH_21"/>,</t>
        </li>
        <li>
          <t>the considerations regarding domain separation and context binding for the KEM combiner (Section 9.2.1 in <xref target="I-D.draft-ietf-openpgp-pqc"/>),</t>
        </li>
        <li>
          <t>the use of the hedged variant of ML-DSA (Section 9.3 in <xref target="I-D.draft-ietf-openpgp-pqc"/>),</t>
        </li>
        <li>
          <t>the minimum digest size for PQ/T signatures (Section 9.4 in <xref target="I-D.draft-ietf-openpgp-pqc"/>),</t>
        </li>
        <li>
          <t>the use of symmetric encryption in SEIPD packets (Section 9.5 in <xref target="I-D.draft-ietf-openpgp-pqc"/>),</t>
        </li>
        <li>
          <t>and key generation for composite schemes (Section 9.6 in <xref target="I-D.draft-ietf-openpgp-pqc"/>).</t>
        </li>
      </ul>
      <t>When implementing or using any of the algorithms defined in this specification, the above referenced security considerations should be noted.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to add the algorithm IDs defined in <xref target="iana-pubkey-algos"/> to the existing registry <tt>OpenPGP Public Key Algorithms</tt>.
The field specifications enclosed in brackets for the ML-KEM + ECDH composite algorithms denote fields that are only conditionally contained in the data structure.</t>
      <t>[Note: Once the working group has agreed on the actual algorithm choice, the following table with the requested IANA updates will be filled out.]</t>
      <table anchor="iana-pubkey-algos">
        <name>IANA updates for registry 'OpenPGP Public Key Algorithms'</name>
        <thead>
          <tr>
            <th align="left">ID</th>
            <th align="left">Algorithm</th>
            <th align="right">Public Key Format</th>
            <th align="right">Secret Key Format</th>
            <th align="right">Signature Format</th>
            <th align="right">PKESK Format</th>
            <th align="right">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD</td>
            <td align="left">ML-DSA-44+ECDSA-NIST-P-256</td>
            <td align="right">65 octets ECDSA public key (<xref target="tab-ecdsa-artifacts"/>), 1312 octets ML-DSA-44 public key (<xref target="tab-mldsa-artifacts"/>)</td>
            <td align="right">32 octets ECDSA secret key (<xref target="tab-ecdsa-artifacts"/>), 32 octets ML-DSA-44 secret key (<xref target="tab-mldsa-artifacts"/>)</td>
            <td align="right">64 octets ECDSA signature <xref target="tab-ecdsa-artifacts"/> , 2420 octets ML-DSA-44 signature (<xref target="tab-mldsa-artifacts"/>)</td>
            <td align="right">N/A</td>
            <td align="right">
              <xref target="ecc-mldsa"/></td>
          </tr>
          <tr>
            <td align="left">TBD</td>
            <td align="left">ML-DSA-65+ECDSA-NIST-P-384</td>
            <td align="right">97 octets ECDSA public key (<xref target="tab-ecdsa-artifacts"/>), 1952 octets ML-DSA-65 public key (<xref target="tab-mldsa-artifacts"/>)</td>
            <td align="right">48 octets ECDSA secret key (<xref target="tab-ecdsa-artifacts"/>), 32 octets ML-DSA-65 secret key (<xref target="tab-mldsa-artifacts"/>)</td>
            <td align="right">96 octets ECDSA signature <xref target="tab-ecdsa-artifacts"/> , 3309 octets ML-DSA-65 signature (<xref target="tab-mldsa-artifacts"/>)</td>
            <td align="right">N/A</td>
            <td align="right">
              <xref target="ecc-mldsa"/></td>
          </tr>
          <tr>
            <td align="left">TBD</td>
            <td align="left">ML-DSA-87+ECDSA-NIST-P-384</td>
            <td align="right">97 octets ECDSA public key (<xref target="tab-ecdsa-artifacts"/>), 2592 octets ML-DSA-87 public key (<xref target="tab-mldsa-artifacts"/>)</td>
            <td align="right">48 octets ECDSA secret key (<xref target="tab-ecdsa-artifacts"/>), 32 octets ML-DSA-87 secret key (<xref target="tab-mldsa-artifacts"/>)</td>
            <td align="right">96 octets ECDSA signature <xref target="tab-ecdsa-artifacts"/> , 4627 octets ML-DSA-87 signature (<xref target="tab-mldsa-artifacts"/>)</td>
            <td align="right">N/A</td>
            <td align="right">
              <xref target="ecc-mldsa"/></td>
          </tr>
          <tr>
            <td align="left">TBD</td>
            <td align="left">ML-DSA-65+ECDSA-brainpoolP256r1</td>
            <td align="right">65 octets ECDSA public key (<xref target="tab-ecdsa-artifacts"/>), 1952 octets ML-DSA-65 public key (<xref target="tab-mldsa-artifacts"/>)</td>
            <td align="right">32 octets ECDSA secret key (<xref target="tab-ecdsa-artifacts"/>), 32 octets ML-DSA-65 secret key (<xref target="tab-mldsa-artifacts"/>)</td>
            <td align="right">64 octets ECDSA signature <xref target="tab-ecdsa-artifacts"/> , 3309 octets ML-DSA-65 signature (<xref target="tab-mldsa-artifacts"/>)</td>
            <td align="right">N/A</td>
            <td align="right">
              <xref target="ecc-mldsa"/></td>
          </tr>
          <tr>
            <td align="left">TBD</td>
            <td align="left">ML-DSA-87+ECDSA-brainpoolP384r1</td>
            <td align="right">97 octets ECDSA public key (<xref target="tab-ecdsa-artifacts"/>), 2592 octets ML-DSA-87 public key (<xref target="tab-mldsa-artifacts"/>)</td>
            <td align="right">48 octets ECDSA secret key (<xref target="tab-ecdsa-artifacts"/>), 32 octets ML-DSA-87 secret key (<xref target="tab-mldsa-artifacts"/>)</td>
            <td align="right">96 octets ECDSA signature <xref target="tab-ecdsa-artifacts"/> , 4627 octets ML-DSA-87 signature (<xref target="tab-mldsa-artifacts"/>)</td>
            <td align="right">N/A</td>
            <td align="right">
              <xref target="ecc-mldsa"/></td>
          </tr>
          <tr>
            <td align="left">TBD</td>
            <td align="left">ML-KEM-512+ECDH-NIST-P-256</td>
            <td align="right">65 octets ECDH public key (<xref target="tab-ecdsa-artifacts"/>), 800 octets ML-KEM-512 public key (<xref target="tab-mlkem-artifacts"/>)</td>
            <td align="right">32 octets ECDH secret key (<xref target="tab-ecdsa-artifacts"/>), 64 octets ML-KEM-512 secret key (<xref target="tab-mlkem-artifacts"/>)</td>
            <td align="right">N/A</td>
            <td align="right">65 octets ECDH ciphertext, 768 octets ML-KEM-512 ciphertext, 1 octet remaining length, [1 octet algorithm ID in case of v3 PKESK,] <tt>n</tt> octets wrapped session key (<xref target="ecc-mlkem-pkesk"/>)</td>
            <td align="right">
              <xref target="ecc-mlkem"/></td>
          </tr>
          <tr>
            <td align="left">TBD</td>
            <td align="left">ML-KEM-768+ECDH-NIST-P-384</td>
            <td align="right">97 octets ECDH public key (<xref target="tab-ecdsa-artifacts"/>), 1184 octets ML-KEM-768 public key (<xref target="tab-mlkem-artifacts"/>)</td>
            <td align="right">48 octets ECDH secret key (<xref target="tab-ecdsa-artifacts"/>), 64 octets ML-KEM-768 secret key (<xref target="tab-mlkem-artifacts"/>)</td>
            <td align="right">N/A</td>
            <td align="right">97 octets ECDH ciphertext, 1088 octets ML-KEM-768 ciphertext, 1 octet remaining length, [1 octet algorithm ID in case of v3 PKESK,] <tt>n</tt> octets wrapped session key (<xref target="ecc-mlkem-pkesk"/>)</td>
            <td align="right">
              <xref target="ecc-mlkem"/></td>
          </tr>
          <tr>
            <td align="left">TBD</td>
            <td align="left">ML-KEM-1024+ECDH-NIST-P-384</td>
            <td align="right">97 octets ECDH public key (<xref target="tab-ecdsa-artifacts"/>), 1568 octets ML-KEM-768 public key (<xref target="tab-mlkem-artifacts"/>)</td>
            <td align="right">48 octets ECDH secret key (<xref target="tab-ecdsa-artifacts"/>), 64 octets ML-KEM-1024 secret key (<xref target="tab-mlkem-artifacts"/>)</td>
            <td align="right">N/A</td>
            <td align="right">97 octets ECDH ciphertext, 1568 octets ML-KEM-1024 ciphertext, 1 octet remaining length, [1 octet algorithm ID in case of v3 PKESK,] <tt>n</tt> octets wrapped session key (<xref target="ecc-mlkem-pkesk"/>)</td>
            <td align="right">
              <xref target="ecc-mlkem"/></td>
          </tr>
          <tr>
            <td align="left">TBD</td>
            <td align="left">ML-KEM-768+ECDH-brainpoolP256r1</td>
            <td align="right">65 octets ECDH public key (<xref target="tab-ecdsa-artifacts"/>), 1184 octets ML-KEM-768 public key (<xref target="tab-mlkem-artifacts"/>)</td>
            <td align="right">32 octets ECDH secret key (<xref target="tab-ecdsa-artifacts"/>), 64 octets ML-KEM-768 secret key (<xref target="tab-mlkem-artifacts"/>)</td>
            <td align="right">N/A</td>
            <td align="right">65 octets ECDH ciphertext, 1088 octets ML-KEM-768 ciphertext, 1 octet remaining length, [1 octet algorithm ID in case of v3 PKESK,] <tt>n</tt> octets wrapped session key (<xref target="ecc-mlkem-pkesk"/>)</td>
            <td align="right">
              <xref target="ecc-mlkem"/></td>
          </tr>
          <tr>
            <td align="left">TBD</td>
            <td align="left">ML-KEM-1024+ECDH-brainpoolP384r1</td>
            <td align="right">97 octets ECDH public key (<xref target="tab-ecdsa-artifacts"/>), 1568 octets ML-KEM-768 public key (<xref target="tab-mlkem-artifacts"/>)</td>
            <td align="right">48 octets ECDH secret key (<xref target="tab-ecdsa-artifacts"/>), 64 octets ML-KEM-1024 secret key (<xref target="tab-mlkem-artifacts"/>)</td>
            <td align="right">N/A</td>
            <td align="right">97 octets ECDH ciphertext, 1568 octets ML-KEM-1024 ciphertext, 1 octet remaining length, [1 octet algorithm ID in case of v3 PKESK,] <tt>n</tt> octets wrapped session key (<xref target="ecc-mlkem-pkesk"/>)</td>
            <td align="right">
              <xref target="ecc-mlkem"/></td>
          </tr>
        </tbody>
      </table>
      <t>IANA is asked to add the following note to this registry:</t>
      <ul empty="true">
        <li>
          <t>The field specifications enclosed in square brackets for PKESK Format represent fields that may or may not be present, depending on the PKESK version.</t>
        </li>
      </ul>
    </section>
    <section anchor="changelog">
      <name>Changelog</name>
      <t>This section gives the history of changes in the respective document versions. The order is newest first.</t>
      <section anchor="draft-ietf-openpgp-nist-bp-comp-01">
        <name>draft-ietf-openpgp-nist-bp-comp-01</name>
        <ul spacing="normal">
          <li>
            <t>Editorial alignment to <xref target="I-D.draft-ietf-openpgp-pqc"/></t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-openpgp-nist-bp-comp-00">
        <name>draft-ietf-openpgp-nist-bp-comp-00</name>
        <ul spacing="normal">
          <li>
            <t>change draft title</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ehlen-openpgp-nist-bp-comp-02">
        <name>draft-ehlen-openpgp-nist-bp-comp-02</name>
        <ul spacing="normal">
          <li>
            <t>Completed the IANA table.</t>
          </li>
          <li>
            <t>Added "Security Considerations" section.</t>
          </li>
          <li>
            <t>Alignment of various technical details to <xref target="I-D.draft-ietf-openpgp-pqc"/>.</t>
          </li>
          <li>
            <t>Various editorial alignments to <xref target="I-D.draft-ietf-openpgp-pqc"/>.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ehlen-openpgp-nist-bp-comp-01">
        <name>draft-ehlen-openpgp-nist-bp-comp-01</name>
        <ul spacing="normal">
          <li>
            <t>Replaced the explicit description of the KEM combiner with a reference to <xref target="I-D.draft-ietf-openpgp-pqc"/>.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9580">
          <front>
            <title>OpenPGP</title>
            <author fullname="P. Wouters" initials="P." role="editor" surname="Wouters"/>
            <author fullname="D. Huigens" initials="D." surname="Huigens"/>
            <author fullname="J. Winter" initials="J." surname="Winter"/>
            <author fullname="Y. Niibe" initials="Y." surname="Niibe"/>
            <date month="July" year="2024"/>
            <abstract>
              <t>This document specifies the message formats used in OpenPGP. OpenPGP provides encryption with public key or symmetric cryptographic algorithms, digital signatures, compression, and key management.</t>
              <t>This document is maintained in order to publish all necessary information needed to develop interoperable applications based on the OpenPGP format. It is not a step-by-step cookbook for writing an application. It describes only the format and methods needed to read, check, generate, and write conforming packets crossing any network. It does not deal with storage and implementation questions. It does, however, discuss implementation issues necessary to avoid security flaws.</t>
              <t>This document obsoletes RFCs 4880 ("OpenPGP Message Format"), 5581 ("The Camellia Cipher in OpenPGP"), and 6637 ("Elliptic Curve Cryptography (ECC) in OpenPGP").</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9580"/>
          <seriesInfo name="DOI" value="10.17487/RFC9580"/>
        </reference>
        <reference anchor="RFC7748">
          <front>
            <title>Elliptic Curves for Security</title>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="M. Hamburg" initials="M." surname="Hamburg"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="January" year="2016"/>
            <abstract>
              <t>This memo specifies two elliptic curves over prime fields that offer a high level of practical security in cryptographic applications, including Transport Layer Security (TLS). These curves are intended to operate at the ~128-bit and ~224-bit security level, respectively, and are generated deterministically based on a list of required properties.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7748"/>
          <seriesInfo name="DOI" value="10.17487/RFC7748"/>
        </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="RFC3394">
          <front>
            <title>Advanced Encryption Standard (AES) Key Wrap Algorithm</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="September" year="2002"/>
          </front>
          <seriesInfo name="RFC" value="3394"/>
          <seriesInfo name="DOI" value="10.17487/RFC3394"/>
        </reference>
        <reference anchor="RFC5639">
          <front>
            <title>Elliptic Curve Cryptography (ECC) Brainpool Standard Curves and Curve Generation</title>
            <author fullname="M. Lochter" initials="M." surname="Lochter"/>
            <author fullname="J. Merkle" initials="J." surname="Merkle"/>
            <date month="March" year="2010"/>
            <abstract>
              <t>This memo proposes several elliptic curve domain parameters over finite prime fields for use in cryptographic applications. The domain parameters are consistent with the relevant international standards, and can be used in X.509 certificates and certificate revocation lists (CRLs), for Internet Key Exchange (IKE), Transport Layer Security (TLS), XML signatures, and all applications or protocols based on the cryptographic message syntax (CMS). This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5639"/>
          <seriesInfo name="DOI" value="10.17487/RFC5639"/>
        </reference>
        <reference anchor="I-D.draft-ietf-openpgp-pqc">
          <front>
            <title>Post-Quantum Cryptography in OpenPGP</title>
            <author fullname="Stavros Kousidis" initials="S." surname="Kousidis">
              <organization>BSI</organization>
            </author>
            <author fullname="Johannes Roth" initials="J." surname="Roth">
              <organization>MTG AG</organization>
            </author>
            <author fullname="Falko Strenzke" initials="F." surname="Strenzke">
              <organization>MTG AG</organization>
            </author>
            <author fullname="Aron Wussler" initials="A." surname="Wussler">
              <organization>Proton AG</organization>
            </author>
            <date day="14" month="October" year="2025"/>
            <abstract>
              <t>   This document defines a post-quantum public-key algorithm extension
   for the OpenPGP protocol.  Given the generally assumed threat of a
   cryptographically relevant quantum computer, this extension provides
   a basis for long-term secure OpenPGP signatures and ciphertexts.
   Specifically, it defines composite public-key encryption based on ML-
   KEM (formerly CRYSTALS-Kyber), composite public-key signatures based
   on ML-DSA (formerly CRYSTALS-Dilithium), both in combination with
   elliptic curve cryptography, and SLH-DSA (formerly SPHINCS+) as a
   standalone public key signature scheme.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-openpgp-pqc-13"/>
        </reference>
        <reference anchor="SEC1" target="https://secg.org/sec1-v2.pdf">
          <front>
            <title>Standards for Efficient Cryptography 1 (SEC 1)</title>
            <author>
              <organization>Standards for Efficient Cryptography Group</organization>
            </author>
            <date year="2009" month="May"/>
          </front>
        </reference>
        <reference anchor="FIPS-203" target="https://doi.org/10.6028/NIST.FIPS.203">
          <front>
            <title>Module-Lattice-Based Key-Encapsulation Mechanism Standard</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2024" month="August"/>
          </front>
        </reference>
        <reference anchor="FIPS-204" target="https://doi.org/10.6028/NIST.FIPS.204">
          <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="SP800-186" target="https://doi.org/10.6028/NIST.SP.800-186">
          <front>
            <title>Recommendations for Discrete Logarithm-Based Cryptography:  Elliptic Curve Domain Parameters</title>
            <author initials="L." surname="Chen" fullname="Lily Chen">
              <organization/>
            </author>
            <author initials="D." surname="Moody" fullname="Dustin Moody">
              <organization/>
            </author>
            <author initials="A." surname="Regenscheid" fullname="Andrew Regenscheid">
              <organization/>
            </author>
            <author initials="K." surname="Randall" fullname="Karen Randall">
              <organization/>
            </author>
            <date year="2023" month="February"/>
          </front>
          <seriesInfo name="NIST Special Publication 800-186" value=""/>
        </reference>
        <reference anchor="SP800-186-5" target="https://doi.org/10.6028/NIST.FIPS.186-5">
          <front>
            <title>Digital Signature Standard (DSS)</title>
            <author>
              <organization>Information Technology Laboratory, National Institute of Standards and Technology</organization>
            </author>
            <date year="2023" month="February"/>
          </front>
          <seriesInfo name="NIST Special Publication 800-186" value=""/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="TR-03111" target="https://www.bsi.bund.de/DE/Themen/Unternehmen-und-Organisationen/Standards-und-Zertifizierung/Technische-Richtlinien/TR-nach-Thema-sortiert/tr03111/TR-03111_node.html">
          <front>
            <title>Technical Guideline BSI TR-03111 – Elliptic Curve Cryptography, Version 2.1</title>
            <author>
              <organization>Federal Office for Information Security, Germany</organization>
            </author>
            <date year="2018" month="June"/>
          </front>
        </reference>
        <reference anchor="ABH_21" target="https://doi.org/10.1007/978-3-030-77870-5_4">
          <front>
            <title>Analysing the HPKE Standard</title>
            <author initials="J." surname="Alwen" fullname="Joel Alwen">
              <organization/>
            </author>
            <author initials="B." surname="Blanchet" fullname="Bruno Blanchet">
              <organization/>
            </author>
            <author initials="E." surname="Hauck" fullname="Eduard Hauck">
              <organization/>
            </author>
            <author initials="E." surname="Kiltz" fullname="Eike Kiltz">
              <organization/>
            </author>
            <author initials="B." surname="Lipp" fullname="Benjamin Lipp">
              <organization/>
            </author>
            <author initials="D." surname="Riepel" fullname="Doreen Riepl">
              <organization/>
            </author>
            <date year="2021"/>
          </front>
        </reference>
        <reference anchor="RFC9794">
          <front>
            <title>Terminology for Post-Quantum Traditional Hybrid Schemes</title>
            <author fullname="F. Driscoll" initials="F." surname="Driscoll"/>
            <author fullname="M. Parsons" initials="M." surname="Parsons"/>
            <author fullname="B. Hale" initials="B." surname="Hale"/>
            <date month="June" year="2025"/>
            <abstract>
              <t>One aspect of the transition to post-quantum algorithms in cryptographic protocols is the development of hybrid schemes that incorporate both post-quantum and traditional asymmetric algorithms. This document defines terminology for such schemes. It is intended to be used as a reference and, hopefully, to ensure consistency and clarity across different protocols, standards, and organisations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9794"/>
          <seriesInfo name="DOI" value="10.17487/RFC9794"/>
        </reference>
      </references>
    </references>
    <?line 721?>

<section anchor="test-vectors">
      <name>Test Vectors</name>
      <t>TBD</t>
      <section anchor="sample-v6-pqc-subkey-artifacts">
        <name>Sample v6 PQC Subkey Artifacts</name>
        <t>TBD
## V4 PQC Subkey Artifacts</t>
        <t>TBD</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
