<?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.20 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-cms-ml-dsa-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.24.0 -->
  <front>
    <title abbrev="ML-DSA in CMS">Use of the ML-DSA Signature Algorithm in the Cryptographic Message Syntax (CMS)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-ml-dsa-00"/>
    <author fullname="Ben Salter">
      <organization>UK National Cyber Security Centre</organization>
      <address>
        <email>ben.s3@ncsc.gov.uk</email>
      </address>
    </author>
    <author fullname="Adam Raine">
      <organization>UK National Cyber Security Centre</organization>
      <address>
        <email>adam.r@ncsc.gov.uk</email>
      </address>
    </author>
    <author initials="D." surname="Van Geest" fullname="Daniel Van Geest">
      <organization>CryptoNext Security</organization>
      <address>
        <email>daniel.vangeest@cryptonext-security.com</email>
      </address>
    </author>
    <date year="2024" month="November" day="04"/>
    <area>Security</area>
    <workgroup>Limited Additional Mechanisms for PKIX and SMIME</workgroup>
    <keyword>cms</keyword>
    <keyword>ml-dsa</keyword>
    <keyword>dilithium</keyword>
    <abstract>
      <?line 70?>

<t>The Module-Lattice-Based Digital Signature Algorithm (ML-DSA), as defined in FIPS 204, is a post-quantum digital signature scheme that aims to be secure against an adversary in posession of a Cryptographically Relevant Quantum Computer (CRQC).
This document specifies the conventions for using the ML-DSA signature algorithm with the Cryptographic Message Syntax (CMS).
In addition, the algorithm identifier and public key syntax are provided.</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-ml-dsa/draft-ietf-lamps-cms-ml-dsa.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-lamps-cms-ml-dsa/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Limited Additional Mechanisms for PKIX and SMIME Working Group mailing list (<eref target="mailto:spasm@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/spasm/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/spasm/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/lamps-wg/cms-ml-dsa"/>.</t>
    </note>
  </front>
  <middle>
    <?line 77?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Module-Lattice-Based Digital Signature Algorithm (ML-DSA) is a digital signature algorithm standardised by NIST as part of their post-quantum cryptography standardization process.
It is intended to be secure against both "traditional" cryptographic attacks, as well as attacks utilising a quantum computer.
It offers smaller signatures and significantly faster runtimes than SLH-DSA <xref target="FIPS203"/>, an alternative post-quantum signature algorithm also standardised by NIST.</t>
      <t>Prior to standardisation, the algorithm was known as Dilithium.  ML-DSA and Dilithium are not compatible.</t>
      <t>ML-DSA offers parameter sets that meet three security levels: ML-DSA-44, ML-DSA-65, and ML-DSA-87.
ML-DSA-44 is intended to meet NIST's level 2 security category, ML-DSA-65 is intended to meet level 3, and ML-DSA-87 is intended to meet level 5.
Each category requires that algorithms be as resistant to attack as a particular cryptographic algorithm.
Attacks on algorithms in the level 2 category are intended to be at least as hard as performing a collision search on SHA256.
Attacks on algorithms in the level 3 category are intended to be at least as hard as performing an exhaustive key search on AES192.
Attacks on algorithms in the level 5 category are intended to be at least as hard as performing an exhaustive key search on AES256.</t>
      <t>EDNOTE: Appendix B of draft-ietf-lamps-dilithium-certificates describes this well, if it's easier just to refer to that.</t>
      <t>For each of the ML-DSA parameter sets, an algorithm identifier OID has been specified.</t>
      <t><xref target="FIPS204"/> also specifies a pre-hashed variant of ML-DSA, called HashML-DSA.
HashML-DSA is not used in CMS.</t>
      <section anchor="conventions-and-definitions">
        <name>Conventions and Definitions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="ml-dsa-algorithm-identifiers">
      <name>ML-DSA Algorithm Identifiers</name>
      <t>Many ASN.1 data structure types use the AlgorithmIdentifier type to identify cryptographic algorithms.
In CMS, AlgorithmIdentifiers are used to identify ML-DSA signatures in the signed-data content type.
They may also appear in X.509 certificates used to verify those signatures.
<xref target="I-D.ietf-lamps-dilithium-certificates"/> describes the use of ML-DSA in X.509 certificates.
The AlgorithmIdentifier type, which is included herein for convenience, is defined as follows:</t>
      <sourcecode type="asn.1"><![CDATA[
AlgorithmIdentifier{ALGORITHM-TYPE, ALGORITHM-TYPE:AlgorithmSet} ::=
        SEQUENCE {
            algorithm   ALGORITHM-TYPE.&id({AlgorithmSet}),
            parameters  ALGORITHM-TYPE.
                   &Params({AlgorithmSet}{@algorithm}) OPTIONAL
        }
]]></sourcecode>
      <t>The above syntax is from <xref target="RFC5911"/> and is compatible with the 2021 ASN.1 syntax <xref target="X680"/>.
See <xref target="RFC5280"/> for the 1988 ASN.1 syntax.</t>
      <t>The fields in the AlgorithmIdentifier type have the following meanings:</t>
      <dl>
        <dt>algorithm:</dt>
        <dd>
          <t>The algorithm field contains an OID that identifies the cryptographic algorithm in use.
The OIDs for ML-DSA are described below.</t>
        </dd>
        <dt>parameters:</dt>
        <dd>
          <t>The parameters field contains parameter information for the algorithm identified by the OID in the algorithm field.
Each ML-DSA parameter set is identified by its own algorithm OID, so there is no relevant information to include in this field.
As such, parameters <bcp14>MUST</bcp14> be omitted when encoding an ML-DSA AlgorithmIdentifier.</t>
        </dd>
      </dl>
      <t>The object identifiers for ML-DSA are defined in the NIST Computer Security Objects Register <xref target="CSOR"/>, and are reproduced here for convenience.</t>
      <sourcecode type="asn.1"><![CDATA[
sigAlgs OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16)
    us(840) organization(1) gov(101) csor(3) nistAlgorithms(4) 3 }

id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 }

id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 }

id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 }

]]></sourcecode>
    </section>
    <section anchor="ml-dsa-key-encoding">
      <name>ML-DSA Key Encoding</name>
      <t><xref section="4" sectionFormat="of" target="I-D.ietf-lamps-dilithium-certificates"/> describes the format of ML-DSA public keys when encoded as a part of the SubjectPublicKeyInfo type.
The signed-data content type as described in <xref target="RFC5652"/> does not encode public keys directly, but CMS content types defined by other documents do.
For example, <xref target="RFC5272"/> describes Certificate Management over CMS, and its PKIData content utilises the SubjectPublicKeyInfo type to encode public keys for certificate requests.
When the SubjectPublicKeyInfo type is used in CMS, ML-DSA public keys <bcp14>MUST</bcp14> be encoded as described in <xref target="I-D.ietf-lamps-dilithium-certificates"/></t>
      <t><xref target="RFC5958"/> describes the Asymmetric Key Package CMS content type, and the OneAsymmetricKey type for encoding asymmetric keypairs.
When an ML-DSA private key or keypair is encoded as a OneAsymmetricKey, it follows the description in <xref section="6" sectionFormat="of" target="I-D.ietf-lamps-dilithium-certificates"/>.</t>
      <t>The ASN.1 descriptions of ML-DSA keys are repeated below for convenience.</t>
      <t>EDNOTE: This section should reflect the content of draft-ietf-lamps-dilithium-certificates.
The ASN.1 public key definitions in that document are not yet fully expanded, so the below is a best guess based on the equivalent SLH-DSA keys.
Alternatively, draft-ietf-lamps-dilithium-certificates could reflect this document, as is the case for the SLH-DSA X.509/CMS drafts.</t>
      <sourcecode type="asn.1"><![CDATA[
pk-ml-dsa-44 PUBLIC-KEY ::= {
  IDENTIFIER id-ml-dsa-44
  -- KEY no ASN.1 wrapping --
  CERT-KEY-USAGE
    { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
  -- PRIVATE-KEY no ASN.1 wrapping -- }

pk-ml-dsa-65 PUBLIC-KEY ::= {
  IDENTIFIER id-ml-dsa-65
  -- KEY no ASN.1 wrapping --
  CERT-KEY-USAGE
    { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
  -- PRIVATE-KEY no ASN.1 wrapping -- }

pk-ml-dsa-87 PUBLIC-KEY ::= {
  IDENTIFIER id-ml-dsa-87
  -- KEY no ASN.1 wrapping --
  CERT-KEY-USAGE
    { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
  -- PRIVATE-KEY no ASN.1 wrapping -- }

ML-DSA-PublicKey ::= OCTET STRING
ML-DSA-PrivateKey ::= OCTET STRING
]]></sourcecode>
    </section>
    <section anchor="signed-data-conventions">
      <name>Signed-data Conventions</name>
      <section anchor="pure-mode-vs-pre-hash-mode">
        <name>Pure mode vs pre-hash mode</name>
        <t><xref target="RFC5652"/> specifies that digital signatures for CMS are produced using a digest of the message to be signed, and the signer's private key.
At the time of publication of that RFC, all signature algorithms supported in CMS required a message digest to be calculated externally to that algorithm, which would then be supplied to the algorithm implementation when calculating and verifying signatures.
Since then, EdDSA <xref target="RFC8032"/>, SLH-DSA <xref target="FIPS203"/> have also been standardised, and these algorithms support both a "pure" and "pre-hash" mode.
In the pre-hash mode, a message digest (the "pre-hash") is calculated separately and supplied to the signature algorithm as described above.
In the pure mode, the message to be signed or verified is instead supplied directly to the signature algorithm.
ML-DSA also supports a pre-hash and pure mode, though we follow the convention set by EdDSA in CMS <xref target="RFC8419"/> and SLH-DSA in CMS <xref target="I-D.ietf-lamps-cms-sphincs-plus"/> in that only the pure mode of ML-DSA is used in CMS.
That is, the pre-hash mode of ML-DSA <bcp14>MUST NOT</bcp14> be used in CMS.</t>
      </section>
      <section anchor="signature-generation-and-verification">
        <name>Signature generation and verification</name>
        <t><xref target="RFC5652"/> describes the two methods that are used to calculate and verify signatures in CMS.
One method is used when signed attributes are present in the signedAttrs field of the relevant SignerInfo, and another is used when signed attributes are absent.
Each method produces a different "message digest" to be supplied to the signature algorithm in question, but because the pure mode of ML-DSA is used, the "message digest" is in fact the entire message.
Use of signed attributes is preferred, but the conventions for signed-data without signed attributes is also described below for completeness.</t>
        <t>EDNOTE: Would it make sense to make a stronger statement here?
For instance, that CMS implements <bcp14>MAY</bcp14> reject signatures if they don't contain signed attributes, or that generation/verification of signed-data without signed attributes <bcp14>SHOULD NOT</bcp14> be supported?
Some of the discussion around the use of context strings for new signature algorithms has highlighted the dangers here, as has Falko's paper here: https://eprint.iacr.org/2023/1801</t>
        <t>When signed attributes are absent, ML-DSA (pure mode) signatures are computed over the content of the signed-data.
As described in <xref section="5.4" sectionFormat="of" target="RFC5652"/>, the "content" of a signed-data is the value of the encapContentInfo eContent OCTET STRING.
The tag and length octets are not included.</t>
        <t>When signed attributes are included, ML-DSA (pure mode) signatures are computed over a DER encoding of the SignerInfo's signedAttrs field.
As described in <xref section="5.4" sectionFormat="of" target="RFC5652"/>, this encoding does include the tag and length octets, but an EXPLICIT SET OF tag is used rather than the IMPLICIT [0] tag that appears in the final message.
The signedAttrs field <bcp14>MUST</bcp14> at minimum include a content-type attribute and a message-digest attribute.
The message-digest attribute contains a hash of the content of the signed-data, where the content is as described for the absent signed attributes case above.
Recalculation of the hash value by the recipient is an important step in signature verification.
Choice of digest algorithm is up to the signer; algorithms for each parameter set are recommended below.</t>
        <t><xref section="4" sectionFormat="of" target="I-D.ietf-lamps-cms-sphincs-plus"/> describes how, when the content of a signed-data is large, performance may be improved by including signed attributes.
This is as true for ML-DSA as it is for SLH-DSA, although ML-DSA signature generation and verification is significantly faster than SLH-DSA.</t>
        <t>ML-DSA has a context string input that can be used to ensure that different signatures are generated for different application contexts.
When using ML-DSA as described in this document, the context string is not used.</t>
        <t>EDNOTE: It's been suggested that the context string could be used to separate content-only/signed attributes signatures.
SLH-DSA and ML-DSA should stay in alignment here.
If not specified here, are there other ways the context string could be used, e.g. with a different algorithm identifier or a signed attribute?
If so, we could add a note to signpost that this is could appear in a future standard.</t>
      </section>
      <section anchor="signerinfo-content">
        <name>SignerInfo content</name>
        <t>When using ML-DSA, the fields of a SignerInfo are used as follows:</t>
        <dl>
          <dt>digestAlgorithm:</dt>
          <dd>
            <t>Per <xref section="5.3" sectionFormat="of" target="RFC5652"/>, the digestAlgorithm field identifies the message digest algorithm used by the signer, and any associated parameters.
To ensure collision resistance, the identified message digest algorithm <bcp14>SHOULD</bcp14> produce a hash value of a size that is at least twice the collision strength of the internal commitment hash used by ML-DSA.<br/>
The SHAKE hash functions defined in <xref target="FIPS202"/> are used internally by ML-DSA, and hence the combinations in <xref target="tab-digests"/> are <bcp14>RECOMMENDED</bcp14> for use with ML-DSA.
<xref target="RFC8702"/> describes how SHAKE128 and SHAKE256 are used in CMS. The id-shake128 and id-shake256 digest algorithm identifiers are used and the parameters field <bcp14>MUST</bcp14> be omitted.</t>
          </dd>
        </dl>
        <table anchor="tab-digests">
          <name>Recommended message digest algorithms for ML-DSA signature algorithms</name>
          <thead>
            <tr>
              <th align="left">Signature algorithm</th>
              <th align="left">Message digest algorithm</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">ML-DSA-44</td>
              <td align="left">SHAKE128</td>
            </tr>
            <tr>
              <td align="left">ML-DSA-65</td>
              <td align="left">SHAKE256</td>
            </tr>
            <tr>
              <td align="left">ML-DSA-87</td>
              <td align="left">SHAKE256</td>
            </tr>
          </tbody>
        </table>
        <dl>
          <dt>signatureAlgorithm:</dt>
          <dd>
            <t>When signing a signed-data using ML-DSA, the signatureAlgorithm field <bcp14>MUST</bcp14> contain one of the ML-DSA signature algorithm OIDs, and the parameters field <bcp14>MUST</bcp14> be absent. The algorithm OID <bcp14>MUST</bcp14> be one of the following OIDs described in <xref target="ml-dsa-algorithm-identifiers"/>:</t>
          </dd>
        </dl>
        <table anchor="tab-oids">
          <name>Signature algorithm identifier OIDs for ML-DSA</name>
          <thead>
            <tr>
              <th align="left">Signature algorithm</th>
              <th align="left">Algorithm Identifier OID</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">ML-DSA-44</td>
              <td align="left">id-ml-dsa-44</td>
            </tr>
            <tr>
              <td align="left">ML-DSA-65</td>
              <td align="left">id-ml-dsa-65</td>
            </tr>
            <tr>
              <td align="left">ML-DSA-87</td>
              <td align="left">id-ml-dsa-87</td>
            </tr>
          </tbody>
        </table>
        <dl>
          <dt>signature:</dt>
          <dd>
            <t>The signature field contains the signature value resulting from the use of the ML-DSA signature algorithm identified by the signatureAlgorithm field.
 The ML-DSA (pure mode) signature generation operation is specified in Section 5.2 of <xref target="FIPS204"/>, and the signature verification operation is specified in Section 5.3 of <xref target="FIPS204"/>.
 Note that <xref section="5.6" sectionFormat="of" target="RFC5652"/> places further requirements on the successful verification of a signature.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The relevant security considerations from <xref target="RFC5652"/> apply to this document as well.</t>
      <t>The security considerations for <xref target="I-D.ietf-lamps-dilithium-certificates"/> are equally applicable to this document.</t>
      <t>Security of the ML-DSA private key is critical.
Compromise of the private key will enable an adversary to forge arbitrary signatures.</t>
      <t>By default ML-DSA signature generation uses randomness from two sources: fresh random data generated during signature generation, and precomputed random data included in the signer's private key.
This is referred to as the "hedged" variant of ML-DSA.
Inclusion of both sources of random can help mitigate against faulty random number generators and side-channel attacks.
<xref target="FIPS204"/> also permits creating deterministic signatures using just the precomputed random data in the signer's private key.
The signer <bcp14>SHOULD NOT</bcp14> use the deterministic variant of ML-DSA on platforms where side-channel attacks are a concern.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to assign an object identifier for id-mod-ml-dsa-2024, for the ASN.1 module identifier found in <xref target="asn1"/>.
This should be allocated in the "SMI Security for PKIX Module Identifier" registry (1.3.6.1.5.5.7.0).</t>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledgements.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="FIPS204" target="https://csrc.nist.gov/pubs/fips/204/final">
          <front>
            <title>Module-Lattice-Based Digital Signature Standard</title>
            <author initials="" surname="NIST" fullname="National Institute of Standards and Technology">
              <organization/>
            </author>
            <date year="2024" month="August" day="13"/>
          </front>
        </reference>
        <reference anchor="CSOR" target="https://csrc.nist.gov/projects/computer-security-objects-register/algorithm-registration">
          <front>
            <title>Computer Security Objects Register</title>
            <author initials="" surname="NIST" fullname="National Institute of Standards and Technology">
              <organization/>
            </author>
            <date year="2024" month="August" day="20"/>
          </front>
        </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="I-D.ietf-lamps-dilithium-certificates">
          <front>
            <title>Internet X.509 Public Key Infrastructure: Algorithm Identifiers for ML-DSA</title>
            <author fullname="Jake Massimo" initials="J." surname="Massimo">
              <organization>AWS</organization>
            </author>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>AWS</organization>
            </author>
            <author fullname="Sean Turner" initials="S." surname="Turner">
              <organization>sn3rd</organization>
            </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <date day="4" month="November" year="2024"/>
            <abstract>
              <t>   Digital signatures are used within X.509 certificates, Certificate
   Revocation Lists (CRLs), and to sign messages.  This document
   describes the conventions for using FIPS 204, the Module-Lattice-
   Based Digital Signature Algorithm (ML-DSA) in Internet X.509
   certificates and certificate revocation lists.  The conventions for
   the associated signatures, subject public keys, and private key are
   also described.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-dilithium-certificates-05"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="FIPS202">
          <front>
            <title>SHA-3 standard :: permutation-based hash and extendable-output functions</title>
            <author>
              <organization/>
            </author>
            <date year="2015"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.fips.202"/>
          <refcontent>National Institute of Standards and Technology (U.S.)</refcontent>
        </reference>
        <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</refcontent>
        </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="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. ITU-T Recommendation X.680 (2021) | ISO/IEC 8824-1:2021.</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2021" month="February"/>
          </front>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC5272">
          <front>
            <title>Certificate Management over CMS (CMC)</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <author fullname="M. Myers" initials="M." surname="Myers"/>
            <date month="June" year="2008"/>
            <abstract>
              <t>This document defines the base syntax for CMC, a Certificate Management protocol using the Cryptographic Message Syntax (CMS). This protocol addresses two immediate needs within the Internet Public Key Infrastructure (PKI) community:</t>
              <t>1. The need for an interface to public key certification products and services based on CMS and PKCS #10 (Public Key Cryptography Standard), and</t>
              <t>2. The need for a PKI enrollment protocol for encryption only keys due to algorithm or hardware design.</t>
              <t>CMC also requires the use of the transport document and the requirements usage document along with this document for a full definition. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5272"/>
          <seriesInfo name="DOI" value="10.17487/RFC5272"/>
        </reference>
        <reference anchor="RFC5958">
          <front>
            <title>Asymmetric Key Packages</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document defines the syntax for private-key information and a content type for it. Private-key information includes a private key for a specified public-key algorithm and a set of attributes. The Cryptographic Message Syntax (CMS), as defined in RFC 5652, can be used to digitally sign, digest, authenticate, or encrypt the asymmetric key format content type. This document obsoletes RFC 5208. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5958"/>
          <seriesInfo name="DOI" value="10.17487/RFC5958"/>
        </reference>
        <reference anchor="RFC8032">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA). The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves. An example implementation and test vectors are provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8032"/>
          <seriesInfo name="DOI" value="10.17487/RFC8032"/>
        </reference>
        <reference anchor="RFC8419">
          <front>
            <title>Use of Edwards-Curve Digital Signature Algorithm (EdDSA) Signatures in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies the conventions for using the Edwards-curve Digital Signature Algorithm (EdDSA) for curve25519 and curve448 in the Cryptographic Message Syntax (CMS). For each curve, EdDSA defines the PureEdDSA and HashEdDSA modes. However, the HashEdDSA mode is not used with the CMS. In addition, no context string is used with the CMS.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8419"/>
          <seriesInfo name="DOI" value="10.17487/RFC8419"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-cms-sphincs-plus">
          <front>
            <title>Use of the SLH-DSA Signature Algorithm in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization>Vigil Security, LLC</organization>
            </author>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>Amazon Web Services</organization>
            </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <date day="4" month="November" year="2024"/>
            <abstract>
              <t>   SLH-DSA is a stateless hash-based signature scheme.  This document
   specifies the conventions for using the SLH-DSA signature algorithm
   with the Cryptographic Message Syntax (CMS).  In addition, the
   algorithm identifier and public key syntax are provided.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-sphincs-plus-12"/>
        </reference>
        <reference anchor="RFC8702">
          <front>
            <title>Use of the SHAKE One-Way Hash Functions in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="P. Kampanakis" initials="P." surname="Kampanakis"/>
            <author fullname="Q. Dang" initials="Q." surname="Dang"/>
            <date month="January" year="2020"/>
            <abstract>
              <t>This document updates the "Cryptographic Message Syntax (CMS) Algorithms" (RFC 3370) and describes the conventions for using the SHAKE family of hash functions in the Cryptographic Message Syntax as one-way hash functions with the RSA Probabilistic Signature Scheme (RSASSA-PSS) and Elliptic Curve Digital Signature Algorithm (ECDSA). The conventions for the associated signer public keys in CMS are also described.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8702"/>
          <seriesInfo name="DOI" value="10.17487/RFC8702"/>
        </reference>
      </references>
    </references>
    <?line 319?>

<section anchor="asn1">
      <name>ASN.1 Module</name>
      <sourcecode type="asn.1"><![CDATA[
ML-DSA-Module-2024
  { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
    id-smime(16) id-mod(0) id-mod-ml-dsa-2024(TBD) }

DEFINITIONS IMPLICIT TAGS ::= BEGIN

EXPORTS ALL;

IMPORTS PUBLIC-KEY, SIGNATURE-ALGORITHM, SMIME-CAPS
  FROM AlgorithmInformation-2009 -- in [RFC5911]
  { iso(1) identified-organization(3) dod(6) internet(1)
    security(5) mechanisms(5) pkix(7) id-mod(0)
    id-mod-algorithmInformation-02(58) } ;

--
-- Object Identifiers
--

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

id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 }

id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 }

id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 }

--
-- Signature Algorithm Identifiers
--

sa-ml-dsa-44 SIGNATURE-ALGORITHM ::= {
  IDENTIFIER id-ml-dsa-44
  PARAMS ARE absent
  PUBLIC-KEYS { pk-ml-dsa-44 }
  SMIME-CAPS { IDENTIFIED BY id-ml-dsa-44 } }

sa-ml-dsa-65 SIGNATURE-ALGORITHM ::= {
  IDENTIFIER id-ml-dsa-65
  PARAMS ARE absent
  PUBLIC-KEYS { pk-ml-dsa-65 }
  SMIME-CAPS { IDENTIFIED BY id-ml-dsa-65 } }

sa-ml-dsa-87 SIGNATURE-ALGORITHM ::= {
  IDENTIFIER id-ml-dsa-87
  PARAMS ARE absent
  PUBLIC-KEYS { pk-ml-dsa-87 }
  SMIME-CAPS { IDENTIFIED BY id-ml-dsa-87 } }

--
-- Public Keys
--

pk-ml-dsa-44 PUBLIC-KEY ::= {
  IDENTIFIER id-ml-dsa-44
  -- KEY no ASN.1 wrapping --
  CERT-KEY-USAGE
    { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
  -- PRIVATE-KEY no ASN.1 wrapping -- }

pk-ml-dsa-65 PUBLIC-KEY ::= {
  IDENTIFIER id-ml-dsa-65
  -- KEY no ASN.1 wrapping --
  CERT-KEY-USAGE
    { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
  -- PRIVATE-KEY no ASN.1 wrapping -- }

pk-ml-dsa-87 PUBLIC-KEY ::= {
  IDENTIFIER id-ml-dsa-87
  -- KEY no ASN.1 wrapping --
  CERT-KEY-USAGE
    { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
  -- PRIVATE-KEY no ASN.1 wrapping -- }

ML-DSA-PublicKey ::= OCTET STRING

ML-DSA-PrivateKey ::= OCTET STRING


--
-- Expand the signature algorithm set used by CMS [RFC5911]
--

SignatureAlgorithmSet SIGNATURE-ALGORITHM ::= {
  sa-ml-dsa-44 |
  sa-ml-dsa-65 |
  sa-ml-dsa-87,
  ... }

SMimeCaps SMIME-CAPS ::= {
  sa-ml-dsa-44.&smimeCaps |
  sa-ml-dsa-65.&smimeCaps |
  sa-ml-dsa-87.&smimeCaps,
  ... }

END
]]></sourcecode>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
