<?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-rfc2629 version 1.6.4 (Ruby 2.6.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-rfc7030-csrattrs-10" category="std" consensus="true" updates="7030" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.1 -->
  <front>
    <title abbrev="CSRAttrs">Clarification and enhancement of RFC7030 CSR Attributes definition</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-rfc7030-csrattrs-10"/>
    <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="June" day="23"/>
    <area>Internet</area>
    <workgroup>LAMPS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <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>
    <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.</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
a partially filled in PKCS#10 CSR minus the signature wrapper as follows:</t>
        <artwork><![CDATA[
  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) }

  CertificateRequestInfoTemplate ::= CertificationRequestInfo
]]></artwork>
        <t>The CertificationRequestInfoTemplate uses the CertificationRequestInfo
from <xref section="5" sectionFormat="comma" target="RFC5912"/> and is included here for convenience:</t>
        <artwork><![CDATA[
  CertificationRequestInfo ::= SEQUENCE {
    version       INTEGER { v1(0) } (v1,...),
    subject       Name,
    subjectPKInfo SubjectPublicKeyInfo{{ PKInfoAlgorithms }},
    attributes    [0] Attributes{{ CRIAttributes }}
  }
]]></artwork>
        <t>Note:
This method has also 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"/>.</t>
        <t>The version code is always v1 (0). As shown in the example below,
any empty sub-field (RDN) values in the subject DN,
and empty values in any included X509v3 extensions
are expected to be filled in by the client.</t>
        <t>The SubjectPublicKeyInfo field MUST be present, but it MUST have an
empty bit string for the key, as the server does not know what key will
be used.  The server MAY specify (in the OID), the type of the key to
use, but otherwise the OID type MUST be NULL.</t>
        <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>
        <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 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 will be encoded as follows:</t>
        <artwork><![CDATA[
 SEQUENCE {
   INTEGER 0
   SEQUENCE {
     SET {
       SEQUENCE {
         OBJECT IDENTIFIER commonName (2 5 4 3)
         UTF8String ""
         }
       }
     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)
      }
    BIT STRING ""
    }
  [0] {
    SEQUENCE {
      OBJECT IDENTIFIER extensionRequest (1 2 840 113549 1 9 14)
      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)
            OCTET STRING, encapsulates {
              SEQUENCE {}
              }
            }
          }
        }
      }
    }
  }
]]></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>
      </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>
    </section>
    <section anchor="changelog">
      <name>Changelog</name>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC5272" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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>
        <name>Informative References</name>
        <reference anchor="RFC8368" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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>
    <section anchor="app-asn1-module">
      <name>ASN.1 Module</name>
      <aside>
        <t>RFC EDITOR: Please replace TBD1 and TBD2 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 ::= CertificationRequestInfo

END
]]></sourcecode>
    </section>
  </back>
  <!-- ##markdown-source:
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
lCAGYTOIH7K9fbmy07ZPfqFL6PXOOuOfzsb9aa171ft7+6M1bs+dnxa37y8u
r/rtwZVz1h6v223L8gbtmzMt37j7HjrMnQjcRNu66n0LPkN2vALb/9VXL7Py
8tyXhL1qPMvSG2IvVrrb9tKOY9wImF+Yy1XXaa9VuuspV/yCyGXtu7lYE3pR
SAoENnVmBVup7NbgaTCzXaihHLZ2UoccNj+rqGZ6AW2dwCqUnHlKPmrpJRS5
aTUxZ9EFyDoXRJ3Kb2HJ0tBr+pFuyP+ZJistbccSpaeyqHNic9rtLYA7fDYl
YAoyzfnyscI0R6O64AN33NjG5e3xWwtwJ+ieov8WJWi7V2FLlzoSsX9XmarH
XnbepSttaR2q6LDrhnDYYCp2HXbqjtGgkjveU1faEbB93rjo25QrLqeAGBgZ
GDVwZk9GBsfSR7PjJyODZ1VVsoDAGo777LumfmTmt/NhYJOFBjQtudnjndAA
ocLIwUS32FDD7q/aCIkHqGqApgkkr+1GKADSuNc5YyVKj5xwWaZqqlvYEbjT
b6/1JaoeAXTgrcA/fSreIh/2W8ZbNGv9KJu1QFSkef0ko/k+sF4jKY9gcvE/
03z9PLJQMAPjNyAgYif7pbqorgVhAsefK5+2doSp1+mOrWwbqDALYqjyE54x
t2k2XYWwnzokkrFELvCrpNiTy0XYRi4drSJ+R9tAaBPOB4evErW5gnaTKHOB
2yhntNU0s5GH2REgNfNWOiinoI1xWWKQS95flpTdPN8Dd+MdD7wedDZnlnHt
9q567TebKy/sWJu385v+u81Nu311/VbrWOGgF7Tv3LPT6rTa9vnZaeKcffDP
l8O76RU0hHTw4/tqD9K1P132b+ayi5ImZpat1K5lWlxa4XHb8GtJXTpV/Uf3
s0dHKjE2//Sz///8bK0t/Wyj+Yfys2ZP+tn60b66htmRfrZe/1xdo4H56m9X
12ggpT5X1zBRlhsAfq2eA+zzdQ2T0m+jt1PXYFX9Z9U1DKo0yLrG3m6Yh5+y
4zqm5fj/p5TTU8lAWbG93U725/HwUUZvbxJ/+mQeH744i08DpiYq5x8mYBqJ
KAl3p+ZO4sy2gibvoww01DlsGVZ9psfLwpbObTFsGbXntxC2eGfNTRXrAR/a
Vr/Tsyxqp8mG7c5LCwPylo7nRxeX6iSZ3NYiEuURUJ7MMbjD1zHIZ/NIbJGm
k+jg7eiULK0nLGyzcVTwbGZTZpB143f2bIbybMefssHGJ21wFNu9gI5x0W77
HUCMfe5NgGLkfFldOav6ri8Dn4R2y8T0xlRjqO0eSP3nayX5lE+QVjAM1RKY
nOG1s7679dmLdBHrbZxfpJ3kYj+nnio0LHR6oYp2qz+jttc/KyQWp1p7Pvym
bV2fdTrwYlBvtq1B9xeprvks1d2vt71Oh0hEJVIMew7TkP8e5qMbTmwfjzpN
8aQjrt0WtRk6FQPVWlcVhH5vdf4zUCWQfuWCkCkD1aep+vsUhBqqILS7AKdC
UCoI1T5FVBT4Icm72tjV2EdSCD0hBOwO6fxVGPAgeSYB09IRRmJ/wEgoO0Gc
rw+l50mkiaXcVm4/hvnERuPcYWu7YDo0m+ElZoHr35P0HbKZfYfg4ckZL7gV
21Km4hSHqh0AyA3DfHEN6PTquZb6PQZexRqQk1rq3PNT6+Zd5/v+0vv+8l47
P7tqt7dqPVe/LAqr/SJTnllyMMsN0/ikLdcK7EDy72NJ0dwDQwrWviHX60FA
/7T2/1RrDzwtWPu9punXtfYUm6O1rxt/KGtvdKS1N09+P2ufok/WvPnkTLtD
KvUTdQ6sDspo2CzvJY5Z3QdXnjxp/wwyCyADmwny+4klkCqOXquDdDfNarVW
JXGHORs/cy3kGCX4GQ4NLMg+h1Zk/nMcWkNhywoOTVwThncVdEKQO5curaB9
leJgi3zpbL0UthMXUbZ2VcrTS0e0NSC9LkHsnuvTIe7knkzlZeTd4Z7N4pTW
1pVzeK2a2BpJp6/SY74hLaZg6bdwIQpuFlyLh+LMeOLhKaSkWKOXR3PIT8NL
jlc02eISLDp2nV6kJvYQysERHFp7wTvN6GpTaIuZe7/L7/pddTQpPc2dnaJd
2sF6ZlOluuBcxASFy6T244wXtjxxX0suFBFXGP20tn2xZuSGeP+EKOTn0c7d
wYaK6uMNMbJtuAnABS+8Fa5PhLNcICPPY3QsXbPS63HU8doC41zOl/T8aeTF
+TBFPnGtQiwP2asz/zbevpS7dEe4WpxgYwsiqANXNu10jeA1iGa4sn9a524O
iLI1G8DVnXMlEvKKDWQjXdEiTvqJ+/yAeV4kAJDXOlpio2qGKcV12e6YcIWy
HEa0RZL1raG1I+L0UGy8FKEhXgQoVpU2IaFwIU469VPYYzoGRfejTtpdoyy0
DwEaD/qZ/qJlHL8Z9Ac9NgjdNYCdDaFhoWHPrRtHOp50FbtCsxPXIpJa0iAt
PGkLXyt4EEhuGFYHv+3VqoI7aiuiKe0Xgrw3g9V8BqzZycungTT3ALl1DEid
pta2L1NNdziX5LnccrYAp5DI79ZWNxzsICYurLIcPAlI8kNbrzWtE0YQw7TD
IEDtdPAa5yzirppMnd/MRCQJQ1/dF4F3gXJ/hWrKp+u53OEdrQNagMOol+So
Q3bUD+eauAASt1ATOMQmyeuHV0WgNe1LG0WPTnK5oNVfHUxB1G4P/qbhjUO9
bn9yMWqxS59DFgD0FXdpoYQReMi+4sIkRJ0i6QBLgIKsuetIrRWKmC53DWru
3jFd+/INwfI3uYJuq9scssvhgi2xy+5u289wbc/xebZ7fD69jVCe/lJbu+9Q
MVAfYQjQcHHRphekp6MNlOX0qLQU7PxVB7KQAxQJdEPrjPpqbsEO7aXny8lH
4/cKHjLPHS8XZInxzPSuQkq7ACzv9k77wz7e/zZm/cHleb/Tn7CJdTamc+9a
u3fWH4IRGlxejCZjcLjp+X2Qq39I3H/Q2OnoYoDHqb+rdOgkG16SFFfwhnME
MEUtu5mlkj/xVaqVgfVuCcD25BXnCrU0oig1ypl/i/HX6tb7UFK5i8Axhy2+
FbBUqmapcUzYPnkOPcPGBGwUOp0x3uLOfiEGz0VhHw5ObFSJjKWjJmHwV017
yT0LL79l4fl3LPzCGxZ+jfsVPnu7wmcJ8MnbFbTeUBaU/w+Ri56DbWAAAA==

-->

</rfc>
