<?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.36 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-cms-composite-kem-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="Composite ML-KEM CMS">Composite ML-KEM for use in Cryptographic Message Syntax (CMS)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-composite-kem-01"/>
    <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="May" day="06"/>
    <area>Security</area>
    <workgroup>LAMPS</workgroup>
    <keyword>X.509</keyword>
    <keyword>CMS</keyword>
    <keyword>Post-Quantum</keyword>
    <keyword>KEM</keyword>
    <keyword>Composite ML-KEM</keyword>
    <abstract>
      <?line 111?>

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

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

  id-MLKEM768-RSA2048-SHA3-256 OBJECT IDENTIFIER ::= {
    iso(1) 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 Composite ML-KEM.</t>
      <t>Composite ML-KEM encapsulation and decapsulation only outputs a shared secret and ciphertext.
Implementations MUST NOT use intermediate values directly for any purpose.</t>
      <t>Implementations SHOULD NOT reveal information about intermediate values or calculations, whether by timing or other "side channels"; otherwise an opponent may be able to determine information about the keying data and/or the recipient's private key.
Although not all intermediate information may be useful to an opponent, it is preferable to conceal as much information as is practical, unless analysis specifically indicates that the information would not be useful to an opponent.</t>
      <t>Generally, good cryptographic practice employs a given Composite ML-KEM key pair in only one scheme.
This practice avoids the risk that vulnerability in one scheme may compromise the security of the other and may be essential to maintain provable security.</t>
    </section>
    <section anchor="sec-iana">
      <name>IANA Considerations</name>
      <t>IANA is requested to allocate a value from the "SMI Security for S/MIME Module Identifier (1.2.840.113549.1.9.16.0)" registry for the included ASN.1 module.</t>
      <ul spacing="normal">
        <li>
          <t>Decimal: IANA Assigned - <strong>Replace TBDMOD</strong></t>
        </li>
        <li>
          <t>Description: Composite-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 with module number assigned to id-mod-composite-mlkem-2025 in <xref target="I-D.ietf-lamps-pq-composite-kem"/>.</t>
      </aside>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="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="27" month="March" 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-14"/>
        </reference>
        <reference anchor="RFC9629">
          <front>
            <title>Using Key Encapsulation Mechanism (KEM) Algorithms in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="J. Gray" initials="J." surname="Gray"/>
            <author fullname="T. Okubo" initials="T." surname="Okubo"/>
            <date month="August" year="2024"/>
            <abstract>
              <t>The Cryptographic Message Syntax (CMS) supports key transport and key agreement algorithms. In recent years, cryptographers have been specifying Key Encapsulation Mechanism (KEM) algorithms, including quantum-secure KEM algorithms. This document defines conventions for the use of KEM algorithms by the originator and recipients to encrypt and decrypt CMS content. This document updates RFC 5652.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9629"/>
          <seriesInfo name="DOI" value="10.17487/RFC9629"/>
        </reference>
        <reference anchor="RFC5652">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document describes the Cryptographic Message Syntax (CMS). This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary message content. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="70"/>
          <seriesInfo name="RFC" value="5652"/>
          <seriesInfo name="DOI" value="10.17487/RFC5652"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC5083">
          <front>
            <title>Cryptographic Message Syntax (CMS) Authenticated-Enveloped-Data Content Type</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="November" year="2007"/>
            <abstract>
              <t>This document describes an additional content type for the Cryptographic Message Syntax (CMS). The authenticated-enveloped-data content type is intended for use with authenticated encryption modes. All of the various key management techniques that are supported in the CMS enveloped-data content type are also supported by the CMS authenticated-enveloped-data content type. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5083"/>
          <seriesInfo name="DOI" value="10.17487/RFC5083"/>
        </reference>
        <reference anchor="RFC5869">
          <front>
            <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <date month="May" year="2010"/>
            <abstract>
              <t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications. The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5869"/>
          <seriesInfo name="DOI" value="10.17487/RFC5869"/>
        </reference>
        <reference anchor="RFC8619">
          <front>
            <title>Algorithm Identifiers for the HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>RFC 5869 specifies the HMAC-based Extract-and-Expand Key Derivation Function (HKDF) algorithm. This document assigns algorithm identifiers to the HKDF algorithm when used with three common one-way hash functions.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8619"/>
          <seriesInfo name="DOI" value="10.17487/RFC8619"/>
        </reference>
        <reference anchor="RFC3394">
          <front>
            <title>Advanced Encryption Standard (AES) Key Wrap Algorithm</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="September" year="2002"/>
          </front>
          <seriesInfo name="RFC" value="3394"/>
          <seriesInfo name="DOI" value="10.17487/RFC3394"/>
        </reference>
        <reference anchor="RFC3565">
          <front>
            <title>Use of the Advanced Encryption Standard (AES) Encryption Algorithm in Cryptographic Message Syntax (CMS)</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="July" year="2003"/>
            <abstract>
              <t>This document specifies the conventions for using the Advanced Encryption Standard (AES) algorithm for encryption with the Cryptographic Message Syntax (CMS). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3565"/>
          <seriesInfo name="DOI" value="10.17487/RFC3565"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="FIPS203">
          <front>
            <title>Module-lattice-based key-encapsulation mechanism standard</title>
            <author>
              <organization/>
            </author>
            <date month="August" year="2024"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.fips.203"/>
          <refcontent>National Institute of Standards and Technology (U.S.)</refcontent>
        </reference>
        <reference anchor="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 378?>

<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 128-bit content-encryption key:</t>
        <sourcecode type="test-vectors"><![CDATA[
3424cef0cbc2b67f58351abd1e87b3507a11c90adef7e1cdab8d20b0331b8105
]]></sourcecode>
        <t>Alice uses AES-256-KEYWRAP to encrypt the content-encryption key with the key-encryption key:</t>
        <sourcecode type="test-vectors"><![CDATA[
5d13ae00d914a29158a8ef32b23ae5f27b8c293387e3be65fc3dfc19b99d8fdc
552527fd42154b37
]]></sourcecode>
        <t>Alice encrypts the padded content using AES-256-GCM with the content-encryption key and encodes the AuthEnvelopedData (using KEMRecipientInfo) and ContentInfo, and then sends the result to Bob.</t>
        <t>The Base64-encoded result is:</t>
        <sourcecode type="test-vectors"><![CDATA[
-----BEGIN CMS-----
MIIFcgYLKoZIhvcNAQkQARegggVhMIIFXQIBADGCBQikggUEBgsqhkiG9w0BCRAN
AzCCBPMCAQCAFBTx2P7SH2EDZ2x1LJfQlJU3qWqyMAoGCCsGAQUFBwY7BIIEgVS3
XJRf+DGU+/MSIUdJsRS/aDiHi0lAP1I1vndK5nGdkFMdqasBOg+KgdvWUQWS9fvL
47G885N5P1F+dYu90QRnwacrFBZSM+OG6msCfkgoJNMyRMx/gQv30hzSjgB8hBkI
dpi+DdeTRlPzXIsBZMIY3Ly+KDAqgT5HozTJVlNJDPV2AseY1j05Pp5uvCGSZapl
YmMqYY1MPkBSsgyJ8vBOpFVUZz0b6JEfg8pKIM6GtZzwqMlk5bBHB4ddVgEdSJKR
q/I3CDjcYI/i4m5hfQ7CwsZD5RyvZxbmTCzFoYXHJ3DsQYVIdYkVa7R+QUGAxs7e
rNja0H/6kJFEH9rO1VPEgr0MQdW3dknw7YA9B9KWgtwsQdIEfRj92rllKbn4ovDd
1eSzAv/9jMvsA9mRf/prjSSRFxRsWP2JoTWpbs5nDFilWWKKaAEtTJpD5f/7Qn8N
8w2nRbsOTrM0cWu4IXUQRnuLWOG+VLMMhXUiZUy7V4eBPLGy+5V6cl9RYSGHtYu4
M1P45Wqmr4nJTt1lbZK/ZpEwIvzo+FcwYX2KFmu7JFFVWZFcxHJDWVC86MJSGf71
B6ZSemo5IMLeradzKQLi0q6MYL2lGKZdpm+TWBt+NwQqEEZGdasyb2A74U5bVSVj
St65VlEqhP24Ca8vN9IKn9I/Z+yndBtJ1bfXT5R6i22saIiLPjgCmUyYzMtowqDn
kn8V5ee+FACYPiKkye8rq98kRSWt3jtNked44h4r0yxSIfVDPyg5ASjqvzsYG4XC
we/X+ulGOZu4/iHeKu0KPnLKs00wVQlUffM6RdF9ATo6wI8Ntp2/8LrlpLnBXui9
xOJSW0nmhlrrdSBRk1+OL7Xa6pEtEYZxECuPtGdcOTeziafHBoy2l7N5j//p1uZB
Vkk7uAjQZ6PqxBinv1gZ4lp0DINJkU5QCDQMOBoH2HCxS5vpk50wa8cC1GpYIW35
MtK8tFo/GBvYT0ubqZLzpfEqXbYVrgWYqcQyz1wAlRh6hJqTyg0tfe7bLbHO1TwN
SuXSs36yXgeZJFLgGI4tcmgvRvAWfw9qaAJD7/LEtfzwI1hS+Z3vpNU1pHkXb6Oi
JYdRFYGzZJ/kEOMC7BuQYctTXEkq5XrBJstJ6kfeEqkJfF+Khp2E1KrpA/C8b1Om
BRTOvgL9yaIEpr4qZlZ9WJ/LrKNlZaPgLRCxaSDqJrBcUL6AXQbs48nufbfrIHwz
wdSsksopTxoPj6yDn+oDifrkM4Si2qekwfXpLWIvjrN6wMVeud+NlxPeA6Dviy2T
BshTD2B9iYuoittq2YK+zTsFysMrff52fIJuXovfQBIPGknoTNEcTAmwfCdZGmAy
s3KnvUaLCezgfubspulFWfFIQ92al5MeDAbRBaoiN+Z6PBKNM6th3EeYb9r7eX5g
y0RFO037z3r9/gL2hscg/WXVOBgnvmLzMirLw3ITBEPWaQ4647F/Jj+TRZmMomMX
91e4bQrUFTGxFPXVf6guUCPlF2In0If3ZeFCHO8xvpwxWGaDgBe7KqWJVb9Szm4w
DQYLKoZIhvcNAQkQAxwCASAwCwYJYIZIAWUDBAEtBChdE64A2RSikVio7zKyOuXy
e4wpM4fjvmX8PfwZuZ2P3FUlJ/1CFUs3MDoGCSqGSIb3DQEHATAeBglghkgBZQME
AS4wEQQMhrwH+8PcSlmdkPPoAgEQgA0g+U8GH3sF+VsyV//ABBBfKmBjryzwX+Hi
l6KLp6sQ
-----END CMS-----
]]></sourcecode>
        <t>This result decodes to:</t>
        <sourcecode type="test-vectors"><![CDATA[
   0 1394: SEQUENCE {
   4   11:  OBJECT IDENTIFIER
         :   authEnvelopedData (1 2 840 113549 1 9 16 1 23)
  17 1377:  [0] {
  21 1373:   SEQUENCE {
  25    1:    INTEGER 0
  28 1288:    SET {
  32 1284:     [4] {
  36   11:      OBJECT IDENTIFIER '1 2 840 113549 1 9 16 13 3'
  49 1267:      SEQUENCE {
  53    1:       INTEGER 0
  56   20:       [0]
         :   14 F1 D8 FE D2 1F 61 03 67 6C 75 2C 97 D0 94 95
         :   37 A9 6A B2
  78   10:       SEQUENCE {
  80    8:        OBJECT IDENTIFIER '1 3 6 1 5 5 7 6 59'
         :         }
  90 1153:       OCTET STRING
         :   54 B7 5C 94 5F F8 31 94 FB F3 12 21 47 49 B1 14
         :   BF 68 38 87 8B 49 40 3F 52 35 BE 77 4A E6 71 9D
         :   90 53 1D A9 AB 01 3A 0F 8A 81 DB D6 51 05 92 F5
         :   FB CB E3 B1 BC F3 93 79 3F 51 7E 75 8B BD D1 04
         :   67 C1 A7 2B 14 16 52 33 E3 86 EA 6B 02 7E 48 28
         :   24 D3 32 44 CC 7F 81 0B F7 D2 1C D2 8E 00 7C 84
         :   19 08 76 98 BE 0D D7 93 46 53 F3 5C 8B 01 64 C2
         :   18 DC BC BE 28 30 2A 81 3E 47 A3 34 C9 56 53 49
         :   0C F5 76 02 C7 98 D6 3D 39 3E 9E 6E BC 21 92 65
         :   AA 65 62 63 2A 61 8D 4C 3E 40 52 B2 0C 89 F2 F0
         :   4E A4 55 54 67 3D 1B E8 91 1F 83 CA 4A 20 CE 86
         :   B5 9C F0 A8 C9 64 E5 B0 47 07 87 5D 56 01 1D 48
         :   92 91 AB F2 37 08 38 DC 60 8F E2 E2 6E 61 7D 0E
         :   C2 C2 C6 43 E5 1C AF 67 16 E6 4C 2C C5 A1 85 C7
         :   27 70 EC 41 85 48 75 89 15 6B B4 7E 41 41 80 C6
         :   CE DE AC D8 DA D0 7F FA 90 91 44 1F DA CE D5 53
         :   C4 82 BD 0C 41 D5 B7 76 49 F0 ED 80 3D 07 D2 96
         :   82 DC 2C 41 D2 04 7D 18 FD DA B9 65 29 B9 F8 A2
         :   F0 DD D5 E4 B3 02 FF FD 8C CB EC 03 D9 91 7F FA
         :   6B 8D 24 91 17 14 6C 58 FD 89 A1 35 A9 6E CE 67
         :   0C 58 A5 59 62 8A 68 01 2D 4C 9A 43 E5 FF FB 42
         :   7F 0D F3 0D A7 45 BB 0E 4E B3 34 71 6B B8 21 75
         :   10 46 7B 8B 58 E1 BE 54 B3 0C 85 75 22 65 4C BB
         :   57 87 81 3C B1 B2 FB 95 7A 72 5F 51 61 21 87 B5
         :   8B B8 33 53 F8 E5 6A A6 AF 89 C9 4E DD 65 6D 92
         :   BF 66 91 30 22 FC E8 F8 57 30 61 7D 8A 16 6B BB
         :   24 51 55 59 91 5C C4 72 43 59 50 BC E8 C2 52 19
         :   FE F5 07 A6 52 7A 6A 39 20 C2 DE AD A7 73 29 02
         :   E2 D2 AE 8C 60 BD A5 18 A6 5D A6 6F 93 58 1B 7E
         :   37 04 2A 10 46 46 75 AB 32 6F 60 3B E1 4E 5B 55
         :   25 63 4A DE B9 56 51 2A 84 FD B8 09 AF 2F 37 D2
         :   0A 9F D2 3F 67 EC A7 74 1B 49 D5 B7 D7 4F 94 7A
         :   8B 6D AC 68 88 8B 3E 38 02 99 4C 98 CC CB 68 C2
         :   A0 E7 92 7F 15 E5 E7 BE 14 00 98 3E 22 A4 C9 EF
         :   2B AB DF 24 45 25 AD DE 3B 4D 91 E7 78 E2 1E 2B
         :   D3 2C 52 21 F5 43 3F 28 39 01 28 EA BF 3B 18 1B
         :   85 C2 C1 EF D7 FA E9 46 39 9B B8 FE 21 DE 2A ED
         :   0A 3E 72 CA B3 4D 30 55 09 54 7D F3 3A 45 D1 7D
         :   01 3A 3A C0 8F 0D B6 9D BF F0 BA E5 A4 B9 C1 5E
         :   E8 BD C4 E2 52 5B 49 E6 86 5A EB 75 20 51 93 5F
         :   8E 2F B5 DA EA 91 2D 11 86 71 10 2B 8F B4 67 5C
         :   39 37 B3 89 A7 C7 06 8C B6 97 B3 79 8F FF E9 D6
         :   E6 41 56 49 3B B8 08 D0 67 A3 EA C4 18 A7 BF 58
         :   19 E2 5A 74 0C 83 49 91 4E 50 08 34 0C 38 1A 07
         :   D8 70 B1 4B 9B E9 93 9D 30 6B C7 02 D4 6A 58 21
         :   6D F9 32 D2 BC B4 5A 3F 18 1B D8 4F 4B 9B A9 92
         :   F3 A5 F1 2A 5D B6 15 AE 05 98 A9 C4 32 CF 5C 00
         :   95 18 7A 84 9A 93 CA 0D 2D 7D EE DB 2D B1 CE D5
         :   3C 0D 4A E5 D2 B3 7E B2 5E 07 99 24 52 E0 18 8E
         :   2D 72 68 2F 46 F0 16 7F 0F 6A 68 02 43 EF F2 C4
         :   B5 FC F0 23 58 52 F9 9D EF A4 D5 35 A4 79 17 6F
         :   A3 A2 25 87 51 15 81 B3 64 9F E4 10 E3 02 EC 1B
         :   90 61 CB 53 5C 49 2A E5 7A C1 26 CB 49 EA 47 DE
         :   12 A9 09 7C 5F 8A 86 9D 84 D4 AA E9 03 F0 BC 6F
         :   53 A6 05 14 CE BE 02 FD C9 A2 04 A6 BE 2A 66 56
         :   7D 58 9F CB AC A3 65 65 A3 E0 2D 10 B1 69 20 EA
         :   26 B0 5C 50 BE 80 5D 06 EC E3 C9 EE 7D B7 EB 20
         :   7C 33 C1 D4 AC 92 CA 29 4F 1A 0F 8F AC 83 9F EA
         :   03 89 FA E4 33 84 A2 DA A7 A4 C1 F5 E9 2D 62 2F
         :   8E B3 7A C0 C5 5E B9 DF 8D 97 13 DE 03 A0 EF 8B
         :   2D 93 06 C8 53 0F 60 7D 89 8B A8 8A DB 6A D9 82
         :   BE CD 3B 05 CA C3 2B 7D FE 76 7C 82 6E 5E 8B DF
         :   40 12 0F 1A 49 E8 4C D1 1C 4C 09 B0 7C 27 59 1A
         :   60 32 B3 72 A7 BD 46 8B 09 EC E0 7E E6 EC A6 E9
         :   45 59 F1 48 43 DD 9A 97 93 1E 0C 06 D1 05 AA 22
         :   37 E6 7A 3C 12 8D 33 AB 61 DC 47 98 6F DA FB 79
         :   7E 60 CB 44 45 3B 4D FB CF 7A FD FE 02 F6 86 C7
         :   20 FD 65 D5 38 18 27 BE 62 F3 32 2A CB C3 72 13
         :   04 43 D6 69 0E 3A E3 B1 7F 26 3F 93 45 99 8C A2
         :   63 17 F7 57 B8 6D 0A D4 15 31 B1 14 F5 D5 7F A8
         :   2E 50 23 E5 17 62 27 D0 87 F7 65 E1 42 1C EF 31
         :   BE 9C 31 58 66 83 80 17 BB 2A A5 89 55 BF 52 CE
         :   6E
1247   13:       SEQUENCE {
1249   11:        OBJECT IDENTIFIER
         :         hkdfWithSha256 (1 2 840 113549 1 9 16 3 28)
         :         }
1262    1:       INTEGER 32
1265   11:       SEQUENCE {
1267    9:        OBJECT IDENTIFIER
         :         aes256-wrap (2 16 840 1 101 3 4 1 45)
         :         }
1278   40:       OCTET STRING
         :   5D 13 AE 00 D9 14 A2 91 58 A8 EF 32 B2 3A E5 F2
         :   7B 8C 29 33 87 E3 BE 65 FC 3D FC 19 B9 9D 8F DC
         :   55 25 27 FD 42 15 4B 37
         :        }
         :       }
         :      }
1320   58:    SEQUENCE {
1322    9:     OBJECT IDENTIFIER data (1 2 840 113549 1 7 1)
1333   30:     SEQUENCE {
1335    9:      OBJECT IDENTIFIER
         :       aes256-GCM (2 16 840 1 101 3 4 1 46)
1346   17:      SEQUENCE {
1348   12:       OCTET STRING 86 BC 07 FB C3 DC 4A 59 9D 90 F3 E8
1362    1:       INTEGER 16
         :        }
         :       }
1365   13:     [0] 20 F9 4F 06 1F 7B 05 F9 5B 32 57 FF C0
         :      }
1380   16:    OCTET STRING
         :   5F 2A 60 63 AF 2C F0 5F E1 E2 97 A2 8B A7 AB 10
         :     }
         :    }
         :   }
]]></sourcecode>
      </section>
      <section anchor="recipient-cms-processing">
        <name>Recipient CMS Processing</name>
        <t>Bob's id-MLKEM768-ECDH-P256-SHA3-256 private key:</t>
        <sourcecode type="test-vectors"><![CDATA[
-----BEGIN PRIVATE KEY-----
MIGEAgEAMAoGCCsGAQUFBwY7BHOImiTrgVkiRNnS3EmMdxHUrh+EHeflRSSQaMrG
7NAvf0DDSVt58hvzJz/RuCOE4/8REOs/DZVr5gWO2jOyldClMDECAQEEIM/ctKyh
CrQyBNhBbpwS5ZkEO1mklf14j5NRtwj3obB+oAoGCCqGSM49AwEH
-----END PRIVATE KEY-----
]]></sourcecode>
        <t>Bob decapsulates the ciphertext in the KEMRecipientInfo to get the MLKEM768-ECDH-P256-SHA3-256 shared secret, encodes the CMSORIforKEMOtherInfo, derives the key-encryption key from the shared secret and the DER-encoded CMSORIforKEMOtherInfo using HKDF with SHA-256, uses AES-256-KEYWRAP to decrypt the content-encryption key with the key-encryption key, and decrypts the encrypted contents with the content-encryption key, revealing the plaintext content:</t>
        <sourcecode type="test-vectors"><![CDATA[
]]></sourcecode>
      </section>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This document borrows heavily from <xref target="RFC9690"/> and <xref target="RFC9936"/>.
Thanks go to the authors of those documents.
"Copying always makes things easier and less error prone" - RFC8411.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA81913LjWJrmPZ4CmxWxo2w5eJM93TM0IEWJRjSyExMbMAck
RAMKoBFVXRPzAnu1t7sR+yz7KPMk+/0HoJcys3p2IyqrKksCjvnt9xsckOfn
58Ismo3YN7EUj6dxGs2Y2Kif3zgNMYwTcZ4yMZqIpWQ1ncX9xJ0OIl9ssDR1
+0zsriYz9008KTW6XwXX8xK2+GAZ3BWC2J+4Y2wSJG44O4/YLDwfueNpeu6P
8d96yvmQjc8lWRDSmTsJ/ps7iieYM0vmTPxF7A2iVByxWQqixCAWQ3fir0R3
PovP+2zCEncWxRMxDsWEhSxhE5+lQjRN+Px0pkiSLSmCmzD3m9hl/jyJZivs
g9/H38Sa06sIy/43sV5o3HaFIVst4yT4Jojn4uOFLtn0A/GB/93G6ey8PXcn
s/mYfgeL/O4B24Lvzr6J6SwQhAWbzBnWEvtJPJ+u9xDF2WoK7h7iZBhN+mKV
buLq2I1GmDh1x+k/k5wu4qSPy27iD76Jg9lsmn67vAzcmTtLXH/Ikov1oMtl
/5LL9NL14vnskjaMZoO5903MRI37mfj35I1hI3fG0tl29fXwi2z+RRR/NPHy
SJfT1/0RF4PZeCQIfhyAwW/iHAMtYRp9E/HnF9F3J9y83CRxV+JJFIruaCSu
WPpVhOEN3HQgDqBHElTsf6Mb+DGNE6gsTL/xJQIWuvMRLGIWr++vxtlt+lWA
cQzihER/LtCm0QR3yhfiPbauMvDMr2aWWXYnERsd3IJYv+XG32Rvs63h0E2W
qSrgEy8W7qRP8/7Z58MnGH6e5sMvIBY+heyNQdL/8e//XTbOxGI8H7GFmwRi
140ms/MqS7DmhA+F1ECVqUuSmf2Odb6Jt24Spfn9+WSW4FIlgSOwfR4bF2Jr
PklhxLPBDo+NaMgObnAOnQn3EbEejaG6gN9Y+3N+b498BVSJ3XgEJ52JndgN
wND/ELtzMn9Zknbobc1m7tI9E1tAiiSK9ykvuRM3cHe4vVFuRLWq70p3DJIv
4jXJ/8wyanKB7nB8fQEPclc7zF7Hg8n22h+dzxdQewGAXX2XxZuRO09TgN0u
n7DY/euc1+J8ErA0SOYEEiwSq2Pvam9Dd3IxXE/7Zy9ILgK2x/xNPB6DcQAd
m+DahShbOyzIkm3YOwIosmS0sdycb27Ok5UgTGL8MIsWHAUrtduubEnwuFbt
QpYuDEmxLpu1bu+C7lzg1rmGYY8GxvD1INE+24Gn5XJ5Ec3mF/CYy4T5l73z
jlM6f7zAhGx8Fs/+yn8RxdokzLZHdJgxfzCJR3F/BcgueClh6Gwdx5rxLBvV
mjDxpNBtXshfv+WLdKfMj8LI3wQZz00RCSf5FD4KoIxtFUmRzxFpuG1t8AeK
zPVS692d9zJBsyRiaQTy1rvwe2KHQfVjBtHT0t/ELWcY0W1d1pzSN9GyFO1c
/ka7cWHZv1dY9v8/YfHfRERgDvxiApCD+R6JsMhF6KyHdWiYeFJ0Ol/P8oXg
OPEEM0ZHo0oYJcI6xXKUznB9HqUDFhwNK2PY/2/d2B/pRt/qplMp6bYsf8t+
tHQdPwrRWs5bn1Ak9TOfwC0M6t5eWJJ0rpvTmZzo33bV92WfLp663bCV2ADy
9Bmuz3jomIkyR7Aqz5dGX3ZE00AMBsHSkWxy0Xxp8pWhihrQABYFCIQOu5So
IYClXBm9rcWcEPVfv3xok5PFaDr30osJdHfRjxeX9ANdueQ24o5u594oN5Q0
E8M+7xfTIBQE4fz8HPCd2aUgHCWeyA6iCawAkvGiSbYa0ZzfXiK5ETvdwnmr
4NyeiU6pfHUmPirQj33GuXnUNOtC4Gkn8tc5SRF5GTdirDobMKw8QXKXLZxl
y2R7R4S4o36MNGAwTrNNaeqPM+p8NRqMRaDgaBphM/JQwui5P5snLGcyoCT9
P/79f97xKaR5eII7TeejDJ4aUAzSlHQsnmCtr2JhSxEm/hw9//Hv/0s8gQWL
tqHYXy9y+Y+jIBgx/CL8AsuYJXEAwsgEf/0F2c95RJd+E4Rff/0vtfPyxXeS
xd9+2yjMhWBHI+avgeKIH/GQn62Ez7L0P4FIkBS66ZE2zsQlOBzkVrHR0a+/
5j4IOjIlJW4Q5Sa/o8AfGwxYhZRISDss/UCLZDw0hPJhYnjfaNZ3f8Jmss11
Q1ewOYN1juIpC86pXiBrnZENU91xli3Y6HJfJxuGu308kDj7ePB31j/0G3ho
StqgUeMpVEfxJQa5P7YKbyVOk3gRcVz/T3jcd8RPY9Z+0OiSaf/ySxbFACtg
e+GO5mSXGJqXmjCvbOss1v36K6Urv/12tuO0n4e3jUh/HLz4yjZWzokq7fCf
IW4yjnLIzTxutr0Cv+thF1SzIpWzqfilcdftfTnL/i82W/znjtO+q3WcMv3c
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
/tgvfnLKrt3+3JTPPOe7sz90pR/P+J00/tjZfjydfy7ATxK2644fzfkgWH00
bD827IzIP1rl4uKCgNhplvN0DT8hWeP9Z+H4FWR+JqGw12xzNi+QlakudvIT
0r/+sj5Bneex66PT9J513rZan6DmzRpqeU748UB6oHDcrRQ2x6m/CcKffvSY
9898zNEZx4P3TbKzWvzU4O7rF3+mEvDzBXgLP3/rPyMXonl66BRuqdtBjTB3
dL6MkxF9NkD+qtzO6aysoP7ojL1w/CoDdZkmE5a/ErXc6WQGbDN2ffoNdTMK
JGGvg5316+n/321VcBXhX9TGs1l21iTrwaFk569MpHT+KMoPJ+e65Ac1xdaW
NbKO7et2dPyFKvX1cbRi7GHbHzye3/bS8uMn9JF05wsUK3GSUvl0fs7Tb/H2
roi0HBp64heFRq3mWC+Fm2K/nxT7TqXY9qutZatUbNUKL2m6GrBxEry/9hy9
0bwZl5L5Ki66E78TGyuroBeWwrzcfVYKy2D18Fx6mFSNjpLeSovRY6nZH72a
xcVVu1cxii0vPp31Tp/H191JupKf3O7NfBVaq6UqLN5Widz1nSR9khIllfvh
NKkMnup37WYzbgenT/dRs1dgwaJXZO3qdb1/3YrfnVrlJlpeeQt/LgSBr7xO
7quvzQep232p6O3YuRz5y/5i+jR9jtOrDrvtPQ3GljkoBe3rUbAsGrfP4/7b
82u4YgNJWDymxdOb6vL0sX7ttvqespiNTptjb6z7q7tFq39Vm63e2jU3GLSs
6Mqpzb2n95tg1PLL1ehWfnWEUSlqNNNR6bRX9Uda7UXpFtv9VVivTpfKyzRQ
367fVq8vlWfGqkk/CsJOcN+Z3a1e77xS9SqtXwm1XuX6/XJgL17ZaVdvGovr
8VWjUupdzeZSqRu969Obyw6bvjzcPEcPg6fgXR7ac6v6EGuv6sDqXgmNSfsm
7l6/qpU3S7sZXfYHd823x+LlpbI8dS/Z8Gp+935jtb3VQ+11rHS6V8PWiy0P
CtNSoyrNGhOhJr3Fzuv4ki1j9e25oDeu756doDYcx83TQA/ry/vRXeuqK/Ue
7pOk9FBYzGav2tWqW2kU79RFNRBeq+3bhfJcD06b/Zf3caex9NX5pD3QbmqP
xXTavDkdXfdXd7rZdssPs/vXy1X8+DJY6k/t0dPYH3pCc15jvZdps/waNt8q
3fl7dN9ePreN+9vxpaHOXvy3lT1vzN6W+rK3eg0Lw9Xz/U3Qq98FfiO9vq8I
1qMjJcbbrNROmun44f11cCMPF627tl/rjZ6deLJqavPHoLJkleVjbdy/bHZv
jPad/3ITGVGb1YTqOFop3o13V+snNW+wums938lucLlIKqfBsPie3LJIh/Vf
FesVffB0H1/77dPBuK/692lHvmHCoxvMK8FAunu8bd42ol5SGtXfLyuNIPS9
d48pb0H38eq1lAa14s1b1e331Kl0dTnvPcgPywGrJEL5+qZYfiq6z2/3rWXn
9VY2Gma71urFVuGVPfZa7Ub3rRCUCm9ms6N1Z7Nnr11OXpYv8mvpRa+3bQH6
0RZ342b6MHR7rH0r1UtGeHmtL0YOOJxLi7t5vz98HZcD9+Z2+abq3Vb09rJ0
ltGSPfYjWVC9YGJY05V2eX//dLt8vHp2ywN3eDdPnv2mc2fLk+UwCaqSWh57
q+KoliyXtdKo31gOxl2vW30RGq8jZVS6vXUu34vXhUXdHoXlWxXx0GkUpaj0
PDZmSi0sNM1mvbWssGLrLh6/vvmLVGoNg7dKVZCrQ2lw70SpVr/yX9ilnBQL
j1ak1PrMuJIKr086sx+V1tXVy32l+R43rIa7iPVZ8uQMU3fiVQX3ejwtlP1H
a/n2Ur4dvJ7eF9ls8BDrtaHk1h9k47X6dPlSeDQ6rWTKOrHXirpPzUm5Xnmo
qVYjFPzn6/mVV3RfikzpL9teL4BeJTZKzLAxvwrMVquo6ov+lfn6Ko36rb5Z
94tWct9/LLKreno9FQrVrvLYexrdVDrNiNVivdntBMPH5rAWX60qzw93dtC8
W3o3Zan0NHt7G72o/s1UK1QqV8F7qRfPBK9SCwdxu/1WS58H3m2rUnq+eZk5
7dO7+8lLuymvJMeer8Zy03x+ebBbwxdWSqUnN45Xcdyczg2h12rczNXqy336
Or5Z9N+Gql97n93F815JOS2WpOip0GzcvXW851r0Wq8+9FLXSIrzUfd1rF9N
55bQuawXn6T+6GX6VK+U29fR/KnTXLRatbsnp6XOvcAKb56sdFmv1pvRZT1u
Lmfe6VV8baXv03L6OBB6NXfUlhpOGrDbxQJ2+HwqNXXdkxtu5fo5Yp15qXF/
O/TYdfWh+u5pD/fxYKK9JGk6cpslYyWw57fosTW57ZpOefVeXyi39cv3AQtK
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
UoajwqogQg3W7csqAF2C5SIV9CUXqZsRIB/YZSM7C7fzdiwl0zAV/iL1xyc2
P5SepsCLQ9iRr3gAG91SdeRLgcwQt1UKqTBsG8pnocmQG7qUa0DYKpSLlFHf
JWme0vuX+33Nn/tQkL23cH+CakQjWKwkIfzB+5ETAKdgb0gccVkPYeyIpzaw
AXEddg+8VIPQl5FQAcwAV4KOCIVQG8BQKZsxD6yQts/fz6VAuznPedC7rZYa
W8o/4YwMZ9euqQW+aXzzvvdJtuhhwzj7MLxStmpt8/o1P+SYssn6AFN2dBJS
RpWUnwql190N7TzbdXvoNv1BW5SOVaz7oRW//1S/iZ9rg4XfLLSH7UKH9fv9
+wHde2zXioVytVRsR8N+/84p9tPXwTCq2kupWOoUmkLhvVQq3jZKhXapUCn2
3pRbs3ulOOVn5U2uX4ft0fWd+vrwumoU4mqplFYL7btKcflkFms1p3/fVYXH
6054Wq7enV42urW74DrtdC/dcnQVSaPCrVyTF5PgRp9Ug2GlEby6abHVP73p
B4uHu/ZD1w4XdUEzq5alN/VbuXIaPM1tqd2ZLF0/qRSfu43TVtUYp6Vw2I+v
m41Vp/F22W8vVGnw3n3pF61BcVgTgml0Wg5YrzO6fX+spcXnRu1Jra9Ob8qF
135Pv4rfe9f3o+Z1+fZeKaTsSX6R9NupPl+Uqt1ndzoSnsaN16cnuXE7LHbT
/uraWhRb08r93fO75BnXTti3pje1hlGdPb8vXxujoe4Vr4paENz3naB7fdMR
Xi9raqn84j/VLiNtrA/Ctllaps9lvbNaPL95417pvRI/PV5dq+W0/XRfC56G
967ZOW3fVQtvqcmEpPniSleXxvC64lzZSUu+v3X6idRoBw9qMJwszaeCXbRv
HvqzZdoOak7YebGVZDS68SZavCgHgsy674XFpf3SWKQFe9wJL6fJS7fbqbx1
0odb5TruPUy9VJ+UK9Ho4eHmxi04s971tKyHl2Z7YjUFa6lMOl7a6iUNyX+Y
a7XHO+hhXn9oVU/v643G4PEuer5bmfcaK97Wq6tT/d7wR3bnqVu9mj3NNaEh
32r6w+s40SbXvZk88p5vLp+nzrK2eI9PK/7y6VG5qYzn5nWlcv/wXPHfrq7L
D/cly2hcd6uhKQtF47nLxrFea9QBksH7TbseSa9G46mujKo3z8F0fNp7KM5O
m8v2q+M8VwM3XXlKwdTudO++e/8idGeGfj9yXge3ilZyrUXTrt1M7Nrl8+lq
EhRn17IXPvb0jhEpSurWovrtS780vls9vTdm8fK1PBGGE+seifFppVB6uo1u
hitmJa+2Nex0H2bqy6w5ZIGmDbREWr11a+F9+XbV1wvdl9fFe/pU1R5LwpJd
Pp7OR9XW81y7jK7YzVy6uZ3Ub1JJWt63R3dh2DA6QcUu9GJjWbOas6lyadWT
0bQ+KT7OI1t4a113H6TJeDBKkqBb7Azl01bdfHSNqTNznp7fnNL8dlYN/FaP
vUdueFWMV8rIbOovl5dTef5cFO6HQ3NeeGk/G7evb8VospD7z9poKpVrzevh
nd4ulduNVjG+Uq5Kb119MR3q0hIVeUmuTp9qD6ouNGY31qwSX1aLi6eeNPde
n+vv09B5ffSe7pP+w9Or3169y8vCqDMwBtevvVVfmiHf8ureVUvuLZtCd/7Y
TVVj9dhnz9eVer9a02b+uL/oLAoP4dJ+dQvXZfOy7szC92VNHnRPn9XFtHkn
T6+Gj57RioTrp6BTeaq+P19fDp1Wo2QW5+0nf9Z7dIav+mNSvE5n18YwZM7r
8DqsnN4Mpooj3yTTwmXJ8uTWWCh2eq1Fv26v3JozTbTX59Gz/XB9WU9umqNn
97Zf75Te3G759Top+nd1o/DY9lLNmsxDL0xqV8t3YRl002EaT3tv8e2LsSpP
TuNyFCbDhtaNlFc2XIaP0/pDbfGSNI1l457Ng9Pm6O2WFYzyIlopPaGYDnpl
pWhHT/M4ms1elaeb0/deWlmljSRENhXWrueP8SJsF2u31eEk7jUdv1cYL8NS
8FwdF1ZCqt5MFnduvcTe++HcS6fzUeUhrNTaqAFGeoOVC16n6MZR8xSKLt40
G8ZsoDrsybMTkz3qfWEldSotSTXf1cS+7NeVQer3Lx8e71vF/mQxrr83oqS+
VGu9onP74LZRSJuVy+uX017nedyIx41HAcWq5rWTu0qv+la5fbwPjf78rnQ7
qii1iVQL1WdWKV21rLfFdPn2UHXL/SIzb14fru89u/s+1pZCuX0Qld6WpUK3
sCwtn66fas+1wsNduQgUKpYGgWNoBaXTjYb3UWy+36xa88eVwLTltKGFL4vx
o3UbLp/nz8qtWrkbXV/KpcpdqjbKiEjd12q35qnltnNV6BVYsT/qD4b94nO7
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

-->

</rfc>
