<?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.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-rfc7030-csrattrs-17" category="std" consensus="true" submissionType="IETF" updates="7030" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.1 -->
  <front>
    <title abbrev="CSRAttrs">Clarification and enhancement of RFC7030 CSR Attributes definition</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-rfc7030-csrattrs-17"/>
    <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="March" day="03"/>
    <area>Internet</area>
    <workgroup>LAMPS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 94?>

<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>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.
As a result of some of the implementation challenges, it came to light that the particular way of that RFC7030 (EST) says to use the CSR attributes was not universally agreed upon.</t>
      <t>This document therefore also provides a new straightforward approach: using
a template for CSR contents that may be partially filled in by the server.
This also allows an EST server to specify a subject Distinguished Name (DN).</t>
    </abstract>
  </front>
  <middle>
    <?line 109?>

<section anchor="introduction">
      <name>Introduction</name>
      <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>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 '<tt>type</tt>' field and
that the '<tt>values</tt>' field can contain an entire sequence of X.509 extensions.</t>
        <t>The OID to use for such attributes in the '<tt>type</tt>' 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 unstructured 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.509 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/></t>
          </li>
        </ul>
        <t>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 '<tt>subjectAltName</tt>' 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>
        <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>id-aa-extensionReqTemplate</tt> attributes
and MUST NOT contain both <tt>id-ExtensionReq</tt> and <tt>id-aa-extensionReqTemplate</tt> attributes.</t>
        <t>The '<tt>values</tt>' field of an <tt>id-aa-extensionReqTemplate</tt> attribute
MUST contain a set with exactly one element,
and this element MUST be of type <tt>ExtensionTemplate</tt>.</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 '<tt>subject</tt>' field with a common name to be filled in by the EE and
two organizational unit names with given values "myDept" and "myGroup",</t>
          </li>
          <li>
            <t>the '<tt>publicKey</tt>' field contains an
Elliptic Curve Cryptography (ECC) key on curve <tt>secp256r1</tt>,</t>
          </li>
          <li>
            <t>the '<tt>subjectAltName</tt>' extension
with DNS name "www.myServer.com" and an empty IP address to be filled in,</t>
          </li>
          <li>
            <t>the '<tt>keyUsage</tt>' extension marked critical
with the value digitalSignature and keyAgreement, and</t>
          </li>
          <li>
            <t>the '<tt>extKeyUsage</tt>' 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 unstructured list of 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" <xref target="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 <xref target="RFC7030"/> CsrAttrs 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 section="4.5.2" sectionFormat="comma" target="RFC7030"/>, a few different attributes are included.
The original example is NOT CORRECT.
It was not aligned with the definition of the Extension Request attribute as specified in <xref section="5.4.2" sectionFormat="of" target="RFC2985"/>.
This example uses one item in the SET OF attribute values, but it does not
Extension Request attribute because the MAC Address is not a X.509v3 certificate extension.</t>
        <section anchor="base64-encoded-example-1">
          <name>Base64 encoded example</name>
          <t>The Base64:</t>
          <sourcecode type="base64" markers="false"><![CDATA[
<<<<<<< HEAD
MDIGCSqGSIb3DQEJBzASBgcqhkjOPQIBMQcGBSuBBAAiBgcr
BgEBAQEWBggqhkjOPQQDAw==
=======
ME4GCSqGSIb3DQEJBzASBgcqhkjOPQIBMQcGBSuBBAAiMCMG
CSqGSIb3DQEJDjEWMBQwEgYDVR0JBAswCQYHKwYBAQEBFgYI
KoZIzj0EAwM=
>>>>>>> 5a54bdf... updates to base 7030 example
]]></sourcecode>
        </section>
        <section anchor="asn1-dump-output-1">
          <name>ASN.1 DUMP output</name>
          <t>The CsrAttrs structure contains:</t>
          <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 OID is provided with the value secp384r1 to
indicate what kind of public key should be submitted.</t>
            </li>
            <li>
              <t>An extensionRequest attribute with a requirement to include the
subjectDirectoryAttributes extension.  The macAddress attribute
is required in that extension, with the OID 1.3.6.1.1.1.1.22,
but without a value.  This indicates that the CSR should include
a subjectDirectoryAttributes extension, and the value for this
extension is is required to include the macAddress.</t>
            </li>
            <li>
              <t>The ecdsaWithSHA384 OID is included to indicate what kind of hash
is expected to be used for the self-signature in the PKCS#10 CSR.</t>
            </li>
          </ol>
          <artwork><![CDATA[
<<<<<<< HEAD
    <30 32>
  0  50: SEQUENCE {
=======
    <30 4E>
  0  78: SEQUENCE {
>>>>>>> 5a54bdf... updates to base 7030 example
    <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)
       :       }
       :     }
<<<<<<< HEAD
    <06 07>
 33   7:   OBJECT IDENTIFIER '1 3 6 1 1 1 1 22'
    <06 08>
 42   8:   OBJECT IDENTIFIER ecdsaWithSHA384 (1 2 840 10045 4 3 3)
=======
    <30 23>
 33  35:   SEQUENCE {
    <06 09>
 35   9:     OBJECT IDENTIFIER extensionRequest (1 2 840 113549 1 9 14)
       :       (PKCS #9 via CRMF)
    <31 16>
 46  22:     SET {
    <30 14>
 48  20:       SEQUENCE {
    <30 12>
 50  18:         SEQUENCE {
    <06 03>
 52   3:           OBJECT IDENTIFIER subjectDirectoryAttributes (2 5 29 9)
       :             (X.509 extension)
    <04 0B>
 57  11:           OCTET STRING, encapsulates {
    <30 09>
 59   9:             SEQUENCE {
    <06 07>
 61   7:               OBJECT IDENTIFIER '1 3 6 1 1 1 1 22'
       :               }
       :             }
       :           }
       :         }
       :       }
       :     }
    <06 08>
 70   8:   OBJECT IDENTIFIER ecdsaWithSHA384 (1 2 840 10045 4 3 3)
>>>>>>> 5a54bdf... updates to base 7030 example
       :     (ANSI X9.62 ECDSA algorithm with SHA384)
       :   }
]]></artwork>
        </section>
      </section>
      <section anchor="requires-a-specific-extension">
        <name>Requires a specific extension</name>
        <t>In this example, the CSR is required to have an Elliptic Curve key,
to include a serial number as part of the subject name, to include
both the friendly name and favorite drink attributes, and to use
SHA-512 as the hash algorithm within the signature.</t>
        <section anchor="base64-encoded-example-2">
          <name>Base64 encoded example</name>
          <t>The Base64:</t>
          <sourcecode type="base64" markers="false"><![CDATA[
MEUGCSqGSIb3DQEJBzASBgcqhkjOPQIBMQcGBSuBBAAjBgkq
hkiG9w0BCRQGCgmSJomT8ixkAQUGA1UEBQYIKoZIzj0EAwQ=
]]></sourcecode>
        </section>
        <section anchor="asn1-dump-output-2">
          <name>ASN.1 DUMP output</name>
          <t>The CsrAttrs structure contains:</t>
          <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 OID is provided with the value secp521r1 to indicate what kind of public key should be submitted.</t>
            </li>
            <li>
              <t>The friendly name attributes are required in the CSR.</t>
            </li>
            <li>
              <t>The favorite drink attributes are required in the CSR.</t>
            </li>
            <li>
              <t>A serialNumber OID to indicate that the CSR should include a serial number as part of subject name.</t>
            </li>
            <li>
              <t>The ecdsaWithSHA512 OID is included to indicate the SHA-512 hash is expected to be used for the self-signature in the PKCS#10 CSR.</t>
            </li>
          </ol>
          <artwork><![CDATA[
    <30 45>
  0  69: 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)
       :       }
       :     }
    <06 09>
 33   9:   OBJECT IDENTIFIER friendlyName (for PKCS #12) (1 2 840 113549 1 9 20)
       :     (PKCS #9 via PKCS #12)
    <06 0A>
 44  10:   OBJECT IDENTIFIER '0 9 2342 19200300 100 1 5'
    <06 03>
 56   3:   OBJECT IDENTIFIER serialNumber (2 5 4 5)
       :     (X.520 DN component)
    <06 08>
 61   8:   OBJECT IDENTIFIER ecdsaWithSHA512 (1 2 840 10045 4 3 4)
       :     (ANSI X9.62 ECDSA algorithm with SHA512)
       :   }
]]></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>
          <t>Provide a CSR with an RSA key that's 4096 bits and use SHA256 as the hash algorithm within the signature.</t>
          <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
use SHA384 as the hash algorithm within the signature.</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 <xref target="favoritedrink"/> [OID 0.9.2342.19200300.100.1.5], and
use SHA512 as the hash algorithm within the signature.</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 hash 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>
      <t>Deb Cooley did the usual Area Director Review.</t>
    </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="dumpasn1" target="https://www.cs.auckland.ac.nz/~pgut001/dumpasn1.c">
          <front>
            <title>Dump ASN</title>
            <author initials="P." surname="Gutmann" fullname="Peter Gutmann">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="favoritedrink" target="https://oid-base.com/get/0.9.2342.19200300.100.1.5">
          <front>
            <title>Favorite Drink: arbitrary OID</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </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 874?>

<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 PKCS-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 Attributes, but with OPTIONAL value
SingleAttributeTemplates{ATTRIBUTE:AttrSet} ::= SEQUENCE OF 
    SingleAttributeTemplates{ {AttrSet} }

--  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 OBJECT IDENTIFIER ::=
{ 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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
ZXb8/8y3lhQzhwAA

-->

</rfc>
