<?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-22" category="std" consensus="true" submissionType="IETF" updates="70309148" 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-22"/>
    <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="May" day="08"/>
    <area>Internet</area>
    <workgroup>LAMPS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 94?>

<t>This document updates RFC7030, Enrollment over Secure Transport (EST), clarifying
how the Certificate Signiing Request (CSR) Attributes Response can be used by an EST server to specify
both CSR attribute Object IDs (OID) 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>RFC7030 (EST) is ambiguous in its specification of the CSR Attributes Response.
This has resulted in implementation challenges and implementor confusion.
As a result, there was not universal understanding of what was specified.
This document clarifies the encoding rules.</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 111?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document updates RFC7030 Enrollment over Secure Transport (EST) and clarifies
how the Certificate Signing Request (CSR) Attributes Response can be used by an EST server to specify
both CSR attribute OIDs and also CSR attribute values.
In particular, the server needs to be able to specify X.509 extension values that it expects the client to include in the subsequent CSR.</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>When bootstrapping the ACP, there is a requirement that each node be given a very specific subjectAltName.
In <xref target="RFC8994"/>, the ACP specification, the EST server is specified to make use of the CSR Attributes ("/csrattrs") resource (specified in <xref section="2.6" sectionFormat="comma" target="RFC7030"/>) to convey to the EST client the actual subjectAltName that needs to go
into its CSR and thus ultimately into its End Entity 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 <xref section="2.6" sectionFormat="comma" target="RFC7030"/>.</t>
      <t><xref section="2.6" sectionFormat="comma" target="RFC7030"/> 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 be used.</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>Also, <xref section="4.5.2" sectionFormat="comma" target="RFC7030"/> is extended to clarify the use of the existing ASN.1 syntax <xref target="X.680"/><xref target="X.690"/>.</t>
      <t>This covers all uses and is fully backward compatible with existing use,
including addressesing the needs of <xref target="RFC8994"/> and <xref target="RFC8995"/>.</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 tinformation 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>When not using the template-based approach of <xref target="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 <xref target="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 an <xref target="RFC2986"/> CSR or a Certificate Request Message Format (CRMF) formatted request
(for details see <xref target="RFC6268"/> Sections 5 or 9, respectively).</t>
        <t>One drawback to that approach, particularly for the CSR, is that some unused
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 Relative Distinguished Name (RDN) values, as it would encode them as invalid empty strings.
Also encoding an absent '<tt>subjectPublicKey</tt>' value as an empty <tt>BIT STRING</tt>
and an absent X.509 extension value as an empty <tt>OCTET STRING</tt>
can cause issues with strict ASN.1 parsing and decoding.</t>
        <t>These drawbacks are avoided as follows:</t>
        <t>This specification defines a new Certificate Request Information Template attribute
for <tt>CsrAttrs</tt> (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 server in addition gives an RDN value,
this means that the client is expected to use this value for the RDN,
otherwise the client is expected to fill in a suitable value.
The example at the end of this section has a '<tt>subject</tt>' field
that contains both forms of RDN specifications.</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 placeholder 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 for specifying requirements on X.509 extensions.</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 SHOULD use it in the extension as well.
If the '<tt>extnValue</tt>' is present (which is always the case when type <tt>Extension</tt> is used),
the client SHOULD use the given extension value in its CSR.
When the type <tt>ExtensionTemplate</tt> is used, the '<tt>extnValue</tt>' can be absent, and then the client SHOULD provide an extension value in an <tt>Extension</tt> with the given <tt>extnID</tt>.
For instance, if the server includes an <tt>ExtensionTemplate</tt>
with the <tt>extnID</tt> '<tt>subjectAltName</tt>' but without an <tt>extnValue</tt>,
the client SHOULD include a SAN extension with a suitable value.</t>
        <t>In case the server includes an <tt>ExtensionTemplate</tt> with the <tt>extnID</tt> '<tt>subjectAltName</tt>'
and a partially filled in <tt>extnValue</tt>, such as a '<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 SHOULD 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 'subjectAltName' extension with two entries; one DNS entry with
name "www.myServer.com" and IP entry that is empty for the 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>EST servers with legacy clients MAY continue to use the <xref target="RFC7030"/>-style unstructured list of attribute/value pairs,
and MAY also include the template style described in <xref target="csrtemplate"/> for newer clients.
Clients which understand both MUST use the template only, and
ignore all other <tt>CSRattrs</tt> 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"/> <tt>CsrAttrs</tt>
attribute with OID '<tt>id-ExtensionReq</tt>' indicating type <tt>Extensions</tt>.
This is what might be created by an <xref target="RFC8995"/> Registrar that is asking for <xref target="RFC8994"/> AcpNodeName with format '<tt>otherNames</tt>'.</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+fd739fc23c34401122334455'
       :                   '00000000+@acp.example.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 '<tt>id-ExtensionReq</tt>' 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 a structure of type '<tt>Extension</tt>'.</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>(TODO remove: Example ref Harkins01)</t>
        <t>The CSR requires an RSA 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>(TODO remove: Example ref Harkins02)</t>
        <t>The CSR requires an ECC 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[
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>(TODO remove: Example ref Harkins03)</t>
        <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[
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 three 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-certificationRequestInfoTemplate) 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="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>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC2986">
          <front>
            <title>PKCS #10: Certification Request Syntax Specification Version 1.7</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 #10 v1.7 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 the PKCS #9 v2.0 or the PKCS #10 v1.7 document. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2986"/>
          <seriesInfo name="DOI" value="10.17487/RFC2986"/>
        </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>
      </references>
    </references>
    <?line 842?>

<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) id-aa-certificationRequestInfoTemplate(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) id-aa-extensionReqTemplate(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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
ruJ62We3glAZhUIVxv4fV8KLqV+HAAA=

-->

</rfc>
