<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-cms-composite-kem-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="Composite ML-KEM CMS">Composite ML-KEM for use in Cryptographic Message Syntax (CMS)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-composite-kem-00"/>
    <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>75007</code>
          <country>France</country>
        </postal>
        <email>daniel.vangeest@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="J." surname="Gray" fullname="John Gray">
      <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>john.gray@entrust.com</email>
      </address>
    </author>
    <author initials="J." surname="Klaussner" fullname="Jan Klaussner">
      <organization>Bundesdruckerei GmbH</organization>
      <address>
        <postal>
          <street>Kommandantenstr. 18</street>
          <city>Berlin</city>
          <code>10969</code>
          <country>Germany</country>
        </postal>
        <email>jan.klaussner@bdr.de</email>
      </address>
    </author>
    <date year="2026" month="February" day="24"/>
    <area>Security</area>
    <workgroup>LAMPS</workgroup>
    <keyword>X.509</keyword>
    <keyword>CMS</keyword>
    <keyword>Post-Quantum</keyword>
    <keyword>KEM</keyword>
    <keyword>Composite ML-KEM</keyword>
    <abstract>
      <?line 111?>

<t>Composite ML-KEM defines combinations of ML-KEM with RSA-OAEP, ECDH, X25519, and X448.
This document specifies the conventions for using Composite ML-KEM algorithms with the Cryptographic Message Syntax (CMS) using the KEMRecipientInfo structure defined in “Using Key Encapsulation
Mechanism (KEM) Algorithms in the Cryptographic Message Syntax (CMS)” (RFC 9629).</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://lamps-wg.github.io/draft-composite-kem/draft-ietf-lamps-pq-composite-kem.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-lamps-cms-composite-kem/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        LAMPS Working Group mailing list (<eref target="mailto:spams@ietf.org"/>),
        which is archived at <eref target="https://datatracker.ietf.org/wg/lamps/about/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/spams/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/lamps-wg/draft-composite-kem"/>.</t>
    </note>
  </front>
  <middle>
    <?line 118?>

<section anchor="sec-intro">
      <name>Introduction</name>
      <t><xref target="I-D.ietf-lamps-pq-composite-kem"/> defines a collection of Key Encapsulation Mechanism (KEM) algorithms, referred to as Composite ML-KEM, which combine ML-KEM <xref target="FIPS203"/> with traditional algorithms RSA-OAEP, ECDH, X25519, and X448.
<xref target="RFC9629"/> defines the KEMRecipientInfo structure for the use of KEM algorithms for the Cryptographic Message Syntax (CMS) <xref target="RFC5652"/> enveloped-data content type, the CMS authenticated-data content type, and the CMS authenticated-enveloped-data content type.
This document acts as a companion to <xref target="I-D.ietf-lamps-pq-composite-kem"/> by providing conventions for using Composite ML-KEM algorithms with the KEMRecipientInfo structure within the CMS.</t>
      <section anchor="asn1">
        <name>ASN.1</name>
        <t>CMS values are generated using ASN.1 <xref target="X680"/>, using the Basic Encoding Rules (BER) and the Distinguished Encoding Rules (DER) <xref target="X690"/>.</t>
      </section>
      <section anchor="sec-terminology">
        <name>Conventions and Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
These words may also appear in this document in
lower case as plain English words, absent their normative meanings.
<?line -8?>
        </t>
      </section>
      <section anchor="composite-ml-kem">
        <name>Composite ML-KEM</name>
        <t>ML-KEM is a lattice-based KEM using Module Learning with Errors as its underlying primitive.
It was standardized with three parameter sets: ML-KEM-512, ML-KEM-768, and ML-KEM-1024.
Composite ML-KEM pairs ML-KEM-768 or ML-KEM-1024 with RSA-OAEP, ECDH, X25519, or X448 at similar security levels such that the shared secret key from each component algorithm is combined into a single shared secret key.</t>
        <t>All KEM algorithms provide three functions: KeyGen(), Encapsulate(), and Decapsulate().</t>
        <t>The following summarizes these three functions for Composite ML-KEM:</t>
        <dl>
          <dt>KeyGen() -&gt; (ek, dk):</dt>
          <dd>
            <t>Generate the public encapsulation key (ek) and a private decapsulation key (dk).
<xref section="3.1" sectionFormat="of" target="I-D.ietf-lamps-pq-composite-kem"/> specifies the key generation algorithm for Composite ML-KEM.</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.
<xref section="3.2" sectionFormat="of" target="I-D.ietf-lamps-pq-composite-kem"/> specifies the encapsulation algorithm for Composite 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.
<xref section="3.3" sectionFormat="of" target="I-D.ietf-lamps-pq-composite-kem"/> specifies the decapsulation algorithm for Composite ML-KEM.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="use-of-composite-ml-kem-in-the-cms">
      <name>Use of Composite ML-KEM in the CMS</name>
      <t>Composite ML-KEM algorithms MAY 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"/> type is used with the Composite ML-KEM algorithm to securely transfer the content-encryption key from the originator to the recipient.</t>
      <t>Processing a Composite ML-KEM algorithm with KEMRecipientInfo follows the same steps as <xref section="2" sectionFormat="of" target="RFC9629"/>. To support the Composite ML-KEM algorithm, a CMS originator MUST implement the Encapsulate() function and a CMS recipient MUST implement the Decapsulate() function.</t>
      <section anchor="sec-using-recipientInfo">
        <name>RecipientInfo Conventions</name>
        <t>When a Composite ML-KEM algorithm is employed for a recipient, the RecipientInfo alternative for that recipient MUST be OtherRecipientInfo using the KEMRecipientInfo structure as defined in <xref target="RFC9629"/>.</t>
        <t>The fields of the KEMRecipientInfo have the following meanings:</t>
        <dl newline="true">
          <dt>version</dt>
          <dd>
            <t>The syntax version number; it MUST be 0.</t>
          </dd>
          <dt>rid</dt>
          <dd>
            <t>Identifies the recipient's certificate or public key.</t>
          </dd>
          <dt>kem</dt>
          <dd>
            <t>Identifies the KEM algorithm; it MUST contain one of the Composite ML-KEM OIDs in <xref target="sec-identifiers"/>.</t>
          </dd>
          <dt>kemct</dt>
          <dd>
            <t>The ciphertext produced for this recipient.</t>
          </dd>
          <dt>kdf</dt>
          <dd>
            <t>Identifies the key derivation algorithm. Note that the Key Derivation Function (KDF) used for CMS RecipientInfo process MAY be different than the KDF used within the Composite ML-KEM algorithm.
Implementations MUST support the HMAC-based Key Derivation Function (HKDF) <xref target="RFC5869"/> with SHA-256 <xref target="FIPS180"/>, using the id-alg-hkdf-with-sha256 KDF object identifier (OID) <xref target="RFC8619"/>.
As specified in <xref target="RFC8619"/>, the parameter field MUST be absent when this OID appears within the ASN.1 type AlgorithmIdentifier.
Implementations MAY support other KDFs as well.</t>
          </dd>
          <dt>kekLength</dt>
          <dd>
            <t>The size of the key-encryption key in octets.</t>
          </dd>
          <dt>ukm</dt>
          <dd>
            <t>Optional input to the KDF.
The secure use of Composite ML-KEM in CMS does not depend on the use of a ukm value, so this document does not place any requirements on this value.
See <xref section="3" sectionFormat="of" target="RFC9629"/> for more information about the ukm parameter.</t>
          </dd>
          <dt>wrap:</dt>
          <dd>
            <t>Identifies a key-encryption algorithm used to encrypt the content-encryption key.
Implementations MUST support the AES-Wrap-256 <xref target="RFC3394"/> key-encryption algorithm using the id-aes256-wrap key-encryption algorithm OID <xref target="RFC3565"/>.
Implementations MAY support other key-encryption algorithms as well.</t>
          </dd>
        </dl>
        <t><xref target="example"/> contains an example of establishing a content-encryption key using Composite ML-KEM in the KEMRecipientInfo type.</t>
      </section>
      <section anchor="underlying-components">
        <name>Underlying Components</name>
        <t>When Composite ML-KEM is employed in the CMS, the underlying components used within the KEMRecipientInfo structure SHOULD be consistent with a minimum desired security level.
Several security levels have been identified <xref target="SP.800-57pt1r5"/>.</t>
        <t>If underlying components other than those specified in <xref target="sec-using-recipientInfo"/> are used, then the following table gives the minimum requirements on the components used with Composite ML-KEM in the KEMRecipientInfo type in order to satisfy the KDF and key wrapping algorithm requirements from <xref section="7" sectionFormat="of" target="RFC9629"/>.
The components are chosen based on the ML-KEM variant used within the Composite ML-KEM algorithm.</t>
        <table anchor="tab-strong">
          <name>Composite ML-KEM KEMRecipientInfo Component Security Levels</name>
          <thead>
            <tr>
              <th align="left">Security Strength</th>
              <th align="left">ML-KEM Variant</th>
              <th align="left">KDF Preimage Strength</th>
              <th align="left">Symmetric Key-Encryption Strength</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">192-bit</td>
              <td align="left">ML-KEM-768</td>
              <td align="left">192-bit</td>
              <td align="left">192-bit (*)</td>
            </tr>
            <tr>
              <td align="left">256-bit</td>
              <td align="left">ML-KEM-1024</td>
              <td align="left">256-bit</td>
              <td align="left">256-bit</td>
            </tr>
          </tbody>
        </table>
        <t>(*) In the case of AES Key Wrap, a 256-bit key is typically used because AES-192 is not as commonly deployed.</t>
        <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>
          <sourcecode type="pseudocode"><![CDATA[
HKDF(salt, IKM, info, L)
  = HKDF-Expand(HKDF-Extract(salt, IKM), info, L)
]]></sourcecode>
          <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 MUST confirm that L is consistent with the key size of the key-encryption algorithm.</t>
        </section>
      </section>
      <section anchor="sec-using-certs">
        <name>Certificate Conventions</name>
        <t><xref target="RFC5280"/> specifies the profile for using X.509 certificates in Internet applications.
A recipient static public key is needed for Composite ML-KEM and the originator obtains that public key from the recipient's certificate.
The conventions for carrying Composite ML-KEM public keys are specified in <xref target="I-D.ietf-lamps-pq-composite-kem"/>.</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 MAY include the SMIMECapabilities attribute that announces support for one or more of the Composite ML-KEM algorithm identifiers.</t>
        <t>The SMIMECapability SEQUENCE representing the Composite ML-KEM algorithm MUST include one of the Composite ML-KEM OIDs in the capabilityID field.
When one of the Composite ML-KEM OIDs appears in the capabilityID field, the parameters MUST NOT be present.</t>
      </section>
    </section>
    <section anchor="sec-identifiers">
      <name>Identifiers</name>
      <t>All identifiers used to indicate Composite ML-KEM within the CMS are defined in <xref target="I-D.ietf-lamps-pq-composite-kem"/>, <xref target="RFC8619"/>, and <xref target="RFC3565"/>; they are reproduced here for convenience:</t>
      <sourcecode type="asn.1"><![CDATA[
  -- Composite ML-KEM OIDs

  id-MLKEM768-RSA2048-SHA3-256 OBJECT IDENTIFIER ::= {
    iso(1) org(3) dod(6) internet(1) security(5) mechanisms(5)
    pkix(7) alg(6) 55 }

  id-MLKEM768-RSA3072-SHA3-256 OBJECT IDENTIFIER ::= {
    iso(1) org(3) dod(6) internet(1) security(5) mechanisms(5)
    pkix(7) alg(6) 56 }

  id-MLKEM768-RSA4096-SHA3-256 OBJECT IDENTIFIER ::= {
    iso(1) org(3) dod(6) internet(1) security(5) mechanisms(5)
    pkix(7) alg(6) 57 }

  id-MLKEM768-X25519-SHA3-256 OBJECT IDENTIFIER ::= {
    iso(1) org(3) dod(6) internet(1) security(5) mechanisms(5)
    pkix(7) alg(6) 58 }

  id-MLKEM768-ECDH-P256-SHA3-256 OBJECT IDENTIFIER ::= {
    iso(1) org(3) dod(6) internet(1) security(5) mechanisms(5)
    pkix(7) alg(6) 59 }

  id-MLKEM768-ECDH-P384-SHA3-256 OBJECT IDENTIFIER ::= {
    iso(1) org(3) dod(6) internet(1) security(5) mechanisms(5)
    pkix(7) alg(6) 60 }

  id-MLKEM768-ECDH-brainpoolP256r1-SHA3-256 OBJECT IDENTIFIER ::= {
    iso(1) org(3) dod(6) internet(1) security(5) mechanisms(5)
    pkix(7) alg(6) 61 }

  id-MLKEM1024-RSA3072-SHA3-256 OBJECT IDENTIFIER ::= {
    iso(1) org(3) dod(6) internet(1) security(5) mechanisms(5)
    pkix(7) alg(6) 62 }

  id-MLKEM1024-ECDH-P384-SHA3-256 OBJECT IDENTIFIER ::= {
    iso(1) org(3) dod(6) internet(1) security(5) mechanisms(5)
    pkix(7) alg(6) 63 }

  id-MLKEM1024-ECDH-brainpoolP384r1-SHA3-256 OBJECT IDENTIFIER ::= {
    iso(1) org(3) dod(6) internet(1) security(5) mechanisms(5)
    pkix(7) alg(6) 64 }

  id-MLKEM1024-X448-SHA3-256 OBJECT IDENTIFIER ::= {
    iso(1) org(3) dod(6) internet(1) security(5) mechanisms(5)
    pkix(7) alg(6) 65 }

  id-MLKEM1024-ECDH-P521-SHA3-256 OBJECT IDENTIFIER ::= {
    iso(1) org(3) dod(6) internet(1) security(5) mechanisms(5)
    pkix(7) alg(6) 66 }

  -- KEMRecipientInfo.kdf OIDs

  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 }

  -- KEMRecipientInfo.wrap OIDs

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

  id-aes256-wrap OBJECT IDENTIFIER ::= { aes 45 }
]]></sourcecode>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The Security Considerations sections of <xref target="I-D.ietf-lamps-pq-composite-kem"/> and <xref target="RFC9629"/> apply to this specification as well.</t>
      <t>Implementations MUST protect the Composite 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 MUST be wiped after use.
Disclosure of the Composite 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 the 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="SP.800-57pt1r5"/>.</t>
      <t>The generation of private keys relies on random numbers, as does the encapsulation function of Composite ML-KEM.
The use of inadequate pseudorandom number generators (PRNGs) to generate these values can result in little or no security.
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 Composite ML-KEM.</t>
      <t>Composite ML-KEM encapsulation and decapsulation only outputs a shared secret and ciphertext.
Implementations MUST NOT use intermediate values directly for any purpose.</t>
      <t>Implementations SHOULD NOT 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 Composite 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>
    </section>
    <section anchor="sec-iana">
      <name>IANA Considerations</name>
      <t>IANA is requested to allocate a value from the "SMI Security for PKIX Module Identifier" registry for the included ASN.1 module.</t>
      <ul spacing="normal">
        <li>
          <t>Decimal: IANA Assigned - <strong>Replace TBDMOD</strong></t>
        </li>
        <li>
          <t>Description: Composite-KEM-2026 - id-mod-composite-mlkem-cms-2026</t>
        </li>
        <li>
          <t>References: This Document</t>
        </li>
      </ul>
      <aside>
        <t>RFC EDITOR: Please replace TBDCompositeMOD in the ASN.1 module with with module number assigned to id-mod-composite-mlkem-2025 in <xref target="I-D.ietf-lamps-pq-composite-kem"/>.</t>
      </aside>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="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>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2020" month="May"/>
          </front>
        </reference>
        <reference anchor="FIPS180">
          <front>
            <title>Secure hash standard</title>
            <author>
              <organization/>
            </author>
            <date year="2015"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.fips.180-4"/>
          <refcontent>National Institute of Standards and Technology (U.S.)</refcontent>
        </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="X690" target="https://www.itu.int/rec/T-REC-X.690">
          <front>
            <title>Information technology - Abstract Syntax Notation One (ASN.1): ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2021" month="February"/>
          </front>
          <seriesInfo name="ITU-T Recommendation" value="X.690"/>
          <seriesInfo name="ISO/IEC" value="8825-1:2021"/>
        </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="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="I-D.ietf-lamps-pq-composite-kem">
          <front>
            <title>Composite ML-KEM for use in X.509 Public Key Infrastructure</title>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust</organization>
            </author>
            <author fullname="Massimiliano Pala" initials="M." surname="Pala">
              <organization>OpenCA Labs</organization>
            </author>
            <author fullname="Jan Klaußner" initials="J." surname="Klaußner">
              <organization>Bundesdruckerei GmbH</organization>
            </author>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <date day="7" month="January" year="2026"/>
            <abstract>
              <t>   This document defines combinations of US NIST ML-KEM [FIPS.203] in
   hybrid with traditional algorithms RSA-OAEP, ECDH, X25519, and X448.
   These combinations are tailored to meet security best practices and
   regulatory guidelines.  Composite ML-KEM is applicable in any
   application that uses X.509 or PKIX data structures that accept ML-
   KEM, but where the operator wants extra protection against breaks or
   catastrophic bugs in ML-KEM.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-pq-composite-kem-12"/>
        </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="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="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="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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative 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="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="RFC9936">
          <front>
            <title>*** BROKEN REFERENCE ***</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
      </references>
    </references>
    <?line 373?>

<section anchor="sec-asn1-module">
      <name>ASN.1 Module</name>
      <t>This appendix includes the ASN.1 module <xref target="X680"/> for Composite ML-KEM. This module imports objects from <xref target="RFC5911"/>, <xref target="RFC9629"/>, <xref target="RFC8619"/>, <xref target="I-D.ietf-lamps-pq-composite-kem"/>.</t>
      <sourcecode type="asn.1"><![CDATA[
<CODE BEGINS>
Composite-MLKEM-CMS-2026
      { iso(1) identified-organization(3) dod(6) internet(1)
        security(5) mechanisms(5) pkix(7) id-mod(0)
        id-mod-composite-mlkem-cms-2026(TBDMOD) }

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-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) }

kema-MLKEM768-RSA2048-SHA3-256, kema-MLKEM768-RSA3072-SHA3-256,
kema-MLKEM768-RSA4096-SHA3-256, kema-MLKEM768-X25519-SHA3-256,
kema-MLKEM768-ECDH-P256-SHA3-256, kema-MLKEM768-ECDH-P384-SHA3-256,
kema-MLKEM768-ECDH-brainpoolP256r1-SHA3-256,
kema-MLKEM1024-RSA3072-SHA3-256, kema-MLKEM1024-ECDH-P384-SHA3-256,
kema-MLKEM1024-ECDH-brainpoolP384r1-SHA3-256, kema-MLKEM1024-X448,
kema-MLKEM1024-ECDH-P521-SHA3-256
  FROM Composite-MLKEM-2025
      { iso(1) identified-organization(3) dod(6) internet(1)
      security(5) mechanisms(5) pkix(7) id-mod(0)
      id-mod-composite-mlkem-2025(TBDCompositeMOD) }
;

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

SMimeCapsSet SMIME-CAPS ::=
   { kema-MLKEM768-RSA2048-SHA3-256.&smimeCaps |
     kema-MLKEM768-RSA3072-SHA3-256.&smimeCaps |
     kema-MLKEM768-RSA4096-SHA3-256.&smimeCaps |
     kema-MLKEM768-X25519-SHA3-256.&smimeCaps |
     kema-MLKEM768-ECDH-P256-SHA3-256.&smimeCaps |
     kema-MLKEM768-ECDH-P384-SHA3-256.&smimeCaps |
     kema-MLKEM768-ECDH-brainpoolP256r1-SHA3-256.&smimeCaps |
     kema-MLKEM1024-RSA3072-SHA3-256.&smimeCaps |
     kema-MLKEM1024-ECDH-P384-SHA3-256.&smimeCaps |
     kema-MLKEM1024-ECDH-brainpoolP384r1-SHA3-256.&smimeCaps |
     kema-MLKEM1024-X448.&smimeCaps |
     kema-MLKEM1024-ECDH-P521-SHA3-256.&smimeCaps |
     kda-hkdf-with-sha256.&smimeCaps |
     kwa-aes256-wrap.&smimeCaps,
     ... }

END
<CODE ENDS>
]]></sourcecode>
    </section>
    <section anchor="example">
      <name>Composite ML-KEM CMS Authenticated-Enveloped-Data Example</name>
      <t>This example shows the establishment of an AES-256 content-encryption
key using:</t>
      <ul spacing="normal">
        <li>
          <t>id-MLKEM768-ECDH-P256-SHA3-256;</t>
        </li>
        <li>
          <t>KEMRecipientInfo key derivation using HKDF with SHA-256; and</t>
        </li>
        <li>
          <t>KEMRecipientInfo key wrap using AES-256-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 id-MLKEM768-ECDH-P256-SHA3-256 public key:</t>
        <sourcecode type="test-vectors"><![CDATA[
-----BEGIN PUBLIC KEY-----
MIIE8jAKBggrBgEFBQcGOwOCBOIAjssyhemrdzqTE5MNKmCruyoBancRo6y8A5Aw
uDSZ2AwdyWZCWnG6R2sP0vlXCNglq7BvHQTF6BObo+tT+ZmJSnsy1YaSKuyf8yw3
vxyr1ScErsY0r2s1gfprFhYLUQNNoQd+YViNTAedvTBeQGJLgJOozEIFKiwHbvcu
ddc2qnVGqNW0SSjF5QoE/lcwgvpYpZosHRePTYhm87hCdQJldwB6PZmgxZqfyeh0
vXsB+KGw+XLJaOgb2vtl+Nmbm5cyUvOgHItyxQIadhO8iHEIubYzKdlOcDGiP1qE
lCiMNslC+TGcl4Ij2SBQgyfLGpw2jpd3xJxyqjFZeeGrgidfRdVRtUyqUbCGHsLH
ITFJz/h9vqe+S5N6vJmHMFCTHtu0CSiz5pK/RepjWKZiWhYdz1k9u8GWo4q3h8SH
MnQKoSJq3Fx84Kl/ghUNxXB//2w+a/ekHuUzK8QbyWIqm2RSHkOj91hApCMG0tMn
I0xoEqm/ewo3xZA5MJUZEdIkmoN+d5fLwVlUOHS0TWVrrCWAvttq4HySFMBU3vGd
qGQPv2ZLd+NgjzmRMwc3unQh4KIXBspNK+lJgyU57QaDWtVq/yoXjhw5YQlYmckb
NuIeTjpNDqfNxFSuziVQwZQ6VPm/63tjcxy9uMtxw5wTyqfAkyZVKdTLUdcMsJVF
8XE0r6xtCQrNsmWzqhK1kvOUQcITlZEonyN4uXdFweFwXImg/NSK6QUcjKi6iQeI
Gmiy2bKbUIgrIbhyUOZU1ad/vrF+dkBzrPei5BanHBLF5hYVoJcQ+hmg3cVsR1Ke
XaduFdh0UXPNPMiTrClLz/FMdfcbzbe2xdSXHqCsdIBKxGagT3p0H/uTW1WwheFr
DJKBDYBaZxVOwRqP16M7QIOTo8AqeXTOQMSxAdCAx7NR4SttZbQDrjwj1qCj5LQ9
0TW4vUmNsWkaTeQP0LC6f/J5vlEQeIu0vUuggkqmDdaKPwx35SOixjwEwiweXgi1
3bdn68py4/VVYPwXHZaDhakUurZcNEU91nwkrdG03DmbyBlIrwwIClgMwhmSbSGj
Mql2lCPPE/zBJAvL9lfDP3mpoEMB0iCZm6t2IfAN7NLOwFeBOUomqxcvs0OkdxFG
1Gk0hVEis4LHcje/1rBAX8i2Ige6H0AqY5e9X2OHHjVFNzoM8Mavo5trYEksanbG
aJmpADcX8wxjDPhq+VBethWo5Ik0aLW16qGY/jAX6ROrpeRobOiSYNnDLFWI38Mf
cZJuHbBajBe2gwQbTdadu0elr7fMuHd7OOB35vgH7qq0lgOg7LcB8rVgXBeHLsJp
AGS2XTYlKFRNieIo5NSRdkXNkIoHyFZWU9dNUwbKD0CYtxxlj3cKp4AFFHdzCTot
bFIfhoQQxIsZhbPOFCZKjtEQ+UVnjQN1y0E9uym1N7ZjW9OkjeCs0YaooyooNpu6
TOMKu3GjVsqmKvgxk3cIztUouTC2+BC0iYANMUxRbZIiqLGWTsa6rBulSqm5Hpu8
R/LBY0gljpYLFDQJiuYRNvOOIUYEO3ubd8fKY8swLGLNi/LoNwtb+HoJ8szpDsXh
TIalQ0MEsdePvv0LCZ+0N55b1MaFJZieRuCMVPkbeJGWGzb4WVohn4jrsslaNC6y
eZxiXOnPS7EDyzLv2PL/zhedCEbC4A==
-----END PUBLIC KEY-----
]]></sourcecode>
        <t>Bob's id-MLKEM768-ECDH-P256-SHA3-256 public key has the following key identifier:</t>
        <sourcecode type="test-vectors"><![CDATA[
14F1D8FED21F6103676C752C97D0949537A96AB2
]]></sourcecode>
        <t>Alice generates a shared secret and ciphertext using Bob's id-MLKEM768-ECDH-P256-SHA3-256 public key:</t>
        <t>Shared secret:</t>
        <sourcecode type="test-vectors"><![CDATA[
9bd51d44ba390ff68176b763cee113007f112aac3c2ddbdde916e713762a389c
]]></sourcecode>
        <t>Ciphertext:</t>
        <sourcecode type="test-vectors"><![CDATA[
54b75c945ff83194fbf312214749b114bf6838878b49403f5235be774ae6719d
90531da9ab013a0f8a81dbd6510592f5fbcbe3b1bcf393793f517e758bbdd104
67c1a72b14165233e386ea6b027e482824d33244cc7f810bf7d21cd28e007c84
19087698be0dd7934653f35c8b0164c218dcbcbe28302a813e47a334c9565349
0cf57602c798d63d393e9e6ebc219265aa6562632a618d4c3e4052b20c89f2f0
4ea45554673d1be8911f83ca4a20ce86b59cf0a8c964e5b04707875d56011d48
9291abf2370838dc608fe2e26e617d0ec2c2c643e51caf6716e64c2cc5a185c7
2770ec4185487589156bb47e414180c6cedeacd8dad07ffa9091441fdaced553
c482bd0c41d5b77649f0ed803d07d29682dc2c41d2047d18fddab96529b9f8a2
f0ddd5e4b302fffd8ccbec03d9917ffa6b8d249117146c58fd89a135a96ece67
0c58a559628a68012d4c9a43e5fffb427f0df30da745bb0e4eb334716bb82175
10467b8b58e1be54b30c857522654cbb5787813cb1b2fb957a725f51612187b5
8bb83353f8e56aa6af89c94edd656d92bf66913022fce8f85730617d8a166bbb
24515559915cc472435950bce8c25219fef507a6527a6a3920c2deada7732902
e2d2ae8c60bda518a65da66f93581b7e37042a10464675ab326f603be14e5b55
25634adeb956512a84fdb809af2f37d20a9fd23f67eca7741b49d5b7d74f947a
8b6dac68888b3e3802994c98cccb68c2a0e7927f15e5e7be1400983e22a4c9ef
2babdf244525adde3b4d91e778e21e2bd32c5221f5433f28390128eabf3b181b
85c2c1efd7fae946399bb8fe21de2aed0a3e72cab34d305509547df33a45d17d
013a3ac08f0db69dbff0bae5a4b9c15ee8bdc4e2525b49e6865aeb752051935f
8e2fb5daea912d118671102b8fb4675c3937b389a7c7068cb697b3798fffe9d6
e64156493bb808d067a3eac418a7bf5819e25a740c8349914e5008340c381a07
d870b14b9be9939d306bc702d46a58216df932d2bcb45a3f181bd84f4b9ba992
f3a5f12a5db615ae0598a9c432cf5c0095187a849a93ca0d2d7deedb2db1ced5
3c0d4ae5d2b37eb25e07992452e0188e2d72682f46f0167f0f6a680243eff2c4
b5fcf0235852f99defa4d535a479176fa3a22587511581b3649fe410e302ec1b
9061cb535c492ae57ac126cb49ea47de12a9097c5f8a869d84d4aae903f0bc6f
53a60514cebe02fdc9a204a6be2a66567d589fcbaca36565a3e02d10b16920ea
26b05c50be805d06ece3c9ee7db7eb207c33c1d4ac92ca294f1a0f8fac839fea
0389fae43384a2daa7a4c1f5e92d622f8eb37ac0c55eb9df8d9713de03a0ef8b
2d9306c8530f607d898ba88adb6ad982becd3b05cac32b7dfe767c826e5e8bdf
40120f1a49e84cd11c4c09b07c27591a6032b372a7bd468b09ece07ee6eca6e9
4559f14843dd9a97931e0c06d105aa2237e67a3c128d33ab61dc47986fdafb79
7e60cb44453b4dfbcf7afdfe02f686c720fd65d5381827be62f3322acbc37213
0443d6690e3ae3b17f263f9345998ca26317f757b86d0ad41531b114f5d57fa8
2e5023e5176227d087f765e1421cef31be9c315866838017bb2aa58955bf52ce
6e
]]></sourcecode>
        <t>Alice encodes the CMSORIforKEMOtherInfo:</t>
        <sourcecode type="test-vectors"><![CDATA[
3010300b060960864801650304012d020120
]]></sourcecode>
        <t>Alice derives the key-encryption key from the shared secret and CMSORIforKEMOtherInfo using HKDF with SHA-256:</t>
        <sourcecode type="test-vectors"><![CDATA[
0555324e4703e672404e2272c555438bd7d04feac1321e05ebae6c0a2336d529
]]></sourcecode>
        <t>Alice randomly generates a 128-bit content-encryption key:</t>
        <sourcecode type="test-vectors"><![CDATA[
3424cef0cbc2b67f58351abd1e87b3507a11c90adef7e1cdab8d20b0331b8105
]]></sourcecode>
        <t>Alice uses AES-256-KEYWRAP to encrypt the content-encryption key with the key-encryption key:</t>
        <sourcecode type="test-vectors"><![CDATA[
5d13ae00d914a29158a8ef32b23ae5f27b8c293387e3be65fc3dfc19b99d8fdc
552527fd42154b37
]]></sourcecode>
        <t>Alice encrypts the padded content using AES-256-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>
        <sourcecode type="test-vectors"><![CDATA[
-----BEGIN CMS-----
MIIFcgYLKoZIhvcNAQkQARegggVhMIIFXQIBADGCBQikggUEBgsqhkiG9w0BCRAN
AzCCBPMCAQCAFBTx2P7SH2EDZ2x1LJfQlJU3qWqyMAoGCCsGAQUFBwY7BIIEgVS3
XJRf+DGU+/MSIUdJsRS/aDiHi0lAP1I1vndK5nGdkFMdqasBOg+KgdvWUQWS9fvL
47G885N5P1F+dYu90QRnwacrFBZSM+OG6msCfkgoJNMyRMx/gQv30hzSjgB8hBkI
dpi+DdeTRlPzXIsBZMIY3Ly+KDAqgT5HozTJVlNJDPV2AseY1j05Pp5uvCGSZapl
YmMqYY1MPkBSsgyJ8vBOpFVUZz0b6JEfg8pKIM6GtZzwqMlk5bBHB4ddVgEdSJKR
q/I3CDjcYI/i4m5hfQ7CwsZD5RyvZxbmTCzFoYXHJ3DsQYVIdYkVa7R+QUGAxs7e
rNja0H/6kJFEH9rO1VPEgr0MQdW3dknw7YA9B9KWgtwsQdIEfRj92rllKbn4ovDd
1eSzAv/9jMvsA9mRf/prjSSRFxRsWP2JoTWpbs5nDFilWWKKaAEtTJpD5f/7Qn8N
8w2nRbsOTrM0cWu4IXUQRnuLWOG+VLMMhXUiZUy7V4eBPLGy+5V6cl9RYSGHtYu4
M1P45Wqmr4nJTt1lbZK/ZpEwIvzo+FcwYX2KFmu7JFFVWZFcxHJDWVC86MJSGf71
B6ZSemo5IMLeradzKQLi0q6MYL2lGKZdpm+TWBt+NwQqEEZGdasyb2A74U5bVSVj
St65VlEqhP24Ca8vN9IKn9I/Z+yndBtJ1bfXT5R6i22saIiLPjgCmUyYzMtowqDn
kn8V5ee+FACYPiKkye8rq98kRSWt3jtNked44h4r0yxSIfVDPyg5ASjqvzsYG4XC
we/X+ulGOZu4/iHeKu0KPnLKs00wVQlUffM6RdF9ATo6wI8Ntp2/8LrlpLnBXui9
xOJSW0nmhlrrdSBRk1+OL7Xa6pEtEYZxECuPtGdcOTeziafHBoy2l7N5j//p1uZB
Vkk7uAjQZ6PqxBinv1gZ4lp0DINJkU5QCDQMOBoH2HCxS5vpk50wa8cC1GpYIW35
MtK8tFo/GBvYT0ubqZLzpfEqXbYVrgWYqcQyz1wAlRh6hJqTyg0tfe7bLbHO1TwN
SuXSs36yXgeZJFLgGI4tcmgvRvAWfw9qaAJD7/LEtfzwI1hS+Z3vpNU1pHkXb6Oi
JYdRFYGzZJ/kEOMC7BuQYctTXEkq5XrBJstJ6kfeEqkJfF+Khp2E1KrpA/C8b1Om
BRTOvgL9yaIEpr4qZlZ9WJ/LrKNlZaPgLRCxaSDqJrBcUL6AXQbs48nufbfrIHwz
wdSsksopTxoPj6yDn+oDifrkM4Si2qekwfXpLWIvjrN6wMVeud+NlxPeA6Dviy2T
BshTD2B9iYuoittq2YK+zTsFysMrff52fIJuXovfQBIPGknoTNEcTAmwfCdZGmAy
s3KnvUaLCezgfubspulFWfFIQ92al5MeDAbRBaoiN+Z6PBKNM6th3EeYb9r7eX5g
y0RFO037z3r9/gL2hscg/WXVOBgnvmLzMirLw3ITBEPWaQ4647F/Jj+TRZmMomMX
91e4bQrUFTGxFPXVf6guUCPlF2In0If3ZeFCHO8xvpwxWGaDgBe7KqWJVb9Szm4w
DQYLKoZIhvcNAQkQAxwCASAwCwYJYIZIAWUDBAEtBChdE64A2RSikVio7zKyOuXy
e4wpM4fjvmX8PfwZuZ2P3FUlJ/1CFUs3MDoGCSqGSIb3DQEHATAeBglghkgBZQME
AS4wEQQMhrwH+8PcSlmdkPPoAgEQgA0g+U8GH3sF+VsyV//ABBBfKmBjryzwX+Hi
l6KLp6sQ
-----END CMS-----
]]></sourcecode>
        <t>This result decodes to:</t>
        <sourcecode type="test-vectors"><![CDATA[
   0 1394: SEQUENCE {
   4   11:  OBJECT IDENTIFIER
         :   authEnvelopedData (1 2 840 113549 1 9 16 1 23)
  17 1377:  [0] {
  21 1373:   SEQUENCE {
  25    1:    INTEGER 0
  28 1288:    SET {
  32 1284:     [4] {
  36   11:      OBJECT IDENTIFIER '1 2 840 113549 1 9 16 13 3'
  49 1267:      SEQUENCE {
  53    1:       INTEGER 0
  56   20:       [0]
         :   14 F1 D8 FE D2 1F 61 03 67 6C 75 2C 97 D0 94 95
         :   37 A9 6A B2
  78   10:       SEQUENCE {
  80    8:        OBJECT IDENTIFIER '1 3 6 1 5 5 7 6 59'
         :         }
  90 1153:       OCTET STRING
         :   54 B7 5C 94 5F F8 31 94 FB F3 12 21 47 49 B1 14
         :   BF 68 38 87 8B 49 40 3F 52 35 BE 77 4A E6 71 9D
         :   90 53 1D A9 AB 01 3A 0F 8A 81 DB D6 51 05 92 F5
         :   FB CB E3 B1 BC F3 93 79 3F 51 7E 75 8B BD D1 04
         :   67 C1 A7 2B 14 16 52 33 E3 86 EA 6B 02 7E 48 28
         :   24 D3 32 44 CC 7F 81 0B F7 D2 1C D2 8E 00 7C 84
         :   19 08 76 98 BE 0D D7 93 46 53 F3 5C 8B 01 64 C2
         :   18 DC BC BE 28 30 2A 81 3E 47 A3 34 C9 56 53 49
         :   0C F5 76 02 C7 98 D6 3D 39 3E 9E 6E BC 21 92 65
         :   AA 65 62 63 2A 61 8D 4C 3E 40 52 B2 0C 89 F2 F0
         :   4E A4 55 54 67 3D 1B E8 91 1F 83 CA 4A 20 CE 86
         :   B5 9C F0 A8 C9 64 E5 B0 47 07 87 5D 56 01 1D 48
         :   92 91 AB F2 37 08 38 DC 60 8F E2 E2 6E 61 7D 0E
         :   C2 C2 C6 43 E5 1C AF 67 16 E6 4C 2C C5 A1 85 C7
         :   27 70 EC 41 85 48 75 89 15 6B B4 7E 41 41 80 C6
         :   CE DE AC D8 DA D0 7F FA 90 91 44 1F DA CE D5 53
         :   C4 82 BD 0C 41 D5 B7 76 49 F0 ED 80 3D 07 D2 96
         :   82 DC 2C 41 D2 04 7D 18 FD DA B9 65 29 B9 F8 A2
         :   F0 DD D5 E4 B3 02 FF FD 8C CB EC 03 D9 91 7F FA
         :   6B 8D 24 91 17 14 6C 58 FD 89 A1 35 A9 6E CE 67
         :   0C 58 A5 59 62 8A 68 01 2D 4C 9A 43 E5 FF FB 42
         :   7F 0D F3 0D A7 45 BB 0E 4E B3 34 71 6B B8 21 75
         :   10 46 7B 8B 58 E1 BE 54 B3 0C 85 75 22 65 4C BB
         :   57 87 81 3C B1 B2 FB 95 7A 72 5F 51 61 21 87 B5
         :   8B B8 33 53 F8 E5 6A A6 AF 89 C9 4E DD 65 6D 92
         :   BF 66 91 30 22 FC E8 F8 57 30 61 7D 8A 16 6B BB
         :   24 51 55 59 91 5C C4 72 43 59 50 BC E8 C2 52 19
         :   FE F5 07 A6 52 7A 6A 39 20 C2 DE AD A7 73 29 02
         :   E2 D2 AE 8C 60 BD A5 18 A6 5D A6 6F 93 58 1B 7E
         :   37 04 2A 10 46 46 75 AB 32 6F 60 3B E1 4E 5B 55
         :   25 63 4A DE B9 56 51 2A 84 FD B8 09 AF 2F 37 D2
         :   0A 9F D2 3F 67 EC A7 74 1B 49 D5 B7 D7 4F 94 7A
         :   8B 6D AC 68 88 8B 3E 38 02 99 4C 98 CC CB 68 C2
         :   A0 E7 92 7F 15 E5 E7 BE 14 00 98 3E 22 A4 C9 EF
         :   2B AB DF 24 45 25 AD DE 3B 4D 91 E7 78 E2 1E 2B
         :   D3 2C 52 21 F5 43 3F 28 39 01 28 EA BF 3B 18 1B
         :   85 C2 C1 EF D7 FA E9 46 39 9B B8 FE 21 DE 2A ED
         :   0A 3E 72 CA B3 4D 30 55 09 54 7D F3 3A 45 D1 7D
         :   01 3A 3A C0 8F 0D B6 9D BF F0 BA E5 A4 B9 C1 5E
         :   E8 BD C4 E2 52 5B 49 E6 86 5A EB 75 20 51 93 5F
         :   8E 2F B5 DA EA 91 2D 11 86 71 10 2B 8F B4 67 5C
         :   39 37 B3 89 A7 C7 06 8C B6 97 B3 79 8F FF E9 D6
         :   E6 41 56 49 3B B8 08 D0 67 A3 EA C4 18 A7 BF 58
         :   19 E2 5A 74 0C 83 49 91 4E 50 08 34 0C 38 1A 07
         :   D8 70 B1 4B 9B E9 93 9D 30 6B C7 02 D4 6A 58 21
         :   6D F9 32 D2 BC B4 5A 3F 18 1B D8 4F 4B 9B A9 92
         :   F3 A5 F1 2A 5D B6 15 AE 05 98 A9 C4 32 CF 5C 00
         :   95 18 7A 84 9A 93 CA 0D 2D 7D EE DB 2D B1 CE D5
         :   3C 0D 4A E5 D2 B3 7E B2 5E 07 99 24 52 E0 18 8E
         :   2D 72 68 2F 46 F0 16 7F 0F 6A 68 02 43 EF F2 C4
         :   B5 FC F0 23 58 52 F9 9D EF A4 D5 35 A4 79 17 6F
         :   A3 A2 25 87 51 15 81 B3 64 9F E4 10 E3 02 EC 1B
         :   90 61 CB 53 5C 49 2A E5 7A C1 26 CB 49 EA 47 DE
         :   12 A9 09 7C 5F 8A 86 9D 84 D4 AA E9 03 F0 BC 6F
         :   53 A6 05 14 CE BE 02 FD C9 A2 04 A6 BE 2A 66 56
         :   7D 58 9F CB AC A3 65 65 A3 E0 2D 10 B1 69 20 EA
         :   26 B0 5C 50 BE 80 5D 06 EC E3 C9 EE 7D B7 EB 20
         :   7C 33 C1 D4 AC 92 CA 29 4F 1A 0F 8F AC 83 9F EA
         :   03 89 FA E4 33 84 A2 DA A7 A4 C1 F5 E9 2D 62 2F
         :   8E B3 7A C0 C5 5E B9 DF 8D 97 13 DE 03 A0 EF 8B
         :   2D 93 06 C8 53 0F 60 7D 89 8B A8 8A DB 6A D9 82
         :   BE CD 3B 05 CA C3 2B 7D FE 76 7C 82 6E 5E 8B DF
         :   40 12 0F 1A 49 E8 4C D1 1C 4C 09 B0 7C 27 59 1A
         :   60 32 B3 72 A7 BD 46 8B 09 EC E0 7E E6 EC A6 E9
         :   45 59 F1 48 43 DD 9A 97 93 1E 0C 06 D1 05 AA 22
         :   37 E6 7A 3C 12 8D 33 AB 61 DC 47 98 6F DA FB 79
         :   7E 60 CB 44 45 3B 4D FB CF 7A FD FE 02 F6 86 C7
         :   20 FD 65 D5 38 18 27 BE 62 F3 32 2A CB C3 72 13
         :   04 43 D6 69 0E 3A E3 B1 7F 26 3F 93 45 99 8C A2
         :   63 17 F7 57 B8 6D 0A D4 15 31 B1 14 F5 D5 7F A8
         :   2E 50 23 E5 17 62 27 D0 87 F7 65 E1 42 1C EF 31
         :   BE 9C 31 58 66 83 80 17 BB 2A A5 89 55 BF 52 CE
         :   6E
1247   13:       SEQUENCE {
1249   11:        OBJECT IDENTIFIER
         :         hkdfWithSha256 (1 2 840 113549 1 9 16 3 28)
         :         }
1262    1:       INTEGER 32
1265   11:       SEQUENCE {
1267    9:        OBJECT IDENTIFIER
         :         aes256-wrap (2 16 840 1 101 3 4 1 45)
         :         }
1278   40:       OCTET STRING
         :   5D 13 AE 00 D9 14 A2 91 58 A8 EF 32 B2 3A E5 F2
         :   7B 8C 29 33 87 E3 BE 65 FC 3D FC 19 B9 9D 8F DC
         :   55 25 27 FD 42 15 4B 37
         :        }
         :       }
         :      }
1320   58:    SEQUENCE {
1322    9:     OBJECT IDENTIFIER data (1 2 840 113549 1 7 1)
1333   30:     SEQUENCE {
1335    9:      OBJECT IDENTIFIER
         :       aes256-GCM (2 16 840 1 101 3 4 1 46)
1346   17:      SEQUENCE {
1348   12:       OCTET STRING 86 BC 07 FB C3 DC 4A 59 9D 90 F3 E8
1362    1:       INTEGER 16
         :        }
         :       }
1365   13:     [0] 20 F9 4F 06 1F 7B 05 F9 5B 32 57 FF C0
         :      }
1380   16:    OCTET STRING
         :   5F 2A 60 63 AF 2C F0 5F E1 E2 97 A2 8B A7 AB 10
         :     }
         :    }
         :   }
]]></sourcecode>
      </section>
      <section anchor="recipient-cms-processing">
        <name>Recipient CMS Processing</name>
        <t>Bob's id-MLKEM768-ECDH-P256-SHA3-256 private key:</t>
        <sourcecode type="test-vectors"><![CDATA[
-----BEGIN PRIVATE KEY-----
MIGEAgEAMAoGCCsGAQUFBwY7BHOImiTrgVkiRNnS3EmMdxHUrh+EHeflRSSQaMrG
7NAvf0DDSVt58hvzJz/RuCOE4/8REOs/DZVr5gWO2jOyldClMDECAQEEIM/ctKyh
CrQyBNhBbpwS5ZkEO1mklf14j5NRtwj3obB+oAoGCCqGSM49AwEH
-----END PRIVATE KEY-----
]]></sourcecode>
        <t>Bob decapsulates the ciphertext in the KEMRecipientInfo to get the MLKEM768-ECDH-P256-SHA3-256 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-256-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>
        <sourcecode type="test-vectors"><![CDATA[
]]></sourcecode>
      </section>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This document borrows heavily from <xref target="RFC9690"/> and <xref target="RFC9936"/>. Thanks go to the authors of those documents. "Copying always makes things easier and less error prone" - RFC8411.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
kJbxRrJw+nosf9ieP+ialbcvR5Wovi1nZ39//WVzNjjLWDeHgukd4Kz9tDkb
zJsu1Luc8nNv9GTgtO0obA8KfxOEP/3oeeif+ZiTw3tH71Kkh5D4cbj9Vwv+
TKXc5wvwXnz2RnpKLkTz9NDNt6lrQQ0tZ5xbRfGY3lvPXgPbO3aUFsYfnR4X
Tk/pU7doOmXZ6z6rvZakz7ZjN8e6UP+iFBIOWtFp453+/V7LQUzLAfyHIndO
X9cUbpppqL356wAJnawJs2O3mTL5EUSxteONzGP3Lhkd7KCSe3PQqhC52PcH
D7J3TbHsYAV9X1puibokihOqlHI5nlmL7bsCMm6o6IlfFBq1Wtl6yd8WBoO4
MChXCh2v2lq1ioVWLf+SJGsU87H//tov643m7aQYL9ZRwZl63chYW3k9vxIW
pd6zkl/564fn4sO0anSVpC0tx4/F5mD8ahaW151+xSi03Oh83j9/ntz0psla
fnJ6t4t1YK1XqrB8W8dyzyvHyZMUK4k8CGZxZfhUv+s0m1HHP3+6D5v9PPOX
/QLrVG/qg5tW9F6uVW7D1bW79BaC73vK6/S++tp8kHq9l4reicpXY281WM6e
Zs9Rct1l7f7TcGKZw6LfuRn7q4LRfp4M3p5fgzUbSsLyMSmc31ZX54/1G6c1
cJXlfHzenLgT3VvfLVuD69p8/dapOf6wZYXX5drCfXq/9cctr1QN2/JrWRgX
w0YzGRfP+1VvrNVelF6hM1gH9epspbzMfPXt5m39+lJ5ZqwaD0I/6Pr33fnd
+vXOLVavk/q1UOtXbt6vhvbylZ339KaxvJlcNyrF/vV8IRV74bs+u73qstnL
w+1z+DB88t/lkb2wqg+R9qoOrd610Jh2bqPezataebO02/HVYHjXfHssXF0p
q3Pnio2uF3fvt1bHXT/UXidKt3c9ar3Y8jA/Kzaq0rwxFWrSW1R+nVyxVaS+
Pef1xs3dc9mvjSZR89zXg/rqfnzXuu5J/Yf7OC4+5Jfz+at2ve5VGoU7dVn1
hddqp71Unuv+eXPw8j7pNlaeuph2htpt7bGQzJq35+ObwfpONztO6WF+/3q1
jh5fhiv9qTN+mngjV2guaqz/MmuWXoPmW6W3eA/vO6vnjnHfnlwZ6vzFe1vb
i8b8baWv+uvXID9aP9/f+v36ne81kpv7imA9lqXYeJsXO3EzmTy8vw5v5dGy
ddfxav3xczmarpva4tGvrFhl9VibDK6avVujc+e93IZG2GE1oToJ14p7697V
BnHNHa7vWs93suNfLePKuT8qvMdtFuqw/utCvaIPn+6jG69zPpwMVO8+6cq3
THh0/EXFH0p3j+1muxH24+K4/n5VafiB5767THnze4/Xr8XErxVu36rOoK/O
pOurRf9BflgNWSUWSje3hdJTwXl+u2+tuq9t2WiYnVqrH1n5V/bYb3Uavbe8
X8y/mc2u1pvPn91OKX5ZvcivxRe93rEF6Edb3k2aycPI6bNOW6oXjeDqRl+O
y+BwIS3vFoPB6HVS8p3b9upN1Xut8O1lVV6FK/Y4CGVBdf2pYc3W2tX9/VN7
9Xj97JSGzuhuET97zfKdLU9Xo9ivSmpp4q4L41q8WtWK40FjNZz03F71RWi8
jpVxsd0uX70XbvLLuj0OSm0VAbHcKEhh8XlizJVakG+azXprVWGF1l00eX3z
lonUGvlvlaogV0fS8L4cJlr92nthV3JcyD9aoVIbMONayr8+6cx+VFrX1y/3
leZ71LAazjLS5/FTeZQ4U7cqODeTWb7kPVqrt5dSe/h6fl9g8+FDpNdGklN/
kI3X6tPVS/7R6LbiGetGbivsPTWnpXrloaZajUDwnm8W127BeSkwZbDquH0f
epXYODaDxuLaN1utgqovB9fm66s0HrQGZt0rWPH94LHAruvJzUzIV3vKY/9p
fFvpNkNWi/Rmr+uPHpujWnS9rjw/3Nl+827l3pak4tP87W38onq3My1fqVz7
78V+NBfcSi0YRp3OWy15HrrtVqX4fPsyL3fO7+6nL52mvJbK9mI9kZvm88uD
3Rq9sGIiPTlRtI6i5mxhCP1W43ahVl/uk9fJ7XLwNlK92vv8Llr0i8p5oSiF
T/lm4+6t6z7Xwtd69aGfOEZcWIx7rxP9erawhO5VvfAkDcYvs6d6pdS5CRdP
3eay1ardPZVb6sL1reD2yUpW9Wq9GV7Vo+Zq7p5fRzdW8j4rJY9DoV9zxh2p
UU581l4uYYfP51JT11254VRunkPWXRQb9+2Ry26qD9V3V3u4j4ZT7SVOkrHT
LBprgT2/hY+tabtnlkvr9/pSadev3ofML5bdopb/y1/SqIbM6ySm8Tzsd4ZN
+jrPo5d1eDKx7ft+FFdlrSKXrEq5pMgVQ5ZUwzSKpq4UbbMk2Zqtq2beNvIF
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
IW6rFFJh2DaUzwKTITd0KNeAsFUoFymjvk/SIqE3Cw8bmz/3fRcH75f+BNWI
RrBYSUL4g/cjJwBOwd6QOOKyHsDYEU9tYAPiOuweeKn6gScjoQKYAa4EHREK
odaHoVI2Yx5ZIW2fvXlKgXZ7MvOoeVstNnaUf8IZGc6+XVMPfNv55o3vs3TR
445x+k1vxXTV2vbFYn5aMWHTzUmk9AwkpIwqKTveSS9yG1ou3XV3fDb5QVuU
TlBs+qEVb/BUv42ea8Ol18x3Rp18lw0Gg/sh3Xvs1Ar5UrVY6ISjweCuXBgk
r8NRWLVXUqHYzTeF/HuxWGg3ivlOMV8p9N+Uttm7VsqlZ+VNrt8EnfHNnfr6
8Lpu5KNqsZhU8527SmH1ZBZqtfLgvqcKjzfd4LxUvTu/avRqd/5N0u1dOaXw
OpTG+bZck5dT/1afVv1RpeG/OkmhNTi/HfjLh7vOQ88OlnVBM6uWpTf1tlw5
958WttTpTleOF1cKz73GeatqTJJiMBpEN83Gutt4uxp0lqo0fO+9DArWsDCq
Cf4sPC/5rN8dt98fa0nhuVF7Uuvr89tS/nXQ16+j9/7N/bh5U2rfK/mEPckv
kt6e6Ytlsdp7dmZj4WnSeH16khvtUaGXDNY31rLQmlXu757fJde4KQcDa3Zb
axjV+fP76rUxHulu4bqg+f79oOz3bm67wutVTS2WXryn2lWoTfRh0DGLq+S5
pHfXy+c3d9Ivvleip8frG7WUdJ7ua/7T6N4xu+edu2r+LTGZEDdfHOn6yhjd
VMrXdtyS79vlQSw1Ov6D6o+mK/Mpbxfs24fBfJV0/Fo56L7YSjwe37pTLVqW
fEFmvff88sp+aSyTvD3pBlez+KXX61beuslDW7mJ+g8zN9GnpUo4fni4vXXy
5Xn/ZlbSgyuzM7WagrVSpl03afXjhuQ9LLTa4x30sKg/tKrn9/VGY/h4Fz7f
rc17jRXa9er6XL83vLHdfepVr+dPC01oyG1Nf3idxNr0pj+Xx+7z7dXzrLyq
Ld+j84q3enpUbiuThXlTqdw/PFe8t+ub0sN90TIaN71qYMpCwXjusUmk1xp1
gKT/ftuph9Kr0XiqK+Pq7bM/m5z3Hwrz8+aq81ouP1d9J1m7St7U7nT3vnf/
IvTmhn4/Lr8O24pWdKxl067dTu3a1fP5euoX5jeyGzz29a4RKkri1MJ6+2VQ
nNytn94b82j1WpoKo6l1j8T4vJIvPrXD29GaWfGrbY26vYe5+jJvjpivaUMt
ltZvvVpwX2qvB3q+9/K6fE+eqtpjUVixq8fzxbjael5oV+E1u11It+1p/TaR
pNV9Z3wXBA2j61fsfD8yVjWrOZ8pV1Y9Hs/q08LjIrSFt9ZN70GaTobjOPZ7
he5IPm/VzUfHmJXn5afnt3Jx0Z5Xfa/VZ++hE1wXorUyNpv6y9XVTF48F4T7
0chc5F86z0b79a0QTpfy4Fkbz6RSrXkzutM7xVKn0SpE18p18a2nL2cjXVqh
Ii/K1dlT7UHVhcb81ppXoqtqYfnUlxbu63P9fRaUXx/dp/t48PD06nXW7/Iq
P+4OjeHNa389kObIt9y6e92S+6um0Fs89hLVWD8O2PNNpT6o1rS5Nxksu8v8
Q7CyX538Tcm8qpfnwfuqJg9758/qcta8k2fXo0fXaIXCzZPfrTxV359vrkbl
VqNoFhadJ2/efyyPXvXHuHCTzG+MUcDKr6OboHJ+O5wpZfk2nuWvipYrtyZC
odtvLQd1e+3UyrNYe30eP9sPN1f1+LY5fnbag3q3+Ob0Sq83ccG7qxv5x46b
aNZ0EbhBXLtevQsrv5eMkmjWf4vaL8a6ND2PSmEQjxpaL1Re2WgVPM7qD7Xl
S9w0Vo17tvDPm+O3NssbpWW4VvpCIRn2S0rBDp8WUTifvypPt+fv/aSyThpx
gGwqqN0sHqNl0CnU2tXRNOo3y14/P1kFRf+5OsmvhUS9nS7vnHqRvQ+ChZvM
FuPKQ1CpdVADjPUGK+XdbsGJwuY5FF24bTaM+VAtsyfXjk32qA+EtdSttCTV
fFdj+2pQV4aJN7h6eLxvFQbT5aT+3gjj+kqt9Qvl9oPTQSFtVq5uXs773edJ
I5o0HgUUq5rbie8q/epbpf14HxiDxV2xPa4otalUC9RnVilet6y35Wz19lB1
SoMCM29fH27uXbv3PtFWQqlzFJXeVsV8L78qrp5unmrPtfzDXakAFCoUh37Z
0PJKtxeO7sPIfL9dtxaPa4Fpq1lDC16Wk0erHayeF89KW63cjW+u5GLlLlEb
JUSk3mu1V3PVUqd8ne/nWWEwHgxHg8Jzp1EW8j1tVe50GsN4dX1utb3eeOKP
2u0oPyh3BnlpcH5nVa/VpHJ+n6zvr67yhUIhuJ0UXuL1++rx/DoUxsZtfWYk
nV3rdht3eQ7ST7/aj4dsn2V5w4eJryiKkiirtvZt960A/F09+o4bWf4mnr72
tT0PJtKvZnJOUxFZVERLw7L8NJYoi/i/gX8UlU7KyCb2M03M/Sfpn/leikxX
VFrtgAZFp01k/kukas1+uVruivQLJxSLclSLX++V+3ysqtA1jV8T/0lLF1aN
DRP05/T9tb/7hFJVVP8O0+mKYpjZ9APSdHVH2hF1Om2qSJtbYPJQYLImVmSx
ZImVslgC1RV6S1dSRcMUjaJo6qJSFG1TLEmirYm2fjhZNcW8LRp5sUC/ycOk
LzuSt1sdUGhJdMna3PuYe+wKpnX8D5uLuv13h7ulf37DRZtkpKubi61iH3Lv
9bu1ZvVwiq6JBVPUi0S8XhErlqjK9HOlIFZUiJOUrZkk2gK0rh1OLkAWmGCJ
lilaBRoE3agVUVdEVRcLZdHEzLxYNkQTi5YOJ4NEaEUukYDyBVECd3lRqohW
XrQg74JYAoeQtC7ailg5kivIKxbEskpUFYpEqq2Kps03l0WzTHoBRYWSWMIS
R2RDc0VZzJuiUiDtwoKIYJWWswyxnBcNkKPQKpoF4z2crGhiSSXz1TSxCP1X
iFoJ0jK5dRTpb6ssSpJoFmGrR7Zki5IlmoZoWyQeCeSZRLlmkCzABRRhcVkY
WF05mmyJpSJxi5lwKVUSFS4qtUwayoMozLHJnrGWZh9OliAknXYGY0WT9od4
1ZKo2jTfLotGmZaGtiFt40ja+Ty9TWwo9PY19oT9WyVRK/KdJRJeQaENLFus
QFXS4WStLOY1+g4JmBokjz1laM4SbZl8yVLFYp6MRJFEeIJlHFkYtA/KJTFv
EW+QShmGJRHDkklmp5eIYQgMhqQdqQqcYBPYFqiCI0rcVCFCQxKtilhW6D+w
DXbMkiiVDycXFf6fIWoq7QnF5itEP6wF9gzm4fZFXcxDFjokemQkpmhKYrko
avw2zIjsEfCkk20VNG5bMr8Lto94hhhKkFmRMKeUJ2CBkVXy5DBgB2YHseE6
DYNQ1aPJmmgpZPcS3xwj4N5QO3wTUiyXaEOoQOLWah/tjJklzhjNhEo1EgzM
rlKiDQs2WYFi0w/AifyReWL5Uok2LANSVLKzSoVmWkXuqkXCzJJNLHB2jlyy
QCYF3yKrMMkrga063xlig5CBJwSkZWLbME9sG0PzOn3XBIwUAAJUgkko3Ejt
fKZCIgcgdUQ2iIEbwvXwNyBBg8DggGUy2wJ3KUAX6cwi3zCPHEOWyHXNAjkt
SCjL5Jt6yn+RNE/hgfyJCCkUjqCXGzA5cJHDmELk2ZiTF02FwBhIBtvEthhW
ONrZ4iQBtAg3LGIPQSZvkJFCYHAV0A91kNuW4AinuG2QqAlDsG2R/BGrgCJc
Sf0BUoSpE+eFEwAEYTqXNpYAYsHmQDCEjCu6RDCC5eA8AAb5CIYQQwFDsL48
B12wCrKBQeT9Cjd7rgVTJTuTjsiGu8Iq82UyKfgwjBw6h3nSWiX626gQmEIR
QBjzyJ8JADRCr1RnpDadsAFIjmlYTi2Q/iA2Hbo8kjYyG0AfUIreRUkhVubo
q5GFQhGSTZJXKrRN6YhsCa5bIcpVDiDwBOJQIyLhlamHIgxoFYq7Zv5Ez1Ag
wAAmbVn0EaALGIN72TY3b4vCEDzMsE4iRh4ebxIMwsgBPTASfISFwr0QnzAT
a0H/eR43ypUjngsknlKFFA6vgAigG/APOWkl0jzWQkIDpchY5chIECIBIzpP
H6Bw2AaYp6Blc8e0KMrCCrGWTNo64lnn0IsdKiQYQF/ZJoVhss3NHlaEdUEL
VFAunUgbXMEeEVbghiAVJg1rhYZ0jmdwdSQa4KhEdn40mSch+K/IQwQgoQA/
KRGpgLdCnkQIacEEQJ1+ZGEwepgknKHMTV/n6kWsQE6hY2aBg4FElkNGeiRt
pAywHoQ7AC1kY3P0kmWaDACCzUIdoKjAY6hePLJtm+wO3BJWmhTfJYOchIjn
15EZYTIAEIIsHYE+RTOZTBrUqly8CJQIOgbPKUALOCInM0kK+lGIRUJD3ObJ
ngnxKPHgUapMSEARl1+HwcpI7o5wG/ENURLQpxVIsaANgrG5woA7xAUcXiOE
0Al9jyIGNGmT98KxKCfSiAoYGbcnWhr+lK6LuHEMgLABQEeF+7DOlQz3ALBQ
smnRBPCMpYsVgjfpKKGxOeiY3PsRXGyewcBUoDCYV7lMuSt+Bl88RB+pqkhD
NW5JRLlKqQCgXy8TKsKlCV6RmUi0h3VkYbSDQo4OU4E/wCQB0RTAKiQkg6MC
xboKZTzF42RdJ6DHHIVDJDaB/CBtjIZJA4ZUbtswFQRg48g8YQl5hTCAUi6Z
pIW4BeKRkAHbEPFhoWUe9AFvx/5s85gCiNJ5ggsLUTj/ECHcSDHoFrlKntK6
0hHPKEGgD3gv0mk9rQ64S0L4sI08xwZkFhUed47JxoYIC9AqEK9Y5im3QogN
uMvz/AZ3CxxGEA/1I8eAMiEnsAfyAMAQAUVTnXuFxN2TG6/Bo1f5CLfBFdJU
cEsBsUxZF+wMXgnxQE4Et2XaANAPYFCOLAysIrJDNsRhkQAcFoaACJOW0xqp
QtfhbST8o50lDgMEmhqtAjmBVaAKHJiAnuMxZAb6kSsppzBEJskBENmtzsMd
YgCSM5v6AAS62IACCy4eZwYlcgYwWbRI8hIPqybP4BC3kMFDefANmCryQOs4
J0FqVyIAgrbAbVElxCO4LlP6SrUUT9ZBkUVR6ajGkMhOJC4esiSLIiPwHVk7
foDxFHg5hrQcKYp8nHtK5OvEtsJRrkS+RVWYzbUlkYeWueZgLeWjhEbjeRCQ
BDk+XA8pF0ECL+oQFgF9EEeJV7EwVeWIZ4A21cZ5QgXQDyFDYQi68Bbk4Rov
0wye7CMzNI92BlWgnFyHx+c0LFNdXKEVK1xyZO08AJ0UKBKNgDGT31uENQrP
DGASFV7dwiWwdJELRT6qMeA3xKpBpo9MGeEyLcSBRDB7lSdhoAhghhh0XCYg
jwK+oFpGsolYAxhHxIadA1JUOW0ykIWCLiyXPy6+eVhR0orM5AbMOy8WXxHs
UAbHq3CYpyqfWBhqSWwCr4a7w3vglVgF+T64zfMCDYlCgfcvikcwZJQFWYFG
AEjbrspe/wb3bHGvd/XDNlz6h97JeQjnw176BVefdOLgCtbXj6b/hn0hA/GD
zpaq0D39gKYDeg3iRbR/H737Xy91phBtnFogIfWmoETo/VNKefdL23a/vtOT
KhHS5HkTBUghcwSzud4AIqRZ3nFQeRCpHNdzBbI6gCVhn8kts0yWgdiHuhd/
y7yApQgCzzpKpHSe58Km4BxkRzqlEKr5AUe/nV47vQSuVYX6evqm+blTgKoo
ewo47fb5H7dmAcJfMVmlfqaayfJgWVXf1+tPaDXTKT3W/kSlBu2o8d7sB81V
3OJtTeUjxRL2IC4jtalwNCFYy/PKsURpAbCmbGGFT4xYNn5W8liC23rmm9Sp
JojjIRMILFfILgDCuKLzmg/og3S4KH2oM96LlY1vx9wcGUuFJw4SQRoVfzy5
wkVgEHJixABYLcU9kyBdPtnpmI+jz5uvZ9v7jVIn70v93Bnp3YtbP3pFqlu7
z/fL++9IVcv5QTl/8sj+ulWbhP14cD8Ku81pTy1PGv7b9V08PC9fs2Dc7fU6
TiOuCmYzvwykUql3P9et4fL95v2quyi2ytqV1S23kqvS832sDx5ayktrPfaL
40apXMx3yuVa48qb366HQjHurAvNYcGdrXr686jckiejcSBrL3qzO1+9qJFb
OI84da/VXkOz86vy9d75+GOGNgfk9760aPP7onfnzz/9zRL0tVTz7Lc6fC7v
gyNEFz8+3nTxHzicRFdL5e721MfvOqx08enZnexlwX/n2Z2LzddC7Q7UnHxD
W/KjIzQX2bc2bb4wi/8GV66ebPxHtrx9ETXvjabRasz8wST9DS+Hv/LYjeKY
XisdMmcZjtebLzD5B/7dEvQrfbOvK+QXbNXgv4Fu6ExHiTiINt/mn/5S9uxX
nNFvStksn1yKX4rRbJ3+bpGVs6bfWDvi+qXfb7b5YjHagn9fEqPfBEvf9jNl
X8Qc/451TZYvBeH/AhmG/jUCiAAA

-->

</rfc>
