<?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-04" 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-04"/>
    <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="October" day="15"/>
    <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="14" month="October" 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-23"/>
        </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>Thanks to Carl Wallace for IETF hackathon interop testing.</t>
      <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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
TKpGR0lvpcXosdTsj17N4uKq3asYxZYXn856p8/j6+4kXclPbvdmvgqt1VIV
Fm+rRO76TpI+SYmSyv1wmlQGT/W7drMZt4PTp/uo2SuwYNErsnb1ut6/bsXv
Tq1yEy2vvIU/F4LAV14n99XX5oPU7b5U9HbsXI78ZX8xfZo+x+lVh932ngZj
yxyUgvb1KFgWjdvncf/t+TVcsYEkLB7T4ulNdXn6WL92W31PWcxGp82xN9b9
1d2i1b+qzVZv7ZobDFpWdOXU5t7T+00wavnlanQrvzrCqBQ1mumodNqr+iOt
9qJ0i+3+KqxXp0vlZRqob9dvq9eXyjNj1aQfBWEnuO/M7lavd16pepXWr4Ra
r3L9fjmwF6/stKs3jcX1+KpRKfWuZnOp1I3e9enNZYdNXx5unqOHwVPwLg/t
uVV9iLVXdWB1r4TGpH0Td69f1cqbpd2MLvuDu+bbY/HyUlmeupdseDW/e7+x
2t7qofY6Vjrdq2HrxZYHhWmpUZVmjYlQk95i53V8yZax+vZc0BvXd89OUBuO
4+ZpoIf15f3ornXVlXoP90lSeigsZrNX7WrVrTSKd+qiGgiv1fbtQnmuB6fN
/sv7uNNY+up80h5oN7XHYjpt3pyOrvurO91su+WH2f3r5Sp+fBks9af26Gns
Dz2hOa+x3su0WX4Nm2+V7vw9um8vn9vG/e340lBnL/7byp43Zm9LfdlbvYaF
4er5/ibo1e8Cv5Fe31cE69GREuNtVmonzXT88P46uJGHi9Zd26/1Rs9OPFk1
tfljUFmyyvKxNu5fNrs3RvvOf7mJjKjNakJ1HK0U78a7q/WTmjdY3bWe72Q3
uFwkldNgWHxPblmkA/1XxXpFHzzdx9d++3Qw7qv+fdqRb5jw6AbzSjCQ7h5v
m7eNqJeURvX3y0ojCH3v3WPKW9B9vHotpUGtePNWdfs9dSpdXc57D/LDcsAq
iVC+vimWn4ru89t9a9l5vZWNhtmutXqxVXhlj71Wu9F9KwSlwpvZ7Gjd2ezZ
a5eTl+WL/Fp60ettW4B+tMXduJk+DN0ea99K9ZIRXl7ri5EDDufS4m7e7w9f
x+XAvbldvql6txW9vSydZbRkj/1IFlQvmBjWdKVd3t8/3S4fr57d8sAd3s2T
Z7/p3NnyZDlMgqqklsfeqjiqJctlrTTqN5aDcdfrVl+ExutIGZVub53L9+J1
YVG3R2H5VkU8dBpFKSo9j42ZUgsLTbNZby0rrNi6i8evb/4ilVrD4K1SFeTq
UBrcO1Gq1a/8F3YpJ8XCoxUptT4zrqTC65PO7EeldXX1cl9pvscNq+EuYn2W
PDnD1J14VcG9Hk8LZf/RWr69lG8Hr6f3RTYbPMR6bSi59QfZeK0+Xb4UHo1O
K5myTuy1ou5Tc1KuVx5qqtUIBf/5en7lFd2XIlP6y7bXC6BXiY0SM2zMrwKz
1Sqq+qJ/Zb6+SqN+q2/W/aKV3Pcfi+yqnl5PhUK1qzz2nkY3lU4zYrVYb3Y7
wfCxOazFV6vK88OdHTTvlt5NWSo9zd7eRi+qfzPVCpXKVfBe6sUzwavUwkHc
br/V0ueBd9uqlJ5vXmZO+/TufvLSbsorybHnq7HcNJ9fHuzW8IWVUunJjeNV
HDenc0PotRo3c7X6cp++jm8W/beh6tfeZ3fxvFdSToslKXoqNBt3bx3vuRa9
1qsPvdQ1kuJ81H0d61fTuSV0LuvFJ6k/epk+1Svl9nU0f+o0F61W7e7Jaalz
L7DCmycrXdar9WZ0WY+by5l3ehVfW+n7tJw+DoRezR21pYaTBux2sQAOn0+l
pq57csOtXD9HrDMvNe5vhx67rj5U3z3t4T4eTLSXJE1HbrNkrAT2/BY9tia3
XdMpr97rC+W2fvk+YEHJ8Upa4a9/zaIaEq+jmMbTsN8ZNvlG2f4TbTyX2FSO
P4qrslaRy1bFKStyxZAl1TCNkqkrJdssS7Zm66pZsI1CUckoysL6eiP4R1tL
ear0+6N/d3fQj6i2vUCXA03zXNWWwtCwZNPwTEP1GZNlVZLMUJYV1/VVXwkC
LwiYLRvMlFXTUFzVsv2Mm9KG0o/m0DXP1H1b08PQUmVbC71QlRVF1kzN9mRZ
8zCtalmm5Wm2Jqmhrqi6x0xTc5lhynYg2JKuyoFru54kq64UWq4lgxhDlyXd
VkI99HyPqZ7s+aFqq6aNIWSTmbrlgWJZ0gTD9GXXVDxZkw2MrjLVMphreJJi
Ms1SLEULVFXRNN83Q0uWvNAMFNkPFItBAr6lCbItWaZhWx6TggATaIauhqru
W6DI0HxFtgKfiFAsVVJAnco001VVzbd1tNTgi/1QNw1J8U3bCgw1AJ3MZgbz
0NdWDN11Dd1QDFVxDYyl+RhA0hVPkXzLDpVQEjTmarqua4apBrLHLKykIU3f
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
ummx1T+96QeLh7v2Q9cOF3VBM6uWpTf1W7lyGjzNbandmSxdP6kUn7uN01bV
GKelcNiPr5uNVafxdtlvL1Rp8N596RetQXFYE4JpdFoOWK8zun1/rKXF50bt
Sa2vTm/Khdd+T7+K33vX96Pmdfn2Ximk7El+kfTbqT5flKrdZ3c6Ep7Gjden
J7lxOyx20/7q2loUW9PK/d3zu+QZ107Yt6Y3tYZRnT2/L18bo6HuFa+KWhDc
952ge33TEV4va2qp/OI/1S4jbawPwrZZWqbPZb2zWjy/eeNe6b0SPz1eXavl
tP10Xwuehveu2Tlt31ULb6nJhKT54kpXl8bwuuJc2UlLvr91+onUaAcPajCc
LM2ngl20bx76s2XaDmpO2HmxlWQ0uvEmWrwoB4LMuu+FxaX90likBXvcCS+n
yUu326m8ddKHW+U67j1MvVSflCvR6OHh5sYtOLPe9bSsh5dme2I1BWupTDpe
2uolDcl/mGu1xzvoYV5/aFVP7+uNxuDxLnq+W5n3Give1qurU/3e8Ed256lb
vZo9zTWhId9q+sPrONEm172ZPPKeby6fp86ytniPTyv+8ulRuamM5+Z1pXL/
8Fzx366uyw/3JctoXHeroSkLReO5y8axXmvU4SSD95t2PZJejcZTXRlVb56D
6fi091CcnTaX7VfHea4GbrrylIKp3enefff+RejODP1+5LwObhWt5FqLpl27
mdi1y+fT1SQozq5lL3zs6R0jUpTUrUX125d+aXy3enpvzOLla3kiDCfWPRLj
00qh9HQb3QxXzEpebWvY6T7M1JdZc8gCTRtoibR669bC+/Ltqq8Xui+vi/f0
qao9loQlu3w8nY+qree5dhldsZu5dHM7qd+kkrS8b4/uwrBhdIKKXejFxrJm
NWdT5dKqJ6NpfVJ8nEe28Na67j5Ik/FglCRBt9gZyqetuvnoGlNn5jw9vzml
+e2sGvitHnuP3PCqGK+UkdnUXy4vp/L8uSjcD4fmvPDSfjZuX9+K0WQh95+1
0VQq15rXwzu9XSq3G61ifKVcld66+mI61KUlVuQluTp9qj2outCY3VizSnxZ
LS6eetLce32uv09D5/XRe7pP+g9Pr3579S4vC6POwBhcv/ZWfWmGfMure1ct
ubdsCt35YzdVjdVjnz1fV+r9ak2b+eP+orMoPIRL+9UtXJfNy7ozC9+XNXnQ
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

-->

</rfc>
