<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-cms-kyber-10" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title abbrev="ML-KEM in the CMS">Use of ML-KEM in the Cryptographic Message Syntax (CMS)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-kyber-10"/>
    <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="June" day="17"/>
    <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 the 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; (ek, dk):</dt>
          <dd>
            <t>Generate the public encapsulation key (ek) and a private decapsulation key (dk).</t>
          </dd>
          <dt>Encapsulate(ek) -&gt; (c, ss):</dt>
          <dd>
            <t>Given the recipient's public key (ek), produce both a ciphertext (c) to be passed to the recipient and a shared secret (ss) for use by the originator.</t>
          </dd>
          <dt>Decapsulate(dk, c) -&gt; ss:</dt>
          <dd>
            <t>Given the private key (dk) and the ciphertext (c), 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>
        <aside>
          <t>RFC EDITOR: Please replace the following references to <xref target="I-D.ietf-lamps-kyber-certificates"/> with a reference to the published RFC.</t>
        </aside>
        <dl>
          <dt>KeyGen():</dt>
          <dd>
            <t><xref target="FIPS203"/> specifies two formats for an ML-KEM private key: a 64-octet seed (d,z) and an (expanded) private decapsulation key (dk). Algorithm 19 (<tt>ML-KEM.KeyGen()</tt>) from <xref target="FIPS203"/> generates the public encapsulation key (ek) and the private decapsulation key (dk). As an alternative, when a seed (d,z) is generated first and then the seed is expanded to get the keys, algorithm 16 (<tt>ML-KEM.KeyGen_internal(d,z)</tt>) from <xref target="FIPS203"/> expands the seed to ek and dk. See <xref section="6" sectionFormat="of" target="I-D.ietf-lamps-kyber-certificates"/> for private key encoding considerations.</t>
          </dd>
          <dt>Encapsulate():</dt>
          <dd>
            <t>Algorithm 20 (<tt>ML-KEM.Encaps(ek)</tt>) from <xref target="FIPS203"/>.</t>
          </dd>
          <dt>Decapsulate():</dt>
          <dd>
            <t>Algorithm 21 (<tt>ML-KEM.Decaps(dk,c)</tt>) from <xref target="FIPS203"/>. If the private key is stored in seed form, <tt>ML-KEM.KeyGen_internal(d,z)</tt> may be needed as a first step to compute dk. See <xref section="8" sectionFormat="of" target="I-D.ietf-lamps-kyber-certificates"/> for consistency considerations if the private key was stored in both seed and expanded formats.</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 the 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. Implementations <bcp14>MUST</bcp14> support HKDF <xref target="RFC5869"/> with SHA-256 <xref target="FIPS180"/>, using the id-alg-hkdf-with-sha256 KDF object identifier <xref target="RFC8619"/>. As specified in <xref target="RFC8619"/>, the parameter field <bcp14>MUST</bcp14> be absent when this object identifier appears within the ASN.1 type AlgorithmIdentifier. Implementations <bcp14>MAY</bcp14> support other KDFs as well.</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. For ML-KEM, ukm doesn't provide any additional security benefits. Senders using ML-KEM <bcp14>MAY</bcp14> choose to send a ukm, though there is no reason to. For maximum interoperability, receivers using ML-KEM <bcp14>SHOULD</bcp14> accept and process the ukm. Receivers that do not support the ukm field <bcp14>SHOULD</bcp14> gracefully discontinue processing when the ukm field is present.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>wrap identifies a key-encryption algorithm used to encrypt the content-encryption key. Implementations supporting ML-KEM-512 <bcp14>MUST</bcp14> support the AES-Wrap-128 <xref target="RFC3394"/> key-encryption algorithm using the id-aes128-wrap key-encryption algorithm object identifier <xref target="RFC3565"/>. Implementations supporting ML-KEM-768 or ML-KEM-1024 <bcp14>MUST</bcp14> support the AES-Wrap-256 <xref target="RFC3394"/> key-encryption algorithm using the id-aes256-wrap key-encryption algorithm object identifier <xref target="RFC3565"/>. Implementations <bcp14>MAY</bcp14> support other key-encryption algorithms as well.</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 the CMS, the underlying components used within the KEMRecipientInfo structure <bcp14>SHOULD</bcp14> be consistent with a minimum desired security level.</t>
        <t>If underlying components other than those specified in <xref target="sec-using-recipientInfo"/> are used, then the following requirements will satisfy the KDF and key wrapping algorithm requirements from <xref section="7" sectionFormat="of" 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>
        <section anchor="use-of-the-hkdf-based-key-derivation-function">
          <name>Use of the HKDF-based Key Derivation Function</name>
          <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>When used with KEMRecipientInfo, the salt parameter is unused, that is it is the zero-length string "". The IKM, info and L parameters correspond to the same KDF inputs from <xref section="5" sectionFormat="of" target="RFC9629"/>. The info parameter is independently generated by the sender and receiver. Implementations <bcp14>MUST</bcp14> confirm that L is consistent with the key size of the key-encryption algorithm.</t>
          <!-- 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 the 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 <tt>ML-KEM.Encaps</tt> and <tt>ML-KEM.Decaps</tt> 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 <tt>ML-KEM.Encaps</tt> and <tt>ML-KEM.Decaps</tt> 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="RFC9690"/>, <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 and Philippe Cece for interoperability testing for the examples.</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="16" month="April" 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-10"/>
        </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="15" month="May" year="2025"/>
            <abstract>
              <t>   NIST standardized ML-KEM as FIPS 203 in August 2024.  This document
   discusses how to use ML-KEM and how to use it within protocols - that
   is, what problem it solves, and what you need to do to use it
   securely.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-sfluhrer-cfrg-ml-kem-security-considerations-03"/>
        </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="RFC9690">
          <front>
            <title>Use of the RSA-KEM Algorithm in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="February" year="2025"/>
            <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 9629. This document obsoletes RFC 5990.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9690"/>
          <seriesInfo name="DOI" value="10.17487/RFC9690"/>
        </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 332?>

<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-authenticated-enveloped-data-example">
      <name>ML-KEM CMS Authenticated-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:</t>
        <t>Shared secret:</t>
        <artwork><![CDATA[
7DF12D412AE299A24FDE6D7C3BB8E3194C80AD3C733DCF2775E09FE8BEDB86D8
]]></artwork>
        <t>Ciphertext:</t>
        <artwork><![CDATA[
3EA40FC6CA090E2C8AF76E2727AB38E0652D9515986FE186827FE84E596E421B
85FD459CC78997372C9DE31D191B39C1D5A3EB6DDB56AADEDE765CC390FDBBC2
F88CB175681D4201B81CCDFCB24FEF13AF2F5A1ABCF8D8AF384F02A010A6E919
F1987A5E9B1C0E2D3F07F58A9FA539CE86CC149910A1692C0CA4CE0ECE4EEED2
E6699CB976332452DE4A2EB5CA61F7B081330C34798EF712A24E59C33CEA1F1F
9E6D4FBF3743A38467430011336F62D870792B866BEFCD1D1B365BED1952673D
3A5B0C20B386B4EFD1CF63FD376BD47CCC46AC4DD8EC66B047C4C95ACFF1CFD0
28A419B002FDA1B617CBA61D2E91CFE8FFFBCB8FFD4D5F6AD8B158C219E36DC5
1405DC0C0B234979AC658E72BDDF1B6773B96B2AE3E4D07BE86048040C016743
6FA839E7529B00CC9AB55A2F25DB63CC9F557594E691C11E553D4A3EBC760F5F
19E5FE144838B4C7D1591DA9B5D467494FD9CAC52CC5504060399DBDB72298EB
9A4C017B00786FDC7D9D7AA57ADBB8B61C34DE1E288B2AB728171DCE143CD169
53F984C1AED559E56BAA0CE658D32CCE42F4407504CD7A579AD0EF9B77135EAA
39B6F93A3A2E5997807F06361C83F4E67F8E3F9CF68316011514F5D85A181CEA
D714CD4940E4EBAC01D66528DA32F89CEA0428E8EBCADCF8AA188C9F62E85B19
57655B7FE2B8D7973B7A7226B66D93BF7B232F3DCF653C84B4ECF1A9920DB194
9AD750B546A5552A20E54909719B8C0C07056FCB7E574AD2A32EC95001DDE844
81BE77D039ED5BF74262ECF3981F1B00D3366A9C2E061C47E241A061C6249560
D2B8446A480C38C28BA989D9F68ADC4BBAF2A20B47E4923128C72342D597FDA2
59DE0B83C2056D6B77E799B319324AA50B1D659C2A56029B7453C5F3BA5243D9
FA749D917C40D9D101E453BC8B10E42A7C089323C026F783E100B9FA6E701442
4DA6FA3792BC957EE8219D016B773F28FEDCC962A485ABAFFEC023281971E29A
A689839ECFD2619E92287CD230DB26A2507CC500EB1C7A5293B5FE917AE29BF1
AD350124F8A311635214B411DB9F67D3B85BD715018537EA45B41F41B4C66051
]]></artwork>
        <t>Alice encodes the CMSORIforKEMOtherInfo:</t>
        <artwork><![CDATA[
3010300B0609608648016503040105020110
]]></artwork>
        <t>Alice derives the key-encryption key from the shared secret and CMSORIforKEMOtherInfo using HKDF with SHA-256:</t>
        <artwork><![CDATA[
CF453A3E2BAE0A78701B8206C185A008
]]></artwork>
        <t>Alice randomly generates a 128-bit content-encryption key:</t>
        <artwork><![CDATA[
C5153005588269A0A59F3C01943FDD56
]]></artwork>
        <t>Alice uses AES-128-KEYWRAP to encrypt the content-encryption key with the key-encryption key:</t>
        <artwork><![CDATA[
C050E4392F9C14DD0AC2220203F317D701F94F9DD92778F5
]]></artwork>
        <t>Alice encrypts the padded content using AES-128-GCM with the content-encryption key and encodes the AuthEnvelopedData (using KEMRecipientInfo) and ContentInfo, and then sends the result to Bob.</t>
        <t>The Base64-encoded result is:</t>
        <artwork><![CDATA[
-----BEGIN CMS-----
MIID4gYLKoZIhvcNAQkQARegggPRMIIDzQIBADGCA3ikggN0BgsqhkiG9w0BCRAN
AzCCA2MCAQCAFFmXiMN67UAO5AXRsqM2arF9gkpRMAsGCWCGSAFlAwQEAQSCAwA+
pA/GygkOLIr3bicnqzjgZS2VFZhv4YaCf+hOWW5CG4X9RZzHiZc3LJ3jHRkbOcHV
o+tt21aq3t52XMOQ/bvC+IyxdWgdQgG4HM38sk/vE68vWhq8+NivOE8CoBCm6Rnx
mHpemxwOLT8H9YqfpTnOhswUmRChaSwMpM4Ozk7u0uZpnLl2MyRS3koutcph97CB
Mww0eY73EqJOWcM86h8fnm1PvzdDo4RnQwARM29i2HB5K4Zr780dGzZb7RlSZz06
Wwwgs4a079HPY/03a9R8zEasTdjsZrBHxMlaz/HP0CikGbAC/aG2F8umHS6Rz+j/
+8uP/U1fatixWMIZ423FFAXcDAsjSXmsZY5yvd8bZ3O5ayrj5NB76GBIBAwBZ0Nv
qDnnUpsAzJq1Wi8l22PMn1V1lOaRwR5VPUo+vHYPXxnl/hRIOLTH0VkdqbXUZ0lP
2crFLMVQQGA5nb23IpjrmkwBewB4b9x9nXqletu4thw03h4oiyq3KBcdzhQ80WlT
+YTBrtVZ5WuqDOZY0yzOQvRAdQTNelea0O+bdxNeqjm2+To6LlmXgH8GNhyD9OZ/
jj+c9oMWARUU9dhaGBzq1xTNSUDk66wB1mUo2jL4nOoEKOjrytz4qhiMn2LoWxlX
ZVt/4rjXlzt6cia2bZO/eyMvPc9lPIS07PGpkg2xlJrXULVGpVUqIOVJCXGbjAwH
BW/LfldK0qMuyVAB3ehEgb530DntW/dCYuzzmB8bANM2apwuBhxH4kGgYcYklWDS
uERqSAw4woupidn2itxLuvKiC0fkkjEoxyNC1Zf9olneC4PCBW1rd+eZsxkySqUL
HWWcKlYCm3RTxfO6UkPZ+nSdkXxA2dEB5FO8ixDkKnwIkyPAJveD4QC5+m5wFEJN
pvo3kryVfughnQFrdz8o/tzJYqSFq6/+wCMoGXHimqaJg57P0mGekih80jDbJqJQ
fMUA6xx6UpO1/pF64pvxrTUBJPijEWNSFLQR259n07hb1xUBhTfqRbQfQbTGYFEw
DQYLKoZIhvcNAQkQAxwCARAwCwYJYIZIAWUDBAEFBBjAUOQ5L5wU3QrCIgID8xfX
AflPndknePUwOgYJKoZIhvcNAQcBMB4GCWCGSAFlAwQBBjARBAxcpXRouBvwO42n
GGwCARCADZTIaJqZ0sOOGS+muggEEFzxeGxXx0ArVPyTwwpKRTM=
-----END CMS-----
]]></artwork>
        <t>This result decodes to:</t>
        <artwork><![CDATA[
  0 994: SEQUENCE {
  4  11:  OBJECT IDENTIFIER
       :   authEnvelopedData (1 2 840 113549 1 9 16 1 23)
 17 977:  [0] {
 21 973:   SEQUENCE {
 25   1:    INTEGER 0
 28 888:    SET {
 32 884:     [4] {
 36  11:      OBJECT IDENTIFIER '1 2 840 113549 1 9 16 13 3'
 49 867:      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
       :     3E A4 0F C6 CA 09 0E 2C 8A F7 6E 27 27 AB 38 E0
       :     65 2D 95 15 98 6F E1 86 82 7F E8 4E 59 6E 42 1B
       :     85 FD 45 9C C7 89 97 37 2C 9D E3 1D 19 1B 39 C1
       :     D5 A3 EB 6D DB 56 AA DE DE 76 5C C3 90 FD BB C2
       :     F8 8C B1 75 68 1D 42 01 B8 1C CD FC B2 4F EF 13
       :     AF 2F 5A 1A BC F8 D8 AF 38 4F 02 A0 10 A6 E9 19
       :     F1 98 7A 5E 9B 1C 0E 2D 3F 07 F5 8A 9F A5 39 CE
       :     86 CC 14 99 10 A1 69 2C 0C A4 CE 0E CE 4E EE D2
       :     E6 69 9C B9 76 33 24 52 DE 4A 2E B5 CA 61 F7 B0
       :     81 33 0C 34 79 8E F7 12 A2 4E 59 C3 3C EA 1F 1F
       :     9E 6D 4F BF 37 43 A3 84 67 43 00 11 33 6F 62 D8
       :     70 79 2B 86 6B EF CD 1D 1B 36 5B ED 19 52 67 3D
       :     3A 5B 0C 20 B3 86 B4 EF D1 CF 63 FD 37 6B D4 7C
       :     CC 46 AC 4D D8 EC 66 B0 47 C4 C9 5A CF F1 CF D0
       :     28 A4 19 B0 02 FD A1 B6 17 CB A6 1D 2E 91 CF E8
       :     FF FB CB 8F FD 4D 5F 6A D8 B1 58 C2 19 E3 6D C5
       :     14 05 DC 0C 0B 23 49 79 AC 65 8E 72 BD DF 1B 67
       :     73 B9 6B 2A E3 E4 D0 7B E8 60 48 04 0C 01 67 43
       :     6F A8 39 E7 52 9B 00 CC 9A B5 5A 2F 25 DB 63 CC
       :     9F 55 75 94 E6 91 C1 1E 55 3D 4A 3E BC 76 0F 5F
       :     19 E5 FE 14 48 38 B4 C7 D1 59 1D A9 B5 D4 67 49
       :     4F D9 CA C5 2C C5 50 40 60 39 9D BD B7 22 98 EB
       :     9A 4C 01 7B 00 78 6F DC 7D 9D 7A A5 7A DB B8 B6
       :     1C 34 DE 1E 28 8B 2A B7 28 17 1D CE 14 3C D1 69
       :     53 F9 84 C1 AE D5 59 E5 6B AA 0C E6 58 D3 2C CE
       :     42 F4 40 75 04 CD 7A 57 9A D0 EF 9B 77 13 5E AA
       :     39 B6 F9 3A 3A 2E 59 97 80 7F 06 36 1C 83 F4 E6
       :     7F 8E 3F 9C F6 83 16 01 15 14 F5 D8 5A 18 1C EA
       :     D7 14 CD 49 40 E4 EB AC 01 D6 65 28 DA 32 F8 9C
       :     EA 04 28 E8 EB CA DC F8 AA 18 8C 9F 62 E8 5B 19
       :     57 65 5B 7F E2 B8 D7 97 3B 7A 72 26 B6 6D 93 BF
       :     7B 23 2F 3D CF 65 3C 84 B4 EC F1 A9 92 0D B1 94
       :     9A D7 50 B5 46 A5 55 2A 20 E5 49 09 71 9B 8C 0C
       :     07 05 6F CB 7E 57 4A D2 A3 2E C9 50 01 DD E8 44
       :     81 BE 77 D0 39 ED 5B F7 42 62 EC F3 98 1F 1B 00
       :     D3 36 6A 9C 2E 06 1C 47 E2 41 A0 61 C6 24 95 60
       :     D2 B8 44 6A 48 0C 38 C2 8B A9 89 D9 F6 8A DC 4B
       :     BA F2 A2 0B 47 E4 92 31 28 C7 23 42 D5 97 FD A2
       :     59 DE 0B 83 C2 05 6D 6B 77 E7 99 B3 19 32 4A A5
       :     0B 1D 65 9C 2A 56 02 9B 74 53 C5 F3 BA 52 43 D9
       :     FA 74 9D 91 7C 40 D9 D1 01 E4 53 BC 8B 10 E4 2A
       :     7C 08 93 23 C0 26 F7 83 E1 00 B9 FA 6E 70 14 42
       :     4D A6 FA 37 92 BC 95 7E E8 21 9D 01 6B 77 3F 28
       :     FE DC C9 62 A4 85 AB AF FE C0 23 28 19 71 E2 9A
       :     A6 89 83 9E CF D2 61 9E 92 28 7C D2 30 DB 26 A2
       :     50 7C C5 00 EB 1C 7A 52 93 B5 FE 91 7A E2 9B F1
       :     AD 35 01 24 F8 A3 11 63 52 14 B4 11 DB 9F 67 D3
       :     B8 5B D7 15 01 85 37 EA 45 B4 1F 41 B4 C6 60 51
863  13:       SEQUENCE {
865  11:        OBJECT IDENTIFIER
       :         hkdfWithSha256 (1 2 840 113549 1 9 16 3 28)
       :         }
878   1:       INTEGER 16
881  11:       SEQUENCE {
883   9:        OBJECT IDENTIFIER
       :         aes128-wrap (2 16 840 1 101 3 4 1 5)
       :         }
894  24:       OCTET STRING
       :     C0 50 E4 39 2F 9C 14 DD 0A C2 22 02 03 F3 17 D7
       :     01 F9 4F 9D D9 27 78 F5
       :        }
       :       }
       :      }
920  58:    SEQUENCE {
922   9:     OBJECT IDENTIFIER data (1 2 840 113549 1 7 1)
933  30:     SEQUENCE {
935   9:      OBJECT IDENTIFIER
       :       aes128-GCM (2 16 840 1 101 3 4 1 6)
946  17:      SEQUENCE {
948  12:       OCTET STRING 5C A5 74 68 B8 1B F0 3B 8D A7 18 6C
962   1:       INTEGER 16
       :        }
       :       }
965  13:     [0] 94 C8 68 9A 99 D2 C3 8E 19 2F A6 BA 08
       :      }
980  16:    OCTET STRING 5C F1 78 6C 57 C7 40 2B 54 FC 93 C3 0A 4A 45 33
       :     }
       :    }
       :   }
]]></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-----
MFQCAQAwCwYJYIZIAWUDBAQBBEKAQAABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZ
GhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj8=
-----END PRIVATE KEY-----
]]></artwork>
        <t>Bob decapsulates the ciphertext in the KEMRecipientInfo to get the ML-KEM-512 shared secret, encodes the CMSORIforKEMOtherInfo, derives the key-encryption key from the shared secret and the DER-encoded 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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
izBm0XxSKXfj8kNZRR30w6p7ltvTnd9xmNK7m0NeVIT9C8ZTfmc2oVJrcUg/
Z1x23vxyhRvxf/XaBTpSS/XnqEOl4IRZUQf7llRtddY/PwtbpT88fc7jDHDg
gT+sNOp1p/Fsnlv9UX8w7FuPVw3XMl2n328MTGd8279VH59alnPb1acvo8b7
4vq0NZiKnfeOWu+2r6WKGYfSdDy/ezt5uGufidJ98/7BPE5b91PLf5rHZi92
js9fo0X/tjlZjLqW/6hfW08n49fjL1fJZbtT8a9v2mmiPZ5FM9NLZf14/JA8
PX+5O+6+Pvg9UT5+bdRHyfvt8CE+Xsi9446nyuPHzt3T4fjl9bR3VWku3mpP
oWA6D4+eUzs2n86uz1791qg/it7elPEg1dqtl/fBojcSFs5V+jbsfwldfWQO
BS/u1/rtyvV4It2Pz89vTKc7l1+mUfNQvrx33N5CF5/aVw+Ts47Y8G6j+WVd
9p974TR669+PHvT7tn3bnTl6pXd9fnZ2053eiLeT9OnNanrayTA9PW5ddxr9
+peHuNc7fmx61u34y5X3Mjy7tfrTl4fIfWyo1st56lbm6bXWtOf90bG1eH71
zo4nb42x+tyq9y+Fd+dm6vVffEQSzrN8KKXXcf/upeE/3bXi4HWatB4bo8rp
S9Pp3T48vk5HjXpr/tLoWp0LN3A65/Vb+8uxPfHV2GrcXt83jZvO8zCeqj3L
WzjqabN9NfXfbiqjp/r1bXp7lSpn42vLr6fx4+1rI3Drj8HwonEu3T6nnaf5
eBLqb/X+86lycXfS6ggLLZ3c3pjmzUmlf9ttPI6t8/593DptgxqSdm4+PPht
cSrcPM7OO19ubkL/5qSuno8G0mnSve5Jt6Lw3j+Ous9hd1GJ1SfbN43W47jx
9nY5O381r97emqOokcZvid66PWvOBjeHnZPwbf44mJ/dPDWE994iGHZqN7Wo
JY8qC+G4dXE8eLy5W0jx/anpvL8v7E5dil8v/Dszrj/FzWdHO7zz75tn4URu
P4qxcCJH9+ng6v29FSsVR+7WB1NjfFsfnAYP9lts2f33bvrs9510EB2/3w/P
WqeNF/PiqjuaeV+caRA707Nmw+vbV83xzbRycWeryXtnFM/F9sSf+1YdLLYX
8kvn3XLPR/Wbjm679/rjpNv2XrwzufWun86c43H/TezcNmy5Mryoj96lmXr+
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
fio/n7SGncvuyW0l+pKmkui/yKkq3Tcurw47r/aX+uKtd9fvXfWPlZOGrCfD
w1dX01/vBi/6l4vw9dLV7ciyx1pr8lYZn0yD8dv88vxaPzEeXp6m15PLQTK/
Gbfsgd+eN6YN5fJ9WJsJs8fp5HwkNRattjyMZml3OjAQcFQa87kQPNRk9+X0
8q7b0LWB/jQZi83X954TKa3J1dxsNSQjlE4s9Ux5jOEge8fvj51aa9R+fBe0
yt183k8UH+HSSfPhUJB9o6W/u35y3XtOHmPr5K0x8t8PT5qCHQ6PO6Z96B/D
L87GJ22t9f7l+bDyRZ81D2/EJz8N3+4a9UdFkj3PvO86ZvLcvh8njw/q4rWn
dx7lS9VfxM/qhVXTji3wdm49ChevlRdnMrmZJub76Yt4F+ojSWo2JuKtOLr0
W/OWetu8ib68njw0798mo8NBqw5inQi3w95L5/7mURg1K1I39s4bt1dXx6Y6
6Uhyffocj4dzK5hbSsd4Myb3L6MgnSnpYC7IAyUKFy/ymdXtvQ+udOFudF35
8nBtxento3o3e3EuHx+Exfvl1WvL7F1dXwSjwBcuv3R6bxfBy/NY+nIdaeej
8X3/RD++GCwc4/LxsPL8/KVrRI07s3VzY/QG/rH1/iK+XV+0b5yhps0tcXwT
Sc/nyuQycs8un+NF+q68DMLGRDqP7t5G95XH2/RQiZ/vR++p1g19qfN4eRgs
Gq/NrjFq1ttCrXk8Hfalt9FpfH9zfns8vb15qV/entr3x51nc35Sse4Oz59G
vTPhpTFb3CKRCAZuvwPD6EzSu8Oe/TB7fx9bese8gF5M5zNr8HaiDI/7D92H
4ejOaVdmbuulbc6VeTSbhr2JFKZv57PXs9AWnobDZzd6W1zY4uOTEY0mga00
betOjHtfgsfkbbhov9ycV07u7rpnowd7LLeu354utZth8/HLpN0b3r+ZUg+x
vXeph2/O8Gwyrw8XTfP0NXCUK1v9Mlbnnnt6UZm+RvIwXtw+zfqDyZUX9971
6DB9P314QYatHX6Z243o+P4kHL/4p3211hTGx8EwHOjCs9M5fTm9qjw1bkzt
7U27mV6Kh1NPU6avb/H1jXXaDJ/du4u2d37VklRjItQGHfHtxhpcP720OldP
V53r4wfPnVecqw1r9Da3zZY5t+cPpw/1x7p5d+PAl3mW9WzeXF6p5+r8Rr6K
7Xq/7uhvT/cV82nUnPSGk6B5M7/sP5yuFutaDUspWyFao2WZb93pfSuaWa/z
S0WaVI6PaUdEmo/Xdf/05VFILi+P21/Gs37fdb33t+D47f5NMOPb5uJ6Pp+e
ta4bf15l50vTyj3LdfZWSW6Ie0HuDaLllXqBGYZytHqRAjU8FcZE8YhtXxUu
WuP0zwL6295EZBLTFYFlpxaYyAx6Mzae0i16scaMWg0z/yr8jXaR8HNNppXK
e0tU0xf5P11Yv7h2j90WEyp0/VrXdf607V7TOBk76Qp/wv6q8AVlLQeb/mzf
cv7DB9DJTP5DheGBrtXyyWWAVHkJ0DpMKraThOIHIFUmDmOqAfQAI7NlVjOZ
6zBsLbjMVZigMkdklsRMmYDWTGaJ65NrDtMlppgM8SCr6SW81mDTqUViFL/s
wlkiFDnSDME0k8FahYl/WN+N/nytMEOklk3x6NK+BqXb1636xfH6cNllJpDw
mK0x22SCQWhJNtNN5tWYhs81+p9pMVlnrrA+WVOZ5DBDZaLKDJ1pHnNFUJ7Q
reGzzhSXSIdVFMBurU/WVeY5dEndsJkN4nISyzXa3HCYKzPRoffOi9jZYPYG
TR2V6O1aTHOYYxH7TJM5Lv2vpjHVJkYZAm1gWcyW1id7EEAbbGI1lWk67QPw
QFALnzHTYZ5NDFWAggeRWp9sekzymGoyEZy2aS1Hp4cgDyYIkAPwR2CmxlwA
b2zsLBKdIEGqywyLdiNqO0zGzBrzVCK74TFT5Ti7GwQDh2wmKtBxvoPINIOo
JdjEQggR1sLfoLkLQmzg7Go0GqS2DKKQLDNJYapEBINkSi6zVOK/JhLbrQ0+
6yJNwD6ywmrQLZcGiUBVyjkMass2c0EUEMxbn2y4xCTQxvKIvYpMnNMVpvHP
AqkwrQ7h0QCOvqE7Am0oWYS8ZhE/wB4SDIuUTbVIFSEkQATLyc6GbJs0AmBL
ArNkWsJSaAnoq43dZBIPQIR1HeBlr08GqRVIFf52iMOuzTTMF5hSYzaobZAI
YBWPr+VsEAwmDiwBYJgAkcA+4Jalkdm0LZINoACaG3yyu4Gzh1UtGqd7XEMc
pnpkVwAFZFaFEZJoaWgI6Gqr65PFzCJxqRAsGGsyhiAhEIG2gnM1iVnAyCMS
arUNasskHqCHZNLysG4O6G+RJmvAXGeCwtcVM+ZtGAPIrU5y69aIHxBv8BZU
NEySLVALagOHAG0F5e0NakPoVZX00VBIVIkwMHIuPZQdklDYKWgbJBemSt2Q
MCIGjIlLyANIaCL4DJMCPkM2QWrTIBCcTOY2VBKC6Rgk+rZKyoS/VYGsOxAG
LrBEoJYFqySR5robNgy4KZweNY5tjdtAEB8mHzOh59Bk/A2cYVssbQNsrk9Q
QOBJPpGTnbbSSU4Ats0xgmI5pOobHgnSa5AagU6mS/ZQ5VQA82AJwSRQEaLi
yBypDUsCc+cphCQIDpbaHFS1RuiA4dAQMK9WI28KO2WaG1plkCRjc6iXzE1H
7h0FMvqCRooJ1HSZ9nA3cMYIyCDMHSyRp9EguDTQDw4EqMIAQsjJtnJL7G7s
7NRoEKCFSAN4iCccgMnp72jcGQFhk6IJWGVjQ8JgnIAqRrjERmK4w623yXeD
PzC4AcKvsBmbdhu0wfL4gdyaRMx0atxdWUQ5qJSkEVGgjwZUaEM8a1wNIf2Q
ZLI7KrEUnCNjZJMBgXgacEAOqbehbEkYtoJIQoDJHqmkEpATmDRwG4SAx66J
xDCddH59MnwKjAFEEsak5hIW0CSHhypgG9kwgRPP4b5a2TL6lkti4HBNgKEF
/rD7EB6iEyCXSSVEbkmEDQPoFMEQ+IytBC4SMJ0gniKSi4SjQcQBH4ToQduc
zCmsKDSfjI5NKg2jBw0BqRAoQGFJeDgLlQ2VtBC4cM8E60cbKkRbWSTOwySQ
PZRIW8A8ssobXhKSDH3ETAgmNiTiOaRSoAKsGvwu3AisjczDOXPD9GIalFbj
AQ04hJhE4GawppC2wrCAYIAOthF+z9mMDEwaB6NBgZtN4g0kofdgj8vnw/oB
f5GLvbShGJgg6CR6QM8WSBjBJ6CAaAxWCSYdqyMIgzMlC7mBM/wLHBJGwBWC
VNgHLIG0QCQoqne4ueckgNpKm77KJR5AkiAS8HiI6RApIhrCcwJE5saMSyg4
b2yAjW3BTMCJEIGcqERSgc+AAtOAFJ7IAllPYLTFKoFGgKrA0OWhVI3TlhSQ
OwMipMm3hdhuhI8mHL9KiEEAyQbIFITALWG+yBUTX7EtmQTI/4ajs7iJIGPE
lwDOoBzMC0JZmumRhJMD0siHIObXsTBs6Y6YX4ewlLKBb6do2R86YXkXpoN2
9vqsD7I0ovvn7clfKzrlH9sZkKhVdOj77sxE1ylr+kZmsr1R+Z1WezvSFjjm
3eDB/YMnv522QLhUrgqwTBL3JuAb7Jhgkt7CWUP1BJk0Dq7U2QhzAATcFxw/
hBtahvQGVPHULYC+bj7ZfPC1YsAOw88ebZDMkKQVybYzud7uBBsS9bliIBaG
1B9tcsGQ1RIXfpMHOQeosrybARq2UijJ3pEnGwplqdIuNlBuRUGNQpkTJUxQ
LoH8oA4zUiNXqtkVQ5M+kLLvILHBlSJXFyovQCZsnbaDL4QJhlFAuoEoQuSs
hxGBURX0bdZQQi1qR7swgNOlWM0mlwivANIgxVAVSvxgP7A85EjhGi1vKP86
wGvfipetlf4dmq2TYdsHFkr/cNv2YbBW/da8dkunwbwr27zaLF5dWZZ7hsem
ZfYbrnX1cGKbwzN7Pr9w+vqV26pfe9bNnffWf6wcD5LuSUt5qttuWF9cjU7D
bnTWjuJzW5idv5tvjeeGcHH9IF86Q+3yfW40n/VSLWoLnuKoSOkNAsHWP4vy
0bviS/8EW4kga22q/d/umu3/HQ0weuq4rWWH44caYvsfdp7yM4q/s/O0X7yS
YdU82nrzRvJb7aL9/H0Jy0ubI7qZTtzIx+fCdhKMRiAhP7b5L/zJ/wXDXdLA
FIcAAA==

-->

</rfc>
