<?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-20" 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-20"/>
    <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="17"/>
    <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>
        <t>When not using the template-based approach of {#csrtemplate}, specifying the requirement for a public key of a specific type and optionally its size and other parameters MUST be done as follows:  Include exactly one Attribute with the <tt>type</tt> field being the OID specifying the type of the key, such as <tt>ecPublicKey</tt> or <tt>rsaEncryption</tt>.
The '<tt>values</tt>' field MAY be empty to indicate no further requirements on the key.
Otherwise it MUST contain suitable parameters for the given key type, such as a singleton set containing the OID of an EC curve such as <tt>secp384r1</tt> or containing an integer value for the RSA key size such as 4096.
Many examples for this are given in {#examples}</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 using the original RFC 7030 approach</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>Require an 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[
MGgwZgYJKoZIhvcNAQkOMVkwVzBVBgNVHREBAf8ESzBJoEcG
CCsGAQUFBwgKoDsWOXJmYzg5OTQrZmQ3MzlmYzIzYzM0NDAx
MTIyMzM0NDU1MDAwMDAwMDArQGFjcC5leGFtcGxlLmNvbQ==
]]></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 68>
  0 104: SEQUENCE {
    <30 66>
  2 102:   SEQUENCE {
    <06 09>
  4   9:     OBJECT IDENTIFIER extensionRequest (1 2 840 113549 1 9 14)
       :       (PKCS #9 via CRMF)
    <31 59>
 15  89:     SET {
    <30 57>
 17  87:       SEQUENCE {
    <30 55>
 19  85:         SEQUENCE {
    <06 03>
 21   3:           OBJECT IDENTIFIER subjectAltName (2 5 29 17)
       :             (X.509 extension)
    <01 01>
 26   1:           BOOLEAN TRUE
    <04 4B>
 29  75:           OCTET STRING, encapsulates {
    <30 49>
 31  73:             SEQUENCE {
    <A0 47>
 33  71:               [0] {
    <06 08>
 35   8:                 OBJECT IDENTIFIER '1 3 6 1 5 5 7 8 10'
    <A0 3B>
 45  59:                 [0] {
    <16 39>
 47  57:                   IA5String
       :                   'rfc8994+fd739fc23c3440112233445500000000+@acp.ex'
       :                   'ample.com'
       :                   }
       :                 }
       :               }
       :             }
       :           }
       :         }
       :       }
       :     }
       :   }
]]></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 encoding of the '<tt>macAddress</tt>' part in the 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"/>.
The revised encoding given here does not use an Extension Request attribute
because the MAC Address is not an X.509 certificate extension by itself
and because the server provides its OID without a value,
which is not allowed syntactically within an Extension structure.</t>
        <section anchor="base64-encoded-example-1">
          <name>Base64 encoded example</name>
          <t>The Base64:</t>
          <sourcecode type="base64" markers="false"><![CDATA[
MDIGCSqGSIb3DQEJBzASBgcqhkjOPQIBMQcGBSuBBAAiBgcr
BgEBAQEWBggqhkjOPQQDAw==
]]></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>The  macAddress OID 1.3.6.1.1.1.1.22 is included to
indicate that the CSR is expected to include
(in a subjectDirectoryAttributes extension) a MAC address 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 in the PKCS#10 CSR.</t>
            </li>
          </ol>
          <artwork><![CDATA[
    <30 32>
  0  50: 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)
       :       }
       :     }
    <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)
       :     (ANSI X9.62 ECDSA algorithm with SHA384)
       :   }
]]></artwork>
        </section>
      </section>
      <section anchor="require-a-specific-subjectaltname-extension">
        <name>Require 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[
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>An extensionRequest container with a subjectAltName value containing the name potato@example.com</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
(Example harkins01)</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.
(Example harkins02)</t>
        <section anchor="base64-encoded-example-4">
          <name>Base64 encoded example</name>
          <t>The Base64:</t>
          <sourcecode type="base64" markers="false"><![CDATA[
MC4GCSqGSIb3DQEJBzASBgcqhkjOPQIBMQcGBSuBBAAiBgNV
BAUGCCqGSM49BAMD
]]></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 2E>
  0  46: 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)
       :       }
       :     }
    <06 03>
 33   3:   OBJECT IDENTIFIER serialNumber (2 5 4 5)
       :     (X.520 DN component)
    <06 08>
 38   8:   OBJECT IDENTIFIER ecdsaWithSHA384 (1 2 840 10045 4 3 3)
       :     (ANSI X9.62 ECDSA algorithm with SHA384)
       :   }
]]></artwork>
        </section>
      </section>
      <section anchor="require-specific-extensions-and-attributes">
        <name>Require specific extensions and attributes</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.
(Example harkins03)</t>
        <section anchor="base64-encoded-example-5">
          <name>Base64 encoded example</name>
          <t>The Base64:</t>
          <sourcecode type="base64" markers="false"><![CDATA[
MEUGCSqGSIb3DQEJBzASBgcqhkjOPQIBMQcGBSuBBAAjBgkq
hkiG9w0BCRQGCgmSJomT8ixkAQUGA1UEBQYIKoZIzj0EAwQ=
]]></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 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>
    <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 (id-aa-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 (id-aa-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 821?>

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

-->

</rfc>
