<?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-11" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <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-11"/>
    <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="July" day="01"/>
    <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 parameter 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>The Module Lattice Key Encapsulation Mechanism (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"/>. ML-KEM is the name given to the final standardized version and is incompatible with pre-standards versions, often called "Kyber".</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>All KEM algorithms provide three functions: KeyGen(), Encapsulate(), and Decapsulate().</t>
        <t>The following summarizes these three functions for the ML-KEM algorithm, referencing corresponding 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() -&gt; (ek, dk):</dt>
          <dd>
            <t>Generate the public encapsulation key (ek) and a private decapsulation key (dk).  <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(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. Algorithm 20 (<tt>ML-KEM.Encaps(ek)</tt>) from <xref target="FIPS203"/> is the encapsulation function for ML-KEM.</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.  Algorithm 21 (<tt>ML-KEM.Decaps(dk,c)</tt>) from <xref target="FIPS203"/> is the decapsulation function for ML-KEM. 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 recipient <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. Originators using ML-KEM <bcp14>MAY</bcp14> choose to send a ukm, though there is no reason to. For maximum interoperability, recipients using ML-KEM <bcp14>SHOULD</bcp14> accept and process the ukm. Recipients 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 originator and recipient. 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>
        <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>RFC 5280 <xref target="RFC5280"/> specifies the profile for using X.509 Certificates in Internet applications.  A recipient static public key is needed
for ML-KEM, and the originator obtains that public key from the recipient's certificate.  The conventions for carrying ML-KEM public keys are specified in <xref target="I-D.ietf-lamps-kyber-certificates"/>.</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 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 }

  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 originator 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. Of these keys, all but the private key are ephemeral and <bcp14>MUST</bcp14> be wiped after use. 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 generation of private keys relies on random numbers, as does the encapsulation function of ML-KEM.  The use of inadequate pseudo-random number generators (PRNGs) to generate these values can result in little or no security.  In the case of key generation, a random 32-byte seed is used to deterministically derive the key (with an additional 32 bytes reserved as a rejection value). In the case of encapsulation, a KEM is derived from the underlying ML-KEM public key encryption algorithm by deterministically encrypting a random 32-byte message for the public key.  If the random value is weakly-chosen, then an attacker may find it much easier to reproduce the PRNG environment that produced the keys or ciphertext, searching the resulting small set of possibilities for a matching public key or ciphertext value, rather than performing a more complex algorithmic attack against ML-KEM.  The generation of quality random numbers is difficult; see Section 3.3 of <xref target="FIPS203"/> for some additional information.</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="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 317?>

<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>ML-KEM parameter sets, NIST Security Level, and sizes in bytes</name>
        <thead>
          <tr>
            <th align="left">Parameter Set</th>
            <th align="left">Level</th>
            <th align="left">Encap. Key Size</th>
            <th align="left">Decap. Key Size</th>
            <th align="left">Ciphertext Size</th>
            <th align="left">Shared Secret Size</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">ML-KEM-512</td>
            <td align="left">1</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">ML-KEM-768</td>
            <td align="left">3</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">ML-KEM-1024</td>
            <td align="left">5</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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
59Ltc9p9Wkymof7WGDyfKhd3J+2usNTS6e2Nad6ccIPbXvNxYp0P7uP2aQfU
kLRz8+HB74gz4eZxft79dnMT+jcnDfV8PJROk951X7oVhffBcdR7DntLLlaf
bN802o+T5tvb5fz81bx6e2uNo2YavyV6+/asNR/eHHZPwrfF43BxdvPUFN77
y2DUrd/Uo7Y85pbCcfviePh4c7eU4vtT03l/X9rdhhS/Xvh3Ztx4ilvPjnZ4
59+3zsKp3HkUY+FEju7T4dX7eztWOEfuNYYzY3LbGJ4GD/ZbbNmD91767A+c
dBgdv9+PztqnzRfz4qo3nnvfnFkQO7OzVtMb2Fetyc2Mu7iz1eS9O44XYmfq
L3yrARbbS/ml+2655+PGTVe33Xv9cdrreC/emdx+10/nzvFk8CZ2b5u2zI0u
GuN3aa6eP7bDaPLebRrS2H1+0+KFMonOB9JtoIXh4WVkCb2x+XB4N593JLNn
DOcv6dtMa11zN4/B89W3/nkn7CXuWLyxTx/t7sOdPH4Q6pdnvjY5qTu98P4k
dd+7biqPbtT0LGk0pIuotegcBgNu2rx3T540xx4md+eDZHn1fiWdL4Znnvso
N97b53HfNL9dPHsXeqc1edC95sl7LATyYG4t6m+P0TF3N0zTh/ppkhkdROxb
JofF758YLQqUNy4DMLO92kbJrZpqGHVdt+U6zBVCBNdVBNURLcmUZU0zLbHu
6JJiqmK2YGYzy8cMP9/wzh3R56a1U50gB6rueKLkKKJkupJhmJLiOa7m1G3Z
snRXFg3F1mGpZLsuy47tSfW66gqG5+qW61i6BlvCgC3jwXxa2TUVwbM12xQM
wZVs3fTqmivVpbppyboraKrkGKqoGrrmuaKu6VIdkyquamiuIokWp6ueo6iG
bdd1kE2uS7bhAB5HNERLNmzRUU3ZtTTHsVTNNB3XceuaatuyIXiOZdkS54HU
oCkCJ9FRJEG0dNG2Hc+2gKLribLpSZ5qiqZle7oD8BAje4JkCqJgaq4hGpwn
GnrdVF3DEm2g4MieUPdU3TQ8UwUErq7ZtqgYBgaImiHZgm0qtiu4tqu4rutI
nKtphmFbRl2TZUkBwq5iSq6l2qYmenVL0EVZFmxZqRu669XBAYnwt2XZdk3R
Ez3OACcUz/LkuiKbgE/Dv4IgYpjmaZKj14W6IYELmuV6tgPaWLKmgjEUbmp1
2eFkU7UEWxJAcs1SXM8RbU+TPUeua5aj1G3bVjTTVhxHd23MIqBJsQ3VtD0P
PR2Bk3RTEQ1LECTPMUVLE+u2BegdCRSywTDP8yzbwj+O4qieZjq6Jaq6LYmG
K0MnVU4kGQdpBEuSFaNumLam6m5dshzInaXV67JlaFABV3YVR6hboKqg6IKC
ESKhy2meqcuGW1clAsO2DdNSVVPyJNWxNBmfPVWtq4biaoBIFF1VlR2FRMOu
a4KnehxAUSFiiqLLuqXYdQdCJzqmYakOEdSAwBu2aauSbasqFtYE2TAcy7Hq
kgTGWJwBtgoi+CXUIawOZjCcummqdROCpoMmYKHjiq6k60AEw3SxLjo2lpTB
FM3gVNkzdMUWofaqCmg0yzQF2wUhHBmrQt49RRHqWNzGxCqI5AiuZ1j1uiir
rmlysmFpngERgPgwIwJBFDQZK+uyB8zrHlTVM8BbHWkBBEQVFU91dIg3hN41
OacuYm7gKkA2LRPoOBo0UHdMWfJ0yLIpKJLuAlvbhJbrJgbqIK0mubpqQRdU
KJdqQUUhbk4d+mjVTdBHszTNMWQL0ixhJrIQmirbugJhsz3RNAxJcDBeAREd
IGipkDdVVSHqgqsqhmDUIV06yUddUDUoZ91V64rpwCZKLiQR0u44sAsKp4uW
W687YA6oiAUVCcDZnmzoUBXwxmFG1LAl2BbRVuqupIgm/ahJiqFqAucAdAXL
Q7psGSKqW6ahGw6Q1IGzYlkwCADLwlDFkGSE83YdMis5qlGH8Esw344rWLoM
fVI1RwN73LphWLCR0G7Ig2CBqtBfycRykNa6AlKonmyZqqTIDgyKCXFzDOiQ
IkCGREF00cWyoTPgi2TWbUHHXLItSJpX12VXFAQL1kZz6wLkV+IUx4Q6yKT0
oE3ddXUomgNFASyyJ+me69i0awMcVRP4eC6mkiGPIDOsu8mZmm6QNkG3JQ2K
YUiSXrcdSQaXJM2UVAE2AUR3YfIgiRJYC90BxOQcLE/k4AlUQYQF1U1ZRDKt
SiJ4LYoO4NTqjmxBXCBs6KOrch0+QMW3niJC8TRNWHdt7CHZfLMTCcNlu/EU
xfBb7M28BvvFOJkrgUmG2bOgmYYm6BoYKGoqmhR8oQow7aJQnTc7mVi+ufbR
04rb7nQnFB9lhzl0tgcewt5ISEIEsw6bDE8jCZoNCpiCoFchy07RVZ6HIK9e
XAPbfSS5WAWuEjRQVV2XNMMUTNXwICfQLFhzR9WqqyDZTDYz0h97XmrtZYkP
AAHFXUU2JJgbEY5DMG1JksAE2ZMRwAB7DxbVcBwDoYLuqRsMpwnzhxay32xR
XKJfz6OP7cpvQvkAVvYAa0WEqN6wqjKwIsNeNulm8p69rmtns2Yvj6yeaaYH
y4oUmR3jBd0QU+Unk+mX4mhKLVu1PPqdbGettDG+SleVwcP5WfTYGL72Lsyr
0ZXZDgaDQatN371fNSzTObZNORwNBheCNUhehqPw2FgIlt02LzjznSqQTdu8
sqHQk/uweaHVb8xL1bxvJy9NyY89YzCatZtmcmzf2ccd0xubiyvXvOrY5sL8
xs3Mw+PlYHR53ojlbtibvrw/Dx470q33OHxVHnz76dvw8u5OtY+Ve+Qy7yfh
Y08+P5WfT9qj7mXv5JaLvqWpJPovcqpK983Lq8Puq/2tsXzr3w36V4Nj5aQp
68no8NXV9Ne74Yv+7SJ8vXR1O7LsidaevnGTk1kweVtcnl/rJ8bDy9Pseno5
TBY3k7Y99DuL5qypXL6P6nNh/jibno+l5rLdkUfRPO3NhgYCDq65WAjBQ112
X04v73pNXRvqT9OJ2Hp97zuR0p5eLcx2UzJC6cRSz5THGA6yf/z+2K23x53H
d0Hj7haLQaL4CJdOWg+Hguwbbf3d9ZPr/nPyGFsnb82x/3540hLscHTcNe1D
/xh+cT456Wjt92/Ph9w3fd46vBGf/DR8u2s2HhVJ9jzzvueYyXPnfpI8PqjL
177efZQvVX8ZP6sXVl07tsDbhfUoXLxyL850ejNLzPfTF/Eu1MeS1GpOxVtx
fOm3F231tnUTfXs9eWjdv03Hh8N2A8Q6EW5H/Zfu/c2jMG5xUi/2zpu3V1fH
pjrtSnJj9hxPRgsrWFhK13gzpvcv4yCdK+lwIchDJQqXL/KZ1eu/D6904W58
zX17uLbi9PZRvZu/OJePD8Ly/fLqtW32r64vgnHgC5ffuv23i+DleSJ9u460
8/HkfnCiH18Ml45x+XjIPT9/6xlR885s39wY/aF/bL2/iG/XF50bZ6RpC0uc
3ETS87kyvYzcs8vneJm+Ky/DsDmVzqO7t/E993ibHirx8/34PdV6oS91Hy8P
g2XztdUzxq1GR6i3jmejgfQ2Po3vb85vj2e3Ny+Ny9tT+/64+2wuTjjr7vD8
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
v7CW/wurKE2FxYoAAA==

-->

</rfc>
