<?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.21 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ehlen-openpgp-nist-bp-comp-01" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <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-ehlen-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="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="January" day="07"/>
    <area>sec</area>
    <workgroup>Network Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 323?>

<t>This document defines PQ/T composite schemes based on ML-KEM and ML-DSA combined with ECC 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-ehlen-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 327?>

<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.
As such it extends <xref target="draft-ietf-openpgp-pqc-06"/>, which introduces post-quantum cryptography in OpenPGP.
The ML-KEM and ML-DSA composite schemes defined in that document are built with ECC algorithms using the Edwards Curves defined in <xref target="RFC8032"/> and <xref target="RFC7748"/>.
This document extends the set of algorithms given in <xref target="draft-ietf-openpgp-pqc-06"/> by further combinations of ML-KEM and ML-DSA with the NIST <xref target="SP800-186"/> and Brainpool <xref target="RFC5639"/> domain parameters.
The support of NIST and Brainpool domain parameters is required in various applications related to certain regulatory environments.</t>
      <section anchor="conventions-used-in-this-document">
        <name>Conventions used in this Document</name>
        <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="draft-driscoll-pqt-hybrid-terminology"/>.
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>
        <t>[Note to the reader: This specification refers to the NIST PQC draft standards FIPS 203 and FIPS 204 as if they were a final specification.
This is a temporary solution until the final versions of these documents are available.
The goal is to provide a sufficiently precise specification of the algorithms already at the draft stage of this specification, so that it is possible for implementers to create interoperable implementations.
Furthermore, we want to point out that, depending on possible future changes to the draft standards by NIST, this specification may be updated as soon as corresponding information becomes available.]</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 by classical as well as quantum computers.
This specification defines ML-KEM only in composite combination with ECC-based 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 ECC-based signature schemes.</t>
        </section>
      </section>
      <section anchor="elliptic-curve-cryptography">
        <name>Elliptic Curve Cryptography</name>
        <t>The ECC-based encryption is defined here as a KEM.
This is in contrast to <xref target="I-D.ietf-openpgp-crypto-refresh"/> where the ECC-based encryption is defined as a public-key encryption scheme.</t>
        <t>All elliptic curves for the use in the composite combinations are taken from <xref target="I-D.ietf-openpgp-crypto-refresh"/>.</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="draft-ietf-openpgp-pqc-06"/>, which introduced PQC in OpenPGP, in that it defines further algorithm code points.
All general specifications in <xref target="draft-ietf-openpgp-pqc-06"/> 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 MUST NOT 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 REQUIRED 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, i.e., 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">MAY</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">MAY</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">MAY</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">MAY</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">MAY</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">MAY</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">MAY</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">MAY</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">MAY</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">MAY</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>Algorithms indicated as MAY 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 MUST NOT 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 ECC-based KEM in an a priori non-separable manner.
This is achieved via KEM combination, i.e. 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 ECC signatures, and an implementation MUST successfully validate both signatures to state that the ML-DSA+ECDSA signature is valid.</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>ECC-Based KEMs</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 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 share</td>
                <td align="left">65 octets of SEC1-encoded shared point</td>
                <td align="left">97 octets of SEC1-encoded shared point</td>
              </tr>
              <tr>
                <td align="left">Key share</td>
                <td align="left">32 octets</td>
                <td align="left">64 octets</td>
              </tr>
              <tr>
                <td align="left">Hash</td>
                <td align="left">SHA3-256</td>
                <td align="left">SHA3-512</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 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 share</td>
                <td align="left">65 octets of SEC1-encoded shared point</td>
                <td align="left">97 octets of SEC1-encoded shared point</td>
              </tr>
              <tr>
                <td align="left">Key share</td>
                <td align="left">32 octets</td>
                <td align="left">64 octets</td>
              </tr>
              <tr>
                <td align="left">Hash</td>
                <td align="left">SHA3-256</td>
                <td align="left">SHA3-512</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 ECC-based 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(ecdhSecretKey, ecdhCipherText, ecdhPublicKey)
]]></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:
1. 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>
            <ol spacing="normal" type="1"><li>
                <t>Compute the shared point <tt>S = vR</tt>, where <tt>R</tt> is the component 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>Hash(X || ecdhCipherText || ecdhPublicKey)</tt>, with <tt>Hash</tt> chosen according to <xref target="tab-ecdh-nist-artifacts"/> or <xref target="tab-ecdh-brainpool-artifacts"/></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>Hash(X || ecdhCipherText || ecdhPublicKey)</tt>, with <tt>Hash</tt> chosen according to <xref target="tab-ecdh-nist-artifacts"/> or <xref target="tab-ecdh-brainpool-artifacts"/></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 artifact lengths in octets</name>
            <thead>
              <tr>
                <th align="right">Algorithm ID reference</th>
                <th align="left">ML-KEM</th>
                <th align="left">Public key</th>
                <th align="left">Secret key</th>
                <th align="left">Ciphertext</th>
                <th align="left">Key share</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="right">TBD</td>
                <td align="left">ML-KEM-512</td>
                <td align="left">800</td>
                <td align="left">1632</td>
                <td align="left">768</td>
                <td align="left">32</td>
              </tr>
              <tr>
                <td align="right">TBD</td>
                <td align="left">ML-KEM-768</td>
                <td align="left">1184</td>
                <td align="left">2400</td>
                <td align="left">1088</td>
                <td align="left">32</td>
              </tr>
              <tr>
                <td align="right">TBD</td>
                <td align="left">ML-KEM-1024</td>
                <td align="left">1568</td>
                <td align="left">3168</td>
                <td align="left">1568</td>
                <td align="left">32</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>
          <t>The procedure to perform <tt>ML-KEM.Encaps()</tt> is as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Invoke <tt>(mlkemCipherText, mlkemKeyShare) &lt;- ML-KEM.Encaps(mlkemPublicKey)</tt>, where <tt>mlkemPublicKey</tt> is the recipient's public key</t>
            </li>
            <li>
              <t>Set <tt>mlkemCipherText</tt> as the ML-KEM ciphertext</t>
            </li>
            <li>
              <t>Set <tt>mlkemKeyShare</tt> as the ML-KEM symmetric key share</t>
            </li>
          </ol>
          <t>The procedure to perform <tt>ML-KEM.Decaps()</tt> is as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Invoke <tt>mlkemKeyShare &lt;-  ML-KEM.Decaps(mlkemCipherText, mlkemSecretKey)</tt></t>
            </li>
            <li>
              <t>Set <tt>mlkemKeyShare</tt> as the ML-KEM symmetric key share</t>
            </li>
          </ol>
        </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-KEM 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 ECC ciphertext together with an ECC 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 and the protocol binding information.</t>
          </li>
          <li>
            <t>The session key for content encryption is then encrypted with the AES Key Wrap Algorithm <xref target="RFC3394"/> with AES-256 as the encryption algorithm and using the KEK as the encryption key.</t>
          </li>
          <li>
            <t>The PKESK package's algorithm-specific parts are made up of the ML-KEM ciphertext, the ECC 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 target="draft-ietf-openpgp-pqc-06"/> Section 4.2.1 MUST 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 MUST independently generate the ML-KEM and the ECC component keys.
ML-KEM key generation follows the specification <xref target="FIPS-203"/> and the artifacts are encoded as fixed-length octet strings as defined in <xref target="mlkem-ops"/>.
For ECC this is done following the relative specification in <xref target="SP800-186"/> or <xref target="RFC5639"/>, and encoding the outputs as fixed-length octet strings in the format specified 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></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, mlkemCipherText, mlkemPublicKey, eccKeyShare, eccCipherText, eccPublicKey, algId)</tt></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>eccCipherText || mlkemCipherText len(symAlgId, C) (|| 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 and the <tt>encryptedKey</tt>, i.e., the wrapped session key</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(symAlgId, C) (|| 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, ecdhPublicKey)</tt></t>
            </li>
            <li>
              <t>Compute <tt>(mlkemKeyShare) := ML-KEM.Decaps(mlkemCipherText, mlkemSecretKey)</tt></t>
            </li>
            <li>
              <t>Compute <tt>KEK = multiKeyCombine(mlkemKeyShare, mlkemCipherText, mlkemPublicKey, eccKeyShare, eccCipherText, eccPublicKey, algId)</tt></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 (Tag 1)</name>
          <t>The algorithm-specific fields consists 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 ECC 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="I-D.ietf-openpgp-crypto-refresh"/>, for the ML-KEM+ECDH 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 MUST 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 MUST check if the length of the unwrapped symmetric key matches the symmetric algorithm identifier, and abort if this is not the case.</t>
        </section>
        <section anchor="mlkem-ecc-key">
          <name>Key Material Packets</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 EC point 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>
          <t>The algorithm-specific secret key is these two values:</t>
          <ul spacing="normal">
            <li>
              <t>A fixed-length octet string of the encoded secret scalar, 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, whose length depends on the algorithm ID as specified in <xref target="tab-mlkem-artifacts"/>.</t>
            </li>
          </ul>
        </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, ecdsaSignatureR,
                           ecdsaSignatureS, dataDigest)
]]></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 MUST 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 MUST 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 in octets</name>
            <thead>
              <tr>
                <th align="right">Algorithm ID reference</th>
                <th align="left">Curve</th>
                <th align="left">Field size</th>
                <th align="left">Public key</th>
                <th align="left">Secret key</th>
                <th align="left">Signature value R</th>
                <th align="left">Signature value S</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="right">TBD (ML-DSA-44+ECDSA-NIST-P-256)</td>
                <td align="left">NIST P-256</td>
                <td align="left">32</td>
                <td align="left">65</td>
                <td align="left">32</td>
                <td align="left">32</td>
                <td align="left">32</td>
              </tr>
              <tr>
                <td align="right">TBD (ML-DSA-65+ECDSA-NIST-P-384,ML-DSA-87+ECDSA-NIST-P-384)</td>
                <td align="left">NIST P-384</td>
                <td align="left">48</td>
                <td align="left">97</td>
                <td align="left">48</td>
                <td align="left">48</td>
                <td align="left">48</td>
              </tr>
              <tr>
                <td align="right">TBD (ML-DSA-65+ECDSA-brainpoolP256r1)</td>
                <td align="left">brainpoolP256r1</td>
                <td align="left">32</td>
                <td align="left">65</td>
                <td align="left">32</td>
                <td align="left">32</td>
                <td align="left">32</td>
              </tr>
              <tr>
                <td align="right">TBD (ML-DSA-87+ECDSA-brainpoolP384r1)</td>
                <td align="left">brainpoolP384r1</td>
                <td align="left">48</td>
                <td align="left">97</td>
                <td align="left">48</td>
                <td align="left">48</td>
                <td align="left">48</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="mldsa-signature">
          <name>ML-DSA signatures</name>
          <t>For ML-DSA signature generation the default hedged version of <tt>ML-DSA.Sign</tt> given in <xref target="FIPS-204"/> is used.
That is, to sign with ML-DSA the following operation is defined:</t>
          <artwork><![CDATA[
(mldsaSignature) <- ML-DSA.Sign(mldsaSecretKey, dataDigest)
]]></artwork>
          <t>For ML-DSA signature verification the algorithm ML-DSA.Verify given in <xref target="FIPS-204"/> is used.
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 in octets</name>
            <thead>
              <tr>
                <th align="right">Algorithm ID reference</th>
                <th align="left">ML-DSA</th>
                <th align="left">Public key</th>
                <th align="left">Secret key</th>
                <th align="left">Signature value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="right">TBD</td>
                <td align="left">ML-DSA-44</td>
                <td align="left">1312</td>
                <td align="left">2528</td>
                <td align="left">2420</td>
              </tr>
              <tr>
                <td align="right">TBD</td>
                <td align="left">ML-DSA-65</td>
                <td align="left">1952</td>
                <td align="left">4032</td>
                <td align="left">3293</td>
              </tr>
              <tr>
                <td align="right">TBD</td>
                <td align="left">ML-DSA-87</td>
                <td align="left">2592</td>
                <td align="left">4896</td>
                <td align="left">4595</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="ecc-mldsa">
        <name>Composite Signature Schemes with ML-DSA</name>
        <section anchor="mldsa-sig-data-digest">
          <name>Signature data digest</name>
          <t>Signature data (i.e. the data to be signed) is digested prior to signing operations, see <xref target="I-D.ietf-openpgp-crypto-refresh"/>, Section 5.2.4.
Composite ML-DSA+ECDSA signatures MUST use the associated hash algorithm as specified in <xref target="tab-mldsa-hash"/> for the signature data digest.
Signatures using other hash algorithms MUST be considered invalid.</t>
          <t>An implementation supporting a specific ML-DSA+ECDSA algorithm MUST also support the matching hash algorithm.</t>
          <table anchor="tab-mldsa-hash">
            <name>Binding between ML-DSA+ECDSA and signature data digest</name>
            <thead>
              <tr>
                <th align="right">Algorithm ID reference</th>
                <th align="left">Hash function</th>
                <th align="left">Hash function ID reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="right">TBD (ML-DSA-44 IDs)</td>
                <td align="left">SHA3-256</td>
                <td align="left">12</td>
              </tr>
              <tr>
                <td align="right">TBD (ML-DSA-65 IDs)</td>
                <td align="left">SHA3-512</td>
                <td align="left">14</td>
              </tr>
              <tr>
                <td align="right">TBD (ML-DSA-87 IDs)</td>
                <td align="left">SHA3-512</td>
                <td align="left">14</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="ecc-mldsa-generation">
          <name>Key generation procedure</name>
          <t>The implementation MUST independently generate the ML-DSA and the ECC component keys.
ML-DSA key generation follows the specification <xref target="FIPS-204"/> and the artifacts are encoded as fixed-length octet strings as defined in <xref target="mldsa-signature"/>.
For ECC this is done following the relative specification in <xref target="SP800-186"/> or <xref target="RFC5639"/>, and encoding the artifacts as specified in <xref target="ecdsa-signature"/> as fixed-length octet strings.</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 target="I-D.ietf-openpgp-crypto-refresh"/>, Section 5.2.4</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 MUST validate both signatures, i.e. 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 (Tag 2)</name>
          <t>The composite ML-DSA+ECDSA schemes MUST be used only with v6 signatures, as defined in <xref target="I-D.ietf-openpgp-crypto-refresh"/>.</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>
        </section>
        <section anchor="key-material-packets">
          <name>Key Material Packets</name>
          <t>The composite ML-DSA+ECDSA schemes MUST be used only with v6 keys, as defined in <xref target="I-D.ietf-openpgp-crypto-refresh"/>.</t>
          <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"/> and with length 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>
          <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 used as specified in <xref target="tab-ecdsa-artifacts"/>.</t>
            </li>
            <li>
              <t>A fixed-length octet string containing the ML-DSA secret key, whose length depends on the algorithm ID as specified in <xref target="tab-mldsa-artifacts"/>.</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TBD</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-65+TBD</td>
            <td align="right">TBD octets TBD public key , TBD octets ML-DSA-65 public key (<xref target="tab-mldsa-artifacts"/>)</td>
            <td align="right">TBD octets TBD secret key , TBD octets ML-DSA-65 secret (<xref target="tab-mldsa-artifacts"/>)</td>
            <td align="right">TBD octets TBD signature , TBD 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>
        </tbody>
      </table>
    </section>
    <section anchor="changelog">
      <name>Changelog</name>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <t>Stavros Kousidis</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="I-D.ietf-openpgp-crypto-refresh">
          <front>
            <title>OpenPGP</title>
            <author fullname="Paul Wouters" initials="P." surname="Wouters">
              <organization>Aiven</organization>
            </author>
            <author fullname="Daniel Huigens" initials="D." surname="Huigens">
              <organization>Proton AG</organization>
            </author>
            <author fullname="Justus Winter" initials="J." surname="Winter">
              <organization>Sequoia-PGP</organization>
            </author>
            <author fullname="Niibe Yutaka" initials="N." surname="Yutaka">
              <organization>FSIJ</organization>
            </author>
            <date day="4" month="January" 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.

   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.

   This document obsoletes: RFC 4880 (OpenPGP), RFC 5581 (Camellia in
   OpenPGP) and RFC 6637 (Elliptic Curves in OpenPGP).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-openpgp-crypto-refresh-13"/>
        </reference>
        <reference anchor="draft-ietf-openpgp-pqc-06" target="https://www.ietf.org/archive/id/draft-ietf-openpgp-pqc-06.html">
          <front>
            <title>Post-Quantum Cryptography in OpenPGP (draft-ietf-openpgp-pqc-06)</title>
            <author initials="S." surname="Kousidis" fullname="Stavros Kousidis">
              <organization/>
            </author>
            <author initials="J." surname="Roth" fullname="Johannes Roth">
              <organization/>
            </author>
            <author initials="F." surname="Strenzke" fullname="Falko Strenzke">
              <organization/>
            </author>
            <author initials="A." surname="Wussler" fullname="Aron Wussler">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <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="NIST-PQC" target="https://csrc.nist.gov/projects/post-quantum-cryptography/post-quantum-cryptography-standardization">
          <front>
            <title>Post-Quantum Cryptography Standardization</title>
            <author initials="L." surname="Chen" fullname="Lily Chen">
              <organization/>
            </author>
            <author initials="D." surname="Moody" fullname="Dustin Moody">
              <organization/>
            </author>
            <author initials="Y." surname="Liu" fullname="Yi-Kai Liu">
              <organization/>
            </author>
            <date year="2016" month="December"/>
          </front>
        </reference>
        <reference anchor="NISTIR-8413" target="https://doi.org/10.6028/NIST.IR.8413-upd1">
          <front>
            <title>Status Report on the Third Round of the NIST Post-Quantum Cryptography Standardization Process</title>
            <author initials="G." surname="Alagic" fullname="Gorjan Alagic">
              <organization/>
            </author>
            <author initials="D." surname="Apon" fullname="Daniel Apon">
              <organization/>
            </author>
            <author initials="D." surname="Cooper" fullname="David Cooper">
              <organization/>
            </author>
            <author initials="Q." surname="Dang" fullname="Quynh Dang">
              <organization/>
            </author>
            <author initials="T." surname="Dang" fullname="Thinh Dang">
              <organization/>
            </author>
            <author initials="J." surname="Kelsey" fullname="John Kelsay">
              <organization/>
            </author>
            <author initials="J." surname="Lichtinger" fullname="Jacob Lichtinger">
              <organization/>
            </author>
            <author initials="C." surname="Miller" fullname="Carl Miller">
              <organization/>
            </author>
            <author initials="D." surname="Moody" fullname="Dustin Moody">
              <organization/>
            </author>
            <author initials="R." surname="Peralta" fullname="Rene Peralta">
              <organization/>
            </author>
            <author initials="R." surname="Perlner" fullname="Ray Perlner">
              <organization/>
            </author>
            <author initials="A." surname="Robinson" fullname="Angela Robinson">
              <organization/>
            </author>
            <author initials="D." surname="Smith-Tone" fullname="Daniel Smith-Tone">
              <organization/>
            </author>
            <author initials="Y." surname="Liu" fullname="Yi-Kai Liu">
              <organization/>
            </author>
            <date year="2022" month="September"/>
          </front>
          <seriesInfo name="NIST IR 8413" value=""/>
        </reference>
        <reference anchor="SP800-56C" target="https://doi.org/10.6028/NIST.SP.800-56Cr2">
          <front>
            <title>Recommendation for Key-Derivation Methods in Key-Establishment Schemes</title>
            <author initials="E." surname="Barker" fullname="Elaine Barker">
              <organization/>
            </author>
            <author initials="L." surname="Chen" fullname="Lily Chen">
              <organization/>
            </author>
            <author initials="R." surname="Davis" fullname="Richard Davis">
              <organization/>
            </author>
            <date year="2020" month="August"/>
          </front>
          <seriesInfo name="NIST Special Publication 800-56C Rev. 2" value=""/>
        </reference>
        <reference anchor="SP800-185" target="https://doi.org/10.6028/NIST.SP.800-185">
          <front>
            <title>SHA-3 Derived Functions: cSHAKE, KMAC, TupleHash, and ParallelHash</title>
            <author initials="J." surname="Kelsey" fullname="John Kelsey">
              <organization/>
            </author>
            <author initials="S." surname="Chang" fullname="Shu-jen Chang">
              <organization/>
            </author>
            <author initials="R." surname="Perlner" fullname="Ray Perlner">
              <organization/>
            </author>
            <date year="2016" month="December"/>
          </front>
          <seriesInfo name="NIST Special Publication 800-185" value=""/>
        </reference>
        <reference anchor="SP800-56A" target="https://doi.org/10.6028/NIST.SP.800-56Ar3">
          <front>
            <title>Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography</title>
            <author initials="E." surname="Barker" fullname="Elaine Barker">
              <organization/>
            </author>
            <author initials="L." surname="Chen" fullname="Lily Chen">
              <organization/>
            </author>
            <author initials="A." surname="Roginsky" fullname="Allen Roginsky">
              <organization/>
            </author>
            <author initials="A." surname="Vassilev" fullname="Apostol Vassilev">
              <organization/>
            </author>
            <author initials="R." surname="Davis" fullname="Richard Davis">
              <organization/>
            </author>
            <date year="2018" month="April"/>
          </front>
          <seriesInfo name="NIST Special Publication 800-56A Rev. 3" value=""/>
        </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="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.ipd">
          <front>
            <title>Module-Lattice-Based Key-Encapsulation Mechanism Standard</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2023" month="August"/>
          </front>
        </reference>
        <reference anchor="FIPS-204" target="https://doi.org/10.6028/NIST.FIPS.204.ipd">
          <front>
            <title>Module-Lattice-Based Digital Signature Standard</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2023" month="August"/>
          </front>
        </reference>
        <reference anchor="FIPS-205" target="https://doi.org/10.6028/NIST.FIPS.205.ipd">
          <front>
            <title>Stateless Hash-Based Digital Signature Standard</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2023" month="August"/>
          </front>
        </reference>
        <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="draft-driscoll-pqt-hybrid-terminology" target="https://datatracker.ietf.org/doc/html/draft-driscoll-pqt-hybrid-terminology">
          <front>
            <title>Terminology for Post-Quantum Traditional Hybrid Schemes</title>
            <author initials="F." surname="Driscoll" fullname="Florence Driscoll">
              <organization/>
            </author>
            <date year="2023" month="March"/>
          </front>
        </reference>
        <reference anchor="GHP18" target="https://doi.org/10.1007/978-3-319-76578-5_7">
          <front>
            <title>KEM Combiners</title>
            <author initials="F." surname="Giacon" fullname="Federico Giacon">
              <organization/>
            </author>
            <author initials="F." surname="Heuer" fullname="Felix Heuer">
              <organization/>
            </author>
            <author initials="B." surname="Poettering" fullname="Bertram Poettering">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
        </reference>
        <reference anchor="BDPA08" target="https://doi.org/10.1007/978-3-540-78967-3_11">
          <front>
            <title>On the Indifferentiability of the Sponge Construction</title>
            <author initials="G." surname="Bertoni" fullname="Guido Bertoni">
              <organization/>
            </author>
            <author initials="J." surname="Daemen" fullname="Joan Daemen">
              <organization/>
            </author>
            <author initials="M." surname="Peters" fullname="Michael Peters">
              <organization/>
            </author>
            <author initials="G." surname="Assche" fullname="Gilles van Assche">
              <organization/>
            </author>
            <date year="2008"/>
          </front>
        </reference>
        <reference anchor="CS03" target="https://doi.org/10.1137/S0097539702403773">
          <front>
            <title>Design and Analysis of Practical Public-Key Encryption Schemes Secure against Adaptive Chosen Ciphertext Attack</title>
            <author initials="R." surname="Cramer" fullname="Ronald Cramer">
              <organization/>
            </author>
            <author initials="V." surname="Shoup" fullname="Victor Shoup">
              <organization/>
            </author>
            <date year="2003"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 846?>

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

-->

</rfc>
