<?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.2 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-cms-sha3-hash-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title abbrev="Using SHA3 with the CMS">Use of the SHA3 One-way Hash Functions in the Cryptographic Message Syntax (CMS)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-sha3-hash-03"/>
    <author initials="R." surname="Housley" fullname="Russ Housley">
      <organization abbrev="Vigil Security">Vigil Security, LLC</organization>
      <address>
        <postal>
          <city>Herndon</city>
          <region>VA</region>
          <country>United States of America</country>
        </postal>
        <email>housley@vigilsec.com</email>
      </address>
    </author>
    <date year="2024" month="April" day="19"/>
    <area>Security</area>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 119?>

<t>This document describes the conventions for using the one-way hash functions
in the SHA3 family with the Cryptographic Message Syntax (CMS).  The SHA3
family can be used as a message digest algorithm, as part of a signature
algorithm, as part of a message authentication code, or part of a key
derivation function.</t>
    </abstract>
  </front>
  <middle>
    <?line 127?>

<section anchor="intro">
      <name>Introduction</name>
      <t>The Cryptographic Message Syntax (CMS) <xref target="RFC5652"/> is used to digitally sign,
digest, authenticate, or encrypt arbitrary message contents.  This
specification describes the use of the four one-way hash functions in the
SHA3 family (SHA3-224, SHA3-256, SHA3-384, and SHA3-512) <xref target="SHA3"/> with the
CMS.  In addition, this specification describes the use of these four
one-way hash functions with the RSASSA PKCS#1 version 1.5 signature
algorithm <xref target="RFC8017"/> and the Elliptic Curve Digital Signature Algorithm
(ECDSA) <xref target="DSS"/> with the CMS signed-data content type.</t>
      <t>This document should not be confused with RFC 8702 <xref target="RFC8702"/>, which defines
conventions for using the the SHAKE family of SHA3-based extensible output
functions with the CMS.</t>
      <section anchor="asn1">
        <name>ASN.1</name>
        <t>CMS values are generated using ASN.1 <xref target="X.680"/>, using the Basic
Encoding Rules (BER) and the Distinguished Encoding Rules (DER) <xref target="X.690"/>.</t>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
<?line -6?>
        </t>
      </section>
    </section>
    <section anchor="sha3oids">
      <name>Message Digest Algorithms</name>
      <t>One-way hash functions are also referred to as message digest algorithms.<br/>
This section specifies the conventions employed by CMS implementations
that support SHA3-224, SHA3-256, SHA3-384, and SHA3-512 <xref target="SHA3"/>.</t>
      <t>Digest algorithm identifiers are located in the SignedData digestAlgorithms
field, the SignerInfo digestAlgorithm field, the DigestedData digestAlgorithm
field, and the AuthenticatedData digestAlgorithm field.</t>
      <t>Digest values are located in the DigestedData digest field and the Message
Digest authenticated attribute.  In addition, digest values are input to
signature algorithms.</t>
      <t>SHA3-224, SHA3-256, SHA3-384, and SHA3-512 produce output values with
224, 256, 384, and 512 bits, respectively.  The object identifiers for
these four one-way hash functions are as follows:</t>
      <sourcecode type="asn.1"><![CDATA[
   hashAlgs OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16)
       us(840) organization(1) gov(101) csor(3) nistAlgorithm(4) 2 }

   id-sha3-224 OBJECT IDENTIFIER ::= { hashAlgs 7 }

   id-sha3-256 OBJECT IDENTIFIER ::= { hashAlgs 8 }

   id-sha3-384 OBJECT IDENTIFIER ::= { hashAlgs 9 }

   id-sha3-512 OBJECT IDENTIFIER ::= { hashAlgs 10 }
]]></sourcecode>
      <t>When using the id-sha3-224, id-sha3-s256, id-sha3-384, or id-sha3-512
algorithm identifiers, the parameters field MUST be absent; not NULL
but absent.</t>
    </section>
    <section anchor="signature-algorithms">
      <name>Signature Algorithms</name>
      <t>This section specifies the conventions employed by CMS implementations
that support the four SHA3 one-way hash functions with the RSASSA PKCS#1
version 1.5 signature algorithm <xref target="RFC8017"/> and the Elliptic Curve Digital
Signature Algorithm (ECDSA) <xref target="DSS"/> with the CMS signed-data content type.</t>
      <t>Signature algorithm identifiers are located in the SignerInfo
signatureAlgorithm field of SignedData.  Also, signature algorithm
identifiers are located in the SignerInfo signatureAlgorithm field
of countersignature attributes.</t>
      <t>Signature values are located in the SignerInfo signature field of
SignedData.  Also, signature values are located in the SignerInfo
signature field of countersignature attributes.</t>
      <section anchor="rsassa-pkcs1-v15-with-sha3">
        <name>RSASSA PKCS#1 v1.5 with SHA3</name>
        <t>The RSASSA PKCS#1 v1.5 is defined in <xref target="RFC8017"/>.  When RSASSA PKCS#1 v1.5 is
used in conjunction with one of the SHA3 one-way hash functions, the
object identifiers are:</t>
        <sourcecode type="asn.1"><![CDATA[
   OID ::= OBJECT IDENTIFIER

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

   id-rsassa-pkcs1-v1-5-with-sha3-224 OID ::= { sigAlgs 13 }

   id-rsassa-pkcs1-v1-5-with-sha3-256 OID ::= { sigAlgs 14 }

   id-rsassa-pkcs1-v1-5-with-sha3-384 OID ::= { sigAlgs 15 }

   id-rsassa-pkcs1-v1-5-with-sha3-512 OID ::= { sigAlgs 16 }
]]></sourcecode>
        <t>The algorithm identifier for RSASSA PKCS#1 v1.5 subject public keys
in certificates is specified in <xref target="RFC3279"/>, and it is repeated here for
convenience:</t>
        <sourcecode type="asn.1"><![CDATA[
   rsaEncryption OBJECT IDENTIFIER ::= { iso(1) member-body(2)
       us(840) rsadsi(113549) pkcs(1) pkcs-1(1) 1 }
]]></sourcecode>
        <t>When the rsaEncryption, id-rsassa-pkcs1-v1-5-with-sha3-224,
id-rsassa-pkcs1-v1-5-with-sha3-256,
id-rsassa-pkcs1-v1-5-with-sha3-384, and
id-rsassa-pkcs1-v1-5-with-sha3-512 algorithm identifier is used,
AlgorithmIdentifier parameters field MUST contain NULL.</t>
        <t>When the rsaEncryption algorithm identifier is used, the RSA public key,
which is composed of a modulus and a public exponent, MUST be encoded
using the RSAPublicKey type as specified in <xref target="RFC3279"/>.  The output of
this encoding is carried in the certificate subject public key.  The
definition of RSAPublicKey is repeated here for convenience:</t>
        <sourcecode type="asn.1"><![CDATA[
   RSAPublicKey ::= SEQUENCE {
      modulus INTEGER, -- n
      publicExponent INTEGER } -- e
]]></sourcecode>
        <t>When signing, the RSASSA PKCS#1 v1.5 signature algorithm generates a
single value, and that value is used directly as the signature value.</t>
      </section>
      <section anchor="ecdsa-with-sha3">
        <name>ECDSA with SHA3</name>
        <t>The Elliptic Curve Digital Signature Algorithm (ECDSA) is defined in
<xref target="DSS"/>.  When ECDSA is used in conjunction with one of the SHA3
one-way hash functions, the object identifiers are:</t>
        <sourcecode type="asn.1"><![CDATA[
   sigAlgs OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16)
       us(840) organization(1) gov(101) csor(3) nistAlgorithm(4) 3 }

   id-ecdsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 9 }

   id-ecdsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 10 }

   id-ecdsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 11 }

   id-ecdsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 12 }
]]></sourcecode>
        <t>When using the id-ecdsa-with-sha3-224, id-ecdsa-with-sha3-256,
id-ecdsa-with-sha3-384, and id-ecdsa-with-sha3-512 algorithm identifiers,
the parameters field MUST be absent; not NULL but absent.</t>
        <t>The conventions for ECDSA public keys is as specified in <xref target="RFC5480"/>.  The
ECParameters associated with the ECDSA public key in the signers
certificate SHALL apply to the verification of the signature.</t>
        <t>When signing, the ECDSA algorithm generates two values.  These values
are commonly referred to as r and s.  To easily transfer these two
values as one signature, they MUST be ASN.1 encoded using the
ECDSA-Sig-Value defined in <xref target="RFC3279"/> and repeated here for
convenience:</t>
        <sourcecode type="asn.1"><![CDATA[
   ECDSA-Sig-Value ::= SEQUENCE {
       r  INTEGER,
       s  INTEGER }
]]></sourcecode>
      </section>
    </section>
    <section anchor="message-authentication-codes-using-hmac-and-sha3">
      <name>Message Authentication Codes using HMAC and SHA3</name>
      <t>This section specifies the conventions employed by CMS implementations
that support the HMAC <xref target="RFC2104"/> with SHA3 message authentication code (MAC).</t>
      <t>MAC algorithm identifiers are located in the AuthenticatedData
macAlgorithm field.</t>
      <t>MAC values are located in the AuthenticatedData mac field.</t>
      <t>When HMAC is used in conjunction with one of the SHA3
one-way hash functions, the object identifiers are:</t>
      <sourcecode type="asn.1"><![CDATA[
   hashAlgs OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16)
       us(840) organization(1) gov(101) csor(3) nistAlgorithm(4) 2 }
 
   id-hmacWithSHA3-224 OBJECT IDENTIFIER ::= { hashAlgs 13 }

   id-hmacWithSHA3-256 OBJECT IDENTIFIER ::= { hashAlgs 14 }

   id-hmacWithSHA3-384 OBJECT IDENTIFIER ::= { hashAlgs 15 }

   id-hmacWithSHA3-512 OBJECT IDENTIFIER ::= { hashAlgs 16 }
]]></sourcecode>
      <t>When the id-hmacWithSHA3-224, id-hmacWithSHA3-256,
id-hmacWithSHA3-384, and id-hmacWithSHA3-512 algorithm
identifier is used, the parameters field MUST be absent;
not NULL but absent.</t>
    </section>
    <section anchor="key-derivation-functions">
      <name>Key Derivation Functions</name>
      <t>The CMS KEMRecipientInfo structure <xref target="I-D.ietf-lamps-cms-kemri"/> is one place where
algorithm identifiers for key-derivation functions are needed.</t>
      <section anchor="hkdf-with-sha3">
        <name>HKDF with SHA3</name>
        <t>This section assigns four algorithm identifiers that can be employed by CMS
implementations that support the HMAC-based Extract-and-Expand Key Derivation
Function (HKDF) <xref target="RFC5869"/> with the SHA3 family of hash functions.</t>
        <t>When HKDF is used in conjunction with one of the SHA3
one-way hash functions, the object identifiers are:</t>
        <sourcecode type="asn.1"><![CDATA[
   id-alg OBJECT IDENTIFIER ::= { iso(1) member-body(2)
       us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) 3 }

   id-alg-hkdf-with-sha3-224 OBJECT IDENTIFIER ::= { id-alg TBD1 }

   id-alg-hkdf-with-sha3-256 OBJECT IDENTIFIER ::= { id-alg TBD2 }

   id-alg-hkdf-with-sha3-384 OBJECT IDENTIFIER ::= { id-alg TBD3 }

   id-alg-hkdf-with-sha3-512 OBJECT IDENTIFIER ::= { id-alg TBD4 }
]]></sourcecode>
        <t>When id-alg-hkdf-with-sha3-224, id-alg-hkdf-with-sha3-256,
id-alg-hkdf-with-sha3-384, or id-alg-hkdf-with-sha3-512 is used in
an algorithm identifier, the parameters field MUST be absent;
not NULL but absent.</t>
      </section>
      <section anchor="kmac128-kdf-and-kmac256-kdf">
        <name>KMAC128-KDF and KMAC256-KDF</name>
        <t>This section specifies the conventions employed by CMS implementations
that employ either the KMAC128 or KMAC256 as a key derivation function as
defined in Section 4.4 of <xref target="NIST.SP.800-108r1-upd1"/>.</t>
        <t>KMAC128 and KMAC256 are specified in <xref target="NIST.SP.800-185"/>. The use of KMAC128
and KMAC256 as a key derivation function are defined as:</t>
        <ul empty="true">
          <li>
            <t>KMAC128-KDF is KMAC128(K, X, L, S).</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>KMAC256-KDF is KMAC256(K, X, L, S).</t>
          </li>
        </ul>
        <t>The parameters are:</t>
        <ul empty="true">
          <li>
            <dl>
              <dt>K</dt>
              <dd>
                <t>the input key-derivation key.  The length of K MUST be less than 2^2040.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <dl>
              <dt>X</dt>
              <dd>
                <t>the context, which contains the ASN.1 DER encoding of CMSORIforKEMOtherInfo when the KDF is used with <xref target="I-D.ietf-lamps-cms-kemri"/>.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <dl>
              <dt>L</dt>
              <dd>
                <t>the output length, in bits.  L MUST be greater than or equal to 0, and L MUST be less than 2^2040.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <dl>
              <dt>S</dt>
              <dd>
                <t>the optional customization label, such as "KDF" (0x4B4446).  The length of S MUST be less than 2^2040.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <t>When KMAC128-KDF or KMAC256-KDF is used, the object identifiers are:</t>
        <sourcecode type="asn.1"><![CDATA[
   hashAlgs OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16)
       us(840) organization(1) gov(101) csor(3) nistAlgorithm(4) 2 }
 
   id-kmac128 OBJECT IDENTIFIER ::= { hashAlgs 21 }

   id-kmac256 OBJECT IDENTIFIER ::= { hashAlgs 22 }
]]></sourcecode>
        <t>When the id-kmac128 or id-kmac256 is used as part of an algorithm identifier, the
parameters field MUST be absent if no customization label is used for S.
If any other value is used for S, then parameters field MUST be present and
contain the value of S, encoded as Customization.</t>
        <sourcecode type="asn.1"><![CDATA[
   Customization ::= OCTET STRING
]]></sourcecode>
      </section>
      <section anchor="kdf2-and-kdf3-with-sha3">
        <name>KDF2 and KDF3 with SHA3</name>
        <t>This section specifies the conventions employed by CMS implementations
that employ either the KDF2 or KDF3 functions defined in <xref target="ANS-X9.44"/>.
The CMS KEMRecipientInfo structure <xref target="I-D.ietf-lamps-cms-kemri"/> is one
place where algorithm identifiers for key-derivation functions are needed.</t>
        <t>When KDF2 and KDF3 are used, they are identified by the id-kdf-kdf2
and id-kdf-kdf3 object identifiers, respectively.  The algorithm identifier
parameters carries an algorithm identifier to indicate which hash function
is being employed.  To support SHA3, an algorithm identifier from
<xref target="sha3oids"/> is carried in the parameter.</t>
        <sourcecode type="asn.1"><![CDATA[
   x9-44 OBJECT IDENTIFIER ::= { iso(1) identified-organization(3)
       tc68(133) country(16) x9(840) x9Standards(9) x9-44(44) }

   x9-44-components OBJECT IDENTIFIER ::= { x9-44 components(1) }

   id-kdf-kdf2 OBJECT IDENTIFIER ::= { x9-44-components kdf2(1) }

   id-kdf-kdf3 OBJECT IDENTIFIER ::= { x9-44-components kdf3(2) }
]]></sourcecode>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Implementations must protect the signer's private key.  Compromise of the
signer's private key permits masquerade.</t>
      <t>When more than two parties share the same message-authentication key,
data origin authentication is not provided.  Any party that knows the
message-authentication key can compute a valid MAC, therefore the content
could originate from any one of the parties.</t>
      <t>Implementations must randomly generate message-authentication keys and
one-time values, such as the k value when generating a ECDSA signature.
In addition, the generation of public/private key pairs relies on a
random numbers.  The use of inadequate pseudo-random number generators
(PRNGs) to generate cryptographic values can result in little or no
security.  An attacker may find it much easier to reproduce the PRNG
environment that produced the keys, searching the resulting small set of
possibilities, rather than brute force searching the whole key space.
The generation of quality random numbers is difficult.  RFC 4086 <xref target="RFC4086"/>
offers important guidance in this area, and Appendix 3 of FIPS Pub 186-4
<xref target="DSS"/> provides some PRNG techniques.</t>
      <t>Implementers should be aware that cryptographic algorithms become weaker
with time.  As new cryptanalysis techniques are developed and computing
performance improves, the work factor to break a particular cryptographic
algorithm will reduce.  Therefore, cryptographic algorithm
implementations should be modular allowing new algorithms to be readily
inserted.  That is, implementers should be prepared to regularly update
the set of algorithms in their implementations.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is asked to assign one object identifier for the ASN.1 module in <xref target="asn1mod"/>
in the "SMI Security for S/MIME Module Identifiers (1.2.840.113549.1.9.16.0)"
registry <xref target="IANA-MOD"/>:</t>
      <sourcecode type="asn1"><![CDATA[
   id-mod-sha3-oids-2023 OBJECT IDENTIFIER ::= {
      iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
      pkcs-9(9) smime(16) mod(0) TBD0 }
]]></sourcecode>
      <t>IANA is asked to assign four object identifiers for the HKDF using SHA3 algorithm
identifiers in the "SMI Security for S/MIME Algorithms (1.2.840.113549.1.9.16.3)"
registry <xref target="IANA-ALG"/>:</t>
      <sourcecode type="asn1"><![CDATA[
   id-alg-hkdf-with-sha3-224 OBJECT IDENTIFIER ::= { id-alg TBD1 }

   id-alg-hkdf-with-sha3-256 OBJECT IDENTIFIER ::= { id-alg TBD2 }

   id-alg-hkdf-with-sha3-384 OBJECT IDENTIFIER ::= { id-alg TBD3 }

   id-alg-hkdf-with-sha3-512 OBJECT IDENTIFIER ::= { id-alg TBD4 }
]]></sourcecode>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Thanks to
Daniel Van Geest and
Sean Turner
for their careful review and thoughtful comments.</t>
      <t>Thanks to Sara Kerman, Quynh Dang, and David Cooper
for getting the object identifiers assigned for KMAC128 and KMAC256.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="ANS-X9.44">
          <front>
            <title>Public Key Cryptography for the Financial Services Industry -- Key Establishment Using Integer Factorization Cryptography</title>
            <author>
              <organization>American National Standards Institute</organization>
            </author>
            <date year="2007"/>
          </front>
          <seriesInfo name="American National Standard" value="X9.44"/>
        </reference>
        <reference anchor="NIST.SP.800-108r1-upd1" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-108r1-upd1.pdf">
          <front>
            <title>Recommendation for key derivation using pseudorandom functions</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2024" month="February" day="02"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/NIST.SP.800-108r1-upd1"/>
        </reference>
        <reference anchor="NIST.SP.800-185" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-185.pdf">
          <front>
            <title>SHA-3 Derived Functions: cSHAKE, KMAC, TupleHash and ParallelHash</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2016" month="December"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/NIST.SP.800-185"/>
        </reference>
        <reference anchor="RFC2104">
          <front>
            <title>HMAC: Keyed-Hashing for Message Authentication</title>
            <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
            <author fullname="M. Bellare" initials="M." surname="Bellare"/>
            <author fullname="R. Canetti" initials="R." surname="Canetti"/>
            <date month="February" year="1997"/>
            <abstract>
              <t>This document describes HMAC, a mechanism for message authentication using cryptographic hash functions. HMAC can be used with any iterative cryptographic hash function, e.g., MD5, SHA-1, in combination with a secret shared key. The cryptographic strength of HMAC depends on the properties of the underlying hash function. This memo provides information for the Internet community. This memo does not specify an Internet standard of any kind</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2104"/>
          <seriesInfo name="DOI" value="10.17487/RFC2104"/>
        </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="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="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="RFC5869">
          <front>
            <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <date month="May" year="2010"/>
            <abstract>
              <t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications. The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5869"/>
          <seriesInfo name="DOI" value="10.17487/RFC5869"/>
        </reference>
        <reference anchor="RFC5912">
          <front>
            <title>New ASN.1 Modules for the Public Key Infrastructure Using X.509 (PKIX)</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 Public Key Infrastructure using X.509 (PKIX) certificate 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="5912"/>
          <seriesInfo name="DOI" value="10.17487/RFC5912"/>
        </reference>
        <reference anchor="RFC8017">
          <front>
            <title>PKCS #1: RSA Cryptography Specifications Version 2.2</title>
            <author fullname="K. Moriarty" initials="K." role="editor" surname="Moriarty"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <author fullname="J. Jonsson" initials="J." surname="Jonsson"/>
            <author fullname="A. Rusch" initials="A." surname="Rusch"/>
            <date month="November" year="2016"/>
            <abstract>
              <t>This document provides recommendations for the implementation of public-key cryptography based on the RSA algorithm, covering cryptographic primitives, encryption schemes, signature schemes with appendix, and ASN.1 syntax for representing keys and for identifying the schemes.</t>
              <t>This document represents a republication of PKCS #1 v2.2 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series. By publishing this RFC, change control is transferred to the IETF.</t>
              <t>This document also obsoletes RFC 3447.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8017"/>
          <seriesInfo name="DOI" value="10.17487/RFC8017"/>
        </reference>
        <reference anchor="SHA3" target="http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf">
          <front>
            <title>SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="FIPS PUB" value="202"/>
        </reference>
        <reference anchor="DSS" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf">
          <front>
            <title>Digital Signature Standard (DSS) version 4</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2013" month="July"/>
          </front>
          <seriesInfo name="FIPS PUB" value="186-4"/>
        </reference>
        <reference anchor="X.680" target="https://www.itu.int/rec/T-REC-X.680">
          <front>
            <title>Information technology -- Abstract Syntax Notation One (ASN.1): Specification of basic notation</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2021" month="February"/>
          </front>
          <seriesInfo name="ITU-T Recommendation" value="X.680"/>
          <seriesInfo name="ISO/IEC" value="8824-1:2021"/>
        </reference>
        <reference anchor="X.690" target="https://www.itu.int/rec/T-REC-X.680">
          <front>
            <title>Information technology -- ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2021" month="February"/>
          </front>
          <seriesInfo name="ITU-T Recommendation" value="X.690"/>
          <seriesInfo name="ISO/IEC" value="8825-1:2021"/>
        </reference>
        <reference anchor="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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="IANA-ALG" target="https://www.iana.org/assignments/smi-numbers/">
          <front>
            <title>SMI Security for for S/MIME Algorithms (1.2.840.113549.1.9.16.3)</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IANA-MOD" target="https://www.iana.org/assignments/smi-numbers/">
          <front>
            <title>SMI Security for S/MIME Module Identifier (1.2.840.113549.1.9.16.0)</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="I-D.ietf-lamps-cms-kemri">
          <front>
            <title>Using Key Encapsulation Mechanism (KEM) Algorithms in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization>Vigil Security, LLC</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust</organization>
            </author>
            <author fullname="Tomofumi Okubo" initials="T." surname="Okubo">
              <organization>DigiCert, Inc.</organization>
            </author>
            <date day="6" month="February" year="2024"/>
            <abstract>
              <t>   The Cryptographic Message Syntax (CMS) supports key transport and key
   agreement algorithms.  In recent years, cryptographers have been
   specifying Key Encapsulation Mechanism (KEM) algorithms, including
   quantum-secure KEM algorithms.  This document defines conventions for
   the use of KEM algorithms by the originator and recipients to encrypt
   and decrypt CMS content.  This document updates RFC 5652.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-kemri-08"/>
        </reference>
        <reference anchor="RFC4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="J. Schiller" initials="J." surname="Schiller"/>
            <author fullname="S. Crocker" initials="S." surname="Crocker"/>
            <date month="June" year="2005"/>
            <abstract>
              <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts. However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities. The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
              <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult. This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities. It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications. 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="106"/>
          <seriesInfo name="RFC" value="4086"/>
          <seriesInfo name="DOI" value="10.17487/RFC4086"/>
        </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 507?>

<section numbered="false" anchor="asn1mod">
      <name>Appendix.  ASN.1 Module</name>
      <t>This section contains the ASN.1 module for the algorithm identifiers using SHA3
family of hash functions <xref target="SHA3"/>.  This module imports types from other ASN.1
modules that are defined in <xref target="RFC5912"/>.</t>
      <sourcecode type="asn.1" markers="true"><![CDATA[
   SHA3-OIDs-2023
     { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
       smime(16) modules(0) id-mod-sha3-oids-2023(TBD0) }

   DEFINITIONS IMPLICIT TAGS ::=
   BEGIN

   EXPORTS ALL;

   IMPORTS
   
     AlgorithmIdentifier{}, DIGEST-ALGORITHM, SIGNATURE-ALGORITHM,
     KEY-DERIVATION, MAC-ALGORITHM
     FROM AlgorithmInformation-2009  -- [RFC5912]
       { iso(1) identified-organization(3) dod(6) internet(1)
         security(5) mechanisms(5) pkix(7) id-mod(0)
         id-mod-algorithmInformation-02(58) }

    mda-sha1, pk-rsa, pk-ec, ECDSA-Sig-Value
    FROM PKIXAlgs-2009  -- [RFC5912]
      { iso(1) identified-organization(3) dod(6) internet(1)
        security(5) mechanisms(5) pkix(7) id-mod(0)
        id-mod-pkix1-algorithms2008-02(56) }

    mda-sha224, mda-sha256, mda-sha384, mda-sha512
    FROM PKIX1-PSS-OAEP-Algorithms-2009  -- [RFC5912]
      { iso(1) identified-organization(3) dod(6) internet(1)
        security(5) mechanisms(5) pkix(7) id-mod(0)
        id-mod-pkix1-rsa-pkalgs-02(54) } ;


   --
   -- Alias
   --

   OID ::= OBJECT IDENTIFIER


   --
   -- Object Identifier Arcs
   --

   nistAlgorithm OID ::= { joint-iso-itu-t(2) country(16)
       us(840) organization(1) gov(101) csor(3) 4 }

   hashAlgs OID ::= { nistAlgorithm 2 }

   sigAlgs OID ::= { nistAlgorithm 3 }

   x9-44 OID ::= { iso(1) identified-organization(3) tc68(133)
       country(16) x9(840) x9Standards(9) x9-44(44) }

   x9-44-components OID ::= { x9-44 components(1) }

   id-alg OID ::= { iso(1) member-body(2) us(840)
       rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) 3 }


   --
   -- Message Digest Algorithms
   --

   id-sha3-224 OID ::= { hashAlgs 7 }

   id-sha3-256 OID ::= { hashAlgs 8 }

   id-sha3-384 OID ::= { hashAlgs 9 }

   id-sha3-512 OID ::= { hashAlgs 10 }

   mda-sha3-224 DIGEST-ALGORITHM ::= {
       IDENTIFIER id-sha3-224
       PARAMS ARE absent }

   mda-sha3-256 DIGEST-ALGORITHM ::= {
       IDENTIFIER id-sha3-256
       PARAMS ARE absent }

   mda-sha3-384 DIGEST-ALGORITHM ::= {
       IDENTIFIER id-sha3-384
       PARAMS ARE absent }

   mda-sha3-512 DIGEST-ALGORITHM ::= {
       IDENTIFIER id-sha3-512
       PARAMS ARE absent }

   HashAlgorithm ::= AlgorithmIdentifier{ DIGEST-ALGORITHM,
                         { HashAlgorithms } }

   HashAlgorithms DIGEST-ALGORITHM ::=  {
       mda-sha3-224 |
       mda-sha3-256 |
       mda-sha3-384 |
       mda-sha3-512,
       ... }


   --
   -- Signature Algorithms
   --

   id-rsassa-pkcs1-v1-5-with-sha3-224 OID ::= { sigAlgs 13 }

   id-rsassa-pkcs1-v1-5-with-sha3-256 OID ::= { sigAlgs 14 }

   id-rsassa-pkcs1-v1-5-with-sha3-384 OID ::= { sigAlgs 15 }

   id-rsassa-pkcs1-v1-5-with-sha3-512 OID ::= { sigAlgs 16 }

   id-ecdsa-with-sha3-224 OID ::= { sigAlgs 9 }

   id-ecdsa-with-sha3-256 OID ::= { sigAlgs 10 }

   id-ecdsa-with-sha3-384 OID ::= { sigAlgs 11 }

   id-ecdsa-with-sha3-512 OID ::= { sigAlgs 12 }

   sa-rsaWithSHA3-224 SIGNATURE-ALGORITHM ::= {
       IDENTIFIER id-rsassa-pkcs1-v1-5-with-sha3-224
       PARAMS TYPE NULL ARE required
       HASHES { mda-sha3-224 }
       PUBLIC-KEYS { pk-rsa }
       SMIME-CAPS {IDENTIFIED BY 
           id-rsassa-pkcs1-v1-5-with-sha3-224 } }

   sa-rsaWithSHA3-256 SIGNATURE-ALGORITHM ::= {
       IDENTIFIER id-rsassa-pkcs1-v1-5-with-sha3-256
       PARAMS TYPE NULL ARE required
       HASHES { mda-sha3-256 }
       PUBLIC-KEYS { pk-rsa }
       SMIME-CAPS {IDENTIFIED BY
           id-rsassa-pkcs1-v1-5-with-sha3-256 } }

   sa-rsaWithSHA3-384 SIGNATURE-ALGORITHM ::= {
       IDENTIFIER id-rsassa-pkcs1-v1-5-with-sha3-384
       PARAMS TYPE NULL ARE required
       HASHES { mda-sha3-384 }
       PUBLIC-KEYS { pk-rsa }
       SMIME-CAPS {IDENTIFIED BY
           id-rsassa-pkcs1-v1-5-with-sha3-384 } }

   sa-rsaWithSHA3-512 SIGNATURE-ALGORITHM ::= {
       IDENTIFIER id-rsassa-pkcs1-v1-5-with-sha3-512
       PARAMS TYPE NULL ARE required
       HASHES { mda-sha3-512 }
       PUBLIC-KEYS { pk-rsa }
       SMIME-CAPS {IDENTIFIED BY
           id-rsassa-pkcs1-v1-5-with-sha3-512 } }

   sa-ecdsaWithSHA3-224 SIGNATURE-ALGORITHM ::= {
       IDENTIFIER id-ecdsa-with-sha3-224
       VALUE ECDSA-Sig-Value
       PARAMS ARE absent
       HASHES { mda-sha3-224 }
       PUBLIC-KEYS { pk-ec }
       SMIME-CAPS {IDENTIFIED BY id-ecdsa-with-sha3-224 } }

   sa-ecdsaWithSHA3-256 SIGNATURE-ALGORITHM ::= {
       IDENTIFIER id-ecdsa-with-sha3-256
       VALUE ECDSA-Sig-Value
       PARAMS ARE absent
       HASHES { mda-sha3-256 }
       PUBLIC-KEYS { pk-ec }
       SMIME-CAPS {IDENTIFIED BY id-ecdsa-with-sha3-256 } }

   sa-ecdsaWithSHA3-384 SIGNATURE-ALGORITHM ::= {
       IDENTIFIER id-ecdsa-with-sha3-384
       VALUE ECDSA-Sig-Value
       PARAMS ARE absent
       HASHES { mda-sha3-384 }
       PUBLIC-KEYS { pk-ec }
       SMIME-CAPS {IDENTIFIED BY id-ecdsa-with-sha3-384 } }

   sa-ecdsaWithSHA3-512 SIGNATURE-ALGORITHM ::= {
       IDENTIFIER id-ecdsa-with-sha3-512
       VALUE ECDSA-Sig-Value
       PARAMS ARE absent
       HASHES { mda-sha3-512 }
       PUBLIC-KEYS { pk-ec }
       SMIME-CAPS {IDENTIFIED BY id-ecdsa-with-sha3-512 } }

   SignatureAlg ::= AlgorithmIdentifier{ SIGNATURE-ALGORITHM,
                         { SignatureAlgs } }
                         
   SignatureAlgs SIGNATURE-ALGORITHM ::= {
       sa-rsaWithSHA3-224 |
       sa-rsaWithSHA3-256 |
       sa-rsaWithSHA3-384 |
       sa-rsaWithSHA3-512 |
       sa-ecdsaWithSHA3-224 |
       sa-ecdsaWithSHA3-256 |
       sa-ecdsaWithSHA3-384 |
       sa-ecdsaWithSHA3-512,
       ... }
   
   
   --
   -- Message Authentication Codes
   --

   id-hmacWithSHA3-224 OID ::= { hashAlgs 13 }

   id-hmacWithSHA3-256 OID ::= { hashAlgs 14 }

   id-hmacWithSHA3-384 OID ::= { hashAlgs 15 }

   id-hmacWithSHA3-512 OID ::= { hashAlgs 16 }

   maca-hmacWithSHA3-224 MAC-ALGORITHM ::= {
       IDENTIFIER id-hmacWithSHA3-224
       PARAMS ARE absent
       IS-KEYED-MAC TRUE
       SMIME-CAPS {IDENTIFIED BY id-hmacWithSHA3-224 } }

   maca-hmacWithSHA3-256 MAC-ALGORITHM ::= {
       IDENTIFIER id-hmacWithSHA3-256
       PARAMS ARE absent
       IS-KEYED-MAC TRUE
       SMIME-CAPS {IDENTIFIED BY id-hmacWithSHA3-256 } }

   maca-hmacWithSHA3-384 MAC-ALGORITHM ::= {
       IDENTIFIER id-hmacWithSHA3-384
       PARAMS ARE absent
       IS-KEYED-MAC TRUE
       SMIME-CAPS {IDENTIFIED BY id-hmacWithSHA3-384 } }

   maca-hmacWithSHA3-512 MAC-ALGORITHM ::= {
       IDENTIFIER id-hmacWithSHA3-512
       PARAMS ARE absent
       IS-KEYED-MAC TRUE
       SMIME-CAPS {IDENTIFIED BY id-hmacWithSHA3-512 } }

   MACAlgorithm ::= AlgorithmIdentifier{ MAC-ALGORITHM,
                       { MACAlgorithms } }

   MACAlgorithms MAC-ALGORITHM ::= {
       maca-hmacWithSHA3-224 |
       maca-hmacWithSHA3-256 |
       maca-hmacWithSHA3-384 |
       maca-hmacWithSHA3-512,
       ... }


   --
   -- Key Derivation Algorithms
   --

   id-alg-hkdf-with-sha3-224 OID ::= { id-alg TBD1 }

   id-alg-hkdf-with-sha3-256 OID ::= { id-alg TBD2 }

   id-alg-hkdf-with-sha3-384 OID ::= { id-alg TBD3 }

   id-alg-hkdf-with-sha3-512 OID ::= { id-alg TBD4 }

   id-kmac128 OID ::= { hashAlgs 21 }

   id-kmac256  OID ::= { hashAlgs 22 }

   id-kdf-kdf2 OID ::= { x9-44-components kdf2(1) }

   id-kdf-kdf3 OID ::= { x9-44-components kdf3(2) }

   kda-hkdf-with-sha3-224 KEY-DERIVATION ::= {
       IDENTIFIER id-alg-hkdf-with-sha3-224
       PARAMS ARE absent
       -- No S/MIME caps defined -- }

   kda-hkdf-with-sha3-256 KEY-DERIVATION ::= {
       IDENTIFIER id-alg-hkdf-with-sha3-256
       PARAMS ARE absent
       -- No S/MIME caps defined -- }

   kda-hkdf-with-sha3-384 KEY-DERIVATION ::= {
       IDENTIFIER id-alg-hkdf-with-sha3-384
       PARAMS ARE absent
       -- No S/MIME caps defined -- }

   kda-hkdf-with-sha3-512 KEY-DERIVATION ::= {
       IDENTIFIER id-alg-hkdf-with-sha3-512
       PARAMS ARE absent
       -- No S/MIME caps defined -- }

   kda-kmac128 KEY-DERIVATION ::= {
       IDENTIFIER id-kmac128
       PARAMS TYPE Customization ARE optional
       -- PARAMS are absent when Customization is ''H --
       -- No S/MIME caps defined -- }

   kda-kmac256 KEY-DERIVATION ::= {
       IDENTIFIER id-kmac256
       PARAMS TYPE Customization ARE optional
       -- PARAMS are absent when Customization is ''H --
       -- No S/MIME caps defined -- }

   kda-kdf2 KEY-DERIVATION ::= {
       IDENTIFIER id-kdf-kdf2
       PARAMS TYPE KDF2-HashFunction ARE required
       -- No S/MIME caps defined -- }

   kda-kdf3 KEY-DERIVATION ::= {
       IDENTIFIER id-kdf-kdf3
       PARAMS TYPE KDF3-HashFunction ARE required
       -- No S/MIME caps defined -- }

   Customization ::= OCTET STRING

   KDF2-HashFunction ::= AlgorithmIdentifier { DIGEST-ALGORITHM,
                             { KDF2-HashFunctions } }

   KDF2-HashFunctions DIGEST-ALGORITHM ::= {
      X9-HashFunctions,
      ... }

   KDF3-HashFunction ::= AlgorithmIdentifier { DIGEST-ALGORITHM,
                             { KDF3-HashFunctions } }

   KDF3-HashFunctions DIGEST-ALGORITHM ::= {
      X9-HashFunctions,
      ... }

   X9-HashFunctions DIGEST-ALGORITHM ::= {
       mda-sha1 |
       mda-sha224 |
       mda-sha256 |
       mda-sha384 |
       mda-sha512 |
       mda-sha3-224 |
       mda-sha3-256 |
       mda-sha3-384 |
       mda-sha3-512,
       ... }

   KeyDerivationFunction ::=  AlgorithmIdentifier{ KEY-DERIVATION,
                                  { KeyDevAlgs } }

   KeyDevAlgs KEY-DERIVATION ::= {
       kda-hkdf-with-sha3-224 |
       kda-hkdf-with-sha3-256 |
       kda-hkdf-with-sha3-384 |
       kda-hkdf-with-sha3-512 |
       kda-kmac128 |
       kda-kmac256 |
       kda-kdf2 |
       kda-kdf3,
       ... }

   END
]]></sourcecode>
    </section>
  </back>
  <!-- ##markdown-source:
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
+A+7+H/atftC/hszBz+vzWsAAA==

-->

</rfc>
