<?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.11 (Ruby 3.2.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-x509-slhdsa-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <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-ietf-lamps-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>
        <email>daniel.vangeest@cryptonext-security.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="May" day="03"/>
    <area>sec</area>
    <workgroup>LAMPS - Limited Additional Mechanisms for PKIX and SMIME</workgroup>
    <keyword>SLH-DSA</keyword>
    <keyword>SPHINCS+</keyword>
    <keyword>PQ Signatures</keyword>
    <keyword>post-quantum X.509</keyword>
    <abstract>
      <?line 71?>

<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-ietf-lamps-x509-slhdsa/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        LAMPS 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/x509-hbs/draft-x509-slhdsa"/>.</t>
    </note>
  </front>
  <middle>
    <?line 79?>

<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 476?>

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

-->

</rfc>
