<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.19 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-rfc7030-csrattrs-14" category="std" consensus="true" submissionType="IETF" updates="7030" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title abbrev="CSRAttrs">Clarification and enhancement of RFC7030 CSR Attributes definition</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-rfc7030-csrattrs-14"/>
    <author initials="M." surname="Richardson" fullname="Michael Richardson" role="editor">
      <organization>Sandelman Software Works</organization>
      <address>
        <email>mcr+ietf@sandelman.ca</email>
      </address>
    </author>
    <author initials="O." surname="Friel" fullname="Owen Friel">
      <organization>Cisco</organization>
      <address>
        <email>ofriel@cisco.com</email>
      </address>
    </author>
    <author initials="D." surname="von Oheimb" fullname="Dr. David von Oheimb">
      <organization>Siemens</organization>
      <address>
        <email>dev@ddvo.net</email>
      </address>
    </author>
    <author initials="D." surname="Harkins" fullname="Dan Harkins">
      <organization>The Industrial Lounge</organization>
      <address>
        <email>dharkins@lounge.org</email>
      </address>
    </author>
    <date year="2025" month="January" day="08"/>
    <area>Internet</area>
    <workgroup>LAMPS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 84?>

<t>The Enrollment over Secure Transport (EST, RFC7030) is ambiguous in its specification of the CSR Attributes Response. This has resulted in implementation challenges and implementor confusion.</t>
      <t>This document updates RFC7030 (EST) and clarifies
how the CSR Attributes Response can be used by an EST server to specify
both CSR attribute OIDs and also CSR attribute values,
in particular X.509 extension values,
that the server expects the client to include in subsequent CSR request.</t>
      <t>Moreover, it provides new convenient and straightforward approach: using
a template for CSR contents that may be partially filled in by the server.
This also allows specifying a subject Distinguished Name (DN).</t>
    </abstract>
  </front>
  <middle>
    <?line 98?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Enrollment over Secure Transport <xref target="RFC7030"/> (EST) has been used in a wide variety of applications.
In particular, <xref target="RFC8994"/> and <xref target="RFC8995"/> describe a way to use it in order to build out an autonomic control plane (ACP) <xref target="RFC8368"/>.</t>
      <t>The ACP requires that each node be given a very specific subjectAltName.
In the ACP specification, the solution was for the EST server to use
section 2.6 of <xref target="RFC7030"/> to convey to the EST client
the actual subjectAltName that will end up in its certificate.</t>
      <t>As a result of some implementation challenges, it came to light that this particular way of using the CSR attributes was not universally agreed upon, and it was suggested that it went contrary to section 2.6.</t>
      <t>Section 2.6 says that the CSR attributes "can provide additional
descriptive information that the EST server cannot access itself".
This is extended to describe how the EST server can provide values that it demands to use.</t>
      <t>After significant discussion, it has been determined that
<xref section="4.5" sectionFormat="of" target="RFC7030"/> specification is sufficiently difficult
to read and ambiguous to interpret that clarification is needed.</t>
      <t>This document motivates the different use cases, and provides additional worked out examples.</t>
      <t>Also, section 4.5.2 is extended to clarify the use of the existing ASN.1 syntax <xref target="X.680"/><xref target="X.690"/>.
This covers all uses and is fully backward compatible with existing use.</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 anchor="csr-attributes-handling">
      <name>CSR Attributes Handling</name>
      <section anchor="extensions-to-rfc-7030-section-26">
        <name>Extensions to RFC 7030 section 2.6</name>
        <t>Replace the second paragraph with the following text:</t>
        <artwork><![CDATA[
   These attributes can provide additional descriptive information that
   the EST server cannot access itself, such as the Media Access Control
   (MAC) address of an interface of the EST client. The EST server can
   also provide concrete values that it tells the client to include in
   the CSR, such as a specific X.509 Subject Alternative Name extension.
   Moreover, these attributes can indicate the type of the included
   public key or which crypto algorithms to use for the self-signature,
   such as a specific elliptic curve or a specific hash function that
   the client is expected to use when generating the CSR.
]]></artwork>
      </section>
      <section anchor="csrattrs">
        <name>Extensions to RFC 7030 section 4.5.2</name>
        <t>The ASN.1 syntax for CSR Attributes as defined in EST <xref section="4.5.2" sectionFormat="comma" target="RFC7030"/> is as follows:</t>
        <artwork><![CDATA[
   CsrAttrs ::= SEQUENCE SIZE (0..MAX) OF AttrOrOID

   AttrOrOID ::= CHOICE (oid OBJECT IDENTIFIER, attribute Attribute }

   Attribute { ATTRIBUTE:IOSet } ::= SEQUENCE {
        type   ATTRIBUTE.&id({IOSet}),
        values SET SIZE(1..MAX) OF ATTRIBUTE.&Type({IOSet}{@type}) }
]]></artwork>
        <t>This remains unchanged, such that bits-on-the-wire compatibility is maintained.</t>
        <t>Key parts that were unclear were which OID to use in the 'type' field and
that the 'values' field can contain an entire sequence of X.509 extensions.</t>
        <t>The OID to use for such attributes in the 'type' field MUST be <tt>id-ExtensionReq</tt>,
which has the value 1.2.840.113549.1.9.14.
Note that is the same as <tt>pkcs-9-at-extensionRequest</tt> defined in PKCS#9 <xref target="RFC2985"/>.
There MUST be only one such attribute.</t>
        <t>The <tt>values</tt> field of this attribute MUST contain a set with exactly one element,
and this element MUST be of type <tt>Extensions</tt>, as per <xref section="4.1" sectionFormat="of" target="RFC5280"/>:</t>
        <artwork><![CDATA[
   Extensions  ::=  SEQUENCE SIZE (1..MAX) OF Extension

   Extension  ::=  SEQUENCE  {
        extnID      OBJECT IDENTIFIER,
        critical    BOOLEAN DEFAULT FALSE,
        extnValue   OCTET STRING
                    -- contains the DER encoding of an ASN.1 value
                    -- corresponding to the extension type identified
                    -- by extnID
        }
]]></artwork>
        <t>An Extension comprises the OID of the specific X.509 extension (extnID),
optionally the 'critical' bit, and the extension value (extnValue).</t>
        <t>An Extensions structure, which is a sequence of elements of type Extension,
MUST NOT include more than one element with a particular extnID.</t>
        <t>With this understanding, the needs of <xref target="RFC8994"/> and <xref target="RFC8995"/> are satisfied
with no change to the bits on the wire.</t>
      </section>
      <section anchor="csrtemplate">
        <name>Use of CSR templates</name>
        <t>Alternatively to the piecemeal inclusion of CSR attributes
specified in <xref section="4.5.2" sectionFormat="comma" target="RFC7030"/> with its limitations and ambiguities,
<xref section="B" sectionFormat="of" target="RFC8295"/> describes an approach using a CSR template.
An entire CSR object is returned with various fields filled out,
and other fields waiting to be filled in.
In that approach, a pKCS7PDU attribute includes a Full PKI Data content type <xref target="RFC5272"/>
and that in turn includes a CSR or CRMF formatted request
(for details see <xref target="RFC6268"/> Sections 5 or 9, respectively).<br/>
One drawback to that approach, particularly for the CSR, is that some useless
fields have to be included; specifically, the <tt>signature</tt> field on
the CSR is faked with an empty bit string.</t>
        <t>A similar method has been defined in CMP Updates <xref target="RFC9480"/>
and the Lightweight CMP profile <xref section="4.3.3" sectionFormat="comma" target="RFC9483"/>,
using a CSR template as defined for CRMF <xref target="RFC4211"/>.
Like the approach mentioned before,
this method does not properly deal with absent RDNs (encoding them as empty strings),
absent <tt>subjectPublicKey</tt> fields (encoding them as empty <tt>BIT STRING</tt>),
and absent X.509v3 extension values (encoding them as empty <tt>OCTET STRING</tt>),
which may cause issues with strict ASN.1 parsing and decoding.</t>
        <t>We avoid these drawbacks as follows.</t>
        <t>This specification defines a new Certificate Request Information Template attribute
for CsrAttrs (as given in <xref target="csrattrs"/>) that is essentially
a partially filled in PKCS#10 CSR minus the signature wrapper:</t>
        <artwork><![CDATA[
  CertificationRequestInfoTemplate ::= SEQUENCE {
      version       INTEGER { v1(0) } (v1, ... ),
      subject       NameTemplate OPTIONAL,
      subjectPKInfo [0] SubjectPublicKeyInfoTemplate
                                {{ PKInfoAlgorithms }} OPTIONAL,
      attributes    [1] Attributes{{ CRIAttributes }}
  }
]]></artwork>
        <t><xref target="app-asn1-module"/> contains all detail.</t>
        <t>The CertificationRequestInfoTemplate closely resembles the CertificationRequestInfo
from <xref section="5" sectionFormat="comma" target="RFC5912"/>:</t>
        <artwork><![CDATA[
  CertificationRequestInfo ::= SEQUENCE {
    version       INTEGER { v1(0) } (v1,...),
    subject       Name,
    subjectPKInfo SubjectPublicKeyInfo{{ PKInfoAlgorithms }},
    attributes    [0] Attributes{{ CRIAttributes }}
  }
]]></artwork>
        <t>with the following differences.</t>
        <ul spacing="normal">
          <li>
            <t>The <tt>subject</tt> field has been made <tt>OPTIONAL</tt>.
It MUST be present if the server places any requirements on the RDNs of the subject name;
otherwise it MUST be absent.</t>
          </li>
          <li>
            <t>RelativeDistinguishedNames (RDNs) in the <tt>subject</tt> fields are allowed to have no value,
which has been achieved by adding <tt>OPTIONAL</tt> to the <tt>value</tt> field of <tt>SingleAttributeTemplate</tt>.
If the client is expected to provide an RDN of a certain type such as <tt>commonName</tt>,
the respective RDN MUST be present in the <tt>subject</tt> field; otherwise it MUST be absent.
If the RDN value is present, this means that the client is required to use the given value
for the RDN, otherwise the client is expected to fill in the value.</t>
          </li>
        </ul>
        <artwork><![CDATA[
  SingleAttributeTemplate {ATTRIBUTE:AttrSet} ::= SEQUENCE {
      type      ATTRIBUTE.&id({AttrSet}),
      value     ATTRIBUTE.&Type({AttrSet}{@type}) OPTIONAL
  }

]]></artwork>
        <ul spacing="normal">
          <li>
            <t>The <tt>subjectPKInfo</tt> field has been made <tt>OPTIONAL</tt>.
The field MUST be absent if the server places no requirements on the key.
Otherwise it MUST be present, and the <tt>algorithm</tt> field
specifies the type of the key pair the client is expected to use.</t>
          </li>
          <li>
            <t>The <tt>subjectPublicKey</tt> field contained in <tt>SubjectPublicKeyInfoTemplate</tt>
has been made <tt>OPTIONAL</tt> because usually it is not needed.
In case the server requires use of an RSA key and needs to specify its size, the field
MUST be present and contain a dummy public key value of the desired RSA modulus length.
Otherwise, the <tt>subjectPublicKey</tt> MUST be absent.</t>
          </li>
        </ul>
        <artwork><![CDATA[
  SubjectPublicKeyInfoTemplate{PUBLIC-KEY:IOSet} ::= SEQUENCE {
      algorithm        AlgorithmIdentifier{PUBLIC-KEY, {IOSet}},
      subjectPublicKey BIT STRING OPTIONAL
  }
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>A new OID <tt>id-aa-extensionReqTemplate</tt> and the related <tt>ExtensionTemplate</tt> structure
is defined where the <tt>extnValue</tt> field has been made <tt>OPTIONAL</tt>.
This is only needed to enable specifying partial extensions with values to be filled in
by the client; otherwise the <tt>id-ExtensionReq</tt> OID and the respective value of type
<tt>ExtensionReq</tt> MUST be used.<br/>
For each extension of type <tt>Extension</tt> or <tt>ExtensionTemplate</tt> provided by the server,
the client is expected to include an extension of the type given by the <tt>extnID</tt>.
If the <tt>critical</tt> field is present, the client is expected to use the given value.
If the <tt>extnValue</tt> is present (which is always the case when type <tt>Extension</tt> is used),
the client is required to use the given extension value.
Otherwise it is expected to fill in the extension value.<br/>
If the subjectAltName extension contains the <tt>directoryName</tt> choice containing the <tt>NULL-DN</tt>
(i.e., an empty sequence of RDNs) or the <tt>iPAddress</tt> choice with an empty <tt>OCTET STRING</tt>,
this means that the client is expected to fill in the respective <tt>GeneralName</tt> value.</t>
          </li>
        </ul>
        <artwork><![CDATA[
  ExtensionTemplate {EXTENSION:ExtensionSet} ::= SEQUENCE {
     extnID      EXTENSION.&id({ExtensionSet}),
     critical    BOOLEAN DEFAULT FALSE,
     extnValue   OCTET STRING (CONTAINING
                 EXTENSION.&ExtnType({ExtensionSet}{@extnID})) OPTIONAL
                 --  contains the DER encoding of the ASN.1 value
                 --  corresponding to the extension type identified
                 --  by extnID when present
  }
]]></artwork>
        <t>The <tt>version</tt> field of the <tt>CertificationRequestInfoTemplate</tt> MUST contain v1 (0).</t>
        <t>The <tt>attributes</tt> field MUST NOT contain multiple <tt>at-extensionReqTemplate</tt> attributes
and MUST NOT contain both <tt>extensionRequest</tt> and <tt>at-extensionReqTemplate</tt> attributes.</t>
        <!--
Each of the attributes has a single attribute value instance in the
values set.  Even though the syntax is defined as a set, there MUST
be exactly one instance of AttributeValue present.
-->

<t>Suppose the server requires that the CSR will contain:</t>
        <ul spacing="normal">
          <li>
            <t>the subject field with a common name to be filled in by the EE and
two organizational unit fields with given values "myDept" and "myGroup",</t>
          </li>
          <li>
            <t>the publicKey field contains an
Elliptic Curve Cryptography (ECC) key on curve secp256r1,</t>
          </li>
          <li>
            <t>the subjectAltName extension
with DNS name "www.myServer.com" and an empty IP address to be filled in,</t>
          </li>
          <li>
            <t>the keyUsage extension marked critical
with the value digitalSignature and keyAgreement, and</t>
          </li>
          <li>
            <t>the extKeyUsage extension with value to be filled in by the EE.</t>
          </li>
        </ul>
        <t>Then the <tt>CertificationRequestInfo</tt> structure constructed by the server
will be as follows:</t>
        <artwork><![CDATA[
SEQUENCE {
  INTEGER 0
  SEQUENCE {
    SET {
      SEQUENCE {
        OBJECT IDENTIFIER commonName (2 5 4 3)
        }
      }
    SET {
      SEQUENCE {
        OBJECT IDENTIFIER organizationalUnitName (2 5 4 11)
        UTF8String "myDept"
        }
      }
    SET {
      SEQUENCE {
        OBJECT IDENTIFIER organizationalUnitName (2 5 4 11)
        UTF8String "myGroup"
        }
      }
    }
  [0] {
    SEQUENCE {
      OBJECT IDENTIFIER ecPublicKey (1 2 840 10045 2 1)
      OBJECT IDENTIFIER secp256r1 (1 2 840 10045 3 1 7)
      }
    }
  [1] {
    SEQUENCE {
      OBJECT IDENTIFIER id-extensionReqTemplate
                        (1 2 840 113549 1 9 TBD3)
      SET {
        SEQUENCE {
          SEQUENCE {
            OBJECT IDENTIFIER subjectAltName (2 5 29 17)
            OCTET STRING, encapsulates {
              SEQUENCE {
                [2] "www.myServer.com"
                [7] ""
                }
              }
            }
          SEQUENCE {
            OBJECT IDENTIFIER keyUsage (2 5 29 15)
            BOOLEAN TRUE
            OCTET STRING, encapsulates {
              BIT STRING 3 unused bits
                "10001"B
              }
            }
          SEQUENCE {
            OBJECT IDENTIFIER extKeyUsage (2 5 29 37)
            }
          }
        }
      }
    }
  }
]]></artwork>
      </section>
    </section>
    <section anchor="co-existence-with-existing-implementations">
      <name>Co-existence with existing implementations</name>
      <t>Legacy servers MAY continue to use the <xref target="RFC7030"/> style piecemeal attribute/value pairs,
and MAY also include the template style described in {#csrtemplate}.
Clients which understand both MUST use the template only, and
ignore all other CSRattrs elements.
Older clients will ignore the new CertificationRequestInfoTemplate element.</t>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>Each example has a high-level (English) explanation of what is expected.
Some mapping back to the Attribute and Extension definitions above are included.
The base64 DER encoding is then shown.
The output of "dumpasn1" is then provided to detail what the contents are.</t>
      <section anchor="acpNodeName">
        <name>RFC8994/ACP subjectAltName with specific otherName</name>
        <t>A single subjectAltName extension is specified in a single Extension attribute.
This is what might be created by an <xref target="RFC8995"/> Registrar that is asking for <xref target="RFC8994"/> AcpNodeName format otherNames.</t>
        <section anchor="base64-encoded-example">
          <name>Base64 encoded example</name>
          <t>The Base64:</t>
          <sourcecode type="base64" markers="false"><![CDATA[
MGQwYgYJKoZIhvcNAQkOMVUwUwYDVR0RAQH/BEmgRzBFBggr
BgEFBQcICgw5cmZjODk5NCtmZDczOWZjMjNjMzQ0MDExMjIz
MzQ0NTUwMDAwMDAwMCtAYWNwLmV4YW1wbGUuY29t
]]></sourcecode>
        </section>
        <section anchor="asn1-dump-output">
          <name>ASN.1 DUMP output</name>
          <t>There is a single subjectAltName Extension with an Attribute with Extension type.</t>
          <artwork><![CDATA[
    <30 64>
  0 100: SEQUENCE {
    <30 62>
  2  98:   SEQUENCE {
    <06 09>
  4   9:     OBJECT IDENTIFIER extensionRequest (1 2 840 113549 1 9 14)
       :       (PKCS #9 via CRMF)
    <31 55>
 15  85:     SET {
    <30 53>
 17  83:       SEQUENCE {
    <06 03>
 19   3:         OBJECT IDENTIFIER subjectAltName (2 5 29 17)
       :           (X.509 extension)
    <01 01>
 24   1:         BOOLEAN TRUE
    <04 49>
 27  73:         OCTET STRING
       :           A0 47 30 45 06 08 2B 06    .G0E..+.
       :           01 05 05 07 08 0A 0C 39    .......9
       :           72 66 63 38 39 39 34 2B    rfc8994+
       :           66 64 37 33 39 66 63 32    fd739fc2
       :           33 63 33 34 34 30 31 31    3c344011
       :           32 32 33 33 34 34 35 35    22334455
       :           30 30 30 30 30 30 30 30    00000000
       :           2B 40 61 63 70 2E 65 78    +@acp.ex
       :           61 6D 70 6C 65 2E 63 6F    ample.co
       :           6D                         m
       :         }
       :       }
       :     }
       :   }
]]></artwork>
        </section>
      </section>
      <section anchor="rfc7030-original-example">
        <name>RFC7030 original example</name>
        <t>In this example, taken from <xref target="RFC7030"/>, a few different attributes are included.</t>
        <section anchor="base64-encoded-example-1">
          <name>Base64 encoded example</name>
          <t>The Base64:</t>
          <sourcecode type="base64" markers="false"><![CDATA[
MEEGCSqGSIb3DQEJBzASBgcqhkjOPQIBMQcGBSuBBAAiMBYG
CSqGSIb3DQEJDjEJBgcrBgEBAQEWBggqhkjOPQQDAw==
]]></sourcecode>
        </section>
        <section anchor="asn1-dump-output-1">
          <name>ASN.1 DUMP output</name>
          <ol spacing="normal" type="1"><li>
              <t>The challengePassword attribute is included to indicate that the CSR should include this value.</t>
            </li>
            <li>
              <t>An ecPublicKey attribute is provided with the value secp384r1 to indicate what kind of key should be submitted.</t>
            </li>
            <li>
              <t>An extensionRequest container with an OID 1.3.6.1.1.1.1.22 (macAddress), but without a value, to indicate that the CSR should include an X.509v3 extension with this value.</t>
            </li>
            <li>
              <t>The ecdsaWithSHA384 OID is included to indicate what kind of hash is expected to be used for the self-signature of the PKCS#10 CSR structure.</t>
            </li>
          </ol>
          <artwork><![CDATA[
    <30 41>
  0  65: SEQUENCE {
    <06 09>
  2   9:   OBJECT IDENTIFIER challengePassword (1 2 840 113549 1 9 7)
       :     (PKCS #9)
    <30 12>
 13  18:   SEQUENCE {
    <06 07>
 15   7:     OBJECT IDENTIFIER ecPublicKey (1 2 840 10045 2 1)
       :       (ANSI X9.62 public key type)
    <31 07>
 24   7:     SET {
    <06 05>
 26   5:       OBJECT IDENTIFIER secp384r1 (1 3 132 0 34)
       :         (SECG (Certicom) named elliptic curve)
       :       }
       :     }
    <30 16>
 33  22:   SEQUENCE {
    <06 09>
 35   9:     OBJECT IDENTIFIER extensionRequest (1 2 840 113549 1 9 14)
       :       (PKCS #9 via CRMF)
    <31 09>
 46   9:     SET {
    <06 07>
 48   7:       OBJECT IDENTIFIER '1 3 6 1 1 1 1 22'
       :       }
       :     }
    <06 08>
 57   8:   OBJECT IDENTIFIER ecdsaWithSHA384 (1 2 840 10045 4 3 3)
       :     (ANSI X9.62 ECDSA algorithm with SHA384)
       :   }
]]></artwork>
        </section>
      </section>
      <section anchor="est-server-requires-a-specific-subjectaltname-extension">
        <name>EST server requires a specific subjectAltName extension</name>
        <t>This example is the same as the previous one except that instead of the OID
for a macAddress, a subjectAltName is specified as the only Extension element.</t>
        <section anchor="base64-encoded-example-2">
          <name>Base64 encoded example</name>
          <t>The Base64:</t>
          <sourcecode type="base64" markers="false"><![CDATA[
MGYGCSqGSIb3DQEJBzASBgcqhkjOPQIBMQcGBSuBBAAiMDsG
CSqGSIb3DQEJDjEuMCwGA1UdEQEB/wQioCAwHgYIKwYBBQUH
CAoMEnBvdGF0b0BleGFtcGxlLmNvbQYIKoZIzj0EAwM=
]]></sourcecode>
        </section>
        <section anchor="asn1-dump-output-2">
          <name>ASN.1 DUMP output</name>
          <ol spacing="normal" type="1"><li>
              <t>The challengePassword attribute is included to indicate that the CSR should include this value.</t>
            </li>
            <li>
              <t>An ecPublicKey attribute is provided with the value secp384r1 to indicate what kind of key should be submitted.</t>
            </li>
            <li>
              <t>An extensionRequest container with a subjectAltName value containing the name potato@example.com</t>
            </li>
            <li>
              <t>The ecdsaWithSHA384 OID is included to indicate what kind of hash is expected to be used for the self-signature of the PKCS#10 CSR structure.</t>
            </li>
          </ol>
          <artwork><![CDATA[
    <30 66>
  0 102: SEQUENCE {
    <06 09>
  2   9:   OBJECT IDENTIFIER challengePassword (1 2 840 113549 1 9 7)
       :     (PKCS #9)
    <30 12>
 13  18:   SEQUENCE {
    <06 07>
 15   7:     OBJECT IDENTIFIER ecPublicKey (1 2 840 10045 2 1)
       :       (ANSI X9.62 public key type)
    <31 07>
 24   7:     SET {
    <06 05>
 26   5:       OBJECT IDENTIFIER secp384r1 (1 3 132 0 34)
       :         (SECG (Certicom) named elliptic curve)
       :       }
       :     }
    <30 3B>
 33  59:   SEQUENCE {
    <06 09>
 35   9:     OBJECT IDENTIFIER extensionRequest (1 2 840 113549 1 9 14)
       :       (PKCS #9 via CRMF)
    <31 2E>
 46  46:     SET {
    <30 2C>
 48  44:       SEQUENCE {
    <06 03>
 50   3:         OBJECT IDENTIFIER subjectAltName (2 5 29 17)
       :           (X.509 extension)
    <01 01>
 55   1:         BOOLEAN TRUE
    <04 22>
 58  34:         OCTET STRING
       :           A0 20 30 1E 06 08 2B 06    . 0...+.
       :           01 05 05 07 08 0A 0C 12    ........
       :           70 6F 74 61 74 6F 40 65    potato@e
       :           78 61 6D 70 6C 65 2E 63    xample.c
       :           6F 6D                      om
       :         }
       :       }
       :     }
    <06 08>
 94   8:   OBJECT IDENTIFIER ecdsaWithSHA384 (1 2 840 10045 4 3 3)
       :     (ANSI X9.62 ECDSA algorithm with SHA384)
       :   }
]]></artwork>
        </section>
      </section>
      <section anchor="require-a-public-key-of-a-specific-size">
        <name>Require a public key of a specific size</name>
        <t>The CSR requires a public key of a specific size</t>
        <section anchor="base64-encoded-example-3">
          <name>Base64 encoded example</name>
          <t>The Base64:</t>
          <sourcecode type="base64" markers="false"><![CDATA[
MCkGCSqGSIb3DQEJBzARBgkqhkiG9w0BAQExBAICEAAGCSqG
SIb3DQEBCw==
]]></sourcecode>
        </section>
        <section anchor="asn1-dump-output-3">
          <name>ASN.1 DUMP output</name>
          <ol spacing="normal" type="1"><li>
              <t>Provide a CSR with an RSA key that's 4096 bits and sign it with sha256</t>
            </li>
          </ol>
          <artwork><![CDATA[
    <30 29>
  0  41: SEQUENCE {
    <06 09>
  2   9:   OBJECT IDENTIFIER challengePassword (1 2 840 113549 1 9 7)
       :     (PKCS #9)
    <30 11>
 13  17:   SEQUENCE {
    <06 09>
 15   9:     OBJECT IDENTIFIER rsaEncryption (1 2 840 113549 1 1 1)
       :       (PKCS #1)
    <31 04>
 26   4:     SET {
    <02 02>
 28   2:       INTEGER 4096
       :       }
       :     }
    <06 09>
 32   9:   OBJECT IDENTIFIER sha256WithRSAEncryption
                             (1 2 840 113549 1 1 11)
       :     (PKCS #1)
       :   }
]]></artwork>
        </section>
      </section>
      <section anchor="require-a-public-key-of-a-specific-curve">
        <name>Require a public key of a specific curve</name>
        <t>The CSR requires a public key with a specific curve</t>
        <section anchor="base64-encoded-example-4">
          <name>Base64 encoded example</name>
          <t>The Base64:</t>
          <sourcecode type="base64" markers="false"><![CDATA[
MD0GCSqGSIb3DQEJBzASBgcqhkjOPQIBMQcGBSuBBAAiMBIGCSqGSIb3DQEJDjEF
BgNVBAUGCCqGSM49BAMD
]]></sourcecode>
        </section>
        <section anchor="asn1-dump-output-4">
          <name>ASN.1 DUMP output</name>
          <t>Provide a CSR with an ECC key from p384, include your serial number, and
sign it with sha384.</t>
          <artwork><![CDATA[
    <30 3D>
  0  61: SEQUENCE {
    <06 09>
  2   9:   OBJECT IDENTIFIER challengePassword (1 2 840 113549 1 9 7)
       :     (PKCS #9)
    <30 12>
 13  18:   SEQUENCE {
    <06 07>
 15   7:     OBJECT IDENTIFIER ecPublicKey (1 2 840 10045 2 1)
       :       (ANSI X9.62 public key type)
    <31 07>
 24   7:     SET {
    <06 05>
 26   5:       OBJECT IDENTIFIER secp384r1 (1 3 132 0 34)
       :         (SECG (Certicom) named elliptic curve)
       :       }
       :     }
    <30 12>
 33  18:   SEQUENCE {
    <06 09>
 35   9:     OBJECT IDENTIFIER extensionRequest (1 2 840 113549 1 9 14)
       :       (PKCS #9 via CRMF)
    <31 05>
 46   5:     SET {
    <06 03>
 48   3:       OBJECT IDENTIFIER serialNumber (2 5 4 5)
       :         (X.520 DN component)
       :       }
       :     }
    <06 08>
 53   8:   OBJECT IDENTIFIER ecdsaWithSHA384 (1 2 840 10045 4 3 3)
       :     (ANSI X9.62 ECDSA algorithm with SHA384)
       :   }
]]></artwork>
        </section>
      </section>
      <section anchor="require-a-specific-extension">
        <name>Require a specific extension</name>
        <t>The CSR is required to have an EC key, to include a serial number,
a friendly name, favorite drink, and be signed with SHA512.</t>
        <section anchor="base64-encoded-example-5">
          <name>Base64 encoded example</name>
          <t>The Base64:</t>
          <sourcecode type="base64" markers="false"><![CDATA[
MFQGCSqGSIb3DQEJBzASBgcqhkjOPQIBMQcGBSuBBAAjMCkG
CSqGSIb3DQEJDjEcBgNVBAUGCSqGSIb3DQEJFAYKCZImiZPy
LGQBBQYIKoZIzj0EAwQ=
]]></sourcecode>
        </section>
        <section anchor="asn1-dump-output-5">
          <name>ASN.1 DUMP output</name>
          <t>Provide a CSR with an EC key from sha521, include your serial number,
friendly name, and favorite drink, and sign it with sha512</t>
          <artwork><![CDATA[
    <30 54>
  0  84: SEQUENCE {
    <06 09>
  2   9:   OBJECT IDENTIFIER challengePassword (1 2 840 113549 1 9 7)
       :     (PKCS #9)
    <30 12>
 13  18:   SEQUENCE {
    <06 07>
 15   7:     OBJECT IDENTIFIER ecPublicKey (1 2 840 10045 2 1)
       :       (ANSI X9.62 public key type)
    <31 07>
 24   7:     SET {
    <06 05>
 26   5:       OBJECT IDENTIFIER secp521r1 (1 3 132 0 35)
       :         (SECG (Certicom) named elliptic curve)
       :       }
       :     }
    <30 29>
 33  41:   SEQUENCE {
    <06 09>
 35   9:     OBJECT IDENTIFIER extensionRequest (1 2 840 113549 1 9 14)
       :       (PKCS #9 via CRMF)
    <31 1C>
 46  28:     SET {
    <06 03>
 48   3:       OBJECT IDENTIFIER serialNumber (2 5 4 5)
       :         (X.520 DN component)
    <06 09>
 53   9:       OBJECT IDENTIFIER
       :         friendlyName (for PKCS #12) (1 2 840 113549 1 9 20)
       :         (PKCS #9 via PKCS #12)
    <06 0A>
 64  10:       OBJECT IDENTIFIER '0 9 2342 19200300 100 1 5'
       :       }
       :     }
    <06 08>
 76   8:   OBJECT IDENTIFIER ecdsaWithSHA512 (1 2 840 10045 4 3 4)
       :     (ANSI X9.62 ECDSA algorithm with SHA512)
       :   }
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations from EST <xref target="RFC7030"/> section 6 are unchanged.</t>
      <section anchor="identity-and-privacy-considerations">
        <name>Identity and Privacy Considerations</name>
        <t>An EST server may use this mechanism to instruct the EST client about the identities it should include in the CSR it sends as part of enrollment.
The client may only be aware of its IDevID Subject, which includes a manufacturer serial number.
The EST server can use this mechanism to tell the client to include a specific fully qualified domain name in the CSR in order to complete domain ownership proofs required by the CA.
Additionally, the EST server may deem the manufacturer serial number in an IDevID as personally identifiable information, and may want to specify a new random opaque identifier that the pledge should use in its CSR.
This may be desirable if the CA and EST server have different operators.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is asked to allocate two new Object Identifiers:</t>
      <ul spacing="normal">
        <li>
          <t>One (TBD1) from the SMI Security for S/MIME Module Identifier
(1.2.840.113549.1.9.16.0) registry for the ASN.1 module: id-mod-critemplate; see <xref target="app-asn1-module"/></t>
        </li>
        <li>
          <t>One (TBD2) from the SMI Security for S/MIME Attributes
(1.2.840.113549.1.9.16.2) registry for the Certification Request
Information Template (csrinfo) attribute; see <xref target="app-asn1-module"/></t>
        </li>
        <li>
          <t>One (TBD3) SMI Security for S/MIME Attributes
(1.2.840.113549.1.9.16.2) registry for the extension request
template (extensionReqTemplate) attribute; see Appendix A</t>
        </li>
      </ul>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Corey Bonnell crafted example02 using a different tool, and this helped debug other running code.</t>
      <t>Carl Wallace provided major parts of the CertificationRequestInfoTemplate syntax declaration.</t>
      <t>Russ Housley did many reviews of the ASN.1 and suggested many fixes.</t>
    </section>
    <section anchor="changelog">
      <name>Changelog</name>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC5911">
          <front>
            <title>New ASN.1 Modules for Cryptographic Message Syntax (CMS) and S/MIME</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="June" year="2010"/>
            <abstract>
              <t>The Cryptographic Message Syntax (CMS) format, and many associated formats, are expressed using ASN.1. The current ASN.1 modules conform to the 1988 version of ASN.1. This document updates those ASN.1 modules to conform to the 2002 version of ASN.1. There are no bits-on-the-wire changes to any of the formats; this is simply a change to the syntax. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5911"/>
          <seriesInfo name="DOI" value="10.17487/RFC5911"/>
        </reference>
        <reference anchor="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="RFC6268">
          <front>
            <title>Additional New ASN.1 Modules for the Cryptographic Message Syntax (CMS) and the Public Key Infrastructure Using X.509 (PKIX)</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="July" year="2011"/>
            <abstract>
              <t>The Cryptographic Message Syntax (CMS) format, and many associated formats, are expressed using ASN.1. The current ASN.1 modules conform to the 1988 version of ASN.1. This document updates some auxiliary ASN.1 modules to conform to the 2008 version of ASN.1; the 1988 ASN.1 modules remain the normative version. 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="6268"/>
          <seriesInfo name="DOI" value="10.17487/RFC6268"/>
        </reference>
        <reference anchor="RFC7030">
          <front>
            <title>Enrollment over Secure Transport</title>
            <author fullname="M. Pritikin" initials="M." role="editor" surname="Pritikin"/>
            <author fullname="P. Yee" initials="P." role="editor" surname="Yee"/>
            <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins"/>
            <date month="October" year="2013"/>
            <abstract>
              <t>This document profiles certificate enrollment for clients using Certificate Management over CMS (CMC) messages over a secure transport. This profile, called Enrollment over Secure Transport (EST), describes a simple, yet functional, certificate management protocol targeting Public Key Infrastructure (PKI) clients that need to acquire client certificates and associated Certification Authority (CA) certificates. It also supports client-generated public/private key pairs as well as key pairs generated by the CA.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7030"/>
          <seriesInfo name="DOI" value="10.17487/RFC7030"/>
        </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="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="RFC2985">
          <front>
            <title>PKCS #9: Selected Object Classes and Attribute Types Version 2.0</title>
            <author fullname="M. Nystrom" initials="M." surname="Nystrom"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <date month="November" year="2000"/>
            <abstract>
              <t>This memo represents a republication of PKCS #9 v2.0 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series, and change control is retained within the PKCS process. The body of this document, except for the security considerations section, is taken directly from that specification. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2985"/>
          <seriesInfo name="DOI" value="10.17487/RFC2985"/>
        </reference>
        <reference anchor="RFC4211">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate Request Message Format (CRMF)</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="September" year="2005"/>
            <abstract>
              <t>This document describes the Certificate Request Message Format (CRMF) syntax and semantics. This syntax is used to convey a request for a certificate to a Certification Authority (CA), possibly via a Registration Authority (RA), for the purposes of X.509 certificate production. The request will typically include a public key and the associated registration information. This document does not define a certificate request protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4211"/>
          <seriesInfo name="DOI" value="10.17487/RFC4211"/>
        </reference>
        <reference anchor="RFC5272">
          <front>
            <title>Certificate Management over CMS (CMC)</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <author fullname="M. Myers" initials="M." surname="Myers"/>
            <date month="June" year="2008"/>
            <abstract>
              <t>This document defines the base syntax for CMC, a Certificate Management protocol using the Cryptographic Message Syntax (CMS). This protocol addresses two immediate needs within the Internet Public Key Infrastructure (PKI) community:</t>
              <t>1. The need for an interface to public key certification products and services based on CMS and PKCS #10 (Public Key Cryptography Standard), and</t>
              <t>2. The need for a PKI enrollment protocol for encryption only keys due to algorithm or hardware design.</t>
              <t>CMC also requires the use of the transport document and the requirements usage document along with this document for a full definition. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5272"/>
          <seriesInfo name="DOI" value="10.17487/RFC5272"/>
        </reference>
        <reference anchor="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="RFC8295">
          <front>
            <title>EST (Enrollment over Secure Transport) Extensions</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="January" year="2018"/>
            <abstract>
              <t>The EST (Enrollment over Secure Transport) protocol defines the Well-Known URI (Uniform Resource Identifier) -- /.well-known/est -- along with a number of other path components that clients use for PKI (Public Key Infrastructure) services, namely certificate enrollment (e.g., /simpleenroll). This document defines a number of other PKI services as additional path components -- specifically, firmware and trust anchors as well as symmetric, asymmetric, and encrypted keys. This document also specifies the PAL (Package Availability List), which is an XML (Extensible Markup Language) file or JSON (JavaScript Object Notation) object that clients use to retrieve packages available and authorized for them. This document extends the EST server path components to provide these additional services.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8295"/>
          <seriesInfo name="DOI" value="10.17487/RFC8295"/>
        </reference>
        <reference anchor="RFC8368">
          <front>
            <title>Using an Autonomic Control Plane for Stable Connectivity of Network Operations, Administration, and Maintenance (OAM)</title>
            <author fullname="T. Eckert" initials="T." role="editor" surname="Eckert"/>
            <author fullname="M. Behringer" initials="M." surname="Behringer"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>Operations, Administration, and Maintenance (OAM), as per BCP 161, for data networks is often subject to the problem of circular dependencies when relying on connectivity provided by the network to be managed for the OAM purposes.</t>
              <t>Provisioning while bringing up devices and networks tends to be more difficult to automate than service provisioning later on. Changes in core network functions impacting reachability cannot be automated because of ongoing connectivity requirements for the OAM equipment itself, and widely used OAM protocols are not secure enough to be carried across the network without security concerns.</t>
              <t>This document describes how to integrate OAM processes with an autonomic control plane in order to provide stable and secure connectivity for those OAM processes. This connectivity is not subject to the aforementioned circular dependencies.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8368"/>
          <seriesInfo name="DOI" value="10.17487/RFC8368"/>
        </reference>
        <reference anchor="RFC8994">
          <front>
            <title>An Autonomic Control Plane (ACP)</title>
            <author fullname="T. Eckert" initials="T." role="editor" surname="Eckert"/>
            <author fullname="M. Behringer" initials="M." role="editor" surname="Behringer"/>
            <author fullname="S. Bjarnason" initials="S." surname="Bjarnason"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>Autonomic functions need a control plane to communicate, which depends on some addressing and routing. This Autonomic Control Plane should ideally be self-managing and be as independent as possible of configuration. This document defines such a plane and calls it the "Autonomic Control Plane", with the primary use as a control plane for autonomic functions. It also serves as a "virtual out-of-band channel" for Operations, Administration, and Management (OAM) communications over a network that provides automatically configured, hop-by-hop authenticated and encrypted communications via automatically configured IPv6 even when the network is not configured or is misconfigured.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8994"/>
          <seriesInfo name="DOI" value="10.17487/RFC8994"/>
        </reference>
        <reference anchor="RFC8995">
          <front>
            <title>Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
            <author fullname="M. Pritikin" initials="M." surname="Pritikin"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="T. Eckert" initials="T." surname="Eckert"/>
            <author fullname="M. Behringer" initials="M." surname="Behringer"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document specifies automated bootstrapping of an Autonomic Control Plane. To do this, a Secure Key Infrastructure is bootstrapped. This is done using manufacturer-installed X.509 certificates, in combination with a manufacturer's authorizing service, both online and offline. We call this process the Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol. Bootstrapping a new device can occur when using a routable address and a cloud service, only link-local connectivity, or limited/disconnected networks. Support for deployment models with less stringent security requirements is included. Bootstrapping is complete when the cryptographic identity of the new key infrastructure is successfully deployed to the device. The established secure connection can be used to deploy a locally issued certificate to the device as well.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8995"/>
          <seriesInfo name="DOI" value="10.17487/RFC8995"/>
        </reference>
        <reference anchor="RFC9480">
          <front>
            <title>Certificate Management Protocol (CMP) Updates</title>
            <author fullname="H. Brockhaus" initials="H." surname="Brockhaus"/>
            <author fullname="D. von Oheimb" initials="D." surname="von Oheimb"/>
            <author fullname="J. Gray" initials="J." surname="Gray"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>This document contains a set of updates to the syntax of Certificate Management Protocol (CMP) version 2 and its HTTP transfer mechanism. This document updates RFCs 4210, 5912, and 6712.</t>
              <t>The aspects of CMP updated in this document are using EnvelopedData instead of EncryptedValue, clarifying the handling of p10cr messages, improving the crypto agility, as well as adding new general message types, extended key usages to identify certificates for use with CMP, and well-known URI path segments.</t>
              <t>CMP version 3 is introduced to enable signaling support of EnvelopedData instead of EncryptedValue and signal the use of an explicit hash AlgorithmIdentifier in certConf messages, as far as needed.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9480"/>
          <seriesInfo name="DOI" value="10.17487/RFC9480"/>
        </reference>
        <reference anchor="RFC9483">
          <front>
            <title>Lightweight Certificate Management Protocol (CMP) Profile</title>
            <author fullname="H. Brockhaus" initials="H." surname="Brockhaus"/>
            <author fullname="D. von Oheimb" initials="D." surname="von Oheimb"/>
            <author fullname="S. Fries" initials="S." surname="Fries"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>This document aims at simple, interoperable, and automated PKI management operations covering typical use cases of industrial and Internet of Things (IoT) scenarios. This is achieved by profiling the Certificate Management Protocol (CMP), the related Certificate Request Message Format (CRMF), and transfer based on HTTP or Constrained Application Protocol (CoAP) in a succinct but sufficiently detailed and self-contained way. To make secure certificate management for simple scenarios and constrained devices as lightweight as possible, only the most crucial types of operations and options are specified as mandatory. More specialized or complex use cases are supported with optional features.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9483"/>
          <seriesInfo name="DOI" value="10.17487/RFC9483"/>
        </reference>
        <reference anchor="X.690" target="https://www.itu.int/rec/T-REC-X.690">
          <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>
      </references>
    </references>
    <?line 814?>

<section anchor="app-asn1-module">
      <name>ASN.1 Module</name>
      <aside>
        <t>RFC EDITOR: Please replace TBD1, TBD2, and TBD3 with the value assigned by IANA
during the publication of this document.</t>
      </aside>
      <t>This appendix provides an ASN.1 module <xref target="X.680"/> for the Certification
Request Information Template attribute, and it follows the conventions
established in <xref target="RFC5911"/>, <xref target="RFC5912"/>, and <xref target="RFC6268"/>.</t>
      <sourcecode type="asn.1"><![CDATA[
CRITemplateModule
  { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
    pkcs-9(9) smime(16) modules(0) id-mod-critemplate(TBD1) }

DEFINITIONS IMPLICIT TAGS ::=

BEGIN

IMPORTS -- from [RFC5912]

SupportedAttributes
 FROM PKIX1Explicit-2009
  { iso(1) identified-organization(3) dod(6) internet(1) security(5)
    mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-explicit-02(51)}

ATTRIBUTE, EXTENSION
 FROM PKIX-CommonTypes-2009
  { iso(1) identified-organization(3) dod(6) internet(1) security(5)
    mechanisms(5) pkix(7) id-mod(0) id-mod-pkixCommon-02(57) }

PUBLIC-KEY, AlgorithmIdentifier{}
 FROM AlgorithmInformation-2009
  { iso(1) identified-organization(3) dod(6) internet(1) security(5)
    mechanisms(5) pkix(7) id-mod(0)
    id-mod-algorithmInformation-02(58)}

CertExtensions
 FROM PKIX1Implicit-2009
  { iso(1) identified-organization(3) dod(6) internet(1) security(5)
    mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-implicit-02(59)}

Attributes{}, CRIAttributes, PKInfoAlgorithms
 FROM PKIX-10
  { iso(1) identified-organization(3) dod(6) internet(1)
    security(5) mechanisms(5) pkix(7)
    id-mod(0) id-mod-pkcs10-2009(69) }
;

aa-certificationRequestInfoTemplate ATTRIBUTE ::=
  { TYPE CertificationRequestInfoTemplate IDENTIFIED BY
    id-aa-certificationRequestInfoTemplate }

id-aa-certificationRequestInfoTemplate OBJECT IDENTIFIER ::=
  { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
    smime(16) aa(2) csrinfo(TBD2) }

--  like CertificationRequestInfo but OPTIONAL subject, subjectPKInfo
CertificationRequestInfoTemplate ::= SEQUENCE {
    version       INTEGER { v1(0) } (v1, ... ),
    subject       NameTemplate OPTIONAL,
    subjectPKInfo [0] SubjectPublicKeyInfoTemplate
                              {{ PKInfoAlgorithms }} OPTIONAL,
    attributes    [1] Attributes{{ CRIAttributes }}
}


--  like Name, but with OPTIONAL RDN values
NameTemplate ::= CHOICE { -- only one possibility for now --
    rdnSequence  RDNSequenceTemplate }

RDNSequenceTemplate ::= SEQUENCE OF RelativeDistinguishedNameTemplate

RelativeDistinguishedNameTemplate  ::= SET SIZE (1 .. MAX)
    OF SingleAttributeTemplate { {SupportedAttributes} }

--  like SingleAttribute, but with OPTIONAL value
SingleAttributeTemplate{ATTRIBUTE:AttrSet} ::= SEQUENCE {
    type      ATTRIBUTE.&id({AttrSet}),
    value     ATTRIBUTE.&Type({AttrSet}{@type}) OPTIONAL
}

--  like SubjectPublicKeyInfo, but with OPTIONAL subjectPublicKey
SubjectPublicKeyInfoTemplate{PUBLIC-KEY:IOSet} ::= SEQUENCE {
    algorithm        AlgorithmIdentifier{PUBLIC-KEY, {IOSet}},
    subjectPublicKey BIT STRING OPTIONAL
}


id-aa-extensionReqTemplate AttributeType ::=
{ iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
  smime(16) aa(2) extnReqTemplate(TBD3) }

--  like extensionRequest, but with OPTIONAL Extension extnValues
--  original definition was in PKCS#9 RFC 2985 section 5.4.2
at-extensionReqTemplate ATTRIBUTE ::= {
    TYPE ExtensionReqTemplate IDENTIFIED BY id-aa-extensionReqTemplate }

ExtensionReqTemplate ::= ExtensionTemplates{{CertExtensions}}

--  like Extensions, but with OPTIONAL extnValue
ExtensionTemplates{EXTENSION:ExtensionSet} ::=
    SEQUENCE SIZE (1..MAX) OF ExtensionTemplate{{ExtensionSet}}

--  like Extension, but with OPTIONAL extnValue
ExtensionTemplate{EXTENSION:ExtensionSet} ::= SEQUENCE {
    extnID    EXTENSION.&id({ExtensionSet}),
    critical  BOOLEAN
  --                   (EXTENSION.&Critical({ExtensionSet}{@extnID}))
                     DEFAULT FALSE,
    extnValue OCTET STRING (CONTAINING
              EXTENSION.&ExtnType({ExtensionSet}{@extnID})) OPTIONAL
              --  contains the DER encoding of the ASN.1 value
              --  corresponding to the extension type identified
              --  by extnID when present
}

END
]]></sourcecode>
      <!--
Local IspellDict: american
LocalWords:  abbrev CSRAttrs docname ietf rfc csrattrs ipr wg pkcs
LocalWords:  submissionType kw std toc sortrefs symrefs org mcr
LocalWords:  seriesinfo bcp crypto CsrAttrs AttrOrOID IOSet asn
LocalWords:  csrtemplate pKCS CertificationRequestInfoTemplate
LocalWords:  NameTemplate subjectPKInfo PKInfoAlgorithms br acp
LocalWords:  SubjectPublicKeyInfoTemplate AttrSet ExtensionSet
LocalWords:  SingleAttributeTemplate extensionReqTemplate secp
LocalWords:  ExtensionTemplate ExtnType myDept myGroup CSRattrs
LocalWords:  publicKey dumpasn otherName acpNodeName otherNames
LocalWords:  AcpNodeName sourcecode csrattr ecdsaWithSHA sha
LocalWords:  harkins critemplate csrinfo Changelog markdown
LocalWords:  CRITemplateModule ExtensionReq
-->

</section>
  </back>
  <!-- ##markdown-source:
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
sn03cjgZg0JFuv4PIzN85jV9AAA=

-->

</rfc>
