<?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.21 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-wing-settle-public-key-hash-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title abbrev="Public Key Hash for Local Domains">Public Key Hash for Local Domains</title>
    <seriesInfo name="Internet-Draft" value="draft-wing-settle-public-key-hash-00"/>
    <author initials="D." surname="Wing" fullname="Dan Wing">
      <organization abbrev="Citrix">Citrix</organization>
      <address>
        <postal>
          <country>United States of America</country>
        </postal>
        <email>danwing@gmail.com</email>
      </address>
    </author>
    <date year="2024" month="December" day="29"/>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 46?>
<t>This specification eliminates security warnings when connecting to local domains
using TLS.  Servers use a unique, long hostname which encodes their public key that
the client validates against the public key presented in the TLS handshake.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://danwing.github.io/public-key-hash/draft-wing-settle-public-key-hash.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-wing-settle-public-key-hash/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        SETTLE  mailing list (<eref target="mailto:settle@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/settle/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/settle/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/danwing/public-key-hash"/>.</t>
    </note>
  </front>
  <middle>
    <?line 51?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Browsers are progressively requiring secure origins for new
capabilities and features (<xref target="secure-context"/>). As secure origins are
only obtainable, today, with a certificate signed by a Certification
Authority trusted by the client, this leaves out devices and networks
which cannot easily obtain such certificates.  Such inability is due
to network topology (e.g., firewall), lack of domain ownership, or
complicated procedures.</t>
      <t>This draft discusses how a client can authenticate to HTTPS servers
belonging to the local domain where the server name is a hash of the
server's public key.  By doing so, a secure origin can be established.
This avoids the need for a certificate signed by a Certification
Authority (CA) trusted by the client.  This is a relaxed way of "doing
HTTPS" for servers on the local domain.</t>
    </section>
    <section anchor="unique">
      <name>Unique Host Names</name>
      <t>Web browsers and other application clients store per-host state using
the host name, including cached form data such as passwords,
integrated and 3rd party password managers, cookies, and other data.
When a name collision occurs (e.g., the same printer.local name on
two different networks) the client cannot recognize a different host
is being encountered.  By creating a unique name, existing client
software (browsers, password managers, client libraries) can continue
storing origin-specific data for each of unique name.</t>
      <t>A unique name is created by embedding the hash of the public key into
the name itself.  This achieves uniqueness and the encoding is also
identifiable by the client to assist its validation of the server's
public key (<xref target="client"/>).  Details on encoding the domain name are in
<xref target="encoding"/>.</t>
    </section>
    <section anchor="short">
      <name>Short Host Names</name>
      <t>Unique host names containing encoded public keys are awkward for users. This
section describes how short names can also be advertised by servers and
securely validated by clients, so that the short name is presented to
users while the unique name is used for the TLS connection.</t>
      <t>A server already advertising its long name using <xref target="DNS-SD"/>
can also advertise its short name.  The client needs to validate they
are the same server, prior to allowing the user to interact with the
short name.  The client can do this validation by making two
connections:  one connection to the long name and another to the
short name and verify they both return the same public key and that
both TLS handshakes finish successfully (proving the server has
possession of the associated private key).  Advertising both names
enables incremental deployment within a local domain at the expense
of user confusion (two names per device, like a human named both
"Bob" and "Richard") and on-the-wire inefficiency.</t>
      <ul empty="true">
        <li>
          <t>NOTE: Also to be considered is including both the unique and short
host name in the SubjectAltName field of the server's
certificate. This avoids an additional advertisement but has worse
incremental deployment characteristics -- legacy software won't notice
the other name in the SubjectAltName.</t>
        </li>
      </ul>
      <t>The client need only look for matching short name and unique name
within the same TLD domain name (that is, if a unique name is advertised
with a ".local" domain, the client does not need to look for its
accompanying short name within ".internal").</t>
      <t>To avoid the problems described in <xref target="unique"/>, the TLS data connection
always uses the long name.  Thus, after the client has validated the
short name as described above and a user attempts to connect to the
short name (by typing or by some other user interaction), the client
instead makes a connection to the unique name.  This reduces the
integration changes within the client, as clients already separate
server-specific data based on the server's hostname (e.g., Cookie
Store API, Credential Management API, Web Bluetooth, Storage API, Push
API, Notifications API, WebTransport API).</t>
    </section>
    <section anchor="operation">
      <name>Operation</name>
      <section anchor="client">
        <name>Client Operation</name>
        <t>When clients connect to such a local domain name or IP address
(<xref target="local"/>) using TLS they examine if the domain name starts with a
registered hash identifier in the second label and if the rest of that
label consists of an appropriate-length encoded hash.  If those
conditions apply, the client performs certificate validation as
described below.</t>
        <t>Upon receipt of the server's certificate, the client validates
validates the certificate (<xref target="RFC9525"/>, <xref target="RFC5280"/>, and <xref section="4.3.4" sectionFormat="of" target="RFC9110"/> if using HTTPS).  When performing such a
connection to a local domain, the client might avoid warning about a
self-signed certificate because the Certification Authority (CA)
signature will certainly not be signed by a trusted CA.  Rather, a
more subtle indication might be warranted for TLS connections to a
local domain, perhaps only the first time or perhaps each time.  The
client parses the returned certificate and extracts the public key and
compares its hash with the hash contained in the hostname. If they
match, the TLS session continues. If they do not match, the client
might warn the user about the certificate (as is common today) or
simply abort the TLS connection.</t>
        <t>Protection against rogue servers on the local network is discussed
in <xref target="rogue"/>.</t>
      </section>
      <section anchor="server-operation">
        <name>Server Operation</name>
        <t>A server running on a local network (see <xref target="unique"/>) uses a unique
host name that includes a hash of its public key.  This unique name is
encoded as described in <xref target="encoding"/>.  Existing servers might be
configurable with such a hostname, without software changes.</t>
        <t>Oftentimes, servers operating on a local network already advertise
their presence using <xref target="DNS-SD"/> and should continue doing so,
advertising their unique name that includes their public key hash
and optionally also a shorter nickname (<xref target="short"/>).</t>
      </section>
    </section>
    <section anchor="encoding">
      <name>Unique Host Name Encoding Details</name>
      <t>The general format is hostname, a period, a digit indicating the hash
algorithm, and then the hash of the server's public key as shown in
<xref target="abnf-encoding"/>.  The binary hash output is base32 encoded (<xref section="6" sectionFormat="of" target="RFC4648"/>) without trailing "=" padding.  Currently only SHA256
hash is defined with the value "0" (<xref target="iana"/>).  While base32 encoding
is specified as uppercase, implementations should treat uppercase,
lowercase, and mixed case the same.  (Base32 encoding was chosen
instead of base64 or base64url encoding to avoid their illegal
hostname characters and their case preservation requirement.)</t>
      <figure anchor="abnf-encoding">
        <name>ABNF of hostname encoding</name>
        <artwork type="abnf" align="left"><![CDATA[
  friendly-name = 1*63(ALPHA / DIGIT / "-")

  hash-algorithm = DIGIT   ; 0=SHA256

  base32-digits = "2" / "3" / "4" / "5" / "6" / "7"

  hash = 1*62(/ ALPHA / base32-digits )
       ; 62+1 octet limit from RFC1035

  encoded-hostname = friendly-name "."
                     hash-algorithm
                     hash
]]></artwork>
      </figure>
      <t>An example encoding is shown in <xref target="example-encoding"/>.</t>
    </section>
    <section anchor="local">
      <name>Identifying Servers as Local</name>
      <t>This section defines the domain names and IP addresses considered
"local".</t>
      <section anchor="local-domain-names">
        <name>Local Domain Names</name>
        <t>The following domain name suffixes are considered "local":</t>
        <ul spacing="normal">
          <li>
            <t>".local" (from <xref target="mDNS"/>)</t>
          </li>
          <li>
            <t>".home-arpa" (from <xref target="Homenet"/>)</t>
          </li>
          <li>
            <t>".internal" (from <xref target="I-D.davies-internal-tld"/>)</t>
          </li>
          <li>
            <t>both ".localhost" and "localhost" (Section 6.3 of <xref target="RFC6761"/>)</t>
          </li>
        </ul>
      </section>
      <section anchor="local-ip-addresses">
        <name>Local IP Addresses</name>
        <t>Additionally, if any host resolves to a local IP address and
connection is made to that address, those are also considered
"local":</t>
        <ul spacing="normal">
          <li>
            <t>10/8, 172.16/12, and 192.168/16 (from <xref target="RFC1918"/>)</t>
          </li>
          <li>
            <t>169.254/16 and fe80::/10 (from <xref target="RFC3927"/> and <xref target="RFC4291"/>)</t>
          </li>
          <li>
            <t>fc00::/7 (from <xref target="RFC4193"/>)</t>
          </li>
          <li>
            <t>127/8 and ::1/128 (from <xref section="3.2.1.3" sectionFormat="of" target="RFC1122"/> and <xref target="RFC4291"/>)</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO: write more on security considerations</t>
      <section anchor="rogue">
        <name>Rogue Servers on Local Domain</name>
        <t>A client may also want to defend against rogue servers installed on
the local domain.  This requires legitimate servers be enrolled with
a trusted system such as a local domain Certification Authority (e.g.,
<xref target="I-D.sweet-iot-acme"/>) and that enrollment verified.</t>
      </section>
      <section anchor="public-key-hash">
        <name>Public Key Hash</name>
        <t>Because the server's public key is encoded into its domain name,
changing the public key would also change its domain name -- thus, its
identity as known by client password managers and other configurations
in clients (e.g., printer, SMB share, etc.).  As such an identity
change is extremely disruptive, it needs to be avoided.  This means
the public/private key pair on a server needs to stay static.  The
tradeoff is servers are vulnerable to their private keys being stolen
and an active attacker intercepting traffic to that server.  The
alternatives are to continue using unencrypted communication to local
servers, which is vulnerable to passive attack, or to condition users
to validate self-signed certificates for local servers.</t>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>New registry for hash type, 0=SHA256.  Extensions via IETF Action.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="secure-context" target="https://w3ctag.github.io/design-principles/#secure-context">
          <front>
            <title>Web Platform Design Principles</title>
            <author>
              <organization>W3C</organization>
            </author>
            <date year="2024" month="June"/>
          </front>
        </reference>
        <reference anchor="DNS-SD">
          <front>
            <title>DNS-Based Service Discovery</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="M. Krochmal" initials="M." surname="Krochmal"/>
            <date month="February" year="2013"/>
            <abstract>
              <t>This document specifies how DNS resource records are named and structured to facilitate service discovery. Given a type of service that a client is looking for, and a domain in which the client is looking for that service, this mechanism allows clients to discover a list of named instances of that desired service, using standard DNS queries. This mechanism is referred to as DNS-based Service Discovery, or DNS-SD.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6763"/>
          <seriesInfo name="DOI" value="10.17487/RFC6763"/>
        </reference>
        <reference anchor="RFC9525">
          <front>
            <title>Service Identity in TLS</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="R. Salz" initials="R." surname="Salz"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>Many application technologies enable secure communication between two entities by means of Transport Layer Security (TLS) with Internet Public Key Infrastructure using X.509 (PKIX) certificates. This document specifies procedures for representing and verifying the identity of application services in such interactions.</t>
              <t>This document obsoletes RFC 6125.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9525"/>
          <seriesInfo name="DOI" value="10.17487/RFC9525"/>
        </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="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="mDNS">
          <front>
            <title>Multicast DNS</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="M. Krochmal" initials="M." surname="Krochmal"/>
            <date month="February" year="2013"/>
            <abstract>
              <t>As networked devices become smaller, more portable, and more ubiquitous, the ability to operate with less configured infrastructure is increasingly important. In particular, the ability to look up DNS resource record data types (including, but not limited to, host names) in the absence of a conventional managed DNS server is useful.</t>
              <t>Multicast DNS (mDNS) provides the ability to perform DNS-like operations on the local link in the absence of any conventional Unicast DNS server. In addition, Multicast DNS designates a portion of the DNS namespace to be free for local use, without the need to pay any annual fee, and without the need to set up delegations or otherwise configure a conventional DNS server to answer for those names.</t>
              <t>The primary benefits of Multicast DNS names are that (i) they require little or no administration or configuration to set them up, (ii) they work when no infrastructure is present, and (iii) they work during infrastructure failures.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6762"/>
          <seriesInfo name="DOI" value="10.17487/RFC6762"/>
        </reference>
        <reference anchor="Homenet">
          <front>
            <title>Special-Use Domain 'home.arpa.'</title>
            <author fullname="P. Pfister" initials="P." surname="Pfister"/>
            <author fullname="T. Lemon" initials="T." surname="Lemon"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>This document specifies the behavior that is expected from the Domain Name System with regard to DNS queries for names ending with '.home.arpa.' and designates this domain as a special-use domain name. 'home.arpa.' is designated for non-unique use in residential home networks. The Home Networking Control Protocol (HNCP) is updated to use the 'home.arpa.' domain instead of '.home'.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8375"/>
          <seriesInfo name="DOI" value="10.17487/RFC8375"/>
        </reference>
        <reference anchor="I-D.davies-internal-tld">
          <front>
            <title>A Top-level Domain for Private Use</title>
            <author fullname="Kim Davies" initials="K." surname="Davies">
              <organization>Internet Assigned Numbers Authority</organization>
            </author>
            <author fullname="Andrew McConachie" initials="A." surname="McConachie">
              <organization>Internet Corporation for Assigned Names and Numbers</organization>
            </author>
            <date day="18" month="October" year="2024"/>
            <abstract>
              <t>   This document describes the "internal" top-level domain for use in
   private applications.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-davies-internal-tld-01"/>
        </reference>
        <reference anchor="RFC6761">
          <front>
            <title>Special-Use Domain Names</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="M. Krochmal" initials="M." surname="Krochmal"/>
            <date month="February" year="2013"/>
            <abstract>
              <t>This document describes what it means to say that a Domain Name (DNS name) is reserved for special use, when reserving such a name is appropriate, and the procedure for doing so. It establishes an IANA registry for such domain names, and seeds it with entries for some of the already established special domain names.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6761"/>
          <seriesInfo name="DOI" value="10.17487/RFC6761"/>
        </reference>
        <reference anchor="RFC1918">
          <front>
            <title>Address Allocation for Private Internets</title>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <author fullname="B. Moskowitz" initials="B." surname="Moskowitz"/>
            <author fullname="D. Karrenberg" initials="D." surname="Karrenberg"/>
            <author fullname="G. J. de Groot" initials="G. J." surname="de Groot"/>
            <author fullname="E. Lear" initials="E." surname="Lear"/>
            <date month="February" year="1996"/>
            <abstract>
              <t>This document describes address allocation for private internets. 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="5"/>
          <seriesInfo name="RFC" value="1918"/>
          <seriesInfo name="DOI" value="10.17487/RFC1918"/>
        </reference>
        <reference anchor="RFC3927">
          <front>
            <title>Dynamic Configuration of IPv4 Link-Local Addresses</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="E. Guttman" initials="E." surname="Guttman"/>
            <date month="May" year="2005"/>
            <abstract>
              <t>To participate in wide-area IP networking, a host needs to be configured with IP addresses for its interfaces, either manually by the user or automatically from a source on the network such as a Dynamic Host Configuration Protocol (DHCP) server. Unfortunately, such address configuration information may not always be available. It is therefore beneficial for a host to be able to depend on a useful subset of IP networking functions even when no address configuration is available. This document describes how a host may automatically configure an interface with an IPv4 address within the 169.254/16 prefix that is valid for communication with other devices connected to the same physical (or logical) link.</t>
              <t>IPv4 Link-Local addresses are not suitable for communication with devices not directly connected to the same physical (or logical) link, and are only used where stable, routable addresses are not available (such as on ad hoc or isolated networks). This document does not recommend that IPv4 Link-Local addresses and routable addresses be configured simultaneously on the same interface. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3927"/>
          <seriesInfo name="DOI" value="10.17487/RFC3927"/>
        </reference>
        <reference anchor="RFC4291">
          <front>
            <title>IP Version 6 Addressing Architecture</title>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <date month="February" year="2006"/>
            <abstract>
              <t>This specification defines the addressing architecture of the IP Version 6 (IPv6) protocol. The document includes the IPv6 addressing model, text representations of IPv6 addresses, definition of IPv6 unicast addresses, anycast addresses, and multicast addresses, and an IPv6 node's required addresses.</t>
              <t>This document obsoletes RFC 3513, "IP Version 6 Addressing Architecture". [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4291"/>
          <seriesInfo name="DOI" value="10.17487/RFC4291"/>
        </reference>
        <reference anchor="RFC4193">
          <front>
            <title>Unique Local IPv6 Unicast Addresses</title>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <author fullname="B. Haberman" initials="B." surname="Haberman"/>
            <date month="October" year="2005"/>
            <abstract>
              <t>This document defines an IPv6 unicast address format that is globally unique and is intended for local communications, usually inside of a site. These addresses are not expected to be routable on the global Internet. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4193"/>
          <seriesInfo name="DOI" value="10.17487/RFC4193"/>
        </reference>
        <reference anchor="RFC1122">
          <front>
            <title>Requirements for Internet Hosts - Communication Layers</title>
            <author fullname="R. Braden" initials="R." role="editor" surname="Braden"/>
            <date month="October" year="1989"/>
            <abstract>
              <t>This RFC is an official specification for the Internet community. It incorporates by reference, amends, corrects, and supplements the primary protocol standards documents relating to hosts. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="3"/>
          <seriesInfo name="RFC" value="1122"/>
          <seriesInfo name="DOI" value="10.17487/RFC1122"/>
        </reference>
        <reference anchor="I-D.sweet-iot-acme">
          <front>
            <title>ACME-Based Provisioning of IoT Devices</title>
            <author fullname="Michael Sweet" initials="M." surname="Sweet">
              <organization>Lakeside Robotics Corporation</organization>
            </author>
            <date day="9" month="August" year="2024"/>
            <abstract>
              <t>   This document extends the Automatic Certificate Management
   Environment (ACME) [RFC8555] to provision X.509 certificates for
   local Internet of Things (IoT) devices that are accepted by existing
   web browsers and other software running on End User client devices.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-sweet-iot-acme-06"/>
        </reference>
      </references>
    </references>
    <?line 264?>

<section anchor="example-encoding">
      <name>Example Encoding</name>
      <t>Server with private key in PEM format is:</t>
      <artwork><![CDATA[
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCOkTU8TOKW/IZ6
whhyhg+1I4u0jm019z4SVUKAwKyOtFPtoEvRGPdKYUoLaPZmVyN/VTYlubVn7dE8
IYpibwkDhs38DKmyo0vdWjUaopQOaygtLB+PZ12l/XaSCE1cWsl45ShUvktcVR/D
DKwv7DWEIZrRTLKy6M+8Ne4x++kKXmwbSj8WsNQ4kU4uFhS+JXHXToZvhvoQLkTs
486XXPn4SJPLyTN62b6KHTLM1vb7RY4i4U7N6hS1UWe7bIxZNZ0vnf4vZ7A6SR7W
nM31DoaW5XCBH7CL56MSdn7dmuksRimfNmnsEmvBXZmuQMHnUZghBLMHPC9xmHhT
8q3pSY5jAgMBAAECggEANiAY1vDVob7zi01/HJObCQkatAzSl4drUGiAHAOKP49k
wbV2s0bIM7vl8ZkC2u3AM0p1iTMNFQzrv+l38VD4WhdmwodIMeLfHYVu3dLVZPf3
w9aZkMcMfcVRq7VtMV/iV3ygqDOqxr4mldWM1ZDW7HgZn9Z/jX7nxyuuZ9mcquuH
Brl8pcUba7666jcz+F9NNjXTPCwfm7ihCPkTeYr1NflQGTR5PJ+D5dywb53iulm1
ZTk2zBXJMujbIyTL0p+MqdEKXci7oQJqf7bQsxsO2ZUD24CmzYldsE6vmYUFxJpw
ZbYzO/a/Mv0mXQhcUTWKkJkU78QT2Us7SuSL+IPGSQKBgQDC5iRKtlYulUgxV9gu
TmX30R0W7R0nnsEjolNAqUwcIoUMHk8ODXEsp7jVOSFMJhHRMXL+VKYiBsiIV7vk
GlTbLRP34HgK54auRF6PTxBfNAkF+FQxl2mzWxj7wi5mg0g+tCJTLereUXULz8+r
h5Vqp4BCjcoumlyY0xlLtbr9/wKBgQC7Qx2Lb70XCL5eivdokMh2lRint9cfxC2W
fJ6QOnJgsN9XIQGTUAk3cLvmrKg3UOmJXXq+Q6djVB/3Op3+TFzsGS2ORMel9r6o
kAHYG/qdairlW9uTDsnwUP8UtE0lidhSXLGIAy71eMDbDg/c/yyrWTvysXf5kAiJ
CzTnyvY3nQKBgBt+Va5IbH3jxyxWxQM7Qf0kfaMHTe6R4ZMCShY8C6WIZRZhjCti
UA3JlzRU+9J/KFJHVH52OH1iUZWSMsopwMCuaju0aZq4MHKS6Hf04k1bzM4Pyui4
AEwx1KNnMB579IwL4y+ysYgtG4LQDO6YkMZb3KcG03ehhOB2HwJkH33HAoGATOw3
8bQ3v4OG970r/lcjEZsTYqnhA5qJg3yzgdmQbGmbhOX5CLNi5dQ4S3x3KSnilNvC
dO/DjcjbzKnWhsSFkzKQhRV50ZH3JbTqHQT5QLqA3nCKVPFJQJ90+ONLoXTrWIHd
J1rvakRtLE6tc4GartRcDMib2PcymmDxHZpA4/0CgYEAs0XF1G0gmnef8oEYuwZT
c+vr4wnD7YCP1h8nsNSgRHLk1e7k727iHGvruX3qrKsY26RHKi2+i1P6A39I4F5s
3Dme4HGXTyoc/qKp+/GAx5XYVG4c3Z3sdBejkpkhPTSlsSsDOHbjaiFV1zCyEdg5
fOPfIBX8uLc3UtOm0+Gn1IQ=
-----END PRIVATE KEY-----
]]></artwork>
      <t>and public key in PEM format is:</t>
      <artwork><![CDATA[
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjpE1PEzilvyGesIYcoYP
tSOLtI5tNfc+ElVCgMCsjrRT7aBL0Rj3SmFKC2j2Zlcjf1U2Jbm1Z+3RPCGKYm8J
A4bN/AypsqNL3Vo1GqKUDmsoLSwfj2ddpf12kghNXFrJeOUoVL5LXFUfwwysL+w1
hCGa0UyysujPvDXuMfvpCl5sG0o/FrDUOJFOLhYUviVx106Gb4b6EC5E7OPOl1z5
+EiTy8kzetm+ih0yzNb2+0WOIuFOzeoUtVFnu2yMWTWdL53+L2ewOkke1pzN9Q6G
luVwgR+wi+ejEnZ+3ZrpLEYpnzZp7BJrwV2ZrkDB51GYIQSzBzwvcZh4U/Kt6UmO
YwIDAQAB
-----END PUBLIC KEY-----
]]></artwork>
      <t>Using the binary format (DER) and hashed using SHA256 gives this
hex value:</t>
      <artwork><![CDATA[
21ebc0d00e98e3cb289738e2c091e532c4ad8240e0365b22067a1449693e5a18
]]></artwork>
      <t>Converting that hex value to binary and base32 encoded (without
trailing "=") gives:</t>
      <artwork><![CDATA[
EHV4BUAOTDR4WKEXHDRMBEPFGLCK3ASA4A3FWIQGPIKES2J6LIMA
]]></artwork>
      <t>After the hash algorithm identification digit (0 for SHA512/256) is
prefixed to that base64url, resulting in:</t>
      <artwork><![CDATA[
0EHV4BUAOTDR4WKEXHDRMBEPFGLCK3ASA4A3FWIQGPIKES2J6LIMA
]]></artwork>
      <t>Finally, if this is a printer named "printer" advertised using
".local", the full FQDN for its unique name would be:</t>
      <artwork><![CDATA[
printer.0EHV4BUAOTDR4WKEXHDRMBEPFGLCK3ASA4A3FWIQGPIKES2J6LIMA.local
]]></artwork>
      <t>and the full FQDN for its short name would be "printer.local".</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This draft was inspired by a document published by Martin
Thomson in 2007; however, this draft takes a different approach
by using unique names over the wire.</t>
      <t>Other systems have also utilized public key hashes in an identifier
including Tor and Freenet's Content Hash Key.</t>
      <t>Thanks to Sridharan Rajagopalan for reviews and feedback.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA6VbV3fjTHJ9718Bcx5WMsWctWe8C2aKOYc3hCYJEoFCIAXp
jH+7q7oBENTMZ6/tedAIQKO7usKtW9VQKpUirubq9FVITDxZ1xShT32hKzlH
YW/ZwsBSJF1oWoakmU6CSLJs0+u/NlaRXHqwbP9VcFyVENVSTMmAdVRb2rup
m2YeUg51YenUhU2WOlM/dYTJUtkscTzZ0BxHs0zXv8BLvdaiLQg/BEl3LFhe
M1V6ofDDdBMvQoKqmmvZmqTjRU+sw38gT6I3W7QTxPQMmdqvRAV5XolimQ41
Hc95FVzbowQ2UyAwr02lV0GctUS4uFn2+WBb3uVVWHeENVyBsEIH7xAQEh6r
r0RICSb9cIUDNaktuSAp3vJMTbFs9qtzkeyzjm+qmuPamuy5VBV0qh6oTa7U
9EAaQQjWmbcWi0ELrvl2Ewn4FfSog/KYjv6pUXeftuwD3Jds5fgqHF334rxm
MjgK72hXmg4HZfBGRratm0MzfIIMrqW5R0+G2VXJRP1nvikeF9VBS44LY8L5
g7Fp/nJas76/lfkfDZo+uoaeIETy3KNlo+pgIUEAL3kVmmlhDW+yG9w/mpJ5
vwWbkUztk+n3VWhooMcP9iD0xNgtyhUWCPzPA16mFctgDxXLM110xqWpoR3m
Lm5UsPaCaFBbUyRCTMs2YKEr2IVo5j52JYAVFM+mKfAeF4z+yqYM4mZNZWEC
asMXhCZ1tIMpTGzNVLSLTh02krme8OaZVMhn80W+gVAZQrBPmKnQ4BNL9oG6
dxPfCoorxS2gslVSl2iVzI9HAQlJpVKgI/A7SXHJ4qg54I9U0fawU9SlQHXN
0EymA/aq5vrCTbJN0Jwj3I7UBI2ZJlVcdGDXEnQW3CoPbuI5eHsxmKcFYU7t
K7UdwXOoIGEAvHv0BcbDgKPluGhUmFBTjgI1FQtEF9wj1WyBO4kATgI3JJfA
XUHRNQhp4Srpmspkkw64nouvxF+42BSiGO2omewZiCIcJVN1jtKZpvn2DU1V
dUogoHtgekv1FBalhNRZYIDIEPUwlXWA2RywtO4LNn33NBs3xxUKhtEOIAED
OJPeANUukqzpmquhdKYq7KnkwkBHePr6ejTCr1/PaUF0vs8EixLLhLUs2YXN
SbIO6nItVfJfhBuYGJSoUNvlpqICWhr2KftwvxHdx42IzIPQcIBkjssH3bUI
k6LZdSpd0dE9V1DpVVMCsU3qIsw5hJtGkUzTcgUqOVokmeB4+OQui4PWxnso
NerAF2ABFVAUHCSYEHZysXTr4AtPNH1Ivwh7zaY3SdefwSck5YwRx71IsG6A
nM5RuyBaAzAbF50to6JNFKqiVsGUzHkZxiCQKp7jwBaO1g31xN0FhGfhBL9z
nYE43cViMgfVM98kMkV/DFwZVRR3Z3R3sA/e5uMZEOHWJAHhC0WGh4Q//JsT
c0RQSN2HaZjDWC/wwoOxmWQyFQBRwcyac6Rqmu9HulqayiIBFAc7Rvf639v9
qSE+/9n4IBhbh23Cprr0ASNuko97STB5CdNQgq0cqEmwzN+UAwbACFqysBa6
ENDCCLTjCF8/eKj/IgQRUI5iCpzLgllgPxduUIQbLhXEAuRpiDlqpxAb4BK3
ytCExT+7idp/AR9TdE9FxSqScuQqMhBJJe6XEthBchxMxs4L4DWQDZs5DwpQ
sMGJJBtUFI6BbGpKkHmdFwA26wzR+xITFadNkzXCnsStr1g6GAxFtxSwqBO6
M/MSHIDg61I7zZXF3gHbQAyAl+734FDgmGGQPccsE4aaTRXrAKkNQfP+BiqA
gNFkijtHwPRwFfAb5mkK0BSGyCHQBsqiH0AxmK7YGsSx9u4N0e0ptMvLHzXB
JdI12ZZsUMkzc1iELw3oCUFj4aTcmVNhAuFGQL+hYBn0qJgs4C9i/Bo9kEnN
PZQCF1OZVZm579EVR3dQrMXcgU/gOlTfhw4NK2oUAY2vYQJyMzvicJZfcG4c
B0SRaEgQQWTE2Mf4QBwAfYDWcP4w4TBz72NI8DeHxOQChOdvM2SHXA8oqbOo
iVbGVwNUYcKjDTSTfH2FI379SrOAmkMIu4/x5OAtCKcg1qJYcJhFYMrQJVSE
yEgsnsak2xkMzoHEQ4Onmb4AtFjWA+x3FOCgAXSypcLJET1BWwhUknpFqHG4
sUJYAP0SjmuQG8LczEYEYf0C4MeSOFddNDka4p6qwahMMmQDOsfbb47iOQEU
hik95CCWyfwqgGdJB4dS/UhaZnKwIuMcbC7OT76+/tEczVPz5s9Zu1GulAu/
fpFot9FW2at3mZmjRW6C4Oygs4TbRtF8IoX5AhfjUr0gIqDoMLWuW7fQG3DL
eJOhBZAxnuNZPvmLNVFE1eLZO+aYoG5DYpUIgAq5awZINLggjenqnuRCfWCE
SCbHOv4wtjp7CjvQ9ixCfEGGgYBPQGvMGN7d44DHG1A2NvCBegFRAj+FqAaM
Bqrh7D0dfOYJEvo1VEhgRIh9crEwmTuxsIOYtBQtIAHaFRUOK2K0iTFjs3WZ
9xLKCJSD6cKmBqgPMxe96JaPF0zZGoL6Q8IPHJV+QA3pABvbcyuBBvcek+YJ
cZyHxwXTAyNOQGC0M8L10QMIZY9VJgpJ1C05wdSSmAGbgjhMPPPsYqZgIaiN
GAzQPaAnmFjxwZv/QxiNFy2oOdEZXRZ9WJsCZNlIa51YAmTbjYULzszMRyKM
CHnw3JNP4ASi7iKqgDGorv4GaTGakRbidARjA9AZfQiUFUUI0ySUr2gzLI5B
ZX+hbtw7+Dj4EqQjxRGAhev0ICmAJWFGulnm30BmC55TBvLcK/96E4wCPgSk
wOizDmmcgQWUaZAUkIE9unQMXEjgB5E3LwbNB5x+YuilAZJp+8fkypJJBIsk
YOgJnvcTwSQv8dSiWuA2mOKZrKx2CiQFpCGSgkxXMv1vEgcSJtIMKED/iWfc
ucVtw1OkbYGvG04E5qz8+foKiNivlwg3WYa+AwKRdOB+DF+dR2RgyOMhF9q7
1I7vAm19x/rviBGXQZKtawAxPI4k16XGxWW4GQjxB9R5woTsXzjBYOnGMkJv
YNOEiAkbeI4rmGBFCAkA4RCrmT8gX5yQBMQBospT+PYjtsiYKWDXAe7HPCSs
n2CXIW8NU45DgVaCRoJi4BsnkiWHeedDuN2r4IBCNhj/JHNGhcVJD+6AcMhU
IJiGjJyxYGKPkFvXdY+6FmjmRcCX4Dl/NvGcI2G/jax7feBELy5syXQuqHC4
8xww+fElbFeRHz+EBjd2dBNoSEBxCKfDoQJiduT0+xFROf+1hd4EEQTraQJs
iQ0BsiRE/QKeYOiHZAAcYqx9J0xQEdiuExTCxKYHQBKGiIwrhoSOeUegZZBM
hdISSjzmg8GcIILLgQ/yFH/K4NVxWdMHke4C8QRJBqyZ0ql5cI8RuWJNK0Ho
4esWoB0uoXHdYlHjP4Q7qA5LE+eheovlbchz91jBQvQGllhe4AmUAFS7uN/x
OT7Rw0pRW4TcGyTscWxh0Po/gO3USvkSAgK/KuWrWbxC/Xx9zQNQKKYL6SIu
zl7I5WAIao/bilWHmHeZFwR7ZJDFrE8eY+7RGx6ENrTD0Q1ALGgwIWJANpEI
EvtUUOjGNyFTRcJ2Ek7zUPsKj7UvwXdZ+wUcRtfZHLA+JAeEX/mxiA7r5IYI
u5pJiDOgEWJgFDqe7OqYf9RwIS42TAEyQxi5ATF9JKUM4STyuHfQ1VG6ODxJ
4Q72mo0dLI1HSPiY1U54k5M/EnqTZIcgzRnYN9WgCekHa+s53+sm5OksuWA7
Clkti5mQb/KroJS4d85CdEpzdwdyy/LpPZeEDC0sC51oJLJUVHTshQChufbQ
3HcOzI3+m79KrEkBYhvMlVTJf8Z2kKMZEGj4ku3+uRyY2JYbeGDYJbStg0f/
3M0I21PYSwq6SCph2ZO9FJRlP4JuZhwlo7LD9kzmvdadT4azPjmUxhLxM8+0
IY+I0TROMxizo/H+Elrroa3EctYjDSEhPEm/MYBYdSkIrbAZECoi9GUM2r12
8GxWDzO/CLA8dALegUQ7RXwtyI+gnjFQBBM9Fuu9UMdcT3/Wyvc6jfE97Pyy
klD5b8q0kOJ6wF5Dv7u32Ui88ONTxjX1qOPfms2ocsLI+YUTXXQzVhFyOoZk
VFPOPGN/ffGq/Ndz+o99MKEVVv5hN+DrR2QMTlz5AZEu8AMFdMC7tiWEA81S
X1gT6KC5EQTFOiTA3g6IeUfjJWx1mL+1T/7QnEQ/AelvJu9ASLK5Tz04Ckon
a6Zk+8FUnnvxmIRIZAr5KB8+RUlDKGO19G9gqGK5WEVPDx0GIEljp12JnwlA
MdbkgTUano2NLWwqIx7Ou2K+VCY8maMb7xkWRRgFiQ3Um8gmcE0NuBBvtaxZ
xyAuFXYM74caPCi8C2hTgUHA4gE9eH3CcTrwJRc7UbFxAN238BVUraFhnxSv
o1IBVn+qPy4MwAaIhczAjLgoaAXFKxcZmWW/ebYeawzFiDz4I2QrqIt0EnHD
qHKK2lkwignCosW+8rTEzyfYztLPhPwn/EO7EkHY24C8qu6n2HQ/hdy/lwtP
4mDSFYWM0Ox1egv4P5FKPONxFjtmjdwKRvMBgvB3IfszsBEM4wpPMc90YFQi
n8BJCuxnkf0ssZ9l9rOSCOfm6+efMkIoweNUz8GxF6xXzidzggU7xz6kARGw
ty1DAAfLZQslnC9wwlSkqp/f9ppIJ8LpHv897vKvxzA1/if5ehV+PASJAFQU
gQzmAB7xM6HTvZvgx34/E2J91EarR2KFbyUg7kWTcVzwwYemZBiNiNj8cep7
X7DHGS6rDsOTNfA2frb+9YMz6uBQ5N7bwyhyvnNp7kl3Rs4biUGHgSR4AZtm
WS9+dM/7kRy79lbYynrg6N5+D4HCG4+xpkUw5Ssh/34vkJ+YPQHjDQD5AOHz
ENVszBFKvpRkX6TYuC7cgwyCQ6uFSikcGpXF95G9VDOtSleNOqnwacrVVf4G
a5oEUqCNgv5M7PopwrR0AS3JuTKIl8MZ7moBDYqhBsG0UYME6wDsFpg+79XC
CEvH1nSMEN+1H7CziDWD/QxJpbxiBVAKhr3wkoP3dDEr/W4ypt9cNlN9EXKV
fDpXzuTyHL5yNbysZnLlu5Iwkmq5KldKrlxL50tFHMDPLqvZ19dMLvswvFDL
V4IUzG8U87Ucf3+vZPGFysP4Yq5WCKbPVzJV9uLraw6kqkbjQlUX0iAhVzeT
LJfP/3Ep1iIPz6UbgQo4loNnjpvjV+EGz6jA6DtMHB1iK98GgxlnjBbO77Tw
wd2/fnAGiEwvrFmkgBLcJH5UABFGsb/xR56Jt8AbWOVPfjs/i9oPDLjxPBYQ
UDPYEV8wAZ4QmrbFpsBMSO7FiuPDf0Z04vWt6v7L2og1GkgQIs6NUjelWW5K
UgzGTsMGbrAs6zawBrCGB5RMZ98+8CGkHqvJ/kQ2YI8hXcDzG8ZoY6DxQhiR
DHlN7MUby8zc1xnX/P4qdhFd1qTC/hlvAbiM3ZxNxNPoHOL3I67YEV/Efblf
aPfWRtCWCQ70XoT5sA5IDQH4IlBXSbPmsxOYwBTC9UkorMPqMUjJQG+gtLC9
C341gsLeTw/waAWzPzvHY/5gUAmkuKsiE2t3wz4g+TNCHR5IhxOBp/ns1FRT
groReJdKrf2e5ZcwYUBMXD0deScyfd4UY8Q7WiM8YnRcSwcaww8IBOy2YS/P
dSXlHLbgFHrhfNSWsIEdIRZfLRBD0hkA4+t8fd7748yd83zPBAex/Qv6NdZ7
+K2UFHYQmF8HXTWwNP8qAQ9AHraBBr4LyL7y4utwTOYnXyR+XPMXLQb+QQcP
pmDRIP+KI/Eb4ABCMCZKyIjeBN6SAsqMEzCug59svUS8iRVgUCg57NWrJvFv
18SwbGWfpsggPa7WCkhCVEVA9fCdGBAS1KSMJMfdBHx40hreC4tXEjCZFP6r
tzq9kTCZ9VbioiX0W1t2lwx7vdZ12quLTXFUP5zfj2etU7tl6+K01RbFeaPe
V26Hw/wkHlqiaMG4aWN8Xiyri3F/nentyuR2PPrHQzLXK3rZk5HN1T6L89Wy
L976/thtT1yrdZ11Jmp/u7QG0mRnrPxRZrXY6p68Mitqq0p624sm387No1Oo
NvuGb2Wv6vq0lKzLdCz5B3dQT052ubye2UjzRiunrB29WJofl9ezq6xmmSZp
9m/XSnPd6u3s2WLQ98vDZHVEix/J5Lm/MW7y/FRdO6Np8bwseu3jPPm26W4W
1u56vFrTwXnhkGK1vNlMzOL8bTLwF6NyXi73u4vBMHeVK7NtUSsuK6PycZ5b
rmlF7n3sRrvs1dwXr7uKWJ7PKmtiDgu5piWtS5tGvVtpDErl4VyF3Rne2Zlp
xn5kmE7LuNY3O8ObDrvmcnc41gfD7qRR+zC6xwWpvhcu820JtDysi2KrcQBt
jzRxm7s2V5Zc+dSyuUz3bSw3pmfJFT/nelG1lx1N7Irj/qRYO5ObvMo7Wbk3
rFz16u7cyHsFcZi95LTFcNSeftrXpF6orprF9VE1bpbaG9LBvrtdeQV1sNpN
9gVyq0m781AZ7kGn75WVO1xltFXBP7w3x+8fdtHQ1fUwt2uuK93DzqztMqdN
xfzwPW9XM5R3z+uSuq1XL8pSlirlcvmkfCbbtdHotFlMGre9UdGOjcl5Qbd2
brTXp53FrDR5SzZLqn+TSwXN040c2S3O+c/65m3oneSevxhkL8nhu9rqbxSt
Yk3f3vcVeep8OOP8btnMFxvG51ZXnVb5amyX7Y+3y43s5O3nOCNlhtessZke
leVi3T+/nZeV6nSRXzqVuTcfJHuTznzarx+mzUZJm/Vdfevpy8PHqnbwyMLY
FLKz7Loyy5pgsJOlj8T35U3pWcth91wdNzct51I5rcbz9vDt2J0NN4Pkqr/V
6o7WW1WuZ9LRF/JgNikUu4d+qSh5s3Z5svio70fiuZ1sTz/0vPG5/jhVblrJ
OGQPSbfxthgAl1tuloPPatImx9Lq/VKsN06K5Rm6v81+6ANXtmuZG4rcqEw/
8gO5kt2Ai1Htqlrn4TGvzwCWa8r+o5Ffk/1beTo23w7OqLbpgZ6X4rmgDK6G
3T8UlmPjbbN5T07L6mlVzxTGl0Jy0f50OvP8eDakes0uW+QsdredzLsKKUdf
17xF0zFvy0l16bayAKHH+WbQ6Yl+JUeHTbl5yCgZ37fXi6vvbPals6i9kcbn
wvSv24KJWq67yZVU6sndwunD/1h/TIeV6T573kvD7oKWZ8XdsDE/bquN8rq3
m+2Op4arkaVYeNM/Z8tk7S3Tb791V91SftzNacvdej50rMtt2PCkk5eVdu/F
Ybc/L3f32eI5J38OixPf04pEbN0+cv2ROayXKrXebVD0k76zPbid4mDaHJe3
5+FOLvSVTrZAj8dxPd+9vZ27hUJXtDriYnwrkKo8LVyL406tkrUzunJq7ZzF
9t08iqX3t0PB/zyoxlTuGPJxvCk1BiOtpE6L88JHoT83NX10bRB1nGmelJP8
2TfXR2fePn/2p8fZqpTddQtv8uK9O12UpoN3sWA2+qtJ+236Vssmx6OBtVnY
615XJW85qPDPM3fQKrtKsQOF50xpDjU5P1F8w2h+dHcXsZjJNg7bluhkN+1c
J3swTLqvWq2td9stiJK82sWb2axsG5PcsWo6o/lh1h2cc7RyruQrWrdztb1N
4d3uO9t8edbta/mklpuUxUKtV2yXHFJoGrTY7WwWvqVk3vuXZKYjfpQ221Wn
qBR2BUet09P5cj5OFnPdmTvNcVc+SVp7lfts+C31UCL78WTfq2+q3kApLN2x
kU12zFxv+pNno9ao+Xsu4tmKkY+Hz3/+hbS2rA96jYesVu+d/pTRxg1xWhXx
eePQh99b4unSyk1an5p+9TvU6W0Vazsh7nw8cHsld7RXki191TgMG84J0ktF
qg+ys1NhbrT7jfwpvwP32OeW+TfZyO2Shdmk0elvjeobEYvyKCP6F+d9NCis
rFznvb9sGo41mN/2p7yqXva5/PlwHG3a9hsdL63VoDTYtJf72813Bslbjhwb
HSm79H3HO02uzY033F8vDb3kdLJWpm03l+O39nhw3C6v2uojly135KJcbjVK
rcp4MtZznyWSbGkLv3r+pK6R1I5Z/3Mk55PZ9bjntcef1Fq6q7bp5f3herFW
B6VCcpCnt/H5THOXz1FtWu4Q3VvdDrPkTUvSU8uE3e3sy6C1vZifu0ul/mbf
VvmdfW7WS7nOtjedf9Y/b1dldywuM323vDTGZHvrNcWpWI+Z/JudAosvw9Zt
2H8MjP3UbM14eYLMCigbZ46cWQkHRi7xuxhypB+8Vxg5Rz5HZSWrZrO0VqUF
Rc5Xa5VCleaVbC1HS4W8UpTUar6YpdlCuSTn89lyRcoVi7VyrUBLUq4aigbc
jzWXmXwgUrQS4/FcWhTwe4s06IOSeB/0mYscydjqror1pTheNGfFdb+16TZn
w3pr0u4MGv2COBeLYqG9BhSf9Pqtef6tPOgNxVAuMTqgZ6Tz3rwLz0QDLs3b
yE9Zxk9BcaVcPgPKe8YDhItN96zDGVL4qFH5gt0LT2fb1sxI4Oz/R+K2dm+S
uNHHqEGZFXw+kwguE/FPz/j3oGEHiR8s4YdEQnvaHIUfUjy0/HkNKd+9Ifw6
8/+0Ab5wHJ3+LEH8641AgGhD6ai9BjRfVLBSxT/9wFLbIV+v/I9SqPozsYfK
lyZ+PXznjP1lzXQumh0eXqqW4rEyneEkCw24P5TQUeFNC4CGNRbz2Wzl7/iJ
H2WfpLn3Od3gY4n7t6bsAFxSjgRmCiu0SKWOYF0Df8Ovl/D4h5XRvCGBR4vX
oEHlueDvnw+fJPLoxT3cK2Y8tCf3b5oW+MEzaLZtU+z2/c3BogvPl/jfE/Wp
z777kcwzq3vnNnARyYbZZtJJOlgXSYff0RA2vWr0Fn6LT1UsrdLkvwDMnDkW
2DQAAA==

-->

</rfc>
