<?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.19 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-salter-lamps-cms-ml-dsa-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <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-salter-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.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2024" month="October" day="14"/>
    <area>SEC</area>
    <workgroup>LAMPS</workgroup>
    <keyword>cms</keyword>
    <keyword>ml-dsa</keyword>
    <keyword>dilithium</keyword>
    <abstract>
      <?line 66?>

<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>
  </front>
  <middle>
    <?line 73?>

<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="22" month="July" 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 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-04"/>
        </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="21" month="August" 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-09"/>
        </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 315?>

<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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
7to2j7zsHjsvy5sPLk4pxNr6XwbKuA3bSQAA

-->

</rfc>
