<?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.4 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-anima-constrained-voucher-24" category="std" consensus="true" submissionType="IETF" updates="8995, 9148" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title abbrev="Constrained BRSKI (cBRSKI)">Constrained Bootstrapping Remote Secure Key Infrastructure (cBRSKI)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-anima-constrained-voucher-24"/>
    <author initials="M." surname="Richardson" fullname="Michael Richardson">
      <organization>Sandelman Software Works</organization>
      <address>
        <email>mcr+ietf@sandelman.ca</email>
      </address>
    </author>
    <author initials="P." surname="van der Stok" fullname="Peter van der Stok">
      <organization>vanderstok consultancy</organization>
      <address>
        <email>stokcons@bbhmail.nl</email>
      </address>
    </author>
    <author initials="P." surname="Kampanakis" fullname="Panos Kampanakis">
      <organization>Cisco Systems</organization>
      <address>
        <email>pkampana@cisco.com</email>
      </address>
    </author>
    <author initials="E." surname="Dijk" fullname="Esko Dijk">
      <organization>IoTconsultancy.nl</organization>
      <address>
        <email>esko.dijk@iotconsultancy.nl</email>
      </address>
    </author>
    <date year="2024" month="March" day="03"/>
    <area>Internet</area>
    <workgroup>anima Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 116?>

<t>This document defines the Constrained Bootstrapping Remote Secure Key Infrastructure (cBRSKI) protocol,
which provides a solution for secure zero-touch onboarding of resource-constrained (IoT) devices into the network
of a domain owner. This protocol is designed for constrained networks, which may have limited data throughput or may
experience frequent packet loss. cBRSKI is a variant of the BRSKI protocol, which uses an artifact signed by the
device manufacturer called the "voucher" which enables a new device and the owner's network to mutually authenticate.
While the BRSKI voucher data is encoded in JSON, cBRSKI uses a compact CBOR-encoded voucher.
The BRSKI voucher data definition is extended with new data types that allow for smaller voucher sizes.
The Enrollment over Secure Transport (EST) protocol, used in BRSKI, is replaced with EST-over-CoAPS;
and HTTPS used in BRSKI is replaced with DTLS-secured CoAP (CoAPS).
This document Updates RFC 8995 and RFC 9148.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-anima-constrained-voucher/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        anima Working Group mailing list (<eref target="mailto:anima@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/anima/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/anima/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/anima-wg/constrained-voucher"/>.</t>
    </note>
  </front>
  <middle>
    <?line 129?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Secure enrollment of new nodes into constrained networks with constrained nodes presents unique challenges.
As explained in <xref target="RFC7228"/>, such networks may have limited data throughput or may
experience frequent packet loss. In addition, its nodes may be constrained by energy availability, memory space, and code size.</t>
      <t>The Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol described in <xref target="RFC8995"/>
provides a solution for secure zero-touch (automated) onboarding of new (unconfigured) devices.
In it, these new devices are called "pledges", equipped with a factory-installed Initial Device Identifier (IDevID) (see <xref target="ieee802-1AR"/>).
Using the IDevID the pledges are securely enrolled into a network.</t>
      <t>The BRSKI solution described in <xref target="RFC8995"/> was designed to be modular, and this document describes a version scaled to the constraints of IoT deployments.</t>
      <t>Therefore, this document uses the constrained voucher artifact and voucher request artifact defined in <xref target="RFC8366bis"/> and specifies a constrained 
version of the BRSKI protocol: cBRSKI.
The cBRSKI protocol uses the CoAP-based version of EST (EST-coaps from <xref target="RFC9148"/>) rather than the EST over HTTPS <xref target="RFC7030"/>. 
cBRSKI is itself scalable to multiple resource levels through the definition of optional functions. <xref target="appendix-pledge-profiles"/> illustrates this.</t>
      <t>In BRSKI, the <xref target="RFC8366"/> voucher data is by default serialized to JSON with a signature in CMS <xref target="RFC5652"/>.
This document uses the new CBOR <xref target="RFC8949"/> voucher data serialization, as defined by <xref target="RFC8366bis"/>, and applies a new COSE <xref target="RFC9052"/> signature format as 
defined in <xref target="artifacts"/>.</t>
      <t>This COSE-signed CBOR-encoded voucher is transported using both secured CoAP and HTTPS.
The CoAP connection (between Pledge and Registrar) is to be protected by DTLS (CoAPS).
The HTTP connection (between Registrar and MASA) is to be protected using TLS (HTTPS).</t>
      <t><xref target="overview"/> to <xref target="discovery"/> define the default cBRSKI protocol, by means of additions to and modifications of regular BRSKI.
<xref target="discovery-considerations"/> considers some variations of the protocol, specific to particular deployments or IoT networking technologies.
Next in <xref target="design-considerations"/>, some considerations for the design and implementation of cBRSKI components are provided.</t>
      <t><xref target="rpk-considerations"/> introduces a variant of cBRSKI for the most-constrained Pledges: the use of Raw Public Keys (RPK).
This variant achieves smaller sizes of data objects and avoids doing certain costly PKIX verification operations on the Pledge.</t>
      <t><xref target="pledge-discovery-on-registrar"/> provides more details on how a Pledge may discover the various onboarding/enrollment options that a 
Registrar provides. Implementing these methods is optional for a Pledge.</t>
    </section>
    <section anchor="Terminology">
      <name>Terminology</name>
      <t>The following terms are defined in <xref target="RFC8366bis"/>, and are used identically as in that document:
artifact, domain, Join Registrar/Coordinator (JRC), malicious Registrar, Manufacturer Authorized Signing Authority
(MASA), Pledge, Registrar, Onboarding, Owner, Voucher Data and Voucher.</t>
      <t>The following terms from <xref target="RFC8995"/> are used identically as in that document:
Domain CA, enrollment, IDevID, Join Proxy, LDevID, manufacturer, nonced, nonceless, PKIX.</t>
      <t>The following terms from <xref target="RFC7030"/> are used identically as in that document:
Explicit Trust Anchor (TA), Explicit TA database, Third-party TA.</t>
      <t>The term Pledge Voucher Request, or acronym PVR, is introduced to refer to the voucher request between the Pledge and the Registrar.</t>
      <t>The term Registrar Voucher Request, or acronym RVR, is introduced to refer to the voucher request between the Registrar and the MASA.</t>
      <t>This document uses the term "PKIX Certificate" to refer to the X.509v3 profile described in <xref target="RFC5280"/>.</t>
      <t>In code examples, the string "&lt;CODE BEGINS&gt;" denotes the start of a code example and "&lt;CODE ENDS&gt;" the end of the code example.
The ellipsis ("...") in a CBOR diagnostic notation byte string denotes a further sequence of bytes that is not shown for brevity.
This notation is defined in <xref target="I-D.ietf-cbor-edn-literals"/>.</t>
    </section>
    <section anchor="reqlang">
      <name>Requirements Language</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
<?line -6?>
      </t>
    </section>
    <section anchor="overview">
      <name>Overview of Protocol</name>
      <t><xref target="RFC8366bis"/> defines a voucher that can assert proximity, authenticates the Registrar, and can offer varying levels of anti-replay protection.
The proximity proof provided by a voucher is an assertion that the Pledge and the Registrar are believed to be close together, from a network topology point of view.
Similar to BRSKI <xref target="RFC8995"/>, proximity is proven by making a DTLS connection between a Pledge and a Registrar.
The Pledge initiates this connection using a link-local source address.</t>
      <t>The secure DTLS connection is then used by the Pledge to make a Pledge Voucher Request (PVR). The Registrar then includes the PVR into its own
Registrar Voucher Request (RVR), sent to an agent (MASA) of the Pledge's manufacturer. The MASA verifies the PVR and RVR and issues a signed voucher.
The voucher provides an authorization statement from the manufacturer indicating that the Registrar is the intended owner of the Pledge.
The voucher refers to the Registrar through pinning of the Registrar's identity.</t>
      <t>After verification of the voucher, the Pledge enrolls into the Registrar's domain by obtaining a certificate using the EST-coaps <xref target="RFC9148"/> protocol, suitable for
constrained devices. Once the Pledge has obtained its domain identity (LDevID) in this manner, it can use this identity to obtain network access credentials,
to join the local IP network. The method to obtain such credentials depends on the particular network technology used and is outside the scope of this document.</t>
      <t>This document does not make any extensions to the semantic meaning of vouchers, though a new signature method based on COSE <xref target="RFC9052"/> is defined to optimize for constrained devices and networks.</t>
      <t>The two main parts of the BRSKI protocol are named separately in this document: BRSKI-EST (<xref target="brski-est"/>) for the protocol between Pledge and Registrar, and BRSKI-MASA (<xref target="brski-masa"/>) for the
protocol between the Registrar and the MASA.</t>
      <t>Time-based vouchers are supported, but given that constrained devices are unlikely to have accurate time, their use will be uncommon.
Most Pledges using constrained vouchers will be online during enrollment and will use live nonces to provide anti-replay protection rather than expiry times.</t>
      <t><xref target="RFC8366bis"/> defines the CBOR voucher data encoding for the constrained voucher and the constrained voucher request, which are used by cBRSKI.</t>
      <t>The constrained voucher request MUST be signed by the Pledge. COSE <xref target="RFC9052"/> is used for signing as defined in <xref target="VR-COSE"/>.
It signs using the private key associated with its IDevID certificate.</t>
      <t>The constrained voucher MUST be signed by the MASA. Also in this case, COSE is used for signing.</t>
      <t>For the constrained voucher request (PVR) the default method for the Pledge to identify the Registrar is using the 
Registrar's full PKIX certificate. But when operating PKIX-less
as described in <xref target="rpk-considerations"/>, the Registrar's Raw Public Key (RPK) is used for this.</t>
      <t>For the constrained voucher the default method to indicate ("pin") a trusted domain identity is the domain's PKIX CA certificate,
but when operating PKIX-less instead the RPK of the Registrar is pinned.</t>
      <t>For certificates, cBRSKI currently uses the X.509 format, like BRSKI. The protocol and data formats are defined such that future extension to other certificate formats is enabled. For example, CBOR-encoded and COSE-signed 
C509 certificates (<xref target="I-D.ietf-cose-cbor-encoded-cert"/>) may provide data size savings as well as code sharing benefits with CBOR/COSE libraries, when applied to cBRSKI.</t>
      <t>The BRSKI architecture mandates that the MASA be aware of the capabilities of the Pledge.
This is not a drawback as a Pledge is constructed by a manufacturer which also arranges for the MASA to be aware of the inventory of devices.
The MASA therefore knows if the Pledge supports PKIX operations, or if it is limited to RPK operations only.
Based upon this, the MASA can select which attributes to use in the voucher data for certain operations, like the pinning of the Registrar or domain identity.</t>
    </section>
    <section anchor="updates-to-rfc-8995-and-rfc-9148">
      <name>Updates to RFC 8995 and RFC 9148</name>
      <t>This section details the ways in which this document updates other RFCs.
The terminology for Updates, Amends and Extends is taken from <xref target="I-D.kuehlewind-update-tag"/>.</t>
      <t>This document Updates <xref target="RFC8995"/>. It Amends <xref target="RFC8995"/> because it:</t>
      <ul spacing="normal">
        <li>
          <t>clarifies how pinning in vouchers is done (<xref target="pinning"/>),</t>
        </li>
        <li>
          <t>adopts clearer explanation of the TLS Server Name Indicator (SNI) in <xref target="sni"/> and <xref target="sni-masa"/>,</t>
        </li>
        <li>
          <t>clarifies when new trust anchors should be retrieved by a Pledge (<xref target="brski-est-extensions-pledge"/>),</t>
        </li>
        <li>
          <t>clarifies what kinds of Extended Key Usage attributes are appropriate for each certificate (<xref target="registrar-certificate-requirement-server"/>, <xref target="registrar-certificate-requirement-client"/>).</t>
        </li>
      </ul>
      <t>It Extends <xref target="RFC8995"/> as follows:</t>
      <ul spacing="normal">
        <li>
          <t>defines the use of CoAP for the BRSKI protocol,</t>
        </li>
        <li>
          <t>makes some messages optional if the results can be inferred from other validations (<xref target="brski-est-extensions"/>),</t>
        </li>
        <li>
          <t>extends the BRSKI-EST protocol (<xref target="brski-est"/>, <xref target="VR-COSE"/>) to carry the new "application/voucher+cose" format.</t>
        </li>
        <li>
          <t>extends the BRSKI-MASA protocol (<xref target="brski-masa"/>, <xref target="VR-COSE"/>) to carry the new "application/voucher+cose" format.</t>
        </li>
      </ul>
      <t>This document Updates <xref target="RFC9148"/>. It Amends <xref target="RFC9148"/> because it:</t>
      <ul spacing="normal">
        <li>
          <t>defines stricter DTLS requirements (<xref target="brski-est-dtls"/>)),</t>
        </li>
        <li>
          <t>details how an EST-coaps client handles certificate renewal and re-enrollment (<xref target="brski-est-extensions"/>),</t>
        </li>
        <li>
          <t>details how an EST-coaps server processes a "CA certificates" request for content format 287 ("application/pkix-cert") (<xref target="brski-extensions-registrar"/>).</t>
        </li>
      </ul>
      <t>It Extends <xref target="RFC9148"/> as follows:</t>
      <ul spacing="normal">
        <li>
          <t>adds enrollment status telemetry to the certificate renewal procedure (<xref target="est-reenrollment"/>),</t>
        </li>
        <li>
          <t>adds a new media type for the CA certificates (/crts) resource (<xref target="multipart-core"/>).</t>
        </li>
      </ul>
    </section>
    <section anchor="brski-est">
      <name>BRSKI-EST Protocol</name>
      <t>This section describes the extensions to both BRSKI <xref target="RFC8995"/> and EST-coaps <xref target="RFC9148"/> protocol operations between Pledge and Registrar.
The extensions are targeting low-resource networks with small packets, based on CoAP and DTLS.</t>
      <section anchor="brski-est-dtls">
        <name>DTLS Connection</name>
        <t>A DTLS connection is established between the Pledge and the Registrar, similar to the TLS connection
described in <xref section="5.1" sectionFormat="of" target="RFC8995"/>. This may occur via a Join Proxy as described in <xref target="joinproxy"/>.
Regardless of the Join Proxy presence or particular mechanism used, the DTLS connection should operate identically.
The cBRSKI and EST-coaps requests and responses for onboarding are carried over this DTLS connection.</t>
        <section anchor="dtls-version">
          <name>DTLS Version</name>
          <t>DTLS version 1.3 <xref target="RFC9147"/> SHOULD be used in any implementation of this specification. An exception case where DTLS 1.2 <xref target="RFC6347"/> MAY
be used is in a Pledge that uses a software platform where a DTLS 1.3 client is not available (yet). This may occur for example if a legacy
device gets software-upgraded to support cBRSKI. For this reason, a Registrar MUST by default support both DTLS 1.3 and DTLS 1.2
client connections. However, for security reasons the Registrar MAY be administratively configured to support only a particular DTLS version or higher.</t>
          <t>An EST-coaps server <xref target="RFC9148"/> (as a separate entity from above Registrar) that implements this specification also MUST support both DTLS 1.3 and DTLS 1.2 client connections by default.
However, for security reasons the EST-coaps server MAY be administratively configured to support only a particular DTLS version or higher.</t>
        </section>
        <section anchor="tls-client-certificates-idevid-authentication">
          <name>TLS Client Certificates: IDevID authentication</name>
          <t>As described in <xref section="5.1" sectionFormat="of" target="RFC8995"/>, the Pledge makes a connection to the Registrar using a TLS Client Certificate for authentication.
This is the Pledge's IDevID certificate.</t>
          <t>Subsequently the Pledge will send a Pledge Voucher Request (PVR). Further elements of Pledge authentication may be present in the PVR,
as detailed in <xref target="VR-COSE"/>.</t>
        </section>
        <section anchor="dtls-fragments">
          <name>DTLS Handshake Fragmentation Considerations</name>
          <t>DTLS includes a mechanism to fragment handshake messages. This is described in <xref section="4.4" sectionFormat="of" target="RFC9147"/>.
cBRSKI will often be used with a Join Proxy, described in <xref target="joinproxy"/>, which relays each DTLS message to the Registrar.
A stateless Join Proxy will need some additional space to wrap each DTLS message inside a CoAP request, while the wrapped result needs to fit in the maximum IPv6 
MTU guaranteed on 6LoWPAN networks, which is 1280 bytes.</t>
          <t>For this reason it is RECOMMENDED that a PMTU of 1024 bytes be assumed for the DTLS handshake and appropriate DTLS fragmentation is used.
It is unlikely that any Packet Too Big indications (<xref target="RFC4443"/>) will be relayed by the Join Proxy back to the Pledge.</t>
          <t>During the operation of the EST-coaps protocol, the CoAP Block-wise transfer mechanism <xref target="RFC7959"/> will be automatically used when message sizes exceed the PMTU.
A Pledge/EST-client on a constrained network MUST use the (D)TLS maximum fragment length extension ("max_fragment_length") defined in <xref section="4" sectionFormat="of" target="RFC6066"/> with the maximum fragment length set to a value of either 2^9 or 2^10,
when operating as a DTLS 1.2 client.</t>
          <t>A Pledge/EST-client operating as DTLS 1.3 client, MUST use the (D)TLS record size limit extensions ("record_size_limit") defined in <xref section="4" sectionFormat="of" target="RFC8449"/>, with RecordSizeLimit set to a value between 512 and 1024.</t>
        </section>
        <section anchor="sni">
          <name>Registrar and the Server Name Indicator (SNI)</name>
          <t>The SNI issue described below affects <xref target="RFC8995"/> as well, and is reported in errata: https://www.rfc-editor.org/errata/eid6648</t>
          <t>As the Registrar is discovered by IP address, and typically connected via a Join Proxy, the name of the Registrar is not known to the Pledge.
The Pledge will not know what the hostname for the Registrar is, so it cannot do DNS-ID validation (<xref target="RFC9525"/>) on the Registrar's certificate.
Instead, it must do validation using the voucher.</t>
          <t>As the Pledge does not know the name of the Registrar, the Pledge cannot put any reasonable value into the <xref target="RFC6066"/> Server Name Indicator (SNI).
Threfore the Pledge SHOULD omit the SNI extension as per <xref section="9.2" sectionFormat="of" target="RFC8446"/>.</t>
          <t>In some cases, particularly while testing BRSKI, a Pledge may be given the hostname of a particular Registrar to connect to directly.
Such a bypass of the discovery process may result in the Pledge taking a different code branch to establish a DTLS connection, and may result in the SNI being inserted by a library.
The Registrar MUST ignore any SNI it receives from a Pledge.</t>
          <t>A primary motivation for making the SNI ubiquitous in the public web is because it allows for multi-tenant hosting of HTTPS sites on a single (scarce) IPv4 address.
This consideration does not apply to the server function in the Registrar because:</t>
          <ul spacing="normal">
            <li>
              <t>it uses DTLS and CoAP, not HTTPS</t>
            </li>
            <li>
              <t>it typically uses IPv6, often <xref target="RFC4193"/> Unique Local Address, which are plentiful</t>
            </li>
            <li>
              <t>the server port number is typically discovered, so multiple tenants can be accomodated via unique port numbers.</t>
            </li>
          </ul>
        </section>
        <section anchor="registrar-certificate-requirement-server">
          <name>Registrar Server Certificate Requirements</name>
          <t>As per <xref section="3.6.1" sectionFormat="of" target="RFC7030"/>, the Registrar certificate MUST have the Extended Key Usage (EKU) id-kp-cmcRA.
This certificate is also used as a TLS Server Certificate, so it MUST also have the EKU id-kp-serverAuth.</t>
          <t>See <xref target="cosesign-registrar-cert"/> for an example of a Registrar certificate with these EKUs set.
See <xref target="registrar-certificate-requirement-server"/> for Registrar client certificate requirements.</t>
        </section>
      </section>
      <section anchor="joinproxy">
        <name>cBRSKI Join Proxy</name>
        <t><xref target="I-D.ietf-anima-constrained-join-proxy"/> specifies the details for a stateful and stateless constrained Join Proxy which is equivalent to the Proxy defined in <xref section="4" sectionFormat="comma" target="RFC8995"/>.
See also <xref target="discovery"/> for more details on discovery of a Join Proxy by a Pledge, and discovery of a Registrar by a Join Proxy.</t>
      </section>
      <section anchor="resource-discovery">
        <name>Request URIs, Resource Discovery and Content Formats</name>
        <t>cBRSKI operates using CoAP over DTLS, with request URIs using the coaps scheme. The Pledge operates in CoAP client role.
To keep the protocol messages small the EST-coaps and cBRSKI request URIs are shorter than the respective EST and BRSKI URIs.</t>
        <t>During the BRSKI onboarding on an IPv6 network these request URIs have the following form:</t>
        <artwork><![CDATA[
  coaps://[<link-local-ipv6>]:<port>/.well-known/brski/<short-name>
  coaps://[<link-local-ipv6>]:<port>/.well-known/est/<short-name>
]]></artwork>
        <t>where &lt;link-local-ipv6&gt; is the discovered link-local IPv6 address of a Join Proxy, and &lt;port&gt; is the discovered port of the Join Proxy that is
used to offer the BRSKI proxy functionality.</t>
        <t>&lt;short-name&gt; is the short resource name for the cBRSKI and EST-coaps resources. For EST-coaps, <xref section="5.1" sectionFormat="of" target="RFC9148"/> defines the CoAP &lt;short-name&gt; resource names. 
For cBRSKI, this document defines the short resource names based on the <xref target="RFC8995"/> long HTTP resource names.
See <xref target="brski-est-short-uri"/> for a summary of these resource names.</t>
        <t><xref target="discovery-considerations"/> details how the Pledge discovers a Join Proxy link-local address and port in different deployment scenarios.</t>
        <t>The request URI formats defined above enable the Pledge to perform onboarding/enrollment without requiring to perform any discovery of the available onboarding options, voucher formats, 
BRSKI/EST resources, enrollment protocols, and so on. This is helpful for a majority of constrained Pledges that would support only a single set of options. However, for Pledges that do support multiple options, 
sending CoAP discovery queries to the Registrar is supported as defined in <xref target="pledge-discovery-on-registrar"/>.</t>
        <t>Because a Pledge only has indirect access to the Registrar via a single port on the Join Proxy, the Registrar MUST host all BRSKI/EST-coaps resources on the same (UDP) server IP address and port.
This is the address and port where a Join Proxy would relay DTLS records from the Pledge to.</t>
        <t>Although the request URI templates include IP address, scheme and port, in practice the CoAP request sent over the secure DTLS connection only encodes the request URI. For example, 
 a Pledge that skips resource discovery operations just sends the initial CoAP voucher request as follows:</t>
        <artwork><![CDATA[
  REQ: POST /.well-known/brski/rv
    Content-Format: 836
    Payload       : (COSE-signed Pledge Voucher Request, PVR)
]]></artwork>
        <t>Note that only Content-Format 836 ("application/voucher+cose") is defined in this document for the payload sent to the voucher request resource (/rv).
Content-Format 836 MUST be supported by the Registrar for the /rv resource and it MAY support additional formats.
The Pledge MAY also indicate in the request the desired format of the (voucher) response, using the Accept Option. An example of using this option in the request is as follows:</t>
        <artwork><![CDATA[
  REQ: POST /.well-known/brski/rv
    Content-Format: 836
    Accept        : 836
    Payload       : (COSE-signed Pledge Voucher Request, PVR)
]]></artwork>
        <t>If the Accept Option is omitted in the request, the response format follows from the request payload format (which is 836).</t>
        <t>Note that this specification allows for voucher+cose format requests and vouchers to be transmitted over HTTPS, as well as for voucher-cms+json and other formats yet to be defined over CoAP.
The burden for this flexibility is placed upon the Registrar.
A Pledge on constrained hardware is expected to support a single format only.</t>
        <t>The Pledge and MASA need to support one or more formats (at least format 836) for the voucher and for the voucher request.
The MASA needs to support all formats that the Pledge supports.</t>
        <section anchor="telemetry">
          <name>RFC8995 Telemetry Returns</name>
          <t><xref target="RFC8995"/> defines two telemetry returns from the Pledge which are sent to the Registrar.
These are the BRSKI Status Telemetry <xref section="5.7" sectionFormat="comma" target="RFC8995"/> and the Enrollment Status Telemetry <xref section="5.9.4" sectionFormat="comma" target="RFC8995"/>.
These are two CoAP POST request made the by Pledge at two key steps in the process.</t>
          <t><xref target="RFC8995"/> defines the content of these POST operations in CDDL, which are serialized as JSON.
This document extends this with an additional CBOR format, derived using the CDDL rules from <xref target="RFC8610"/>.</t>
          <t>The new CBOR format has CoAP Content-Format 60 ("application/cbor") and MUST be supported by the Registrar for both the /vs and /es resources.
The existing JSON format has CoAP Content-Format 50 ("application/json") and also MUST be supported by the Registrar.
A Pledge MUST support at least the new CBOR format and it MAY support the JSON format.</t>
        </section>
        <section anchor="coap-resources-table">
          <name>CoAP Resources Table</name>
          <t>This document inherits EST-coaps <xref target="RFC9148"/> functions: 
specifically, the mandatory Simple (Re-)Enrollment (/sen and /sren) and Certification Authority certificates request (/crts).
Support for CSR Attributes Request (/att) and server-side key generation (/skg, /skc) remains optional for the EST-coaps server.</t>
          <t><xref target="brski-est-short-uri"/> summarizes the resources used in cBRSKI. 
It includes both the short-name BRSKI resources and the EST-coaps resources.</t>
          <!-- Table order can be changed -->

<table anchor="brski-est-short-uri">
            <name>BRSKI/EST resource name mapping to cBRSKI/EST-coaps short resource name</name>
            <thead>
              <tr>
                <th align="left">BRSKI + EST</th>
                <th align="left">cBRSKI + EST-coaps &lt;short-name&gt;</th>
                <th align="left">Well-known URI namespace</th>
                <th align="left">Required for Registrar?</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">/enrollstatus</td>
                <td align="left">/es</td>
                <td align="left">brski</td>
                <td align="left">MUST</td>
              </tr>
              <tr>
                <td align="left">/requestvoucher</td>
                <td align="left">/rv</td>
                <td align="left">brski</td>
                <td align="left">MUST</td>
              </tr>
              <tr>
                <td align="left">/voucher_status</td>
                <td align="left">/vs</td>
                <td align="left">brski</td>
                <td align="left">MUST</td>
              </tr>
              <tr>
                <td align="left">/cacerts</td>
                <td align="left">/crts</td>
                <td align="left">est</td>
                <td align="left">MUST</td>
              </tr>
              <tr>
                <td align="left">/csrattrs</td>
                <td align="left">/att</td>
                <td align="left">est</td>
                <td align="left">MAY</td>
              </tr>
              <tr>
                <td align="left">/simpleenroll</td>
                <td align="left">/sen</td>
                <td align="left">est</td>
                <td align="left">MUST</td>
              </tr>
              <tr>
                <td align="left">/simplereenroll</td>
                <td align="left">/sren</td>
                <td align="left">est</td>
                <td align="left">MUST</td>
              </tr>
              <tr>
                <td align="left">/serverkeygen</td>
                <td align="left">/skg</td>
                <td align="left">est</td>
                <td align="left">MAY</td>
              </tr>
              <tr>
                <td align="left">/serverkeygen</td>
                <td align="left">/skc</td>
                <td align="left">est</td>
                <td align="left">MAY</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="brski-coap-responses">
        <name>CoAP Responses</name>
        <t><xref section="5" sectionFormat="comma" target="RFC8995"/> defines a number of HTTP response codes that the Registrar is to return when certain conditions occur.</t>
        <t>The 401, 403, 404, 406 and 415 response codes map directly to CoAP codes 4.01, 4.03, 4.04, 4.06 and 4.15.</t>
        <t>The 202 Retry process which occurs in the voucher request, is to be handled in the same way as the <xref section="5.7" sectionFormat="of" target="RFC9148"/> process for Delayed Responses.</t>
      </section>
      <section anchor="brski-est-extensions">
        <name>Extensions to EST-coaps</name>
        <t>This section defines extensions to EST-coaps for Pledges (during initial onboarding), EST-coaps clients (after initial onboarding) and Registrars (that implement an EST-coaps server).
Note that a device that is already onboarded is not called "Pledge" in this section: it now acts in the role of an EST-coaps client.</t>
        <section anchor="brski-est-extensions-pledge">
          <name>Pledge enrollment procedure</name>
          <t>This section defines optimizations for the EST-coaps protocol as used by a Pledge. These aim to reduce payload sizes and the number of messages (round-trips) required for the initial EST enrollment.</t>
          <t>A Pledge SHOULD NOT perform the optional EST-coaps "CSR attributes request" (/att). Instead, the Pledge selects the attributes to include in the CSR as specified below.</t>
          <t>One or more Subject Distinguished Name fields MUST be included in the CSR.
If the Pledge has no specific information on what attributes/fields are desired in the CSR, which is the common case, it MUST use the Subject Distinguished Name fields from its IDevID unmodified.
Note that a Pledge MAY receive such specific information via the voucher data (encoded in a vendor-specific way) or via some other, out-of-band means.</t>
          <t>A Pledge uses the following optimized EST-coaps procedure:</t>
          <ol spacing="normal" type="1"><li>
              <t>If the voucher, that validates the current Registrar, contains a single pinned domain CA certificate, the Pledge provisionally considers this certificate as the EST trust anchor, as if it were the result of a "CA certificates request" (/crts) to the Registrar.</t>
            </li>
            <li>
              <t>Using this CA certificate as trust anchor it proceeds with EST simple enrollment (/sen) to obtain a provisionally trusted LDevID certificate.</t>
            </li>
            <li>
              <t>If the Pledge determines that the pinned domain CA is (1) a root CA certificate and (2) signer of the LDevID certificate, the Pledge accepts the pinned domain CA certificate as the legitimate trust anchor root CA for the Registrar's domain. It also accepts the LDevID certificate as its new LDevID identity. And steps 4 and 5 are skipped.</t>
            </li>
            <li>
              <t>Otherwise, if the step 3 condition was not met, the Pledge MUST perform a "CA certificates request" (/crts) to the EST server to obtain the full set of EST CA trust anchors. It then MUST attempt to chain the LDevID certificate to one of the CAs in the set.</t>
            </li>
            <li>
              <t>If the Pledge cannot obtain the set of CA certificates, or it is unable to create the chain as defined in step 4, the Pledge MUST abort the enrollment process and report the error using the enrollment status telemetry (/es).</t>
            </li>
          </ol>
        </section>
        <section anchor="est-renewal-crts">
          <name>Renewal of CA certificates</name>
          <t>An EST-coaps client that has an idea of the current time (internally, or via Network Time Protocol) SHOULD consider the validity time of the trust anchor CA(s), and MAY begin requesting new trust anchor certificates(s) using the /crts request when the CA has 50% of it's validity time (notAfter - notBefore) left.
A client without access to the current time cannot decide if trust anchor CA(s) have expired, and SHOULD poll periodically for a new trust anchor certificate(s) using the /crts request at an interval of approximately 1 month.
An EST-coaps server SHOULD include the CoAP ETag Option in every response to a /crts request, to enable clients to perform low-overhead validation whether their trust anchor CA is still valid.
The EST-coaps client SHOULD store the ETag resulting from a /crts response in memory and SHOULD use this value in an ETag Option in its next GET /crts request.</t>
        </section>
        <section anchor="change-of-domain-trust-anchors">
          <name>Change of domain trust anchor(s)</name>
          <t>The domain trust anchor(s) may change over time. Such a change may happen due to relocation of the client device to a new domain, a new subdomain, or due to a key update of 
a trust anchor as described in <xref section="4.4" sectionFormat="comma" target="RFC4210"/>.</t>
          <t>From the client's viewpoint, a trust anchor change happens during EST-coaps re-enrollment: since a change of domain CA requires all devices 
operating under the old domain CA to acquire a new LDevID certificate issued by the new domain CA. A client's re-enrollment may be triggered by various events, such as an instruction to re-enroll sent by a domain entity, or an imminent expiry of its LDevID certificate, or other.
How the re-enrollment is explicitly triggered on the client by a domain entity, such as a commissioner or a Registrar, is out of scope of this specification.</t>
          <t>The mechanism described in <xref section="4.1.3" sectionFormat="comma" target="RFC7030"/> and <xref section="4.4" sectionFormat="comma" target="RFC4210"/> for Root CA key update requires four certificates: OldWithOld, OldWithNew, NewWithOld, and NewWithNew. Of these four, the OldWithOld certificate is already
stored in the client's Explicit TA database. The other certificates will be provided to the client in a /crts response, during the EST-coaps re-enrollment procedure.</t>
        </section>
        <section anchor="est-reenrollment">
          <name>Re-enrollment procedure</name>
          <t>For re-enrollment, the EST-coaps client MUST support the following EST-coaps procedure. During this procedure the EST-coaps server MAY re-enroll the client into a new domain or into a new sub-CA within a domain.</t>
          <ol spacing="normal" type="1"><li>
              <t>The client connects with DTLS to the EST-coaps server, and authenticates with its present domain certificate (LDevID) as usual. The EST-coaps server authenticates itself with its domain RA certificate that
is currently trusted by the client, i.e. it chains to a trust anchor CA that the client has stored in its Explicit TA database. This is the OldWithOld trust anchor. 
The client checks that the server is a Registration Authority (RA) of the domain as required by <xref section="3.6.1" sectionFormat="of" target="RFC7030"/> before proceeding.</t>
            </li>
            <li>
              <t>The client performs the simple re-enrollment request (/sren) and upon success it obtains a new LDevID certificate.</t>
            </li>
            <li>
              <t>The client verifies the new LDevID certificate against its Explicit TA database. If the new LDevID chains successfully to a TA, this means trust anchors did not significantly change and the client MAY skip retrieving the current CA certificates using the "CA certificates request" (/crts). If it does not chain successfully, it means trust anchor(s) were changed significantly and the client MUST retrieve the new domain trust anchors using the "CA certificates request" (/crts).</t>
            </li>
            <li>
              <t>If the client retrieved new trust anchor(s) in step 3, then it MUST verify that the new LDevID certificate it obtained in step 2 chains with the new trust anchor(s). If it chains successfully, the client stores the new trust anchor(s) in its Explicit TA database, accepts the new LDevID certificate and stops using its prior LDevID certificate. If it does not chain successfully, the client MUST NOT update its LDevID certificate, and it MUST NOT update its Explicit TA database, and the client MUST abort the enrollment process and MUST attempt to report the error to the EST-coaps server using enrollment status telemetry (/es).</t>
            </li>
          </ol>
          <t>Note that even though the EST-coaps client may skip the /crts request in step 3 at this time, it SHOULD still support retrieval of the trust anchors periodically as detailed in <xref target="est-renewal-crts"/>.</t>
          <t>Note that an EST-coaps server that is also a Registrar will already support the enrollment status telemetry resource (/es) in step 4, while an EST-coaps server that purely implements <xref target="RFC9148"/>, and not the present specification, will not support this resource.</t>
        </section>
        <section anchor="multipart-core">
          <name>Multipart Content Format for CA certificates (/crts) Resource</name>
          <t>In EST-coaps <xref target="RFC9148"/> the PKCS#7 container format is used for CA certificates distribution. Because the PKCS#7 format is only used as a certificate container and no additional security is applied on the container, it 
becomes attractive to replace this format by something simpler, on a constrained Pledge: so that additional PKCS#7 code is avoided. Therefore, this document defines a container format using the <xref target="RFC8710"/> 
"application/multipart-core" media type (CoAP Content-Format 62). This is beneficial since a Pledge necessarily already supports CBOR parsing, so there is little code overhear to support this CBOR-based 
container format.</t>
          <t>A Registrar or EST-coaps server MUST support Content-Format 62 for the /crts resource.
The multipart collection MUST contain the individual CA certificates, each encoded as an "application/pkix-cert" (287) representation. Future documents may define other certificate formats: the multipart collection can handle any future types. 
The order of CA certificates MUST be in the CA hierarchy order starting from the issuer of the client's LDevID first, up to the highest-level domain CA, then optionally followed by any further CA certificates that are not part of this hierarchy.
These further CA certificates may be Third-party TAs as defined in <xref target="RFC7030"/>. The highest-level domain CA may or may not be a root CA certificate.</t>
          <t>As an example, for the two-level CA domain PKI of <xref target="fig-twoca"/> the multipart container will contain two representations:</t>
          <artwork><![CDATA[
[ <domain sub-CA cert (2)> , <domain CA cert (1)> ]
]]></artwork>
          <t>Encoded as an "application/multipart-core" CBOR array this is (shown in CBOR diagnostic notation):</t>
          <artwork><![CDATA[
[ 287, h'3082' ... 'd713', 287, h'3082' ... 'a034' ]
]]></artwork>
          <t>The total number of CA certificates SHOULD be 1, 2 or 3 and not higher to prevent constrained Pledges from running out of memory for the trust anchor storage (Explicit TA database).
However if a domain operator can guarantee that any Pledges enrolled in its network can support larger sets of CA certificates, the total number MAY be configured as higher than 3.
To facilitate a reliable transfer of large payloads over constrained networks, the server MUST support CoAP Block-wise transfer for the /crts response. The server MUST also support 
the Size2 Option <xref target="RFC7959"/> to provide the total resource length in bytes, when requested by a client.</t>
          <t>Implementation notes: a client that receives the first block of payload data from the server, can already inspect the total number of CA certificates by decoding the first byte of the payload.
In CBOR encoding, the respective first bytes 0x81-0x97 represent an array with length 1-23, respectively.
Furthermore, the length in bytes of the first CA certificate can be already determined by decoding the first bytes of the second element, because the CBOR encoding for binary string includes the length of this string.
A client that requires an estimate of the total resource size (to be returned as part of the first Block2 response from the server) can use a Size2 Option with value 0 in its request.
Knowing the overall progress of the data transfer may be helpful in certain cases, e.g. when a Pledge provides visual progress information on the onboarding progress.</t>
        </section>
      </section>
      <section anchor="brski-extensions-registrar">
        <name>Registrar Extensions</name>
        <t>The Content-Format 60 ("application/cbor") MUST be supported by the Registrar for the /vs and /es resources.</t>
        <t>Content-Format 836 ("application/voucher+cose") MUST be supported by the Registrar for the /rv resource for CoAP POST requests, both as request payload and as response payload.</t>
        <t>Content-Format 287 ("application/pkix-cert") MUST be supported by the Registrar as a response payload for the /sen and /sren resources.</t>
        <t>When a Registrar receives a "CA certificates request" (/crts) request with a CoAP Accept Option with value 287 ("application/pkix-cert") it MUST return only the
single CA certificate that is the envisioned or actual CA authority for the current, authenticated Pledge making the request. An exception to this rule is when 
the domain has been configured to operate with multiple CA trust anchors only: then the Registrar returns a 4.06 Not Acceptable error to signal to the client that it 
needs to request another Content Format that supports retrieval of multiple CA certificates.</t>
      </section>
    </section>
    <section anchor="brski-masa">
      <name>BRSKI-MASA Protocol</name>
      <t>This section describes extensions to and clarifications of the BRSKI-MASA protocol between Registrar and MASA.</t>
      <section anchor="brski-masa-protocol-format">
        <name>Protocol and Formats</name>
        <t><xref section="5.4" sectionFormat="of" target="RFC8995"/> describes a connection between the Registrar and the MASA as being a normal TLS connection using HTTPS.
This document does not change that. The Registrar MUST use the format "application/voucher+cose" in its voucher request to MASA, when the Pledge uses this format in its request to the Registrar.</t>
        <t>The MASA only needs to support formats for which it has constructed Pledges that use that format.</t>
        <t>The Registrar MUST use the same format for the RVR as the Pledge used for its PVR.
The Registrar indicates the voucher format it wants to receive from MASA using the HTTP Accept header.
This format MUST be the same as the format of the PVR, so that the Pledge can parse it.</t>
        <t>At the moment of writing the creation of coaps based MASAs is deemed unrealistic.
The use of CoAP for the BRSKI-MASA connection can be the subject of another document.
Some consideration was made to specify CoAP support for consistency, but:</t>
        <ul spacing="normal">
          <li>
            <t>the Registrar is not expected to be so constrained that it cannot support HTTPS client connections.</t>
          </li>
          <li>
            <t>the technology and experience to build Internet-scale HTTPS responders (which the MASA is) is common, while the experience doing the same for CoAP is much less common.</t>
          </li>
          <li>
            <t>a Registrar is likely to provide onboarding services to both constrained and non-constrained devices.  Such a Registrar would need to speak HTTPS anyway.</t>
          </li>
          <li>
            <t>a manufacturer is likely to offer both constrained and non-constrained devices, so there may in practice be no situation in which the MASA could be CoAP-only.  Additionally, as the MASA is intended to be a function that can easily be oursourced to a third-party service provider, reducing the complexity would also seem to reduce the cost of that function.</t>
          </li>
          <li>
            <t>security-related considerations: see <xref target="security-masa-coaps"/>.</t>
          </li>
        </ul>
      </section>
      <section anchor="brski-masa-rvr">
        <name>Registrar Voucher Request</name>
        <t>If the PVR contains a proximity assertion, the Registrar MUST propagate this assertion into the RVR by including the "assertion" field with the value "proximity".
This conforms to the example in <xref section="3.3" sectionFormat="of" target="RFC8995"/> of carrying the assertion forward.</t>
      </section>
      <section anchor="sni-masa">
        <name>MASA and the Server Name Indicator (SNI)</name>
        <t>A TLS/HTTPS connection is established between the Registrar and MASA.</t>
        <t><xref section="5.4" sectionFormat="of" target="RFC8995"/> explains this process, and there are no externally visible changes.
A MASA that supports the unconstrained voucher formats should be able to support constrained voucher formats equally well.</t>
        <t>There is no requirement that a single MASA be used for both constrained and unconstrained voucher requests: the choice of MASA is determined by the id-mod-MASAURLExtn2016 extension contained in the IDevID.</t>
        <t>The Registrar MUST do DNS-ID checks (<xref target="RFC9525"/>) on the contents of the certificate provided by the MASA.</t>
        <t>In constrast to the Pledge/Registrar situation, the Registrar always knows the name of the MASA, and MUST always include an <xref target="RFC6066"/> Server Name Indicator.
The SNI is optional in TLS1.2, but common.
The SNI it considered mandatory with TLS1.3.</t>
        <t>The presence of the SNI is needed by the MASA, in order for the MASA's server to host multiple tenants (for different customers).</t>
      </section>
      <section anchor="registrar-certificate-requirement-client">
        <name>Registrar Client Certificate Requirement</name>
        <t>The Registrar SHOULD use a TLS Client Certificate to authenticate to the MASA per <xref section="5.4.1" sectionFormat="of" target="RFC8995"/>.
If the certificate that the Registrar uses is marked as a id-kp-cmcRA certificate, via Extended Key Usage, then it MUST also have the id-kp-clientAuth EKU attribute set.</t>
        <t>In summary for typical Registrar use, where a single Registrar certificate is used, then the certificate MUST have EKU of: id-kp-cmcRA, id-kp-serverAuth, id-kp-clientAuth.</t>
      </section>
    </section>
    <section anchor="pinning">
      <name>Pinning in Voucher Artifacts</name>
      <t>The voucher is a statement by the MASA for use by the Pledge that provides the identity of the Pledge's owner.
This section describes how the owner's identity is determined and how it is specified within the voucher.</t>
      <section anchor="registrar-identity">
        <name>Registrar Identity Selection and Encoding</name>
        <t><xref section="5.5" sectionFormat="of" target="RFC8995"/> describes BRSKI policies for selection of the owner identity. It indicates some of the flexibility that is possible for the Registrar, and recommends the Registrar to include only 
certificates in the voucher request (CMS) signing structure that participate in the certificate chain that is to be pinned.</t>
        <t>The MASA is expected to evaluate the certificates included by the Registrar in its voucher request, forming them into a chain with the Registrar's (signing) identity on one end. Then, it pins a certificate selected from the chain.
For instance, for a domain with a two-level certification authority (see <xref target="fig-twoca"/>), where the voucher request has been signed by "Registrar", its signing structure includes two additional CA certificates.
The arrows in the figure indicate the issuing of a certificate, i.e. author of (1) issued (2) and author of (2) issued (3).</t>
        <figure anchor="fig-twoca">
          <name>Two-Level CA PKI</name>
          <artwork type="ascii-art"><![CDATA[
 .------------------.
 |  domain CA (1)   |
 |  trust anchor    |
 '------------------'
           |
           v
    .------------.
    | domain (2) |
    | Sub-CA     |
    '------------'
           |
           |
           v
  .----------------.
  |   domain       |
  | Registrar (3)  |
  | EE certificate |
  '----------------'
]]></artwork>
        </figure>
        <t>When the Registrar is using a COSE-signed constrained voucher request towards MASA, instead of a regular CMS-signed voucher request, the COSE_Sign1 object contains a protected and an unprotected header.
The Registrar MUST place all the certificates needed to validate the signature chain from the Registrar on the RVR in an "x5bag" attribute in the unprotected header as defined in <xref target="RFC9360"/>.</t>
        <t>The "x5bag" attribute is very important as it provides the required signals from the Registrar to control what identity is pinned in the resulting voucher.
This is explained in the next section.</t>
      </section>
      <section anchor="masa-pinning-policy">
        <name>MASA Pinning Policy</name>
        <t>The MASA, having assembled and verified the chain in the signing structure of the voucher request needs to select a certificate to pin.
(For the case that only the Registrar's End-Entity certificate is included, only this certificate can be selected and this section does not apply.)
The BRSKI policy for pinning by the MASA as described in <xref section="5.5.2" sectionFormat="of" target="RFC8995"/> leaves much flexibility to the manufacturer.</t>
        <t>The present document adds the following rules to the MASA pinning policy to reduce the network load on the constrained network side:</t>
        <ol spacing="normal" type="1"><li>
            <t>for a voucher containing a nonce, it SHOULD select the most specific (lowest-level) CA certificate in the chain.</t>
          </li>
          <li>
            <t>for a nonceless voucher, it SHOULD select the least-specific (highest-level) CA certificate in the chain that is allowed under the MASA's policy for this specific domain.</t>
          </li>
        </ol>
        <t>The rationale for 1. is that in case of a voucher with nonce, the voucher is valid only in scope of the present DTLS connection between Pledge and Registrar anyway, so there is no
benefit to pin a higher-level CA. By pinning the most specific CA the constrained Pledge can validate its DTLS connection using less crypto operations. The
rationale for pinning a CA instead of the Registrar's End-Entity certificate directly is based on the following benefit on constrained networks: the pinned certificate in the voucher
can in common cases be re-used as a Domain CA trust anchor during the EST enrollment and during the operational phase that follows after EST enrollment, as explained in <xref target="brski-est-extensions-pledge"/>.</t>
        <t>The rationale for 2. follows from the flexible BRSKI trust model for, and purpose of, nonceless vouchers (Sections 5.5.* and 7.4.1 of <xref target="RFC8995"/>).</t>
        <t>Refering to <xref target="fig-twoca"/> of a domain with a two-level certification authority, the most specific CA ("Sub-CA") is the identity that is pinned by MASA in a nonced voucher.
A Registrar that wished to have only the Registrar's End-Entity certificate pinned would omit the "domain CA" and "Sub-CA" certificates from the voucher request.</t>
        <t>In case of a nonceless voucher, depending on the trust level, the MASA pins the "Registrar" certificate (low trust in customer), or the "Sub-CA" certificate (in case of
medium trust, implying that any Registrar of that sub-domain is acceptable), or even the "domain CA" certificate (in case of high trust in the customer, and possibly a pre-agreed need of the
customer to obtain flexible long-lived vouchers).</t>
      </section>
      <section anchor="pinned-with-rpk">
        <name>Pinning of Raw Public Keys</name>
        <t>Specifically for the most-constrained use cases, the pinning of the raw public key (RPK) of the Registrar is also supported in the constrained voucher, instead of a PKIX certificate.
This is used by the RPK variant of cBRSKI described in <xref target="rpk-considerations"/>, but it can also be used in the default cBRSKI flow as a means to reduce voucher size.</t>
        <t>For both cases, if an RPK is pinned, it MUST be the RPK of the Registrar.</t>
        <t>When the Pledge is known by MASA to support the RPK variant only, the voucher produced by the MASA pins the RPK of the Registrar in either the "pinned-domain-pubk"
or "pinned-domain-pubk-sha256" field of the voucher data.
This is described in more detail in <xref target="RFC8366bis"/> and <xref target="rpk-considerations"/>.</t>
        <t>When the Pledge is known by MASA to support PKIX certificates, the "pinned-domain-cert" field present in a voucher normally pins a domain certificate.
That can be either the End-Entity certificate of the Registrar, or the certificate of a domain CA of the Registrar's domain as specified in <xref target="masa-pinning-policy"/>.
However, if the Pledge is known by MASA to also support RPK pinning and the MASA intends to pin the Registrar in the voucher (and not the CA), then MASA SHOULD pin the 
RPK (RPK3 in <xref target="fig-pinning"/>) of the Registrar instead of the Registrar's End-Entity certificate to save space in the voucher.</t>
        <figure anchor="fig-pinning">
          <name>Raw Public Key (RPK) pinning examples</name>
          <artwork type="ascii-art"><![CDATA[
                                          .-------------.
 .------------.                           | private     |
 | pub-CA (1) |                           | root-CA (1) |
 '------------'                           '-------------'
        |                                        |       
        v             .-------------.            v       
 .------------.       | private     |     .------------. 
 | sub-CA (2) |       | root-CA (1) |     | sub-CA (2) | 
 '------------'       '-------------'     '------------' 
        |                    |                   |       
        v                    v                   v       
.--------------.     .--------------.     .--------------.
| Registrar(3) |     | Registrar(3) |     | Registrar(3) |
|    RPK3      |     |    RPK3      |     |    RPK3      |
'--------------'     '--------------'     '--------------'
                                      
]]></artwork>
        </figure>
      </section>
      <section anchor="registrar-idevid-issuer">
        <name>Considerations for use of IDevID-Issuer</name>
        <t><xref target="RFC8366bis"/> and <xref target="RFC8995"/> define the idevid-issuer attribute for voucher and voucher-request (respectively), but they summarily explain when to use it.</t>
        <t>The use of idevid-issuer is provided so that the serial-number to which the issued voucher pertains can be relative to the entity that issued the devices' IDevID.
In most cases there is a one to one relationship between the trust anchor that signs vouchers (and is trusted by the pledge), and the Certification Authority that signs the IDevID.
In that case, the serial-number in the voucher data must refer to the same device as the serial-number that is in the IDevID certificate.</t>
        <t>However, there situations where the one to one relationship may be broken.
This occurs whenever a manufacturer has a common MASA, but different products (on different assembly lines) are produced with identical serial numbers.
A system of serial numbers which is just a simple counter is a good example of this.
A system of serial numbers where there is some prefix relating the product type does not fit into this, even if the lower digits are a counter.</t>
        <t>It is not possible for the Pledge or the Registrar to know which situation applies.
The question to be answered is whether or not to include the idevid-issuer in the PVR and the RVR.
A second question arises as to what the format of the idevid-issuer contents are.</t>
        <t>Analysis of the situation shows that the pledge never needs to include the idevid-issuer in it's PVR, because the pledge's IDevID certificate is available to the Registrar, and the Authority Key Identifier is contained within that IDevID certificate.
The pledge therefore has no need to repeat this.</t>
        <t>For the RVR, the Registrar has to examine the pledge's IDevID certificate to discover the serial number for the Registrar's Voucher Request (RVR).
This is clear in <xref section="5.5" sectionFormat="of" target="RFC8995"/>.
That section also clarifies that the idevid-issuer is to be included in the RVR.</t>
        <t>Concerning the Authority Key Identifier, <xref target="RFC8366bis"/> specifies that the entire object i.e. the extnValue OCTET STRING is to be included: comprising the AuthorityKeyIdentifier, SEQUENCE, Choice as well as the OCTET STRING that is the keyIdentifier.</t>
      </section>
    </section>
    <section anchor="artifacts">
      <name>Artifacts</name>
      <t>The YANG (<xref target="RFC7950"/>) module and CBOR serialization for the constrained voucher as used by cBRSKI are described in <xref target="RFC8366bis"/>.
That document also assigns SID values to YANG elements in accordance with <xref target="I-D.ietf-core-sid"/>.
The present section provides some examples of these artifacts and defines a new signature format for these, using COSE.</t>
      <t>Compared to the first voucher request definition done in <xref target="RFC8995"/>, the constrained voucher request adds the fields proximity-registrar-pubk and proximity-registrar-pubk-sha256. One of these is optionally 
used to replace the proximity-registrar-cert field, for a smaller voucher data size - useful for the most constrained cases.</t>
      <t>The constrained voucher adds the fields pinned-domain-pubk and pinned-domain-pubk-sha256. One of these is optionally
used instead of the pinned-domain-cert field, for a smaller voucher data size.</t>
      <section anchor="example-artifacts">
        <name>Example Artifacts</name>
        <section anchor="example-pvr">
          <name>Example Pledge voucher request (PVR) artifact</name>
          <t>Below, example voucher data from a constrained voucher request (PVR) from a Pledge to a Registrar is shown in CBOR diagnostic notation.
Long CBOR byte strings have been shortened for readability, using the ellipsis ("...") to indicate elided bytes. This notation is 
defined in <xref target="I-D.ietf-cbor-edn-literals"/>. The enum value of the assertion field is
2 for the "proximity" assertion as defined in <xref section="6.3" sectionFormat="of" target="RFC8366bis"/>.</t>
          <sourcecode type="cbor-diag"><![CDATA[
{ 
 2501: {          / SID=2501, ietf-voucher-request:voucher|voucher /
   1: 2,                      / SID=2502, assertion 2 = "proximity"/
   7: h'831D5198A6CA2C7F',    / SID=2508, nonce                    /
  12: h'30593013' ... '9A54', / SID=2513, proximity-registrar-pubk /    
  13: "JADA123456789"         / SID=2514, serial-number            /
 }
}

]]></sourcecode>
          <t>The Pledge has included the item proximity-registrar-pubk which carries the public key of the Registrar, instead of including the full Registrar certificate in
a proximity-registrar-cert item. This is done to reduce the size of the PVR. Also note that the Pledge did not include the created-on field since it lacks an
internal real-time clock and has no knowledge of the current time at the moment of performing the onboarding.</t>
        </section>
        <section anchor="example-rvr">
          <name>Example Registrar voucher request (RVR) artifact</name>
          <t>Next, example voucher data from a constrained voucher request (RVR) from a Registrar to a MASA is shown in CBOR diagnostic notation.
The Registrar has created this request triggered by the reception of the Pledge voucher request (PVR) of the previous example.
Again, long CBOR byte strings have been shortened for readability.</t>
          <sourcecode type="cbor-diag"><![CDATA[
{
 "ietf-request-voucher:voucher": {
    "assertion":     2, 
    "created-on":    "2022-12-05T19:19:19.536Z", 
    "nonce":         h'831D5198A6CA2C7F', 
    "idevid-issuer": h'04183016' ... '1736C3E0', 
    "serial-number": "JADA123456789", 
    "prior-signed-voucher-request": h'A11909' ... '373839'
 }
}

]]></sourcecode>
          <t>Note that the Registrar uses here the string data type for all key names, instead of the more compact SID integer keys. This is fine for any use cases where the
network between Registrar and MASA is an unconstrained network where data size is not critical. The constrained voucher request format supports both the
string and SID key types.</t>
        </section>
        <section anchor="example-voucher">
          <name>Example voucher artifacts</name>
          <t>Below, an example of constrained voucher data is shown in CBOR diagnostic notation. It was created by a MASA in response to
receiving the Registrar Voucher Request (RVR) shown in <xref target="example-rvr"/>. The enum value of the assertion field is set to 2,
to acknowledge to both the Pledge and the Registrar that the proximity of the Pledge to the Registrar is considered proven.</t>
          <sourcecode type="cbor-diag"><![CDATA[
{
 2451: {               / SID = 2451, ietf-voucher:voucher|voucher /
   1: 2,                      / SID = 2452, assertion "proximity" /
   2: "2022-12-05T19:19:23Z", / SID = 2453, created-on            /
   3: false,       / SID = 2454, domain-cert-revocation-checks    /
   7: h'831D5198A6CA2C7F',    / SID = 2508, nonce                 /
   8: h'308201' ... '8CFF',   / SID = 2459, pinned-domain-cert    /
  11: "JADA123456789"         / SID = 2462, serial-number         /
 }
}

]]></sourcecode>
          <t>While the above example voucher data includes the nonce from the PVR, the next example is for a nonce-less voucher. Instead of a nonce, it
includes an expires-on field with the date and time on which the voucher expires. Because the MASA did not verify the proximity of
the Pledge and Registrar in this case, the assertion field contains a weaker assertion of "verified" (0). This indicates that the
MASA verified the domain's ownership of the Pledge via some other means. The enum value of the assertion field for "verified" is
calculated to be 0 by following the algorithm described in section 9.6.4.2 of <xref target="RFC7950"/>.</t>
          <sourcecode type="cbor-diag"><![CDATA[
{
 2451: {               / SID = 2451, ietf-voucher:voucher|voucher /
   1: 0,                      / SID = 2452, assertion "verified"  /
   2: "2022-12-06T10:15:32Z", / SID = 2453, created-on            /
   3: false,          / SID = 2454, domain-cert-revocation-checks /
   4: "2022-12-13T10:15:32Z", / SID = 2455, expires-on            /
   8: h'308201F8' ... 'FF',   / SID = 2459, pinned-domain-cert    /
  11: "JADA123456789"         / SID = 2462, serial-number         /
 }
}

]]></sourcecode>
          <t>The voucher is valid for one week. To verify the voucher's validity, the Pledge would either need an internal real-time clock
or some external means of obtaining the current time, such as Network Time Protocol (NTP) or a radio time signal receiver.</t>
        </section>
      </section>
      <section anchor="VR-COSE">
        <name>Signing voucher and voucher request artifacts with COSE</name>
        <t>The COSE_Sign1 structure is discussed in <xref section="4.2" sectionFormat="of" target="RFC9052"/>.
The CBOR object that carries the body, the signature, and the information about the body and signature is called the COSE_Sign1 structure.
It is used when only one signature is used on the body.</t>
        <t>Support for ECDSA with SHA2-256 using curve secp256r1 (aka prime256k1) is RECOMMENDED.
Most current low power hardware has support for acceleration of this algorithm.
Future hardware designs could omit this in favour of a newer algorithms.
This is the ES256 keytype from Table 1 of <xref target="RFC9053"/>.
Support for curve secp256k1 is OPTIONAL.</t>
        <t>Support for EdDSA using Curve 25519 is RECOMMENDED in new designs if hardware support is available.
This is keytype EDDSA (-8) from Table 2 of <xref target="RFC9053"/>.  A "crv" parameter is necessary to specify the Curve, which from Table 18.  The 'kty' field MUST be present, and it MUST be 'OKP'. (Table 17)</t>
        <t>A transition towards EdDSA is occurring in the industry.
Some hardware can accelerate only some algorithms with specific curves, other hardware can accelerate any curve, and still other kinds of hardware provide a tool kit for acceleration of any eliptic curve algorithm.</t>
        <t>In general, the Pledge is expected to support only a single algorithm, while the Registrar, usually not constrained, is expected to support a wide variety of algorithms: both legacy ones and up-and-coming ones via regular software updates.</t>
        <t>An example of the supported COSE_Sign1 object structure containing a Pledge Voucher Request (PVR) is shown in <xref target="fig-cose"/>.</t>
        <figure anchor="fig-cose">
          <name>COSE_Sign1 PVR example in CBOR diagnostic notation</name>
          <sourcecode type="cbor-diag"><![CDATA[
18(                   / tag for COSE_Sign1                       /
 [
   h'A10126',         / protected COSE header encoding: {1: -7}  /
                      /            which means { "alg": ES256 }  /
   {},                / unprotected COSE header parameters       /
   h'A119' ... '3839', / voucher-request binary content (in CBOR)/
   h'4567' ... '1234' / voucher-request binary Sign1 signature   /
 ]
)
]]></sourcecode>
        </figure>
        <t>The <xref target="COSE-registry"/> specifies the integers/encoding for the "alg" field in <xref target="fig-cose"/>. The "alg"
field restricts the key usage for verification of this COSE object to a particular cryptographic algorithm.</t>
        <section anchor="signing-of-registrar-voucher-request-rvr">
          <name>Signing of Registrar Voucher Request (RVR)</name>
          <t>A Registrar MUST include a COSE "x5bag" structure in the RVR as explained in <xref target="registrar-identity"/>.
<xref target="fig-cose-rvr"/> shows an example Registrar Voucher Request (RVR) that includes the x5bag as an unprotected
header parameter (32). The bag contains two certificates in this case.</t>
          <figure anchor="fig-cose-rvr">
            <name>COSE_Sign1 RVR example in CBOR diagnostic notation</name>
            <sourcecode type="cbor-diag"><![CDATA[
18(                    / tag for COSE_Sign1                      /
 [
   h'A10126',          / protected COSE header encoding: {1: -7} /
                       /            which means { "alg": ES256 } /
   {
     32: [h'308202' ... '20AE', h'308201' ... '8CFF']  / x5bag   /
   },
   h'A178' ... '7FED', / voucher-request binary content (in CBOR)/
   h'E1B7' ... '2925'  / voucher-request binary Sign1 signature  /
 ]
)
]]></sourcecode>
          </figure>
          <t>A "kid" (key ID) field is optionally present in the unprotected COSE header parameters map of a COSE object.
If present, it identifies the public key of the key pair that was used to sign the
COSE message. The value of the key identifier "kid" parameter may be in any format agreed between signer and verifier.
Usually a hash of the public key is used to identify the public key; but the choice of key identifier method is
vendor-specific. If "kid" is not present, then a verifying party needs to use other context information to
retrieve the right public key to verify the COSE_Sign1 object against.</t>
          <t>By default, a Registrar does not include a "kid" parameter in the RVR since the signing key
is already identified by the signing certificates included in the COSE "x5bag" structure.
A Registrar nevertheless MAY use a "kid" parameter in its RVR to identify its signing key/identity.</t>
          <t>The method of generating such "kid" value is vendor-specific and SHOULD be configurable in the Registrar to
support commonly used methods. In order to support future business cases and supply chain integrations,
a Registrar using the "kid" field MUST be configurable, on a per-manufacturer basis,
to select a particular method for generating the "kid" value such that it is compatible with the method that
the manufacturer expects. Note that the "kid" field always has a CBOR byte string (bstr) format.</t>
        </section>
        <section anchor="signing-of-pledge-voucher-request-pvr">
          <name>Signing of Pledge Voucher Request (PVR)</name>
          <t>Like in the RVR, a "kid" (key ID) field is also optionally present in the PVR. It can be used to identify the signing key/identity to
the MASA.</t>
          <t>A Pledge by default SHOULD NOT use a "kid" parameter in its PVR, because its signing key is already identified
by the Pledge's unique serial number that is included in the PVR and (by the Registrar) in the RVR. This achieves the smallest possible
PVR data size while still enabling the MASA to verify the PVR.
Still, when required the Pledge MAY use a "kid" parameter in its PVR to help the MASA identify the right public key to verify against. This can occur
for example if a Pledge has multiple IDevID identities. The "kid" parameter in this case may be an integer byte identifying one out of N identities
present, or it may be a hash of the public key, or anything else the Pledge vendor decides.
A Registrar normally SHOULD ignore a "kid" parameter used in a received PVR, as this information is intended for the MASA.
In other words, there is no need for the Registrar to verify the contents of this field, but it may include it in an audit log.</t>
          <t>The example in <xref target="fig-cose-pvr-kid"/> shows a PVR with the "kid" parameter present.</t>
          <figure anchor="fig-cose-pvr-kid">
            <name>COSE_Sign1 PVR example with "kid" field present</name>
            <sourcecode type="cbor-diag"><![CDATA[
18(                    / tag for COSE_Sign1                      /
 [
   h'A10126',          / protected COSE header encoding: {1: -7} /
                       /            which means { "alg": ES256 } /
   {
      4: h'59AB3E'     / COSE "kid" header parameter             /
   },
   h'A119' ... '3839', / voucher-request binary content (in CBOR)/
   h'5678' ... '7890'  / voucher-request binary Sign1 signature  /
 ]
)
]]></sourcecode>
          </figure>
          <t>The Pledge SHOULD NOT use the "x5bag" structure in the PVR.  A
Registrar that processes a PVR with an "x5bag" structure MUST ignore
it, and MUST use only the TLS Client Certificate extension for
authentication of the Pledge.</t>
          <t>A situation where the Pledge MAY use the x5bag structure is for communication
of certificate chains to the MASA.  This would arise in some vendor-
specific situations involving outsourcing of MASA functionality, or
rekeying of the IDevID certification authority.</t>
          <t>In <xref target="cosesign"/> further examples of signed PVRs are shown.</t>
        </section>
        <section anchor="signing-of-voucher-by-masa">
          <name>Signing of voucher by MASA</name>
          <t>The MASA SHOULD NOT use a "kid" parameter in the voucher response, because the MASA's signing
key is already known to the Pledge. Still, where needed the MASA MAY use
a "kid" parameter in the voucher response to help the Pledge identify the right MASA public key
to verify against. This can occur for example if a Pledge has multiple IDevID identities.</t>
          <t>The MASA SHOULD NOT include an x5bag attribute in the voucher response - the exception is if the MASA knows
that the Pledge doesn't pre-store the signing public key and certificate, and thus the MASA needs to provide
a cert or cert chain that will enable linking the signing identity to the pre-stored Trust Anchor (CA) in the Pledge.
This approach is not recommended, because including certificates in the x5bag attribute will significantly increase the size of the voucher
which impacts operations on constrained networks.</t>
          <t>If the MASA signing key is based upon a PKI (see <xref target="I-D.richardson-anima-masa-considerations"/> Section 2.3), and the Pledge
only pre-stores a manufacturer (root) CA identity in its Trust Store which is not the identity that signs the voucher,
then a certificate chain needs to be included with the voucher in order for the Pledge to validate the MASA signing CA's signature
by validating the chain up to the CA in its Trust Store.</t>
          <t>In BRSKI CMS signed vouchers <xref target="RFC8995"/>, the CMS structure has a place for such certificates.
In the COSE-signed constrained vouchers described in this document, the x5bag attribute <xref target="RFC9360"/> is used to contain the needed certificates to form the chain.
A Registrar MUST NOT remove the x5bag attribute from the unprotected COSE header parameters when sending the voucher back to the Pledge.</t>
          <t>In <xref target="fig-cose-voucher"/> an example is shown of a COSE-signed voucher. This example shows the common case where the "x5bag" attribute is not used.</t>
          <figure anchor="fig-cose-voucher">
            <name>COSE_Sign1 signed voucher in CBOR diagnostic notation</name>
            <sourcecode type="cbor-diag"><![CDATA[
18(                    / tag for COSE_Sign1                     /
 [
   h'A10126',          / protected COSE header encoding: {1: -7}/
                       /            which means { "alg": ES256 }/
   {},                 / unprotected COSE header parameters     /
   h'A119' ... '3839', / voucher data (binary CBOR)             /
   h'2A2C' ... '7FBF'  / voucher binary Sign1 signature by MASA /
 ]
)
]]></sourcecode>
          </figure>
        </section>
      </section>
    </section>
    <section anchor="discovery">
      <name>Extensions to Discovery</name>
      <t>It is assumed that a Join Proxy (<xref target="joinproxy"/>) seamlessly provides a relayed DTLS connection between the Pledge and the Registrar.
To use a Join Proxy, a Pledge needs to discover it. For Pledge discovery of a Join Proxy, this section extends Section 4.1 of <xref target="RFC8995"/> for the cBRSKI case.</t>
      <t>In general, the Pledge may be one or more hops away from the Registrar, where one hop means the Registrar is a direct link-local neighbor of the Pledge.
The case of one hop away can be considered as a degenerate case, because a Join Proxy is not really needed then.</t>
      <t>The degenerate case would be unusual in constrained wireless network deployments, because a Registrar would typically not have a wireless network interface of the type used for constrained devices. Rather, it would have a high-speed network interface.
Nevertheless, the situation where the Registrar is one hop away from the Pledge could occur in various cases like wired IoT networks or in wireless constrained networks where the Pledge is in radio range of a 6LoWPAN Border Router (6LBR) and the 6LBR happens to host a Registrar.</t>
      <t>In order to support the degenerate case, the Registrar SHOULD announce itself as if it were a Join Proxy -- though it would actually announce its real (stateful) Registrar CoAPS endpoint.
No actual Join Proxy functionality is then required on the Registrar.</t>
      <t>That way, a Pledge only needs to discover a Join Proxy, regardless of whether it is one or more than one hop away from a relevant Registrar. It first discovers the link-local address and the join-port of a Join Proxy. The Pledge then follows the cBRSKI procedure of initiating a DTLS connection using the link-local address and join-port of the Join Proxy.</t>
      <t>Once enrolled, a Pledge itself may function as a Join Proxy.
The decision whether or not to provide this functionality depends upon many factors and is out of scope for this document.
Such a decision might depend upon the amount of energy available to the device, the network bandwidth available, as well as CPU and memory availability.</t>
      <t>The process by which a Pledge discovers the Join Proxy, and how a Join Proxy discovers the location of the Registrar, are the subject of the remainder of this section.
Further details on both these topics are provided in <xref target="I-D.ietf-anima-constrained-join-proxy"/>.</t>
      <section anchor="discovery-operations-by-a-pledge">
        <name>Discovery Operations by a Pledge</name>
        <t>The Pledge must discover the address/port and optionally the protocol with which to communicate. The present document only defines coaps (CoAP over DTLS) as the default protocol for cBRSKI, 
therefore protocol discovery is out of scope.</t>
        <t>For the discovery method, this section only defines unsecured CoAP discovery per <xref section="7" sectionFormat="of" target="RFC7252"/> as the default method. This uses CoRE Link Format <xref target="RFC6690"/> payloads.</t>
        <t><xref target="discovery-considerations"/> briefly mentions other methods that apply to specific deployment types or technologies.
Details about these deployment-specific methods, or yet other methods, new payload formats, or more elaborate CoAP-based methods, may be defined in future documents such as <xref target="I-D.eckert-anima-brski-discovery"/>.
The more elaborate methods for example may include discovering only Join Proxies that support a particular desired onboarding protocol, voucher format, or cBRSKI variant.</t>
        <t>Note that identifying the format of the voucher request and the voucher is currently not a required part of the Pledge's discovery operation.
It is assumed that all Registrars support all relevant voucher(-request) formats, while the Pledge only supports a single format.
A Pledge that makes a voucher request to a Registrar that does not support that format will receive a CoAP 4.06 Not Acceptable status code and the onboarding attempt will fail.</t>
        <t>Using CoAP discovery, a Pledge can discover a Join Proxy by sending a link-local multicast discovery message to the All CoAP Nodes address FF02::FD. Zero, one, or multiple 
Constrained Join Proxies may respond. The handling of multiple responses and absence of responses cases follow the guidelines of Section 4 of <xref target="RFC8995"/>.
The discovery message is a CoAP GET request on the URI path "/.well-known/core" using a URI query "rt=brski.jp". This resource type (rt) is defined 
in <xref section="8.3" sectionFormat="of" target="I-D.ietf-anima-constrained-join-proxy"/>.</t>
        <section anchor="examples">
          <name>Examples</name>
          <t>Below, a typical example is provided showing the Pledge's CoAP request and the Join Proxy's CoAP response. The Join Proxy responds with a link-local
source address, which is the same address as indicated in the URI-reference element (<xref target="RFC6690"/>) in the discovery response payload. The Join
Proxy has a dedicated port 8485 open for DTLS connections of Pledges.</t>
          <artwork><![CDATA[
  REQ: GET coap://[ff02::fd]/.well-known/core?rt=brski.jp

  RES: 2.05 Content
  <coaps://[fe80::c78:e3c4:58a0:a4ad]:8485>;rt=brski.jp
]]></artwork>
          <t>The next example shows a Join Proxy that uses the default CoAPS port 5684 for DTLS connections of Pledges. In this case, the Join Proxy host
is not using port 5684 for any other purposes, so it has the port available for this purpose.</t>
          <artwork><![CDATA[
  REQ: GET coap://[ff02::fd]/.well-known/core?rt=brski.jp

  RES: 2.05 Content
  <coaps://[fe80::c78:e3c4:58a0:a4ad]>;rt=brski.jp
]]></artwork>
          <t>In the following example, two Join Proxies respond to the multicast query. The Join Proxies each use a slightly different CoRE Link Format
'rt' value encoding. While the first encoding is more compact, both encodings are allowed per <xref target="RFC6690"/>. The Pledge may now select one of the
two Join Proxies for initiating its DTLS connection.</t>
          <artwork><![CDATA[
  REQ: GET coap://[ff02::fd]/.well-known/core?rt=brski*

  RES: 2.05 Content
  <coaps://[fe80::c78:e3c4:58a0:a4ad]:8485>;rt=brski.jp

  RES: 2.05 Content
  <coaps://[fe80::d359:3813:f382:3b23]:63245>;rt="brski.jp"
]]></artwork>
        </section>
      </section>
      <section anchor="discovery-operations-by-a-join-proxy">
        <name>Discovery Operations by a Join Proxy</name>
        <t>A Join Proxy needs to discover a Registrar, either at the moment it needs to relay data (of a Pledge) towards the Registrar, or prior to that moment. For example, it may start Registrar 
discovery as soon as it is requested to be enabled in a Join Proxy role. It may periodically redo this discovery, or periodically or on-demand check that the Registrar is still available 
in the network at the discovered IP address.</t>
        <t>Further details on CoAP discovery of the Registrar by a Join Proxy are provided in <xref section="5.1.1" sectionFormat="of" target="I-D.ietf-anima-constrained-join-proxy"/>.</t>
      </section>
    </section>
    <section anchor="discovery-considerations">
      <name>Deployment-specific Discovery Considerations</name>
      <t>This section details how discovery of a Join Proxy is done by the Pledge in specific deployment scenarios.
Future work such as <xref target="I-D.eckert-anima-brski-discovery"/> may define more details on discovery operations in 
the specific deployments listed here.</t>
      <section anchor="tisch-deployments">
        <name>6TiSCH Deployments</name>
        <t>In 6TiSCH networks, the Constrained Join Proxy (CoJP) mechanism is used as described in <xref target="RFC9031"/>.
Such networks are expected to use <xref target="I-D.ietf-lake-edhoc"/> for key management.
This is the subject of future work.
The Enhanced Beacon has been extended in <xref target="RFC9032"/> to allow for discovery of a 6TiSCH-compliant Join Proxy.</t>
      </section>
      <section anchor="ip-networks-using-grasp">
        <name>IP networks using GRASP</name>
        <t>In IP networks that support GRASP <xref target="RFC8990"/>, a Pledge can discover a Join Proxy by listening for GRASP messages.
GRASP supports mesh networks, and can also be used over unencrypted Wi-Fi.</t>
        <t>Details of GRASP discovery of Constrained Join Proxies are out of scope of this document and may be defined in 
future work.</t>
      </section>
      <section anchor="ip-networks-using-mdns">
        <name>IP networks using mDNS</name>
        <t><xref target="RFC8995"/> defines a mechanism for the Pledge to discover a Join Proxy by sending mDNS <xref target="RFC6762"/> queries.
This mechanism can be used on any IP network which does not have another recommended mechanism.
It can be used over unencrypted Wi-Fi.
This mechanism does support link-local Join Proxy discovery in mesh networks. However, it does not support Registrar
discovery by Join Proxies in mesh networks, because the Registrar is typically not reachable by link-local communication
in that case. For this, another mechanism is needed, which is out of scope of this document and may be defined in 
future work.</t>
        <t>A Pledge uses an mDNS PTR query for the name "_brski-proxy._udp.local." to discover link-local Constrained Join Proxies.
The label "_udp" here indicates a query for cBRSKI Constrained Join Proxies, as opposed to "_tcp" defined in <xref target="RFC8995"/> which is for discovering 
BRSKI Join Proxies.</t>
      </section>
      <section anchor="thread-networks-using-mesh-link-establishment-mle">
        <name>Thread networks using Mesh Link Establishment (MLE)</name>
        <t>Thread <xref target="Thread"/> is a wireless mesh network protocol based on 6LoWPAN <xref target="RFC6282"/> and other IETF protocols. In Thread, a new device
discovers potential Thread networks and Thread routers to join by using the Mesh Link Establishment (MLE) <xref target="I-D.ietf-6lo-mesh-link-establishment"/> protocol.
MLE uses the UDP port number 19788. The new device sends discovery requests on different IEEE 802.15.4 radio channels, to which routers (if any present) respond with a discovery response containing information about
their respective network. Once a suitable router is selected the new device initiates a DTLS transport-layer secured connection to the network's commissioning application, over a link-local single radio hop to the selected
Thread router. This link is not yet secured at the radio/MAC link layer: link-layer security will be set up once the new device is approved by the commissioning application to join the Thread network, and it gets provisioned with
network access credentials.</t>
        <t>The Thread router acts here as a Join Proxy. The MLE discovery response message contains UDP port information to signal the new device which port to use for its DTLS connection to the Join Proxy function.
The link-local IPv6 source address of the MLE response message indicates the address of the Join Proxy.</t>
      </section>
    </section>
    <section anchor="design-considerations">
      <name>Design and Implementation Considerations</name>
      <section anchor="voucher-format-and-encoding">
        <name>Voucher Format and Encoding</name>
        <t>The design considerations for vouchers from <xref section="8" sectionFormat="of" target="RFC8366bis"/> apply. Specifically for CBOR encoding of voucher data,
one key difference with JSON encoding is that the names of the leaves in the YANG definition do not affect the size of the resulting CBOR, as the SID (<xref target="I-D.ietf-core-sid"/>) translation process assigns integers to the names.</t>
        <t>To obtain the lowest code size and RAM use on the Pledge, it is recommended that a Pledge is designed to only process/generate these SID integers and not the lengthy strings. The MASA in that case
is required to generate the voucher data for that Pledge using only SID integers. Yet, this MASA implementation MUST still support both SID integers and strings, to be able to process the field names in the RVR.</t>
        <t>Any POST request to the Registrar with resource /vs or /es returns a 2.04 Changed response with empty payload. The client should be aware that the server may use a piggybacked CoAP response (ACK, 2.04) but may also respond with a separate CoAP response, i.e. first an (ACK, 0.0) that is an acknowledgement of the request reception followed by a (CON, 2.04) response in a separate CoAP message. See <xref target="RFC7252"/> for details.</t>
      </section>
      <section anchor="use-of-cbrski-with-https">
        <name>Use of cBRSKI with HTTPS</name>
        <t>This specification contains two extensions to <xref target="RFC8995"/>: a constrained voucher format (COSE), and a constrained transfer protocol (CoAP).</t>
        <t>On constrained networks with constrained devices, it make senses to use both together.
However, this document does not mandate that this be the only way.</t>
        <t>A given constrained device design and software may be re-used for multiple device models, such as a model having only an IEEE 802.15.4 radio, or a model
having only an IEEE 802.11 (Wi-Fi) radio, or a model having both these radios.
A manufacturer of such device models may wish to have code only for the use of the constrained voucher format (COSE), and use it on all supported radios
including the IEEE 802.11 radio. For this radio, the software stack to support HTTP/TLS may be already integrated into the radio module hence it is
attractive for the manufacturer to reuse this. This type of approach is supported by this document.
In the case that HTTPS is used, the regular long <xref target="RFC8995"/> resource names are used, together with the new "application/voucher+cose" media type described in this document.
For status telemetry requests, the Pledge may use either one or both of the formats defined in <xref target="telemetry"/>. A Registrar MUST support both formats.</t>
        <t>Other combinations are possible, but they are not enumerated here.
New work such as <xref target="I-D.ietf-anima-jws-voucher"/> provides new formats that may be useable over a number of different transports.
In general, sending larger payloads over constrained networks makes less sense,
while sending smaller payloads over unconstrained networks is perfectly acceptable.</t>
        <t>The Pledge will in most cases support a single voucher format, which it uses without negotiation i.e. without discovery of formats supported.
The Registrar, being unconstrained, is expected to support all voucher formats.
There will be cases where a Registrar does not support a new format that a new Pledge uses, and this is an unfortunate situation that will result in lack of interoperation.</t>
        <t>The responsability for supporting new formats is on the Registrar.</t>
      </section>
    </section>
    <section anchor="rpk-considerations">
      <name>Raw Public Key Variant</name>
      <section anchor="introduction-and-scope">
        <name>Introduction and Scope</name>
        <t>This section introduces a cBRSKI variant to further reduce the data volume and complexity of the cBRSKI onboarding.
The use of a raw public key (RPK) in the pinning process can significantly reduce the number of bytes sent over the wire and the number of round trips, and reduce the code footprint in a Pledge.
But it comes with a few significant operational limitations.</t>
        <t>One simplification that comes with RPK use is that a Pledge can avoid doing PKIX certificate operations, such as certificate chain validation.</t>
      </section>
      <section anchor="the-registrar-trust-anchor">
        <name>The Registrar Trust Anchor</name>
        <t>When the Pledge first connects to the Registrar, the connection to the Registrar is provisional, as explained in <xref section="5.6.2" sectionFormat="of" target="RFC8995"/>.
The Registrar normally provides its public key in a TLSServerCertificate, and the Pledge uses that to validate that integrity of the (D)TLS connection, but it does not validate the identity of
the provided certificate.</t>
        <t>As the TLSServerCertificate object is never verified directly by the Pledge, sending it can be considered superfluous.
So instead of using a (TLSServer)Certificate of type X509 (see section 4.4.2 of <xref target="RFC8446"/>),
a RawPublicKey object (as defined by <xref target="RFC7250"/>) is used.</t>
        <t>A Registrar operating in a mixed environment can determine whether to send a Certificate or a Raw Public Key to the Pledge: this is signaled by the Pledge. In the case it needs an RPK, it
includes the server_certificate_type of RawPublicKey. This is shown in section 5 of <xref target="RFC7250"/>.</t>
        <t>The Pledge MUST send a client_certificate_type of X509 (not an RPK), so that the Registrar can properly identify the Pledge and distill the MASA URI information from its IDevID certificate.</t>
      </section>
      <section anchor="the-pledge-voucher-request">
        <name>The Pledge Voucher Request</name>
        <t>The Pledge puts the Registrar's public key into the proximity-registrar-pubk field of the Pledge Voucher Request (PVR).
(The proximity-registrar-pubk-sha256 can alternatively be used for efficiency, if the 32-bytes of a SHA256 hash turns out to be smaller than a typical ECDSA key.)</t>
        <t>As the format of this pubk field is identical to the TLS RawPublicKey data object, no manipulation at all is needed to insert this field into the PVR.
This approach reduces the size of the PVR significantly.</t>
      </section>
      <section anchor="the-voucher-response">
        <name>The Voucher Response</name>
        <t>A returned voucher will have a pinned-domain-pubk field with the identical key as was found in the proximity-registrar-pubk field above, as well as being identical to the
Registrar's RPK in the currently active DTLS connection.
(Or alternatively the MASA may include the "pinned-domain-pubk-sha256" field if it knows the Pledge supports this field.)</t>
        <t>Validation of this key by the Pledge is what takes the DTLS connection out of the provisional state; see <xref section="5.6.2" sectionFormat="of" target="RFC8995"/> for more details.</t>
        <t>The received voucher needs to be validated first by the Pledge.
The Pledge needs to have a public key to validate the signature from the MASA on the voucher.</t>
        <t>The MASA's public key counterpart of the (private) MASA signing key MUST be already installed in the Pledge at manufacturing time. Otherwise, the Pledge
cannot validate the voucher's signature.</t>
      </section>
      <section anchor="the-enrollment-phase">
        <name>The Enrollment Phase</name>
        <t>A Pledge that does not support PKIX operations cannot use EST to enroll; it has to use
another method for enrollment without certificates and the Registrar has to support this method also. For example, an enrollment process that 
records an RPK owned by the Pledge as a legitimate entity that is part of the domain.</t>
        <t>It is possible that the Pledge will not enroll after obtaining a valid voucher, but instead will do only a network join operation (see for example <xref target="RFC9031"/>).
How the Pledge discovers this method and details of such enrollment methods are out of scope of this document.</t>
      </section>
    </section>
    <section anchor="pledge-discovery-on-registrar">
      <name>Pledge Discovery of Onboarding and Enrollment Options</name>
      <t>The functionality in this section is optional for a Pledge to implement. In typical cases, for a constrained Pledge that only supports a single onboarding and 
enrollment method, this functionality is not needed.</t>
      <section anchor="pledge-discovery-query-for-all-brski-resources">
        <name>Pledge Discovery Query for All BRSKI Resources</name>
        <t>A Pledge that wishes to discover the available BRSKI onboarding options/formats can do a discovery
operation using CoAP discovery per <xref section="7" sectionFormat="of" target="RFC7252"/> and <xref section="4" sectionFormat="of" target="RFC6690"/>. It first sends a CoAP discovery query to the Registrar over the secured DTLS connection.
The Registrar then responds with a CoRE Link Format payload containing the requested resources, if any.</t>
        <t>For example, if the Registrar supports a short BRSKI URL (/b) instead of just the longer "/.well-known" resources, and supports only the voucher format 
"application/voucher+cose" (836), and status reporting in both CBOR and JSON formats,
a CoAP resource discovery request and response may look as follows:</t>
        <artwork><![CDATA[
  REQ: GET /.well-known/core?rt=brski*

  RES: 2.05 Content
  Content-Format: 40
  Payload:
  </b>;rt=brski,
  </b/rv>;rt=brski.rv;ct=836,
  </b/vs>;rt=brski.vs;ct="50 60",
  </b/es>;rt=brski.es;ct="50 60"
]]></artwork>
        <t>The Registrar is under no obligation to provide shorter URLs, and MAY respond to this query with only the "/.well-known/brski/&lt;short-name&gt;" resources for the short names as defined in
<xref target="brski-est-short-uri"/>. This case is shown in the below interaction:</t>
        <artwork><![CDATA[
  REQ: GET /.well-known/core?rt=brski*

  RES: 2.05 Content
  Content-Format: 40
  Payload:
  </.well-known/brski>;rt=brski,
  </.well-known/brski/rv>;rt=brski.rv;ct=836,
  </.well-known/brski/vs>;rt=brski.vs;ct="50 60",
  </.well-known/brski/es>;rt=brski.es;ct="50 60"
]]></artwork>
        <t>However, for efficiency reasons it would be better if the Registrar would return shorter URLs instead.</t>
        <t>When responding to a discovery request for BRSKI resources, the Registrar MAY return 
the full resource paths for all &lt;short-name&gt; resources and the content types which are supported by these resources (using ct attributes) as shown in the above examples.
This is useful when multiple content types are specified for a particular resource on the Registrar and the discovering Pledge also supports multiple.</t>
        <t>Registrars that have implemented shorter URLs MUST process a request on the corresponding "/.well-known/brski/&lt;short-name&gt;" URL identically.
In particular, a Pledge MAY use the longer (well-known) and shorter URLs in any combination.</t>
      </section>
      <section anchor="pledge-discovery-query-for-the-root-brski-resource">
        <name>Pledge Discovery Query for the Root BRSKI Resource</name>
        <t>In case the client queries for only rt=brski type resources, the Registrar responds with only the root path for the BRSKI resources (rt=brski, resource /b in earlier examples) and no others.
(So, a query for rt=brski, without the wildcard character.) This is shown in the below example. The Pledge in this case requests only the BRSKI root resource of type rt=brski to check if BRSKI is 
supported by the Registrar and if short names are supported or not. In this case, the Pledge is not interested to check what voucher request formats, or status telemetry formats -- 
other than the mandatory default formats -- are supported. The compact response then shows that the Registrar indeed supports a short-name BRSKI resource at /b:</t>
        <artwork><![CDATA[
  REQ: GET /.well-known/core?rt=brski

  RES: 2.05 Content
  Content-Format: 40
  Payload:
  </b>;rt=brski
]]></artwork>
        <t>The Pledge can now start using any of the BRSKI resources /b/&lt;short-name&gt;. 
In above example, the well-known resource present under /.well-known/brski is not returned because this is assumed to be well-known to the Pledge and would not require discovery anyway.</t>
        <t>As a follow-up example, the Pledge can now start the onboarding by sending its PVR:</t>
        <artwork><![CDATA[
  REQ: POST /b/rv
  Content-Format: 836
  Accept: 836
  Payload: (binary COSE-signed PVR)
]]></artwork>
      </section>
      <section anchor="usage-of-ct-attribute">
        <name>Usage of ct Attribute</name>
        <t>The return of multiple content-types in the "ct" attribute by the Registrar allows the Pledge to choose the most appropriate one for a particular operation, and allows extension with new voucher formats.
Note that only Content-Format 836 ("application/voucher+cose") is defined in this document for the voucher request resource (/rv), both as request payload and as response payload.</t>
        <t>Content-Format 836 MUST be supported by the Registrar for the /rv resource.
If the "ct" attribute is not indicated for the /rv resource in the CoRE link format description, this implies that at least format 836 is supported and maybe more.</t>
        <t>Note that this specification allows for voucher+cose format requests and vouchers to be transmitted over HTTPS, as well as for voucher-cms+json and other formats yet to be defined over CoAP.
The burden for this flexibility is placed upon the Registrar.
A Pledge on constrained hardware is expected to support a single format only.</t>
        <t>The Pledge and MASA need to support one or more formats (at least format 836) for the voucher and for the voucher request.
The MASA needs to support all formats that the Pledge supports.</t>
        <t>In the below example, a Pledge queries specifically for the brski.rv resource type to learn what voucher formats are supported:</t>
        <artwork><![CDATA[
  REQ: GET /.well-known/core?rt=brski.rv

  RES: 2.05 Content
  Content-Format: 40
  Payload:
  </b/rv>;rt=brski.rv;ct="836 65123 65124"
]]></artwork>
        <t>The Registrar returns 3 supported voucher formats: 836, 65123, and 65124. The first is the mandatory "application/voucher+cose". The other two are numbers from the Experimental Use number range 
of the CoAP Content-Formats sub-registry, which are used as mere examples. The Pledge can now make a selection between the supported formats.</t>
        <t>Note that if the Registrar only supports the default Content-Formats for each BRSKI resource as specified by this document, it may also omit the ct attributes in the discovery query response.
For example as in the following interaction:</t>
        <artwork><![CDATA[
  REQ: GET /.well-known/core?rt=brski*

  RES: 2.05 Content
  Content-Format: 40
  Payload:
  </b>;rt=brski,
  </b/rv>;rt=brski.rv,
  </b/vs>;rt=brski.vs,
  </b/es>;rt=brski.es
]]></artwork>
      </section>
      <section anchor="est-coaps-resource-discovery">
        <name>EST-coaps Resource Discovery</name>
        <t>The Pledge can also use CoAP discovery to identify enrollment options, for example enrollment using EST-coaps or other methods.
The below example shows a Pledge that wants to identify EST-coaps enrollment options by sending a discovery query:</t>
        <artwork><![CDATA[
  REQ: GET /.well-known/core?rt=ace.est*

  RES: 2.05 Content
  Content-Format: 40
  Payload:
  </e/crts>;rt=ace.est.crts;ct="62 281 287",
  </e/sen>;rt=ace.est.sen;ct="281 287",
  </e/sren>;rt=ace.est.sren;ct="281 287",
  </e/att>;rt=ace.est.att,
  </e/skg>;rt=ace.est.skg,
  </e/skc>;rt=ace.est.skc
]]></artwork>
        <t>The response indicates that EST-coaps enrollment (/sen) and re-enrollment (/sren) is supported, with a choice of two Content-Formats for the return payload:
either a PKCS#7 container with a single LDevID certificate ("application/pkcs7-mime;smime-type=certs-only", content-format 281) or just a single LDevID certificate ("application/pkix-cert", content-format 287).</t>
        <t>For the EST cacerts resources (/crts) there are three Content-Formats supported: a multipart-core container (62) per <xref target="multipart-core"/>, a PKCS#7 container with all CA certificates (287), or a single (most relevant) CA certificate.</t>
        <t>The Pledge can now send a CoAP request to one or more of the discovered resources, with the Accept Option to indicate which return payload format the Pledge wants to receive.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <section anchor="duplicate-serial-numbers">
        <name>Duplicate serial-numbers</name>
        <t>In the absense of correct use of idevid-issuer by the Registrar as detailed in <xref target="registrar-idevid-issuer"/>, it would be possible for a malicious Registrar to use an unauthorized voucher for a device.
This would apply only to the case where a Manufacturer Authorized Signing Authority (MASA) is trusted by different products from the same manufacturer, and the manufacturer has duplicated serial numbers as a result of a merge, acquisition or mis-management.</t>
        <t>For example, imagine the same manufacturer makes light bulbs as well as gas centrifuges,
and said manufacturer does not uniquely allocate product serial numbers.
This attack only works for nonceless vouchers.
The attacker has obtained a light bulb which happens to have the same serial-number as a gas centrofuge which it wishes to obtain access.
The attacker performs a normal BRSKI onboarding for the light bulb, but then uses the resulting voucher to onboard the gas centrofuge.
The attack requires that the gas centrofuge be returned to a state where it is willing to perform a new onboarding operation.</t>
        <t>This attack is prevented by the mechanism of having the Registrar include the idevid-issuer in the RVR, and the MASA including it in the resulting voucher.
The idevid-issuer is not included by default: a MASA needs to be aware if there are parts of the organization which duplicates serial numbers, and if so, include it.</t>
      </section>
      <section anchor="idevid-security-in-pledge">
        <name>IDevID security in Pledge</name>
        <t>The security of this protocol depends upon the Pledge identifying itself to the Registrar using it's manufacturer installed certificate: the IDevID certificate.
Associated with this certificate is the IDevID private key, known only to the Pledge.
Disclosure of this private key to an attacker would permit the attacker to impersonate the Pledge towards the Registrar, probably gaining access credentials to that Registrar's network.</t>
        <t>If the IDevID private key disclosure is known to the manufacturer, there is little recourse other than recall of the relevant part numbers.
The process for communicating this recall would be within the BRSKI-MASA protocol.
Neither this specification nor <xref target="RFC8995"/> provides for consultation of a Certification Revocation List (CRL) or Open Certificate Status Protocol (OCSP) by a Registrar when evaluating an IDevID certificate.
However, the BRSKI-MASA protocol submits the IDevID from the Registrar to the manufacturer's MASA and a manufacturer would have an opportunity to decline to issue a voucher for a device which they believe has become compromised.</t>
        <t>It may be difficult for a manufacturer to determine when an IDevID private key has been disclosed.
Two situations present themselves: in the first situation a compromised private key might be reused in a counterfeit device, which is sold to another customer.
This would present itself as an onboarding of the same device in two different networks.
The manufacturer may become suspicious seeing two voucher requests for the same device from different Registrars.
Such activity could be indistinguishable from a device which has been resold from one operator to another, or re-deployed by an operator from one location to another.</t>
        <t>In the second situation, an attacker having compromised the IDevID private key of a device might then install malware into the same device and attempt to return it to service.
The device, now blank, would go through a second onboarding process with the original Registrar.
Such a Registrar could notice that the device has been "factory reset" and alert the operator to this situation.
One remedy against the presence of malware is through the use of Remote Attestation such as described in <xref target="I-D.ietf-rats-architecture"/>.
Future work will need to specify a background-check Attestation flow as part of the voucher-request/voucher-response process.
Attestation may still require access to a private key (e.g. IDevID private key) in order to sign Evidence, so a primary goal should be to keep any private key safe within the Pledge.</t>
        <t>In larger, more expensive, systems there is budget (power, space, and bill of materials) to include more specific defenses for a private key.
For instance, this includes putting the IDevID private key in a Trusted Platform Module (TPM), or use of Trusted Execution Environments (TEE) for access to the key.
On smaller IoT devices, the cost and power budget for an extra part is often prohibitive.</t>
        <t>It is becoming more and more common for CPUs to have an internal set of one-time fuses that can be programmed (often they are "burnt" by a laser) at the factory.
This section of memory is only accessible in some priviledged CPU state.
The use of this kind of CPU is appropriate as it provides significant resistance against key disclosure even when the device can be disassembled by an attacker.</t>
        <t>In a number of industry verticals, there is increasing concern about counterfeit parts.
These may be look-alike parts created in a different factory, or parts which are created in the same factory during an illegal night-shift, but which are not subject to the appropriate level of quality control.
The use of a manufacturer-signed IDevID certificate provides for discovery of the pedigree of each part, and this often justifies the cost of the security measures associated with storing the private key.</t>
      </section>
      <section anchor="security-of-coap-and-udp-protocols">
        <name>Security of CoAP and UDP protocols</name>
        <t><xref target="brski-masa-protocol-format"/> explains that no CoAPS version of the BRSKI-MASA protocol is proposed.
The connection from the Registrar to the MASA continues to be HTTPS as in <xref target="RFC8995"/>.
This has been done to simplify the MASA deployment for the manufacturer, because no new protocol needs to be enabled on the server.</t>
        <t>The use of UDP protocols across the open Internet is sometimes fraught with security challenges.
Denial-of-service attacks against UDP based protocols are trivial as there is no three-way handshake as done for TCP.
The three-way handshake of TCP guarantees that the node sending the connection request is reachable using the origin IP address.
While DTLS contains an option to do a stateless challenge -- a process actually stronger than that done by TCP -- it is not yet common for this mechanism to be available in hardware at multigigabit speeds.
It is for this reason that this document defines using HTTPS for the Registrar to MASA connection.</t>
      </section>
      <section anchor="registrar-certificate-may-be-self-signed">
        <name>Registrar Certificate may be self-signed</name>
        <t>The provisional (D)TLS connection formed by the Pledge with the Registrar does not authenticate the Registrar's identity.
This Registrar's identity is validated by the <xref target="RFC8366bis"/> voucher that is issued by the MASA, signed with an anchor that was built-in to the Pledge.</t>
        <t>The Registrar may therefore use any certificate, including a self-signed one.
The only restrictions on the certificate is that it MUST have EKU bits set as detailed in <xref target="registrar-certificate-requirement-server"/> and <xref target="registrar-certificate-requirement-client"/>.</t>
      </section>
      <section anchor="use-of-rpk-alternatives-to-proximity-registrar-cert">
        <name>Use of RPK alternatives to proximity-registrar-cert</name>
        <t>In <xref section="voucher-request-artifact" sectionFormat="comma" target="RFC8366bis"/> two compact alternative fields for proximity-registrar-cert are defined that include an RPK: proximity-registrar-pubk and proximity-registrar-pubk-sha256.
The Pledge can use these fields in its PVR to identify the Registrar based on its public key only. Since the full certificate of the proximate Registrar is not included, use of these fields
by a Pledge implies that a Registrar could insert another certificate with the same public key identity into the RVR. For example, an older or a newer version of its certificate.
The MASA will not be able to detect such act by the Registrar. But since any 'other' certificate the Registrar could insert in this way still encodes its identity the additional risk
of using the RPK alternatives is neglible.</t>
        <t>When a Registrar sees a PVR that uses one of proximity-registrar-pubk or proximity-registrar-pubk-sha256 fields, this implies the Registrar must include the certificate identified by these fields into its RVR.
Otherwise, the MASA is unable to verify proximity. This requirement is already implied by the "MUST" requirement in <xref target="registrar-identity"/>.</t>
      </section>
      <section anchor="security-masa-coaps">
        <name>MASA support of CoAPS</name>
        <t>The use of CoAP for the BRSKI-MASA connection is not in scope of the current document.
The following security considerations have led to this choice of scope:</t>
        <ul spacing="normal">
          <li>
            <t>the technology and experience to build secure Internet-scale HTTPS responders (which the MASA is) is common, while the experience in doing the same for CoAP is much less common.</t>
          </li>
          <li>
            <t>in many enterprise networks, outgoing UDP connections are often treated as suspicious, which could effectively block CoAP connections for some firewall configurations.</t>
          </li>
          <li>
            <t>reducing the complexity of MASA (i.e. less protocols supported) would also reduce its potential attack surface, which is relevant since the MASA is 24/7 exposed on the Internet and accepting (untrusted) incoming connections.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="resource-type-link-target-attribute-values-registry">
        <name>Resource Type Link Target Attribute Values Registry</name>
        <t>Additions to the sub-registry "Resource Type Link Target Attribute Values", within the "CoRE Parameters" IANA registry are specified below.</t>
        <t>Reference: [This RFC]</t>
        <table anchor="iana-core-rt-values">
          <name>Resource Type (rt) link target attribute values for IANA registration</name>
          <thead>
            <tr>
              <th align="left">Attribute</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">brski</td>
              <td align="left">Root path of Bootstrapping Remote Secure Key Infrastructure (BRSKI) resources</td>
            </tr>
            <tr>
              <td align="left">brski.rv</td>
              <td align="left">BRSKI request voucher resource</td>
            </tr>
            <tr>
              <td align="left">brski.vs</td>
              <td align="left">BRSKI voucher status telemetry resource</td>
            </tr>
            <tr>
              <td align="left">brski.es</td>
              <td align="left">BRSKI enrollment status telemetry resource</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="media-types-registry">
        <name>Media Types Registry</name>
        <t>This section registers the media type "application/voucher+cose" in the IANA "Media Types" registry.
This media type is used to indicate that the content is a CBOR voucher or voucher request
signed with a COSE_Sign1 structure <xref target="RFC9052"/>.</t>
        <section anchor="applicationvouchercose">
          <name>application/voucher+cose</name>
          <artwork><![CDATA[
Type name:  application
Subtype name:  voucher+cose
Required parameters:  N/A
Optional parameters:  N/A
Encoding considerations:  binary (CBOR)
Security considerations:  Security Considerations of [This RFC].
Interoperability considerations:  The format is designed to be
  broadly interoperable.
Published specification:  [This RFC]
Applications that use this media type:  ANIMA, 6TiSCH, and other
  zero-touch onboarding systems
Fragment identifier considerations: N/A
Additional information:
  Deprecated alias names for this type: N/A
  Magic number(s):  N/A
  File extension(s):  .vch
  Macintosh file type code(s):  N/A
Person & email address to contact for further information:  IETF
  ANIMA Working Group (anima@ietf.org) or IETF Operations and
  Management Area Working Group (opsawg@ietf.org)
Intended usage:  COMMON
Restrictions on usage:  N/A
Author:  ANIMA WG
Change controller:  IETF
Provisional registration? (standards tree only):  NO
]]></artwork>
        </section>
      </section>
      <section anchor="coap-content-format-registry">
        <name>CoAP Content-Format Registry</name>
        <t>IANA has allocated ID 836 from the sub-registry "CoAP Content-Formats".</t>
        <artwork><![CDATA[
Media type                     Encoding   ID   Reference
-----------------------------  --------- ----  ----------
application/voucher+cose       -          836  [This RFC]
]]></artwork>
        <t>IANA Note (to be removed by RFC editor): the TEMPORARY registration of 836 is made under the old name of "application/voucher-cose+cbor".</t>
      </section>
      <section anchor="iana-brski-param-registry">
        <name>Update to BRSKI Parameters Registry</name>
        <t>This section updates the BRSKI Well-Known URIs sub-registry of the IANA Bootstrapping Remote Secure Key Infrastructures (BRSKI) Parameters Registry
by adding a new column "Short URI". The contents of this field MUST be specified for any newly registered URI as follows:</t>
        <t>Short URI: A short name for the "URI" resource that can be used by a cBRSKI ([This RFC]) Pledge in a CoAP request to the Registrar. In case the "URI" resource is only used between Registrar and MASA, the value "--" is registered denoting that a short name is not applicable.</t>
        <t>The initial contents of the sub-registry including the new column are as follows:</t>
        <table anchor="brski-wellknown-uri">
          <name>Update of the BRSKI Well-Known URI Sub-Registry</name>
          <thead>
            <tr>
              <th align="left">URI</th>
              <th align="left">Short URI</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">requestvoucher</td>
              <td align="left">rv</td>
              <td align="left">Request voucher: Pledge to Registrar, and Registrar to MASA</td>
              <td align="left">
                <xref target="RFC8995"/>, [This RFC]</td>
            </tr>
            <tr>
              <td align="left">voucher_status</td>
              <td align="left">vs</td>
              <td align="left">Voucher status telemetry: Pledge to Registrar</td>
              <td align="left">
                <xref target="RFC8995"/>, [This RFC]</td>
            </tr>
            <tr>
              <td align="left">requestauditlog</td>
              <td align="left">--</td>
              <td align="left">Request audit log: Registrar to MASA</td>
              <td align="left">
                <xref target="RFC8995"/></td>
            </tr>
            <tr>
              <td align="left">enrollstatus</td>
              <td align="left">es</td>
              <td align="left">Enrollment status telemetry: Pledge to Registrar</td>
              <td align="left">
                <xref target="RFC8995"/>, [This RFC]</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="structured-syntax-suffixes-registry">
        <name>Structured Syntax Suffixes Registry</name>
        <t>This section registers the "+cose" suffix in the IANA Structured Syntax Suffixes Registry based on the <xref target="RFC6838"/> procedure.</t>
        <artwork><![CDATA[
Name:       CBOR Object Signing and Encryption (COSE) object   
+suffix:    +cose
References: the "application/cose" media type [RFC9052]
Encoding considerations: binary (CBOR)
Interoperability considerations:
  the "application/cose" media type has an optional parameter 
  "cose-type". Any new media type that uses the +cose suffix
  and allows use of this parameter MUST specify this 
  explicitly, per Section 4.3 of [RFC6838]. If the parameter 
  "cose-type" is allowed, its usage MUST be identical to the 
  usage defined for the "application/cose" media type in 
  Section 2 of [RFC9052]. 
  A COSE processor handling a media type "foo+cose" and which
  does not know the specific type "foo" SHOULD use the 
  cose-type tag, if present, or cose-type parameter, if 
  present, to determine the specific COSE object type during  
  processing. If the specific type cannot be determined, 
  it MUST assume only the generic COSE object structure and 
  it MUST NOT perform security-critical operations using the 
  COSE object.
Fragment identifier considerations: N/A
Security considerations: see [RFC9052]
Contact:   
  IETF COSE Working Group (cose@ietf.org) or IESG 
  (iesg@ietf.org)
Author/Change controller: 
  IETF ANIMA Working Group (anima@ietf.org).
  IESG has change control over this registration.
]]></artwork>
      </section>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>We are very grateful to   <contact initials="J." surname="Schaad" fullname="Jim Schaad"/>
 for explaining COSE/CMS choices and for correcting early versions of the COSE_Sign1 objects.
</t>
      <t>
  <contact initials="M." surname="Veillette" fullname="Michel Veillette"/>
 did extensive work on _pyang_ to extend it to support the SID allocation process, and this document was among its first users.
</t>
      <t>
  <contact initials="R." surname="Housley" fullname="Russ Housley"/>
,   <contact initials="D." surname="Franke" fullname="Daniel Franke"/>
,   <contact initials="H." surname="Birkholtz" fullname="Henk Birkholtz"/>
, 
  <contact initials="K." surname="Moriarty" fullname="Kathleen Moriarty"/>
,   <contact initials="X." surname="Liu" fullname="Xufeng Liu"/>

and   <contact initials="C." surname="Moberg" fullname="Karl Moberg"/>
 provided review feedback.
</t>
      <t>
The BRSKI design team has met on many Tuesdays and Thursdays for document review. The team includes:   <contact initials="A." surname="Schellenbaum" fullname="Aurelio Schellenbaum"/>
,   <contact initials="D." surname="von Oheimb" fullname="David von Oheimb"/>
,   <contact initials="S." surname="Fries" fullname="Steffen Fries"/>
,   <contact initials="T." surname="Werner" fullname="Thomas Werner"/>
 and   <contact initials="T." surname="Eckert" fullname="Toerless Eckert"/>
.
</t>
      <t>
  <contact initials="D." surname="Miller" fullname="Darrel Miller"/>
,   <contact initials="O." surname="Steele" fullname="Orie Steele"/>
 and   <contact initials="M." surname="Sporny" fullname="Manu Sporny"/>
 provided review feedback on the registration of the +cose structured syntax suffix.
</t>
    </section>
    <section anchor="changelog">
      <name>Changelog</name>
      <t>-24:
    Rephrased well-known URL requirement in 14.1 (#292, #293);
    Added paragraph on future certificate formats like C509 (#281, #294);
    Add formal specification for CoAP discovery of Join Proxy by Pledge, instead of only showing examples (#296, #300);
    Enable mDNS discovery of Join Proxy by Pledge (also in mesh networks) and list service name to use (#297, #299);
    Add requirement to support Content-Format 287 in /sen and /sren response (#295, #298).</t>
      <t>-23:   <br/>
    Removed Update tag for RFC 8366 (#285, #288); 
    Introduced cBRSKI acronym (#284, #286); 
    Added Update tag for RFC 9148 (#283, #289); 
    Keep CoAP discovery as only mechanism and refer to future discovery work (#279, #282, #290); 
    Introduce formal CBOR diagnostics ellipsis elision syntax (#281, #287); 
    Support for multi-tier CAs by introducing multipart-core /crts format (#275, #291); 
    Terminology updated for consistency with RFC 8366-bis (#274, #280); 
    Rename voucher media type to application/voucher+cose and register +cose SSS (#264, #277); 
    Editorial changes including section restructuring.</t>
      <t>-22:  <br/>
    Streamlined text to focus mostly on the default flow, with optional functions moved to their own sections (#269, #273);
    For DTLS 1.3 client, use the record_size_limit extensions RFC 8449 (#270);
    Editorial updates; 
    Reference rfc6125bis updated to RFC 9525.</t>
      <t>-11 to -21: <br/>
    (For change details see GitHub issues https://github.com/anima-wg/constrained-voucher/issues , related Pull Requests and commits.)</t>
      <t>-10: <br/>
    Design considerations extended; Examples made consistent.</t>
      <t>-08: <br/>
    Examples for cose_sign1 are completed and improved.</t>
      <t>-06: <br/>
    New SID values assigned; regenerated examples.</t>
      <t>-04: <br/>
    voucher and request-voucher MUST be signed; 
    examples for signed request are added in appendix; 
    IANA SID registration is updated; 
    SID values in examples are aligned; 
    signed cms examples aligned with new SIDs.</t>
      <t>-03: <br/>
    Examples are inverted.</t>
      <t>-02: <br/>
    Example of requestvoucher with unsigned appllication/cbor is added; 
    attributes of voucher "refined" to optional; 
    CBOR serialization of vouchers improved; 
    Discovery port numbers are specified.</t>
      <t>-01:    <br/>
    application/json is optional, application/cbor is compulsory; 
    Cms and cose mediatypes are introduced.</t>
      <t>-00: <br/>
    Initial version.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC4210">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate Management Protocol (CMP)</title>
            <author fullname="C. Adams" initials="C." surname="Adams"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="T. Kause" initials="T." surname="Kause"/>
            <author fullname="T. Mononen" initials="T." surname="Mononen"/>
            <date month="September" year="2005"/>
            <abstract>
              <t>This document describes the Internet X.509 Public Key Infrastructure (PKI) Certificate Management Protocol (CMP). Protocol messages are defined for X.509v3 certificate creation and management. CMP provides on-line interactions between PKI components, including an exchange between a Certification Authority (CA) and a client system. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4210"/>
          <seriesInfo name="DOI" value="10.17487/RFC4210"/>
        </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="RFC5652">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document describes the Cryptographic Message Syntax (CMS). This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary message content. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="70"/>
          <seriesInfo name="RFC" value="5652"/>
          <seriesInfo name="DOI" value="10.17487/RFC5652"/>
        </reference>
        <reference anchor="RFC6066">
          <front>
            <title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <date month="January" year="2011"/>
            <abstract>
              <t>This document provides specifications for existing TLS extensions. It is a companion document for RFC 5246, "The Transport Layer Security (TLS) Protocol Version 1.2". The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6066"/>
          <seriesInfo name="DOI" value="10.17487/RFC6066"/>
        </reference>
        <reference anchor="RFC6347">
          <front>
            <title>Datagram Transport Layer Security Version 1.2</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="January" year="2012"/>
            <abstract>
              <t>This document specifies version 1.2 of the Datagram Transport Layer Security (DTLS) protocol. The DTLS protocol provides communications privacy for datagram protocols. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. The DTLS protocol is based on the Transport Layer Security (TLS) protocol and provides equivalent security guarantees. Datagram semantics of the underlying transport are preserved by the DTLS protocol. This document updates DTLS 1.0 to work with TLS version 1.2. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6347"/>
          <seriesInfo name="DOI" value="10.17487/RFC6347"/>
        </reference>
        <reference anchor="RFC6762">
          <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="RFC7250">
          <front>
            <title>Using Raw Public Keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
            <author fullname="P. Wouters" initials="P." role="editor" surname="Wouters"/>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig"/>
            <author fullname="J. Gilmore" initials="J." surname="Gilmore"/>
            <author fullname="S. Weiler" initials="S." surname="Weiler"/>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>This document specifies a new certificate type and two TLS extensions for exchanging raw public keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS). The new certificate type allows raw public keys to be used for authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7250"/>
          <seriesInfo name="DOI" value="10.17487/RFC7250"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <reference anchor="RFC7959">
          <front>
            <title>Block-Wise Transfers in the Constrained Application Protocol (CoAP)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="Z. Shelby" initials="Z." role="editor" surname="Shelby"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful transfer protocol for constrained nodes and networks. Basic CoAP messages work well for small payloads from sensors and actuators; however, applications will need to transfer larger payloads occasionally -- for instance, for firmware updates. In contrast to HTTP, where TCP does the grunt work of segmenting and resequencing, CoAP is based on datagram transports such as UDP or Datagram Transport Layer Security (DTLS). These transports only offer fragmentation, which is even more problematic in constrained nodes and networks, limiting the maximum size of resource representations that can practically be transferred.</t>
              <t>Instead of relying on IP fragmentation, this specification extends basic CoAP with a pair of "Block" options for transferring multiple blocks of information from a resource representation in multiple request-response pairs. In many important cases, the Block options enable a server to be truly stateless: the server can handle each block transfer separately, with no need for a connection setup or other server-side memory of previous block transfers. Essentially, the Block options provide a minimal way to transfer larger representations in a block-wise fashion.</t>
              <t>A CoAP implementation that does not support these options generally is limited in the size of the representations that can be exchanged, so there is an expectation that the Block options will be widely used in CoAP implementations. Therefore, this specification updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7959"/>
          <seriesInfo name="DOI" value="10.17487/RFC7959"/>
        </reference>
        <reference anchor="RFC8366bis">
          <front>
            <title>A Voucher Artifact for Bootstrapping Protocols</title>
            <author fullname="Kent Watsen" initials="K." surname="Watsen">
              <organization>Watsen Networks</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software</organization>
            </author>
            <author fullname="Max Pritikin" initials="M." surname="Pritikin">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Toerless Eckert" initials="T. T." surname="Eckert">
              <organization>Futurewei Technologies Inc.</organization>
            </author>
            <author fullname="Qiufang Ma" initials="Q." surname="Ma">
              <organization>Huawei</organization>
            </author>
            <date day="22" month="August" year="2023"/>
            <abstract>
              <t>   This document defines a strategy to securely assign a pledge to an
   owner using an artifact signed, directly or indirectly, by the
   pledge's manufacturer.  This artifact is known as a "voucher".

   This document defines an artifact format as a YANG-defined JSON or
   CBOR document that has been signed using a variety of cryptographic
   systems.

   The voucher artifact is normally generated by the pledge's
   manufacturer (i.e., the Manufacturer Authorized Signing Authority
   (MASA)).

   This document updates RFC8366, merging a number of extensions into
   the YANG.  The RFC8995 voucher request is also merged into this
   document.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-anima-rfc8366bis-10"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8449">
          <front>
            <title>Record Size Limit Extension for TLS</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>An extension to Transport Layer Security (TLS) is defined that allows endpoints to negotiate the maximum size of protected records that each will send the other.</t>
              <t>This replaces the maximum fragment length extension defined in RFC 6066.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8449"/>
          <seriesInfo name="DOI" value="10.17487/RFC8449"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8710">
          <front>
            <title>Multipart Content-Format for the Constrained Application Protocol (CoAP)</title>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This memo defines application/multipart-core, an application-independent media type that can be used to combine representations of zero or more different media types (each with a Constrained Application Protocol (CoAP) Content-Format identifier) into a single representation, with minimal framing overhead.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8710"/>
          <seriesInfo name="DOI" value="10.17487/RFC8710"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC8995">
          <front>
            <title>Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
            <author fullname="M. Pritikin" initials="M." surname="Pritikin"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="T. Eckert" initials="T." surname="Eckert"/>
            <author fullname="M. Behringer" initials="M." surname="Behringer"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document specifies automated bootstrapping of an Autonomic Control Plane. To do this, a Secure Key Infrastructure is bootstrapped. This is done using manufacturer-installed X.509 certificates, in combination with a manufacturer's authorizing service, both online and offline. We call this process the Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol. Bootstrapping a new device can occur when using a routable address and a cloud service, only link-local connectivity, or limited/disconnected networks. Support for deployment models with less stringent security requirements is included. Bootstrapping is complete when the cryptographic identity of the new key infrastructure is successfully deployed to the device. The established secure connection can be used to deploy a locally issued certificate to the device as well.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8995"/>
          <seriesInfo name="DOI" value="10.17487/RFC8995"/>
        </reference>
        <reference anchor="RFC9031">
          <front>
            <title>Constrained Join Protocol (CoJP) for 6TiSCH</title>
            <author fullname="M. Vučinić" initials="M." role="editor" surname="Vučinić"/>
            <author fullname="J. Simon" initials="J." surname="Simon"/>
            <author fullname="K. Pister" initials="K." surname="Pister"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes the minimal framework required for a new device, called a "pledge", to securely join a 6TiSCH (IPv6 over the Time-Slotted Channel Hopping mode of IEEE 802.15.4) network. The framework requires that the pledge and the JRC (Join Registrar/Coordinator, a central entity), share a symmetric key. How this key is provisioned is out of scope of this document. Through a single CoAP (Constrained Application Protocol) request-response exchange secured by OSCORE (Object Security for Constrained RESTful Environments), the pledge requests admission into the network, and the JRC configures it with link-layer keying material and other parameters. The JRC may at any time update the parameters through another request-response exchange secured by OSCORE. This specification defines the Constrained Join Protocol and its CBOR (Concise Binary Object Representation) data structures, and it describes how to configure the rest of the 6TiSCH communication stack for this join process to occur in a secure manner. Additional security mechanisms may be added on top of this minimal framework.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9031"/>
          <seriesInfo name="DOI" value="10.17487/RFC9031"/>
        </reference>
        <reference anchor="RFC9032">
          <front>
            <title>Encapsulation of 6TiSCH Join and Enrollment Information Elements</title>
            <author fullname="D. Dujovne" initials="D." role="editor" surname="Dujovne"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>In the Time-Slotted Channel Hopping (TSCH) mode of IEEE Std 802.15.4, opportunities for broadcasts are limited to specific times and specific channels. Routers in a TSCH network transmit Enhanced Beacon (EB) frames to announce the presence of the network. This document provides a mechanism by which additional information critical for new nodes (pledges) and long-sleeping nodes may be carried within the EB in order to conserve use of broadcast opportunities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9032"/>
          <seriesInfo name="DOI" value="10.17487/RFC9032"/>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC9148">
          <front>
            <title>EST-coaps: Enrollment over Secure Transport with the Secure Constrained Application Protocol</title>
            <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
            <author fullname="P. Kampanakis" initials="P." surname="Kampanakis"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="S. Raza" initials="S." surname="Raza"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>Enrollment over Secure Transport (EST) is used as a certificate provisioning protocol over HTTPS. Low-resource devices often use the lightweight Constrained Application Protocol (CoAP) for message exchanges. This document defines how to transport EST payloads over secure CoAP (EST-coaps), which allows constrained devices to use existing EST functionality for provisioning certificates.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9148"/>
          <seriesInfo name="DOI" value="10.17487/RFC9148"/>
        </reference>
        <reference anchor="RFC9360">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Header Parameters for Carrying and Referencing X.509 Certificates</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="February" year="2023"/>
            <abstract>
              <t>The CBOR Object Signing and Encryption (COSE) message structure uses references to keys in general. For some algorithms, additional properties are defined that carry parameters relating to keys as needed. The COSE Key structure is used for transporting keys outside of COSE messages. This document extends the way that keys can be identified and transported by providing attributes that refer to or contain X.509 certificates.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9360"/>
          <seriesInfo name="DOI" value="10.17487/RFC9360"/>
        </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="ieee802-1AR" target="http://standards.ieee.org/findstds/standard/802.1AR-2009.html">
          <front>
            <title>IEEE 802.1AR Secure Device Identifier</title>
            <author initials="" surname="IEEE Standard">
              <organization/>
            </author>
            <date year="2009"/>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC4443">
          <front>
            <title>Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification</title>
            <author fullname="A. Conta" initials="A." surname="Conta"/>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <author fullname="M. Gupta" initials="M." role="editor" surname="Gupta"/>
            <date month="March" year="2006"/>
            <abstract>
              <t>This document describes the format of a set of control messages used in ICMPv6 (Internet Control Message Protocol). ICMPv6 is the Internet Control Message Protocol for Internet Protocol version 6 (IPv6). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="89"/>
          <seriesInfo name="RFC" value="4443"/>
          <seriesInfo name="DOI" value="10.17487/RFC4443"/>
        </reference>
        <reference anchor="RFC6282">
          <front>
            <title>Compression Format for IPv6 Datagrams over IEEE 802.15.4-Based Networks</title>
            <author fullname="J. Hui" initials="J." role="editor" surname="Hui"/>
            <author fullname="P. Thubert" initials="P." surname="Thubert"/>
            <date month="September" year="2011"/>
            <abstract>
              <t>This document updates RFC 4944, "Transmission of IPv6 Packets over IEEE 802.15.4 Networks". This document specifies an IPv6 header compression format for IPv6 packet delivery in Low Power Wireless Personal Area Networks (6LoWPANs). The compression format relies on shared context to allow compression of arbitrary prefixes. How the information is maintained in that shared context is out of scope. This document specifies compression of multicast addresses and a framework for compressing next headers. UDP header compression is specified within this framework. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6282"/>
          <seriesInfo name="DOI" value="10.17487/RFC6282"/>
        </reference>
        <reference anchor="RFC6690">
          <front>
            <title>Constrained RESTful Environments (CoRE) Link Format</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <date month="August" year="2012"/>
            <abstract>
              <t>This specification defines Web Linking using a link format for use by constrained web servers to describe hosted resources, their attributes, and other relationships between links. Based on the HTTP Link Header field defined in RFC 5988, the Constrained RESTful Environments (CoRE) Link Format is carried as a payload and is assigned an Internet media type. "RESTful" refers to the Representational State Transfer (REST) architecture. A well-known URI is defined as a default entry point for requesting the links hosted by a server. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6690"/>
          <seriesInfo name="DOI" value="10.17487/RFC6690"/>
        </reference>
        <reference anchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
        <reference anchor="RFC7030">
          <front>
            <title>Enrollment over Secure Transport</title>
            <author fullname="M. Pritikin" initials="M." role="editor" surname="Pritikin"/>
            <author fullname="P. Yee" initials="P." role="editor" surname="Yee"/>
            <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins"/>
            <date month="October" year="2013"/>
            <abstract>
              <t>This document profiles certificate enrollment for clients using Certificate Management over CMS (CMC) messages over a secure transport. This profile, called Enrollment over Secure Transport (EST), describes a simple, yet functional, certificate management protocol targeting Public Key Infrastructure (PKI) clients that need to acquire client certificates and associated Certification Authority (CA) certificates. It also supports client-generated public/private key pairs as well as key pairs generated by the CA.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7030"/>
          <seriesInfo name="DOI" value="10.17487/RFC7030"/>
        </reference>
        <reference anchor="RFC7228">
          <front>
            <title>Terminology for Constrained-Node Networks</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Ersue" initials="M." surname="Ersue"/>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <date month="May" year="2014"/>
            <abstract>
              <t>The Internet Protocol Suite is increasingly used on small devices with severe constraints on power, memory, and processing resources, creating constrained-node networks. This document provides a number of basic terms that have been useful in the standardization work for constrained-node networks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7228"/>
          <seriesInfo name="DOI" value="10.17487/RFC7228"/>
        </reference>
        <reference anchor="RFC8366">
          <front>
            <title>A Voucher Artifact for Bootstrapping Protocols</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="M. Pritikin" initials="M." surname="Pritikin"/>
            <author fullname="T. Eckert" initials="T." surname="Eckert"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>This document defines a strategy to securely assign a pledge to an owner using an artifact signed, directly or indirectly, by the pledge's manufacturer. This artifact is known as a "voucher".</t>
              <t>This document defines an artifact format as a YANG-defined JSON document that has been signed using a Cryptographic Message Syntax (CMS) structure. Other YANG-derived formats are possible. The voucher artifact is normally generated by the pledge's manufacturer (i.e., the Manufacturer Authorized Signing Authority (MASA)).</t>
              <t>This document only defines the voucher artifact, leaving it to other documents to describe specialized protocols for accessing it.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8366"/>
          <seriesInfo name="DOI" value="10.17487/RFC8366"/>
        </reference>
        <reference anchor="RFC8990">
          <front>
            <title>GeneRic Autonomic Signaling Protocol (GRASP)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="B. Carpenter" initials="B." role="editor" surname="Carpenter"/>
            <author fullname="B. Liu" initials="B." role="editor" surname="Liu"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document specifies the GeneRic Autonomic Signaling Protocol (GRASP), which enables autonomic nodes and Autonomic Service Agents to dynamically discover peers, to synchronize state with each other, and to negotiate parameter settings with each other. GRASP depends on an external security environment that is described elsewhere. The technical objectives and parameters for specific application scenarios are to be described in separate documents. Appendices briefly discuss requirements for the protocol and existing protocols with comparable features.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8990"/>
          <seriesInfo name="DOI" value="10.17487/RFC8990"/>
        </reference>
        <reference anchor="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </reference>
        <reference anchor="I-D.ietf-core-sid">
          <front>
            <title>YANG Schema Item iDentifier (YANG SID)</title>
            <author fullname="Michel Veillette" initials="M." surname="Veillette">
              <organization>Trilliant Networks Inc.</organization>
            </author>
            <author fullname="Alexander Pelov" initials="A." surname="Pelov">
              <organization>IMT Atlantique</organization>
            </author>
            <author fullname="Ivaylo Petrov" initials="I." surname="Petrov">
              <organization>Google Switzerland GmbH</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="22" month="December" year="2023"/>
            <abstract>
              <t>   YANG Schema Item iDentifiers (YANG SID) are globally unique 63-bit
   unsigned integers used to identify YANG items, as a more compact
   method to identify YANG items that can be used for efficiency and in
   constrained environments (RFC 7228).  This document defines the
   semantics, the registration, and assignment processes of YANG SIDs
   for IETF managed YANG modules.  To enable the implementation of these
   processes, this document also defines a file format used to persist
   and publish assigned YANG SIDs.


   // The present version (–24) is intended to address the remaining
   // IESG comments.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-sid-24"/>
        </reference>
        <reference anchor="I-D.ietf-6lo-mesh-link-establishment">
          <front>
            <title>Mesh Link Establishment</title>
            <author fullname="Richard Kelsey" initials="R." surname="Kelsey">
              <organization>Silicon Labs</organization>
            </author>
            <date day="1" month="December" year="2015"/>
            <abstract>
              <t>   This document defines the mesh link establishment (MLE) protocol for
   establishing and configuring secure radio links in IEEE 802.15.4
   radio mesh networks.  MLE extends IEEE 802.15.4 for use in multihop
   mesh networks by adding three capabilities: 1) dynamically
   configuring and securing radio connections between neighboring
   devices, 2) enabling network-wide changes to shared radio parameters,
   and 3) allowing the determination of radio link quality prior to
   configuration.  MLE operates below the routing layer, insulating it
   from the details of configuring, securing, and maintaining individual
   radio links within a larger mesh network.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-6lo-mesh-link-establishment-00"/>
        </reference>
        <reference anchor="I-D.kuehlewind-update-tag">
          <front>
            <title>Definition of new tags for relations between RFCs</title>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Suresh Krishnan" initials="S." surname="Krishnan">
              <organization>Kaloom</organization>
            </author>
            <date day="12" month="July" year="2021"/>
            <abstract>
              <t>   An RFC can include a tag called "Updates" which can be used to link a
   new RFC to an existing RFC.  On publication of such an RFC, the
   existing RFC will include an additional metadata tag called "Updated
   by" which provides a link to the new RFC.  However, this tag pair is
   not well-defined and therefore it is currently used for multiple
   different purposes, which leads to confusion about the actual meaning
   of this tag and inconsistency in its use.

   This document recommends the discontinuation of the use of the
   updates/updated by tag pair, and instead proposes three new tag pairs
   that have well-defined meanings and use cases.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kuehlewind-update-tag-04"/>
        </reference>
        <reference anchor="I-D.richardson-anima-masa-considerations">
          <front>
            <title>Operational Considerations for Voucher infrastructure for BRSKI MASA</title>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="9" month="May" year="2023"/>
            <abstract>
              <t>   This document describes a number of operational modes that a BRSKI
   Manufacturer Authorized Signing Authority (MASA) may take on.

   Each mode is defined, and then each mode is given a relevance within
   an over applicability of what kind of organization the MASA is
   deployed into.  This document does not change any protocol
   mechanisms.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-richardson-anima-masa-considerations-08"/>
        </reference>
        <reference anchor="I-D.ietf-anima-constrained-join-proxy">
          <front>
            <title>Join Proxy for Bootstrapping of Constrained Network Elements</title>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
              <organization>vanderstok consultancy</organization>
            </author>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>Cisco Systems</organization>
            </author>
            <date day="6" month="November" year="2023"/>
            <abstract>
              <t>   This document extends the work of Bootstrapping Remote Secure Key
   Infrastructures (BRSKI) by replacing the Circuit-proxy between Pledge
   and Registrar by a stateless/stateful constrained Join Proxy.  The
   constrained Join Proxy is a mesh neighbor of the Pledge and can relay
   a DTLS session originating from a Pledge with only link-local
   addresses to a Registrar which is not a mesh neighbor of the Pledge.

   This document defines a protocol to securely assign a Pledge to a
   domain, represented by a Registrar, using an intermediary node
   between Pledge and Registrar.  This intermediary node is known as a
   "constrained Join Proxy".  An enrolled Pledge can act as a
   constrained Join Proxy.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-anima-constrained-join-proxy-15"/>
        </reference>
        <reference anchor="I-D.ietf-lake-edhoc">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="22" month="January" year="2024"/>
            <abstract>
              <t>   This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a
   very compact and lightweight authenticated Diffie-Hellman key
   exchange with ephemeral keys.  EDHOC provides mutual authentication,
   forward secrecy, and identity protection.  EDHOC is intended for
   usage in constrained scenarios and a main use case is to establish an
   OSCORE security context.  By reusing COSE for cryptography, CBOR for
   encoding, and CoAP for transport, the additional code size can be
   kept very low.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-23"/>
        </reference>
        <reference anchor="I-D.ietf-anima-jws-voucher">
          <front>
            <title>JWS signed Voucher Artifacts for Bootstrapping Protocols</title>
            <author fullname="Thomas Werner" initials="T." surname="Werner">
              <organization>Siemens AG</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="29" month="August" year="2023"/>
            <abstract>
              <t>   [TODO: I-D.draft-ietf-anima-rfc8366bis] defines a digital artifact
   called voucher as a YANG-defined JSON document that is signed using a
   Cryptographic Message Syntax (CMS) structure.  This document
   introduces a variant of the voucher artifact in which CMS is replaced
   by the JSON Object Signing and Encryption (JOSE) mechanism described
   in RFC7515 to support deployments in which JOSE is preferred over
   CMS.

   In addition to explaining how the format is created, the
   "application/voucher-jws+json" media type is registered and examples
   are provided.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-anima-jws-voucher-09"/>
        </reference>
        <reference anchor="I-D.ietf-cbor-edn-literals">
          <front>
            <title>CBOR Extended Diagnostic Notation (EDN): Application-Oriented Literals, ABNF, and Media Type</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="1" month="February" year="2024"/>
            <abstract>
              <t>   The Concise Binary Object Representation, CBOR (STD 94, RFC 8949),
   defines a "diagnostic notation" in order to be able to converse about
   CBOR data items without having to resort to binary data.

   This document specifies how to add application-oriented extensions to
   the diagnostic notation.  It then defines two such extensions for
   text representations of epoch-based date/times and of IP addresses
   and prefixes (RFC 9164).

   A few further additions close some gaps in usability.  To facilitate
   tool interoperation, this document specifies a formal ABNF definition
   for extended diagnostic notation (EDN) that accommodates application-
   oriented literals.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-literals-08"/>
        </reference>
        <reference anchor="I-D.eckert-anima-brski-discovery">
          <front>
            <title>Discovery for BRSKI variations</title>
            <author fullname="Toerless Eckert" initials="T. T." surname="Eckert">
              <organization>Futurewei USA</organization>
            </author>
            <author fullname="David von Oheimb" initials="D." surname="von Oheimb">
              <organization>Siemens AG</organization>
            </author>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <date day="23" month="October" year="2023"/>
            <abstract>
              <t>   This document specifies how BRSKI entities, such as registrars,
   proxies, pledges or others that are acting as responders, can be
   discovered and selected by BRSKI entities acting as initiators.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-eckert-anima-brski-discovery-01"/>
        </reference>
        <reference anchor="I-D.ietf-cose-cbor-encoded-cert">
          <front>
            <title>CBOR Encoded X.509 Certificates (C509 Certificates)</title>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Shahid Raza" initials="S." surname="Raza">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Joel Höglund" initials="J." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Martin Furuhed" initials="M." surname="Furuhed">
              <organization>Nexus Group</organization>
            </author>
            <date day="20" month="October" year="2023"/>
            <abstract>
              <t>   This document specifies a CBOR encoding of X.509 certificates.  The
   resulting certificates are called C509 Certificates.  The CBOR
   encoding supports a large subset of RFC 5280 and all certificates
   compatible with the RFC 7925, IEEE 802.1AR (DevID), CNSA, RPKI, GSMA
   eUICC, and CA/Browser Forum Baseline Requirements profiles.  When
   used to re-encode DER encoded X.509 certificates, the CBOR encoding
   can in many cases reduce the size of RFC 7925 profiled certificates
   with over 50%.  The CBOR encoded structure can alternatively be
   signed directly ("natively signed"), which does not require re-
   encoding for the signature to be verified.  The document also
   specifies C509 COSE headers, a C509 TLS certificate type, and a C509
   file format.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-cbor-encoded-cert-07"/>
        </reference>
        <reference anchor="COSE-registry" target="https://www.iana.org/assignments/cose/cose.xhtml">
          <front>
            <title>CBOR Object Signing and Encryption (COSE) registry</title>
            <author initials="" surname="IANA">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
        </reference>
        <reference anchor="Thread" target="https://www.threadgroup.org/support#Whitepapers">
          <front>
            <title>Thread support page, White Papers</title>
            <author initials="" surname="Thread Group, Inc">
              <organization/>
            </author>
            <date year="2023" month="November"/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-rats-architecture">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Dave Thaler" initials="D." surname="Thaler">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Intel Corporation</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="28" month="September" year="2022"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state.  This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims.  It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-architecture-22"/>
        </reference>
      </references>
    </references>
    <?line 1663?>

<section anchor="libsup">
      <name>Library Support for BRSKI</name>
      <t>For the implementation of BRSKI, the use of a software library to manipulate PKIX certificates and use crypto algorithms is often beneficial. Two C-based examples are OpenSSL and mbedtls. Others more targeted to specific platforms or languages exist. It is important to realize that the library interfaces differ significantly between libraries.</t>
      <t>Libraries do not support all known crypto algorithms. Before deciding on a library, it is important to look at their supported crypto algorithms and the roadmap for future support. Apart from availability, the library footprint, and the required execution cycles should be investigated beforehand.</t>
      <t>The handling of certificates usually includes the checking of a certificate chain. In some libraries, chains are constructed and verified on the basis of a set of certificates, the trust anchor (usually a self signed root CA), and the target certificate. In other libraries, the chain must be constructed beforehand and obey ordering criteria. Verification always includes the checking of the signatures. Less frequent is the checking the validity of the dates or checking the existence of a revoked certificate in the chain against a set of revoked certificates. Checking the chain on the consistency of the certificate extensions which specify the use of the certificate usually needs to be programmed explicitly.</t>
      <t>A libary can be used to construct a (D)TLS connection. It is useful to realize that differences beetween (D)TLS implementations will occur due to the differences in the certicate checks supported by the library. On top of that, checks between client and server certificates enforced by (D)TLS are not always helpful for a BRSKI implementation. For example, the certificates of Pledge and Registrar are usually not related when the BRSKI protocol is started. It must be verified that checks on the relation between client and server certificates do not hamper a succeful DTLS connection establishment.</t>
      <section anchor="opensssl">
        <name>OpensSSL</name>
        <t>From openssl's apps/verify.c :</t>
        <sourcecode type="c"><![CDATA[
<CODE BEGINS>
X509 *x = NULL;
int i = 0, ret = 0;
X509_STORE_CTX *csc;
STACK_OF(X509) *chain = NULL;
int num_untrusted;

x = load_cert(file, "certificate file");
if (x == NULL)
    goto end;

csc = X509_STORE_CTX_new();
if (csc == NULL) {
    BIO_printf(bio_err, "error %s: X.509 store context"
               "allocation failed\n",
               (file == NULL) ? "stdin" : file);
    goto end;
}

X509_STORE_set_flags(ctx, vflags);
if (!X509_STORE_CTX_init(csc, ctx, x, uchain)) {
    X509_STORE_CTX_free(csc);
    BIO_printf(bio_err,
               "error %s: X.509 store context"
               "initialization failed\n",
               (file == NULL) ? "stdin" : file);
    goto end;
}
if (tchain != NULL)
    X509_STORE_CTX_set0_trusted_stack(csc, tchain);
if (crls != NULL)
    X509_STORE_CTX_set0_crls(csc, crls);

i = X509_verify_cert(csc);
X509_STORE_CTX_free(csc);

<CODE ENDS>
]]></sourcecode>
      </section>
      <section anchor="mbedtls">
        <name>mbedTLS</name>
        <sourcecode type="c"><![CDATA[
<CODE BEGINS>
mbedtls_x509_crt cert;
mbedtls_x509_crt caCert;
uint32_t         certVerifyResultFlags;
// ...
int result = mbedtls_x509_crt_verify(&cert, &caCert, NULL, NULL,
                             &certVerifyResultFlags, NULL, NULL);

<CODE ENDS>
]]></sourcecode>
      </section>
    </section>
    <section anchor="cbrski-message-examples">
      <name>cBRSKI Message Examples</name>
      <t>This appendix extends the EST-coaps message examples from Appendix A of <xref target="RFC9148"/> with cBRSKI messages.
The CoAP headers are only fully worked out for the first example, enrollstatus.</t>
      <section anchor="es">
        <name>enrollstatus</name>
        <t>A coaps enrollstatus message from Pledge to Registrar can be as follows:</t>
        <artwork><![CDATA[
  REQ: POST coaps://192.0.2.1:8085/b/es
  Content-Format: 60
  Payload: <binary CBOR encoding of an enrollstatus map>
]]></artwork>
        <t>The corresponding CoAP header fields for this request are shown below.</t>
        <artwork><![CDATA[
  Ver = 1
  T = 0 (CON)
  TKL = 1
  Code = 0x02 (0.02 is POST method)
  Message ID = 0xab0f
  Token = 0x4d
  Options
   Option  (Uri-Path)
     Option Delta = 0xb   (option nr = 11)
     Option Length = 0x1
     Option Value = "b"
   Option  (Uri-Path)
     Option Delta = 0x0   (option nr = 11)
     Option Length = 0x2
     Option Value = "es"
   Option  (Content-Format)
     Option Delta = 0x1   (option nr = 12)
     Option Length = 0x1
     Option Value = 60    (application/cbor)
  Payload Marker = 0xFF
  Payload = A26776657273696F6E0166737461747573F5 (18 bytes binary)
]]></artwork>
        <t>The Uri-Host and Uri-Port Options are omitted because they coincide with the transport protocol (UDP) destination address and port respectively.</t>
        <t>The above binary CBOR enrollstatus payload looks as follows in CBOR diagnostic notation, for the case of enrollment success:</t>
        <sourcecode type="cbor-diag"><![CDATA[
  {
    "version": 1,
    "status": true
   }
]]></sourcecode>
        <t>Alternatively the payload could look as follows in case of enrollment failure, using the reason field to describe the failure:</t>
        <artwork><![CDATA[
  Payload = A36776657273696F6E0166737461747573F466726561736F6E782A3C
            496E666F726D61746976652068756D616E207265616461626C652065
            72726F72206D6573736167653E    (69 bytes binary)
]]></artwork>
        <sourcecode type="cbor-diag"><![CDATA[
  {
    "version": 1,
    "status": false,
    "reason": "<Informative human readable error message>"
  }
]]></sourcecode>
        <t>To indicate successful reception of the enrollmentstatus telemetry report, a response from the Registrar may then be:</t>
        <artwork><![CDATA[
  2.04 Changed
]]></artwork>
        <t>Which in case of a piggybacked response has the following CoAP header fields:</t>
        <artwork><![CDATA[
  Ver=1
  T=2 (ACK)
  TKL=1
  Code = 0x44 (2.04 Changed)
  Message ID = 0xab0f
  Token = 0x4d
]]></artwork>
      </section>
      <section anchor="voucherstatus">
        <name>voucher_status</name>
        <t>A coaps voucher_status message from Pledge to Registrar can be as follows:</t>
        <artwork><![CDATA[
  REQ: POST coaps://[2001:db8::2:1]/.well-known/brski/vs
  Content-Format: 60 (application/cbor)
  Payload =
    A46776657273696F6E0166737461747573F466726561736F6E7828496E66
    6F726D61746976652068756D616E2D7265616461626C65206572726F7220
    6D6573736167656E726561736F6E2D636F6E74657874A100764164646974
    696F6E616C20696E666F726D6174696F6E

]]></artwork>
        <t>The request payload above is binary CBOR but represented here in hexadecimal for readability. Below is the equivalent CBOR diagnostic format.</t>
        <sourcecode type="cbor-diag"><![CDATA[
  {
    "version": 1, 
    "status": false,
    "reason": "Informative human-readable error message",
    "reason-context": { 0: "Additional information" } 
  }
]]></sourcecode>
        <t>A success response without payload will then be sent by the Registrar back to the Pledge to indicate reception of the telemetry report:</t>
        <artwork><![CDATA[
  2.04 Changed
]]></artwork>
      </section>
    </section>
    <section anchor="cosesign">
      <name>COSE-signed Voucher (Request) Examples</name>
      <t>This appendix provides examples of COSE-signed voucher requests and vouchers. First, the used test keys and PKIX certificates are described, followed by examples of
a constrained PVR, RVR and voucher.</t>
      <section anchor="pledge-registrar-and-masa-keys">
        <name>Pledge, Registrar and MASA Keys</name>
        <t>This section documents the public and private keys used for all examples in this appendix. These keys are not used in any
production system, and must only be used for testing purposes.</t>
        <section anchor="pledgepriv">
          <name>Pledge IDevID private key</name>
          <sourcecode type="x509"><![CDATA[
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIMv+C4dbzeyrEH20qkpFlWIH2FFACGZv9kW7rNWtSlYtoAoGCCqGSM49
AwEHoUQDQgAESH6OUiYFRhfIgWl4GG8jHoj8a+8rf6t5s1mZ/4SePlKom39GQ34p
VYryJ9aHmboLLfz69bzICQFKbkoQ5oaiew==
-----END EC PRIVATE KEY-----
]]></sourcecode>
          <sourcecode type="x509"><![CDATA[
Private-Key: (256 bit)
priv:
    cb:fe:0b:87:5b:cd:ec:ab:10:7d:b4:aa:4a:45:95:
    62:07:d8:51:40:08:66:6f:f6:45:bb:ac:d5:ad:4a:
    56:2d
pub:
    04:48:7e:8e:52:26:05:46:17:c8:81:69:78:18:6f:
    23:1e:88:fc:6b:ef:2b:7f:ab:79:b3:59:99:ff:84:
    9e:3e:52:a8:9b:7f:46:43:7e:29:55:8a:f2:27:d6:
    87:99:ba:0b:2d:fc:fa:f5:bc:c8:09:01:4a:6e:4a:
    10:e6:86:a2:7b
ASN1 OID: prime256v1
NIST CURVE: P-256

]]></sourcecode>
        </section>
        <section anchor="jrcpriv">
          <name>Registrar private key</name>
          <sourcecode type="x509"><![CDATA[
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgYJ/MP0dWA9BkYd4W
s6oRY62hDddaEmrAVm5dtAXE/UGhRANCAAQgMIVb6EaRCz7LFcr4Vy0+tWW9xlSh
Xvr27euqi54WCMXJEMk6IIaPyFBNNw8bJvqXWfZ5g7t4hj7amsvqUST2
-----END PRIVATE KEY-----
]]></sourcecode>
          <sourcecode type="x509"><![CDATA[
Private-Key: (256 bit)
priv:
    60:9f:cc:3f:47:56:03:d0:64:61:de:16:b3:aa:11:
    63:ad:a1:0d:d7:5a:12:6a:c0:56:6e:5d:b4:05:c4:
    fd:41
pub:
    04:20:30:85:5b:e8:46:91:0b:3e:cb:15:ca:f8:57:
    2d:3e:b5:65:bd:c6:54:a1:5e:fa:f6:ed:eb:aa:8b:
    9e:16:08:c5:c9:10:c9:3a:20:86:8f:c8:50:4d:37:
    0f:1b:26:fa:97:59:f6:79:83:bb:78:86:3e:da:9a:
    cb:ea:51:24:f6
ASN1 OID: prime256v1
NIST CURVE: P-256

]]></sourcecode>
        </section>
        <section anchor="masapriv">
          <name>MASA private key</name>
          <sourcecode type="x509"><![CDATA[
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgrbJ1oU+HIJ2SWYAk
DkBTL+YNPxQG+gwsMsZB94N8mZ2hRANCAASS9NVlWJdztwNY81yPlH2UODYWhlYA
ZfsqnEPSFZKnq8mq8gF78ZVbYi6q2FEg8kkORY/rpIU/X7SQsRuD+wMW
-----END PRIVATE KEY-----
]]></sourcecode>
          <sourcecode type="x509"><![CDATA[
Private-Key: (256 bit)
priv:
    ad:b2:75:a1:4f:87:20:9d:92:59:80:24:0e:40:53:
    2f:e6:0d:3f:14:06:fa:0c:2c:32:c6:41:f7:83:7c:
    99:9d
pub:
    04:92:f4:d5:65:58:97:73:b7:03:58:f3:5c:8f:94:
    7d:94:38:36:16:86:56:00:65:fb:2a:9c:43:d2:15:
    92:a7:ab:c9:aa:f2:01:7b:f1:95:5b:62:2e:aa:d8:
    51:20:f2:49:0e:45:8f:eb:a4:85:3f:5f:b4:90:b1:
    1b:83:fb:03:16
ASN1 OID: prime256v1
NIST CURVE: P-256

]]></sourcecode>
        </section>
      </section>
      <section anchor="pledge-registrar-domain-ca-and-masa-certificates">
        <name>Pledge, Registrar, Domain CA and MASA Certificates</name>
        <t>All keys and PKIX certificates used for the examples have been generated with OpenSSL - see <xref target="appendix-gencerts"/> for more details on certificate generation.
Below the certificates are listed that accompany the keys shown above. Each certificate description is followed by the hexadecimal representation of the X.509 ASN.1 DER encoded certificate.
This representation can be for example decoded using an online ASN.1 decoder.</t>
        <section anchor="pledge-idevid-certificate">
          <name>Pledge IDevID Certificate</name>
          <sourcecode type="x509"><![CDATA[
Certificate:
Data:
 Version: 3 (0x2)
 Serial Number: 32429 (0x7ead)
 Signature Algorithm: ecdsa-with-SHA256
 Issuer: CN = masa.stok.nl, O = vanderstok, L = Helmond, 
         C = NL
 Validity
   Not Before: Dec  9 12:50:47 2022 GMT
   Not After : Dec 31 12:50:47 9999 GMT
 Subject: CN = Stok IoT sensor Y-42, serialNumber = JADA123456789
 Subject Public Key Info:
   Public Key Algorithm: id-ecPublicKey
     Public-Key: (256 bit)
     pub:
       04:48:7e:8e:52:26:05:46:17:c8:81:69:78:18:6f:
       23:1e:88:fc:6b:ef:2b:7f:ab:79:b3:59:99:ff:84:
       9e:3e:52:a8:9b:7f:46:43:7e:29:55:8a:f2:27:d6:
       87:99:ba:0b:2d:fc:fa:f5:bc:c8:09:01:4a:6e:4a:
       10:e6:86:a2:7b
     ASN1 OID: prime256v1
     NIST CURVE: P-256
 X509v3 extensions:
   X509v3 Key Usage: critical
     Digital Signature, Non Repudiation, Key Encipherment, 
             Data Encipherment
   X509v3 Basic Constraints: 
     CA:FALSE
   X509v3 Authority Key Identifier: 
     CB:8D:98:CA:74:C5:1B:58:DD:E7:AC:EF:86:9A:94:43:A8:D6:66:A6
   1.3.6.1.5.5.7.1.32: 
      hl=2 l=  12 prim: IA5STRING     :masa.stok.nl

Signature Algorithm: ecdsa-with-SHA256
Signature Value:
 30:45:02:20:4d:89:90:7e:03:fb:52:56:42:0c:3f:c1:b1:f1:
 47:b5:b3:93:65:45:2e:be:50:db:67:85:8f:23:89:a2:3f:9e:
 02:21:00:95:33:69:d1:c6:db:f0:f1:f6:52:24:59:d3:0a:95:
 4e:b2:f4:96:a1:31:3c:7b:d9:2f:28:b3:29:71:bb:60:df

]]></sourcecode>
          <t>Below is the hexadecimal representation of the binary X.509 DER-encoded certificate:</t>
          <sourcecode type="pseudocode"><![CDATA[
308201CE30820174A00302010202027EAD300A06082A8648CE3D040302304B31
15301306035504030C0C6D6173612E73746F6B2E6E6C31133011060355040A0C
0A76616E64657273746F6B3110300E06035504070C0748656C6D6F6E64310B30
09060355040613024E4C3020170D3232313230393132353034375A180F393939
39313233313132353034375A3037311D301B06035504030C1453746F6B20496F
542073656E736F7220592D3432311630140603550405130D4A41444131323334
35363738393059301306072A8648CE3D020106082A8648CE3D03010703420004
487E8E5226054617C8816978186F231E88FC6BEF2B7FAB79B35999FF849E3E52
A89B7F46437E29558AF227D68799BA0B2DFCFAF5BCC809014A6E4A10E686A27B
A35A3058300E0603551D0F0101FF0404030204F030090603551D130402300030
1F0603551D23041830168014CB8D98CA74C51B58DDE7ACEF869A9443A8D666A6
301A06082B06010505070120040E160C6D6173612E73746F6B2E6E6C300A0608
2A8648CE3D040302034800304502204D89907E03FB5256420C3FC1B1F147B5B3
9365452EBE50DB67858F2389A23F9E022100953369D1C6DBF0F1F6522459D30A
954EB2F496A1313C7BD92F28B32971BB60DF

]]></sourcecode>
        </section>
        <section anchor="cosesign-registrar-cert">
          <name>Registrar Certificate</name>
          <sourcecode type="x509"><![CDATA[
Certificate:
Data:
 Version: 3 (0x2)
 Serial Number:
   c3:f6:21:49:b2:e3:0e:3e
 Signature Algorithm: ecdsa-with-SHA256
 Issuer: CN = Custom-ER Global CA, OU = IT, O = "Custom-ER, Inc.", 
         L = San Jose, ST = CA, C = US
 Validity
   Not Before: Dec  9 12:50:47 2022 GMT
   Not After : Dec  8 12:50:47 2025 GMT
 Subject: CN = Custom-ER Registrar, OU = Office dept, O = "Custom-ER, 
         Inc.", L = Ottowa, ST = ON, C = CA
 Subject Public Key Info:
   Public Key Algorithm: id-ecPublicKey
     Public-Key: (256 bit)
     pub:
       04:20:30:85:5b:e8:46:91:0b:3e:cb:15:ca:f8:57:
       2d:3e:b5:65:bd:c6:54:a1:5e:fa:f6:ed:eb:aa:8b:
       9e:16:08:c5:c9:10:c9:3a:20:86:8f:c8:50:4d:37:
       0f:1b:26:fa:97:59:f6:79:83:bb:78:86:3e:da:9a:
       cb:ea:51:24:f6
     ASN1 OID: prime256v1
     NIST CURVE: P-256
 X509v3 extensions:
   X509v3 Key Usage: critical
     Digital Signature, Non Repudiation, Key Encipherment, 
             Data Encipherment
   X509v3 Basic Constraints: 
     CA:FALSE
   X509v3 Subject Key Identifier: 
     C9:08:0B:38:7D:8D:D8:5B:3A:59:E7:EC:10:0B:86:63:93:A9:CA:4C
   X509v3 Authority Key Identifier: 
     92:EA:76:40:40:4A:8F:AB:4F:27:0B:F3:BC:37:9D:86:CD:72:80:F8
   X509v3 Extended Key Usage: critical
     CMC Registration Authority, TLS Web Server Authentication, 
             TLS Web Client Authentication
Signature Algorithm: ecdsa-with-SHA256
Signature Value:
 30:45:02:21:00:d8:4a:7c:69:2f:f9:58:6e:82:22:87:18:f6:
 3b:c3:05:f0:ae:b8:ae:ec:42:78:82:38:79:81:2a:5d:15:61:
 64:02:20:08:f2:3c:13:69:13:b0:2c:e2:63:09:d5:99:4f:eb:
 75:70:af:af:ed:98:cd:f1:12:11:c0:37:f7:18:4d:c1:9d

]]></sourcecode>
          <t>Below is the hexadecimal representation of the binary X.509 DER-encoded certificate:</t>
          <sourcecode type="pseudocode"><![CDATA[
3082026D30820213A003020102020900C3F62149B2E30E3E300A06082A8648CE
3D0403023072311C301A06035504030C13437573746F6D2D455220476C6F6261
6C204341310B3009060355040B0C02495431183016060355040A0C0F43757374
6F6D2D45522C20496E632E3111300F06035504070C0853616E204A6F7365310B
300906035504080C024341310B3009060355040613025553301E170D32323132
30393132353034375A170D3235313230383132353034375A3079311C301A0603
5504030C13437573746F6D2D4552205265676973747261723114301206035504
0B0C0B4F6666696365206465707431183016060355040A0C0F437573746F6D2D
45522C20496E632E310F300D06035504070C064F74746F7761310B3009060355
04080C024F4E310B30090603550406130243413059301306072A8648CE3D0201
06082A8648CE3D030107034200042030855BE846910B3ECB15CAF8572D3EB565
BDC654A15EFAF6EDEBAA8B9E1608C5C910C93A20868FC8504D370F1B26FA9759
F67983BB78863EDA9ACBEA5124F6A3818A308187300E0603551D0F0101FF0404
030204F030090603551D1304023000301D0603551D0E04160414C9080B387D8D
D85B3A59E7EC100B866393A9CA4C301F0603551D2304183016801492EA764040
4A8FAB4F270BF3BC379D86CD7280F8302A0603551D250101FF0420301E06082B
0601050507031C06082B0601050507030106082B06010505070302300A06082A
8648CE3D0403020348003045022100D84A7C692FF9586E82228718F63BC305F0
AEB8AEEC4278823879812A5D156164022008F23C136913B02CE26309D5994FEB
7570AFAFED98CDF11211C037F7184DC19D

]]></sourcecode>
        </section>
        <section anchor="cose-example-domain-ca-cert">
          <name>Domain CA Certificate</name>
          <t>The Domain CA certificate is the CA of the owner's domain. It has signed the Registrar (RA) certificate.</t>
          <sourcecode type="x509"><![CDATA[
Certificate:
Data:
 Version: 3 (0x2)
 Serial Number: 3092288576548618702 (0x2aea0413a42dc1ce)
 Signature Algorithm: ecdsa-with-SHA256
 Issuer: CN = Custom-ER Global CA, OU = IT, O = "Custom-ER, Inc.", 
         L = San Jose, ST = CA, C = US
 Validity
   Not Before: Dec  9 12:50:47 2022 GMT
   Not After : Dec  6 12:50:47 2032 GMT
 Subject: CN = Custom-ER Global CA, OU = IT, O = "Custom-ER, Inc.", 
         L = San Jose, ST = CA, C = US
 Subject Public Key Info:
   Public Key Algorithm: id-ecPublicKey
     Public-Key: (256 bit)
     pub:
       04:97:b1:ed:96:91:64:93:09:85:bb:b8:ac:9a:2a:
       f9:45:5c:df:ee:a4:b1:1d:e2:e7:9d:06:8b:fa:80:
       39:26:b4:00:52:51:b3:4f:1c:08:15:a4:cb:e0:3f:
       bd:1b:bc:b6:35:f6:43:1a:22:de:78:65:3b:87:b9:
       95:37:ec:e1:6c
     ASN1 OID: prime256v1
     NIST CURVE: P-256
 X509v3 extensions:
   X509v3 Subject Alternative Name: 
     email:help@custom-er.example.com
   X509v3 Key Usage: critical
     Digital Signature, Certificate Sign, CRL Sign
   X509v3 Basic Constraints: critical
     CA:TRUE
   X509v3 Subject Key Identifier: 
     92:EA:76:40:40:4A:8F:AB:4F:27:0B:F3:BC:37:9D:86:CD:72:80:F8
Signature Algorithm: ecdsa-with-SHA256
Signature Value:
 30:44:02:20:66:15:df:c3:70:11:f6:73:78:d8:fd:1c:2a:3f:
 bd:d1:3f:51:f6:b6:6f:2d:7c:e2:7a:13:18:21:bb:70:f0:c0:
 02:20:69:86:d8:d2:28:b2:92:6e:23:9e:19:0b:8f:18:25:c9:
 c1:4c:67:95:ff:a0:b3:24:bd:4d:ac:2e:cb:68:d7:13

]]></sourcecode>
          <t>Below is the hexadecimal representation of the binary X.509 DER-encoded certificate:</t>
          <sourcecode type="pseudocode"><![CDATA[
30820242308201E9A00302010202082AEA0413A42DC1CE300A06082A8648CE3D
0403023072311C301A06035504030C13437573746F6D2D455220476C6F62616C
204341310B3009060355040B0C02495431183016060355040A0C0F437573746F
6D2D45522C20496E632E3111300F06035504070C0853616E204A6F7365310B30
0906035504080C024341310B3009060355040613025553301E170D3232313230
393132353034375A170D3332313230363132353034375A3072311C301A060355
04030C13437573746F6D2D455220476C6F62616C204341310B3009060355040B
0C02495431183016060355040A0C0F437573746F6D2D45522C20496E632E3111
300F06035504070C0853616E204A6F7365310B300906035504080C024341310B
30090603550406130255533059301306072A8648CE3D020106082A8648CE3D03
01070342000497B1ED969164930985BBB8AC9A2AF9455CDFEEA4B11DE2E79D06
8BFA803926B4005251B34F1C0815A4CBE03FBD1BBCB635F6431A22DE78653B87
B99537ECE16CA369306730250603551D11041E301C811A68656C704063757374
6F6D2D65722E6578616D706C652E636F6D300E0603551D0F0101FF0404030201
86300F0603551D130101FF040530030101FF301D0603551D0E0416041492EA76
40404A8FAB4F270BF3BC379D86CD7280F8300A06082A8648CE3D040302034700
304402206615DFC37011F67378D8FD1C2A3FBDD13F51F6B66F2D7CE27A131821
BB70F0C002206986D8D228B2926E239E190B8F1825C9C14C6795FFA0B324BD4D
AC2ECB68D713

]]></sourcecode>
        </section>
        <section anchor="masa-certificate">
          <name>MASA Certificate</name>
          <t>The MASA CA certificate is the CA that signed the Pledge's IDevID certificate.</t>
          <sourcecode type="x509"><![CDATA[
Certificate:
Data:
 Version: 3 (0x2)
 Serial Number:
   e3:9c:da:17:e1:38:6a:0a
 Signature Algorithm: ecdsa-with-SHA256
 Issuer: CN = masa.stok.nl, O = vanderstok, L = Helmond, 
         C = NL
 Validity
   Not Before: Dec  9 12:50:47 2022 GMT
   Not After : Dec  6 12:50:47 2032 GMT
 Subject: CN = masa.stok.nl, O = vanderstok, L = Helmond, 
         C = NL
 Subject Public Key Info:
   Public Key Algorithm: id-ecPublicKey
     Public-Key: (256 bit)
     pub:
       04:92:f4:d5:65:58:97:73:b7:03:58:f3:5c:8f:94:
       7d:94:38:36:16:86:56:00:65:fb:2a:9c:43:d2:15:
       92:a7:ab:c9:aa:f2:01:7b:f1:95:5b:62:2e:aa:d8:
       51:20:f2:49:0e:45:8f:eb:a4:85:3f:5f:b4:90:b1:
       1b:83:fb:03:16
     ASN1 OID: prime256v1
     NIST CURVE: P-256
 X509v3 extensions:
   X509v3 Subject Alternative Name: 
     email:info@masa.stok.nl
   X509v3 Key Usage: critical
     Digital Signature, Certificate Sign, CRL Sign
   X509v3 Basic Constraints: critical
     CA:TRUE, pathlen:3
   X509v3 Subject Key Identifier: 
     CB:8D:98:CA:74:C5:1B:58:DD:E7:AC:EF:86:9A:94:43:A8:D6:66:A6
Signature Algorithm: ecdsa-with-SHA256
Signature Value:
 30:46:02:21:00:94:3f:a5:26:51:68:16:38:5b:78:9a:d8:c3:
 af:8e:49:28:22:60:56:26:43:4a:14:98:3e:e1:e4:81:ad:ca:
 1b:02:21:00:ba:4d:aa:fd:fa:68:42:74:03:2b:a8:41:6b:e2:
 90:0c:9e:7b:b8:c0:9c:f7:0e:3f:b4:36:8a:b3:9c:3e:31:0e

]]></sourcecode>
          <t>Below is the hexadecimal representation of the binary X.509 DER-encoded certificate:</t>
          <sourcecode type="pseudocode"><![CDATA[
308201F130820196A003020102020900E39CDA17E1386A0A300A06082A8648CE
3D040302304B3115301306035504030C0C6D6173612E73746F6B2E6E6C311330
11060355040A0C0A76616E64657273746F6B3110300E06035504070C0748656C
6D6F6E64310B3009060355040613024E4C301E170D3232313230393132353034
375A170D3332313230363132353034375A304B3115301306035504030C0C6D61
73612E73746F6B2E6E6C31133011060355040A0C0A76616E64657273746F6B31
10300E06035504070C0748656C6D6F6E64310B3009060355040613024E4C3059
301306072A8648CE3D020106082A8648CE3D0301070342000492F4D565589773
B70358F35C8F947D9438361686560065FB2A9C43D21592A7ABC9AAF2017BF195
5B622EAAD85120F2490E458FEBA4853F5FB490B11B83FB0316A3633061301C06
03551D11041530138111696E666F406D6173612E73746F6B2E6E6C300E060355
1D0F0101FF04040302018630120603551D130101FF040830060101FF02010330
1D0603551D0E04160414CB8D98CA74C51B58DDE7ACEF869A9443A8D666A6300A
06082A8648CE3D0403020349003046022100943FA526516816385B789AD8C3AF
8E492822605626434A14983EE1E481ADCA1B022100BA4DAAFDFA684274032BA8
416BE2900C9E7BB8C09CF70E3FB4368AB39C3E310E

]]></sourcecode>
        </section>
      </section>
      <section anchor="cose-signed-pledge-voucher-request-pvr">
        <name>COSE-signed Pledge Voucher Request (PVR)</name>
        <t>In this example, the voucher request (PVR) has been signed by the Pledge using the IDevID private key of <xref target="pledgepriv"/>,
and has been sent to the link-local constrained Join Proxy (JP) over CoAPS to the JP's join port. The join port happens to
use the default CoAPS UDP port 5684.</t>
        <artwork><![CDATA[
  REQ: POST coaps://[JP-link-local-address]/b/rv
  Content-Format: 836
  Payload: <signed_pvr>
]]></artwork>
        <t>When the Join Proxy receives the DTLS handshake messages from the Pledge, it will relay these messages to the Registrar.
The payload signed_voucher_request is shown as hexadecimal dump (with lf added) below:</t>
        <sourcecode type="pseudocode"><![CDATA[
D28443A10126A0587EA11909C5A40102074823BFBBC9C2BCF2130C585B305930
1306072A8648CE3D020106082A8648CE3D030107034200042030855BE846910B
3ECB15CAF8572D3EB565BDC654A15EFAF6EDEBAA8B9E1608C5C910C93A20868F
C8504D370F1B26FA9759F67983BB78863EDA9ACBEA5124F60D6D4A4144413132
33343536373839584068987DE8B007F4E9416610BBE2D48E1D7EA1032092B8BF
CE611421950F45B22F17E214820C07E777ADF86175E25D3205568404C25FCEEC
1B817C7861A6104B3D

]]></sourcecode>
        <t>The representiation of signed_pvr in CBOR diagnostic format (with lf added) is:</t>
        <sourcecode type="cbor-diag"><![CDATA[
18([h'A10126', {}, h'A11909C5A40102074823BFBBC9C2BCF2130C585B3059301
306072A8648CE3D020106082A8648CE3D030107034200042030855BE846910B3ECB1
5CAF8572D3EB565BDC654A15EFAF6EDEBAA8B9E1608C5C910C93A20868FC8504D370
F1B26FA9759F67983BB78863EDA9ACBEA5124F60D6D4A41444131323334353637383
9', h'68987DE8B007F4E9416610BBE2D48E1D7EA1032092B8BFCE611421950F45B2
2F17E214820C07E777ADF86175E25D3205568404C25FCEEC1B817C7861A6104B3D']
)

]]></sourcecode>
        <t>The COSE payload is the PVR voucher data, encoded as a CBOR byte string. The diagnostic representation of it is shown below:</t>
        <sourcecode type="cbor-diag"><![CDATA[
{2501: {1: 2, 7: h'23BFBBC9C2BCF213', 12: h'3059301306072A8648CE3D02
0106082A8648CE3D030107034200042030855BE846910B3ECB15CAF8572D3EB565BD
C654A15EFAF6EDEBAA8B9E1608C5C910C93A20868FC8504D370F1B26FA9759F67983
BB78863EDA9ACBEA5124F6', 13: "JADA123456789"}}

]]></sourcecode>
        <t>The Pledge uses the "proximity" (key '1', SID 2502, enum value 2) assertion together with an included
proximity-registrar-pubk field (key '12', SID 2513) to inform MASA about its proximity to the specific Registrar.</t>
      </section>
      <section anchor="cose-signed-registrar-voucher-request-rvr">
        <name>COSE-signed Registrar Voucher Request (RVR)</name>
        <t>In this example the Registrar's voucher request has been signed by the JRC (Registrar) using the private key from
<xref target="jrcpriv"/>.  Contained within this voucher request is the voucher request PVR that was made by the Pledge to JRC.
Note that the RVR uses the HTTPS protocol (not CoAP) and corresponding long URI path names as defined in <xref target="RFC8995"/>.
The Content-Type and Accept headers indicate the constrained voucher format that is defined in the present document.
Because the Pledge used this format in the PVR, the JRC must also use this format in the RVR.</t>
        <artwork><![CDATA[
  REQ: POST https://masa.stok.nl/.well-known/brski/requestvoucher
  Content-Type: application/voucher+cose
  Accept: application/voucher+cose
  Body: <signed_rvr>
]]></artwork>
        <t>The payload signed_rvr is shown as hexadecimal dump (with lf added):</t>
        <sourcecode type="pseudocode"><![CDATA[
D28443A10126A11820825902843082028030820225A003020102020900C3F621
49B2E30E3E300A06082A8648CE3D0403023072311C301A06035504030C134375
73746F6D2D455220476C6F62616C204341310B3009060355040B0C0249543118
3016060355040A0C0F437573746F6D2D45522C20496E632E3111300F06035504
070C0853616E204A6F7365310B300906035504080C024341310B300906035504
0613025553301E170D3232313230363131333735395A170D3235313230353131
333735395A30818D3131302F06035504030C28437573746F6D2D455220436F6D
6D65726369616C204275696C64696E6773205265676973747261723113301106
0355040B0C0A4F6666696365206F707331183016060355040A0C0F437573746F
6D2D45522C20496E632E310F300D06035504070C064F74746F7761310B300906
035504080C024F4E310B30090603550406130243413059301306072A8648CE3D
020106082A8648CE3D030107034200042030855BE846910B3ECB15CAF8572D3E
B565BDC654A15EFAF6EDEBAA8B9E1608C5C910C93A20868FC8504D370F1B26FA
9759F67983BB78863EDA9ACBEA5124F6A3818730818430090603551D13040230
00300B0603551D0F0404030204F0301D0603551D0E04160414C9080B387D8DD8
5B3A59E7EC100B866393A9CA4C301F0603551D2304183016801492EA7640404A
8FAB4F270BF3BC379D86CD7280F8302A0603551D250101FF0420301E06082B06
01050507031C06082B0601050507030106082B06010505070302300A06082A86
48CE3D040302034900304602210091A2033692EB81503D53505FFC8DA326B1EE
7DEA96F29174F0B3341A07812201022100FF7339288108B712F418530A18025A
895408CC45E0BB678B46FBAB37DDB4D36B59024730820243308201E9A0030201
0202082AEA0413A42DC1CE300A06082A8648CE3D0403023072311C301A060355
04030C13437573746F6D2D455220476C6F62616C204341310B3009060355040B
0C02495431183016060355040A0C0F437573746F6D2D45522C20496E632E3111
300F06035504070C0853616E204A6F7365310B300906035504080C024341310B
3009060355040613025553301E170D3232313230363131333735395A170D3332
313230333131333735395A3072311C301A06035504030C13437573746F6D2D45
5220476C6F62616C204341310B3009060355040B0C0249543118301606035504
0A0C0F437573746F6D2D45522C20496E632E3111300F06035504070C0853616E
204A6F7365310B300906035504080C024341310B300906035504061302555330
59301306072A8648CE3D020106082A8648CE3D0301070342000497B1ED969164
930985BBB8AC9A2AF9455CDFEEA4B11DE2E79D068BFA803926B4005251B34F1C
0815A4CBE03FBD1BBCB635F6431A22DE78653B87B99537ECE16CA3693067300F
0603551D130101FF040530030101FF30250603551D11041E301C811A68656C70
40637573746F6D2D65722E6578616D706C652E636F6D300E0603551D0F0101FF
040403020186301D0603551D0E0416041492EA7640404A8FAB4F270BF3BC379D
86CD7280F8300A06082A8648CE3D0403020348003045022100D6D813B390BD3A
7B4E85424BCB1ED933AD1E981F2817B59083DD6EC1C5E3FADF02202CEE440619
2BC767E98D7CFAE044C6807481AD8564A7D569DCA3D1CDF1E5E843590124A119
09C5A60102027818323032322D31322D30365432303A30343A31352E3735345A
05581A041830168014CB8D98CA74C51B58DDE7ACEF869A9443A8D666A6074823
BFBBC9C2BCF2130958C9D28443A10126A0587EA11909C5A40102074823BFBBC9
C2BCF2130C585B3059301306072A8648CE3D020106082A8648CE3D0301070342
00042030855BE846910B3ECB15CAF8572D3EB565BDC654A15EFAF6EDEBAA8B9E
1608C5C910C93A20868FC8504D370F1B26FA9759F67983BB78863EDA9ACBEA51
24F60D6D4A414441313233343536373839584068987DE8B007F4E9416610BBE2
D48E1D7EA1032092B8BFCE611421950F45B22F17E214820C07E777ADF86175E2
5D3205568404C25FCEEC1B817C7861A6104B3D0D6D4A41444131323334353637
38395840B1DD40B10787437588AEAC9036899191C16CCDBECA31C197855CCB6B
BA142D709FE329CBC3F76297D6063ACB6759EAB98E96EA4C4AA2135AA48A247B
AC1D6A3F

]]></sourcecode>
        <t>The representation of signed_rvr in CBOR diagnostic format (with lf added) is:</t>
        <sourcecode type="cbor-diag"><![CDATA[
18([h'A10126', {32: [h'3082028030820225A003020102020900C3F62149B2E30
E3E300A06082A8648CE3D0403023072311C301A06035504030C13437573746F6D2D4
55220476C6F62616C204341310B3009060355040B0C02495431183016060355040A0
C0F437573746F6D2D45522C20496E632E3111300F06035504070C0853616E204A6F7
365310B300906035504080C024341310B3009060355040613025553301E170D32323
13230363131333735395A170D3235313230353131333735395A30818D3131302F060
35504030C28437573746F6D2D455220436F6D6D65726369616C204275696C64696E6
7732052656769737472617231133011060355040B0C0A4F6666696365206F7073311
83016060355040A0C0F437573746F6D2D45522C20496E632E310F300D06035504070
C064F74746F7761310B300906035504080C024F4E310B30090603550406130243413
059301306072A8648CE3D020106082A8648CE3D030107034200042030855BE846910
B3ECB15CAF8572D3EB565BDC654A15EFAF6EDEBAA8B9E1608C5C910C93A20868FC85
04D370F1B26FA9759F67983BB78863EDA9ACBEA5124F6A3818730818430090603551
D1304023000300B0603551D0F0404030204F0301D0603551D0E04160414C9080B387
D8DD85B3A59E7EC100B866393A9CA4C301F0603551D2304183016801492EA7640404
A8FAB4F270BF3BC379D86CD7280F8302A0603551D250101FF0420301E06082B06010
50507031C06082B0601050507030106082B06010505070302300A06082A8648CE3D0
40302034900304602210091A2033692EB81503D53505FFC8DA326B1EE7DEA96F2917
4F0B3341A07812201022100FF7339288108B712F418530A18025A895408CC45E0BB6
78B46FBAB37DDB4D36B', h'30820243308201E9A00302010202082AEA0413A42DC1
CE300A06082A8648CE3D0403023072311C301A06035504030C13437573746F6D2D45
5220476C6F62616C204341310B3009060355040B0C02495431183016060355040A0C
0F437573746F6D2D45522C20496E632E3111300F06035504070C0853616E204A6F73
65310B300906035504080C024341310B3009060355040613025553301E170D323231
3230363131333735395A170D3332313230333131333735395A3072311C301A060355
04030C13437573746F6D2D455220476C6F62616C204341310B3009060355040B0C02
495431183016060355040A0C0F437573746F6D2D45522C20496E632E3111300F0603
5504070C0853616E204A6F7365310B300906035504080C024341310B300906035504
06130255533059301306072A8648CE3D020106082A8648CE3D0301070342000497B1
ED969164930985BBB8AC9A2AF9455CDFEEA4B11DE2E79D068BFA803926B4005251B3
4F1C0815A4CBE03FBD1BBCB635F6431A22DE78653B87B99537ECE16CA3693067300F
0603551D130101FF040530030101FF30250603551D11041E301C811A68656C704063
7573746F6D2D65722E6578616D706C652E636F6D300E0603551D0F0101FF04040302
0186301D0603551D0E0416041492EA7640404A8FAB4F270BF3BC379D86CD7280F830
0A06082A8648CE3D0403020348003045022100D6D813B390BD3A7B4E85424BCB1ED9
33AD1E981F2817B59083DD6EC1C5E3FADF02202CEE4406192BC767E98D7CFAE044C6
807481AD8564A7D569DCA3D1CDF1E5E843']}, h'A11909C5A601020278183230323
22D31322D30365432303A30343A31352E3735345A05581A041830168014CB8D98CA7
4C51B58DDE7ACEF869A9443A8D666A6074823BFBBC9C2BCF2130958C9D28443A1012
6A0587EA11909C5A40102074823BFBBC9C2BCF2130C585B3059301306072A8648CE3
D020106082A8648CE3D030107034200042030855BE846910B3ECB15CAF8572D3EB56
5BDC654A15EFAF6EDEBAA8B9E1608C5C910C93A20868FC8504D370F1B26FA9759F67
983BB78863EDA9ACBEA5124F60D6D4A414441313233343536373839584068987DE8B
007F4E9416610BBE2D48E1D7EA1032092B8BFCE611421950F45B22F17E214820C07E
777ADF86175E25D3205568404C25FCEEC1B817C7861A6104B3D0D6D4A41444131323
3343536373839', h'B1DD40B10787437588AEAC9036899191C16CCDBECA31C19785
5CCB6BBA142D709FE329CBC3F76297D6063ACB6759EAB98E96EA4C4AA2135AA48A24
7BAC1D6A3F'])

]]></sourcecode>
      </section>
      <section anchor="cose-signed-voucher-from-masa">
        <name>COSE-signed Voucher from MASA</name>
        <t>The resulting voucher is created by the MASA and returned to the Registrar:</t>
        <artwork><![CDATA[
  RES: 200 OK
  Content-Type: application/voucher+cose
  Body: <signed_voucher>
]]></artwork>
        <t>The Registrar then returns the voucher to the Pledge:</t>
        <artwork><![CDATA[
  RES: 2.04 Changed
  Content-Format: 836
  Body: <signed_voucher>
]]></artwork>
        <t>It is signed by the MASA's private key (see <xref target="masapriv"/>) and can be
verified by the Pledge using the MASA's public key that it stores.</t>
        <t>Below is the binary signed_voucher, encoded in hexadecimal (with lf added):</t>
        <sourcecode type="pseudocode"><![CDATA[
D28443A10126A0590288A1190993A60102027818323032322D31322D30365432
303A32333A33302E3730385A03F4074857EED786AD4049070859024730820243
308201E9A00302010202082AEA0413A42DC1CE300A06082A8648CE3D04030230
72311C301A06035504030C13437573746F6D2D455220476C6F62616C20434131
0B3009060355040B0C02495431183016060355040A0C0F437573746F6D2D4552
2C20496E632E3111300F06035504070C0853616E204A6F7365310B3009060355
04080C024341310B3009060355040613025553301E170D323231323036313133
3735395A170D3332313230333131333735395A3072311C301A06035504030C13
437573746F6D2D455220476C6F62616C204341310B3009060355040B0C024954
31183016060355040A0C0F437573746F6D2D45522C20496E632E3111300F0603
5504070C0853616E204A6F7365310B300906035504080C024341310B30090603
550406130255533059301306072A8648CE3D020106082A8648CE3D0301070342
000497B1ED969164930985BBB8AC9A2AF9455CDFEEA4B11DE2E79D068BFA8039
26B4005251B34F1C0815A4CBE03FBD1BBCB635F6431A22DE78653B87B99537EC
E16CA3693067300F0603551D130101FF040530030101FF30250603551D11041E
301C811A68656C7040637573746F6D2D65722E6578616D706C652E636F6D300E
0603551D0F0101FF040403020186301D0603551D0E0416041492EA7640404A8F
AB4F270BF3BC379D86CD7280F8300A06082A8648CE3D04030203480030450221
00D6D813B390BD3A7B4E85424BCB1ED933AD1E981F2817B59083DD6EC1C5E3FA
DF02202CEE4406192BC767E98D7CFAE044C6807481AD8564A7D569DCA3D1CDF1
E5E8430B6D4A4144413132333435363738395840DF31B21A6AD3F5AC7F4C8B02
6F551BD28FBCE62330D3E262AC170F6BFEDDBA5F2E8FBAA2CAACFED9E8614EAC
5BF2450DADC53AC29DFA30E8787A1400B2E7C832

]]></sourcecode>
        <t>The representiation of signed_voucher in CBOR diagnostic format (with lf added) is:</t>
        <sourcecode type="cbor-diag"><![CDATA[
18([h'A10126', {}, h'A1190993A60102027818323032322D31322D30365432303
A32333A33302E3730385A03F4074857EED786AD4049070859024730820243308201E
9A00302010202082AEA0413A42DC1CE300A06082A8648CE3D0403023072311C301A0
6035504030C13437573746F6D2D455220476C6F62616C204341310B3009060355040
B0C02495431183016060355040A0C0F437573746F6D2D45522C20496E632E3111300
F06035504070C0853616E204A6F7365310B300906035504080C024341310B3009060
355040613025553301E170D3232313230363131333735395A170D333231323033313
1333735395A3072311C301A06035504030C13437573746F6D2D455220476C6F62616
C204341310B3009060355040B0C02495431183016060355040A0C0F437573746F6D2
D45522C20496E632E3111300F06035504070C0853616E204A6F7365310B300906035
504080C024341310B30090603550406130255533059301306072A8648CE3D0201060
82A8648CE3D0301070342000497B1ED969164930985BBB8AC9A2AF9455CDFEEA4B11
DE2E79D068BFA803926B4005251B34F1C0815A4CBE03FBD1BBCB635F6431A22DE786
53B87B99537ECE16CA3693067300F0603551D130101FF040530030101FF302506035
51D11041E301C811A68656C7040637573746F6D2D65722E6578616D706C652E636F6
D300E0603551D0F0101FF040403020186301D0603551D0E0416041492EA7640404A8
FAB4F270BF3BC379D86CD7280F8300A06082A8648CE3D0403020348003045022100D
6D813B390BD3A7B4E85424BCB1ED933AD1E981F2817B59083DD6EC1C5E3FADF02202
CEE4406192BC767E98D7CFAE044C6807481AD8564A7D569DCA3D1CDF1E5E8430B6D4
A414441313233343536373839', h'DF31B21A6AD3F5AC7F4C8B026F551BD28FBCE6
2330D3E262AC170F6BFEDDBA5F2E8FBAA2CAACFED9E8614EAC5BF2450DADC53AC29D
FA30E8787A1400B2E7C832'])

]]></sourcecode>
        <t>In the above, the third element in the array is the voucher data encoded as a CBOR byte string.
When decoded, it can be represented by the following CBOR diagnostic notation:</t>
        <sourcecode type="cbor-diag"><![CDATA[
{2451: {1: 2, 2: "2022-12-06T20:23:30.708Z", 3: false, 7: h'57EED786
AD404907', 8: h'30820243308201E9A00302010202082AEA0413A42DC1CE300A06
082A8648CE3D0403023072311C301A06035504030C13437573746F6D2D455220476C
6F62616C204341310B3009060355040B0C02495431183016060355040A0C0F437573
746F6D2D45522C20496E632E3111300F06035504070C0853616E204A6F7365310B30
0906035504080C024341310B3009060355040613025553301E170D32323132303631
31333735395A170D3332313230333131333735395A3072311C301A06035504030C13
437573746F6D2D455220476C6F62616C204341310B3009060355040B0C0249543118
3016060355040A0C0F437573746F6D2D45522C20496E632E3111300F06035504070C
0853616E204A6F7365310B300906035504080C024341310B30090603550406130255
533059301306072A8648CE3D020106082A8648CE3D0301070342000497B1ED969164
930985BBB8AC9A2AF9455CDFEEA4B11DE2E79D068BFA803926B4005251B34F1C0815
A4CBE03FBD1BBCB635F6431A22DE78653B87B99537ECE16CA3693067300F0603551D
130101FF040530030101FF30250603551D11041E301C811A68656C7040637573746F
6D2D65722E6578616D706C652E636F6D300E0603551D0F0101FF040403020186301D
0603551D0E0416041492EA7640404A8FAB4F270BF3BC379D86CD7280F8300A06082A
8648CE3D0403020348003045022100D6D813B390BD3A7B4E85424BCB1ED933AD1E98
1F2817B59083DD6EC1C5E3FADF02202CEE4406192BC767E98D7CFAE044C6807481AD
8564A7D569DCA3D1CDF1E5E843', 11: "JADA123456789"}}

]]></sourcecode>
        <t>The largest element in the voucher is identified by key 8, which decodes to SID 2459 (pinned-domain-cert).
It contains the complete PKIX (DER-encoded X.509v3) certificate of the Registrar's domain CA. This certificate is
shown in <xref target="cose-example-domain-ca-cert"/>.</t>
      </section>
    </section>
    <section anchor="appendix-gencerts">
      <name>Generating Certificates with OpenSSL</name>
      <t>This informative appendix shows example Bash shell scripts to generate test PKIX certificates for the Pledge IDevID, the Registrar and the MASA.
The shell scripts cannot be run stand-alone because they depend on input files which are not all included in this appendix. Nevertheless,
these scripts may provide guidance on how OpenSSL can be configured for generating cBRSKI certificates.</t>
      <t>The scripts were tested with OpenSSL 3.0.2. Older versions may not work -- OpenSSL 1.1.1 for example does not support all extensions used.</t>
      <sourcecode type="bash"><![CDATA[
<CODE BEGINS>
#!/bin/bash
# File: create-cert-Pledge.sh
# Create new cert for: Pledge IDevID

# days certificate is valid - try to get close to the 802.1AR 
# specified 9999-12-31 end date.
SECONDS1=`date +%s` # time now
SECONDS2=`date --date="9999-12-31 23:59:59Z" +%s` # target end time
let VALIDITY="(${SECONDS2}-${SECONDS1})/(24*3600)"
echo "Using validity param -days ${VALIDITY}"

NAME=pledge

# create csr for device
# conform to 802.1AR guidelines, using only CN + serialNumber when 
# manufacturer is already present as CA.
# CN is not even mandatory, but just good practice.
openssl req -new -key keys/privkey_pledge.pem -out $NAME.csr -subj \
             "/CN=Stok IoT sensor Y-42/serialNumber=JADA123456789"

# sign csr - it uses faketime only to get endtime to 23:59:59Z
faketime '23:59:59Z' \
openssl x509 -set_serial 32429 -CAform PEM -CA output/masa_ca.pem \
  -CAkey keys/privkey_masa_ca.pem -extfile x509v3.ext -extensions \
  pledge_ext -req -in $NAME.csr -out output/$NAME.pem \
  -days $VALIDITY -sha256

# Note: alternative method using 'ca' command. Currently 
# doesn't work without 'country' subject field.
# openssl ca -rand_serial -enddate 99991231235959Z -certform PEM \
#  -cert output/masa_ca.pem -keyfile keys/privkey_masa_ca.pem \
#  -extfile x509v3.ext -extensions pledge_ext -in $NAME.csr \ 
#  -out $NAME.pem -outdir output

# delete temp files
rm -f $NAME.csr

# convert to .der format
openssl x509 -in output/$NAME.pem -inform PEM -out output/$NAME.der \
             -outform DER

<CODE ENDS>
]]></sourcecode>
      <sourcecode type="pseudocode"><![CDATA[
<CODE BEGINS>
# File: x509v3.ext
# This file contains all X509v3 extension definitions for OpenSSL
# certificate generation. Each certificate has its own _ext 
# section below.

[ req ]
prompt = no

[ masa_ca_ext ]
subjectAltName=email:info@masa.stok.nl
keyUsage = critical,digitalSignature, keyCertSign, cRLSign
basicConstraints = critical,CA:TRUE,pathlen:3
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid

[ pledge_ext ]
keyUsage = critical,digitalSignature, nonRepudiation, \
           keyEncipherment, dataEncipherment
# basicConstraints for a non-CA cert MAY be marked either 
# non-critical or critical.
basicConstraints = CA:FALSE
# Don't include subjectKeyIdentifier (SKI) - see 802.1AR-2018
subjectKeyIdentifier = none
authorityKeyIdentifier=keyid
# Include the MASA URI
1.3.6.1.5.5.7.1.32 = ASN1:IA5STRING:masa.stok.nl

[ domain_ca_ext ]
subjectAltName=email:help@custom-er.example.com
keyUsage = critical, keyCertSign, digitalSignature, cRLSign
basicConstraints=critical,CA:TRUE
# RFC 5280 4.2.1.1 : AKI MAY be omitted, and MUST be non-critical; 
# SKI MUST be non-critical
subjectKeyIdentifier=hash

[ registrar_ext ]
keyUsage = critical, digitalSignature, nonRepudiation, \
           keyEncipherment, dataEncipherment
basicConstraints=CA:FALSE
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
# Set Registrar 'RA' flag along with TLS client/server usage
#  see draft-ietf-anima-constrained-voucher#section-7.3
#  see tools.ietf.org/html/rfc6402#section-2.10
#  see www.openssl.org/docs/man1.1.1/man5/x509v3_config.html
extendedKeyUsage = critical,1.3.6.1.5.5.7.3.28, serverAuth, \
                   clientAuth

<CODE ENDS>
]]></sourcecode>
      <sourcecode type="bash"><![CDATA[
<CODE BEGINS>
#!/bin/bash
# File: create-cert-Registrar.sh
# Create new cert for: Registrar in a company domain

# days certificate is valid
VALIDITY=1095

# cert filename
NAME=registrar

# create csr
openssl req -new -key keys/privkey_registrar.pem -out $NAME.csr \
 -subj "/CN=Custom-ER Registrar/OU=Office dept/O=Custom-ER, Inc./\
L=Ottowa/ST=ON/C=CA"

# sign csr
openssl x509 -set_serial 0xC3F62149B2E30E3E -CAform PEM -CA \
 output/domain_ca.pem -extfile x509v3.ext -extensions registrar_ext \
 -req -in $NAME.csr -CAkey keys/privkey_domain_ca.pem \
 -out output/$NAME.pem -days $VALIDITY -sha256

# delete temp files
rm -f $NAME.csr

# convert to .der format
openssl x509 -in output/$NAME.pem -inform PEM -out output/$NAME.der \
             -outform DER

<CODE ENDS>
]]></sourcecode>
      <sourcecode type="bash"><![CDATA[
<CODE BEGINS>
#!/bin/bash
# File: create-cert-MASA.sh
# Create new cert for: MASA CA, self-signed CA certificate

# days certificate is valid
VALIDITY=3650

NAME=masa_ca

# create csr
openssl req -new -key keys/privkey_masa_ca.pem -out $NAME.csr \
            -subj "/CN=masa.stok.nl/O=vanderstok/L=Helmond/C=NL"

# sign csr
mkdir output >& /dev/null
openssl x509 -set_serial 0xE39CDA17E1386A0A  -extfile x509v3.ext \
 -extensions masa_ca_ext -req -in $NAME.csr \
 -signkey keys/privkey_masa_ca.pem -out output/$NAME.pem \
 -days $VALIDITY -sha256

# delete temp files
rm -f $NAME.csr

# convert to .der format
openssl x509 -in output/$NAME.pem -inform PEM -out output/$NAME.der \
             -outform DER

<CODE ENDS>
]]></sourcecode>
    </section>
    <section anchor="appendix-pledge-profiles">
      <name>Pledge Device Class Profiles</name>
      <t>This specification allows implementers to select between various functional options for the Pledge,
yielding different code size footprints and different requirements on Pledge hardware.
Thus for each product an optimal trade-off between functionality, development/maintenance cost and hardware cost can be made.</t>
      <t>This appendix illustrates different selection outcomes by means of defining different example "profiles" of constrained Pledges. In the following
subsections, these profiles are defined and a comparison is provided.</t>
      <section anchor="profile-min">
        <name>Minimal Pledge</name>
        <t>The Minimal Pledge profile (Min) aims to reduce code size and hardware cost to a minimum. This comes with some severe functional restrictions, in particular:</t>
        <ul spacing="normal">
          <li>
            <t>No support for EST re-enrollment: whenever this would be needed, a factory reset followed by a new onboarding process is required.</t>
          </li>
          <li>
            <t>No support for change of Registrar: for this case, a factory reset followed by a new onboarding process is required.</t>
          </li>
        </ul>
        <t>This profile would be appropriate for single-use devices which must be replaced rather than re-deployed.
That might  include medical devices, but also sensors used during construction, such as concrete temperature  sensors.</t>
      </section>
      <section anchor="profile-typ">
        <name>Typical Pledge</name>
        <t>The Typical Pledge profile (Typ) aims to support a typical cBRSKI feature set including EST re-enrollment support and Registrar changes.</t>
      </section>
      <section anchor="profile-full">
        <name>Full-featured Pledge</name>
        <t>The Full-featured Pledge profile (Full) illustrates a Pledge category that supports multiple onboarding methods, hardware real-time clock, BRSKI/EST resource discovery, and
CSR Attributes request/response. It also supports most of the optional features defined in this specification.</t>
      </section>
      <section anchor="comparison-chart-of-pledge-classes">
        <name>Comparison Chart of Pledge Classes</name>
        <t>The below table specifies the functions implemented in the three example Pledge classes Min (<xref target="profile-min"/>), Typ (<xref target="profile-typ"/>) and Full (<xref target="profile-full"/>).</t>
        <table>
          <thead>
            <tr>
              <th align="left">Functions Implemented</th>
              <th align="center">Min</th>
              <th align="center">Typ</th>
              <th align="center">Full</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <strong>General</strong></td>
              <td align="center"> </td>
              <td align="center"> </td>
              <td align="center"> </td>
            </tr>
            <tr>
              <td align="left">Support cBRSKI onboarding</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">Support other onboarding method(s)</td>
              <td align="center">-</td>
              <td align="center">-</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">Real-time clock and cert time checks</td>
              <td align="center">-</td>
              <td align="center">-</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">
                <strong>cBRSKI</strong></td>
              <td align="center"> </td>
              <td align="center"> </td>
              <td align="center"> </td>
            </tr>
            <tr>
              <td align="left">Discovery for rt=brski*</td>
              <td align="center">-</td>
              <td align="center">-</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">Support pinned Registrar public key (RPK)</td>
              <td align="center">Y</td>
              <td align="center">-</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">Support pinned Registrar certificate</td>
              <td align="center">-</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">Support pinned Domain CA</td>
              <td align="center">-</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">
                <strong>EST-coaps</strong></td>
              <td align="center"> </td>
              <td align="center"> </td>
              <td align="center"> </td>
            </tr>
            <tr>
              <td align="left">Explicit TA database size (#certs)</td>
              <td align="center">0</td>
              <td align="center">3</td>
              <td align="center">8</td>
            </tr>
            <tr>
              <td align="left">Discovery for rt=ace.est*</td>
              <td align="center">-</td>
              <td align="center">-</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">GET /att and response parsing</td>
              <td align="center">-</td>
              <td align="center">-</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">GET /crts format 62 (multiple CA certs)</td>
              <td align="center">-</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">GET /crts format 281 (multiple CA certs)</td>
              <td align="center">-</td>
              <td align="center">-</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">ETag handling support for GET /crts</td>
              <td align="center">-</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">Re-enrollment supported</td>
              <td align="center">- (*)</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">6.6.1 optimized procedure</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
              <td align="center">-</td>
            </tr>
            <tr>
              <td align="left">Pro-active re-enrollment at own initiative</td>
              <td align="center">-</td>
              <td align="center">-</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">Periodic trust anchor retrieval GET /crts</td>
              <td align="center">- (*)</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">Supports change of Registrar identity</td>
              <td align="center">- (*)</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
            </tr>
          </tbody>
        </table>
        <t>Notes: (*) means only possible via a factory-reset followed by a new cBRSKI onboarding procedure.</t>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+S9+3bb2JU3+L/W0jvgU61ZpjokdbNlW0mnWyWrEqV8UUty
0j2dfLUgEpQQkQAbACWrXTXPMs8yTzb7fvYBQNlO8s33x1S6qygSONd99tnX
3x6NRpsbTd7Ms6PkpCzqpkrzIpsm35dlg38sl3lxk1xki7LJkstssqqy5Mfs
MTkrZlUKD6wmDX41mHx/cfnj2fbmRnp9XWX3rcbwN/fMtJwU6QJ6nFbprBnl
WTMbpUW+SEeT8NbovlxNbrNqtP98c2Nzo27SYvpTOi8LeA/6zfDLfFnRH3Wz
v7v7encfuq+y9AhG12RVkTWbGw83Rwk1nfyprO5wLr+rytVyc+PuITw2eoPj
2NyYpM1RUjdT7A3aWcATp1c/wPcwqqyoV7X2vFpO0yaDP1+9fv1imLzee/4K
h7PMjxL457tkkhbJqs6StKrSx2SQz5J0Pk8es3o7KavkNq1vE5gZNJQkTTk5
wl/wc11W0O+sPqJGptksXc2bGh6xBx4X/Dv9DbNdNbdldYQfR0lewA/vxslF
PrlNq2ldFvgKL/Q7/C6bt34rK1idS1jXbL6AEV+Ws+YBFpCWivrLFmk+P0oW
k+pXuEn/Wuuz40nqOj0fJ/fw/jSrksumvAvdnmewwJ3fqNt7bKqq4asElxcm
mhaTR9cp/oS//Ov19S1+My7mcZc/potlWqR3ee06TIuybv1C3Z3k9aRMLh/r
Jlv4qS3v+Nl/neAD40m5cJ2cjpM3+V/dfE7ru9K+onbPyis3fBqjtZ3B0+Mp
PP2vedm0n8L/FWW1SJv8PoMd/C5JLn442d/be32ETcDn53uvD+zz/t6ufn6x
/yp8Pnyxr58Pdw8P7fPB85f2+eWhPfNy/8Wu+xy+f+2+f/3CxvDq4PDwOoel
OBu9GbtzWs0m8pM++Py5dQ6fQwOHYeCvXrrPr90zcIj08+vdgz0guBx7mY9q
ZDh58xh+3A8PhtHD+XvpPr+yzweH1uHrF/vcSZ5l2avd/dHe8QX9DUcwrW4y
OPlbt02zPNrZIVaDp2SMz45hn3dmeTEFxlDbbzvQxBiaGCHjGd82i/mWNMa8
dOvs9PQ0kYeUcb7J7vNJlpxNs6LJZ3lWyTt2jBP6h2iPG7iU7uRB5DpHCXZJ
3K+YOQJiOnn+3GjmcP9VoI3D17YSh68ObIVe7h44eth/5ffdbc+uW3Vu3+hh
UlbZqM6n8beH83K0yOrb0Twv7kYZrNr1PK9vFzBxe/Buld3OswdY2RHz01GT
3tivlXEqIblFWvP9kAPfgEnDp7jP7g3y1zIvRsuq/PQYPzlP77JRNr1F1nv6
5vcfTnra+etDrTdQa8LXZQUvFzA1YG7pPIwim9xlVSPvX1f1XT6aIle5z6rH
9qLVmTRUTMopDHUCb9IzJx8uT0dVdpPDLB6PYpo6+f7DRfLh+q/ZpEku85sC
rzOgj+S0mFSPS1ySZIDvbyfawFYPhddA4g8PD+Mc2B4Rd1rX0BjuTb2DI6N/
jT85ou4n0OP3xy263HuJf1/dwuU5bY2dv0zq1XIJt1yyTG+yYfKnW1hDYNpL
uAmeGmpDL9/gzU0jlla+o/eX/vXekUrfdPMP4dafjKNxb6WTSVbXIKjs7+4f
jPb2Rvt7W3jA7rNixUeLGTrt7L/iDuIo8PubvLldXcsvo4ebnR4Bhi6U0ShJ
r/GXSYN/X93mdQJi0ApXHW96eAEu+tvsHyGEJUDyIFaU8yHIP7dwjvCLezg2
dZKCjDFfEaUA70hqbuu/s6ocNTjapCyuSzh22F85AzKqy1U1yfypSgZw523D
mJGX1bDCIJ7gwEGOegC5YXMD3kthbrBkRVI+FFk1Tmi6OqoEp54hyUFjOArf
uLRSDxMe+QLkp9v0Pkvm+QL2eopblkJ/sJU3t8tVg/IUPLO5kX0CKsjhOGXJ
rMr+a4XrukzhRDbJvKzrccKLg52nIHxUQP0NThGHzr/YqknXIMDBswUIccCs
Yd8SGfL1I74EUixzc5CGVvgzLCRMBeQ8eAQb3ZLt35LmsgJ4IG1BkT3I8tHp
xYdpnZ7VOn0U+RarZgWtPRJJ44UB0mk23twAmp9nbtjSDS8MzE44CmxM8ofL
D++HOnGeDiw2yDswGeQlyn20jTESZm+7RKE50Q128anJCnzvAcifp0O78rgk
Ik4bFHfLByaxBS5JZc3V+X9ntXR0WlTlfE5HAJmkkvZVlRY1cYnB6eWVI2ec
A02MRjjEoVTZcp5OdCjw+AhbGp2Ux+eXvwYBGdb391dX55fxq90331y9vWRx
A77Bt4GTYhvb4/Zh/ciyP96GJP7THuIfKHmM9bAv8ul0TjrKd6hmVOUUDmmO
Yvfmhkwzc7Of0SoW5VRPVN+Z4JFGv9ALSzimyLyTVZED4SdwccKSFze0zse4
XTBTeh7m//mzXPW//DIEbjy5Dc3/487aGZya6ZToBXYJRsYDxQ6us2gGcJgy
IP0bIPN74LHpdQ7X6uMwWQCzqx6TGpqFewKXGCmVqGfMDDT7ZvbY4o7IhCZV
fu3WBffzl19AkftqfjmA0wmsDlZru8U7cUMHKzhgxSy/QbIyngkTgAXKmyGe
4jpz/AA6hOaFiWwt4d+wiVvDBNY4Xy6VVtME+Q0szwiut4YfPsPTmc67Iiaw
a/ju7M12MqizDKbp5N9ffkHy/ljjiJGh8JP0Ufqm8fCs549CsbReQKKpUk7Y
EDpbtmLr1jd5SN0NAC0BTSzggMzTaigcMb4duRli3HDTY9M1rBG/i4M1ggJK
g5WH+wleWs7LR5JpdHigOYOsOmy1TmwxaiTww8D6cVT6JVF83YQf+fp2s2TN
CCaKr9XLbII7wcw39IHiBU+m9xY6Er4trHIS/xqGjVxqdJ0id3PtASMk5gkX
d7qs4ZSWCx4bMinY9gQkaJwLMOuCmsEXiAczt2QuAcrBL7+MYaTh7oTDnM1n
tP54nfFFNW9yoBeTFpJ5dp/Na+Uc1L67QGB4JQmrQK4zOCAkyo+hSzjIcK3k
n0ZMfCi5z+Cuw4XM5/MVrlxDs855T8/sIsAebOnh8fadCFxGrClAzHD1z4GN
EPXgDamHCukxJU4BG3nyThYBNWxYhPYtYOuPh5fkciHw56/b/WuPKbNDov2Z
Mr+YYJj8YR3muUkKKNDL3u3iUNw4Wf3DFlEacUSopFnTyGXspFnIoeu7/XGh
Gr164esV8YXrEhYnuhjtThXSpC+BsotswirINbCFLCuSc9pGvh9ZH0mrbeqF
jjzSMrzC64D3b3TlZtRHb7vWGDX97vjyuLdVHj+1S8PdpqX4/BnJ/D7PHmAp
4ZXPn01Hgy94FZViiWAmbekQRrvIYJmQkPWWo95xNMDH4LBPWD9lEfoGGVui
h9n119JmoXv9ogYmushYTLWWiC3bKIStTLDjJe73hLpxfA+va2SFwqWJyWeT
26Kclzc53ULvQZBjgmFu3BnQkMcRf003Ia8QvkTTzhdwZrHXVI+4LBuKm2VB
w8GrRC7WqWxFtbzrLkIu4lLWktSlRe19UdZNpJcwuaGNFn5F6yu8c5E+JOer
6zmsE0gEdTK4OP/RRDptO53c5sCxapNVSUbF1+n8lqRw13w078t8imwAVxN1
dlRyQF1u4HY8//Hs35EH2/4Dm7M1K5nN8hhl9sLmAj2UhWr+aQULYVIIiEK4
2tDZnFq6Bdk61eOFQpU2QX3gtMpV7cSRHS9qLoVeSUwHxhFOk/YH8ptup0gG
sJiLDBRrmDqsW+DesBWpn9N3yVVWLXIiscfE/vn8nfv6F5UWZiUqCUyW1YLp
Y+1VKpyxykSQn7JGRPoRisw8H2XPR+gIYBY4FFV0mPwBNi3wjp2TssTFSUGQ
SgZ/uDjZBqET2PSE1s4eGybvvH53TOYFuj3UACNfoZFyQLxoKCsy9K18sM2A
z6jsDZM/Ctt9g0SGs/ujaWH9CxRucZGjvmE53rA+fnI8dHrHUCQ+WZtztJQN
k7fynVdshyDBg7g/lf/CpQwaOhL8VwyWxYhvGewpKCywEQ1ognDrJ8fF5BY3
6QrXNvx2TMcTRZ8hGhiq6Qj54CP8YIPCoeg50eW+YPFtiOwxnVRl8QiP/PGC
tEljPSQcgMCIR4plzLb0p5dRONWmzNu2x+MIB+2poVz8fUOJ70b8Bmly3LU5
mQBDY9si5nWS4aEhQ8NWp9d/H7/YfX1/kIhU1iPdo2NCBI6zgvW17FOKrKRm
EQ0GhgSy9effnHx4c5p8f/q7s/eXf/7tFrRVlI2MBzSaivh9GjVB89E3T9+/
offweRAZ9Xb0z4sQkc3n+bKGiQ+2xuPx1jYONmWBbZqnNwWwbrgboHfm2NeP
jQ1TBwXq1qoiabkmXXdCNws+KVw0R/0WJEtgy6wmogcUGILeM9Z6XscMbr1N
WZbxOyKRvMr4Qn+bFjerFCjt83ew93P4y5jpHei7cMsDg9569/HyCnRG+m/y
/gN9vjj9t49nF6dv8PPl74/fvrUPG/LE5e8/fHz7JnwKb558ePcOFpxfhm+T
6KuNrXfH/7HF7Hnrw/nV2Yf3x2+3+FR7esPjzxJajl7XZZWhjJbWGxEdfX9y
/v/833vPYW3+h3jDgHPwH6/2Xj5H3fE2K7i3sgAGwn/C7jxuoPoAdI8bPJ+D
Er3MQTeuSeDmrUEVcLzxm3+Zo4g3OvyX327wGn8QgRC39VwVrM/fmZzIt3Wk
2KnFNrXDSJSAft+0BoG/wWPyCc0owFC9Aa+OT6mYNlIUmWbkKq0ekfZEg8JT
AC+OyFb1qLItkJJQt3WCn+BhFa9QRk29XG/jyktht0/xLdqs62yOUpEq6JN5
WeMO3mR4FIbM31NnsFzypb+Em4SOLy4dDPMSxoeCKbTC8pu7wIZuAmwgvs8K
kq9TEldTVgucDqCsLvVjTyOOexUmRhqn6Yy+HdYN0oTcU/MSLqNEdFeQ6EGP
NaOBmnzaA8lpIwu+0dgirL2iSpzeZWGMLXafDOC62UajuF9yai0vJvPVVIgE
nmJDCxrQgH69qNZpEq4NuBzRDMiaSAJsAj6zRKL8kcfzrI6udh4IPifCq+ue
VDf5b17XK7aIsQoZ24yV1oLlrBBfjCi+yNcb4mNMOiTCe9EqB9Uf5WaSOIVA
w4R5vYl3kOWZDObxvFojocur1tvLLzRbJZZ5UYipLnoAloclFGLgmxvHM4ph
iOT6mb+Hh37zWbhybhHfrjhFgFzKa9QcmAYn4dYVuhSDjBhvnN3G63+rvCEL
DFw4HKGiepBaGUHmnGR+bLfACbljZLaNjUenmwzeiqlQuTdsEImqeWMhLfS9
vQGT5BaNEbAvLZlUGT2DHHhzAx5DXywNhk/b2blZD4n+WL1w7ZFp2rWCmi1s
vWlSTuc1HqTa7SMfS6bapFw1qGCycDEBnYz3z11OPeLRtMz4VuejXDyy06NW
XZ8ayxbInSdkDhBSEpoggYfIjI04wWYjE2WLHcylY95xQgKuBuhaC9A3Oo4y
MxgXwUEQ5M0H5EGwirhKdb+BkZg8hrVMYSLwHJAf3Kfte/uI3xqRQfHzZ/Zq
A8dBG6Jq4tbiU4Yfvum4MWI21ho69l1zZH2P2/uSYJsvMjWByvKz3Zq9xKi1
XK+a5Ca/z+Ty611I1E+KeX6HywArT54QoOYVrkwCu0Cm4yyv6Bg85HMcX4IG
/sWCLuR3IEuqEUIOco9NubZXQX5BQWS6ImnTqeg4QXoIO5rDqFnpIroT/rpG
LIjMutmnZV490sjr8RMyDFmRUSCOrJZkHMSB6S732sdlK/p+q1S5YfenqX/A
/cyyLbbt9W8nJMReZ7HvVRl+7+GhTshZoxESLan7jxcjfI9E7DP26taO8S6r
/B53HCVqkJnKCUoQ4nlBpilOEse10UK+fib9MyDiTY7ndWlHbkKaLE2pZxq0
Wj88sReVly4iC6awHN3IIKYwG589du/asBxO6oAbbLYCsiRdMZr/93C8UBJX
ixe8iw+N0E6wucHeHq8s9tn9hp3rMjbese0uWhrzBDy1Lj0rgVNnaSMDvRAE
AdALU44jRYbQuhVF9OCvYVisKh/7FYAr7vqJJcAwlAYjUGiG5z92ZA6SfkEe
EcMoTse1XpsPH5hRBaOaPwb1ndRy8QQME2RfYmpOrjxrxpNK55qfjK1tdNcS
Y5yt6JKyu46uIGIpXkrRNijaAIWQ6TjBMYvqPYzdC9i19z1sbpzgkP0E8TL4
QnAU3hALZnbEANm1gjdjnd7Datd4zh9A3cf/sq/4NiXOep0VMM9G3Oc4tB06
ZPP8GpY+zyjWBHUKcrsQdbQYFC9+Wk0w3IidyQuMyzMLgJ5oPOcphdCqRSJd
sks7z+oeaTWv1XiQYiz0w3U6ucPxm+rAWgv7sFWti6RmYa7IRzDYGJ3+dtBp
RKy9RYPKC7gI0X9MJm7zSZsa0KivNLkrygcYoh+33qpyDoKJm6xY8GhOBhEN
IYDuieC9JXyOgvX3dF+vliVzv2EYMUqadTbHIDeZXdMA71g1fAPipSiiZHRh
zeTQUNiRGxUdCWLsawR+HHfrzI83xTSgwR44jb54DxMca7mA1UqPPTykj2Te
5Fm03M7SMB8uaE53oHEGdJySjGCYHC9I/KV4P4q/IdppQDwt1Ni6NqrSuwE7
gSxOIR8ncCFKR97QfJ1NUlr3hmLN/ymZgNzNqiL6InRlYa4m5VBPIN7AyZaf
4QQP+e10CmItUPY8S5GGKT6liFQr1LYvswpdGu9BRE3OmF2jFfjy/dk23yJ1
kYuPnT6LIDlsj5AONwrhxODhebQmk01oNZ/i4agyoC8yddD5Ejr30u4oCP/i
nA6T8R0BK7jLSUmZySZBo3h3fazRbOcIGY8jMJyqXKKLj8X7LEWVx/FZGIL5
g0buh1EVrIKjmpYJ78+veXoCLK5oOPCDxB+lpcivUIs5v5bt9qKieNbI66uc
puUi5ZdQcxJHJkiguADOdSQ8pcpqSnHAM0+mQdDZ0dFMBM1n4z6d51PhHWv2
JGxGJrOxQZHiYrdgrMEMvTC4TXwfeOijufW36EZgnX9HCPtXeDttyQ04Xtcp
8bFur0Kg/5BunzjLbCvonGUxIXTOsm4umr0naOsgW1flDc/Ruk8btE9v65Ir
xyOnZOHsFkxqoEcVU4x79IQNQkz2kLJUUmUjp/t8cYfXdsfnAFedgnnxEt2K
pbR6y4Rk0aYbMkdxFMX+q5cgDPq1X97ln+gggXgYxhU4gfPV9h8nWfHOcUqn
09orfGgaWwH9ZOh0bapHi2vqWTKa35Ti2T5/xkWqstCSZ7FTDSABDT/n4Ew7
r611SQY7E7jRt0MED7TNYT1p1VCIv04RL8VwsJy1PJyrnjtRA7jIXxPZUSi8
pGMY5lvuSQuYFymesjuoHyj0Sp4IijInS3v5MLJpx5GWFA4ggY1wAQeTjUbB
4EHRVfmOj81JMBG7NeEzQ9bEPkuy5UfgFfQVfsUhCL5mVdfrMjS5udFSty6l
qxfjPQqKCNf9FVv5QBJEQ0dyD4SSOmdw0lXd0I5HKRUkU8CQ0mpKOo7c3O5l
jktFd1nlzXWLbAI8Ia8XpMix4NdeFLmceY8z7zKO4+FiOpHTXQtfqZeYt8fy
sIvN5BDLqkJZX4ImYBFaI2D3m+7qHyWy7vN3uJEjCbSjDaXfNfJub3xgxPoS
iFVcadeZhR+jJbEbLEMj0Ige+nacHKMFZ5JxWgfaBlCQUU/E3nifO8JEL+jo
3fF/gAqq3dTs5VRFH8USif6uNcUPJK4GGZ80mmqzB8q2VS/hqNw5sITHrNnu
UMwsqH14p6fJHCgC8/gkwB1OWW29gkR6U6VTVgs0E0R0reQHUehh49KaAuWc
iM5GFBfFJy8T+7Ch65nE5dnckImEPa3Hye/LBxD00H2l0byo4XOPLdccrimp
TlPMRqPgw/webYMhotdPg7yRqafziDIw7TO/0eiO456LyzO5AemAapZNxBDB
LrdroFkfT8cuaCWpuoeWWD2kJfzyuiXdZXMLD6P/8hJ2pva/cCXxiBLf5VG7
CAZMWmRTnfO/SgT+cYetrWORkXOHJdrUM6qOe0k9i/2D4pCpaDzOEBD56Hrs
jJQ8sLrmMAS0ArmxkcG4zsgd+rTf8QeJZsiUYtDtLTdNNDKN15f8AtW6MVhG
jHooivWZVR3r/D0QV32LTpQfqvQmcL2TOKZQOOtMnqkDbzWfaOpuDlh2fZQE
TO5B1QzhUvnaXX4+fi67zIx6bCHOtIzArrLCuLaEB/sQqfV3opq7q2yO2j+p
dDQNGVuHYDBFg32jdIu665OGUmRon0MdSkNN0VWNWRHY0kOVLnv6yGlpMc4F
JRVviJfMIXwP0wlY/aJOSBqb5bbLi/RTvlgtkrPz+8Nkc+Pd1cfkZgXsCGRm
loIO35Z/Oj9+38nYglXf23+1ywEyzjprnF0sRC6KJJFgxHPsBfZlb3f/uQTY
INuo69UiC/ZrmmrYdImYNk2afp5FtCY2Y7b34x/m5qF+4Uo+5+yVq7JMvs9v
zBctOqck1qK2ps4b2t9gznfbRjY82WUXGvmG3Tz4rUmuKjMFhhn8uySm4/Z9
Py8nd6OHHH2vGJ2NYSLhIHCE3esXGCejY5OUFAmxYxpGG4iSB4e3onAhqWq4
7kSHPN4dGg/zLrw9+pKR+DphhzDIBm+2if6EZuxoYhYSHJ5gTh5swTM/6e8/
8e9b27GDxk6pnFFMbKfpNbcRaba7qTMOfkCTwYqMFFlOnG7/f77Ga2P/f+7t
UkpkZKWnq7Z1+/El3bcc/rWWyDTsXZMqA/VpypZqMop6VWSwxT//hD//RD9/
aTEwuZ7YDK7GBb19CS+/paZbK6C6xIu9fTomeK6MO3cdqk8Z3D5/h9Y2NYjD
VxwP4jjhdYYpf+lsRsHSLXMSGuaH6pCvMskwgAlmFaxnepT4bN9qNhmBzgqd
U7IvP7KT5dPDQ7a4HrdFNeT0EgLNZ/LsXAN5JKPocSnHQe5udBC1lB0+c+gR
7/XPoDSM9vCic7ivWrewPskGQXz0tqwbalh5mG8Zg+wlwgLfnJbJm/eXI7j6
g+VLmBBiGCATKlsu8Wd1S0w4Y38TBW4s0OgJjbrWgnfv3oUcH3sBJARA0EzW
rkwkH8kMMFUQmSqze1IemB4tKIZVFz7WT1Adra24Ilw3olWVSPGNUGNgMUBt
SxKn9eS8hmNtZ+cwBKhyagMoVrADQdikmEK6J+HOxGWSFKMo3h6YrEYTuM2l
mFUntrqYo1LpDj9Oczj1Damyl+h5S4Fil2lQoS0hQI1Z1Kfc1XlkGmg0UG6a
Y/wgC+5w9V9XaObGzsy20I2m46PRbRvX8zpjgz7GDKphnB1mqoG3lLP8psBt
wn0n7tAg58tyTKuQUEF3GaJxNF9AW8mibNDdrgmWEvino1hd5/+1AkawqnVs
S/YHP2TXlNdltkzOOGZdnyxXI6AHTO7A3RGvD6e21Tn5XQqKZCtuULOtJ2k1
ybZR1nnuAgCvJGgwyKnhVKCd8DEEAhEJazKbjjWskIxTzH+5qOO0HeQdhXt+
SM3SEO2pwLXoeRTFhiKcslCy9xqEkuQjp/2+pcCqY2V7IewCVEN086/m3LAb
MelbxWpxLdlf1l/gpsSdLMWPF9Xs9elkUi7KaarsVBKQXbN1z30jJ96rRVGY
M0Y3f6XXQ/hWfOAPxoemxXHyQSu2IDKsEvVSsA+JYl2vzeD0x4/bST4d3S1H
k8Xk4thIw7WCMbaoZXPgWS0KYHemyuypV3ojdP3jR+mFJ4eJJazyUd4uegAo
SSteHNh/0ikLM8MQG+qfq4pQNfWG+jmKOtz+13uaqEPXgRgMImN12M5gIBUV
y8nKn78LqhNHKH0VmgsmQVpWLcd3sFOAE5JImwJy5/RbU628FOvVLNVacMxw
T0kILTFZeqCTk0SYXyaX0YWCS0i7GacTEjdqJW8F7k4b5TWH4H1k1tx61PGT
x+hNOWOm6H+8OKsx+0is2m+sGWY27Pb4QYI48LQJykcYOjYo2yU2WI0JIp2E
zKbIvkQOrVzHTroQIxBIGIuM41Hk2rI2c7GmCw1VJSdulMldli3j4ELzIbJZ
PtabKIqexxuNhcIAb1HadLnOaBnG3bvntGeLS6RX2sqaLIJL7UcjLqvFFnhK
Jyrq2E51yItCcyvdAP8X/IPgMTR0kHn/8zchDH2UL+8Pf/uXo98gD/3tzhgF
5xGJnTvkTdj5DU1nhALHb/+GRmCArSZ4NKQWwWL9ud3Mn39rAVBBwnZh87QQ
cme2KZqp+M80jN522N7XcRxIVs3mBnFTDEGi5IjI0wyP6X2bImQEB+H92c0t
9EjfBedWJImvcSTwozWbpe2HYa+lUIy2MYoPEHVrMFH/NY6X4rwshX0dIlDP
6OvgjDJxWpSteQmkRqnTrf6UzwenFI8OSF3vkKReLUgq4y2ps24bX0hg9t5Z
r0zIG3XM8BwZKQXhPhBV5IWTaUNWM3ATEEGqvAzBzu7cWWSa8my2lnOQWiv4
EVgQOUD602SRrZWrRm4yYgbhFRRyI96MLQdPiWcWS4lC0lAlGeAQdp82Ho0L
gdx8cqZxPlFh4XJBt5BaNm+z+RLvON64RfpXykGlPOluTjSfqAfyqbXM7CID
o+XAgBnajpKolWmw1JtYaNPc3EATtN0TYZFgi6o860nHQGeFxml3QnW/kCFN
JPC96ACmoNHEbimzlDUtzUno9M0WAFkBWZQWL2pLjiwtYqQ3XkK2hW2+oQ3V
yGoGH9+cb6vIHSwTRustD0DnKKiLzgsttJVkhNRwjQll/1lujRE6K1xzSUdo
WgemyRboCqSrmOzskemEr24byRB3ZYkYZrlklngDM2cfWRr6msQp2h0O7Kzb
o2lFkcL1FjsxgXG5RfZHMMQC/HXFI5lqwhDj4tBAOwgucWCG3ssXp/92lJx/
gI3uuX+re4aOEzFqxGLUUfLq4JB/OE8f52U6ldT3I0bk09jXdbnI6JkJV/F7
BDKiGdNqxV1hT61AlShIaLuVZhpfLJazIaOsnbjbXp4QDQKzRmNMz0Asut3O
8HU7nFy7hEZCk2QKbMgzqNzEOTiES8a2NXw25YB5id3Oi4iCWBOo84qdBThE
4c0Dmdq2RQUMnZh6PEE3e/Jh6RzvpkrpY4Z70O41r//X0JGMyujoH0lgZ7Pu
xClVapE3jZKNTXFoUjOunC6tzDhwHF0QJS15bmAKFsyAg4gCffc6q82Q4+la
m4tiPCzalKOcyT8iUwhgRkMfGe6aBWW+/tVf65IRTDjYUOWHRzakX4cYeWoP
uYgQ5fWqmmaFpSEks3n2KWf0MormZ2w5iW9u+/vspooua8Q7peAMgthbspXa
OcbtqlLi5kjq6JAoIg47DiOvOsXhkDaqsxyk6DtJa4uBwx2y8+qTfNrfyS74
qHFzItpw53aQk3bKsQaRB+sQC7DJlcXAXWTNqiLPsMXFuUxsFnZNTH4oXfRc
JW+278JgEfNcrxUpRqjdHl/xkoPzwsB6jAAvxi8laI3U0iDDfd3Lr8fPBWLK
uocJ0ZVF7ENP1iKVNEbgsbrfDT2LyUp1ky2DnZQtx+O1K0bqOVsCTNqnztxd
itr5mzdvh9HKGXwWnCaEz+pAY4Vw2FwC6dLCM3fKNdOEFVAe8nsDayKRAnpM
qtU8iwBPDvd2LYjdgW4J3aK0R8vVuqEOd1s3JaaVYLIPnpKvu7koUoaur3vm
OaBCO/1QowtztjITntgXBvWiPSjkQTKoEKnz5Mg8E4nieuxANz2r1HPnkrAb
xmy2uu945Bcmz16hZtONO84L4AaYW9MfrGnwbkeoGSibn89FrOYkGkxEuaQA
pmRwkY223fEZ7NQZs+edGhRBXqNgTcXTY/A7cUSrZcNxZCu5WnjKuKknlxfJ
cQjGtwCZnbRpuBOW1kcUR4GH6wZRKsUXt1Pf3QxhRHcTlCcwcaSFiRTbprgp
OYn92jfr3eSWl6tWll3DBjVIjiMYNCLGaDPYGRI1gmkLxpR6jBs4pN/8j9GI
dxeuhylB2JJpHwMMbqDz0ei3+NjPI/kffJQ+fkXWM/rnZzWj/Mr10zJ//Jz8
yWQgUj3IpECRLD+r/X8am5b/BTsTrVxipKkzPIL8iZYTP+ApoKdl4/WiwqdB
7lz3tDz2k7b+Mx3zdU9PUqSx2nCt8Cv++2f0s/FX4em6woSP2j0Nfyetp+Ew
0tM1nQCeqzyNtL+mbX66sud/5gOy7mmiQCDjG20RSXjtSPqenvQ+/fko+a6H
ohn0+5+fdS0cbHtbCGSrZdo5FbrH2vXsF3MhKFeSyF4NscZXRxbwG4sJ7qKN
gFvE7SV+wSDeqmbaC0FRinDBATUBAK5QGECKirV76vnu3hD+dYD/eo7/OqTz
+HzvRbs/WBLzC2M3AqqIPz0fUytjamZM7Yy1ofHeC+tsf3cfhSbnNuZrm4Zk
gkEnPduQEzlRw4R/Ml08pBQDzkZGJ+3Elk/tDw/vGwmMsk0K/p/TKPLf3Rjf
9aZ89OQR8N5la9rxpqqBpNWr/h9scogh1spRQUmYUD56no6zCeDJON62LwcF
b5ug4qSK9a1YUekc0egftRMO2Ebnr+L+8hwChpLM/wgvbwzGQGBPU9FK8fh1
M29Mto6gSdS0KEkk/WuvSW5rt0BgKVqAkN04NiQezfq3CIBE5Nx8wQcKUc6C
QYJuQb21wiE198+gKlfFdASX95IyVtzF4Q0+yHXCjKOAriQgXJlJt7nNwh0e
5rGFkoJL25NTsyWiAiJdS6SNV24oeVWMeVHuqtrYZPOocdN/NYaKxvrBqWuX
Ky758IaFzBUnilDADLw1B1FbJUZpf+o6GJu271BgijLgh1oVETLOccxSGPWO
9MDp4mxbCY27mE9WKBAKQ4AM1Mmt8XBfngWJ+w5iYVUwmipFbvoD5QxCEmTC
Key9c0Ijr2d8lCw8cCj5iCpdTEsQ9vR14HpUqAlfpSghMg4MEUlmVM5G1xQ2
gxCwMVlZTn7w+Sl8yzQ+G3z4yFi0BzTUgROCWUq4lqpqnPjv465QeyPRM1iw
CUFAc5lbCAWeBCiHviZa54g4AZ1t2lENqQX0R8mzZFHhVO+HTJRlCSEiD2A7
784fG04069G9Nzf2x8nHYG2L26ChuCFg37SQaHRQ7P+ExSLP6UiD2Ha4Qmlr
9or68LY/3P7AtkddWRlnaHsZobPwiDe4h5gSVQl8vT0ToJ7B/jYDghiGVbf/
aMtSMtXV/d31bNkcVhZIj6Br/LLpgDqBiAZPRXmjDCjg+uwOj2gAof1By5Rf
LX0+OabIC7RHPKf5vmDjwR2h2NPCPh8nH/BUYWDzUNOB8ZXkIMhThBRPKExZ
Ey0HcRZzx309wRGRsCMmkAQd2RWlTzQKng4NRunitCoNCn0cudOg44RsSKAo
SRs9a4SdFBY1eXJs9zZH3mxuvGjTl8RQuqHJqFpTZLgFCWdXKPYJSBYNn0ce
VuxQo+V93l3I9FptAW0ZodZcOrMWZFVVVs5c81Qa6wAUtW1nU7iQHNbubEAO
4VxWemCEe/ZLK01KQkTo0OEdlhJcQ2pIG8IhEe4oGRDGZMGWBmHk7yVYA9Gi
LHF1W2UBZYLMiZH3ErxZHkJeo2N0cjyot4dibcXkphtYXiE6XJk23EA0WXjV
LSCrkGqvIL2CaYVm+WL3/8AB5M2zujWsAZAJY9ON8Ih8T2Gy23DwZw2Zh2S9
1JEd+0Cj1dLAY7j9ppTF150qx7MQohSGBOK8ZeGWqH9iOZByKrGD7JF+agWe
WgCyUzFG6D2TCiV3fCJeBq3vgUxUUGBcXxKdDErlLHNRnl6lN+bnKJKMvIam
glHIfDSMIYXO8rlSHcEFAGDSMDoEbhHUxwVWw+41gjmUV+1lJFd3gwHi9IaY
DjsELlOoG416prHz9UphRBxNq8OVKeSFlkxxe2N4fRp+TWpCvBTMwj81ye9O
r+I1MP3hhExBBBbDV46fGOwlT6T/NwovnkgDxHZzjAWTuGf5gQvPYPWHZLrK
WCnAsBCfIyOro7pUqXWUBNxbYPZW1/oFgrqs5EE04DEYCra2uZHGW9NNcpaK
iy7KTyz0mxs/qFOBB4THMs8eCPV0mLQalunx1GpFevOWOAd9cIRiHHpGbblm
7ooXPacmr4pC1m1uhHyUVaHcq5x72QAXYELvyhr13FKUymFW5rCs8D5c5WGm
MVSDBMKDpnBzo3kXij2fIcJQLQWGhFkLjJFkTVpb7Iwh/VB6ZSGCUbHhvQVK
W+RXIDw74oZ1r7yEed4NpzP8XgKQ4iGzY43ww0n005GLk05orG8sNhFScmDB
YBoZQQelXihnuEkcY4w0Ged2q8UmpHF16Q8Dlz397Y0PDOymnzzZdirynSN5
I51ZuYovoqPkw3z6J7gg4D9D/fw+exjCZflg32Of8jf8B8Q2dRdheyxMhGa6
QdFk7MCKuqXTHY2k+uDcOVS0AzsWkBMN5lhvM0lZLzp8caiHrm0CH/VZQ1ys
eu/vJqU4xA2O4osaHLZ6k+FFjppYTexRDseJBaHm7ute34JownqgoiVpcUqS
GsOXwDBHQC0oJNDqqQogmulVaElCeOpQLs3J1NFopFRDBHpt6ImaSyyjidCO
FH2WbEardM79dyYbtywFiawDafgi1opQatzcQO3WEPRU8ROupzl8+RiWHrOx
bkm5ppVqX+Sm+BnETZ0E+iZ32BqyDlFe7sj45nHp/arfZpM7p2nKEuDBMrbT
coMNLgLgsyxGWgc7GdUcWp8pAceL0q1Et1bgyf2IFkQMkvBU1rnjIxXcb8Fv
R7EQwEdJDs1VxanXXkuqf7uOI4DqNZdZeoOtNk9sgyhc/n3ebBkc6oKPvPNX
xxKZyxV/YgSxaT5l4H9E6MTeia7k9jZoVDn86HQF9VfBxixEXgTxtj4UxOMv
6rY0odxBFrPq5yfDiYCdKaB8RgYcdfbFM2lP4SM5chgrrS0pxCvzLaMXY8BZ
JOYFSLa2HoFjVlX2YMgquZoaiTwew2lZJ+40DgZbmtpXGrAs456OdaV7yGXo
R0+8oF7XylM8YhgZXdZROBlXyqWuM/PVHHhTzyH6GuJobzIaxkV4WCdqaSxB
z+Nr5tVDTF+0O7RtLR07xJorSBbm62wTwbKccUqnBcp2rnAUeekUd/VWo8lE
w9oYMjp3Gh1BdIgAIBTOKm7bvlDHGnUHa6NjK/mlNZM+ZLTgf0LbnnNsklil
XikvoDy1fi44NHNH8rnCTKwdwZJrSTrEGhcxwnSCdEqGThEWIul5GJKsw1jz
ENZgQtw7BTBrpTxxBMgaBDRLmvr8XQsAjXKG+8NcyJ7248nldy/VKm+hhBFe
cbvTKW4A+lko7lQD2V1roQ0KBA7JhZ4dhC557SKkEMXnwX0XfFtVdvQ1olFE
jwLNBhXMhqpUo1OFT9ycwEYoxpGHAyIEekVQZLyR6x+dI22kCLYwHmHiAtNk
GJYt1pSVBKyqhiDCV+uqdAa3fWeBw13DLv+XGCkG84lCrOK93PKYeIPewLH9
7SCuMYDwBL2KqqKL9RQkYnRLVjke0vgA1Rx6BX3WVPSLViHj4M553jRzKVck
ZqTKR06y/wMxlDnNh+o7RLMWx1OEYdvVCrzC0ZlgiMtWjUmPD6mmdngmWPKV
xUVqUIaSsLN1moMmtsKovrZ5mmBpDAOaTABr0BWTwf6rl+jKlfMuAGg/MBa1
0gBnwUuBxrWY1Fz9r3f0GNjEMQ6UwCNQ11S0WqVujoDqMU8HB6sZZ/OsQkTo
R3mJylaZfY4WB60qVWy/ema36Syv0My4WuodRqBWwNep9E8wwIiIo75psq+i
2ig+dZoI4zm1x8yHDos8ICZDqpl2mDukY7eY03VtiI0nLq9Wd/J0XLHYq/VT
Ydg4qiFNY8IE8j4PmaJRhJzmoRFr81BKs/COtHyOCZozGMYsvxnBA5NUeLIn
Az0/dHkYDT+ULbLzEfz/mfxGehA1GceIrrvfJkP7yb7eg6//EkLsT9dTfpsZ
EaNA9O5H3h70HnLFKmx/Tamy7WigcICGye2zg91X+8+S8XicPJu+3Dt4Nuz5
Id09eP7MjxR3rIFW5y7aok0HAchwD9rETTywm5rR2Lg4Bdn9ejPQ6FhUK4Hg
ZhuZWKxtb72ajTI0Z9/3iJPbAYeOUQfVuEHm0JKDGA2uKgkwTzIYV8haDODs
GyLocWGYc4QIRYQ7Rkjr8LemvWyCcudA7dLaFgdzjw84tXmWTjBNgCR5NHTn
7L1TbCfoi7rWiJia7eZ9BeGH3ibQ4vZrkKM6TJ/MZHxsfUMkJGprmxv4CsIM
7avnwONOubIkYVFcMWgCZ8q5uJ6C7YvYrJFBLmLpLEbHpBp8R/YI76VBi5AZ
DTlpco2TxcXTQCIGhVdmrKYpqtAmNzXocEuCZPmKA0AQiFIRxXX62Jh/UPol
9B0+tVpCJeTPSNZ5eLlOdj+92hvtfnr9MjAiipcndkDKqCzg3mgf9N3QCuV+
CJbfQkSmzmrr4LjHVqiAgnjIclhkw/SJ2VqLIFmWwAAERHBoUCx0PfrZcxR9
XmBesVRWjMqcyYjNUk6PeA+m7Lj6PwoMQuXIBtWcYoIjqK0BxzRytCYfxXAF
6oTogOy7zKaYWrat6FUaEz9tC/vUdpWFBKfZj4XUQb1l6Y5AhKvypnIouUSc
Ac6Nb1lN6c1dZCnDE2Xjm7EUqYhieHAN73O0lYYeWvFcNIqQkKyPBcgIlSBd
dKYFBfZhXeuV8ZWpFt+SILgmw6I38fDJDMi/NSuRlLR22g1CP2OgfRqUfeUx
ZOh2XtjAAzpjfhpe/CsGTHpfu6cwjShRorV8f2LKCW0Z//ya0BkLTWAcTFqf
OHPQnYenp5kHKyIGUZNS22DJL4lgO+la7dVenhUctIUKLFbLbUTpSM3wbYgO
bFKN625aZqRDmNIjG0MtkziO9oTVnJQ1OnZ8A4qUgeb+a8TVi/FrFayaVsNS
49uBRDTpIxbq4w3WtLWU47vfg2jFy0zygdm7qJTcvOX64pXCm9rS8CygomBl
qWUE4YRq1VUja5QfuyeNFgA8Zf11EOCpxsETEPBx8DbhtnABDcXb9MXqWoUU
FM8whi60OnAY6uzrHQWEmzC0kTY2Yi4puQIhtN1wFjVfTgcewf5+uTJdQkTC
4GwFdjVvobSL4YJSVDs5dN5cW0j6e7tiaBRdK8aQJ2pHyD3VTvKGTcDhDkPk
URzNGsw+8UXXH8J5pbOno91JCdV0UDyqEjnM3jNf5ChCm+D5pY23ezyxDLVA
u6iZj0b4xwuNigxTY86J8zn/40UH0U4zzPmtGLuDol5TCQjS8GOSHGjiwRxF
aSXCKDFQSGqlhgVVpm8DT2u/l1ouCguCqw3NTQJlE7QuodGdNWb+eVEuJKnz
Adii+ZkwMlDCadhIxKYlHLMgJWcIsrsq4ME5hmhPZFXW1nvhw+kIWuRJmo4E
e1NmAvMfV2zzkpAXI2A9DPTk9FYNTX/kLh3p8CugNBSTRyrpeBQA7TpQnT6B
Gi/WMtKglF9K6Jt2wgiBPcDxoSNXZBSPO3YDnLPgmKTrVT6fJmcUfJg1o3qS
zjNplG9uCrMeaEEoOSt5vc2FvjB63sM0u8anpe6kkjgvD7omMTRFEM6kFCVV
AInXJBS2VF3NSYUo7+ZSYZJkHb9WrOcXHost1JjVSC7nTSBoEks/X2bpnSwB
aOAP6aMNL67+60fIcE/fMhBnX0Vh2sOUXGeU7pCDwKAxb631n2ghKFzREWXV
J4ijmKvJbagnU7YrlCGW6moB+tHKgGdpjVZhrPO5qlgYm0o0gTOmycLrnlRD
TocJAGqoDH9C6YaXldVyOKouc4YfrIVhUBG/ItSw+CfzAYwQLgZPRIzadITt
YQUtfYyuSeIRhuXutrcNKh9drtU96wdnxrp8mkIo9m21yHvhdRDLO71hAZDQ
NbRweSiqDA1fP4oeaa5me3CLM0qCL5dl0y0bwJZD95RIhlJOnJSyKKIoiYNY
KEAeiiWbtOcwQmjsAc6ULhsLAl8Lrxxkp2OUFXaEG31VqZg1ItETkg1VXaMQ
FwswMrRkBhwi0zEJbBxKjapmThGxJJTUpKRLxUAvTOJ4sC5utxan3v+h9ppG
rls1kCfeAoqjYSCWhwoC7FApSg85KfY+TYvRwox26/cylv4BqwrIbgUQ4PGw
wjIqI4htJmT1n44W5ZTuxo8Xb0GpLvZ39w4dPrGaoi0WjrOd1kk2AQ5aYoF6
oaAFysGkZ69FWbScLz0rGMgy5yDOCeR5GIQxzvZRTedU35BLROJPHh+aRcrg
wp9LLUQOy06LLyNAjz3SuKsbV+DR2Bvvc01nu/Hs2cbYWzZ1AAPECujNA1vp
UJ+IBy194dUVrxbhXrGbRyUg/PpZ7XJJCBOsg5M7wOcdNjMogiD7VBJ5EDHW
nmIhDhX3q0Bxpbhfl5JcPPjayiR4NzmFWQmCNbAIXxdYSbuQlLH8jvoeEw0p
FVRAqLpTX7ZD1o1jTDBro4vH24r5iTF0pS2aHYbEEaiuZTNa1g2ifwvUIW0o
4x7H4xwa7prwkX5IXfHvD4NG3w8ujAMpZ0d+tsMO3O+wMwHTuc9DjU29go+x
H0oG/vyd1tjUvVcGRpGChIG7kNBm29RZyaXMo5ravGlmXOQ15SDouH4tEH/5
UASdpqvpKwYkPQaP+4LKjm8ik8BHOZcp5MJKTKpTwLpn5kybvMzUy0tAnmp6
9odGu+9o/C/WafyCNVqi+0nKiNXWjywGTc4lvhE8hyqPnDsqFmeHD6V2rWVZ
84XaycYbStoV8jfDsovw5JWXkqK9uRGZ8PpT/ZPBybvLbSuLzvo2hxSnjeDW
50uHqxb5CiTLTQxyJPa6itWm97egq9CktLKUtHiMkqrcMXT2GyrIBbwQiWuh
Mcw8LJPzfDbjQCa67Qi4oGw8WFCypRQU+bJk4dRPlnc5mwaHAPUz5lhvjC5N
4doYSqaTWAXFPBoc1KFFossQoMvytnNWbyuv6ds1szaGAvJbNs+tIa1Vd0+D
i+UhCgjqmvRw60CYpULPkgtJNs0As0dMoK5XAqOfxlyaAqZ5dvgr5r1KPgkm
uWoouPy4H3484DsQvdBwD0zyfAQUuLmRjEedf+DB5OfEBRJgJ0nyM38duY3l
62fdRp4xep6CsUR/CRbfuN0pQZ1Itzj2n/W7Sw4IcC09+9q+enruTJn6hqlp
3+7Nn91JgTW0b09PIxKmbzur8Ey9/gjcYgSocC1XQLpvNbbi/Mczxl35U9dS
nWvkaRoVdn9CgAZegHpRbeIUoSYwNQGLpnIZwJ20pc7ZJ68idPXTJTwAsgdb
l2LdsuEzSxRXgDwfvnLWt66ySeFtiigesSgRBBurnSK2LTTA0yFj7mNMwkVj
FaamctLd1qcX1+nNlhNF5Kx1h9kXXPP64NDDn/W0VieU0pgvUIvCuheUnR1f
5JYDwC6Eum/kXKmkqco5I0H4S1vyzg0cUjMSw/WsEXOiW4aHKcOwjkpr8n2h
Ys053rJYEICN9PztiO7ex1/8DTNEcYoLMNXZ4nouOy6ZAdPArS3TusMby1kv
ow3Wai4+H98JaDijK2Dwg/qZUrVNqx8run9Oi+nolNeuJS/q1TfUF1uoC2JH
tVuIVXIvY0VVSMaSgOnEFRZrtSy7F/q6uY5OEAqFcgRLPEvRSUgGxkh+YdXA
G/BaSlUTXBlUiZjN2pruxOh+kYIhQ5XRx8Ytjc4hh2dQeDslyVDrU0wNvpp1
i4VRqDeGLm8XmM37zcbzOoQbJwOMs9M4tu22d1KlJBEN9rVTap/ssYbo0dsX
AfUF0JFBFDX3ZG9JCOXmSMCQ/Cl6qaOCKP9QE7wMOz1luYBFUFi3XPwuEnvA
HFqXkUQcWT5/gnLJTWd6xni5kPwYKKKNBP1U1WaxFcdhs0WJUcoYi9vIcYSx
cYCVxQSOk+8fjZq6O0rJWzH1OHeKsXmUqdrD5RuP7ezV49IcvoyXfoVe7Hg1
dRQp5X6HG+8rGYWhgeUttP9wjnQxWjiyGh7GRivh2j20JNsHygOl53r4npqD
Z0Yh4vxNyCj28lacXukzBqiASU/RQ4xVuU2DW4/hfhl/K26CzO7RVdJfHF7R
qn5ZQ9Z0MltgxczO5so1eU6LcpoRgiOrX8tVtSzpDAy7hxoUjEutj4us85/o
lZdqGnGYqyznXmSzTOsIxJGq5ezblYhhP20PtlgwZRDwSHk3nZPJAe4E1tcK
5VhTd4/7yHIuHcAW50ZMLd9y4UmH7L+wmm1bJsxv0cLpwGMJzLarizvM5ktj
UT1Md5otpRaBHBzeZFrXYXT18FI5rSrOS8W6hvwuHhIx4W1Tujm91zN0RCDR
0W1uYLbBasFtDCnzRVwHEpbqBMeZ2tKvR7JCyOYtDIR7zbT0nF/FNb0TgwzD
J+4nUxAqZyMElVyGE5/eVFkm/jtmVsAf5AWHmWPnB+uNjOaE4asnw4ybKtyh
UJE+JOdcu+3H7FEtVtl0hBQ/qpZ3JORdOohYM4oglUc+PzRaSWCcMjjpheRS
6EmqxGES/ODi/MftDtu1PKgQcJV3BYtwf3t9BTSjf2+Fq6vcq1B31Nf5jwSH
kLIzXgBSW8IXTLxTRIUt2+yc5kG6+vHYshZBlyZnVHeT6yOnRe2EJz01GBHJ
4BXm/eDlywk4EEdqnCEAt4krH39tL984UgzlBs1rqY+pvCXKaGktSKF5hzpG
0FRwzJHdPZzNvkEQkAsXeKWzIATFR2IEJHC3tbkBE+75YVTfpvsvDtVP2FII
MDjTbWq0Za6aVygIdnB4eJ3XBs/Qt6nfvGJtKhNib02G82d4Fq5MdxDZOPRo
/qhmrm7ePc1UnNaw5W5F1zD0bglQVYjih1JnsOkRe0JuerD50or2aYC/jF3h
+Xz2pUWMoteRdkwW8xFa7MWvVZbsEJeniYHPSzw53hZ7P7WjSEjyCtz10CPy
nQOeEF72ap//pY8XfbNsiHSC9zDDJ/dYyTtWta/+Z9wxRMVWsSde/RmzkO9x
fGqt+hk58UgMdj8/+SrmAdmTbQvesydejY1czvL2VH+tzvmf8Op99HtrSfxP
9+HV3mVqLUm3Ocw8g+8lwYhsjP1LIt9FD65bptaSdL97lnxhmfq+/NIyPfFl
WKaWqXPcXZF1XyI2tR0NtHzqknzFl/gu/ENH0s3lq77c3GiZUXvWc92XX3vw
2mZZU2DZMBsLTyLS6DMSslKztZYwsv3VY24+4C4caTA648TElnPsPp+OOGXR
4We3brZ2HQlVMcK7zibpSq34Yi0jc0f5XJZtlnqgvUdFw8c6Uaz8SWwqVVfV
aEdU82Ra8QA4mIUjHnzYJFeuGEmKDzQWosDEJWGiCCdfWJVbipuSfGh8PNao
6FUWyygU7VkI6DgrWEVjjdrsGCl5oQQakhuHjbrNl1FET6Rms1KQ3xRe/5Ry
6i0gG1aGtwPiwrp6Ca5NfMyPWqLY6mzYs3Stm5FSWajIeJXNMoNkoDBFQWuT
6LnWDohCGkXBdNJA7dLn1bNolNp5zNatpqTVXFflXVaoQCdo6EhRlD7YikO8
NYyvshB7M9JlCOFgORVDO0pfoVCs0VTTEPEQUsbQYZGWwYmmHFoxl3VwBZKP
k/oRtnBBuGHRjwFfmeqapYq2MylXRaPu/ZuynPqSVWjx+1KrsnZMkOSnBvFx
ln+SFRSjjUyWE+XN6owmJwnFw+r1pI2KTIbmSAx4uUELWkrREzJUVtkbDc/t
uL61JFLLEY4bSxXoeSFCGCejGagDk4E3OXsDo8qK+oECgDh/gyTasmL5LbjO
u8xLaBHjFvX0XFB4+LHmu1lHwKDwUKc1s5JUIb186HbcuMVopYI0dlyk88c6
Dyl1NjnM/vX4woo2gARrboonp0GAoRQ67hPzlhq60T1tjMOgJSzbwf2BmwT+
gVcRB2CA7F5xBLOGtlnwBsyg92RfhWk1Cvqg0OQaO1xly0zAVEx7lS1pB6Pd
8j7gIdBr6am5wqNaPNBxJk3/7MNGboe9DmAQ205JnMwzVhrWR5aooqVeHFJS
JPnFo0l3rjOm6Ta2OxMm5ZnB1MzevW5/hm1d1VfQThXvpUGcSPGukmOfvv7U
FH+kCNoPJ1enV8nl1cXZ+991R3ZE8cpwLjpjgaH4kVye/tvH0/cnp8PkhCMq
XYE2fC/qxieB3fl22MoURUGl+tlchv9xDE0MNFt5F/WvBfC0OfsbKFFVS1ql
GsG7zg7kixlo2WCGxW9hN9oi65YHZxhh79R8614CVVJkMi0kjTRTTBzUjCdY
0hMjTfgCccXRETcAaxNp1bCAlCO0ZX5fYu0qIoZKX7ZQbKYPRVEQE9D823Ei
TSiaiJ54ob3FMq0CECOn1bYdq9R8Lp7LIgvLRMdiuHa5LYPNPIhcJ8DCuENW
Kll12Jy55kcx+YyTD4bHXWc+tJTCqLTgdIC9yXpbJMgHGo5GAVFV8qyKxSJK
RR4h0WipXjPb+wmTfGhSbS/ltZegY9Liya+zdD01bZl1ywrRtTN95XzV+Hsq
AomdT8Vl0h/kxu9EqWGpSiNQhNzk50dLSS74HotkDE3giQYg4MhPURO3Lw+G
ctCtdJkv4m/ANN9iqW36nXAAOHNdSr9zxBZVni8k7Byz7FP2oPvqo8D38iVK
AYOt8Xi8tc1Xu4ReZXOJ3MZYLQYk0gHgKDc3okiRwB+uy2qUTYsRdIYJ6LUi
s2RwxUk2hJatDrkLZEXEsusBG8ilTLgn2xEqeuMdhkQJxwFB7Ht/eXpx9RMu
1Zuz49/99MPFh3c//XD29tQ4005LORzJD3vj5lOTnL5/0ypzyeWd5UKkSxMF
3bWMgYVHzNlQ8EjnIejaM91RiFNMqErAmjjgAnGl1/IKHF9AlJqKyuKCHIhV
hJS/cXKMV0XhKqW6aupsivQCICP/T0e2j4xUlSOOCWYNpDA8BcVHSpyPGPqd
UDMoBJdlL5S1RRLvwdVP2ymGggRqTl5LKRu3T7urut0+kBdrDrxmE70HAeTv
OO8X7rxHekVqIatfc9qvOgKnrHki8HMS6ObhsMkflWlmeRQ/vYYvhZiJewbS
5lmjCnJDuObzv5np/J1Hcd8fxfcRXbbi+00xF7gPBrtAFZKuDjhCeOyo/N+w
fe2QfwXFSCQFFJCQaBGHB16pwwEi4xO1VjwGf2DQazEPnoOC1ueMk8ZTtBJ/
9DVuKVziorZOMKV2otDET5GdyE6WFKW1GhEJu1JXBE4Q14JByNpHxi5/J+Hq
2ZDf/IWYRnWr+8ZG0/kqcsc49gdH4gTSowEDrm7C5gZnQCsDWJ8nyMfQev78
2Z/yb7idqBwKHN794eYGYdsHjqXJq+6QmRYfhzNEYl3rXLZVX1FsNaUIJeus
+Naz1Hed/cnyfNPr8j7rZ3ARVA4FObiyxqoHU3SlpS7WPg5t5GMirFyZi5lA
fy9eDdINERFW+ajDVWLh9VNFn+W6KD6RVgctL8dolkQ4emsZSG+8BYyw0RsL
lksdvGCQbJOFCwR+yNI7UtX0CZjqlkaHbiWDXQN2dDn+TBKbGzTQKJSU5V9N
diGzYouNRzXCpCzYV1Iz7pMbG4pewFsmK07TZeV6F89eCPmiZuY3qFXftsoG
qO73enw4fs6hnE7v/Rspdr8tgHVi/nASKM4Al72DiZd+g+VhV7smKj7EMUHi
cSarj5Z+6ZFSyJcv6qw8wfEOME8OSmljajMAr1Zu6K3/kwzeX51vcxmHKp3m
JZO2YKwIukNlJYySSwkm7vFrBHXV2DUdHFSWgXH/8WKEnwJ8Uohmd1kbhAk7
WdV1W7R+brG5r3df7JveTwxc7DVitA8y7nU5lfU2lT7Y8TxMFPAf9r3QK4wv
bUYAOngEltesGfZYDbukR5KvhgLEkCqidlYuihF7onX1dZlPT95ccjWC5PL3
x/sj0FxFU4I9vSfQsSV8V+0lg/QOpW3YLPj7jnJOkovTkw/v3gGtnqIb4x1p
2UIKGCKzJNv0LcinD6kYGz24BAZZzRWOQtHI7KgR1hrNwxrAcohoxpn4yDZ2
aMzSe6y1wVw2w26todoZDXEdTi9xkiAEsICEvJ2rMYcwQtjxA9pxv1TRgtzt
YXMfzq/OPrw/fttd1ukbQyY5off2X7zYe91aMxw4IbrLvPJZmKsulDcSu4no
8E/fYEeD0attP5P99kyS5DjZmlT3W5h1BmKgeDIUTffRg4AQ0eGYtdakX6JX
0BQeg2d3zeMzYaoauyQmsRiqHL5/9uHH82fjZCBNvNzmhHsCY8vFh8C5Krxs
6jMS5Do5PNMVkP+jYpnYOlHIlhKSxEkSzwr7z+RtUZu0j1jNjZjguoZQzJ3w
KjD6O6KY8it3OcawlG6zFOADhO4SWNxd3k/g2GY2z5eNjiKidvIDctXzecS0
Wxl+Shk0VcuVtZY8nInTsKm+x5xhYJ2kOlzXOtzrOCMMH8tYYgsLesRS3zy7
SSfEdGopNzGC/4xAl+AQUILKC9lGdTlraLUYuV5KeRaxH80DsnXTjwLfjvIL
ZJ06AjDpd1765sggRGeS65midsh2gzL55sbeq0FPsMBO0qSMquiG1P/PzuZG
8p8UhHD77Hhvd2//8NnQtRNSj+iSkvwjBW48Sj7vHSWjl79wO/0d+D/4fPKl
/DnZgh3aOhL+Zm18/mXYbcMnQfmRGHfQGuo7Npe91wJne/Dq4DVMaqcTXiCQ
k+J1o5BYvC23tY3nLw5fSht7+wiJu7YJue7sJuNx/GVzY7sdt4F7qUEbbnPQ
n+iQRdZpXc+AqOH5f97CGn5bJil8/kxJdmJQemy5bjLVkOudCHGTrHe4Bao5
teiN+CY9sLnBTwC/BM1UCxdTASnMt+c4jixAtNnlSFulwgeaUziHmI4Xp0jc
VOkSiKLFWL5zghTKNE/rjG2kc+LjhiTBg9CEOJ//qk6yniSCnqRwPIBhfVgp
FTes06u/pN5K6oxT2WhgAgLtyHxzo03iyeCAMedBNII3TKPB/N1ucrdoQ9/A
Nb6BbTzJNb6BbazlGt/ANoRrSEsH+0fJfzKa9a7iWe/vHp8+U4zr3T359tXJ
Dz88+wv2xDugvOOXoU3s5St59uUPp2/+JhZyuve9spD91/svniXfwEOeYiFI
fj1s5OJvZiMgbt3lqP3iqcYSW2ZNcd4vFz+MlPsVTHmRLlnGdZyAoUBM+Mo1
hXS23vKOH5dprqkm6mUVrEvWzKkHqQHPpyTSrLGJPMQi8GzD2ZJIIMrFfVTT
nGQ6qIFQyjG7ZFLU+z6KoJKivnBr5tkwhzyMVgbw2Hrk1xrZ5vCDWuPFYhol
+15atcipfg9PRyNndGkbRnVldZuSJwlSzOJDKDqu0fRHNBF5nY9td66YU5Xf
3DZ+Zk2kynfFHym0RTzo+0fNShhGVnaLGQoMu703jlOzz0IVVpwSjIPKthlk
t66Zmdf1yX5wCa3X0HtJtBKdKLwGniaLGYK5M1xOz3gxuAnH6/fcwzDAqHcM
EiQUe6Q9hs1nqZqCrMg4wT1Ijda6U43eFXR18PKkvXSi1nFXA5QWBrFp2Rju
HutYK5SRx+Vk1fYaVURKcCRrOmkaK0wxtoxqkDQkrnSI7i5v+DcYNppNrIv5
QUulmCXwyCjy7jqt85qNupaA7QQKWT68v9z6hQ55+Wg9FdyRMRWX8CSulVkx
pSUuCUhf+GGw9gHrFLs4/KwEzYpDBduumGRwDR+2PV5pS955Sj/Ax9/md15+
GRoNdrk3hZOsZ+HkRzyz1I5ePtVHs0RGarhlxUhHfW0HXWmSqn89dVKiKLTW
MUl6z/bmRoRJ9AxLnOf/tWrHaYUI0vi0a/jeoA0ts+1jp9gKnE5ukQNKgCrF
NNQhOnFzA9sKXiDWZVn7purQSoOaeOIYJuPKXuKzruYB4S84bfqLfOac+Qxi
w4eeoh18gnEri+a5IhmQKQMkfswiVFFiFpRWpGkDMZPAOaGKPBO7di8DF4FU
b1qx46Ljjs6GDlhUcS0A8t41vrlhNxtXttem1ty8Uh/4kctQZXOtnCVmeWKi
UtO8bnN6TYrScuEgQlV9e6BZd6magqdMzWmtpr5woXpYUI8SxxHVfBE/AOet
NZY5D8GOnYjDFi3F8H7k/6RQHEkUZMhTvmDzRiBH0tUUvf/ljd1AEbilyZrL
+2p0h6Fkqu4QyRm3bC+JbNL/3zSP5PkRjOnF6+PvD06fSUssVdD6dLS59qwi
zePvN168OAzay6vXu/84zUOo4QtGDKIOfyUKVfSoHlHYTuvKIPpap7rT5ZUc
Y+Z85LsVpNIsolQHsRMaYksBnW0QIhuHR0miseawr8FDDIidQLkg7ARsxE4s
h1yRIX475Ca02HwwCUROHwa3XizgmuP2NzfQhd/GX4swU8j0jfHtDAyM4ejk
BURrs4iQIAuqEOkSJ/LivpzfSxkmQiYWwYRRAQU8OJ1LDXZUE4DdugzrTkB1
BE2gtuPPn5GgkO6wNLnUF/ORqIL1BHvIqQJkF+0TmNTBJgmeEd7c1wgh3j8d
CoNftxzUz0ww2dxoSSacXxohpI6TcLMjTq5ARemwZL9RRv7KAUWXvJrau9c8
p0XbJUji8tOXffI33vXrltmBuIpxq41p1ZnaiL4OJTbyWvNFqHGCkEWBsxXm
Brpj8YwU3hFV1I3kVSfvUBGJdnHa5nblMLtNKRbfCG4MxeWVHMXncXUeTLrL
MJvHyoVoz05KligGGd80uaKcrWPO2RqcHJvAaXyChc4lDCPlvB5Ujg3nET0g
Jilb5GEftmN76WnQcflmaADIt+6GFxruiyQXUbBV7eBs1gHKjB22Ny1rS5Jn
mBqq800wCQp1iHGpFXSFXrWyGKVFvkgVZjxOk0/U370/PnApbLx8wBQLVnJG
UmG5lbw1wIxZQk4KsGUsRfPGXBIVWUqVpnPHGCkhI07hH0gXKtpVV4lgjK58
gkaAHddYiTZ6cAg1ipDlojU9UY5E1zapRPKwxTnQEEIFSYIZak9X2THnK5y8
u1S+a3mEnVh8esiuJ1ZzORyeIFBRxW5hSJ4FM8sTYIAtKIWowuuwl6od+J03
tPkSpMJ548qXJanfYZHGPS4E5GVVtijvs96uLcrqK+ygpN3VAjbjN/46ndy1
7g27HU3k0lC+X7ynwfyEZl9tYSMKm9fnNWMs8yhOTg7phQzEA4Br+r9EmP8H
yfL/AFF+refx612PX+F4ZDPBQKRuktZ7tIDbZ/vH+yfmePj+By+6rxPZFdni
Scld2+hK7i1QzW9zHXCS1WlUtemN5M4hXqPm0TFKI8cBpXW9WmRSZSVN/lBC
l+dV+ekRM7H+Cn9h4N8j5mLVWbpAeyuxdUlZoqKY6SO8vw4xzrHQToDnmGps
siwYOh76ms3Csi0DMAeZCXMLLbxeZ0dnzzcSoTCSggBNhRCtNvJXSCZj7msu
uzWhFWLxIANJxaHQt+USVuQBfuiCdarwic/Dcwr/c9sKXk0FSo6EmdG8xBTk
IgNp8rqsOnoMSnyKHKXtUvdiQ3SRsHQvTDOxxmYSnqniS7TtJudw0IcJywGI
sNWOaDVotCwoVoTx6cKV8gBTIkO9BmxPs+W8fKTkOT+Idl0agXqX0BOKmk+7
jVEM4iwNpQEouskKSPRWwrlIG8V65K6kccTfQmO+Cy635seY3BC8Dhqs11Uj
ow2N9iVEAwuOIUejkeSfFxQxg3kEbNHHEjs022lyVl6ZXEcGtyIsQ5/s19Vp
OdSNoyYrqlJG5+Xwbfmn8+P3yfcs8lyAkomi2eHb7y+27bjiX7BAy2XGHIWq
J6TRKWazWdtT0XRppZ0LLLoKVnZacQ5Mnc1nBIg7o91hVH9HniNUUMrVzW3Y
PC4wiI4/1wwRMAi1CKc/W823ffWG8vj8EpHFl9AsWsfel1qk0HUUKdcSAejs
wmXR4WWSQEpYmMbC4uJqxsdiXlVlNyBvz6XoqGbBs1vEcxgqTdwlKeLC2T2C
dYXxoDOBczy1U6nhGjhLOp1SGVLdaWT3I44Qi7kpG5Ot6kBWGEij45hk7JkK
aC8lkbL4m66B53xiMNFA8Dk3FFznD7jJWhjaLbaQD/Jmq/JErC96n3nYhEpU
9kAOhPrIaO2JqIBhCmtWmxbknwbCwUqRgu8htnLGVDVEV19OjUtwWfcLshRw
u9wsTjddIBADtoSHB8uXtbP9mZVpSoGkz8AgHvIpmtj08aFP1z45/0jjlFLe
8lDIN7oiBZksdijGsJiWtq/aurUhQ6sKEZ3TFtGVsS3OgxWosSCUoSMTSobB
/MhRrNqwQVJLJWXBdiMVWJNJyDgD10aduOjKdsolK7WOc46Y4FjS0aTYIDl9
CNo2JdeoihvZSwlWJUIqEIre4ahIWCTn/WNjhAS2kxIq+RmlMy5K9EQHppl4
iiaCc4XAAVWYo67xtG1rer46AK0vuhPpwA65UqrgOdgDQaRq0XOE6xCeYhdt
S96KRrgqqF4ZSu04yPBqXKrmpQTNv9zHoPn2BLgb0aQode2kvDhN3gID0TKp
XKfo8DVqoFqQfcz4SNZn14pxXeXZbI7zKMSg0txamIcknBB2d4h0RmxmE2E4
IYzAULTcIJvk3gh1WsR+nbnXQsyA9EQ+ssesifsfUpi3qyCM1bWGdiGA8A2S
Id6uVA+PjTr2qsioLv9XggeUkmrLuODTkU3uQMCR88HwvUFn0DyGVse6UN50
6Z1c2gC7E2EZjUkYnkWIHHZBBBjazhetL4hNNDpslRuj9ZBbSFArx3Hmo/dp
IlXF2C+drBC5D13+jCQniCyaBjnAVyo3F7hTS5R1jPsVLp+jHHIc8Gu70mUU
A3UWbQcyCPHaXtqwPEYL8bYAh+Nwiafoi7wjHa6nzmyUfsuwGBIdFKQ7q/TK
Fk2tryplp/sKI6M0hgJuOQ3aoNvftGmyxVKam8HhoV38yLkQEetwdz4qO71i
FfJqNfSkXtIgQ/okdez6UcPV9Ho9hgFQj+9LUnNFNvnhh939o6Mf3oyT/zOr
SoyOyfgsqmmeIF5MHo8oHc+EFBZltg6y3HQubhNrQO3wLFGk11b0LPzA6gEL
YDTYmxWQN2FZ4YOm4uIf/yn67V9U7OlMmJROmurvTq2Mukq3Hy9ArEvRf7gz
RiliRN6VHYQ02bKyIvgQvAVtblXNPxPXGP91uSWs2uq1k1o2qJptxmllloTZ
jO4KeMWgBF97USetLNzaZ9hapTBnpgtgc7chRc9OLa1CmwcEegpP8E7wLjp6
k92tFRk8kNzmhiyCENIwGLZJ9KGCwir/hnRHi5KBJR4RYhtRgwDPCFQOX3jm
vQg73Kl0b+Pd3OAB34pZQHujc/3q+asXyLYYXqclutchKKo2SyQayy5O/+2I
KAjFkaOdnf+czfCozKZ/6VDOvzgqwSbw5cujZH+8+0ILn+OXvyHBhprKXu0e
HU1evjrKDibPj168SneP0ufp9C9HONbf/jpqjwfE1B7l2mrEhNswrVodSxqs
HtJavDh89fyLy5CcdXJeXR+oLVNYJBtwuXCGbxq1CL7yBcOeC+RKsW2SE+lK
MA3A1Ap5/n//PqzZgrN2DQTZiiEFykfMUY6OVSsxDk2MpXXS8IUMXXJsNqrn
qEOhvGkIf23RcHPjWdU8k7hDNVuPk5DVzYqyJWXA4npwgyGrF/qzoOVJPQ8W
Yu0gRqoy8nwExJMgydJwfUDybi8B1TgPWnNPWYu/e6P/6R9/3L66venBi9dH
B6/2Do5mB6/2jw6u9w/+cnR4sP+cW9yyeyPQzxe0sHDIOKTDHbo+e4tTOSWL
OUZIyV1VITJqi5OgDG74bUs3bOmwWEGkyksB1ETJitpkU7VRvUR/gRBUOUMN
AgPZHDHPtWSjBVt/5DqyFHP2dUugm797ynlGJh/sASuRl1OxnYKQWooZIkhP
ZRU/RHnho2m2IP88Fq9NehBDUMGjeMrAjOgC90YIeUn7Quvlud5trEF2lfeW
WtgB3W5td49qH3D89tiy/y26PjpN3vQoZoH0WjC9zpPS1if56sl9jU2eJhpI
1norDGcoru+JIUI9Cmc9ASqAzatDojPXVPoGXY7oRICBHU4+bUeP9kLmY44z
7hkRGqtrropWGabY4VV+efJ7t7C13AnygxqrxY/dJzY/olnjD+fbIKxiGeu8
XphnuVsbi1KWD/Yk+RpWwqzhSC4+URWvjc+fR6dvfv/hRBw/GBQBtA8Csdjp
fNq3s0zNwnKLRH1a3KZUkeV7uJJg8awEZKbVcN3o0K5BkPcounO54YgieGlG
VEqeai+07J6wrHCabGIsTvzu4vjyXNbW/xqp1vSQ+bt2MXzg6zQo2tlCMxW5
GdEdkP74C9M44Zdbt7PETdqVMaibVQG3KeYdwhd/ykc/5DQ/NZnAYnDD0fqs
Va1wgyPLq5oMA5Yjmj071pDNjXg/1yzw4s37ywCz7TG1uZCH0mY3YuSLeik2
LdLDy0OkDpR3FCoXpRBr3OcFlJwbFUYq6oTp6OzOKlisdBFLoT02R0SNrtuW
1kCoEyUrp1X32H4ppCciiXESKkP02BSM5fs78bplMmq3GYcHRrdV7EGsUGik
W4vo2kbeiubU2DLyACc/iLQ9tPWMmBH7R50+9/fTYRIlcazYFsCUcn51Iaq2
0hoVct/6ifk7XWrjn1bT5ZhmNt6KiNBNed1REqYGd3s2h2ahpS2GCAsIPKkb
gdjc1rVG3odyiUoKMd6tn5oJNNiumClHypbQM0Y8JKDTUzetgdJpvbrFsM/2
iX2H9EHy/2mNlqe8vmWN+d3b022+oum1z5/5A4csOeeyJ7BgGrfSbuo35ZO7
/2pfUPeZQM5Or36wl1g/5G6GgtrKzptA41gDEOVmzJdpTwible8qcs+SgIoy
DFJx8KQ9OWXv/DiclyOc3ojIIfMPo91cho2gLG9Pg3L88c0566GSz7P3+uWr
V6zrhBkRW6sjEwRJryJVqHZ2dnp6mrza3R/vvRg/F6c0Hqkim6M0oGj/Ot1B
zvgX4gbZNmVRzCw9Fg+H8dDBziEpJueIV65ooIuNwKsT0ihXOdsreQiMZCYF
Ppt4xqKx0bkgdY2wSXClRhgXg1XI2fXh3J+i5EqvzyjzbZHX6A8kixqipTMz
GiZye7ijKyZdXjb0AyuIv4zQiJsHL2Y4bEBDO9DJoMMScZ1a23l3fMIP0tCP
pNcwDXSBkm2WKp42GM5YFlb4M6yJRM3eh8zPtTM0YsanYto3NJibrBHTHTYg
QZsBNRCxUqjQYzblMxTioaOVSChylrhZ2ydMdIz03kNLaii1LH87CnGKrgJR
tRaDaZkt5ix6kqLfU7RS9rEnBEG5ciCCs/P7wyS2KarahNPoDN4DqHXeaAmZ
rA5ROjduwBkqr8gdeKJdVYge7dODgD1r4qR46LC9U7GihGgi6ip+3xckkdKC
zkrcBq6V2rpJpyQdxc6ZVcelJ6BqP8QYZU5HV96k8N1/uPzwPrIGmTJMSJi6
cFJzV6iXQMEj/Gz2FUHTUkXWB3aHksw4yKG6OxFlctCLHr7NrIVrZpifXvHJ
FVjEmAuOk8+B1QFkRzxWyWUPDA2H4PuO30majZNfh2aBCOKjBAmGoCLePL7d
JeCbxrVjUT/s93TooHylaTz3PCtumttHxUaVkyjglSaGkQE1pGSWiW++hTKr
FVhMfjLHox/EOPmPrBGnNXcXkzmFHbOxQ4VTsgF2JiIDH2o1C4nR0P1h4yKm
XTHluKRWBjF6TM4/XF5511ssxRI9mhNl5548zTtkMgWRkWAU98e7z5OTWwzr
moajTy+iO+0xdgBMOH2qvtWovfSBQzBC7Z17gWFg++oyv7l5xOhodeBbF4Pj
kx+H1P02pTfiO6TqtW7oOsMQXXFSu7QeqlrApleQcLm13fGuYrOQ3OtAQxXI
mI8Pr1dA7GUzs+KfDk4+vNeh2XjJaBYPxmAqLjMJYZfwAxJCWR1VWfMjh1qK
0Etz+/3V1fllsPko/6EBRbAwWRSU68TeozWQyOJZHWBssGRXxA8SN5hRlqfi
I+KMtiVAak1gIA66JyRSjJN3JMLVmWFScFhNeUMxUuOoxI9Xa0yRQ/thGnLx
81orU9IBfEgfJf3uJsdCNN2B6G1AJ0tRv0Rh0hLHM+9wldeoGnAdACRTqQ8s
9ecZ8Kzokzw5NZkf39xY+/xeMiB9eLv7lnbiQpDoGc5kjpJeUDHEEUajpvlh
0V4r2Uvcmcagap5Uz2JR6quIhRP4yVQQeBjyBxqaosiq9uAnSk8ExVcnTLxB
twS0Bs6WUOaIB2EHBRrNBFegAIGhIHVPmBuLrlLa4zYT7HMEVMGMh5RlcivA
4NePTPOs6eeKME1+ZbSeuUStMF2SP+MQPHFLTayuNR1itSwOhb0w8hwheHsl
1Tgxs3MCpeO35JCEjCIUArecqKtwrb/CFICtBAsNC9T2+lSbMUdcSdxEQ57f
xilWnZB0XBxxb0jgKJGl0I4EjsQauLWKzqtO6k10+8n7zGIahqtZYCIEC21k
lxc4BlcjDr9G5oAguxnTghiK38MS9ZiuneH+rw+1S7qxvANcW52MhLI8iiWL
bmBRm0RZhdkH7dMUNEmGsuB+tcnBvt9QVglHkHFbvdyU42fIYEBsc0hpevPM
mtLCG3FbvSjmZG1GiH4uJB/KSJsyo0C8KJPkUbW6ED8lymE7PEpMK+LsRgpF
M1WR3ZTkbsQ0T7yK9YfI6qrLbGeqja+P9jecbDSt9eiQMPp4eGJ0qjLTLT1A
fC9CUZhwIAQVTvEbZzvTxEQ25xOyGzzfrAq8pkL4fsgmZcEcVxirMXAsM2iP
PpBLCtezWCERtJJvR+PC1fAUSlHcsVxnmlarXuQfpejy5+96KhObU/SsaLja
G1k1EHMIzY0d31Muj5F1Io6Po7w78cS5yhYkQt+X89WCNQPyRGSfHPK6NBNV
j7gKN1TaX9NbxF6tg6nSMdqf40RYN5ZweKmkSkIxsBZci6Y6C9IJj4Kqj99V
+VJ23jVI1+qsLJsliOxSe9mSab6XOt7lIrMAnplUWJLhBXcYaOBzBEPnfRGJ
K+OCf0EAZPUlNIilhldc0SdWpMhFcl/mIAWVuDztetLODxdEnG6Cq6aclkWw
jnpVwmc8b/aUuGZJXCwSdUcVseJPLYNFZHE3Mw1y1C6aY/DTHhpItqu45hsL
1bCV6aPRxKO54f6ByHFJCstJN6k8i2zoLJJGWbwEAInyiaPvwZvt2C5jyC3G
faI8YEtIVlh8c0y3y2MeszbYN2Ir41ZL4UDDted0sPlj7BkOl1Xe9GR7ARuC
i2S+Klc1oR77wh0atTewcWxHA5mxSPLvL3Zfc0q4MpPnEVD9q+fPD3/5ZZuR
xdIH5mDIwGQmA1d3CIaumhVHqtUhk9XLG0LlDN0MwnX+CV7Oivu8KgtSM8hR
iYmeVDhQMzcIhIzUo2giFPMRM9cou/fILgU23AVjpaJGeEHRokNgCHCOW5UY
gt7855/ctv/5JxVO/RKFyiiGLqxr/CIUAti3QgDu7meJjCfLevya/nj7yPxE
490eRvV1XVmklGxJsPLzxxjDwiVtgjxAlpBGbTMY8umtn2Sgw+O5pjKssKJ+
NLXWHJerphVf86x17A3LYU0FKba3xKUfehHcYGyDqydakoJs4sKmQgZcAdmc
phT0PoOZwl5MHq3c/cH+iO8suhERHh9aIWgsttlQQgDZi1RCpMyuELPK4Pow
3fG2Yx0+ap3i/2yySE9Ws1bWB9lYdDTpcufzOUQ4K1Ct8uVKDIoSjG4uTS5t
hjUwkoBiFRafEdNihAy+auuOqfOc4CLdLe9pImwMG2mYKbBxy2m4JJpJlmZP
Qb1W8ZOwFoQ5UhNQ6YxEA5VEniYeqvISJU+xjNteZId4BFSKF7y0H/IFRJ/t
xvINPlQtqrLz5fMn8MuttcUCDTKa0iUJncWTvQVmhD1kivqjyQpGTrhUrfij
Wqrlkp6DP7R9FuLttnuPb37SV7NfJ4wosv7OZ1OOiz5ysrVAuOn+e/AOvX+n
IrHEbDtiJvaakk6MvOcvcldKU9N0aS/KCCgngtqJGZMUT/YJIQOQNO+hg+0u
BIvCbQZDCSzafO6QEYX/Ns4EwnXmF3A3kfb9kGvAsWakTTAFtiWhhMIuNkV/
AE8pjZLu1/PbVA+gTxPpqF0kn7rYMOkVZdtTmBUW96VGf21RzKUgLBU+uYm5
Z+he1c8IH6RbFUoaDHkoFJ5CDaLxuRV0iTgdoYtglod5UUEsRPmTS5LqBrWk
ADYmzqFzWHeCGosKykfpP3w6xwFbwQpnt+GSiJuxSQSHlqQz9E+Gyjip1OtR
VBsWQUWIo5enpVZxUDcoeVFtU1h28zlZLkJumy25fkQ+XdOtJxWctZgsUj3c
amrq1xfjr0zbld7eeAPDB5cARP5Ba//DUp2MS3ovBDCOyiIwbkPfb6Vsiy3N
tOGAoC1Vt0Kglnl/WOqTW5jsEFpE1dts/OlYk3JVxrPa3OismxjRO3nmSBd8
B+sx7azav1kEDiYqsUZ+IZbJunuA0bicxfHQ5Aa2KN62Ti8LVe+oBYMk79IH
W2xuBFpb9WRofSG5s5j6gknyo0bQW+Y6x5Ok7aY5AKmjfroS4Rzc0L1zYxWz
4Yz+OGunk1aqyZcuqMR5oNjlxitP8l9aPFqmbAj9boc0e4LBIpCyBR8v3iaD
nettr7H9FbV29t0WaJiMcrG2fO8KAk0NG2Ziy0mwufGEUXrw6uBwW+vWkM25
ytSilUuWNTnV8QnykmsuIiqC6t5jC3knDEjsMRqaADLOvCzvklST2eqj3gSH
vy2fQT6OeBOPkue7+O057+URZSjsXIdkhqF8s1PduwyH6v7Xk+afYU3s5/va
/Xxf489bL3aTw90teyTzj2T+kTg7KbKbrCjVvUBf/Ty/sZgSxSLgQqEV0ofs
M6IWRlkz0AifC6Jj2/04c48GtfPn31B7I/Rh/Pm3joTM68I0KT4O7y/AKFgO
NsRyo9wMyCWc96LAwl61xdauMSWPzagpncT/rze6swSdje8u0pOE0H38i4TR
feVrCMUcrrGmibGsNYXlNwF+5zprKFqtzWv4AVapIkpSLjM2a6BQFPG4iN37
WqnCqxzjiftj0qTe2CRGpZiNL2BCaW3lZWNadKSogp/i6nKavYBShDJnJrDV
mXt5IJXomgCiVhMmQkSXUS1PX+xNisATVpy5muOB0BCkts9URASXvW6zbRv+
bV4+wlVlTYydCLH00jHtjksSpyud9BmTWjijNewrKRcWItTO6oWj5fb5axgE
Xkum+pL+DlJSmK3LJfDguXJfDULzDCrUIkEumBb8iF8h9dCKlmXTEn0kCWKi
QJoS6iIx9VL9Ep0McujY1LmWjmPJwDgqAldyVrQOpXUeMMtZmIuL3LnGqWZp
Nc8dtu62BENx5DCS4OCyHEYx1qEt1Y/Y/TGfTkBYQ9M/MlXQTLe7dsXAfLU2
tbfDqYBM6+VCdWWeMquSIueVmsU8HFawlHQx4Dr8Qo6l7tuHs0X/8HB0w0TH
mZF4+tJqg1mCy5TArC03jkdB5or+8s6MmtHxpKuEOxrBsFk7JVucxB6AFo1Y
OZob7J6OBq01prkWdsAJvuUi3w8ugtDXyp1m2bQjCtKpa9EUmgF2rr/12vzH
iUex5OLcVpTdSgmN4lgozJPSPhUgGsV8BTMdzoqYC/NGhwm5a0NQcFhS6jKt
AFwnpsOQFSK+XwXeICOS6yJyCxB98o3JrVHQobsIYYYWx4R7xrLraLWMp9C7
Rs1tpBi6RCApH9HdYYoOJLm0b9tAIsGvGWLD/tRtDAiXDpOUS5dEObYfKUYY
Q9ua5Fjvy2CKo5vcg1TITTjim1D4zNak8ZCl3XMfAMOC3j25LUth1hTPQLbk
ZZVzQc6se6+a0ikhcdxowH8nVo2+926MQUCDIRYXLyUuXTJYrxlFqBXtKB27
CNqcx4h3APu3LWnkqWX1mmpJU6kD39CATdyDnnGq7fAJLqsjgn5tFGMDhG7t
lTFUBYLoe9vqM6F+TFkColBy9NKSN4UPG7rB1eUK/zfPUmPDNIEoREtyoq45
EbUF3NN04yplz12EOG2Rtm8Xmav3rJZjiv1Z5E2j+W4U+hXZ+V2zo8mi/tVf
awmx4LtBL4DHTD04ShTUHmrAYma4XlVTAdFgOw/GUUisCNoGEaTZQb75yBCz
3rSwva1q7LrYmhjvh+i87UJk3VFg1uOisAFnUGc56Nm87Q61Y5NrTsDY4dKb
Ld6HAkVBXD2OCwWX7EgyTuZU+a5uh//TS6K/tYBoYBgwsaqIJQYdTXS3f+ut
O0ZW/fddvH3K5xYenMMXe/sH9O/na60JGhh+4M5Ya4J0Uwy5NWak1CRLMWx6
k9znIAKt5438mshODyXH+1FETh18KaefEHCAAuznFEktMTuMRko1NJi7HJ+3
1gh5xbWVVB06FVAzwRdZ5dQ4L+Lq9UuhzankSLXhicMy+fhGBx7WVqhjky8p
c4YdE4+ctHb0jbbFudopj+0YVUOK4JJhXKw8i5XZLtwPawwGThQZIBlUSHzI
isbyv9Ee8xWGt3UWt3VmtpZIc3p5NWJkRFUOgyLZI8bSSqOw2LI0+wpszoAv
5vFh5GBxv7MsHMaAiqdzfGmabcTQQkknb7lPC47EslGERrvjiRHPWqTxDXuM
aMfAvP/eXc52JnA+aJekxTF+QczscD/Zf7UH//9S7WPZDgw9ehj+pme7D1bt
J6t1j8KJiZ6Ev0MzdzdxK3c37rdJ67dJzG9dUklIrYMd692fAc5tW+zfo/iH
Cn/xAtFQPRGhBCly1T7W0gT5fGlLr+g2yfmPJ5ffvVS/hYamm5DwthOr0xKA
l3eT+uVoAUz71zX+m+T9f8bn6xGywK2haQIiHsDybyOxk8viWzrKP43w574W
X25HwKPoYJ6kNAhvcSFSw8QhihmmfKYqy3puEr3UMcCM9BnQLSjLzq3T4HB/
W/xX8TMCm9G/rggZeBw7rwc4fMkVkcUYkJ6j4I7brVfa0pqpjxLg5hHqKOUu
yGzqhA7AO86wZZExrCmKZ5VjfJh8Nek6oqYQWh1c18qRJETDXLuXmiHcyRDV
3GFNCn2z4q3XGpEjERacqEfAh5JuhdbKSaMBxjnmzkxHOSjzXGaqpWXW4rDW
iNOofnh4E3fS287NVc8a5yKFERIYe1TmjxLiMIRcKmj9dyxaEZgeZvaoKVnw
yQk9lu1qbGpwBT/S5J3PcDkODWtVrWOt1pUMUI4mZtFgKC+LDiGzYckx4U7o
ImBBn0ETQmOjvBoMqZjqrkzj0p01h0BIWDwFtIG8hTGo6eS/VnnNya5IhXk9
ijB02j7QRXqDcZu9A9NcCoLDvl7Nr2uvlN1QvHMBws9sdZORsxHtyGk+jRux
SBWuQYrxEXOCns50cVpzsxi2hhKaOEuNsjFmZIYsJowHoXqkXNz8uCwch22g
JOqGL8fJw+an927uEeXzCtskS5xkyNkI3nvJ4+WE9/ZQMOQXTiu2xKHTXa++
XhlhmJalUwSoh5CZbGVKSm2FHogHGo1D7WVOoWtN6zoLFjpyMVGsmBwGzjjG
ABfxQMmkJK0jClCI0zHCHlIQenbPXhHhDwGyBehX0vXattgQbRezmJCxGw6P
JChrBl1uVXw7ayer02oyqrM9dYV68VqKlWVL0GUtRG43vJEsDb2sbmBy/611
KAgJSA9z3SL4odnfy6GrQ2rgR3xVG9oDAgNEYOf2iwWhGm64x8b31noHvSz4
/J3IDZaX8+ZZHZ/nEBTn7sgjerk30vi4rstJTjxMbrw8TpQQrVZelug8rlDL
tmDPpS2gEDWHeVmvqsxN214lMi7CQWSmv8QodT4B9gsHGsEulIUG55kptBdX
EBb3Or2GEd1oYFgH68IgB30gqgKa0I06WzNlEhVkWhj+6W3h8Z3RaA3ced40
BFI8AcHCStaTvwS+QwnI0rMFvJri4zyzDSUGZnEhTTqSjDeADdnNjBspp4sY
2ojLKgacmvci8PaYCoERRtmblkoyk8owcOQsCNbnD+BXF9m9Vi14m2PI+MnF
W5JuPyA4rs81uGSn0rklYn84uTzf5kR054ZHLpshBqnUxSj6idjlWPdOGc0h
i7yJKLlbcKhvJ58J1gEnk0cnzZfBKQizCXPkpHLiNJvM6eYG+kUO5iDDvdSj
JQww5xNUW6zVLXB4mARF3jEYZq6pH2eWtYkiDNr3G5O+4pzfKOejcAvnqdmA
94SsOVHxofTlVNWHBENcACe6z+ojs4twwJklBKZ+vFFHXLKD7rFQc1qCf2cZ
JgpJbQ4DtKrLOV92Ev46AeENVqSKxUQrCG81cKjYS7jyZkF8MPQhUg2DCOiq
P161hTxebNqKelUvRb6tMwpsx2ZatlsXDeS6JEoLHYa4BCtugvHuSDgTPcGo
YtRI8iAtMv6aVK2JyMb2D9UWeJGeIQWHrnoGV5UVJJUKNGmGoBTMhyI8ae9a
3ZHwrrcow22G8VO268OIkYug4OlgDScl7qFJ/UQeJFLJ9YXaBF/hmj3hF5QO
owDfk1pFCljecF5TZepEqPmCCuH1PC3uhkI5N9hqRUWRUp1TXDaBGK4pgaBN
gCSeziOng1SmcalB6gTNJy6CWUZtu7XFFXDI8pihV4m8cpk6O93eMX/WpR5z
ymQFysLU6uHSO3wO2PBhK1fbDPER0QUvsgUaaY9h9Wrh45od2QIH/RdLK4fh
1KO0mtzmWElwhTp9C0aVg7PVO0L3CTJyREC5ofTSEcca+G5naMhL43DwVo3v
nfC3evl4X1BucU0xRDBnIrPvWS59kpY91Q2y8c24hxy3QxFTgaVKTvHaK5B4
amllgX7hmxKTNQwJBp6+y7KloK2Fjup0Ft3DcXlMzpcfSl2QT6jv5Jg8Uz+C
irqog/RwvYK34B5dwgUHz9fLdCK5mtc5iw4YYY/SKlpyShNPqWEHOztjiBLx
DYdxis2bTl3BxZHQGalJestVY+VYe84wp5OKXn0+TxtSPN4xSsXg6vwdG3KE
9PTB008gENO+nYZExRqePz1lR1nYPOyXR/mhsLwvLO1mGCxkGiglUJZWSdeM
geLRz12xO5yi2WdNRtl7t/l13qgthlMPiNETwmgpedIKaL7gKulYDcplxhTs
DqDknayRioIjzDVJZiF9VlJNocubKl1gMMWAB9EozsPWNXAvYAMk+8xTYGDb
ijEnjEIvPSsVNNOCVLkEH/GSkTUmlyLpuFE5Ud2UyliR0hhnnnMOU15QzDQ+
o6lpEk7AkNomAfq8bjiROdOMMaKWfIz6JAsfjgfKasBjaV1ni+u5XUR6hegR
8UgUMMIVOrIwx5fi6WonYEsdaL52YDyVgBZG8gUpfzz52tBxMJR6lFLRQFYO
saFGxZNwYcsuMAQ4PRj8ae4Vu6WUvU85+wgJBQj3BjVKvOhG9W0+a9iMEBri
ZCHOBBbK91sBukFG5/2/Vpz1gKbUioR5t6GxHKjhK12ROZbqOzDiy2ya36At
GKupoSsOZ+1QIZiA0WKN3rg6HEKVt1TjXcDGrKiSdUvLxALXylhidiRa9aVT
msmEi50TjKCChDK8MAdWU7Ft/UXs4KC7SCa9nMSilDoVmLPjCqv16QuspS9V
JL6NkvjXaw7UCO5MXqwytUUwVg67E51mpYc6COH/b3PX/tRGkqR/d4T/hw4R
cRasJJAAgbVj32kAjz02hkDMY2N2wtFIjei1HkS3hM0a/verfFZWdwvsmbmL
9cbMjtXd9a6szKzM75uTvcCQCCa30QCZV2H8eDRf10XkvpJuWJeIwODPRY+D
3Gt1nvMCCkbYSZVszoBsyG7yBuVdsiAFfZqArAPXabwE/Y0mVuZteAXSejZm
Xq8ZuO7ml01Wz3i75yo8oGLCijXVw50ESLF4wlh/GQfe0FVFE9gcgRLIqcgf
UVqNJADq/EBiSqrehMPo4DQaL+PMybLEut5miPJnuK7NvMstAlrcgovs4WRJ
RQyx+4kuQ5JqCNsMtW7RsEfqzyNqUhk1DJf08chC1+lWG0UIc8AlphoSCD70
yH1E/kDBLDWH1yLEpGY/meYzpTMfKwMJlOCTG6fj2B2TEdK75i05KLU0iqiP
fNSRRzcTHjscHdoBGoVsd43sGMvXgQLAcI8aucWSG6w9lm6ygG0ubQmQAi9l
SnmKqtxXwOXAbQUFby8KINnPcgWwkC1c9QwGymfdcsW0/RWDU53FnBmJngJ9
GYamIezWdF8GhjxAkchNNyiI6WTRTGclB1wxxAVGbqHUhXQrc2vPhIbxzsZ2
hEGt4c1EoeAJADgKqQ/HxxcdhjHif2DUHWpLR29/ciorXCe6VfnAjZMpqMnK
PDFMoLjSNLjHP6BAdk9NyUiEkLNqMshzzhgqJbZDsayJ2ElrKFdYwVRpQrwl
CGSgK/g017hmUxflktP2WVUlyjwJj2O0FdLoKd+2tzoLHxXgh1EZWqWLUs47
yLVx6UziaoMQinCXKKh3AV4Gg+eiQSoAx5jEMixApVwJkgD8ECR0WQd/w+D3
aeuePjFcooWQyZIVzkgM6kAyzdCNj+qaBcrQzStuB0AdLWVHzydIsprRHQth
z4hGAUMSOifP5RjXFGYDegp+OrhiYzdQ6Xa2FQHKUo5DChv2GfbmWdCdcHKC
3kvY7Se1kBGil5GBtLuobY5GKaf6Zmn+EcPL/OFW2jeIejGepAK3hrlQdhby
BDG0cCUpaRjTOa1cxCu2hkUWoaVQCpsNZB3EUtjrqUA80ZrWKLJg8cOadwND
WLMFwAC6wYK8Q5k8hBy69S1W/j4VQ2hRCVwBtlXFew2EYy18uXT7jtPjhRhB
Ikj06SXrsz5cgBRhjKW5L2h2qEQH2TfNwtnrt6BNSVdcDpuZfh5ExXmdLwxj
QME/SXyypY/OwQowvGoD61Ae2FuUYwlGPqJHC/QUd8aNOENZddBm7uxAUa45
7Qih79WjLhOGt/+kCFn6T1NHOmMUMW/CzSkwGWnNYG8ycTwU0qJmp0xnnSCC
hdsyCk8PaTPLxRhLBL3WkuBh3j/Z/2w5Qlyj+pbFA06bOEEcbIbPmcyHH6lN
tjyE0ANz/9Itok/gOXVPL9PxMjNAaxuEM+NVWotQh6NURzBD7KTXvzXyZ12i
MgioGNHhUPQrBQNfJDtj7zIO/Ph6q5XrqSD7qLOzuQezMM+9VaIWBvpEMfAG
Wl13ljx5j8BRx24aMwwaUfOm/75fjqZJ41l8r3olxzaeQ0wzJq2fgzfOpHFE
PwPpnap1xJXG0lHdUjbANqp9fam1hnUL1jA14NTZIVO4sMlr1AMtOEyZxOBH
zm1k8PVe9M/fSAd9dfDP37GlWuEdYNJLnsHTJ3dN9z93hGLmj/tzR/mAmJbn
1sH37i8gd66vYXDZTzygTQdQSG9mztBzLyzR6IzqKEPWfcQUlwxx43cau0sG
k78lkaRDCU3VV+WVCtjW8JvEf2OCAh/47EsvwgVAuPDZonlDs+sk6yR58Syc
OSRbxUyNBU2fz/jgz2DD2TnCRfZMVtcxItSeY5KPXT6B+46+FJ53A2r7AMoA
rxesuWZqqelaEWPElMeocUHMmlq6kpubIloEABTIHPh0DpnBp08CMwSToz5A
sFU78iuC0VIArILPq7VoVYcoTDaiQYfUtl5k36WHg+XFwjwPv4cXzgyjNG8g
9977zT49PhHokurHwqpQOLbcK5wCVodRWee2VJ9xvWhlEB9QCcvOBC5hKOWN
wqJyVkupNDpZMYIwDbkCLrjTrnnZPB5Nbg3IKilh8Ayhy/IriEiz1/quZN8Y
erPvhztXDU28BLKE3Hf992+OnR1KPGsNn9cjrfm3a0NzAXNjL9D4JoNeepXF
Y1JwRPfKSj3Xael7PdTg5fWkusPkGsId8OScpO7wpHxY9UlQq7W0KDqOx067
J2dyPV+3K8C1DLQBTYWjx62b4ZX/eAhKYX7lztcJ58GA/lwo6BQDVKL/ipKp
s2qVLASy9cDrMyS/nYDH2m5FSH0k1eFYR784HQJZ6rL58jqqI6rz/8BNXGue
jTGcAumSDLmnmxTfYgknjPpOwygWNr/O409jX5pfl8hWsYS0Rteog5Pj45P3
sstCe1/e8TOG0ZY9bf4P9DPRK4ijegLsOKazp8ZfY0Xpf0d1uFcYUWwPOqGd
VYmjfcJCtiLhJRC2KCSRqJkjGcEFjkl0PsozOL2rMmhqLZFRx16gVv1RMRJB
LTBcfDTT182H/pjHUeHvTfp8lQDlypu+HdC/YJPzQGBSTp3cfc7OEIoh907k
OraYZ+sUHXZ+dHx6ctY/+0cwHSDGOP1wGjtrilKJ0d3JBB3wRtXB1YRm/m14
Mc9q6oO5JoS1OR/gXu/R+WNtjdk3UXDrRJWZQpdYYO5tmugXSM14i3FZP529
CfOgxKDBYfk2dSdXfaeizeSWGLHnDBzwQ4CDnkW1AWbsu4bUJNsd11iul2+E
RKjJqSE4xgxYeT+hx40UBvcAYEQL6D9aSS/qG4wANfZqUL/J5TO3kqgdoE+F
MarrVptcN6gH5UD6gpvCgkgUapRLSqqNs8hCdAPydWIIABJO15rNGpkP2nN3
dMz5Mhr9PaanbLjyIrQA8MQ1NikMfGH/h7wOZv5i4r2yg32HM3AX6aCHWjYo
1X7/82iJMnUXoW58FmrFPZPbbeIYkWSo5CmPSHH/jW+Rfm8U1H8u8wPrw3cR
qtg/r1CuK6uuknEP1Mh9jN0ALpz9fgd3EL6P+HPkfu+t6syKP6ZGwYHj1sMz
NAKOVqv/X9exB3oFRgOJIIinxzhPwGwSo4EFWYDaEEoeUF6bIiDUPBiIPBlF
g1unGHx2r11epp+/3lqosT2Q43eBWfAVhXvPLXwFve/ub+//TvdMI0G5hLF5
Tzo3/kHj4ISupiXDgmnJgPcUoRORRkWQrKOICvkbtRLLCdR23iE5nTzB6VFi
+viNrYrfH9HaK5T2x9Rt0Zkeb8RVbO7trEURSRk1+AbTvZys75PotiV4HyjU
Rmc4DY+UYMAZbHyGr4qgrDm6Cp/Jp3DRnQ7d2rxtYBKWogS2ttEOkYl2Ypo9
8A+1n5yWyAzVQD8Panx6SpVQk6UIek1uL/T4eXBgkcqVPpdGd6TJOOstfd5H
s1PuROcZXuhO6NC1RvTlfM6bBHFJwBMlRej1HuxoOggkRkq/rUWD1yc/vTtU
TCb5WAcoWsRjxCfk8FMMDPFPdWzxHfla3w2Cc4MmYPd4CxHJDQWQmDKw68Ag
IRMZtp9RZRFigatwUyify4Ucobp41CKkcynU7816guIMS3h/cq55Jup7dmcg
LQsDc+svEKQIU0nrD1iHK+1wwG4tiIoDsr16kR9BNJywCQW7CKavaGMNftDv
6mmSl6wmsns2K+ycoLqvMepa/gtXK0ibYVCqAHWqSmQyecDv2Q8p3zA45rvF
y18o9QVje5BSCiDa3AL8TsxS1o/yF7UfW3CoZKBPvagNXO3xqIYXePTLj+k0
4l83X3IONwbXIIypG9DNg+MBO/hzhbfgRER4B2C8buWiTPUw40iiNQGu3O82
Fy9d491/lJt5bJv5cwKBVYtFYlt67PZ7Mon8M9feUToSK/+GQ1adoPlwfevG
+AOCLyPzvIQQK0wysTCyGZl6DkkTC6UhD3AbH0/nDExEsfFOhGSP9ejM9uj1
fJlPklvbn7Nlnkfy++bLRtXkHdoy3H6afQyG5NCtNjck/GBFGa9tGd+n2cer
+WTxb1vM62T2MfJPoJzKHr21JR3PszTOFkGX3saLqwkYAfpwRZt+tSW9S5e2
kF+Xl4kbbPh18yVlN1aUcBC25SLJxmFLsknEP7t1okQkWXKTAhtRkowgiNlO
4blqfEy8t0jiKW7ZaYJ4gXgrdO7U31F8K2TUy4z+huF2smKoErIMsRCJu+1V
9aRf2KAJBApdxMup7U/fSexJOo+C51+zaG5cw0+uknR6ES6cG4TU1mcrihqE
6y8Fv7QvZbCAi6xZRA9WFHFui/gFLoEyW8b51XzqhpgfuKlaMd9BMUcQULoI
ipknGd5y8aPNl4/szmCQjkGkZOEAOQHnVhA9WNG1k2DmFomzUmwZJ25YIv55
dccCwTdw8mkWbCnIiI745wcWsqj+RReP0Um9FZGTFUFaKo8THTd05DmzDv7a
7Oz0RLG/vsrQwjBQcQCEWbjkbu+02lF9rfO804jcv7fX/66uX3bmu8PqGvzJ
roeohNgLfEEcwsDdA2RtWevst7GoHVMUvTgp5LfpzW4Q9WoYpC9uPZuvR5Qm
/JoruvAW3BzsQ9dVvL21JRUfUXTA9PD94PEqnB4AV6pwlQxc9HJ/TLAXkxTh
vCleEv0cnE4Pte5hd5/b7tpBNqdYwVHa2d+D+gBdA2tBNA0PzQFl72LZ+6KU
wAxvky0o00xeRHHnxZQmDR5FCJPC6cAy9vfX/x6pKUa8aiNxNUFw6ex2im/v
4NtdfZsWQkX5z9s7+/jFNn7xXL94C0kYhXmN2e/kgx4JTeSSsjx4afn3US9w
he89x8JpcW6VuyALC+1iZ3eMZ/Pcab555BZ9ep0D0tgEXduyg3R97u9paQOe
nkuhZm0uQPE96CMkjdDQYTpCiLmBsB1KX+paS9PV1pLPUfGnYApykIoyNoOY
fcRCJnI1nrDmRYpLeY+mwff4LMFlJ/4ra83OV3umaZDJacFCZTAYQAVdrGDP
D8IROqDRQYcSJTe+OO//EJFEzHmwHDs9vxoHEEgxnVDEnNPjcGrdEZsjPCKi
SHAGAuOROsOW0T08twETCsA3NxKwkqQZ0FtIQ3CIurg09lRiQWQYRve2naVN
IYcNNRyJKuMD8Pp8QO47S2mMg7+zg8Jrz0sPHRB2bfupELb17HLYbXd2Yc5k
dsHLBZtjt7Pr92y7Db83O21v/9ShuWxYCEcF2E0/pIvXywsKP82jq8XiOu9t
bo7dEC0vWsP5dJOIRT+NNw20nnCMbvJnANw7weacQtjfmcUUhMAZpxUTj06z
veWbdFhJZU/qeDL6e3QkohZvH3QJU/Z9c2vfl6RvXrI1/iFHuyLOJOJFkBNT
SE684ZTa5lbXlwHkqqDx810/McVDM9x6Zvr0kQW/hs93/OcW3U/iQuU39fFz
ifRFYhvNd70K/Z9hUB7nowAoxij9rMIIPX6uqcFJ7teEihnfG8BSluqw7EnQ
FK59OM3NaxNz7T+jwZF+b1cMPWVsQpaOjm6n9BpyToaecSx/OeMmgGTxHqOL
OQaH4khIWw2omytMSqll5HqqIfoG7235BIU1ATsI7oP/NNc1Ia97CG2U0orr
YuNxuIdt9pOWL+wQCNNwqDSCp9IzWJxLpwZkt9rWqWybnONDPIC6EpRK9WYz
veHbDrayvSxoNjEXE5W3d+lFBo5SewDRifxlbZJeOLXh3oJHKWC6jhm+TJc1
mnakLNcTLn1huNKSEjtnrnzb6EF2h8lkDHg9V9PcZ+lduB0H4P3xxJlIgObV
JO91sIgBWGAweEfpehfJaDHJmekpp/Q9iuOxmanpEJBEF4T84no5cfJwGcPh
k3x2Wwm5VCi01A0P8766I2YC9GwaPSP9xBgMiHnLOWGsQM4q1130fspS4538
DfI/AnZeJzlJbS4NTCv6nmL3R64TlN0+Q/wcbEiDEz+CVhNXyILPMo/ZWB50
QWmByJJpfM3hCqgf8WetqI9JlJSHTmkj6FRvBOOhXLEe+SWTKJ1EEz+Ht0OY
QJ9GC0LD6VBjSpbAfoJ3V+/x1NUL6FZ2HS1zSowJeCUx2Zjfjsusr3hZiUGT
OisNepLzaTEjlYPPC2UWZU3CLcOUeQo58dM2icYDwxUlW6MuraS8ChX0EH53
0F/3Q8VBZzZ+HNpKEeymsdRJADbCUOeLsM1+/Cha5wJC8yG3Ga9N3IyDFGxF
P2O3FCH4E/gnVg4j+pqFC82txXcIR4JifKbIp/oBX+S6ZepZYummHhUQ8xZu
OUldB8ism/nHELtG6QGxv5IvpkNf8YVr3oGtg75UJgevBUuAs6nMaGgUw+rv
W0zabPiNzK7NtjP5vv5yhhDQYSJhq9g7eIoUohkEptliApMIJWbZKEokyVUF
MXSRsMjhQkIBTlBR0Xw4XGbRaJnIHY4tITU5PbxrEsjVK2Fn86Z3Ahfyj65p
bIA8nT8Q4cekEghAhnk84R5OIB5qSMVyoyUjlpflVTK5hn5T/jqTJgT9KiRp
FKYId6tBczbBB5mZPwSvJx1WE5epMpsYirj0wF8AaCy8/VREUHQFdV99LcwX
+pXDwUfCVQy4R7DQl8MhznqRSRKu3THaT8Hj1tbwQMzdiYhnOGJ6wA/55Bmm
dueblLPQGkYYzvDm/eDo7PzDwYdXZyfHH169eXekx+smf9jUL47eH2p6Hpy1
rjmPlcFHcqmMNXYCHDsxApeGokF6ZDLWd9kUIPnigUKn/J3Xn6Grffmor6TA
4DC4vycFk+vkbwXwBZ0GV0k8Ev0OfQbgWSOPAMj9pU+8Jce+LjQbmsBTEEQr
fFlLKBUDMi08xCk/lW5g66tCFlhGPMT3hWwHWLaz2drPO62tVqfV7u1v7e8i
5G8V9Gw3gJ6NvhPOA9CRE7lgB4E8K7Q3vn4ZYrqGxDhmLG2220KyYsSsIbYV
H87O/XEnUvQiasN/nrv/2IKwgvd42Xb+9p08OYAMXffw81Ynqm+13L9d4TgI
hBSM78u6ctYPvBpfbF1iMe6omOEvOxgwyWyJqCczvmdU/ylLm6fx4opv+eTB
YTJZxPjtBZjSnMI7wxa3C+++S2Zjt+Dg5Xb4BJMA3IPaRe0ba936llo7K2pN
8kK14cpYWXm7VHnnm7vc3UIfRNEEWjdLMTqOs4+4CLY+v3plH7yI+p3u3l63
u7vX2dvuPu++6h5ttbvdve29nW57b2dvd2/71W5Ub+9HRCNNS3qd1xYtVhjj
1wIWggMOOrdQZuLeZ6YDT4SCLLVOLQJKOc0bRFIEVNj1YKj/dHi6DldCC+Zk
0ihgQibJiONG8nlUsyUql3ADmh0nqLKgyudGDsAhXfA/wqnBkEwirDAiD0Ac
TKjUEqFCRI5EMAVNKARG+wvNXI0NyFovajf4J2qP+8XpKBTHc69j2y9RMnsC
SFDwC5yF0PaKll06m8Iplw0TNMAJ5hQliYETBFFEkpje7xkBYlbL9qOrZcf9
vdPddX/fhud7+53+9oHcw9Ofnefdo263+8q9dwjfdZ9DmZ2t7v7eLvzSPeps
URldV2630z3Ap7thKa4NHSjDPTl0Ldp29bW7e93d7SPcEN3nK5bsH5qey3iS
J/IrjZ/7tfbdGwk6B4S55RThB+MR3lUkWQZOaBKZL1FA+Lk9N7kjvHZAFwEo
42t7e+QnsiIXB5Z/gxBx6ZqhAkKDE9ThWLBT6s6zHb5vGmmjfqH0Mr+MgOF8
PL4FJ0diCDOvYmGBl1zF8gnVCw+gF3T8vHCHS//grRw+L8KjZ2cnqtuGff2Z
wx1YWwsjNa2GUIjh/Mt1hN86W1vt3uhiv9fr9Nq/VxIzVisNjwjvF6oLnh/9
el6lDkpoOOtLV8lnUghDlPgC0Q8KyDQPZCRg52QJx1QBzQtCg8zc/3+OwT8y
ZcJiWuPopwD/CXJq0pIAp4QzUUHwFOUobZSW1W3dG4dv+j883icoprX4vBBF
ty+bxi9K4aSTDqJBxis/QjjDEkQ3Xt2GnFs2p6u0GYt7L1gRpR0lFBAB55XE
DNfZkb/uvbxf1sAxCe/dl/V1RRZS1RySj03BJchESzrkzDjQr9W7CFc6BC1F
71U4EtEjxsh1Dd4CZEuaFgDVbsBGDdDEZz+f2co99ojc/5Zj1CE1wBspckUl
ER20shhPgPAYFNqIU/EumcNT2yYZ+jKAGA6S8ydiBito5uz26ROG5ab7Rciy
Iv8RmqJou4hTAbUAVEjGrlEZJNqKjaJUkRWobkIdDr/dm01wenRctf4p9h2z
PZr6I7R+Ewpw//GBimtdJ1PZFVzir7tbz6uKDMsqFGM2F/XEz1LYi39lw7+s
C5qU/6d74UsqdYQhqGwfIJ//L+sEFPZhGP/pLkg5hQ6Ut00jOpxPwfd20Pc7
yMD50LEHLu/V+9uv5Ctj7iO0AKJm+Xs51M7lPqCJF5tfvsi2ao7Bt5UtAHbn
Uvgf5A4UPNLGn8dF0g0KHRolfxLddRCTJuajDBHxZUaSG/tDRi4eX63oCGDU
bCWGAo4wlbzcghLsQaYHXRCu82sLQl/6g/etdnR4xHZ76AiVlOBCAawwWCIe
V9Wc8v8Ysc4JEohPpuLpabZCdpgJ/fYlVdrTwSH9+CiwUkCD4YahWTEM1tP1
+ujXr26VqidFOWMRqfxhWIDyuf/mwagUDf8J4+EbVhgSv73LQyKfN0f4UnMY
+2EBPc9/W4E2f9BXpP5PM0ThplLQ6QpaveRFB2pS/ay/XqKG+aYpoFoKwu0/
YQp8wwpTUJSpMrz0+6rBRZllxpB2tBvmSnj1bxzEivPhP2EIpVnBAIY8ryTX
RPWVJLY68b8yBHaah9cMRQJTfNujOnLRIfKc93BUI2N/+WJUsHvmbvFFcoQf
XcHMPjYhPH0S6Lcm2LD+4+m6Z9ocyIc/nrrZ/he8Rre7sGb0r4aE5ekTCWfy
hH1QDCJFwqu73f0d68StMDh/PG36djbZL/b7Ywy93j1NY/jh+iZ7aVwAfEFj
usr8SrTK8LbEYz6K19+7HjTKc0EmGNzTCCCUvl1KdGW0QbbduGVishuESD79
82C1j5bT66iOigrA1UNIyzq5wb/9jLoJpDFZzryXUt1MfuSqHIYSRFhoUJoH
d0MP2L7lJpk9f875HTpYvP0BEUw2zShexA1VXWKFIgGHGIQiY6rTOd5PaqvL
IiM1I14azW9qf3M25yikYk905/LyqinqVy2qw7Z91n7WwHCrzu5WB/q0nHIy
c2cdIslAciHm5zhZaMwTgkgT4h0adtWoaOT/5Fo6Wk17mzG/CXYbaSoQ+Rix
maQwBSyS4Be7lksi0B+mJSl4Vi0Fw/3xLC8JxBWi8MezA3Au8HfrRiZaYQi7
FXB+xZi7b3FeVypxaWJAF6vl1Vb8WfHoIF8HgwpD0exGy7WsFRIqIw6gn3sC
HfOufzDRQSquc9SWvRKbQEYQJAQjzhKBlcQBL3YRE9hT8CE6DhTJFHRyS2nA
fJJA7IectZHgigYk3J4W3gC6fe/vO8xK5xQnwaOZyfZt6ASi00GZQCveJiS9
isNBokzhVG7li/nH1mxS4YoMAwXtaXGOQC+rAYY8xftD73w/H936EyazJ0yF
nM9usm+S7d+uaT8g1YtCPft/EerZTclTUeknxGMVZJBvd5ETLfUI6wbilqNl
Pb9ZIE96weIBVtWtrejk7bcthHCS+Wk40Qad4ArzIYgQ2kqQwP9ablfgVV2p
1DzSFIryCQUlDNKzkD6rTs4N9Q7ds+RBw/7pE41GWaV1SpEe+VQQewGYnb2E
gc7OGnnYbn9yF1zvf3YbiEf2qxUcXWL/5/tBmmb2hBJwzm/YJnCCMBtFyUQz
nvB5lsW3xWMJFKBH9B/WddlFg/oqe3DsDQhPtbnpWnE7/Ke6vVo/QkoTiIwJ
O232fgi8CotuX4AiqW+obaNqs7P7PKpfpzNIMxD3gdOf1gmCXJHU6fij0H5y
HdatsYjm48124BIQC9MqLCPxRDB+a2gyP31C4h5P6occG4x6F/3A7kOYA+sy
DPyTX9bKnkm9V0jNXa1erBDXtShd38f5lfsJyD7Jj4iDJ85QujUpO1PFjxo4
8BoFL4plbGSFJKzIowxky1mEaF3NeIIw9DZsgtgNESZ6dg0RVCl4bkPGC7gK
UU7H8lXIe2B1c4VByqazgsk2k2bAhTHfNkXjZTpCMhJXmxsnHWbeKIKJyq7k
sZ8hjgkLokdlSUtFn+ByEUa06GTexlir6AThoDW1HdoFfcN0smZT32633P9C
r6vAUdjwbxOBulTeN9qug9df7fingxYXZpMx4d2Cwf0qe//k8Oiri/uMO6mV
yJ7/cw3yFkihTX+wPFypUhRtQl7hh0Q7czBxBhg4CWgNms1HfhbgDsFHBmIs
yBplXBaNOUU4HiAbmwBYhgR23sQZEsRJOhliYXicXuN0ePrkFmw6WIGeZ2aI
3BMQ1KtR9HQr4l8xOZ54bcHdFOYG3K5Lqo2IW5jCl7Fr4Gx24z5KmvPLS222
by6G84+AamZ+DXVsgoBzyxG3ltIsKU8E/sJbDEwpQywrUiudTJaYnqQJEhiE
hOOGR/hyAfR6mPQ4TWJChkB7JRwb2TI1makaEV2bK10cihwD5oOT0Anw5YUk
8TXYwSPFBID7RPKIFzlZyrk7kkmtENzpDIeRR/7LGpfUnKZwHY6u1/AVfiGq
u9+dnpZOmQscU0n9nJdHFtnLplDYcipHE44VMa0gKyEIyMQuOMvOABnMyN0D
TJGsS29E731uMKwTYIfP3MbS+J0eBj8nCjiitKIQ3w4KSBwFBHbB3VWJdVgo
TDwuOgxlqRWclYgMdaL6+9hRCPP5S+rl5SlTol2zVEuUigfM8004y5hqjA8u
Cfh2qtckhph1t7QNoavSK+JOBB4VpDb0vGzJCCFylL8MAlnQfgby9nnG950M
/KMpARjUJzx9wHKVJXjITxFpB7J05HtZps4owopKy3Rxe83LtPCKLlP3u1+m
ejJB3i++zifmZUIVw0T4pN3SYvIFBGH3nO4rrX21dGY/lzgqtxmCsbnRlW9q
0+HpeiBzlC0CjvYxrB26+qBW5ZxcDUmJfulQHLGbHN2OkGxBzG5DgGFvUFbA
JvWWUQ41j7xBcKwHgzMP/q3hz5sSBoQ3WTTz2hZDoeVTk6mvBSdO8YBSV56X
Xc4WJZIAHgA8A+HKHYbxgm61MfxP8hk5VE5Tof1hp54jJFNSWSwjSwWD2Ivq
X75YeXi/3oBlZn+G9cfmKsyWfYTTfL+Ofbl7pe14Y9px5yq5cyXewbcIad5r
9uQf9/eNDdK+Jxsb0V0U6T/ukeQ7Dosc73fRPyL+x7xGOVelVVHP1+8iQDhs
8vtn4dIgOxy5PPE3zAQJv9jYoCaUm+iTTjF2bfECfWAbUfi9tJDsIxv+4s35
+tnp23Xu1aPfWXuHX6/+xF/Zhq9tbGhmxsZGoU9HnP0UnffR2IUcTjrw6mto
9kAzt9w/2+6f/apBcGK25XZOcRh+ODqPNuPFgv1HQhAaZ+jlqHjX4iZ0O1Fd
tz7fkmJLbLdKX3X22w98JpUdncdjn7BoDzlfYFjRWZXEhNXu3qpvrJs3u62u
syFQlXNDOPLAjZFfxU33nlN1m8gqnBTEsesFGbMpOlFukkLjTxOnwo4AT84m
MLrjJkuBh7vQhbBxAxFkFYe555opfUeu9ryHv7IOCGFs13NmtLxJY3/2N1ed
/aV9XUC1fPrkfwF708STDeQBAA==

-->

</rfc>
