<?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-ietf-lamps-cms-kyber-08" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title abbrev="ML-KEM in CMS">Use of ML-KEM in the Cryptographic Message Syntax (CMS)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-kyber-08"/>
    <author initials="J." surname="Prat" fullname="Julien Prat">
      <organization>CryptoNext Security</organization>
      <address>
        <postal>
          <street>16, Boulevard Saint-Germain</street>
          <city>Paris</city>
          <code>75005</code>
          <country>France</country>
        </postal>
        <email>julien.prat@cryptonext-security.com</email>
      </address>
    </author>
    <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road -- Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>mike.ounsworth@entrust.com</email>
      </address>
    </author>
    <author initials="D." surname="Van Geest" fullname="Daniel Van Geest">
      <organization>CryptoNext Security</organization>
      <address>
        <postal>
          <street>16, Boulevard Saint-Germain</street>
          <city>Paris</city>
          <code>75005</code>
          <country>France</country>
        </postal>
        <email>daniel.vangeest@cryptonext-security.com</email>
      </address>
    </author>
    <date year="2025" month="January" day="09"/>
    <area>Security</area>
    <workgroup>LAMPS</workgroup>
    <keyword>Key Encapsulation Mechanism (KEM)</keyword>
    <keyword>KEMRecipientInfo</keyword>
    <keyword>ML-KEM</keyword>
    <keyword>Kyber</keyword>
    <abstract>
      <?line 98?>

<t>Module-Lattice-Based Key-Encapsulation Mechanism (ML-KEM) is a quantum-resistant key-encapsulation mechanism (KEM). Three parameters sets for the ML-KEM algorithm are specified by NIST in FIPS 203. In order of increasing security strength (and decreasing performance), these parameter sets are ML-KEM-512, ML-KEM-768, and ML-KEM-1024. This document specifies the conventions for using ML-KEM with the Cryptographic Message Syntax (CMS) using the KEMRecipientInfo structure.</t>
      <!-- End of Abstract -->



    </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-lamps-cms-kyber/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Limited Additional Mechanisms for PKIX and SMIME (lamps) Working Group mailing list (<eref target="mailto:spasm@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/spasm/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/spasm/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/lamps-wg/cms-kyber"/>.</t>
    </note>
  </front>
  <middle>
    <?line 104?>

<section anchor="sec-introduction">
      <name>Introduction</name>
      <t>ML-KEM is an IND-CCA2-secure key-encapsulation mechanism (KEM) standardized in <xref target="FIPS203"/> by the US NIST PQC Project <xref target="NIST-PQ"/>. Prior to standardization, the algorithm was known as Kyber.  ML-KEM and Kyber are not compatible.</t>
      <t>Native support for Key Encapsulation Mechanisms (KEMs) was added to CMS in <xref target="RFC9629"/>, which defines the KEMRecipientInfo structure for the use of KEM algorithms for the CMS enveloped-data content type, the CMS authenticated-data content type, and the CMS authenticated-enveloped-data content type. This document specifies the direct use of ML-KEM in the KEMRecipientInfo structure in CMS using each of the three parameter sets from <xref target="FIPS203"/>, namely MK-KEM-512, ML-KEM-768, and ML-KEM-1024.  It does not address or preclude the use of ML-KEM as part of any hybrid scheme.</t>
      <section anchor="sec-intro-terminology">
        <name>Conventions and Terminology</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 BCP14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<!-- End of terminology section -->

</section>
      <section anchor="sec-intro-ml-kem">
        <name>ML-KEM</name>
        <t>ML-KEM is a lattice-based key encapsulation mechanism using Module Learning with Errors as its underlying primitive, which is a structured lattices variant that offers good performance and relatively small and balanced key and ciphertext sizes. ML-KEM was standardized with three parameter sets: ML-KEM-512, ML-KEM-768, and ML-KEM-1024. The parameters for each of the security levels were chosen to be at least as secure as a generic block cipher of 128, 192, or 256 bits, respectively.</t>
        <t>Like all KEM algorithms, ML-KEM provides three functions: KeyGen(), Encapsulate(), and Decapsulate().</t>
        <dl>
          <dt>KeyGen() -&gt; (pk, sk):</dt>
          <dd>
            <t>Generate the public key (pk) and a private key (sk).</t>
          </dd>
          <dt>Encapsulate(pk) -&gt; (ct, ss):</dt>
          <dd>
            <t>Given the recipient's public key (pk), produce a ciphertext (ct) to be passed to the recipient and a shared secret (ss) for use by the originator.</t>
          </dd>
          <dt>Decapsulate(sk, ct) -&gt; ss:</dt>
          <dd>
            <t>Given the private key (sk) and the ciphertext (ct), produce the shared secret (ss) for the recipient.</t>
          </dd>
        </dl>
        <t>The KEM functions defined above correspond to the following functions in <xref target="FIPS203"/>:</t>
        <dl>
          <dt>KeyGen():</dt>
          <dd>
            <t>ML-KEM.KeyGen() from section 7.1.</t>
          </dd>
          <dt>Encapsulate():</dt>
          <dd>
            <t>ML-KEM.Encaps() from section 7.2.</t>
          </dd>
          <dt>Decapsulate():</dt>
          <dd>
            <t>ML-KEM.Decaps() from section 7.3.</t>
          </dd>
        </dl>
        <t>All security levels of ML-KEM use SHA3-256, SHA3-512, SHAKE256, and SHAKE512 internally.</t>
        <!-- End of ML-KEM section -->

<!-- End of introduction section -->

</section>
    </section>
    <section anchor="sec-using">
      <name>Use of the ML-KEM Algorithm in CMS</name>
      <t>The ML-KEM algorithm <bcp14>MAY</bcp14> be employed for one or more recipients in the CMS enveloped-data content type <xref target="RFC5652"/>, the CMS authenticated-data content type <xref target="RFC5652"/>, or the CMS authenticated-enveloped-data content type <xref target="RFC5083"/>. In each case, the KEMRecipientInfo <xref target="RFC9629"/> is used with the ML-KEM algorithm to securely transfer the content-encryption key from the originator to the recipient.</t>
      <t>Processing ML-KEM with KEMRecipientInfo follows the same steps as <xref section="2" sectionFormat="of" target="RFC9629"/>. To support the ML-KEM algorithm, a CMS originator <bcp14>MUST</bcp14> implement the Encapsulate() function and a CMS responder <bcp14>MUST</bcp14> implement the Decapsulate() function.</t>
      <section anchor="sec-using-recipientInfo">
        <name>RecipientInfo Conventions</name>
        <t>When the ML-KEM algorithm is employed for a recipient, the RecipientInfo alternative for that recipient <bcp14>MUST</bcp14> be OtherRecipientInfo using the KEMRecipientInfo structure as defined in <xref target="RFC9629"/>.</t>
        <t>The fields of the KEMRecipientInfo <bcp14>MUST</bcp14> have the following values:</t>
        <ul empty="true">
          <li>
            <t>version is the syntax version number; it <bcp14>MUST</bcp14> be 0.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>rid identifies the recipient's certificate or public key.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>kem identifies the KEM algorithm; it <bcp14>MUST</bcp14> contain one of id-alg-ml-kem-512, id-alg-ml-kem-768, or id-alg-ml-kem-1024. These identifiers are reproduced in <xref target="sec-identifiers"/>.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>kemct is the ciphertext produced for this recipient.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>kdf identifies the key-derivation algorithm. Note that the Key Derivation Function (KDF) used for CMS RecipientInfo process <bcp14>MAY</bcp14> be different than the KDF used within the ML-KEM algorithm.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>kekLength is the size of the key-encryption key in octets.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>ukm is an optional random input to the key-derivation function. ML-KEM doesn't place any requirements on the ukm contents.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>wrap identifies a key-encryption algorithm used to encrypt the content-encryption key.</t>
          </li>
        </ul>
        <!-- End of recipientinfo conventions section -->

</section>
      <section anchor="sec-using-components">
        <name>Underlying Components</name>
        <t>When ML-KEM is employed in CMS, the security levels of the different underlying components used within the KEMRecipientInfo structure <bcp14>SHOULD</bcp14> be consistent.</t>
        <section anchor="use-of-the-hkdf-based-key-derivation-function">
          <name>Use of the HKDF-based Key Derivation Function</name>
          <t>The HMAC-based Extract-and-Expand Key Derivation Function (HKDF) is defined in <xref target="RFC5869"/>.</t>
          <t>The HKDF function is a composition of the HKDF-Extract and HKDF-Expand functions.</t>
          <artwork><![CDATA[
HKDF(salt, IKM, info, L)
  = HKDF-Expand(HKDF-Extract(salt, IKM), info, L)
]]></artwork>
          <t>HKDF(salt, IKM, info, L) takes the following parameters:</t>
          <dl>
            <dt>salt:</dt>
            <dd>
              <t>optional salt value (a non-secret random value). In this document this parameter is unused, that is it is the zero-length string "".</t>
            </dd>
            <dt>IKM:</dt>
            <dd>
              <t>input keying material. In this document this is the shared secret outputted from the Encapsulate() or Decapsulate() functions.  This corresponds to the IKM KDF input from <xref section="5" sectionFormat="of" target="RFC9629"/>.</t>
            </dd>
            <dt>info:</dt>
            <dd>
              <t>optional context and application specific information. In this document this corresponds to the info KDF input from <xref section="5" sectionFormat="of" target="RFC9629"/>. This is the ASN.1 DER encoding of CMSORIforKEMOtherInfo.</t>
            </dd>
            <dt>L:</dt>
            <dd>
              <t>length of output keying material in octets. This corresponds to the L KDF input from <xref section="5" sectionFormat="of" target="RFC9629"/>, which is identified in the kekLength value from KEMRecipientInfo. Implementations <bcp14>MUST</bcp14> confirm that this value is consistent with the key size of the key-encryption algorithm.</t>
            </dd>
          </dl>
          <t>HKDF may be used with different hash functions, including SHA-256 <xref target="FIPS180"/>. The object identifier id-alg-hkdf-with-sha256 is defined in <xref target="RFC8619"/>, and specifies the use of HKDF with SHA-256. The parameter field <bcp14>MUST</bcp14> be absent when this algorithm identifier is used to specify the KDF for ML-KEM in KemRecipientInfo.</t>
        </section>
        <section anchor="components-for-ml-kem-in-cms">
          <name>Components for ML-KEM in CMS</name>
          <t>A compliant implementation <bcp14>MUST</bcp14> support HKDF with SHA-256, using the id-alg-hkdf-with-sha256 KDF object identifier, as the KemRecipientInfo KDF for all ML-KEM parameter sets. Note that the KDF used to process the KEMRecipientInfo structure <bcp14>MAY</bcp14> be different from the KDF used in the ML-KEM algorithm.</t>
          <t>For ML-KEM-512, an implementation must support the AES-Wrap-128 <xref target="RFC3394"/> key-encryption algorithm using the id-aes128-wrap key-encryption algorithm object identifier <xref target="RFC3565"/>.</t>
          <t>For ML-KEM-768 and ML-KEM-1024, an implementation must support the AES-Wrap-256 <xref target="RFC3394"/> key-encryption algorithm using the id-aes256-wrap key-encryption algorithm object identifier <xref target="RFC3565"/>.</t>
          <t>The above object identifiers are reproduced for convenience in <xref target="sec-identifiers"/>.</t>
          <t>An implementation <bcp14>MAY</bcp14> also support other key-derivation functions and other key-encryption algorithms.</t>
          <t>If underlying components other than those specified above are used, then the following KDF requirements are in effect in addition to those asserted in <xref target="RFC9629"/>:</t>
          <ul empty="true">
            <li>
              <t>ML-KEM-512 <bcp14>SHOULD</bcp14> be used with a KDF capable of outputting a key with at least 128 bits of preimage strength and with a key wrapping algorithm with a key length of at least 128 bits.</t>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>ML-KEM-768 <bcp14>SHOULD</bcp14> be used with a KDF capable of outputting a key with at least 192 bits of preimage strength and with a key wrapping algorithm with a key length of at least 192 bits.</t>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>ML-KEM-1024 <bcp14>SHOULD</bcp14> be used with a KDF capable of outputting a key with at least 256 bits of preimage strength and with a key wrapping algorithm with a key length of at least 256 bits.</t>
            </li>
          </ul>
          <!-- End of Underlying Components section -->

</section>
      </section>
      <section anchor="sec-using-certs">
        <name>Certificate Conventions</name>
        <t>The conventions specified in this section augment <xref target="RFC5280"/>.</t>
        <aside>
          <t>RFC EDITOR: Please replace the following reference to <xref target="I-D.ietf-lamps-kyber-certificates"/> with a reference to the published RFC.</t>
        </aside>
        <t>A recipient who employs the ML-KEM algorithm with a certificate <bcp14>MUST</bcp14> identify the public key in the certificate using the id-alg-ml-kem-512, id-alg-ml-kem-768, or id-alg-ml-kem-1024 object identifiers following the conventions specified in <xref target="I-D.ietf-lamps-kyber-certificates"/>.</t>
        <t>In particular, the key usage certificate extension <bcp14>MUST</bcp14> only contain keyEncipherment (<xref section="4.2.1.3" sectionFormat="of" target="RFC5280"/>).</t>
      </section>
      <section anchor="sec-using-smime-caps">
        <name>SMIME Capabilities Attribute Conventions</name>
        <t><xref section="2.5.2" sectionFormat="of" target="RFC8551"/> defines the SMIMECapabilities attribute to announce a partial list of algorithms that an S/MIME implementation can support. When constructing a CMS signed-data content type <xref target="RFC5652"/>, a compliant implementation <bcp14>MAY</bcp14> include the SMIMECapabilities attribute that announces support for one or more of the ML-KEM algorithm identifiers.</t>
        <t>The SMIMECapability SEQUENCE representing the ML-KEM algorithm <bcp14>MUST</bcp14> include one of the ML-KEM object identifiers in the capabilityID field. When the one of the ML-KEM object identifiers appears in the capabilityID field, the parameters <bcp14>MUST NOT</bcp14> be present.</t>
        <!-- End of smime-capabilities-attribute-conventions section -->

<!-- End of use-in-cms section -->

</section>
    </section>
    <section anchor="sec-identifiers">
      <name>Identifiers</name>
      <t>All identifiers used to indicate ML-KEM within CMS are defined elsewhere but reproduced here for convenience:</t>
      <artwork><![CDATA[
  nistAlgorithms OBJECT IDENTIFIER ::= { joint-iso-ccitt(2)
      country(16) us(840) organization(1) gov(101) csor(3)
      nistAlgorithm(4) }
  kems OBJECT IDENTIFIER ::= { nistAlgorithms 4 }

  id-alg-ml-kem-512 OBJECT IDENTIFIER ::= { kems 1 }

  id-alg-ml-kem-768 OBJECT IDENTIFIER ::= { kems 2 }

  id-alg-ml-kem-1024 OBJECT IDENTIFIER ::= { kems 3 }

  hashAlgs OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16)
      us(840) organization(1) gov(101) csor(3) nistAlgorithm(4) 2 }

  id-alg-hkdf-with-sha256 OBJECT IDENTIFIER ::= { iso(1)
      member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
      smime(16) alg(3) 28 }

  aes OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840)
      organization(1) gov(101) csor(3) nistAlgorithms(4) 1 }

  id-aes128-wrap OBJECT IDENTIFIER ::= { aes 5 }
  id-aes256-wrap OBJECT IDENTIFIER ::= { aes 45 }
]]></artwork>
    </section>
    <section anchor="sec-security-considerations">
      <name>Security Considerations</name>
      <aside>
        <t>RFC EDITOR: Please replace the following reference to <xref target="I-D.ietf-lamps-kyber-certificates"/> with a reference to the published RFC.</t>
      </aside>
      <t>The Security Considerations sections of <xref target="I-D.ietf-lamps-kyber-certificates"/> and <xref target="RFC9629"/> apply to this specification as well.</t>
      <t>For ML-KEM-specific security considerations refer to <xref target="I-D.sfluhrer-cfrg-ml-kem-security-considerations"/>.</t>
      <t>The ML-KEM variant and the underlying components need to be selected consistent with the desired security level. Several security levels have been identified in NIST SP 800-57 Part 1 <xref target="NIST.SP.800-57pt1r5"/>. To achieve 128-bit security, ML-KEM-512 <bcp14>SHOULD</bcp14> be used, the key-derivation function <bcp14>SHOULD</bcp14> provide at least 128 bits of preimage strength, and the symmetric key-encryption algorithm <bcp14>SHOULD</bcp14> have a security strength of at least 128 bits. To achieve 192-bit security, ML-KEM-768 <bcp14>SHOULD</bcp14> be used, the key-derivation function <bcp14>SHOULD</bcp14> provide at least 192 bits of preimage strength, and the symmetric key-encryption algorithm <bcp14>SHOULD</bcp14> have a security strength of at least 192 bits. In the case of AES Key Wrap, a 256-bit key is typically used because AES-192 is not as commonly deployed. To achieve 256-bit security, ML-KEM-1024 <bcp14>SHOULD</bcp14> be used, the key-derivation function <bcp14>SHOULD</bcp14> provide at least 256 bits of preimage strength, and the symmetric key-encryption algorithm <bcp14>SHOULD</bcp14> have a security strength of at least 256 bits.</t>
      <t>Provided all inputs are well-formed, the key establishment procedure of ML-KEM will never explicitly fail. Specifically, the ML-KEM.Encaps and ML-KEM.Decaps algorithms from <xref target="FIPS203"/> will always output a value with the same data type as a shared secret key, and will never output an error or failure symbol for well-formed inputs. However, it is possible (though extremely unlikely) that the process will fail in the sense that ML-KEM.Encaps and ML-KEM.Decaps will produce different outputs, even though both of them are behaving honestly and no adversarial interference is present. In this case, the sender and recipient clearly did not succeed in producing a shared
secret key. This event is called a decapsulation failure. Estimates for the decapsulation failure probability (or rate) for each of the ML-KEM parameter sets are provided in Table 1 of <xref target="FIPS203"/> and reproduced here in <xref target="tab-fail"/>.</t>
      <table anchor="tab-fail">
        <name>ML-KEM decapsulation failure rates</name>
        <thead>
          <tr>
            <th align="left">Parameter set</th>
            <th align="left">Decapsulation failure rate</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">ML-KEM-512</td>
            <td align="left">2^(-138.8)</td>
          </tr>
          <tr>
            <td align="left">ML-KEM-768</td>
            <td align="left">2^(-164.8)</td>
          </tr>
          <tr>
            <td align="left">ML-KEM-1024</td>
            <td align="left">2^(-174.8)</td>
          </tr>
        </tbody>
      </table>
      <t>Implementations <bcp14>MUST</bcp14> protect the ML-KEM private key, the key-encryption key, the content-encryption key, message-authentication key, and the content-authenticated-encryption key. Disclosure of the ML-KEM private key could result in the compromise of all messages protected with that key. Disclosure of the key-encryption key, the content-encryption key, or the content-authenticated-encryption key could result in compromise of the associated encrypted content. Disclosure of the key-encryption key, the message-authentication key, or the content-authenticated-encryption key could allow modification of the associated authenticated content.</t>
      <t>Additional considerations related to key management may be found in <xref target="NIST.SP.800-57pt1r5"/>.</t>
      <t>The security of the ML-KEM algorithm depends on a quality random number generator. For further discussion on random number generation, see <xref target="RFC4086"/>.</t>
      <t>ML-KEM encapsulation and decapsulation only outputs a shared secret and ciphertext. Implementations <bcp14>SHOULD NOT</bcp14> use intermediate values directly for any purpose.</t>
      <t>Implementations <bcp14>SHOULD NOT</bcp14> reveal information about intermediate values or calculations, whether by timing or other "side channels", otherwise an opponent may be able to determine information about the keying data and/or the recipient's private key. Although not all intermediate information may be useful to an opponent, it is preferable to conceal as much information as is practical, unless analysis specifically indicates that the information would not be useful to an opponent.</t>
      <t>Generally, good cryptographic practice employs a given ML-KEM key pair in only one scheme. This practice avoids the risk that vulnerability in one scheme may compromise the security of the other, and may be essential to maintain provable security.</t>
      <t>Parties <bcp14>MAY</bcp14> gain assurance that implementations are correct through formal implementation validation, such as the NIST Cryptographic Module Validation Program (CMVP) <xref target="CMVP"/>.</t>
      <!-- End of security-considerations section -->

</section>
    <section anchor="sec-iana-considerations">
      <name>IANA Considerations</name>
      <t>For the ASN.1 Module in <xref target="asn1"/>, IANA is requested to assign an object identifier (OID) for the module identifier (TBD1) with a Description of "id-mod-cms-ml-kem-2024". The OID for the module should be allocated in the "SMI Security for S/MIME Module Identifier" registry (1.2.840.113549.1.9.16.0).</t>
      <!-- End of iana-considerations section -->

</section>
    <section anchor="sec-acknowledgements">
      <name>Acknowledgements</name>
      <t>This document borrows heavily from <xref target="I-D.ietf-lamps-rfc5990bis"/>, <xref target="FIPS203"/>, and <xref target="I-D.kampanakis-ml-kem-ikev2"/>. Thanks go to the authors of those documents. "Copying always makes things easier and less error prone" - RFC8411.</t>
      <t>Thanks to Carl Wallace, Jonathan Hammel, and Sean Turner for the detailed review and Carl Wallace for interoperability testing.</t>
      <!-- End of acknowledgements section -->

</section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="FIPS203">
          <front>
            <title>Module-lattice-based key-encapsulation mechanism standard</title>
            <author>
              <organization/>
            </author>
            <date month="August" year="2024"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.fips.203"/>
          <refcontent>National Institute of Standards and Technology (U.S.)</refcontent>
        </reference>
        <reference anchor="RFC8551">
          <front>
            <title>Secure/Multipurpose Internet Mail Extensions (S/MIME) Version 4.0 Message Specification</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <author fullname="B. Ramsdell" initials="B." surname="Ramsdell"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="April" year="2019"/>
            <abstract>
              <t>This document defines Secure/Multipurpose Internet Mail Extensions (S/MIME) version 4.0. S/MIME provides a consistent way to send and receive secure MIME data. Digital signatures provide authentication, message integrity, and non-repudiation with proof of origin. Encryption provides data confidentiality. Compression can be used to reduce data size. This document obsoletes RFC 5751.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8551"/>
          <seriesInfo name="DOI" value="10.17487/RFC8551"/>
        </reference>
        <reference anchor="X680" target="https://www.itu.int/rec/T-REC-X.680">
          <front>
            <title>Information technology - Abstract Syntax Notation One (ASN.1): Specification of basic notation</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2021" month="February"/>
          </front>
          <seriesInfo name="ITU-T Recommendation" value="X.680"/>
          <seriesInfo name="ISO/IEC" value="8824-1:2021"/>
        </reference>
        <reference anchor="RFC9629">
          <front>
            <title>Using Key Encapsulation Mechanism (KEM) Algorithms in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="J. Gray" initials="J." surname="Gray"/>
            <author fullname="T. Okubo" initials="T." surname="Okubo"/>
            <date month="August" year="2024"/>
            <abstract>
              <t>The Cryptographic Message Syntax (CMS) supports key transport and key agreement algorithms. In recent years, cryptographers have been specifying Key Encapsulation Mechanism (KEM) algorithms, including quantum-secure KEM algorithms. This document defines conventions for the use of KEM algorithms by the originator and recipients to encrypt and decrypt CMS content. This document updates RFC 5652.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9629"/>
          <seriesInfo name="DOI" value="10.17487/RFC9629"/>
        </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>
        <reference anchor="RFC5652">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document describes the Cryptographic Message Syntax (CMS). This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary message content. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="70"/>
          <seriesInfo name="RFC" value="5652"/>
          <seriesInfo name="DOI" value="10.17487/RFC5652"/>
        </reference>
        <reference anchor="RFC5083">
          <front>
            <title>Cryptographic Message Syntax (CMS) Authenticated-Enveloped-Data Content Type</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="November" year="2007"/>
            <abstract>
              <t>This document describes an additional content type for the Cryptographic Message Syntax (CMS). The authenticated-enveloped-data content type is intended for use with authenticated encryption modes. All of the various key management techniques that are supported in the CMS enveloped-data content type are also supported by the CMS authenticated-enveloped-data content type. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5083"/>
          <seriesInfo name="DOI" value="10.17487/RFC5083"/>
        </reference>
        <reference anchor="RFC5869">
          <front>
            <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <date month="May" year="2010"/>
            <abstract>
              <t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications. The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5869"/>
          <seriesInfo name="DOI" value="10.17487/RFC5869"/>
        </reference>
        <reference anchor="RFC8619">
          <front>
            <title>Algorithm Identifiers for the HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>RFC 5869 specifies the HMAC-based Extract-and-Expand Key Derivation Function (HKDF) algorithm. This document assigns algorithm identifiers to the HKDF algorithm when used with three common one-way hash functions.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8619"/>
          <seriesInfo name="DOI" value="10.17487/RFC8619"/>
        </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="RFC3565">
          <front>
            <title>Use of the Advanced Encryption Standard (AES) Encryption Algorithm in Cryptographic Message Syntax (CMS)</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="July" year="2003"/>
            <abstract>
              <t>This document specifies the conventions for using the Advanced Encryption Standard (AES) algorithm for encryption with the Cryptographic Message Syntax (CMS). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3565"/>
          <seriesInfo name="DOI" value="10.17487/RFC3565"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-kyber-certificates">
          <front>
            <title>Internet X.509 Public Key Infrastructure - Algorithm Identifiers for the Module-Lattice-Based Key-Encapsulation Mechanism (ML-KEM)</title>
            <author fullname="Sean Turner" initials="S." surname="Turner">
              <organization>sn3rd</organization>
            </author>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>AWS</organization>
            </author>
            <author fullname="Jake Massimo" initials="J." surname="Massimo">
              <organization>AWS</organization>
            </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <date day="7" month="January" year="2025"/>
            <abstract>
              <t>   The Module-Lattice-Based Key-Encapsulation Mechanism (ML-KEM) is a
   quantum-resistant key-encapsulation mechanism (KEM).  This document
   describes the conventions for using the ML-KEM in X.509 Public Key
   Infrastructure.  The conventions for the subject public keys and
   private keys are also described.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-kyber-certificates-07"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="NIST-PQ" target="https://csrc.nist.gov/projects/post-quantum-cryptography">
          <front>
            <title>Post-Quantum Cryptography Project</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2016" month="December" day="20"/>
          </front>
        </reference>
        <reference anchor="CMVP" target="https://csrc.nist.gov/projects/cryptographic-module-validation-program">
          <front>
            <title>Cryptographic Module Validation Program</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2016"/>
          </front>
        </reference>
        <reference anchor="RFC5911">
          <front>
            <title>New ASN.1 Modules for Cryptographic Message Syntax (CMS) and S/MIME</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="June" year="2010"/>
            <abstract>
              <t>The Cryptographic Message Syntax (CMS) format, and many associated formats, are expressed using ASN.1. The current ASN.1 modules conform to the 1988 version of ASN.1. This document updates those ASN.1 modules to conform to the 2002 version of ASN.1. There are no bits-on-the-wire changes to any of the formats; this is simply a change to the syntax. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5911"/>
          <seriesInfo name="DOI" value="10.17487/RFC5911"/>
        </reference>
        <reference anchor="FIPS180" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf">
          <front>
            <title>Secure Hash Standard</title>
            <author fullname="Quynh H. Dang" surname="Dang">
              <organization>Information Technology Laboratory</organization>
            </author>
            <author>
              <organization abbrev="NIST">National Institute of Standards and Technology</organization>
              <address>
                <postal>
                  <country>US</country>
                  <city>Gaithersburg</city>
                </postal>
              </address>
            </author>
            <date month="July" year="2015"/>
          </front>
          <seriesInfo name="NIST Federal Information Processing Standards Publications" value="180-4"/>
          <seriesInfo name="DOI" value="10.6028/NIST.FIPS.180-4"/>
        </reference>
        <reference anchor="I-D.sfluhrer-cfrg-ml-kem-security-considerations">
          <front>
            <title>ML-KEM Security Considerations</title>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Quynh Dang" initials="Q." surname="Dang">
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <author fullname="John Preuss Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Kevin Milner" initials="K." surname="Milner">
              <organization>Quantinuum</organization>
            </author>
            <author fullname="Daniel Shiu" initials="D." surname="Shiu">
              <organization>Arqit Quantum Inc</organization>
            </author>
            <date day="19" month="November" year="2024"/>
            <abstract>
              <t>   NIST standardized ML-KEM as FIPS 203 in August 2024.  This document
   discusses how to use ML-KEM - that is, what problem it solves, and
   how to use it securely.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-sfluhrer-cfrg-ml-kem-security-considerations-02"/>
        </reference>
        <reference anchor="NIST.SP.800-57pt1r5" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-57pt1r5.pdf">
          <front>
            <title>Recommendation for key management:part 1 - general</title>
            <author fullname="Elaine Barker" surname="Barker">
              <organization>Information Technology Laboratory</organization>
            </author>
            <author>
              <organization abbrev="NIST">National Institute of Standards and Technology</organization>
              <address>
                <postal>
                  <country>US</country>
                  <city>Gaithersburg</city>
                </postal>
              </address>
            </author>
            <date month="May" year="2020"/>
          </front>
          <seriesInfo name="NIST Special Publications (General)" value="800-57pt1r5"/>
          <seriesInfo name="DOI" value="10.6028/NIST.SP.800-57pt1r5"/>
        </reference>
        <reference anchor="RFC4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="J. Schiller" initials="J." surname="Schiller"/>
            <author fullname="S. Crocker" initials="S." surname="Crocker"/>
            <date month="June" year="2005"/>
            <abstract>
              <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts. However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities. The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
              <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult. This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities. It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications. 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="106"/>
          <seriesInfo name="RFC" value="4086"/>
          <seriesInfo name="DOI" value="10.17487/RFC4086"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-rfc5990bis">
          <front>
            <title>Use of the RSA-KEM Algorithm in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization>Vigil Security, LLC</organization>
            </author>
            <author fullname="Sean Turner" initials="S." surname="Turner">
              <organization>sn3rd</organization>
            </author>
            <date day="30" month="July" year="2024"/>
            <abstract>
              <t>   The RSA Key Encapsulation Mechanism (RSA-KEM) Algorithm is a one-pass
   (store-and-forward) cryptographic mechanism for an originator to
   securely send keying material to a recipient using the recipient's
   RSA public key.  The RSA-KEM Algorithm is specified in Clause 11.5 of
   ISO/IEC: 18033-2:2006.  This document specifies the conventions for
   using the RSA-KEM Algorithm as a standalone KEM algorithm and the
   conventions for using the RSA-KEM Algorithm with the Cryptographic
   Message Syntax (CMS) using KEMRecipientInfo as specified in RFC XXXX.
   This document obsoletes RFC 5990.

   RFC EDITOR: Please replace XXXX with the RFC number assigned to
   draft-ietf-lamps-cms-kemri.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-rfc5990bis-10"/>
        </reference>
        <reference anchor="I-D.kampanakis-ml-kem-ikev2">
          <front>
            <title>Post-quantum Hybrid Key Exchange with ML-KEM in the Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>Amazon Web Services</organization>
            </author>
            <author fullname="Gerardo Ravago" initials="G." surname="Ravago">
              <organization>Amazon Web Services</organization>
            </author>
            <date day="4" month="November" year="2024"/>
            <abstract>
              <t>   NIST recently standardized ML-KEM, a new key encapsulation mechanism,
   which can be used for quantum-resistant key establishment.  This
   draft specifies how to use ML-KEM as an additional key exchange in
   IKEv2 along with traditional key exchanges.  This Post-Quantum
   Traditional Hybrid Key Encapsulation Mechanism approach allows for
   negotiating IKE and Child SA keys which are safe against
   cryptanalytically-relevant quantum computers and theoretical
   weaknesses in ML-KEM.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kampanakis-ml-kem-ikev2-09"/>
        </reference>
      </references>
    </references>
    <?line 356?>

<section anchor="asn1">
      <name>ASN.1 Module</name>
      <aside>
        <t>RFC EDITOR: Please replace TBD2 with the value assigned by IANA during the publication of <xref target="I-D.ietf-lamps-kyber-certificates"/>. Also please replace <xref target="I-D.ietf-lamps-kyber-certificates"/> here and in the module with a reference to the published RFC.</t>
      </aside>
      <t>This appendix includes the ASN.1 module <xref target="X680"/> for ML-KEM. This module imports objects from <xref target="RFC5911"/>, <xref target="RFC9629"/>, <xref target="RFC8619"/>, <xref target="I-D.ietf-lamps-kyber-certificates"/>.</t>
      <sourcecode markers="true"><![CDATA[
CMS-ML-KEM-2024
{ iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
  pkcs-9(9) smime(16) modules(0) id-mod-cms-ml-kem-2024(TBD1) }

DEFINITIONS IMPLICIT TAGS ::= BEGIN

EXPORTS ALL;

IMPORTS
  SMIME-CAPS
    FROM AlgorithmInformation-2009  -- [RFC5911]
      { iso(1) identified-organization(3) dod(6) internet(1)
        security(5) mechanisms(5) pkix(7) id-mod(0)
        id-mod-algorithmInformation-02(58) }

  KEM-ALGORITHM
    FROM KEMAlgorithmInformation-2023  -- [RFC9629]
       { iso(1) identified-organization(3) dod(6) internet(1)
         security(5) mechanisms(5) pkix(7) id-mod(0)
         id-mod-kemAlgorithmInformation-2023(109) }

  kda-hkdf-with-sha256
    FROM HKDF-OID-2019  -- [RFC8619]
       { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
         pkcs-9(9) smime(16) modules(0) id-mod-hkdf-oid-2019(68) }

  kwa-aes128-wrap, kwa-aes256-wrap
    FROM CMSAesRsaesOaep-2009  -- [RFC5911]
       { iso(1) member-body(2) us(840) rsadsi(113549)
       pkcs(1) pkcs-9(9) smime(16) modules(0)
       id-mod-cms-aes-02(38) }

  id-alg-ml-kem-512, id-alg-ml-kem-768, id-alg-ml-kem-1024,
  pk-ml-kem-512, pk-ml-kem-768, pk-ml-kem-1024
    FROM X509-ML-KEM-2024 -- [I-D.ietf-lamps-kyber-certificates]
       { iso(1) identified-organization(3) dod(6)
         internet(1) security(5) mechanisms(5) pkix(7) id-mod(0)
         id-mod-x509-ml-kem-2024(TBD2) };

--
-- ML-KEM Key Encapsulation Mechanism Algorithms
--

kema-ml-kem-512 KEM-ALGORITHM ::= {
   IDENTIFIER id-alg-ml-kem-512
   PARAMS ARE absent
   PUBLIC-KEYS { pk-ml-kem-512 }
   UKM ARE optional
   SMIME-CAPS { IDENTIFIED BY id-alg-ml-kem-512 } }

kema-ml-kem-768 KEM-ALGORITHM ::= {
   IDENTIFIER id-alg-ml-kem-768
   PARAMS ARE absent
   PUBLIC-KEYS { pk-ml-kem-768 }
   UKM ARE optional
   SMIME-CAPS { IDENTIFIED BY id-alg-ml-kem-768 } }

kema-ml-kem-1024 KEM-ALGORITHM ::= {
   IDENTIFIER id-alg-ml-kem-1024
   PARAMS ARE absent
   PUBLIC-KEYS { pk-ml-kem-1024 }
   UKM ARE optional
   SMIME-CAPS { IDENTIFIED BY id-alg-ml-kem-1024 } }

-- Updates for the SMIME-CAPS Set from RFC 5911

SMimeCapsSet SMIME-CAPS ::=
   { kema-ml-kem-512.&smimeCaps |
     kema-ml-kem-768.&smimeCaps |
     kema-ml-kem-1024.&smimeCaps |
     kda-hkdf-with-sha256.&smimeCaps |
     kwa-aes128-wrap.&smimeCaps |
     kwa-aes256-wrap.&smimeCaps,
     ... }

END
]]></sourcecode>
    </section>
    <section anchor="arnold">
      <name>Parameter Set Security and Sizes</name>
      <t>Instead of defining the strength of a quantum algorithm in a traditional
manner using the imprecise notion of bits of security, NIST has
defined security levels by picking a reference scheme, which
NIST expects to offer notable levels of resistance to both quantum and
classical attack.  To wit, a KEM algorithm that achieves NIST PQC
security must require computational resources to break IND-CCA2
security comparable or greater than that required for key search
on AES-128, AES-192, and AES-256 for Levels 1, 3, and 5, respectively.
Levels 2 and 4 use collision search for SHA-256 and SHA-384 as reference.</t>
      <table anchor="tab-strengths">
        <name>Mapping between NIST Security Level, ML-KEM parameter set, and sizes in bytes</name>
        <thead>
          <tr>
            <th align="left">Level</th>
            <th align="left">Parameter Set</th>
            <th align="left">Encap. Key</th>
            <th align="left">Decap. Key</th>
            <th align="left">Ciphertext</th>
            <th align="left">Secret</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">1</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="left">3</td>
            <td align="left">ML-KEM-768</td>
            <td align="left">1184</td>
            <td align="left">2400</td>
            <td align="left">1952</td>
            <td align="left">32</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">ML-KEM-1024</td>
            <td align="left">1568</td>
            <td align="left">3168</td>
            <td align="left">2592</td>
            <td align="left">32</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="ml-kem-cms-enveloped-data-example">
      <name>ML-KEM CMS Enveloped-Data Example</name>
      <t>This example shows the establishment of an AES-128 content-encryption
key using:</t>
      <ul spacing="normal">
        <li>
          <t>ML-KEM-512;</t>
        </li>
        <li>
          <t>KEMRecipientInfo key derivation using HKDF with SHA-256; and</t>
        </li>
        <li>
          <t>KEMRecipientInfo key wrap using AES-128-KEYWRAP.</t>
        </li>
      </ul>
      <t>In real-world use, the originator would encrypt the content-
encryption key in a manner that would allow decryption with their own
private key as well as the recipient's private key.  This is omitted
in an attempt to simplify the example.</t>
      <section anchor="originator-cms-processing">
        <name>Originator CMS Processing</name>
        <t>Alice obtains Bob's ML-KEM-512 public key:</t>
        <artwork><![CDATA[
-----BEGIN PUBLIC KEY-----
MIIDMjALBglghkgBZQMEBAEDggMhADmVgV5ZfRBDVc8pqlMzyTJRhp1bzb5IcST2
Ari2pmwWxHYWSK12XPXYAGtRXpBafwrAdrDGLvoygVPnylcBaZ8TBfHmvG+QsOSb
aTUSts6ZKouAFt38GmYsfj+WGcvYad13GvMIlszVkYrGy3dGbF53mZbWf/mqvJdQ
Pyx7fi0ADYZFD7GAfKTKvaRlgloxx4mht6SRqzhydl0yDQtxkg+iE8lAk0Frg7gS
Tmn2XmLLUADcw3qpoP/3OXDEdy81fSQYnKb1MFVowOI3ajdipoxgXlY8XSCVcuD8
dTLKKUcpU1VntfxBPF6HktJGRTbMgI+YrddGZPFBVm+QFqkKVBgpqYoEZM5BqLtE
wtT6PCwglGByjvFKGnxMm5jRIgO0zDUpFgqasteDj3/2tTrgWqMafWRrevpsRZMl
JqPDdVYZvplMIRwqMcBbNEeDbLIVC+GCna5rBMVTXP9Ubjkrp5dBFyD5JPSQpaxU
lfITVtVQt4KmTBaItrZVvMeEIZekNML2Vjtbfwmni8xIgjJ4NWHRb0y6tnVUAAUH
gVcMZmBLgXrRJSKUc26LAYYaS1p0UZuLb+UUiaUHI5Llh2JscTd2V10zgGocjicy
r5fCaA9RZmMxxOuLvAQxxPloMtrxs8RVKPuhU/bHixwZhwKUfM0zdyekb7U7oR3l
y0GRNGhZUWy2rXJADzzyCbI2rvNaWArIfrPjD6/WaXPKin3SZ1r0H3oXthQzzRr4
D3cIhp9mVIhJeYCxrBCgzctjagDthoGzXkKRJMqANQcluF+DperDpKPMFgCQPmUp
NWC5szblrw1SnawaBIEZMCy3qbzBELlIUb8CEX8ZncSFqFK3Rz8JuDGmgx1bVMC3
kNIlz2u5LZRiomzbM92lEjx6rw4moLg2Ve6ii/OoB0clAY/WuuS2Ac9huqtxp6PT
UZejQ+dLSicsEl1UCJZCbYW3lY07OKa6mH7DciXHtEzbEt3kU5tKsII2NoPwS/eg
nMXEHf6DChsWLgsyQzQ2LwhKFEZ3IzRLrdAA+NjFN8SPmY8FMHzr0e3guBw7xZoG
WhttY7Js
-----END PUBLIC KEY-----
]]></artwork>
        <t>Bob's ML-KEM-512 public key has the following key identifier:</t>
        <artwork><![CDATA[
599788C37AED400EE405D1B2A3366AB17D824A51
]]></artwork>
        <t>Alice generates a shared secret and ciphertext using Bob's ML-KEM-512 public key, derives the key-encryption key from the shared secret and CMSORIforKEMOtherInfo using HKDF with SHA-256, randomly generates a 128-bit content-encryption key, uses AES-128-KEYWRAP to encrypt the content-encryption key with the key-encryption key, encrypts the plaintext content with the content-encryption key and encodes the EnvelopedData (using KEMRecipientInfo) and ContentInfo, and then sends the result to Bob.</t>
        <t>The Base64-encoded result is:</t>
        <artwork><![CDATA[
-----BEGIN CMS-----
MIID8gYLKoZIhvcNAQkQARegggPhMIID3QIBADGCA4ikggOEBgsqhkiG9w0BCRAN
AzCCA3MCAQCAFFmXiMN67UAO5AXRsqM2arF9gkpRMAsGCWCGSAFlAwQEAQSCAwDz
6kG2NhIUhlAHMA3HCeC8G9o0Ey8HMa//d2N7a7e92ba+Xrwfp9NKfiwH3r26CvqG
Aj5LgU/hbzNkFGw1AfgXDQTcpHEjfPB2R/x6OxiuV6KPxOjqHbjDvyRoclHHrGfG
i4uBkgPSAXrBlzXop9n7F4sxae2grAJIWX8sl/Vs6BRcKmuAIXbriZTQnEoojgyr
ncDz3owBMBdLvA7STNEJ9vt3WaGV07/3qjSCHsxynDwWpiHYwf3Q++/VlZNrPnzZ
B/ulQtAWweHxgTpvX0k8WnCKSl9S5qGIMK2Tc4KBMSqb02pkSMDV/YEKCwPyFgIO
hEleCys+umJmUAbGm0cmH0Kev0sHAnYvg02uebvK2xFW6uboTy0Txj8okoy5sP6h
mRekF6qgrEEa3/CjkSAxW9iv986h64UUU0cWZeEaEl0eYR6LOf3e16ZPSYDC8Xo7
VjAZvYuf8QuLlqDCw73Rp+PT+fkFqfY4dxGXwZYMU/UOuQqi2IsT86W8gmsQPhEv
7EvSScX8TJSDsrQOVrGoHc5OymRmuepkn17ORYyrR8iKEDVJEDCGesJbgcCoi2VT
LFdDYOzMn1T6gSsmyg3KGWLqdn8csG/mPjKblyBmlYbM8KT4ICqQx1nBngGUfMIV
+v4wY9s0vcLSTBI5QCbgPRrIzz0B97sZdcp29uXA4Qlz2riuRpn38up1G90BGxvo
lukVQ8djNhhGgC60UJwA3bRn+O2xo/cSBkMSLJIIqA5QSY+zcPu90MqvN1JFkbO6
YJQbtuFvQ9hAmHJNrWRaXRGLJuH8gxUhG2bhOn5jjtgmVdKHx8gFDxHs13IQMHAU
//u5JHvJOnC8HLWPIbMTXa0giC7H22Gf7GMdYVG0pNr37wEJkfd7D4OKM5S0fXH3
4moC701Bgypt0D+inpqd+Vdyzylg5KkkoLcQqiE1tAPYc2FCSJNhZe/xA4/WOkoO
HS6/FvFcNaIxkwmNDl9BM4J+Zv4zxqcrqjSUuRM9r/IepBU22+EltUGXug15v+Mw
DQYLKoZIhvcNAQkQAxwCASAwCwYJYIZIAWUDBAEtBCgSWjJGbANW6249qJezunw8
TekPnqeXQxQsCApolNdBREvHJzVFD8fxMDoGCSqGSIb3DQEHATAeBglghkgBZQME
AS4wEQQM09P1v4RTaKUfxd6/AgEQgA0W/2sAf/+wpWYbxab8BBAcFxeZJbrC7Ifl
jQHB7vah
-----END CMS-----
]]></artwork>
        <t>This result decodes to:</t>
        <artwork><![CDATA[
   0 1010: SEQUENCE {
   4   11:  OBJECT IDENTIFIER
         :   authEnvelopedData (1 2 840 113549 1 9 16 1 23)
  17  993:  [0] {
  21  989:   SEQUENCE {
  25    1:    INTEGER 0
  28  904:    SET {
  32  900:     [4] {
  36   11:      OBJECT IDENTIFIER '1 2 840 113549 1 9 16 13 3'
  49  883:      SEQUENCE {
  53    1:       INTEGER 0
  56   20:       [0]
         :    59 97 88 C3 7A ED 40 0E E4 05 D1 B2 A3 36 6A B1
         :    7D 82 4A 51
  78   11:       SEQUENCE {
  80    9:        OBJECT IDENTIFIER '2 16 840 1 101 3 4 4 1'
         :         }
  91  768:       OCTET STRING
         :    F3 EA 41 B6 36 12 14 86 50 07 30 0D C7 09 E0 BC
         :    1B DA 34 13 2F 07 31 AF FF 77 63 7B 6B B7 BD D9
         :    B6 BE 5E BC 1F A7 D3 4A 7E 2C 07 DE BD BA 0A FA
         :    86 02 3E 4B 81 4F E1 6F 33 64 14 6C 35 01 F8 17
         :    0D 04 DC A4 71 23 7C F0 76 47 FC 7A 3B 18 AE 57
         :    A2 8F C4 E8 EA 1D B8 C3 BF 24 68 72 51 C7 AC 67
         :    C6 8B 8B 81 92 03 D2 01 7A C1 97 35 E8 A7 D9 FB
         :    17 8B 31 69 ED A0 AC 02 48 59 7F 2C 97 F5 6C E8
         :    14 5C 2A 6B 80 21 76 EB 89 94 D0 9C 4A 28 8E 0C
         :    AB 9D C0 F3 DE 8C 01 30 17 4B BC 0E D2 4C D1 09
         :    F6 FB 77 59 A1 95 D3 BF F7 AA 34 82 1E CC 72 9C
         :    3C 16 A6 21 D8 C1 FD D0 FB EF D5 95 93 6B 3E 7C
         :    D9 07 FB A5 42 D0 16 C1 E1 F1 81 3A 6F 5F 49 3C
         :    5A 70 8A 4A 5F 52 E6 A1 88 30 AD 93 73 82 81 31
         :    2A 9B D3 6A 64 48 C0 D5 FD 81 0A 0B 03 F2 16 02
         :    0E 84 49 5E 0B 2B 3E BA 62 66 50 06 C6 9B 47 26
         :    1F 42 9E BF 4B 07 02 76 2F 83 4D AE 79 BB CA DB
         :    11 56 EA E6 E8 4F 2D 13 C6 3F 28 92 8C B9 B0 FE
         :    A1 99 17 A4 17 AA A0 AC 41 1A DF F0 A3 91 20 31
         :    5B D8 AF F7 CE A1 EB 85 14 53 47 16 65 E1 1A 12
         :    5D 1E 61 1E 8B 39 FD DE D7 A6 4F 49 80 C2 F1 7A
         :    3B 56 30 19 BD 8B 9F F1 0B 8B 96 A0 C2 C3 BD D1
         :    A7 E3 D3 F9 F9 05 A9 F6 38 77 11 97 C1 96 0C 53
         :    F5 0E B9 0A A2 D8 8B 13 F3 A5 BC 82 6B 10 3E 11
         :    2F EC 4B D2 49 C5 FC 4C 94 83 B2 B4 0E 56 B1 A8
         :    1D CE 4E CA 64 66 B9 EA 64 9F 5E CE 45 8C AB 47
         :    C8 8A 10 35 49 10 30 86 7A C2 5B 81 C0 A8 8B 65
         :    53 2C 57 43 60 EC CC 9F 54 FA 81 2B 26 CA 0D CA
         :    19 62 EA 76 7F 1C B0 6F E6 3E 32 9B 97 20 66 95
         :    86 CC F0 A4 F8 20 2A 90 C7 59 C1 9E 01 94 7C C2
         :    15 FA FE 30 63 DB 34 BD C2 D2 4C 12 39 40 26 E0
         :    3D 1A C8 CF 3D 01 F7 BB 19 75 CA 76 F6 E5 C0 E1
         :    09 73 DA B8 AE 46 99 F7 F2 EA 75 1B DD 01 1B 1B
         :    E8 96 E9 15 43 C7 63 36 18 46 80 2E B4 50 9C 00
         :    DD B4 67 F8 ED B1 A3 F7 12 06 43 12 2C 92 08 A8
         :    0E 50 49 8F B3 70 FB BD D0 CA AF 37 52 45 91 B3
         :    BA 60 94 1B B6 E1 6F 43 D8 40 98 72 4D AD 64 5A
         :    5D 11 8B 26 E1 FC 83 15 21 1B 66 E1 3A 7E 63 8E
         :    D8 26 55 D2 87 C7 C8 05 0F 11 EC D7 72 10 30 70
         :    14 FF FB B9 24 7B C9 3A 70 BC 1C B5 8F 21 B3 13
         :    5D AD 20 88 2E C7 DB 61 9F EC 63 1D 61 51 B4 A4
         :    DA F7 EF 01 09 91 F7 7B 0F 83 8A 33 94 B4 7D 71
         :    F7 E2 6A 02 EF 4D 41 83 2A 6D D0 3F A2 9E 9A 9D
         :    F9 57 72 CF 29 60 E4 A9 24 A0 B7 10 AA 21 35 B4
         :    03 D8 73 61 42 48 93 61 65 EF F1 03 8F D6 3A 4A
         :    0E 1D 2E BF 16 F1 5C 35 A2 31 93 09 8D 0E 5F 41
         :    33 82 7E 66 FE 33 C6 A7 2B AA 34 94 B9 13 3D AF
         :    F2 1E A4 15 36 DB E1 25 B5 41 97 BA 0D 79 BF E3
 863   13:       SEQUENCE {
 865   11:        OBJECT IDENTIFIER
         :         hkdfWithSha256 (1 2 840 113549 1 9 16 3 28)
         :         }
 878    1:       INTEGER 32
 881   11:       SEQUENCE {
 883    9:        OBJECT IDENTIFIER
         :         aes256-wrap (2 16 840 1 101 3 4 1 45)
         :         }
 894   40:       OCTET STRING
         :    12 5A 32 46 6C 03 56 EB 6E 3D A8 97 B3 BA 7C 3C
         :    4D E9 0F 9E A7 97 43 14 2C 08 0A 68 94 D7 41 44
         :    4B C7 27 35 45 0F C7 F1
         :        }
         :       }
         :      }
 936   58:    SEQUENCE {
 938    9:     OBJECT IDENTIFIER data (1 2 840 113549 1 7 1)
 949   30:     SEQUENCE {
 951    9:      OBJECT IDENTIFIER
         :       aes256-GCM (2 16 840 1 101 3 4 1 46)
 962   17:      SEQUENCE {
 964   12:       OCTET STRING D3 D3 F5 BF 84 53 68 A5 1F C5 DE BF
 978    1:       INTEGER 16
         :        }
         :       }
 981   13:     [0] 16 FF 6B 00 7F FF B0 A5 66 1B C5 A6 FC
         :      }
 996   16:    OCTET STRING
         :    1C 17 17 99 25 BA C2 EC 87 E5 8D 01 C1 EE F6 A1
         :     }
         :    }
         :   }
]]></artwork>
      </section>
      <section anchor="recipient-cms-processing">
        <name>Recipient CMS Processing</name>
        <t>Bob's ML-KEM-512 private key:</t>
        <artwork><![CDATA[
-----BEGIN PRIVATE KEY-----
MFICAQAwCwYJYIZIAWUDBAQBBEAAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRob
HB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/
-----END PRIVATE KEY-----
]]></artwork>
        <t>Bob decapsulates the ciphertext in the KEMRecipientInfo to get the ML-KEM-512 shared secret, derives the key-encryption key from the shared secret and CMSORIforKEMOtherInfo using HKDF with SHA-256, uses AES-128-KEYWRAP to decrypt the content-encryption key with the key-encryption key, and decrypts the encrypted contents with the content-encryption key, revealing the plaintext content:</t>
        <artwork><![CDATA[
Hello, world!
]]></artwork>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
m5sXYyKV2ptuxwk+HhcvfntfmrTHrUpp+Tp+ml4s3zfXk77Q2+9qU1tUmy+v
rWatrU5vRjcbY+DMHG+3Ky/nYXU4eP+Y7yeOuG/2w91i9sXWFUddiC1/VpsN
hdHSlZ+Xt7cPatPclt5XXu+idP/c1Cd7RZoO+y/uzVjqth697X2nZLxN7JW3
mz07L8rzUHs0101FmIxub24ezNWD9OiG012j16peLcLr9mA07s46X178yaT9
2ms1Hpdf+q33xc1jY7Z6f/H0126l8X4b6sI2HFV72nbmtBv7t03rpu3uusvK
26Azuxc/mg+r1uzdgNih+Va6kMORP3t67xrTp4FvbVbB4LXrCNfvvebk8eV1
s3K6ncH2vWs2xne61Rzfdh61L23NNSp+o/s4eu7VH8ZvC39VmTRa+2blujfs
r4zdg+BMO6PH8LEflm+Wo4bRCf3Xx03X0juv1uKueys/voXj6Xbp2squM3u7
Lt89XQ3G4r4auo8PqvpwJcweze7rsnE7e/YH10Oghly9VV9ejKG0Eh9e17fj
Lw8PtvFw1ancOnP5OjBHE/lREj9mbc98s8294FemmqHWB6/L7m53v77dqP3d
rud43dDfBcrg8aa3nj9cjK/s3fZ1vr15mHbFj8neWoxrDzVvUHKEvdge3LXn
rw9Pe9l/vlabHx97bdyR/c2d8aT6nanfe2tWL56M596N7ZaGr5IvXpW853De
//gY+GWhWTI781V9+diZX1sv2s5vaLMPM3wzZs1w7rU/nhc3g+vuu3rXN511
60tzZfnN1U2v25pp/d7yYSXcPWmV4GPs+Ftp6Bpbo9EBFmv70vv4o6HfOp2H
saLpz8qraw5b762b0uBDuV4328vZTho/drWSsLjrOB/yunL7OrC95ce4W5cd
/W1X9bflpXc7kx+tqm1f3HsN0XTUl4un9Xooq2Z9vn4Pd6tqbyQ8vFpv/S+T
26FtBrojPWjXr9r45ankvIi1+xujuryqNU37+SrUP8Z6WFo8VMKboNOR77ze
dnhhzQS3+6xfTatNbR483c6Cff+jL99u5zct/bXU+Rjc+hNV/XL31rpThr3l
i9LqXn34olWarRvb2u7VawtP8zB8qV0HzOhArHxgcmjk/A2jhSFq7uwuNdtx
v4JbtUq9XlMUrVQDcwUuX9fLYqUpNWS1VKpW1YZUaypyWa1IbENmM3mL2vq9
zjJ3RN+A8px5vNRbYD572dPhPkcv+3/mNs95l93ZZ6CPTqd+dg4DfGSQd6Tf
91KUzBX8g3X5d4b2ysGOI9IruvMTz/1kbUSfvveAEy4OZGgcc8pokI8P2Gvr
NLZih75mg5+hcekpscgL03MkgCOwjZ+EwNdKV8sFtmNy1CQ4dIxY9Y49ojJ7
ub3xXjvzjXmn9hd9dWDNZrPeHH8r9TsNtdnW1LK9mM3u9cYseJ8v7HZ9Kza0
gXonqB+QXpS6mtrX1FZr+Wx376q1B/W+oj4PgveubPit+myxGnTVoK09ae2h
2nLUbV9X+0NN3TY/hOqiLd/NOw9zR73qqqUrzdKUdt0T9b1y1TUuLibyXc2o
WXV5bHx59rfTVf3uZmpvr0q+XNU2721Bfavczh4u5uOPu0WrvZXU6ey52R+Z
qyv9bdpryIOLXfV+Z68fqze93f3b+9X4rbnZDzzTubry29O2YJfXjcWsN1Sf
/Ybz8eyt6m6tVQ52hiXPfPW68/SsBM7FY1BtDMyb5VrtPI99+3XUd3XPe5vt
fcE1mx8lb9voNiZgyGvD0Z1+Xd+EpSej/SjWLkrvb0PtKtjt3eb2aWVfvWyn
pf6XLxePzuud33M/XoXGxdrph+rT1rrazUarzbO4UJ5c7Wbo1IeV93aneyOP
zPJNozt8H4vyajHsNh8vXvQbbdvbt2ade2GuO5a2D76sl9fLB3XcXorm8kq8
sTZicKW6L5uZKK+t8eZG3rWequuxN9qLo92b4i28fSXoVefCcmAtWtX3ma/r
RulCe1sM1d1T3d7Uleq8Wn54eBDNp1dLN3RHtF4G1dv7acmSqq+94UtTU569
mvD4pr5uXtZTpb++dd6b2rZWGqy+9EZfpovW+/SlPNm1n7evL92Hi4f7df/d
ljvBSKk+KbNl0O/N9Y1Q0zfDofmsjK6HzcDv3z/6be/KrNzvl4Pl2lotXKl2
P3jZ+wPFvtGbj9d6U2tbwfV4ZmqeLT+OhNvWpPly/9F1pVF1NgyW+1nppv10
+z5xFTNoXyx7bzdjZ99YOi/jrnIzKne09/5OchvurA3utfMofNmUty/1QNyY
t8NRo1Ppa+NZb+B3Pj7ERr0WvE7MlVxfP6vlPrgt314PVm5JWa+kdl1stHcb
T3DWi8e+Mnm7m8/bM60qPlxv1dJ44H65l3fehTlsLLrD2+tO512t9IcvXz7M
3roudt83d9J1azG+rwov1/1xuG5t+vW5ury6vvOfBsbzoH17vb5SZruHeVse
z+/dyttbOFs+Tm6udsqs1dxdBVKp0+9eqQ/CxcW6cn21ub53NeXq9qnXGXdH
z4Y4s7XalSy3p7V2d/Ly2BZXd36pttWvF9NJrVm+v+lWhuL0+aokgOfVaqLU
mIEVE5tfbHf1PvnyONl/7J1Z5Wax8G5NYJ4uhWrvxZRb2vD6bv5qXezU8sXT
/cK7F66G1YvWpmXeGZ3dYru8azr1Rrd8/eV1U/7YvZs+6MLDetCt+xcda9V4
kOUvuhM+tJ/XM6my+dLdCs1+zhrttpo6VLfa9uX6pfPaUZ8emhCzhxCuDJ/e
rttj9e6pKpfr79fWx9rdKsLIWvTcd+u5v+sHmrrynLtJY6Bvrq4/HltNZbrr
Nr22NnxvDzvjUrOvX6kj1UonBII6LG/1fr8r1nvSpjwYGRB+7SbVC3Wm92eq
+HQhB+r04st29fQy3hljpdFQzdbOer0e+1qtM3WEt/5Vo7Yx5klUENtb6p1H
7F1r1DpDCsbcgxff0SMikURJvEzuZdLiKqbsknRJDu8fJYV4/EtysLOfczQS
kYlShmVpl4RIBP6twv9kejlPqhFSr5dg7t/Ev9O9ZAmeKHVcLQODTAsJEv3r
fDp3I72tDwj+3Q6QWJO6WKbPh/qIjsWiQV0U6TPytzJbuFSNkMA/hxepfv4E
0hIp/QzT4QlRlBKfngGtUkpAy0FXwU1lMfoJkMwSjFTqpF6DhYlWIjWV6E0C
EIg60ctErJCmRBoyUUsIfFUlDSk3u9YkikzKKqngLzUljWEWRoVWaurRb8fw
lxFdSgCUAVICrpeJ9HNuS/oHK+N1YFStqkQP77URUH84GnTu2rkprRLRVVIG
XKqICER3UpkoVVIBTGukBP8FKa0RsU50kTS03GypQZoqKZWRE3KLzpCI2iKt
FqnVSBXI1iDVBmnUSKNJmvXcbNiyoZOKDusSqUXUGmmWkGA1ncgaLob9+CZp
qERUSUvNzQYgRZmUdFJuEEUi5RbRJVJtkVKJVMuIRVUjpQoBarUUkOXcbEBL
LJOmRtQyqaHEk5pGWiJQjZRrpKUhw0sNIikQPpJKfrYK0tgiWpnoCpJPAiCp
lDRaRIaNFVKTge1IOFUj1fxsDVjZoP+AHMtELJGmjHDClpqEIgdgw8JIjzpp
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

-->

</rfc>
