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

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

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

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

   Attribute { ATTRIBUTE:IOSet } ::= SEQUENCE {
        type   ATTRIBUTE.&id({IOSet}),
        values SET SIZE(1..MAX) OF ATTRIBUTE.&Type({IOSet}{@type}) }
]]></artwork>
        <t>This remains unchanged, such that bits-on-the-wire compatibility is maintained.</t>
        <t>Key parts that were unclear were which OID to use in the 'type' field and
that the 'values' field can contain an entire sequence of X.509 extensions.</t>
        <t>The OID to use for such attributes in the 'type' field MUST be extensionRequest,
which has the numerical value 1.2.840.113549.1.9.14.
There MUST be only one such Attribute.</t>
        <t>The 'values' field of this attribute MUST contain a set with exactly one element,
and this element MUST be of type Extensions, 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 particiular extnID.</t>
        <t>With this understanding, the needs of <xref target="RFC8994"/> and <xref target="RFC8995"/> are satisfied
with no change to the bits on the wire.</t>
      </section>
      <section anchor="csrtemplate">
        <name>Use of CSR templates</name>
        <t><xref section="B" sectionFormat="comma" target="RFC8295"/> describes a mechanism that avoids the
piecemeal inclusion of attributes that <xref target="RFC7030"/> documented.
Instead, an entire CSR object is returned with various fields filled
out, and other fields waiting to be filled in, in a pKCS7PDU attribute.
In that approach, the pKCS7PDU attribute includes a Full PKI
Data content type <xref target="RFC5272"/> and that in turn includes a CSR or CRMF
formatted request; see <xref target="RFC6268"/> Sections 5 and 9, respectively.</t>
        <t>The 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. We avoid this drawback as follows.</t>
        <t>This specification defines the Certificate Request Information
Template attribute for CsrAttrs, see <xref target="csrattrs"/>, that is essentially
a partially filled in PKCS#10 CSR minus the signature wrapper as follows:</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>Note that 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 is made <tt>OPTIONAL</tt> to cover the case the server does not provide any
requrements on the subject name and its RDNs.</t>
          </li>
          <li>
            <t>RelativeDistinguishedNames (RDNs) in the <tt>subject</tt> fields are allowed to be empty,
which is achieved by adding <tt>OPTIONAL</tt> to the <tt>value</tt> field of <tt>AttributeTypeAndValueTemplate</tt>.
This means that the client is required to provide an RDN of the given type and fill in its value.</t>
          </li>
        </ul>
        <artwork><![CDATA[
  AttributeTypeAndValueTemplate {ATTRIBUTE:AttrSet} ::= SEQUENCE {
      type      ATTRIBUTE.&id({AttrSet}),
      value     ATTRIBUTE.&Type({AttrSet}{@type}) OPTIONAL
  }

]]></artwork>
        <ul spacing="normal">
          <li>
            <t>The <tt>subjectPKInfo</tt> field is made <tt>OPTIONAL</tt>,
such that the server can leave it out in case there are no requirements on the key.<br/>
Otherwise the server specifies the algorithm of the key, i.e., the key type, in the <tt>algorithm</tt> field.
The <tt>subjectPublicKey</tt> field contained in <tt>SubjectPublicKeyInfoTemplate</tt> is made
<tt>OPTIONAL</tt> because usually it is left out, but in case the server needs to specify the size of an
RSA key, the field is used to provide a dummy public key value of the desired RSA modulus length.</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>pkcs-9-at-extensionRequestTemplate</tt> and the related <tt>ExtensionTemplate</tt> structure
is defind where the <tt>extnValue</tt> field is optional.
If the field is absent this means that the client is required to provide an X.509 extension
with the given <tt>extnID</tt> and potentially the <tt>critical</tt> flag and fill in its value.</t>
          </li>
        </ul>
        <artwork><![CDATA[
  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
  }
]]></artwork>
        <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"/>.
That method does not properly deal with empty RDNs (encoding them as empty strings),
absent <tt>subjectPublicKey</tt> fields (encoding them as empty <tt>BIT STRING</tt>),
and empty X.509v3 extension values (encoding them as empty <tt>OCTET STRING</tt>),
which may cause issues with strict ASN.1 parsing and decoding.</t>
        <t>The version code MUST be v1 (0).</t>
        <!--
As shown in the example below,
any empty RDN values in the `subject` as well as any empty X.509v3 extension values
in the `attributes` field are expected to be filled in by the client.
-->

<t>If the <tt>subjectPKInfo</tt> field is present,
it indicates the type of the key pair the client is expected to use,
where the <tt>subjectPublicKey</tt> MUST NOT be given except if the <tt>algorithm</tt> indicates RSA.</t>
        <t>The <tt>attributes</tt> field MUST NOT contain multiple <tt>extensionRequestTemplate</tt> attributes
and MUST NOT contain both <tt>extensionRequest</tt> and <tt>extensionRequestTemplate</tt> attributes.</t>
        <!--
Each of the attributes has a single attribute value instance in the
values set.  Even though the syntax is defined as a set, there MUST
be exactly one instance of AttributeValue present.
-->

<t>Suppose the server requires that the CSR will contain:</t>
        <ul spacing="normal">
          <li>
            <t>the subject field with a common name to be filled in by the EE and
two organizational unit fields with given values "myDept" and "myGroup",</t>
          </li>
          <li>
            <t>the publicKey field contains an
Elliptic Curve Cryptography (ECC) key on curve secp256r1,</t>
          </li>
          <li>
            <t>the subjectAltName X.509 extension
with DNS name "www.myServer.com" and an IP address to be filled in,</t>
          </li>
          <li>
            <t>the keyUsage extension marked critical
with the value digitalSignature and keyAgreement, and</t>
          </li>
          <li>
            <t>the extKeyUsage extension with values 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"
         }
       }
     }
  SEQUENCE {
    SEQUENCE {
      OBJECT IDENTIFIER ecPublicKey (1 2 840 10045 2 1)
      OBJECT IDENTIFIER secp256r1 (1 2 840 10045 3 1 7)
      }
    }
  [0] {
    SEQUENCE {
      OBJECT IDENTIFIER extensionRequest (1 2 840 113549 1 9 TBD3)
      SET {
        SEQUENCE {
          SEQUENCE {
            OBJECT IDENTIFIER subjectAltName (2 5 29 17)
            OCTET STRING, encapsulates {
              SEQUENCE {
                [2] "www.myServer.com"
                [7] ""
                }
              }
            }
          SEQUENCE {
            OBJECT IDENTIFIER keyUsage (2 5 29 15)
            BOOLEAN TRUE
            OCTET STRING, encapsulates {
              BIT STRING 3 unused bits
                "10001"B
              }
            }
          SEQUENCE {
            OBJECT IDENTIFIER extKeyUsage (2 5 29 37)
            }
          }
        }
      }
    }
  }
]]></artwork>
      </section>
    </section>
    <section anchor="co-existence-with-existing-implementations">
      <name>Co-existence with existing implementations</name>
      <t>Legacy servers MAY continue to use the <xref target="RFC7030"/> style piecemeal attribute/value pairs, and MAY also include the template style described in {#csrtemplate}.
Clients which understand both MUST use the template only, and
ignore all other CSRattrs elements.
Older clients will ignore the new CertificateRequestInfoTemplate element.</t>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>Each example has a high-level (English) explanation of what is expected.
Some mapping back to the Attribute and Extension definitions above are included.
The base64 DER encoding is then shown.
The output of "dumpasn1" is then provided to detail what the contents are.</t>
      <section anchor="acpNodeName">
        <name>RFC8994/ACP subjectAltName with specific otherName</name>
        <t>A single subjectAltName extension is specified in a single Extension attribute.
This is what might be created by an <xref target="RFC8995"/> Registrar that is asking for <xref target="RFC8994"/> AcpNodeName format otherNames.</t>
        <section anchor="base64-encoded-example">
          <name>Base64 encoded example</name>
          <t>The Base64:</t>
          <sourcecode type="base64" markers="false"><![CDATA[
MGQwYgYJKoZIhvcNAQkOMVUwUwYDVR0RAQH/BEmgRzBFBggr
BgEFBQcICgw5cmZjODk5NCtmZDczOWZjMjNjMzQ0MDExMjIz
MzQ0NTUwMDAwMDAwMCtAYWNwLmV4YW1wbGUuY29t
]]></sourcecode>
        </section>
        <section anchor="asn1-dump-output">
          <name>ASN.1 DUMP output</name>
          <t>There is a single subjectAltName Extension with an Attribute with Extension type.</t>
          <artwork><![CDATA[
    <30 64>
  0 100: SEQUENCE {
    <30 62>
  2  98:   SEQUENCE {
    <06 09>
  4   9:     OBJECT IDENTIFIER extensionRequest (1 2 840 113549 1 9 14)
       :       (PKCS #9 via CRMF)
    <31 55>
 15  85:     SET {
    <30 53>
 17  83:       SEQUENCE {
    <06 03>
 19   3:         OBJECT IDENTIFIER subjectAltName (2 5 29 17)
       :           (X.509 extension)
    <01 01>
 24   1:         BOOLEAN TRUE
    <04 49>
 27  73:         OCTET STRING
       :           A0 47 30 45 06 08 2B 06    .G0E..+.
       :           01 05 05 07 08 0A 0C 39    .......9
       :           72 66 63 38 39 39 34 2B    rfc8994+
       :           66 64 37 33 39 66 63 32    fd739fc2
       :           33 63 33 34 34 30 31 31    3c344011
       :           32 32 33 33 34 34 35 35    22334455
       :           30 30 30 30 30 30 30 30    00000000
       :           2B 40 61 63 70 2E 65 78    +@acp.ex
       :           61 6D 70 6C 65 2E 63 6F    ample.co
       :           6D                         m
       :         }
       :       }
       :     }
       :   }
]]></artwork>
        </section>
      </section>
      <section anchor="rfc7030-original-example">
        <name>RFC7030 original example</name>
        <t>In this example, taken from <xref target="RFC7030"/>, a few different attributes are included.</t>
        <section anchor="base64-encoded-example-1">
          <name>Base64 encoded example</name>
          <t>The Base64:</t>
          <sourcecode type="base64" markers="false"><![CDATA[
MEEGCSqGSIb3DQEJBzASBgcqhkjOPQIBMQcGBSuBBAAiMBYG
CSqGSIb3DQEJDjEJBgcrBgEBAQEWBggqhkjOPQQDAw==
]]></sourcecode>
        </section>
        <section anchor="asn1-dump-output-1">
          <name>ASN.1 DUMP output</name>
          <ol spacing="normal" type="1"><li>
              <t>The challengePassword attribute is included to indicate that the CSR should include this value.</t>
            </li>
            <li>
              <t>An ecPublicKey attribute is provided with the value secp384r1 to indicate what kind of key should be submitted.</t>
            </li>
            <li>
              <t>An extensionRequest container with an OID 1.3.6.1.1.1.1.22 (macAddress), but without a value, to indicate that the CSR should include an X.509v3 extension with this value.</t>
            </li>
            <li>
              <t>The ecdsaWithSHA384 OID is included to indicate what kind of hash is expected to be used for the self-signature of the PCKS#10 CSR structure.</t>
            </li>
          </ol>
          <artwork><![CDATA[
    <30 41>
  0  65: SEQUENCE {
    <06 09>
  2   9:   OBJECT IDENTIFIER challengePassword (1 2 840 113549 1 9 7)
       :     (PKCS #9)
    <30 12>
 13  18:   SEQUENCE {
    <06 07>
 15   7:     OBJECT IDENTIFIER ecPublicKey (1 2 840 10045 2 1)
       :       (ANSI X9.62 public key type)
    <31 07>
 24   7:     SET {
    <06 05>
 26   5:       OBJECT IDENTIFIER secp384r1 (1 3 132 0 34)
       :         (SECG (Certicom) named elliptic curve)
       :       }
       :     }
    <30 16>
 33  22:   SEQUENCE {
    <06 09>
 35   9:     OBJECT IDENTIFIER extensionRequest (1 2 840 113549 1 9 14)
       :       (PKCS #9 via CRMF)
    <31 09>
 46   9:     SET {
    <06 07>
 48   7:       OBJECT IDENTIFIER '1 3 6 1 1 1 1 22'
       :       }
       :     }
    <06 08>
 57   8:   OBJECT IDENTIFIER ecdsaWithSHA384 (1 2 840 10045 4 3 3)
       :     (ANSI X9.62 ECDSA algorithm with SHA384)
       :   }
]]></artwork>
        </section>
      </section>
      <section anchor="est-server-requires-a-specific-subjectaltname-extension">
        <name>EST server requires a specific subjectAltName extension</name>
        <t>This example is the same as the previous one except that instead of the OID
for a macAddress, a subjectAltName is specified as the only Extension element.</t>
        <section anchor="base64-encoded-example-2">
          <name>Base64 encoded example</name>
          <t>The Base64:</t>
          <sourcecode type="base64" markers="false"><![CDATA[
MGYGCSqGSIb3DQEJBzASBgcqhkjOPQIBMQcGBSuBBAAiMDsG
CSqGSIb3DQEJDjEuMCwGA1UdEQEB/wQioCAwHgYIKwYBBQUH
CAoMEnBvdGF0b0BleGFtcGxlLmNvbQYIKoZIzj0EAwM=
]]></sourcecode>
        </section>
        <section anchor="asn1-dump-output-2">
          <name>ASN.1 DUMP output</name>
          <ol spacing="normal" type="1"><li>
              <t>The challengePassword attribute is included to indicate that the CSR should include this value.</t>
            </li>
            <li>
              <t>An ecPublicKey attribute is provided with the value secp384r1 to indicate what kind of key should be submitted.</t>
            </li>
            <li>
              <t>An extensionRequest container with a subjectAltName value containing the name potato@example.com</t>
            </li>
            <li>
              <t>The ecdsaWithSHA384 OID is included to indicate what kind of hash is expected to be used for the self-signature of the PCKS#10 CSR structure.</t>
            </li>
          </ol>
          <artwork><![CDATA[
    <30 66>
  0 102: SEQUENCE {
    <06 09>
  2   9:   OBJECT IDENTIFIER challengePassword (1 2 840 113549 1 9 7)
       :     (PKCS #9)
    <30 12>
 13  18:   SEQUENCE {
    <06 07>
 15   7:     OBJECT IDENTIFIER ecPublicKey (1 2 840 10045 2 1)
       :       (ANSI X9.62 public key type)
    <31 07>
 24   7:     SET {
    <06 05>
 26   5:       OBJECT IDENTIFIER secp384r1 (1 3 132 0 34)
       :         (SECG (Certicom) named elliptic curve)
       :       }
       :     }
    <30 3B>
 33  59:   SEQUENCE {
    <06 09>
 35   9:     OBJECT IDENTIFIER extensionRequest (1 2 840 113549 1 9 14)
       :       (PKCS #9 via CRMF)
    <31 2E>
 46  46:     SET {
    <30 2C>
 48  44:       SEQUENCE {
    <06 03>
 50   3:         OBJECT IDENTIFIER subjectAltName (2 5 29 17)
       :           (X.509 extension)
    <01 01>
 55   1:         BOOLEAN TRUE
    <04 22>
 58  34:         OCTET STRING
       :           A0 20 30 1E 06 08 2B 06    . 0...+.
       :           01 05 05 07 08 0A 0C 12    ........
       :           70 6F 74 61 74 6F 40 65    potato@e
       :           78 61 6D 70 6C 65 2E 63    xample.c
       :           6F 6D                      om
       :         }
       :       }
       :     }
    <06 08>
 94   8:   OBJECT IDENTIFIER ecdsaWithSHA384 (1 2 840 10045 4 3 3)
       :     (ANSI X9.62 ECDSA algorithm with SHA384)
       :   }
]]></artwork>
        </section>
      </section>
      <section anchor="require-a-public-key-of-a-specific-size">
        <name>Require a public key of a specific size</name>
        <t>The CSR requires a public key of a specific size</t>
        <section anchor="base64-encoded-example-3">
          <name>Base64 encoded example</name>
          <t>The Base64:</t>
          <sourcecode type="base64" markers="false"><![CDATA[
MCkGCSqGSIb3DQEJBzARBgkqhkiG9w0BAQExBAICEAAGCSqG
SIb3DQEBCw==
]]></sourcecode>
        </section>
        <section anchor="asn1-dump-output-3">
          <name>ASN.1 DUMP output</name>
          <ol spacing="normal" type="1"><li>
              <t>Provide a CSR with an RSA key that's 4096 bits and sign it with sha256</t>
            </li>
          </ol>
          <artwork><![CDATA[
    <30 29>
  0  41: SEQUENCE {
    <06 09>
  2   9:   OBJECT IDENTIFIER challengePassword (1 2 840 113549 1 9 7)
       :     (PKCS #9)
    <30 11>
 13  17:   SEQUENCE {
    <06 09>
 15   9:     OBJECT IDENTIFIER rsaEncryption (1 2 840 113549 1 1 1)
       :       (PKCS #1)
    <31 04>
 26   4:     SET {
    <02 02>
 28   2:       INTEGER 4096
       :       }
       :     }
    <06 09>
 32   9:   OBJECT IDENTIFIER sha256WithRSAEncryption
                             (1 2 840 113549 1 1 11)
       :     (PKCS #1)
       :   }
]]></artwork>
        </section>
      </section>
      <section anchor="require-a-public-key-of-a-specific-curve">
        <name>Require a public key of a specific curve</name>
        <t>The CSR requires a public key with a specific curve</t>
        <section anchor="base64-encoded-example-4">
          <name>Base64 encoded example</name>
          <t>The Base64:</t>
          <sourcecode type="base64" markers="false"><![CDATA[
MD0GCSqGSIb3DQEJBzASBgcqhkjOPQIBMQcGBSuBBAAiMBIGCSqGSIb3DQEJDjEF
BgNVBAUGCCqGSM49BAMD
]]></sourcecode>
        </section>
        <section anchor="asn1-dump-output-4">
          <name>ASN.1 DUMP output</name>
          <t>Provide a CSR with an ECC key from p384, include your serial number, and
sign it with sha384.</t>
          <artwork><![CDATA[
    <30 3D>
  0  61: SEQUENCE {
    <06 09>
  2   9:   OBJECT IDENTIFIER challengePassword (1 2 840 113549 1 9 7)
       :     (PKCS #9)
    <30 12>
 13  18:   SEQUENCE {
    <06 07>
 15   7:     OBJECT IDENTIFIER ecPublicKey (1 2 840 10045 2 1)
       :       (ANSI X9.62 public key type)
    <31 07>
 24   7:     SET {
    <06 05>
 26   5:       OBJECT IDENTIFIER secp384r1 (1 3 132 0 34)
       :         (SECG (Certicom) named elliptic curve)
       :       }
       :     }
    <30 12>
 33  18:   SEQUENCE {
    <06 09>
 35   9:     OBJECT IDENTIFIER extensionRequest (1 2 840 113549 1 9 14)
       :       (PKCS #9 via CRMF)
    <31 05>
 46   5:     SET {
    <06 03>
 48   3:       OBJECT IDENTIFIER serialNumber (2 5 4 5)
       :         (X.520 DN component)
       :       }
       :     }
    <06 08>
 53   8:   OBJECT IDENTIFIER ecdsaWithSHA384 (1 2 840 10045 4 3 3)
       :     (ANSI X9.62 ECDSA algorithm with SHA384)
       :   }
]]></artwork>
        </section>
      </section>
      <section anchor="require-a-specific-extension">
        <name>Require a specific extension</name>
        <t>The CSR is required to have an EC key, to include a serial number,
a friendly name, favorite drink, and be signed with SHA512.</t>
        <section anchor="base64-encoded-example-5">
          <name>Base64 encoded example</name>
          <t>The Base64:</t>
          <sourcecode type="base64" markers="false"><![CDATA[
MFQGCSqGSIb3DQEJBzASBgcqhkjOPQIBMQcGBSuBBAAjMCkG
CSqGSIb3DQEJDjEcBgNVBAUGCSqGSIb3DQEJFAYKCZImiZPy
LGQBBQYIKoZIzj0EAwQ=
]]></sourcecode>
        </section>
        <section anchor="asn1-dump-output-5">
          <name>ASN.1 DUMP output</name>
          <t>Provide a CSR with an EC key from sha521, include your serial number,
friendly name, and favorite drink, and sign it with sha512</t>
          <artwork><![CDATA[
    <30 54>
  0  84: SEQUENCE {
    <06 09>
  2   9:   OBJECT IDENTIFIER challengePassword (1 2 840 113549 1 9 7)
       :     (PKCS #9)
    <30 12>
 13  18:   SEQUENCE {
    <06 07>
 15   7:     OBJECT IDENTIFIER ecPublicKey (1 2 840 10045 2 1)
       :       (ANSI X9.62 public key type)
    <31 07>
 24   7:     SET {
    <06 05>
 26   5:       OBJECT IDENTIFIER secp521r1 (1 3 132 0 35)
       :         (SECG (Certicom) named elliptic curve)
       :       }
       :     }
    <30 29>
 33  41:   SEQUENCE {
    <06 09>
 35   9:     OBJECT IDENTIFIER extensionRequest (1 2 840 113549 1 9 14)
       :       (PKCS #9 via CRMF)
    <31 1C>
 46  28:     SET {
    <06 03>
 48   3:       OBJECT IDENTIFIER serialNumber (2 5 4 5)
       :         (X.520 DN component)
    <06 09>
 53   9:       OBJECT IDENTIFIER
       :         friendlyName (for PKCS #12) (1 2 840 113549 1 9 20)
       :         (PKCS #9 via PKCS #12)
    <06 0A>
 64  10:       OBJECT IDENTIFIER '0 9 2342 19200300 100 1 5'
       :       }
       :     }
    <06 08>
 76   8:   OBJECT IDENTIFIER ecdsaWithSHA512 (1 2 840 10045 4 3 4)
       :     (ANSI X9.62 ECDSA algorithm with SHA512)
       :   }
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations from EST <xref target="RFC7030"/> section 6 are unchanged.</t>
      <section anchor="identity-and-privacy-considerations">
        <name>Identity and Privacy Considerations</name>
        <t>An EST server may use this mechanism to instruct the EST client about the identities it should include in the CSR it sends as part of enrollment.
The client may only be aware of its IDevID Subject, which includes a manufacturer serial number.
The EST server can use this mechanism to tell the client to include a specific fully qualified domain name in the CSR in order to complete domain ownership proofs required by the CA.
Additionally, the EST server may deem the manufacturer serial number in an IDevID as personally identifiable information, and may want to specify a new random opaque identifier that the pledge should use in its CSR.
This may be desirable if the CA and EST server have different operators.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is asked to allocate two new Object Identifiers:</t>
      <ul spacing="normal">
        <li>
          <t>One (TBD1) from the SMI Security for S/MIME Module Identifier
(1.2.840.113549.1.9.16.0) registry for the ASN.1 module: id-mod-critemplate; see <xref target="app-asn1-module"/>, and</t>
        </li>
        <li>
          <t>One (TBD2) from the SMI Security for S/MIME Attributes
(1.2.840.113549.1.9.16.2) registry for the Certification Request
Information Template (csrinfo) attribute; see <xref target="csrtemplate"/> and <xref target="app-asn1-module"/>.</t>
        </li>
        <li>
          <t>One (TBD3) from the PKCS#9 (1 2 840 113549 1 9) registry - TODO COMPLETE THIS ITEM</t>
        </li>
      </ul>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</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>
    </section>
    <section anchor="changelog">
      <name>Changelog</name>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="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="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="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="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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <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="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="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="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>
      </references>
    </references>
    <?line 794?>

<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

ATTRIBUTE -- [RFC5911]
 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) }

CertificationRequestInfo -- [RFC5912]
  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) }

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

NameTemplate ::= CHOICE { -- only one possibility for now --
    rdnSequence  RDNSequenceTemplate }

RDNSequenceTemplate ::= SEQUENCE OF RelativeDistinguishedNameTemplate

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

AttributeTypeAndValueTemplate {ATTRIBUTE:AttrSet} ::= SEQUENCE {
    type      ATTRIBUTE.&id({AttrSet}),
    value     ATTRIBUTE.&Type({AttrSet}{@type}) OPTIONAL
}

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

pkcs-9-at-extensionRequestTemplate OBJECT IDENTIFIER ::=
    {pkcs-9 TBD3}

extensionRequestTemplate ATTRIBUTE ::= {
        WITH SYNTAX ExtensionRequestTemplate
        SINGLE VALUE TRUE
        ID pkcs-9-at-extensionRequestTemplate
}

ExtensionRequestTemplate ::= ExtensionTemplates

ExtensionTemplates  ::=  SEQUENCE SIZE (1..MAX) OF ExtensionTemplate

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>
    </section>
  </back>
  <!-- ##markdown-source:
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
hUjR7Mlrk38L81ENO3OBF9gnWL8Cc7fp3Qyd0oZqtasCQv/o7fxPQ5VA+o0D
QhVpqO7H6j8mIFRXAaHdBJwyQSkgVH0OqcjwQ+J3deiqnoVSMD3BBOwO6Va9
53I3fCECdegILbHfoSUU1YWJx4f0LeH4BRG6eExSRF4Nis6TmCnRYZgMy9S6
9mJL3JdnU/MBwcP70I57L46lTMR9XBU7AJDr5cqrY0CnVy+V1B/R8ErHgCwt
qWPPT1u37zs/95fOz5db4/zsqt1OxHquvs4Kq36VKI8kOYjleqX8rCw3UuSg
WzkZJEmL+zoWik5I+7rM1wOD/lPa/59Ke6BpStpniqbfVtqTbY7Svlb+XUn7
ckdK+8rJP07a6+WTNG/snWl3SLX9RJwDo4PSGq4cZiKnUsqCK44e3T+CrAWQ
gcwE/n0mBVLC0as14O5GpVSqlojdYc76r8yFHCMHv0ChgQTJUmhp4r9EodXV
allKoYlCsFiBquMB39lUiozOVY4pBitfWomXQnZiEiVxqlJeBzuiowG6CJY4
PSfukoZbEpWXvvOAZzbTU7YSRYXxopQ4Gkn3MHXxFo+SKRj6Fcf2dZk7PCy4
Fg/FHboQryJjYY5kjF7eViI9DS85FuE0RZlTKqajS+WKM4RycASHci94qJ+K
10Nb9Nz7Xf7Q76rbuLpGT1QbZWm666lJkeqUchETpMqFZq8Zy/DFbzMlTQhl
iogilb+szYXIGdkeVhUTgfz4smNVdnGjLrDun2zrbVxQwXNnhfkJbxozZOQF
h06raLR00UNVNCVFOJvzJT3fv3gmCo9J9IliWYEsnaTuQJpYXzNWSlGoWpxg
YwokqFvYJp109eE1sKa3Mn9Zx25S+lHOBtZqz7hiCVk4DclIhfdE5QFRsZmu
YAsAZOHuljioGq2U7LrodAxeWTRDz6cjkqzfGrZ2WJweioOXwjTEAgsiq7Tx
xL1ocQkpunwd0A0lqoA/bnfLh2L3IUCjQT/avygZR28H/UGPDahWSGwIAwMN
GbXUjoqlQ6AvnQqN6ugIS0oUHGkCErH2SAEv6MgDw6qcz05tEuH3RrBWXgBr
VGNjP5CVDCATt3NUjRwjWS5fn3DOgbWIXHQYJeDUIuKntVXdqp2FFWOLqsYW
RZVyGllqKAZxgY0vuhesczG4PO+Ne2z8rj9i/XFvgEzSsu5db0M8Sce5DaPj
+XiF3nNd3PEW/s8/Iiu+VGHqkm3EdqHnLVRlMawgzxcr3Pp8sp7JU+P+2qWk
HlrSwJsd01+wD8B5WC1UZyGX5kfArSg6qErVf6mOjLzQZ3MsvUutiPU7JPoX
3swQVcnx1DetljhLsufjmzSeDeNbE3cLXQqzQRB9dzCB3XF/8L2BpS973f74
4rrJLhccazL4sqgrboo8/rcikIA0SqdUwV4W7hLIMNyChr32VZZTWKOxEv2x
mrhF49u3BNL3MvdvqupiUeFiN7FhorrC2axqZJRzYrvlnHSlbHl5TB1Kf8At
jZIEhgDZJIrAO64uzlPGXagr9cgtGS+9JUNQgBG3WDY61301t6AK7KBHkE9e
DuTMkqOYLkw8e5uDLbgOcsDjhxi1tQMnJ3j9kGEJh5y090U5hxw8DZbOkufK
R4cSLQHW9dkVJVKiAeW7vdP+sI+372FzwE7pd/pjNm6djbB4gWG0e2f9IYjP
weXF9XgEpoKqnoJX4v8q1/43g51eXwyw5M9PhQ5dhMP7/kEB/5c8CKBeWnTH
vhC/R5aDzW17du7oUJTTdXmolqZtoVz9MNLMAf5a3TufcsrrEmuMrRbfClgK
pUqufkyr3VsrKVpNBVajltMZFcri2OrXrOClS8hagxWUS4TG3FGDVvAnwzDN
gvUlARHRCcmI8I9vL3tfFizaJO6y9q0hgXrJhADaC1vuGt8KxNfwP/2NrE/A
RuxvmthX6h+pFJ9hgOfqpL2mStqvqpH2m1ZIe1F9tFdURwPkJZYQqyr8iNtH
l4NdeSD0ZXldFMWgZ9X/Nce33ZEqn4llENSPOBdlPU4Q5eJ0f20tjSPji02Y
ZDum6w+jPQEUjJdTfqZG1XNkeKQb8WDg2BEOn3Bxv0ndq5dWvXpVzasnvM7/
9fWNvra60YtqGwGsXy5ktFfeAJlEb7JcYKy9IySEaYzyH/rjd2x0Oxy3fopO
BqY668YjAP28x35snd/0kpdPwQv78jJwsfvmILB2yhIFsQ762cvLHEdb6asK
Hv26ckcvL3b0laWOdgsdvabM0W9T5OhrSxx9fYGjZ8obIdsNZf73fwFwLFer
E3IAAA==

-->

</rfc>
