<?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.6.35 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-rfc7030-csrattrs-04" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.3 -->
  <front>
    <title abbrev="CSRAttrs">Clarification of RFC7030 CSR Attributes definition</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-rfc7030-csrattrs-04"/>
    <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="2023" month="June" day="15"/>
    <area>Internet</area>
    <workgroup>LAMPS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 49?>

<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>
    </abstract>
  </front>
  <middle>
    <?line 59?>

<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 mention also values that the EST server 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.
This covers all uses and is fully backward compatible with the 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 kind of enrollment request, 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="extensions-to-rfc-7030-section-452">
        <name>Extensions to RFC 7030 section 4.5.2.</name>
        <t>The ASN.1 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 by 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>In each such Extensions sequence, an extnID OID MUST appear at most once.</t>
        <t>An Extension comprises of the OID of the specific X.509 extension (extnID),
optionally the 'critical' bit, and the extension value (extnValue).</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>
    <section anchor="co-existence-with-existing-implementations">
      <name>Co-existence with existing implementations</name>
    </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 encode DER 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>
          <sourcecode type="base64" markers="true"><![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>
          <sourcecode type="base64" markers="true"><![CDATA[
MEEGCSqGSIb3DQEJBzASBgcqhkjOPQIBMQcGBSuBBAAiMBYG
CSqGSIb3DQEJDjEJBgcrBgEBAQEWBggqhkjOPQQDAw==
]]></sourcecode>
        </section>
        <section anchor="asn1-dump-output-1">
          <name>ASN.1 DUMP output</name>
          <ol spacing="normal" type="1"><li>The challengePassword attribute is included to indicate that the CSR should included this value.</li>
            <li>An ecPublicKey attribute is provided with the value secp384r1 to indicate what kind of key should be submitted.</li>
            <li>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 extensionRequest with this value.</li>
            <li>The ecdsaWithSHA384 OID is included to indicate what kind of hash is expected to be used with the ecPublicKey provided.</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>A single subjectAltName extension is specified in a single Extension attribute.</t>
        <section anchor="base64-encoded-example-2">
          <name>Base64 encoded example</name>
          <sourcecode type="base64" markers="true"><![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>The challengePassword attribute is included to indicate that the CSR should included this value.</li>
            <li>An ecPublicKey attribute is provided with the value secp384r1 to indicate what kind of key should be submitted.</li>
            <li>An extensionRequest container with a subjectAltName value containing the name potato@example.com</li>
            <li>The ecdsaWithSHA384 OID is included to indicate what kind of hash is expected to be used with the ecPublicKey provided.</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="a-second-example-of-est-server-requires-a-specific-subjectaltname-extension">
        <name>A second example of EST server requires a specific subjectAltName extension</name>
        <t>A single subjectAltName extension is specified in a single Extension attribute.</t>
        <section anchor="base64-encoded-example-3">
          <name>Base64 encoded example</name>
          <sourcecode type="base64" markers="true"><![CDATA[
MGgwZgYJKoZIhvcNAQkOMVkwVzBVBgNVHREBAf8ESzBJoEcG
CCsGAQUFBwgKoDsWOXJmYzg5OTQrZmQ3MzlmYzIzYzM0NDAx
MTIyMzM0NDU1MDAwMDAwMDArQGFjcC5leGFtcGxlLmNvbQ==
]]></sourcecode>
        </section>
        <section anchor="asn1-dump-output-3">
          <name>ASN.1 DUMP output</name>
          <ol spacing="normal" type="1"><li>An extensionRequest container with a subjectAltName value containing the name</li>
          </ol>
          <artwork><![CDATA[
    <30 68>
  0 104: SEQUENCE {
    <30 66>
  2 102:   SEQUENCE {
    <06 09>
  4   9:     OBJECT IDENTIFIER extensionRequest (1 2 840 113549 1 9 14)
       :       (PKCS #9 via CRMF)
    <31 59>
 15  89:     SET {
    <30 57>
 17  87:       SEQUENCE {
    <30 55>
 19  85:         SEQUENCE {
    <06 03>
 21   3:           OBJECT IDENTIFIER subjectAltName (2 5 29 17)
       :             (X.509 extension)
    <01 01>
 26   1:           BOOLEAN TRUE
    <04 4B>
 29  75:           OCTET STRING, encapsulates {
    <30 49>
 31  73:             SEQUENCE {
    <A0 47>
 33  71:               [0] {
    <06 08>
 35   8:                 OBJECT IDENTIFIER '1 3 6 1 5 5 7 8 10'
    <A0 3B>
 45  59:                 [0] {
    <16 39>
 47  57:                   IA5String
       :                   'rfc8994+fd739fc23c3440112233445500000000+@acp.ex'
       :                   'ample.com'
       :                   }
       :                 }
       :               }
       :             }
       :           }
       :         }
       :       }
       :     }
       :   }
]]></artwork>
        </section>
      </section>
    </section>
    <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>No requests are made to IANA.</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Corey Bonnell crafted example02 using a different tool, and this helped debug other running code.</t>
    </section>
    <section anchor="changelog">
      <name>Changelog</name>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <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">
              <organization/>
            </author>
            <author fullname="S. Santesson" initials="S." surname="Santesson">
              <organization/>
            </author>
            <author fullname="S. Farrell" initials="S." surname="Farrell">
              <organization/>
            </author>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen">
              <organization/>
            </author>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <author fullname="W. Polk" initials="W." surname="Polk">
              <organization/>
            </author>
            <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="RFC7030">
          <front>
            <title>Enrollment over Secure Transport</title>
            <author fullname="M. Pritikin" initials="M." role="editor" surname="Pritikin">
              <organization/>
            </author>
            <author fullname="P. Yee" initials="P." role="editor" surname="Yee">
              <organization/>
            </author>
            <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="M. Behringer" initials="M." role="editor" surname="Behringer">
              <organization/>
            </author>
            <author fullname="S. Bjarnason" initials="S." surname="Bjarnason">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="M. Richardson" initials="M." surname="Richardson">
              <organization/>
            </author>
            <author fullname="T. Eckert" initials="T." surname="Eckert">
              <organization/>
            </author>
            <author fullname="M. Behringer" initials="M." surname="Behringer">
              <organization/>
            </author>
            <author fullname="K. Watsen" initials="K." surname="Watsen">
              <organization/>
            </author>
            <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="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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>
        <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">
              <organization/>
            </author>
            <author fullname="M. Behringer" initials="M." surname="Behringer">
              <organization/>
            </author>
            <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>
      </references>
    </references>
    <?line 435?>



  </back>
  <!-- ##markdown-source:
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
dMyAURpOb28Uc8c/KgoN7je5WGewORVRXelBOG7EEVRP3lmwdWLuJflvCIIa
QltNn/RtYN70LWggFfp2Mq5XVDKGMLCbjLNUi8GSUu1upto1pX2ZdjtvpWn2
KGOkglm/UoNE9WLWb+n8y1ovZv3CjnM2ymVIT1VW2U321mgyYL+cmM0qW9FE
sjAELXnap2UphbZ20j5yhaigiimvkZLdk84z0wauarDNKoi8tos+gKWJ3Ttj
hz18HQYV3xG9sHe3uoM78/ZGVpJqE7iDTAS551tYivLT74mlaNV6M191S6go
83o7l/k+tl6jKJuwuPpTrb7+MbEQUAH6DQA7rL3fqrcdc8uYIKmz2rZJF4zJ
7vUnFuP+HHJYvFgql1Skjl7IeoX+d/bql7/0djdXyd+/Hvsb6qLbH0+J/Wgn
JSbD3vrMqty49qXd/Xl96cmetX43vx18WN92u5c374yeJYd20L13z07L03LX
F2ensXP21T9fju6nlzAQKrLHu7INFdM/cujvlkO3DU2trEelbxpQwGwlYx7L
t1q8dNTpj5P5ms20DK3+I/P9/8t8ta7OfI2TP1Tmq9o689Wb+7oI1Z7OfPX6
97oIDawOf78uQgMl9b0uQhVtuQHs1+oFxr7fRahSsVuxd7oIrGz+TV2ECtX1
uouwdxpWvaesVcciGP89pQqaCvQ0Xu2d1t5fNcMnDW97S+bTF6tm+Ztr5gzC
nKBz/mEgjJWeXkjb7RCu/y/Cmvn6806798v642P3Y3c++vjuCor4WduePHbf
S9sBWNOLzqzLm9Puev5B9qNP41/eL28f543x9WX4eXlZGz76cD14vH0clkd9
66sxvB48DOnippK1fPtWeHl2euf0Glsw57e1BxwZiodSlnl/DNb8XbP/drpt
p+m2vr/r21TpltLxH6nre5J2fXcrFez6ttKub+uleI2jGrrr227kvv5SXK9i
j7FWDCL/28j+/Q4xBttKccr+HjHmVFiGtRob7BXi+zE6F19FiU/H6XIRUH8Z
26et2iZr22KgnrLO3a3K5ljG/qX8r0V5tdMU3t4e+M2KsQF/WqwNxvY6W5QA
AwRGDRheXLbSZDWqXkHpjdbuUMYGVmMCcSeY79eF+rxOW9ZpDzptKqdd4rTt
m/Zxd6rbDWoZwv7msJ308gOPXniw9/aem7+pC2y8Uoe88TxLT4LFunSKiV7u
XqtTcuqhs/FQdYIx5RQPKqcHkprU+82O1KgXogN60R8/0Lvbi9C7587uktbG
4folf6AjK1SvLQWS86KlqlgiCMdOfnhWn0njU2wl4k11riD28HRLvN06zM+r
0UOB5225OsK8eZZMvRbWxJEdOriCJ9Lpl1lgLL5BH/TFPVRV+nTbsT7noxfD
LLzkQTLDY9ohnuQV9HsfQbKcilAtsHUkb/+e8QDeC+fvCnleHVH9NeG+Steu
xDNKqkosbrtwgh7PO/h44k+PlWtIQtHCW2FFJ2dRiifoHTERsEzDyo47+g/H
2ycaUVKuEEu6//LmmTrGpMWnjt5E+uhEei6E4+nawiFKdYACF1hzJQT9+xcg
hECsWQiPwTTlikNeyk+XhHlHAPbqzkVqEvoYFqqRzuzRS3IkD0oG5XmhYkD/
AoulTh7kO13w++IxZrlCW5YhvfWG8DSydkx8JNMDiuoVyZK7dB4DB9Msy/kS
yDUxiSYIU3oIMVhXBgGagIO/D5ZjqnJVH7TnBT5iKf30qAn+ao3wV2gLYprM
1at5FiYBgQhEMurYBzmrL+eG+h0RPHhhGP8DTzjcoVk3AAA=

-->

</rfc>
