<?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.19 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-cms-kyber-05" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title abbrev="ML-KEM in CMS">Use of ML-KEM in the Cryptographic Message Syntax (CMS)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-kyber-05"/>
    <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="2024"/>
    <area>Security</area>
    <workgroup>LAMPS</workgroup>
    <keyword>Key Encapsulation Mechanism (KEM)</keyword>
    <keyword>KEMRecipientInfo</keyword>
    <keyword>ML-KEM</keyword>
    <keyword>Kyber</keyword>
    <abstract>
      <?line 92?>

<t>The Module-Lattice-based Key-Encapsulation Mechanism (ML-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 ML-KEM public key. Three parameters sets for the ML-KEM algorithm are specified by NIST in <xref target="FIPS203"/>. 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 KEMRecipientInfo as specified in <xref target="RFC9629"/>.</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/kyber-certificates"/>.</t>
    </note>
  </front>
  <middle>
    <?line 98?>

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

<!-- End of terminology section -->

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

<!-- End of introduction section -->

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

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

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

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

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

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

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

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

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

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

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

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

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

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

</section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="FIPS203" target="https://doi.org/10.6028/NIST.FIPS.203">
          <front>
            <title>Module-Lattice-based Key-Encapsulation Mechanism Standard</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2024" month="August" day="13"/>
          </front>
          <seriesInfo name="FIPS PUB 203" value=""/>
        </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="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 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="20" month="September" year="2024"/>
            <abstract>
              <t>   Module-Lattice-Based Key-Encapsulation Mechanism (ML-KEM) is a
   quantum-resistant key-encapsulation mechanism (KEM).  This document
   specifies algorithm identifiers and ASN.1 encoding format for ML-KEM
   in public key certificates.  The encoding for public and private keys
   are also provided.

   [EDNOTE: This document is not expected to be finalized before the
   NIST PQC Project has standardized PQ algorithms.  This specification
   will use object identifiers for the new algorithms that are assigned
   by NIST, and will use placeholders until these are released.]

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-rfc5990bis-10"/>
        </reference>
        <reference anchor="I-D.kampanakis-ml-kem-ikev2">
          <front>
            <title>Post-quantum Hybrid Key Exchange with ML-KEM in the Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>Amazon Web Services</organization>
            </author>
            <author fullname="Gerardo Ravago" initials="G." surname="Ravago">
              <organization>Amazon Web Services</organization>
            </author>
            <date day="18" month="September" 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-08"/>
        </reference>
      </references>
    </references>
    <?line 340?>

<section anchor="asn1">
      <name>ASN.1 Module</name>
      <t>RFC EDITOR: Please replace TBD2 with the value assigned by IANA during the publication of <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
       { 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
       { 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="ml-kem-cms-enveloped-data-example">
      <name>ML-KEM CMS Enveloped-Data Example</name>
      <t>This example shows the establishment of an AES-128 content-encryption
key using:</t>
      <ul spacing="normal">
        <li>
          <t>ML-DSA-512 and HKDF with SHA-256;</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-----
  MIIDMjALBglghkgBZQMEBAEDggMhACTnc6B5UOyymOxQLDt8PzI2vIHkccIGsy1b
  uI6EZ4UVHbHHpbRRv3mZwW7AEu+YEbpcB6kkZ28jUTHWFfYIIIeUbq6hMa/nRcLT
  UPYcjTwBK+dRU1UbmfTHCdtrF3U0hyB7tXsBo6tTeQWCpP7LBrYxmAFBhp2JuUx6
  MO+TpIWVHVzyzS2UE4MEBQ/HDGWyCgL6WRKGRdrEfBc2Wg7loCc7RDjoOqWGYPcV
  n2HCLPVhemLWAeCRE0wcLUPSvUzhKZsrRk4cfSi5eZB7Dze4olQ8NFGiJ8WMi+Y3
  xjiTW/w6X/Y7bC+zf8JLFcn7jOvQNM85PXp4j3KIiXSnCAv1OEUDZO5peP0QQUU1
  CxvQQjxCj+kGHZ/EaKeFy7QD0Crhl69xccB0dMzZMgQFmynLv5kZd0Z4SuSkANQ8
  ymtoLDvMqyHznseJS68ru+ZRn88KkVMosF4UkhKjphLXASHQU5RyquuBORUGLY/q
  DXQSyCJ8AHAlzCYwEUdpqGzsMo84bB72AyN5LNL3mxZaQnxAuREpQIO8w13IREfG
  HEPbHDJVZBXqCcD2wBWllJk4Fjn3b0uid62UfZLARoNCvakIkT+wUv68FS+WGVoY
  zbvYqqPSpJg5GRrTT8KUDwLscRkBVPIDctMWFD20yppmL9iLSwPkrz/1xhbgEqdA
  HGG2kt8XdkIRmEZ2IeLUJeiDPPGCi4zlywkbNpgIHajQriGcNQnoQWQZG3vWe0n2
  ZGuHoF/lPZ0awi6roL7ZOWaysXSBYRv5DiXTP3EFD2lQGDMDECjQPUw2yMXBDRFY
  pYPAeuEGfXMhl8EDgcuie/06oy45kOxxiud6r8q2b9hnH5YzGjJLYSygm9jAhQrQ
  a80GWUdVHvvElgZLs7uEFHhKtgcFbYmDH4GaiLVLMo70cSpDdDXmdVc0J9mEOsSk
  ac5ztj+mgj7qfCkib6QXeAMCmSnASKugi9iSAEEmXalmN5Jksh75YlozJM0xyDTZ
  k5SqKn5seA97Y+ExjOJXOEzcsXhHV9vc/9HTgFGXNv+Lbj8u+q4i4NDoWIntY5eM
  +u9k28Eo
  -----END PUBLIC KEY-----
]]></artwork>
        <t>Bob's ML-KEM-512 public key has the following key identifier:</t>
        <artwork><![CDATA[
  5017165E720D05D70CFDA5F47B54BD5008C3ABE1
]]></artwork>
        <t>Alice generates a shared secret and ciphertext using Bob's ML-KEM-512 public key, derives the key-encryption key from the shared secret and CMSORIforKEMOtherInfo using HKDF with SHA-256, randomly generates a 128-bit content-encryption key, uses AES-128-KEYWRAP to encrypt the content-encryption key with the key-encryption key, encrypts the plaintext content with the content-encryption key and encodes the EnvelopedData (using KEMRecipientInfo) and ContentInfo, and then sends the result to Bob.</t>
        <t>The Base64-encoded result is:</t>
        <artwork><![CDATA[
  MIID4AYJKoZIhvcNAQcDoIID0TCCA80CAQMxggOIpIIDhAYLKoZIhvcNAQkQDQMw
  ggNzAgEAgBRQFxZecg0F1wz9pfR7VL1QCMOr4TALBglghkgBZQMEBAEEggMAqXwh
  xkJt/Vd+oSOSIDXM8851hXdyECMaHp2hnWGL2JohQ38wE82Yg4GC3YfU8F/kA6EZ
  yK5p96HnJsXRfg3dzxprhf7QX4/UNo6v7nwk1JEP5cCwmuMOnbZfeKPb1Mr4qilG
  hlwjpq/r6fR9rZmGOyBG0ZDAQVNlNzgPqnlgK1V/DGYf6KAfWscdjRGs8xHMeRJg
  7vLDSz9A/u1Cu2dZWIMKzwK5snTK2FbOAYerTfDDBnYNoQFpcgoWOFN45SYDTvgb
  2n9sUxWHovMRKlF6j6f9UVa0uqHYzoIXaLU3R9f0LxUVSV6bJ3hQp87t2l3E5ysd
  k3pmqsKkHhBWltJSJeRjjELSDUYs8AuW7D0TnLH0Jt/q0XG7zm1C2cWhJ5oTij10
  yr4qf38mwbG9R1dAbkrtchxl8Rl9v0OJZgfUHJLuSVMTYAb6n3Ltc4tN8qIia3cy
  Lg+wan2CjnXA3fKGDMMWhvaH0GRirItKumKBXg11MuG8PjLm/neUX2MIE+3hzDBB
  GBqSI586EZAx+WgWEhn7sLKlbm8wZtY5jfaqobusj3hN/RxCzFtplq6e3H7tEpFv
  mblF9lSPNpeA06Tj+PXZxXjgupj4gRp+fsjcVheG/syt5MuiFuTG7xdDtWyU7K3e
  8ZBo+zSUysipy4QEFlrBo+tMvhyDffyOd/qaaQnT0cv2ctEU6OeshZ1+J+ptDmx7
  6K3WH+k9etrcwUTmblJn8FDM3czM7fC+XScB5CrNyl9C+W1TN/NzMxaXRQcWuDyJ
  3jRWXmtJEGksg489cJAv1QbZXQmDlarrwq/01Tb7PWbE1QjfRQ627p3ZtAmK6zf7
  wZ8m8ZhoVMRA7qoEd3wfDxmdv4AgGvKILntG3WPgEYpF37qJbHbD6FQqhJXN2kx1
  FUDtsYCmiXB/3+MSz3HDbmXJvC7oxVmpM7YQHWYsrmRE1xDZcQl5IOUHo6yjjDvI
  iAsbmd7BCbanMK8Izysi1Whkw/hjQIuBfi6lH4ykkhN1d9U0Ebn3OZ625WmEMA0G
  CyqGSIb3DQEJEAMcAgEgMAsGCWCGSAFlAwQBLQQoxaMpy4QqMaoK3B0wFDbqmvAW
  Kuo1hZIymSqlgVuw9FRNxbWvSMp24TA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEq
  BBB7U/4MxliKkV8ho6ZJIm9UgBDzlQzo0SLI9+VS4VoV1mvr
]]></artwork>
        <t>This result decodes to:</t>
        <artwork><![CDATA[
    0 992: SEQUENCE {
    4   9:   OBJECT IDENTIFIER envelopedData (1 2 840 113549 1 7 3)
  15 977:   [0] {
  19 973:     SEQUENCE {
  23   1:       INTEGER 3
  26 904:       SET {
  30 900:         [4] {
  34  11:           OBJECT IDENTIFIER '1 2 840 113549 1 9 16 13 3'
  47 883:           SEQUENCE {
  51   1:             INTEGER 0
  54  20:             [0]
        :         50 17 16 5E 72 0D 05 D7 0C FD A5 F4 7B 54 BD 50
        :         08 C3 AB E1
  76  11:             SEQUENCE {
  78   9:               OBJECT IDENTIFIER '2 16 840 1 101 3 4 4 1'
        :               }
  89 768:             OCTET STRING
        :         A9 7C 21 C6 42 6D FD 57 7E A1 23 92 20 35 CC F3
        :         CE 75 85 77 72 10 23 1A 1E 9D A1 9D 61 8B D8 9A
        :         21 43 7F 30 13 CD 98 83 81 82 DD 87 D4 F0 5F E4
        :         03 A1 19 C8 AE 69 F7 A1 E7 26 C5 D1 7E 0D DD CF
        :         1A 6B 85 FE D0 5F 8F D4 36 8E AF EE 7C 24 D4 91
        :         0F E5 C0 B0 9A E3 0E 9D B6 5F 78 A3 DB D4 CA F8
        :         AA 29 46 86 5C 23 A6 AF EB E9 F4 7D AD 99 86 3B
        :         20 46 D1 90 C0 41 53 65 37 38 0F AA 79 60 2B 55
        :         7F 0C 66 1F E8 A0 1F 5A C7 1D 8D 11 AC F3 11 CC
        :         79 12 60 EE F2 C3 4B 3F 40 FE ED 42 BB 67 59 58
        :         83 0A CF 02 B9 B2 74 CA D8 56 CE 01 87 AB 4D F0
        :         C3 06 76 0D A1 01 69 72 0A 16 38 53 78 E5 26 03
        :         4E F8 1B DA 7F 6C 53 15 87 A2 F3 11 2A 51 7A 8F
        :         A7 FD 51 56 B4 BA A1 D8 CE 82 17 68 B5 37 47 D7
        :         F4 2F 15 15 49 5E 9B 27 78 50 A7 CE ED DA 5D C4
        :         E7 2B 1D 93 7A 66 AA C2 A4 1E 10 56 96 D2 52 25
        :         E4 63 8C 42 D2 0D 46 2C F0 0B 96 EC 3D 13 9C B1
        :         F4 26 DF EA D1 71 BB CE 6D 42 D9 C5 A1 27 9A 13
        :         8A 3D 74 CA BE 2A 7F 7F 26 C1 B1 BD 47 57 40 6E
        :         4A ED 72 1C 65 F1 19 7D BF 43 89 66 07 D4 1C 92
        :         EE 49 53 13 60 06 FA 9F 72 ED 73 8B 4D F2 A2 22
        :         6B 77 32 2E 0F B0 6A 7D 82 8E 75 C0 DD F2 86 0C
        :         C3 16 86 F6 87 D0 64 62 AC 8B 4A BA 62 81 5E 0D
        :         75 32 E1 BC 3E 32 E6 FE 77 94 5F 63 08 13 ED E1
        :         CC 30 41 18 1A 92 23 9F 3A 11 90 31 F9 68 16 12
        :         19 FB B0 B2 A5 6E 6F 30 66 D6 39 8D F6 AA A1 BB
        :         AC 8F 78 4D FD 1C 42 CC 5B 69 96 AE 9E DC 7E ED
        :         12 91 6F 99 B9 45 F6 54 8F 36 97 80 D3 A4 E3 F8
        :         F5 D9 C5 78 E0 BA 98 F8 81 1A 7E 7E C8 DC 56 17
        :         86 FE CC AD E4 CB A2 16 E4 C6 EF 17 43 B5 6C 94
        :         EC AD DE F1 90 68 FB 34 94 CA C8 A9 CB 84 04 16
        :         5A C1 A3 EB 4C BE 1C 83 7D FC 8E 77 FA 9A 69 09
        :         D3 D1 CB F6 72 D1 14 E8 E7 AC 85 9D 7E 27 EA 6D
        :         0E 6C 7B E8 AD D6 1F E9 3D 7A DA DC C1 44 E6 6E
        :         52 67 F0 50 CC DD CC CC ED F0 BE 5D 27 01 E4 2A
        :         CD CA 5F 42 F9 6D 53 37 F3 73 33 16 97 45 07 16
        :         B8 3C 89 DE 34 56 5E 6B 49 10 69 2C 83 8F 3D 70
        :         90 2F D5 06 D9 5D 09 83 95 AA EB C2 AF F4 D5 36
        :         FB 3D 66 C4 D5 08 DF 45 0E B6 EE 9D D9 B4 09 8A
        :         EB 37 FB C1 9F 26 F1 98 68 54 C4 40 EE AA 04 77
        :         7C 1F 0F 19 9D BF 80 20 1A F2 88 2E 7B 46 DD 63
        :         E0 11 8A 45 DF BA 89 6C 76 C3 E8 54 2A 84 95 CD
        :         DA 4C 75 15 40 ED B1 80 A6 89 70 7F DF E3 12 CF
        :         71 C3 6E 65 C9 BC 2E E8 C5 59 A9 33 B6 10 1D 66
        :         2C AE 64 44 D7 10 D9 71 09 79 20 E5 07 A3 AC A3
        :         8C 3B C8 88 0B 1B 99 DE C1 09 B6 A7 30 AF 08 CF
        :         2B 22 D5 68 64 C3 F8 63 40 8B 81 7E 2E A5 1F 8C
        :         A4 92 13 75 77 D5 34 11 B9 F7 39 9E B6 E5 69 84
  861  13:             SEQUENCE {
  863  11:               OBJECT IDENTIFIER
        :                 hkdfWithSha256 (1 2 840 113549 1 9 16 3 28)
        :               }
  876   1:             INTEGER 32
  879  11:             SEQUENCE {
  881   9:               OBJECT IDENTIFIER
        :                 aes256-wrap (2 16 840 1 101 3 4 1 45)
        :               }
  892  40:             OCTET STRING
        :         C5 A3 29 CB 84 2A 31 AA 0A DC 1D 30 14 36 EA 9A
        :         F0 16 2A EA 35 85 92 32 99 2A A5 81 5B B0 F4 54
        :         4D C5 B5 AF 48 CA 76 E1
        :             }
        :           }
        :         }
  934  60:       SEQUENCE {
  936   9:         OBJECT IDENTIFIER data (1 2 840 113549 1 7 1)
  947  29:         SEQUENCE {
  949   9:           OBJECT IDENTIFIER
        :             aes256-CBC (2 16 840 1 101 3 4 1 42)
  960  16:           OCTET STRING
        :         7B 53 FE 0C C6 58 8A 91 5F 21 A3 A6 49 22 6F 54
        :           }
  978  16:         [0]
        :         F3 95 0C E8 D1 22 C8 F7 E5 52 E1 5A 15 D6 6B EB
        :         }
        :       }
        :     }
        :   }
]]></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-----
  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
  8okk0ej2GS/mY8DijpX4g0XMQ0RECPq4
  -----END PRIVATE KEY-----
]]></artwork>
        <t>Bob decapsulates the ciphertext in the KEMRecipientInfo to get the ML-KEM-512 shared secret, derives the key-encryption key from the shared secret and CMSORIforKEMOtherInfo using HKDF with SHA-256, uses AES-128-KEYWRAP to decrypt the content-encryption key with the key-encryption key, and decrypts the encrypted contents with the content-encryption key, revealing the plaintext content:</t>
        <artwork><![CDATA[
  Hello, world!
]]></artwork>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA8196bKjSJbm//sUdKTZ1I2+V1eANojaGgHa910qqxlDgCQk
FolFW1a1zc/5PfMC8yzzKP0kc44DElpuZGRW19iE5SIB7n7W7yzuKFKp1Mv+
G5V50RzVViz9G6W5ysJPGbq/SJmKtfVSquWlNqe57qbo3Itv+CY8NPR0yllQ
zUaqLjcpw6b8lU6J7mnrO0tX2a4MlWrqnqcsdap/sn3lSL2Kzf7XF2U+d3VY
7zoQLr+oju3pthd436jf+W6g/+7FC+aW4XmGY/unLaxXlQelF03x4SNLs9mX
n6g//EsqRV2uZFIMQ6VSf3q8Qa6+eL5ia/9NMR0bLuMS1E/UYGV4lKn7HhV4
lOZQC8VWT5QS+E5qqdu6q/iwPHLp6gvd1W1V916MrUvGez5L0zzNviiurnyj
+roauIZ/ejk47mbpOsH2G9UQmp3+y0Y/wTXt2wuVour6iZJtVdl6gRlO3tTV
lWIbnkW9gji+kofkZk9Xja2h237VXjh4LZQWuYt6eFGBu6Xjnr5Rnq+97HU7
0GEBKlr4S8OwDF/XKEHTDFxGMa8LedTCcalOvTqhQCJUv1ltytQrUfTXLzBH
KO4vY+DDsJdUGafE65ZimHDd2yqe9W9oHB+Ou8Qbiquu4MbK97fet3Qan8NL
xl7/iB9L44X03HUOnp4mM6Rx5NLwV8EcxoZmdlimQytTddc3FgYy6X15AePQ
gJJvoKSU4qmG8bI1vlHw5ydKVWy4qgMJrnKiXo0FpZgmddK9rxTwuFK8FbUC
xSFXjvoNb8BHz3F9UKj3jUyh6QslMMEEfCe+f7LC2/j1Baxh5bgoXIpKkf9S
YLRwt/ZBdcBCokuh59QCE7SWvA7Mf4vcoqUf/audhLc9oET3v1FM/p0qOoGp
7xUXdKIYtp8q6y7I0o6eVGHQN6qjuIYXX3EC20cTKLlgt/rlqgaEFHI0uGp4
RQ81tya0fWyBtn9TCUE2EJTyIoI+VMd6ZLL5QbUD2wMD9lc3nDaNjf5wizAr
28Q7qMgGo1ux20d379hngVyq75hgkD7VcxSN+o///r+ofgATUAxN34ig7fvK
QXmn2gAqruHcC0NUbEVTboRRZ+tUpnwnDgsY+HBiBv5ND+l6LgXpgxqBpZV1
3bvVtwQepZsPN///UbpGCPzYK/YS6ftU8S8vtgML++C0aOqlaqfP0plviJFt
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
AyUlt6Qo5YFPkPBEm8aR/+JpD/nyGq2Exb58VLA4i5JqPfxGfgojrMlut2DI
j5KE21os96Sl9xIeD8OfYXx5+VfyqzhSXyAuFb+0c3NA/PfkqYej2DhLYlcr
PC/3OBjn/HwCsqseDo0IRksd94ROeLLN1RUzdXBcKIeCeAsh8TZs2Bx49mbZ
y+PLcwo232w9eo/0kGj64Q9DRc/G6a7hUs7Bfkm2Y6MN8rgQ/rTtcnm/BEp+
fP/mxSBVpQKfrS15Mc/DWjs+hhipMzxR177yhnZwffcYDw1hA8KZYy/Ao4rO
/PI7W0R119OMlxM/KfxD8tQIBUAHU3IRbjarVam5FhrFpblcbZbFWbcpFwVZ
Wi6bK0Ec2Gq+mBu2Tyerfew2JJ/rnKvsvlrZqGq17J2YOUwRVPPyLDscVeaV
ynbe6+0z1uwwLghy8DaV51u1mN9sZiy3Hg4q49JiWq1W9eF8l181lbTdUxsD
mGLYmarrwaFYf9N6Q2Y4txaDiqj5bikzpFenYsGfeEUn7w/07ljcdgqNojs9
WkKpuNqytWB4xEys2X4bbKvjUWV0Pp377FDOAiPddEUqj0/ispEf9+rlnubK
i6LKjpcF0xHVQk9aO+3duDztqCM8GsVWxEZntNKtxljQxZ5MH9TGsNPfD8+r
+sxze5usuugbOX1WLEhnPeuYXa5VKhs1btw03qb404DHtTEYpw/5SXpamItv
5wVXa5RUu7Bu77utJpfrTLbZdaZeNSZ9WxT2TFseSrN2bqt36G53OGTwp/CO
+253fRTXb5tyZZaWlbpeOhW6Ei26KzPPH1W1SGvN86y57Jask93Y5zYzjZ5l
+0F/I7S6GMdOlu80pH1zd6qcbU+v9fOcG7zNejbH1TejpuOVssPNqr7erhoT
oV/pDnO90y4Iiu3esNyYpncwhTTp9k9ijRMqgnkWpwd5qG135bPXdLjsvFhg
hVMr12g1MtZxpnTtoxD05G232uYOTKbakxdlmKIid+YVqTaaFSc7UZXYQ3Fs
mrVNtrS2M3M6MLQ8O1zMGkLPaYl7ZVPdDN4Ow32eK/XfxuWRM4UpzvP9dLfr
9Le1Za7ccwcDrj6UDg1P7W2Ko05VUv3muCSx9Gm7tRq80egfOhv3nGaOq/lS
3mkCUlEusxufm2ibas+SZ2xVbwxruiF1OmXRyJ7N02Ezb22X1Yqy7rpGWW11
bac77s7Kmf1Yp23MbGbloOKU0mZnRisHI+86jcKsPVZO3qRfnPb2OcmYDDoZ
GQgxu2WpKcniutsZHthTc1KUeiVkZDvtCHoglxeT5srkwL3UwNDTdN45ZXOb
9vFoBFre5XbsnF/Zldz0XF7XGtP+aWnxa2HVdbt4boqjy+OhNqrs97K5nDW8
QiCXKqu6v1RL86klVbJlxWiMGk2nQKv9raRJE0sbqXSNt+S219/gFGru7K/f
rOW6sFuIG2Oe7050oSlafVvo14OlwRt9QZatiWJarVxt460KuanpnGtN+niS
BjOsJHL9Xd3OebrAF6Zv8nHdrk3a8ln1JqvKiN+rab4yWJbKk9b+rTFfc8Hb
LmtkW5Izrtr+NKdjmfgW8BuWk50YmiD6PQATiYXfATc8YHf32gSB90vf64J+
OZopMPmcXGBpic5JBVosSUKulC0Uc9milKNpTswIRZkJlwzRNdrs0H9pjyIK
Wd+h8z2MjYnX0j/79YnHdZ6+ffhZgH2P9mvM0w318Tmnz3b0IJp69yH3x97S
vnkn8GHe6HvI9tbE3jXKKz4qfRn7ydzIPnkRMxLcJREiedDr819ADH9HRwxn
rJL3fqPdWJucN4jjNdmRBB5BbdGeWlHx9Hw2Fa543bT0LkaEUTIrTGt1Z1Zd
7dWW0FUlB67RA1EUOFoUus3jctmubuHaSpg2rs9tulK3eYAplsvWWVjKwrLY
65aOM11d0iXmcOa3i15h1GC6YrPtZgcPgViGQCzsJgf8PebjpuanR9qb02/3
q9KkyXE5ZjXRTrLYVCpbdmWPyw225qy6Ge4gc+x0mS2LmeliyJXSGwFiNEaG
em7L5yt2zZv0FsuMdj5u3dWi0J1k08OWk98X7MOGqcmdnCoerKDZtuezhV7v
zJmmm90ZJsL6yjyst7u0m1/0eHdmldunYpmeSUJ31DJb52VnZ5vLOjNKS+Xp
Il8XFmNP1da9sscdK029V1vCFIV9Q+qfeSEdMGLAarNxtVk/H+o5zx7U2dK8
LUx1d7CQpKI9bTnd0lZdOuN2qZXN9afSYL/EpIO1eW94HFecfbNXN0v5dX7B
D0cKHewq07NTnSiNYabHL+jGcTjqj/LzWmbV3XIFnzUzcu7k4U8ZbzJba+fV
N5UVBCa/1q/pvfVabvSl4dTjhGBcAPXajQoNQt/Rk3LhbDEiq45XtZwzMNYM
/mztCaSyyHDWYV7me4wmzDeur66OJtcz+T3drs2Wi2Gl1gj6o+ZgKszzdqbh
q1m/xe2qhpJR8YdlG8u3g2Kz4tqeCJlFHeJHc7zaKxW63DPcql8PrHpxsmSY
ZlDmOuuGlbb14YRtVuW3zOosFYswRbm461dzHGhYOL6Nl2N5ZRe8Rt2cW9xh
Bqi7Xig7Zx5468yqle4dxXPJ35q7vJ6pFHx5W9rDFNbcLPFmv9Pa6gKdH6zf
OpPZcbJeBtt1dtnbvi28tQqJUTntnfxcMzBKwaBcOGqSPz4NC/UM/mg1Nys6
b+f+8OQZ21O2K5dMFy74zf3qJC0Wp7aW3imQKgxodc+qvjzMt3VvNWPeam9b
X7KOBZgiX8+MK28bXvdd9TAcAFE1mytJzYx6bhYW4tukrxZzots6mbz4NmYG
rXTr3Dwqk15XHQfSqQZTZNa98cTya3J54y2zHK/WIMvqzmeTriWZiusedmma
GcwLnfFcZrrrRa+bZwvbzMwXrHr+vEAqDjPO4mYrZ9TsCYWdI2uZw0I6Wto+
KyzL+3q1YfvlzLizlKfbUqawq80rcylf6u5WtUmL3RwxhysNJd+bipYxKaYz
b83+OVOR5takthcLznFkbZuFabcynnqu1ZOZozRTu2au2h5WnPxpvZb2Vex2
Cd7c0gpFca7YzTpXPYNcmfFqc0iv1t1qUFwYebOSPW02qxaj8UNantuZ9izP
5saW3BRo9FTxtCv3q/OM1JVrstBUAX4ATLyyOBbLfaFkCodusdHtOkeliRrb
NRWnninSh5I031l7YYwt3sBhVrPqyervzOUoOPClXus4H+/7zS0LaMUVl5vd
amOU+QNdLB7kQ6U7rU2rs6owHkqAXphJFovFwjCdbR5NA5JPbuXkZ7WqxQ+X
Relsds8O3W9U+bdRPztyRoy1d8NAPAh/54UAMdRlYSRwLoBMUTTF8+y365sr
pDdCZeFfHv8WgMcj2vptDGEoluKyNBV2KymGKlDkRQUmR/GFAk7xF/qvZFaG
hysZ8tcT3C6H7WyK+Rb156qtgVyGdbAMYPMUT2fjO315QJ7PAM00HV+FBbLh
AhmgmmGu159R/7sHeuHfPMVkqMzvYIpsgeK4THKKG0pzTJLSW3oRx3JAAUvf
3gf2L83H650cUFDAlXMyVWApWqLoHCUVKFqkShIl5KhSlioUccKiBA8/mYHm
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
oEam0xa/K2+mIlAwlZqjnlilR3K1sjY8PVufKbW2dnYqZrfQqE8LJcFrZw7p
5lrhlnrveFgqZ3T2UZBdOz171Rtqnqqbfqmc1md2ce4J/UJu2QvMQ2XX79nz
U6vX1KZA0nK5yvUCdycf3TcNGTn4rS6/OrU6guzmmNJg1AtmfFOtsaw30Qb9
SrUSMPqhvN4xrVxxWt+kPa/sr8tTYVgu21MLO0ODinMo5Nqb1WyoTTqNVmPW
HSwP3ZLEqc3ZvFoX9tuZ7MxKrNfjSueZIgXjZe3sy+32Mr+dznCjlD+OF1O1
6vHjUn7qT4vZmjwYFA9+l6/zg7a8tU5+ebA68vWGmdtUvE6rYBgj6UAPlap9
nJ4a2NpfL8rtWmuelrYLfu17jUIrDToZnRZBM88L9Pm84XXb6KiOUdPqalVM
D7O9bmtTsMxsukfaCb3BsFHmi2JHrnfy3almcz1nm500fKHTrQfliZspHQ+V
Hn1ubU5FYTyvq0Ha6pkZUEA9V+9iJsRI57rCLr02d3Kri7Z+zJoN9xQUcmZ5
cT7sesOTcZis+n1517ZkXy1WteLArNR3+aycK3WneIR1/ea0tGKjWrUPgipO
mrW10OuxljNvH07r88qr7KdSNbPx6L0+L5lbcSGLOblvCsvCWZqoK/SRHjdV
u7ynNs3RpqQ7tUNnLpSU8dAaLMfthbbv52sZd9bjN16xvKTr/K5r9DqFYj/t
HkaN3BQ30MerdSvgjZ3D1zeWtJmV/VbnsO12hOB4LHdLQ27ZOtHH6bAzH9Qt
a7pnq35DeOvvO+lJuRQI/TAIqNO50s8cNba7Kk979nSV9btmvtrkuGm9sW5P
GmLPYy1hqe1aYlCdHRhRXxVnxc1c52cIv/3FbKNk9eXkbcjbPVds7ILl3t/k
Zm79qFVLq3J6065pzbTaHXaUkTBtHprdekvgB9K8elTlFkwhjwxzyRXz2e6M
V0/lyaHbLp7ytUJ6sFs31la3UCnXc5nd/uTO9mxZXZjrptLc+KtGXZyzTVI+
iX7RPXdnsx4z1N+4/ri4Cc5BtjvU5R1bPIx8Y9pcLGe7qj/0Tut971jftOiW
PmNG567NTrtYBR7rve3ZbrOdvCJ2gi1X79f226KWFQ71WR3MYJcXG2ytKnT7
M203nmY2Vv9U2ZvGeN3cnAcV3ChttayBWXd2C+uYlTL+OjsoN7Ommh20Tkdd
1iYsf07TWlsYzlQ2nfWDzqmQd43Gkm6vpobOrBH4sud8gR3MD/31bDs79U6F
Tu2QZjTtZDZ3nfrxjetw56Ek9JsBpAmT43BSmgAoF7TsNmjxPqamnLPZ0Pqa
LffT1pSTjPV2kl3Sk2aX7sliZ5d9SR52uk+S4tNOibel9Ye/BuOzv0rAd6il
nvyBA5Kn3Rwn+n94CumzA0XR2drffKAo/otbL4eKHn4ywPulU0Xv0Yvel/fU
7o8lXRLaim6azjtFDhz/C7n2fwE7EdpgUoEAAA==

-->

</rfc>
