<?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.5 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-gazdag-x509-slhdsa-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.4 -->
  <front>
    <title abbrev="SLH-DSA for X.509">Internet X.509 Public Key Infrastructure: Algorithm Identifiers for SLH-DSA</title>
    <seriesInfo name="Internet-Draft" value="draft-gazdag-x509-slhdsa-00"/>
    <author initials="K." surname="Bashiri" fullname="Kaveh Bashiri">
      <organization>BSI</organization>
      <address>
        <email>kaveh.bashiri.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="S." surname="Fluhrer" fullname="Scott Fluhrer">
      <organization>Cisco Systems</organization>
      <address>
        <email>sfluhrer@cisco.com</email>
      </address>
    </author>
    <author initials="S." surname="Gazdag" fullname="Stefan Gazdag">
      <organization>genua GmbH</organization>
      <address>
        <email>ietf@gazdag.de</email>
      </address>
    </author>
    <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>75005</code>
          <country>France</country>
        </postal>
        <email>daniel.vangeest.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="S." surname="Kousidis" fullname="Stavros Kousidis">
      <organization>BSI</organization>
      <address>
        <email>kousidis.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2024" month="February" day="22"/>
    <keyword>SLH-DSA</keyword>
    <keyword>SPHINCS+</keyword>
    <keyword>PQ Signatures</keyword>
    <keyword>post-quantum X.509</keyword>
    <abstract>
      <?line 75?>

<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 Stateless Hash-Based Digital Signature Standard (SLH-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>
      <t>[EDNOTE: This draft is not expected to be finalized before the NIST PQC Project has standardized FIPS 205 Stateless Hash-Based Digital Signature Standard.  The current FIPS draft was published August 24, 2023 for public review.  Final versions are expected by April 2024. This specification will use object identifiers for the new algorithms that are assigned by NIST, and will use placeholders until these are released.]</t>
      <!-- End of Abstract -->



    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-gazdag-x509-slhdsa/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/x509-hbs/draft-x509-slhdsa"/>.</t>
    </note>
  </front>
  <middle>
    <?line 83?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Stateless Hash-Based Digital Signatures (SLH-DSA) is a quantum-resistant digital signature scheme standardized in <xref target="FIPS205"/> [EDNOTE: <xref target="FIPS205-ipd"/> until officially published] by the US National Institute of Standards and Technology (NIST) PQC project <xref target="NIST-PQC"/>. This document specifies the use of the SLH-DSA algorithm in Public Key Infrastructure X.509 (PKIX) certificates and Certificate Revocation Lists (CRLs).</t>
      <t>SLH-DSA offers three security levels.  The parameters for each of the security levels were chosen to provide 128 bits of security, 192 bits of security, and 256 bits of security.  A separate algorithm identifier has been assigned for SLH-DSA at each of these security levels.</t>
      <t>[EDNOTE: TODO: sha2 vs shake, fast vs small]</t>
      <t>This specification includes conventions for the signatureAlgorithm, signatureValue, signature, and subjectPublicKeyInfo fields within Internet X.509 certificates and CRLs <xref target="RFC5280"/>, like <xref target="RFC3279"/> did for classic cryptography and <xref target="RFC5480"/> did for elliptic curve cryptography.  It describes the encoding of digital signatures and public keys generated with quantum-resistant signature algorithm SLH-DSA.</t>
      <!-- End of introduction section -->

</section>
    <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?>

<!-- EDNOTE: [DVG] I added this to my own (unpublished) draft based on draft-ietf-lamps-cms-sphincs-plus. draft-ietf-lamps-dilithium-certificates, on which we are basing this draft doesn't have such an extensive overview section. If draft-ietf-lamps-cms-sphincs-plus gets reduced in scope and refers more to this draft, we could add this text.-->
<!--
# SLH-DSA Hash-based Signature Algorithm Overview

SLH-DSA is a hash-based signature scheme which consists of a few time signature construction, namely Forest of Random Subsets (FORS) and a hypertree.  FORS signs a message with a private key.  The corresponding FORS public keys are the leaves in k binary trees.  The roots of these trees are hashed together to form a FORS root.  SLH-DSA uses a one-time signature scheme called WOTS+. The FORS tree roots are signed by a WOTS+ one-time signature private key.  The corresponding WOTS+ public keys form the leaves in d-layers of Merkle subtrees in the SLH-DSA hypertree.  The bottom layer of that hypertree signs the FORS roots with WOTS+. The root of the bottom Merkle subtrees are then signed with WOTS+ and the corresponding WOTS+ public keys form the leaves of the next level up subtree.  Subtree roots are consequently signed by their corresponding subtree layers until we reach the top subtree.  The top layer subtree forms the hypertree root which is trusted at the verifier.

A SLH-DSA signature consists of the FORS signature, the WOTS+ signature in each layer, and the path to the root of each subtree until the root of the hypertree is reached.

A SLH-DSA signature is verified by verifying the FORS signature, the WOTS+ signatures and the path to the root of each subtree.  When reaching the root of the hypertree, the signature verifies only if it hashes to the pre-trusted root of the SLH-DSA hypertree.

SLH-DSA is a stateless hash-based signature algorithm.  Stateful hash-based signature schemes require that the WOTS+ private key (generated by using a state index) is never reused or the scheme loses it security.  Although its security decreases, FORS which is used at the bottom of the SLH-DSA hypertree does not collapse if the same private key used to sign two or more different messages like in stateful hash-based signature schemes.  Without the need for state kept by the signer to ensure it is not reused, SLH-DSA is much less fragile.

SLH-DSA was designed to sign up to 2^64 messages and offers three security levels.  The parameters of the SLH-DSA hypertree include the security parameter, the hash function, the tree height, the number of layers of subtrees, the Winternitz parameter of WOTS+, the number of FORS trees and leaves in each.  The parameters for each of the security levels were chosen to provide 128 bits of security, 192 bits of security, and 256 bits of security.
-->

</section>
    <section anchor="sec-alg-ids">
      <name>Algorithm Identifiers</name>
      <t>This specification uses placeholders for object identifiers until the identifiers for the new algorithms are assigned by NIST.</t>
      <t>The AlgorithmIdentifier type, which is included herein for convenience, is defined as follows:</t>
      <artwork><![CDATA[
    AlgorithmIdentifier  ::=  SEQUENCE  {
        algorithm   OBJECT IDENTIFIER,
        parameters  ANY DEFINED BY algorithm OPTIONAL
    }

    |  NOTE: The above syntax is from [RFC5280] and matches the
    |  version used therein, i.e., the 1988 ASN.1 syntax.  See
    |  [RFC5912] for ASN.1 copmatible with the 2015 ASN.1 syntax.
]]></artwork>
      <t>The fields in AlgorithmIdentifier have the following meanings:</t>
      <ul spacing="normal">
        <li>
          <t>algorithm identifies the cryptographic algorithm with an object identifier.</t>
        </li>
        <li>
          <t>parameters, which are optional, are the associated parameters for the algorithm identifier in the algorithm field.</t>
        </li>
      </ul>
      <t>The OIDs are:</t>
      <artwork><![CDATA[
    id-alg-slh-dsa-128s-shake OBJECT IDENTIFIER ::= {
            joint-iso-itu-t(2) country(16) us(840) organization(1)
            gov(101) csor(3) nistAlgorithm(4) sigAlgs(3) TBD }

    id-alg-slh-dsa-128f-shake OBJECT IDENTIFIER ::= {
            joint-iso-itu-t(2) country(16) us(840) organization(1)
            gov(101) csor(3) nistAlgorithm(4) sigAlgs(3) TBD }

    id-alg-slh-dsa-128s-sha2 OBJECT IDENTIFIER ::= {
            joint-iso-itu-t(2) country(16) us(840) organization(1)
            gov(101) csor(3) nistAlgorithm(4) sigAlgs(3) TBD }

    id-alg-slh-dsa-128f-sha2 OBJECT IDENTIFIER ::= {
            joint-iso-itu-t(2) country(16) us(840) organization(1)
            gov(101) csor(3) nistAlgorithm(4) sigAlgs(3) TBD }

    id-alg-slh-dsa-192s-shake OBJECT IDENTIFIER ::= {
            joint-iso-itu-t(2) country(16) us(840) organization(1)
            gov(101) csor(3) nistAlgorithm(4) sigAlgs(3) TBD }

    id-alg-slh-dsa-192f-shake OBJECT IDENTIFIER ::= {
            joint-iso-itu-t(2) country(16) us(840) organization(1)
            gov(101) csor(3) nistAlgorithm(4) sigAlgs(3) TBD }

    id-alg-slh-dsa-256s-shake OBJECT IDENTIFIER ::= {
            joint-iso-itu-t(2) country(16) us(840) organization(1)
            gov(101) csor(3) nistAlgorithm(4) sigAlgs(3) TBD }

    id-alg-slh-dsa-256f-shake OBJECT IDENTIFIER ::= {
            joint-iso-itu-t(2) country(16) us(840) organization(1)
            gov(101) csor(3) nistAlgorithm(4) sigAlgs(3) TBD }
]]></artwork>
      <t>The contents of the parameters component for each algorithm are absent.</t>
    </section>
    <section anchor="slh-dsa-signatures-in-pkix">
      <name>SLH-DSA Signatures in PKIX</name>
      <t>SLH-DSA is a digital signature scheme built upon hash functions. The security of SLH-DSA relies on the presumed diffculty of finding preimages for hash functions as well as several related properties of the same hash functions.</t>
      <t>Signatures are used in a number of different ASN.1 structures.  As shown in the ASN.1 representation from <xref target="RFC5280"/> below, in an X.509 certificate, a signature is encoded with an algorithm identifier in the signatureAlgorithm attribute and a signatureValue attribute that contains the actual signature.</t>
      <artwork><![CDATA[
    Certificate  ::=  SEQUENCE  {
        tbsCertificate       TBSCertificate,
        signatureAlgorithm   AlgorithmIdentifier,
        signatureValue       BIT STRING  }
]]></artwork>
      <t>Signatures are also used in the CRL list ASN.1 representation from <xref target="RFC5280"/> below.  In a X.509 CRL, a signature is encoded with an algorithm identifier in the signatureAlgorithm attribute and a signatureValue attribute that contains the actual signature.</t>
      <artwork><![CDATA[
    CertificateList  ::=  SEQUENCE  {
        tbsCertificate       TBSCertList,
        signatureAlgorithm   AlgorithmIdentifier,
        signatureValue       BIT STRING  }
]]></artwork>
      <t>The identifiers defined in <xref target="sec-alg-ids"/> can be used as the AlgorithmIdentifier in the signatureAlgorithm field in the sequence Certificate/CertificateList and the signature field in the sequence TBSCertificate/TBSCertList in certificates CRLs, respectively, <xref target="RFC5280"/>.  The parameters of these signature algorithms are absent, as explained in <xref target="sec-alg-ids"/>.</t>
      <t>The signatureValue field contains the corresponding SLH-DSA signature computed upon the ASN.1 DER encoded tbsCertificate <xref target="RFC5280"/>.</t>
      <t>Conforming Certification Authority (CA) implementations <bcp14>MUST</bcp14> specify the algorithms explicitly by using the OIDs specified in <xref target="sec-alg-ids"/> when encoding SLH-DSA signatures in certificates and CRLs.  Conforming client implementations that process certificates and CRLs using SLH-DSA <bcp14>MUST</bcp14> recognize the corresponding OIDs. Encoding rules for SLH-DSA signature values are specified <xref target="sec-alg-ids"/>.</t>
      <t>When any of the id-alg-slh-dsa-* identifiers appear in the algorithm field as an AlgorithmIdentifier, the encoding <bcp14>MUST</bcp14> omit the parameters field. That is, the AlgorithmIdentifier <bcp14>SHALL</bcp14> be a SEQUENCE of one component, the id-alg-slh-dsa-* OID.</t>
    </section>
    <section anchor="sec-pub-keys">
      <name>SLH-DSA Public Keys in PKIX</name>
      <t>In the X.509 certificate, the subjectPublicKeyInfo field has the SubjectPublicKeyInfo type, which has the following ASN.1 syntax:</t>
      <artwork><![CDATA[
    SubjectPublicKeyInfo  ::=  SEQUENCE  {
        algorithm         AlgorithmIdentifier,
        subjectPublicKey  BIT STRING
    }
]]></artwork>
      <t>The fields in SubjectPublicKeyInfo have the following meanings:</t>
      <ul spacing="normal">
        <li>
          <t>algorithm is the algorithm identifier and parameters for the public key (see above).</t>
        </li>
        <li>
          <t>subjectPublicKey contains the byte stream of the public key.</t>
        </li>
      </ul>
      <t>The SLH--DSA public key <bcp14>MUST</bcp14> be encoded using the ASN.1 type SLH-DSA-PublicKey:</t>
      <artwork><![CDATA[
    SLH-DSA-PublicKey ::= OCTET STRING
]]></artwork>
      <t>where SLH-DSA-PublicKey is a concatenation of the PK.seed and PK.root values as defined in Section 9.1 of <xref target="FIPS205"/>.  These parameters <bcp14>MUST</bcp14> be encoded as a
single OCTET STRING.  The size required to hold a SLH-DSA-PublicKey public key element is therefore 2*n bytes, where n is 16, 24, or 32, depending on the parameter set.</t>
      <t>The id-alg-slh-dsa-* identifiers defined in <xref target="sec-alg-ids"/> <bcp14>MUST</bcp14> be used as the algorithm field in the SubjectPublicKeyInfo sequence <xref target="RFC5280"/> to identify a SLH-DSA public key.</t>
      <t>The SLH-DSA public key (a concatenation of seed and root that is an OCTET STRING) is mapped to a subjectPublicKey (a value of type BIT STRING) as follows: the most significant bit of the OCTET STRING value becomes the most significant bit of the BIT STRING value, and so on; the least significant bit of the OCTET STRING becomes the least significant bit of the BIT STRING.</t>
      <t>The following is an example of a [TODO: pick an OID] public key encoded using the textual encoding defined in <xref target="RFC7468"/>.</t>
      <artwork><![CDATA[
-----BEGIN PUBLIC KEY-----
TODO
-----END PUBLIC KEY-----
]]></artwork>
      <t>Conforming CA implementations <bcp14>MUST</bcp14> specify the X.509 public key algorithm explicitly by using the OIDs specified in <xref target="sec-alg-ids"/> when using SLH-DSA public keys in certificates and CRLs.  Conforming client implementations that process SLH-DSA public keys when processing certificates and CRLs <bcp14>MUST</bcp14> recognize the corresponding OIDs.</t>
    </section>
    <section anchor="key-usage-bits">
      <name>Key Usage Bits</name>
      <t>The intended application for the key is indicated in the keyUsage certificate extension; see Section 4.2.1.3 of <xref target="RFC5280"/>.  If the keyUsage extension is present in a certificate that indicates an id-alg-slh-dsa-* identifier in the SubjectPublicKeyInfo, then the at least one of following <bcp14>MUST</bcp14> be present:</t>
      <artwork><![CDATA[
    digitalSignature; or
    nonRepudiation; or
    keyCertSign; or
    cRLSign.
]]></artwork>
      <t>Requirements about the keyUsage extension bits defined in <xref target="RFC5280"/> still apply.</t>
    </section>
    <section anchor="slh-dsa-private-keys">
      <name>SLH-DSA Private Keys</name>
      <!-- Borrowed liberally from section 7 of RFC8410 -->
<t>"Asymmetric Key Packages" <xref target="RFC5958"/> describes how to encode a private key in a structure that both identifies what algorithm the private key is for and allows for the public key and additional attributes about the key to be included as well.  For illustration, the ASN.1 structure OneAsymmetricKey is replicated below.  The algorithm-specific details of how a private key is encoded are left for the document describing the algorithm itself.</t>
      <sourcecode type="asn1"><![CDATA[
   OneAsymmetricKey ::= SEQUENCE {
      version Version,
      privateKeyAlgorithm PrivateKeyAlgorithmIdentifier,
      privateKey PrivateKey,
      attributes [0] IMPLICIT Attributes OPTIONAL,
      ...,
      [[2: publicKey [1] IMPLICIT PublicKey OPTIONAL ]],
      ...
   }

   PrivateKey ::= OCTET STRING

   PublicKey ::= BIT STRING
]]></sourcecode>
      <t>An SLH-DSA private key consists of the concatenation of 4 n-byte elements, SK.seed, SK.prf, PK.seed and PK.root as defined in Section 9.1 of <xref target="FIPS205"/>.  The size required to hold an SLH-DSA-PrivateKey private key is therefore 4*n bytes, where n is 16, 24, or 32, depending on the parameter set.</t>
      <t>For the keys defined in this document, the private key is always an opaque byte sequence.  The ASN.1 type SLH-DSA-PrivateKey is defined in this document to hold the byte sequence.  Thus, when encoding a OneAsymmetricKey object, the private key is wrapped in a SLH-DSA-PrivateKey object and wrapped by the OCTET STRING of the
"privateKey" field.</t>
      <t>[EDNOTE: the above paragraph is from RFC8410, and it reads to me like there's a double wrapping, i.e. OCTET STRING { OCTET STRING { private key bytes} }, however that's not the case.  Am I reading it wrong, or is the text unclear?]</t>
      <sourcecode type="asn1"><![CDATA[
   SLH-DSA-PrivateKey ::= OCTET STRING
]]></sourcecode>
      <t>To encode an SLH-DSA private key, the "privateKey" field will hold the encoded private key.  The "privateKeyAlgorithm" field uses the AlgorithmIdentifier structure.  The structure is encoded as defined above.  If present, the "publicKey" field will hold the encoded key as defined in <xref target="sec-pub-keys"/>.</t>
      <t>The following is an example of a private key encoded using the textual encoding defined in <xref target="RFC7468"/>.</t>
      <artwork><![CDATA[
-----BEGIN PRIVATE KEY-----
TODO
-----END PRIVATE KEY-----
]]></artwork>
      <t>NOTE: There exist some private key import functions that have not picked up the new ASN.1 structure OneAsymmetricKey that is defined in <xref target="RFC7748"/>.  This means that they will not accept a private key structure that contains the public key field.  This means a balancing act needs to be done between being able to do a consistency check on the key pair and widest ability to import the key.</t>
    </section>
    <section anchor="asn1-module">
      <name>ASN.1 Module</name>
      <t>TODO: This is mostly copied from draft-ietf-lamps-cms-sphincs-plus; coordinate with those authors what goes in which draft.</t>
      <t>TODO: Also do the proper module stuff. Again this is just here until we figure out how to do it right.</t>
      <sourcecode type="asn.1"><![CDATA[
--
-- Object Identifiers
--

id-alg-slh-dsa-128s-shake OBJECT IDENTIFIER ::= { TBD }

id-alg-slh-dsa-128f-shake OBJECT IDENTIFIER ::= { TBD }

id-alg-slh-dsa-128s-sha2 OBJECT IDENTIFIER ::= { TBD }

id-alg-slh-dsa-128f-sha2 OBJECT IDENTIFIER ::= { TBD }

id-alg-slh-dsa-192s-shake OBJECT IDENTIFIER ::= { TBD }

id-alg-slh-dsa-192f-shake OBJECT IDENTIFIER ::= { TBD }

id-alg-slh-dsa-256s-shake OBJECT IDENTIFIER ::= { TBD }

id-alg-slh-dsa-256f-shake OBJECT IDENTIFIER ::= { TBD }

--
-- Signature Algorithm, Public Key, and Private Key
--

sa-slh-dsa-128s-shake SIGNATURE-ALGORITHM ::= {
    IDENTIFIER id-alg-slh-dsa-128s-shake
    PARAMS ARE absent
    PUBLIC-KEYS { pk-slh-dsa-128s-shake }
    SMIME-CAPS { IDENTIFIED BY id-alg-slh-dsa-128s-shake } }

sa-slh-dsa-128f-shake SIGNATURE-ALGORITHM ::= {
    IDENTIFIER id-alg-slh-dsa-128f-shake
    PARAMS ARE absent
    PUBLIC-KEYS { pk-slh-dsa-128f-shake }
    SMIME-CAPS { IDENTIFIED BY id-alg-slh-dsa-128f-shake } }

sa-slh-dsa-128s-sha2 SIGNATURE-ALGORITHM ::= {
    IDENTIFIER id-alg-slh-dsa-128s-sha2
    PARAMS ARE absent
    PUBLIC-KEYS { pk-slh-dsa-128s-sha2 }
    SMIME-CAPS { IDENTIFIED BY id-alg-slh-dsa-128s-sha2 } }

sa-slh-dsa-128f-sha2 SIGNATURE-ALGORITHM ::= {
    IDENTIFIER id-alg-slh-dsa-128f-sha2
    PARAMS ARE absent
    PUBLIC-KEYS { pk-slh-dsa-128f-sha2 }
    SMIME-CAPS { IDENTIFIED BY id-alg-slh-dsa-128f-sha2 } }

sa-slh-dsa-192s-shake SIGNATURE-ALGORITHM ::= {
    IDENTIFIER id-alg-slh-dsa-192s-shake
    PARAMS ARE absent
    PUBLIC-KEYS { pk-slh-dsa-192s-shake }
    SMIME-CAPS { IDENTIFIED BY id-alg-slh-dsa-192s-shake } }

sa-slh-dsa-192f-shake SIGNATURE-ALGORITHM ::= {
    IDENTIFIER id-alg-slh-dsa-192f-shake
    PARAMS ARE absent
    PUBLIC-KEYS { pk-slh-dsa-192f-shake }
    SMIME-CAPS { IDENTIFIED BY id-alg-slh-dsa-192f-shake } }

sa-slh-dsa-256s-shake SIGNATURE-ALGORITHM ::= {
    IDENTIFIER id-alg-slh-dsa-256s-shake
    PARAMS ARE absent
    PUBLIC-KEYS { pk-slh-dsa-256s-shake }
    SMIME-CAPS { IDENTIFIED BY id-alg-slh-dsa-256s-shake } }

sa-slh-dsa-256f-shake SIGNATURE-ALGORITHM ::= {
    IDENTIFIER id-alg-slh-dsa-256f-shake
    PARAMS ARE absent
    PUBLIC-KEYS { pk-slh-dsa-256f-shake }
    SMIME-CAPS { IDENTIFIED BY id-alg-slh-dsa-256f-shake } }

pk-slh-dsa-128s-shake PUBLIC-KEY ::= {
    IDENTIFIER id-alg-slh-dsa-128s-shake
    KEY SLH-DSA-PublicKey
    PARAMS ARE absent
    CERT-KEY-USAGE
        { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SLH-DSA-PrivateKey }

pk-slh-dsa-128f-shake PUBLIC-KEY ::= {
    IDENTIFIER id-alg-slh-dsa-128f-shake
    KEY SLH-DSA-PublicKey
    PARAMS ARE absent
    CERT-KEY-USAGE
        { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SLH-DSA-PrivateKey }

pk-slh-dsa-128s-sha2 PUBLIC-KEY ::= {
    IDENTIFIER id-alg-slh-dsa-128s-sha2
    KEY SLH-DSA-PublicKey
    PARAMS ARE absent
    CERT-KEY-USAGE
        { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SLH-DSA-PrivateKey }

pk-slh-dsa-128f-sha2 PUBLIC-KEY ::= {
    IDENTIFIER id-alg-slh-dsa-128f-sha2
    KEY SLH-DSA-PublicKey
    PARAMS ARE absent
    CERT-KEY-USAGE
        { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SLH-DSA-PrivateKey }

pk-slh-dsa-192s-shake PUBLIC-KEY ::= {
    IDENTIFIER id-alg-slh-dsa-192s-shake
    KEY SLH-DSA-PublicKey
    PARAMS ARE absent
    CERT-KEY-USAGE
        { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SLH-DSA-PrivateKey }

pk-slh-dsa-192f-shake PUBLIC-KEY ::= {
    IDENTIFIER id-alg-slh-dsa-192f-shake
    KEY SLH-DSA-PublicKey
    PARAMS ARE absent
    CERT-KEY-USAGE
        { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SLH-DSA-PrivateKey }

pk-slh-dsa-256s-shake PUBLIC-KEY ::= {
    IDENTIFIER id-alg-slh-dsa-256s-shake
    KEY SLH-DSA-PublicKey
    PARAMS ARE absent
    CERT-KEY-USAGE
        { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SLH-DSA-PrivateKey }

pk-slh-dsa-256f-shake PUBLIC-KEY ::= {
    IDENTIFIER id-alg-slh-dsa-256f-shake
    KEY SLH-DSA-PublicKey
    PARAMS ARE absent
    CERT-KEY-USAGE
        { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY SLH-DSA-PrivateKey }

SLH-DSA-PublicKey ::= OCTET STRING

SLH-DSA-PrivateKey ::= OCTET STRING
]]></sourcecode>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations of <xref target="RFC5280"/> applies accordingly.</t>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TODO</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="FIPS205">
          <front>
            <title>TBD</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="FIPS205-ipd" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.205.ipd.pdf">
          <front>
            <title>Stateless Hash-Based Digital Signature Standard</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2023" month="August" day="24"/>
          </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="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="RFC7468">
          <front>
            <title>Textual Encodings of PKIX, PKCS, and CMS Structures</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="S. Leonard" initials="S." surname="Leonard"/>
            <date month="April" year="2015"/>
            <abstract>
              <t>This document describes and discusses the textual encodings of the Public-Key Infrastructure X.509 (PKIX), Public-Key Cryptography Standards (PKCS), and Cryptographic Message Syntax (CMS). The textual encodings are well-known, are implemented by several applications and libraries, and are widely deployed. This document articulates the de facto rules by which existing implementations operate and defines them so that future implementations can interoperate.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7468"/>
          <seriesInfo name="DOI" value="10.17487/RFC7468"/>
        </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="RFC7748">
          <front>
            <title>Elliptic Curves for Security</title>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="M. Hamburg" initials="M." surname="Hamburg"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="January" year="2016"/>
            <abstract>
              <t>This memo specifies two elliptic curves over prime fields that offer a high level of practical security in cryptographic applications, including Transport Layer Security (TLS). These curves are intended to operate at the ~128-bit and ~224-bit security level, respectively, and are generated deterministically based on a list of required properties.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7748"/>
          <seriesInfo name="DOI" value="10.17487/RFC7748"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="NIST-PQC" target="https://csrc.nist.gov/projects/post-quantum-cryptography">
          <front>
            <title>Post-Quantum Cryptography Project</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2016" month="December" day="20"/>
          </front>
        </reference>
        <reference anchor="RFC3279">
          <front>
            <title>Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="L. Bassham" initials="L." surname="Bassham"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="April" year="2002"/>
            <abstract>
              <t>This document specifies algorithm identifiers and ASN.1 encoding formats for digital signatures and subject public keys used in the Internet X.509 Public Key Infrastructure (PKI). Digital signatures are used to sign certificates and certificate revocation list (CRLs). Certificates include the public key of the named subject. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3279"/>
          <seriesInfo name="DOI" value="10.17487/RFC3279"/>
        </reference>
        <reference anchor="RFC5480">
          <front>
            <title>Elliptic Curve Cryptography Subject Public Key Information</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="D. Brown" initials="D." surname="Brown"/>
            <author fullname="K. Yiu" initials="K." surname="Yiu"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="T. Polk" initials="T." surname="Polk"/>
            <date month="March" year="2009"/>
            <abstract>
              <t>This document specifies the syntax and semantics for the Subject Public Key Information field in certificates that support Elliptic Curve Cryptography. This document updates Sections 2.3.5 and 5, and the ASN.1 module of "Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 3279. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5480"/>
          <seriesInfo name="DOI" value="10.17487/RFC5480"/>
        </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="5" month="February" 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
   Signatures (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-03"/>
        </reference>
        <reference anchor="I-D.draft-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="14" month="November" year="2023"/>
            <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-03"/>
        </reference>
        <reference anchor="RFC8411">
          <front>
            <title>IANA Registration for the Cryptographic Algorithm Object Identifier Range</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <author fullname="R. Andrews" initials="R." surname="Andrews"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>When the Curdle Security Working Group was chartered, a range of object identifiers was donated by DigiCert, Inc. for the purpose of registering the Edwards Elliptic Curve key agreement and signature algorithms. This donated set of OIDs allowed for shorter values than would be possible using the existing S/MIME or PKIX arcs. This document describes the donated range and the identifiers that were assigned from that range, transfers control of that range to IANA, and establishes IANA allocation policies for any future assignments within that range.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8411"/>
          <seriesInfo name="DOI" value="10.17487/RFC8411"/>
        </reference>
      </references>
    </references>
    <?line 480?>

<section anchor="security-strengths">
      <name>Security Strengths</name>
      <t>Instead of defining the strength of a quantum algorithm in a traditional manner using precise estimates of the number of bits of security, NIST has instead elected to define a collection of broad security strength categories.  Each category is defined by a comparatively easy-to-analyze reference primitive that cover a range of security strengths offered by existing NIST standards in symmetric cryptography, which NIST expects to offer significant resistance to quantum cryptanalysis.  These categories describe any attack that breaks the relevant security definition that must require computational resources comparable to or greater than those required for: Level 1 - key search on a block cipher with a 128-bit key (e.g., AES128), Level 2 - collision search on a 256-bit hash function (e.g., SHA256/ SHA3-256), Level 3 - key search on a block cipher with a 192-bit key (e.g., AES192), Level 4 - collision search on a 384-bit hash function (e.g.  SHA384/SHA3-384), Level 5 - key search on a block cipher with a 256-bit key (e.g., AES 256).</t>
      <t>The parameter sets defined for NIST security levels 1, 3 and 5 are listed in <xref target="tab-strengths"/>, along with the resulting signature size, public key, and private key sizes in bytes.</t>
      <table anchor="tab-strengths">
        <name>SLH-DSA security strengths</name>
        <thead>
          <tr>
            <th align="left">OID</th>
            <th align="left">NIST Level</th>
            <th align="left">Sig. (B)</th>
            <th align="left">Public Key (B)</th>
            <th align="left">Private Key (B)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">id-alg-slh-dsa-128s-shake</td>
            <td align="left">1</td>
            <td align="left">TODO</td>
            <td align="left">TODO</td>
            <td align="left">TODO</td>
          </tr>
          <tr>
            <td align="left">id-alg-slh-dsa-128f-shake</td>
            <td align="left">1</td>
            <td align="left">TODO</td>
            <td align="left">TODO</td>
            <td align="left">TODO</td>
          </tr>
          <tr>
            <td align="left">id-alg-slh-dsa-128s-sha2</td>
            <td align="left">1</td>
            <td align="left">TODO</td>
            <td align="left">TODO</td>
            <td align="left">TODO</td>
          </tr>
          <tr>
            <td align="left">id-alg-slh-dsa-128f-sha2</td>
            <td align="left">1</td>
            <td align="left">TODO</td>
            <td align="left">TODO</td>
            <td align="left">TODO</td>
          </tr>
          <tr>
            <td align="left">id-alg-slh-dsa-192s-shake</td>
            <td align="left">3</td>
            <td align="left">TODO</td>
            <td align="left">TODO</td>
            <td align="left">TODO</td>
          </tr>
          <tr>
            <td align="left">id-alg-slh-dsa-192f-shake</td>
            <td align="left">3</td>
            <td align="left">TODO</td>
            <td align="left">TODO</td>
            <td align="left">TODO</td>
          </tr>
          <tr>
            <td align="left">id-alg-slh-dsa-256s-shake</td>
            <td align="left">5</td>
            <td align="left">TODO</td>
            <td align="left">TODO</td>
            <td align="left">TODO</td>
          </tr>
          <tr>
            <td align="left">id-alg-slh-dsa-256f-shake</td>
            <td align="left">5</td>
            <td align="left">TODO</td>
            <td align="left">TODO</td>
            <td align="left">TODO</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Much of the structure and text of this document is based on <xref target="I-D.ietf-lamps-dilithium-certificates"/>. The remainder comes from <xref target="I-D.draft-ietf-lamps-cms-sphincs-plus"/>. Thanks to those authors, and the ones they based their work on, for making our work earier. "Copying always makes things easier and less error prone" - <xref target="RFC8411"/>.</t>
      <t>TODO: Hopefully others will help out.  They will be acknowledged here.  And if you've read this far...</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
jXmOvUT/B2aBT81yYAAA

-->

</rfc>
