<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-cms-composite-kem-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <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-03"/>
    <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="September" day="18"/>
    <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 Module-Lattice-based Key Encapsulation Mechanism (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/cms-composite-kem/draft-ietf-lamps-cms-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/cms-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 Module-Lattice-based Key Encapsulation Mechanism (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 in <xref target="FIPS203"/> 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.
Composite ML-KEM does not provide pairings based on ML-KEM-512.</t>
        <t>All KEM algorithms provide three functions: KeyGen(), Encapsulate(), and Decapsulate().
The names KeyGen(), Encapsulate(), and Decapsulate() are taken from <xref section="2" sectionFormat="of" target="RFC9629"/>, the specification of the KEMRecipientInfo structure.</t>
        <t><xref target="I-D.ietf-lamps-pq-composite-kem"/> defines the same three operations for Composite ML-KEM under the names KeyGen(), Encaps(), and Decaps().
The two naming conventions refer to the same operations: Encapsulate() in this document and in <xref target="RFC9629"/> is Encaps() in <xref target="I-D.ietf-lamps-pq-composite-kem"/>; Decapsulate() is Decaps().
This document uses the <xref target="RFC9629"/> names throughout, since it defines the CMS-specific KEMRecipientInfo processing.</t>
        <t>The parameter order matches between the two documents for KeyGen() and for Decapsulate()/Decaps(), but not for Encapsulate()/Encaps(): this document's Encapsulate(pk) -&gt; (ct, ss) returns the ciphertext before the shared secret, while <xref target="I-D.ietf-lamps-pq-composite-kem"/>'s Encaps(pk) -&gt; (ss, ct) returns the shared secret before the ciphertext.
Implementers referencing both documents should not assume positional correspondence between the two encapsulation functions' return values.</t>
        <t>The following summarizes these three functions for Composite ML-KEM:</t>
        <dl>
          <dt>KeyGen() -&gt; (pk, sk):</dt>
          <dd>
            <t>Generate the public encapsulation key (pk) and a private decapsulation key (sk).
<xref section="3.1" sectionFormat="of" target="I-D.ietf-lamps-pq-composite-kem"/> specifies the KeyGen() algorithm for Composite ML-KEM.</t>
          </dd>
          <dt>Encapsulate(pk) -&gt; (ct, ss):</dt>
          <dd>
            <t>Given the recipient's public key (pk), produce both a ciphertext (ct) 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 Encaps() algorithm for Composite ML-KEM.</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.
<xref section="3.3" sectionFormat="of" target="I-D.ietf-lamps-pq-composite-kem"/> specifies the Decaps() 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 or the content-authenticated-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 or the content-authenticated-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>
          <dt>encryptedKey</dt>
          <dd>
            <t>The result of encrypting the content-encryption key or the content-authenticated-encryption key with the key-encryption key.</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 provide a security strength (as defined in <xref target="SP.800-57pt1r5"/>) of at least the security level of the ML-KEM variant used, as summarized in the table below.</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) identified-organization(3) dod(6) internet(1) security(5)
    mechanisms(5) pkix(7) alg(6) 55 }

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

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

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

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

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

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

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

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

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

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

  id-MLKEM1024-ECDH-P521-SHA3-256 OBJECT IDENTIFIER ::= {
    iso(1) identified-organization(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 the components of Composite ML-KEM.
During encapsulation, the ML-KEM component draws the encapsulation randomness from a random bit generator.
While Composite ML-KEM passes this randomness through a KDF before using it, the peer holding the decapsulation key has still received this randomness in the ML-KEM component of the ciphertext.
Any information that this randomness provides about other outputs of the generator is available to that peer, therefore it is important to follow the RNG guidance in <xref target="FIPS203"/>.</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 S/MIME Module Identifier (1.2.840.113549.1.9.16.0)" registry for the ASN.1 module in <xref target="sec-asn1-module"/>.</t>
      <ul spacing="normal">
        <li>
          <t>Decimal: IANA Assigned - <strong>Replace TBDMOD</strong></t>
        </li>
        <li>
          <t>Description: Composite-MLKEM-CMS-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 the 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="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 Limited</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust Limited</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="1" month="September" year="2026"/>
            <abstract>
              <t>   This document defines combinations of US NIST ML-KEM 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-21"/>
        </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="October" year="2002"/>
            <abstract>
              <t>The purpose of this document is to make the AES Key Wrap algorithm 
conveniently available to the Internet community. The United States 
of America has adopted AES as the new encryption standard. The AES 
Key Wrap algorithm will probably be adopted by the USA for 
encryption of AES keys. The authors took most of the text in this 
document from the draft AES Key Wrap posted by NIST.</t>
            </abstract>
          </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="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="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>Use of ML-KEM in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="J. Prat" initials="J." surname="Prat"/>
            <author fullname="M. Ounsworth" initials="M." surname="Ounsworth"/>
            <author fullname="D. Van Geest" initials="D." surname="Van Geest"/>
            <date month="March" year="2026"/>
            <abstract>
              <t>Module-Lattice-Based Key-Encapsulation Mechanism (ML-KEM) is a quantum-resistant Key Encapsulation Mechanism (KEM). Three parameter sets for the ML-KEM algorithm are specified by the US National Institute of Standards and Technology (NIST) in FIPS 203. In order of increasing security strength (and decreasing performance), these parameter sets are ML-KEM-512, ML-KEM-768, and ML-KEM-1024. This document specifies the conventions for using ML-KEM with the Cryptographic Message Syntax (CMS) using the KEMRecipientInfo structure defined in "Using Key Encapsulation Mechanism (KEM) Algorithms in the Cryptographic Message Syntax (CMS)" (RFC 9629).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9936"/>
          <seriesInfo name="DOI" value="10.17487/RFC9936"/>
        </reference>
      </references>
    </references>
    <?line 391?>

<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) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
        id-smime(16) 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  -- [I-D.ietf-lamps-pq-composite-kem]
      { 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 256-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[
Hello, world!
]]></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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
BeUZgSfNhKbQb7rs2Rsvk8k+qM4I5+vdIKTL1AOM9GlpHcX7ElL+EQlt/NYP
JbRr1ckwtQZIKUn25bPW6VqLm4z4QBhbYR2b0obrPQHtc6v+I9yufdGPucUy
+T5dsR2Fou1y4kT9YyfMI0MmdTM4gGjFUteIXIQSnDF5ig1jyc6Q31vZ7S0B
f3qZd9BrveD8PUu+9RCSpdJypTrJkiskPBens4K9lTIfIqTNQ0hhW1n5VHRk
GjzlY0j1sVifJEEW+zOiQCvf7Vl7i2j/7iFfe2154rNvRkemCP23NrERNvkd
Ujk7R+ynPnYnyUlmbMqT9c9SLkR9MD2fTqN49gPxXBBFUN8OA3zRF64jzY5h
r/OLtU/PnAx13zqeE733s5N172ylus/r7ro1XafyVctlvNsK69VH6OT7sgRE
9ozF2dKYwmx/YmeEmDpJF12ps8CC4IAr2F8TPeP9nj9VsYOydop2u4BeB9KQ
jfzk08R44CxS37YNuOulIWLor9/ECVvS+vCvX2iX/ctvwgIZAhUBv4k0epLW
frKL4mQ+dln8F0rw1oxJoCMOfbSv+qSAjZfbDVEeXG6axHPHs41Y6Eyb0Eed
91SynY9si9bA3IEFpxHarBaTVFa8pLgeN064yDCbN8uY24kFWRTwMxWGyZ4Z
Dv3gmEQyY6SnFGc4pNfUXgmNiGcf2cKQqoPFbbvy2gbO7orlr6k34t4fxnAy
MV57cD8MeNpGozqpp8YIW3e29t6fInsnC8zWOFymu+Z+U88VdoqaJ8m+4XRn
vtgy7PXyvXuTu1R0I1vXy4fVqtC/BCWXA8jyktpfIthSc+Ihcl/hjsStrsQz
aHE9iWXIHO65ZBNHd4whvZta5nblwK1ig9GsRkL1mlS5GD0ruyS7sktrbTxQ
bGreG63HJ+QHzazFF5GBEzfcwS7ZaMTRNqyxSX82WJsT0tw1cIGfw6hAyPZm
bEZJ8nxIZtGcZrl3OJli3ZKFCMySrizT+LSu6p7KEQhWm2KBz6aMF692a8GO
iKnS5ByJZnSwztwWGkYOsiRnsoJlvM3DmKULhiiTKO9/JXQZ2wku6l5w4TDn
OUe4s9XIz6qk9ICMjQYhgWXsTPfNzjkU2tZrz7NkNrv53xSnf8JkcqXu5SMo
zbBPkFRVm6qF36F11yhYgp6XxOznPQiv2djIoHj280MofjbYLj6z+8yHtWcQ
xQpvPpqR4tadM1r/G7KeTdZ1jH1et2HvDrEF2WWOnmrQYnaVk5TMHJeqn2lG
9AlJn9TsMyM/CpHpdgLPKe63BczCumaXZEnD8Xg7icI2dU490U4ldFP8S458
9XfiflYIXxfpnG31kQ5pkEsRzw5zg/2d0t9++8rNeyaOmJNkRcq9EubaE2X8
LLAKd9JSj59Wrtcr8w1/JH1a+COTgMSqwSd8pgDMwlSUsEO//Vl69hsvDabz
zwbZUm6buKSz95FppRF4HE7C8Xx8wiGxk1L/fZDg3pgXoGghADNLgtUm6lIC
yxENs51yMG5sdY+agwKneZht71NK3HsksMm2jPuJgn425At/3xxbE7tr5Px9
3fAhG/HvnKlWzMIx3/HbNuyuxvDHMRXuYLOlraFt2wh/p63dgz9H1041+t71
vTbgQraVSxd54M7V3dp+euG40f71sz9//c4U5Ic/mYJvGPALx42+d31/CqTb
vwDElzDhiPBMJzj++uVIfUdw3PiirS5rfA8C+bpAPFUz0DtpSEdM4vkbxSVa
p61p4zlGQuimkzWjVYokF6ssygUokkFQ1CKt/xE0x3ynC4kD93NX5CU3NQme
MQI4l/nvZYzpMoXabdd/4XqjNisu7o1Wek+PG5GNZRemvKi7rgiCin//938X
pwmbI0+JfCZQs7MES7ELsXpXv+AJxoVYowNAf90d42x3gm2Hrzs9MHLm8Ld+
41Ah2c4Euu+knFRamFCfv6S5f5hc0LolTH3VB4ujy1FqMVA/uYwvX1IHsEMx
sVnbjpnslFz3NgpImDwjPPIw+gkPE/LVxC6h4SRNBcEPtLvdcj6q7XGKdpZC
J9MhhOEgjMcp27V0Z2uShAmv3OzG/O/lv7s+i29S7iwZP1vc07IySc+L0GJE
oTXHQa0NATSgcvt2L5+f595dkfLVYpVK4xM2o2XB5gAS1hw7S/mEmPZ2y61k
KYz56xXckRvOao474ozcNK3hotoZaVMP+mTVvA4V+4cTPCeOVydzne3QaVQ5
CMA/rFhmSujWq/WSWHCmjhuOYKmQVW4G9Lrz72glGYdjdkmVG66aTaXpSr9a
V5voKNzBLhyfam8mZzMT7Y5OJtGcdh0cQvIsxJIIeSDPU3cyWy5WZB3da054
uIdWfuY8y5GvUhMnnPKUK6uwYbGUhP3JTxQwU/c14tHzYBpKxcOJN5r77Mec
pQSnvCWbDP6wSPtZrWOnarWtc2SFof1pEf1L7ftSo1ACxKbwKdQ8y+y/M2xa
lMuY+ZmqSxqG1pNi2cJX4pm4fzjAek3+6UAH6/zMAdHBENrSSNlK6+bbdfsa
nbuloHRHfOfKZgEJ17h2OgcU7h/i4Wa1l37/0KguDkoW5B92V3V/4WdJ+MCk
o6wiRSdHUmvn9hbS3tu3NAI6yYROEIni5fHzJ1ygdA9rzHoNF5AlXXa6OUXS
rMvuTU7lC9Zm/rZU6InVYqnRq5arpY747dtfxV/Tk+dJdCZ/3QrJv4zivjMJ
PzjMz9Svoh/5Z8bX9FANfCe1Xq8wzvT09O14fRIuwRVxOgzfz0y+8UEddV38
7QSJqmQqfxgSjZMkapJt/GFINI9JTI+x/GEotI4ppOM2ly3KTP8oRNqfEala
2h+FSEP6hEg3Rl4xjaIRiTSW/zD0yvv00jrqj2bihnKCxj+e5tXPqNyqHuT+
gVSvnSCYztT9YQjUP9W7rvxxxJgFoMvLo2Xo1dAPdsP8yf2VT6jPKM+e8xgz
2te7dCN/dabQptSZpUlfxThx/CQ8k2VV12yizEuIfvr/pX1mr3vzhP9MNlKa
wbNifU4zL3SviXaQ835G4GtEz0WCzMtwNr+cEV3Z42V8qozG7YMqW6mDxH60
OJMlfPCSKCaS6DmT7XMMZ9pXceuZdkvwn1FDlGoEGF4f+GVbiCnQUtdfn9vL
Uu/TN0nxm0dRfuaU4jZBzHZQaHG6SisBYXJwNHJb1T+5SEc+OaNNtpPJ985x
mYtPCvQX39kEuACA+LMCu+X/zb3N0Zuf2nBpBtkxMFq7XvDj1G62QbR7qIeS
ZDYdgM2Ynp+YbDf7luGUDncHVOpAUn8lFMPEG0XJ/DvrqN2RPX4CLtsGCbfV
ZKzQw2zHDDRlDCdruW7PlDjZmd3jaX+vUH/P1sqPqaYrTpJEXshLPZutn/X4
v4fi76n791PtUIEfC13/6JzvDr1742xpFnK+vz2fuGdtMRvxtjAXmmu8eSCO
H713aVE1n3yydZKtofffK7CDEj46LeVxJwb6onF2NiI98893TYmB02ciT23W
phWebE82nDg+e5vTZGmVc2+ONVl08v6s1WlUEn6or79z8BHDZM+UUNFjCwus
pWcjXleYRJs4dEU7Obz4lM7Ce1Jxa8mcIfxNuiWRbclgOGc2428e4HLEAtin
OueYTsMzJwnTDZPNApYPTETSmbIwjibZ6R5n59BFBrWE6NoeyrgAgfTWg3WZ
IuWCHxkdkwkmjJd/IMUk3JRW0hM7/MgwfwxhW2LbG3u93w15bbaqpiymbem0
FMTLLrzEw9639RAMlTIvOn2q4802drbe+Tql2OKc13v3sHCxu7GzfT7Aj53l
KeSkmpnQcRBeKnTWuqKy/gYOVGahYueJRyGS9Pw2HWzZDpWd3MZoVFDOjg6n
VdIwO+w0ZRDPIBr5ay0cn5Id8Ic7QmgkZh4LF1yh+xOFk9PsZma+e1I5N1nt
nQ/IztHsj5dtiybZ6YF0vxGfeEU8G3QjFb7bsHDCEd8+5MGTwAfGOItxynZa
qg/HVH+jot5sfX4uPfMF/Pbnoe/w4+17D69cnTh/ua88ik77YuObKmt6D0/b
UvOTZ7d3wzmVvNJ3s9DzWMwnJ7k2eT+EIqiwz40B8pzOY9DHTqQG2+etoLwF
4wdNDs9mnJqCF59HXsZPQofaGVcC7SCE3IaohMkvfSGnLFKKO6Etq7+kl5cU
lmB10TTDQuaU10ryWfqg2WenRYA8moXXaSGx68NzunQweuuvgavRbMDBzve2
qPi3y9buHBkhkG4wH6W15w2V6y2dKT9Dv6YVgccj2cEQuBvcozhJ2zsexa7R
hTifjAjCiEajVbKbxdGG3Lr6mGzPj+0Ottyczv+MQOg4e8R7hFjcjyJgae+p
zoyS9Ylggl+fH5s+AjHZNj1WxDfCOWChjMSjnCt7OmQzlrOIQj879hcmw5T4
xXxEhGTl5+zUXtqfy3gnPdk7m5DZbwoeMoZMIZAaJQAOZ5lelsKPApIr4HrY
RjNe/s01cofpd1YGhuSR+fMG/JzfGwCd5QmUifDir5MFwc2+zJduvbrN68mw
sj2G7LG46s7ZNflKucLa5CpdN13JV/jPuJK+fsFkfaxD4tXmWHl64mycjrE5
G+EkE/kyvcj9y6VIR2FDRL1vKWO5JN2mEC/FP/+5w9KzWb18sd4s/vnPaXN6
sHGavqlgo9l0nXtJz+MokmKgN1Y/mGdn4TEe0SuY6GU+1IKG6mzepvQtfQVT
MTsbJgj/5HDTHjvx0I+Wk79+cSG+4Ze/pe87EEvFaq/Z+Sa26AAKr2mv6dxQ
BILFvcN3mSg2u4bZ9yzxcdZ8U6H+NOkgW//pTa5/uuYc/C17PN1FZCfwpKRk
mk1Rs6sSIUU/bVbAXN/X+yPJMRvrx3Y/Od/Ph1krn0eeJDsLudnXzV4hkW4e
7Dwax7+sNxJ+bkNvu2PwT4VmsSTmS5Vqo/s34TN4QIvrMsE/UCDYqQ/wRfa2
SJAq7kzau/09FJ6lyP5KC/ZiqVxtVOlJ365Yrbdq1UK1J/ZylS5fp3OWBKH0
1Gp2el0xV6v9BZZe598Ege+IXRZy/OVb5U6zvnPKc+tkL+lNYbx28a+Z8P+N
E/rrP1TsWZdItiWfT8o9h1LJZOKcolBSznSLi4P0latVmp1q76a+5goXP2FM
UTeMEZD+LZvrv8TaP8Lchj2o+VNSz2TJ5kwOfeeorrXmlR/oaFaL6CFvtUaG
ccTc78LwhtBNsWunzJWabAJ+1nxw8hADORlnRqqc4dLZrS2tSYZ95VjSSXCr
6bDpZ3j7vZQLW3r3inQn6d4HGRkaqCFcqRnpbOx8vm14IR7d3yvoXxz339sw
O+x/sFt12P14q+hwgONq/ckxPtsk2W18codid75PtgeOxvhubf5oQCqMnx5i
rxi9wdCBz+ZRj2PoB5Hgv8Xk/2FvdipYnx3kA4S/v1A8Fu+nPk+F18nS1n8j
E5ulEZLyDLIZ8u6AeQGLLLq30xRxQeAMfx/TV/8PtxMaQPx7SvX3Qf4zHfZQ
/8MOB2bww/bHdvGTXXZx+3NdPrOc7/Y+aUo/7vE7afyxsf24O3+xzk8StmuO
p/qcCFanmu3Hhp0W2RvQrq6uyBGXGsUsXcMnJGt8+0E4focHP5KS26u1ljaP
UhZpkVzKjtH/+sv6mH2Wx67P19OLSrLa0/qY/Tgr0mCBSadDaT/puFgtbM7c
fxOEP/9ol/8vvM3REdeDp6nSIhQ/NLr7cNFfaD34+QB8Byd7bU5KLkTz/NjJ
taj0QXVQZ3S5jOIRvVwne2h053Beuro+9QSJwI4e1KEi42TCsgf+ljuFbJ9t
2q6XMVhEY30k7G1gpNs19P/v1i24ivAvFsqzWXrUKC3BYv3Oq1QJHT8Ls7Pp
mS75OV2xuWWN0LF9mJROP9GyfX0aMR+5mPYHpzO2pdTs9BG9NfZygcVKFCe0
fLq85Om32LrPIy2Hhp75RaFerZas19xdvt+P8/1SOd/2Ks1ls5BvVnOvSbIa
sHHsf7z1Snq9cTcuxPNVlHcmXicyVlZOzy2FebH7ouSW/urxpfA4qRgdJWlJ
i9FTodEfvZn5xU27VzbyTTc6n/XOX8a33Umykp+d7t18FVirpSos3lex3PVK
cfIsxUoi94NpXB481+7bjUbU9s+fH8JGL8f8RS/P2pXbWv+2GX2UquW7cHnj
Lry54Pue8jZ5qLw1HqVu97Wst6PS9chb9hfT5+lLlNx0WKv3PBhb5qDgt29H
/jJvtF7G/feXt2DFBpKweEry53eV5flT7dZp9l1lMRudN8buWPdW94tm/6Y6
W723q44/aFrhTak6d58/7vxR0ytWwpb8VhJGhbDeSEaF817FG2nVV6Wbb/dX
Qa0yXSqvU199v31fvb2WXxirxP3QDzr+Q2d2v3q7dwuVm6R2I1R75duP64G9
eGPnXb1hLG7HN/VyoXczm0uFbvihT++uO2z6+nj3Ej4Onv0PeWjPrcpjpL2p
A6t7I9Qn7buoe/umlt8t7W503R/cN96f8tfXyvLcuWbDm/n9x53VdleP1bex
0uneDJuvtjzITQv1ijSrT4Sq9B6V3sbXbBmp7y85vX57/1Lyq8Nx1Dj39aC2
fBjdN2+6Uu/xIY4Lj7nFbPam3ay65Xr+Xl1UfOGt0m4tlJeaf97ov36MO/Wl
p84n7YF2V33KJ9PG3fnotr+61822U3ycPbxdr6Kn18FSf26Pnsfe0BUa8yrr
vU4bxbeg8V7uzj/Ch/bypW08tMbXhjp79d5X9rw+e1/qy97qLcgNVy8Pd36v
du979eT2oSxYTyUpNt5nhXbcSMaPH2+DO3m4aN63vWpv9FKKJquGNn/yy0tW
Xj5Vx/3rRvfOaN97r3ehEbZZVaiMw5Xi3rn31X5cdQer++bLvez414u4fO4P
8x9xi4U60H+Tr5X1wfNDdOu1zwfjvuo9JB35jglPjj8v+wPp/qnVaNXDXlwY
1T6uy3U/8NwPlynvfvfp5q2Q+NX83XvF6ffUqXRzPe89yo/LASvHQvH2Ll98
zjsv7w/NZeetJRt1s11t9iIr98aees12vfue8wu5d7PR0bqz2YvbLsavy1f5
rfCq19q2AP1oi/txI3kcOj3Wbkm1ghFc3+qLUQkczqXF/bzfH76Ni75z11q+
q3q3Gb6/LkvLcMme+qEsqK4/MazpSrt+eHhuLZ9uXpziwBnez+MXr1G6t+XJ
chj7FUktjt1VflSNl8tqYdSvLwfjrtutvAr1t5EyKrRapeuP/G1uUbNHQbGl
Ih6W6nkpLLyMjZlSDXINs1FrLsss37yPxm/v3iKRmkP/vVwR5MpQGjyUwkSr
3Xiv7FqO87knK1SqfWbcSLm3Z53ZT0rz5ub1odz4iOpW3VlE+ix+Lg0TZ+JW
BOd2PM0VvSdr+f5abA3ezh/ybDZ4jPTqUHJqj7LxVnm+fs09GZ1mPGWdyG2G
3efGpFgrP1ZVqx4I3svt/MbNO695pvSXbbfnQ68SG8VmUJ/f+GazmVf1Rf/G
fHuTRv1m36x5eSt+6D/l2U0tuZ0KuUpXeeo9j+7KnUbIqpHe6Hb84VNjWI1u
VuWXx3vbb9wv3buiVHievb+PXlXvbqrlyuUb/6PQi2aCW64Gg6jdfq8mLwO3
1SwXXu5eZ6X2+f3D5LXdkFdSyZ6vxnLDfHl9tJvDV1ZIpGcnilZR1JjODaHX
rN/N1crrQ/I2vlv034eqV/2Y3UfzXkE5zxek8DnXqN+/d9yXavhWqzz2EseI
8/NR922s30znltC5ruWfpf7odfpcKxfbt+H8udNYNJvV++dSU527vhXcPVvJ
slapNcLrWtRYztzzm+jWSj6mxeRpIPSqzqgt1UuJz1qLBXD4ci41dN2V6075
9iVknXmh/tAauuy28lj5cLXHh2gw0V7jJBk5jYKxEtjLe/jUnLS6Zqm4+qgt
lFbt+mPA/ELJLWi5v/41jWpIvI5iGk/DfmfY5Btl+0+08VxiUzk+FVdlrSwX
rXKpqMhlQ5ZUwzQKpq4UbLMo2Zqtq2bONnJ5JaUoDevrjeAfbS1lqdLvj/7d
3UFPUW27vi77muY6qi0FgWHJpuGahuoxJsuqJJmBLCuO46me4vuu7zNbNpgp
q6ahOKpleyk3hQ2lp+bQNdfUPVvTg8BSZVsL3ECVFUXWTM12ZVlzMa1qWabl
arYmqYGuqLrLTFNzmGHKti/Ykq7KvmM7riSrjhRYjiWDGEOXJd1WAj1wPZep
rux6gWqrpo0hZJOZuuWCYlnSBMP0ZMdUXFmTDYyuMtUymGO4kmIyzVIsRfNV
VdE0zzMDS5bcwPQV2fMVi0ECnqUJsi1ZpmFbLpN8HxNohq4Gqu5ZoMjQPEW2
fI+IUCxVUkCdyjTTUVXNs3W01OCLvUA3DUnxTNvyDdUHncxmBnPR11YM3XEM
3VAMVXEMjKV5GEDSFVeRPMsOlEASNOZouq5rhqn6ssssrKQhTc/RHLRhluHq
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
Xzzetx+7drCoCZpZsSy9obfk8rn/PLeldmeydLy4nH/p1s+bFWOcFIJhP7pt
1Fed+vt1v71QpcFH97Wftwb5YVXwp+F50We9zqj18VRN8i/16rNaW53fFXNv
/Z5+E330bh9Gjdti60HJJexZfpX01lSfLwqV7oszHQnP4/rb87Ncbw3z3aS/
urUW+ea0/HD/8iG5xm0p6FvTu2rdqMxePpZv9dFQd/M3ec33H/olv3t71xHe
rqtqofjqPVevQ22sD4K2WVgmL0W9s1q8vLvjXuGjHD0/3dyqxaT9/FD1n4cP
jtk5b99Xcu+JyYS48epIN9fG8LZcurHjpvzQKvVjqd72H1V/OFmazzk7b989
9mfLpO1XS0Hn1Vbi0ejOnWjRougLMut+5BbX9mt9keTscSe4nsav3W6n/N5J
HlvKbdR7nLqJPimWw9Hj492dkyvNerfToh5cm+2J1RCspTLpuEmzF9cl73Gu
VZ/uoYd57bFZOX+o1euDp/vw5X5lPmgs36pVVuf6g+GN7M5zt3Ize55rQl1u
afrj2zjWJre9mTxyX+6uX6alZXXxEZ2XveXzk3JXHs/N23L54fGl7L3f3BYf
HwqWUb/tVgJTFvLGS5eNI71ar8FJ+h937VoovRn155oyqty9+NPxee8xPztv
LNtvpdJLxXeSlavkTO1edx+6D69Cd2boD6PS26ClaAXHWjTs6t3Erl6/nK8m
fn52K7vBU0/vGKGiJE41rLVe+4Xx/er5oz6Llm/FiTCcWA9IjM/LucJzK7wb
rpgVv9nWsNN9nKmvs8aQ+Zo20GJp9d6tBg/F1qqv57qvb4uP5LmiPRWEJbt+
Op+PKs2XuXYd3rC7uXTXmtTuEklaPrRH90FQNzp+2c71ImNZtRqzqXJt1eLR
tDbJP81DW3hv3nYfpcl4MIpjv5vvDOXzZs18coxpaVZ6fnkvFeatWcX3mj32
ETrBTT5aKSOzob9eX0/l+UteeBgOzXnutf1itN7e8+FkIfdftNFUKlYbt8N7
vV0otuvNfHSj3BTeu/piOtSlJVbkBbkyfa4+qrpQn91Zs3J0XckvnnvS3H17
qX1Mg9Lbk/v8EPcfn9+89upDXuZGnYExuH3rrfrSDPmWW3NvmnJv2RC686du
ohqrpz57uS3X+pWqNvPG/UVnkXsMlvabk7stmte10iz4WFblQff8RV1MG/fy
9Gb45BrNULh99jvl58rHy+31sNSsF8z8vP3szXpPpeGb/hTnb5PZrTEMWOlt
eBuUz+8GU6Uk38XT3HXBcuXmWMh3es1Fv2avnGppGmtvL6MX+/H2uhbfNUYv
Tqtf6xTenW7x7TbOe/c1I/fUdhPNmswDN4irN8sPYel3k2ESTXvvUevVWBUn
51ExDOJhXeuGyhsbLoOnae2xuniNG8ay/sDm/nlj9N5iOaO4CFdKT8gng15R
ydvh8zwKZ7M35fnu/KOXlFdJPQ6QTQXV2/lTtAja+WqrMpxEvUbJ6+XGy6Dg
v1TGuZWQqHeTxb1TK7CPfjB3k+l8VH4MytU21gAjvc6KObeTd6KwcQ5F5+8a
dWM2UEvs2bVjkz3pfWEldcpNSTU/1Ni+7teUQeL1rx+fHpr5/mQxrn3Uw7i2
VKu9fKn16LSxkDbL17ev573Oy7gejetPAharmtuO78u9ynu59fQQGP35faE1
KivViVQN1BdWLtw0rffFdPn+WHGK/Twz794ebx9cu/sx1pZCsX0Qld6XhVw3
tywsn2+fqy/V3ON9MQ8vlC8M/JKh5ZRONxw+hJH5cbdqzp9WAtOW07oWvC7G
T1YrWL7MX5SWWr4f3V7LhfJ9otaLiEjdt0q36qrFdukm18uxfH/UHwz7+Zd2
vSTkutqy1G7XB/Hy5txqed3R2B+2WlGuX2r3c1L//N6q3KhJ+fwhWT1cX+fy
+XxwN86/xquP5dP5TSiMjLva1Eja29LtJu7yHKSXvtuTh2yfZXnDycRXFEVJ
lFVb+7Z9dQZ/6JNeBCXL38TjZwU3h8ZE+oVK5zgVkUVFtDQMy49sibKI/wz8
T1HpoIxsYj7TRN9/lf6Nz6XIdEWl0fZooMM+aM9/S7Pa6JUqpY5Iv9+lWCKW
Mxa/3i31eFtVoWsavyb+q5YOrBprJujP8UOPf/qEUlVU/4TudEUxzKz7Hmm6
uiXtgDqdJlWk9S0wuS8wWRPLsli0xHJJLILqMj0+LqmiYYpGQTR1USmItikW
JdHWRFvf76yaYs4WjZyYpx95M+mNYPJmqj0KLYkuWet7p7nHrGBaxz+YXNTt
P+3Plv75DRdtkpGuri82Cz3IvdvrVBuV/S66JuZNUS8Q8XpZLFuiKtPncl4s
qxAnKVszSbR5aF3b75yHLNDBEi1TtPLUCLpRy6KuiKou5kuiiZ45sWSIJgYt
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
AAA=

-->

</rfc>
