<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.6.4 (Ruby 2.6.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-anima-constrained-voucher-18" category="std" consensus="true" updates="8366, 8995" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.4 -->
  <front>
    <title abbrev="Constrained BRSKI">Constrained Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-anima-constrained-voucher-18"/>
    <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="2022" month="July" day="11"/>
    <area>Internet</area>
    <workgroup>anima Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document defines the Constrained Bootstrapping Remote Secure Key Infrastructure (Constrained BRSKI) protocol,
which provides a solution for secure zero-touch bootstrapping 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. Constrained BRSKI 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 is typically encoded in JSON, Constrained BRSKI defines a compact CBOR-encoded voucher.
The BRSKI voucher 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 CoAPS.</t>
    </abstract>
  </front>
  <middle>
    <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"/>, the networks are challenged and the nodes are constrained by energy, 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) bootstrap of new (unconfigured) devices.
In it, new devices, such as IoT devices, are called "pledges", and equipped with a factory-installed Initial Device Identifier (IDevID) (see <xref target="ieee802-1AR"/>), are 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 defines a constrained version of the voucher artifact (described in <xref target="RFC8366"/>), along with a constrained version of BRSKI.
This constrained-BRSKI protocol makes use of the constrained CoAP-based version of EST (EST-coaps from <xref target="RFC9148"/>) rather than the EST over HTTPS <xref target="RFC7030"/>.
Constrained-BRSKI 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 is by default serialized to JSON with a signature in CMS <xref target="RFC5652"/>.
This document defines a new voucher serialization to CBOR <xref target="RFC8949"/> with a signature in COSE <xref target="I-D.ietf-cose-rfc8152bis-struct"/>.</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 either OSCORE+EDHOC <xref target="I-D.ietf-lake-edhoc"/> or DTLS (CoAPS).
The HTTP connection (between Registrar and MASA) is to be protected using TLS (HTTPS).</t>
      <t>This document specifies a constrained voucher-request artifact based on <xref section="3" sectionFormat="of" target="RFC8995"/>, and
voucher(-request) transport over CoAP based on <xref section="3" sectionFormat="of" target="RFC8995"/> and on <xref target="RFC9148"/>.</t>
      <t>The CBOR definitions for the constrained voucher format are defined using the mechanism described in <xref target="I-D.ietf-core-yang-cbor"/> using the SID mechanism explained in <xref target="I-D.ietf-core-sid"/>.
As the tooling to convert YANG documents into a list of SID keys is still in its infancy, the table of SID values presented here MUST be considered normative rather than the output of the tool specified in <xref target="I-D.ietf-core-sid"/>.</t>
    </section>
    <section anchor="Terminology">
      <name>Terminology</name>
      <t>The following terms are defined in <xref target="RFC8366"/>, and are used identically as in that document:
artifact, domain, imprint, Join Registrar/Coordinator (JRC), Manufacturer Authorized Signing Authority
(MASA), Pledge, Registrar, Trust of First Use (TOFU), 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 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.
Four dots ("....") in a CBOR diagnostic notation byte string denotes a further sequence of bytes that is not shown for brevity.</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.</t>
    </section>
    <section anchor="survey">
      <name>Overview of Protocol</name>
      <t><xref target="RFC8366"/> provides for vouchers that assert proximity, authenticate the Registrar, and can offer varying levels of anti-replay protection.</t>
      <t>The proximity proof provided for in <xref target="RFC8366"/>, is an assertion that the Pledge and the Registrar are believed to be close together, from a network topology point of view.
Like in <xref target="RFC8995"/>, proximity is shown by making TLS connections between the Pledge and Registrar using IPv6 Link-Local addresses.</t>
      <t>The TLS connection is used to make a Voucher Request.
This request is verified by an agent of the Pledge's manufacturer, which then issues a voucher.
The voucher provides an authorization statement from the manufacturer indicating that the Registrar is the intended owner of the device.
The voucher refers to the Registrar through pinning of the Registrar's identity.</t>
      <t>This document does not make any extensions to the semantic meaning of vouchers, only the encoding has been changed to optimize for constrained devices and networks.
The two main parts of the BRSKI protocol are named separately in this document: BRSKI-EST for the protocol between Pledge and Registrar, and BRSKI-MASA for the
protocol between the Registrar and the MASA.</t>
      <t>Time-based vouchers are supported in this definition, but given that constrained devices are extremely 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="RFC8366"/> defines the voucher artifact, while the Voucher Request artifact was defined in <xref target="RFC8995"/>.
This document defines both a constrained voucher and a constrained voucher-request.
They are presented in the order "voucher-request", followed by a "voucher" response as this is
the order that they occur in the protocol.</t>
      <t>The constrained voucher request MUST be signed by the Pledge.
It signs using the private key associated with its IDevID certificate, or if an IDevID is not available, then the private key associated with its manufacturer-installed raw public key (RPK).
<xref target="rpk-considerations"/> provides additional details on PKIX-less operations.</t>
      <t>The constrained voucher MUST be signed by the MASA.</t>
      <t>For the constrained voucher request this document defines two distinct methods for the Pledge to identify the Registrar: using either the Registrar's PKIX certificate, or using a raw public key (RPK) of the Registrar.</t>
      <t>For the constrained voucher both methods are supported to indicate (pin) a trusted domain identity: using either a pinned domain PKIX certificate, or a pinned raw public key (RPK).</t>
      <t>The BRSKI architectures mandates that the MASA be aware of the capabilities of the pledge.
This is not a drawback as the pledges are constructed by a manufacturer which also arranges for the MASA to be aware of the inventory of devices.</t>
      <t>The MASA therefore knows if the pledge supports PKIX operations, PKIX format certificates, or if the pledge is limited to Raw Public Keys (RPK).
Based upon this, the MASA can select which attributes to use in the voucher for certain operations, like the pinning of the Registrar identity.
This is described in more detail in <xref target="yang-voucher"/>, <xref target="pinning"/> and <xref target="pinned-with-rpk"/> (for RPK specifically).</t>
    </section>
    <section anchor="updates-to-rfc8366-and-rfc8995">
      <name>Updates to RFC8366 and RFC8995</name>
      <t>This section details the ways in which this document updates other RFCs.
The terminology for Updates is taken from <xref target="I-D.kuehlewind-update-tag"/>.</t>
      <t>This document Updates <xref target="RFC8366"/>. It Extends <xref target="RFC8366"/> by creating a new serialization format, and creates a mechanism to pin Raw Public Key (RPK).</t>
      <t>This document Updates <xref target="RFC8995"/>. It Amends <xref target="RFC8995"/></t>
      <ul spacing="normal">
        <li>by clarifying how pinning is done,</li>
        <li>adopts clearer explanation of the TLS Server Name Indicator (SNI), see <xref target="sni"/> and <xref target="sni-masa"/></li>
        <li>clarifies when new trust anchors should be retrieved (<xref target="brski-est-extensions-pledge"/>),</li>
        <li>clarified what kinds of Extended Key Usage attributes are appropriate for each certificate (<xref target="registrar-certificate-requirement"/>)</li>
      </ul>
      <t>It Extends <xref target="RFC8995"/> as follows:</t>
      <ul spacing="normal">
        <li>defines the CoAP version of the BRSKI protocol</li>
        <li>makes some messages optional if the results can be inferred from other validations (<xref target="brski-est-extensions"/>),</li>
        <li>provides the option to return trust anchors in a simpler format (<xref target="brski-est-extensions-registrar"/>)</li>
        <li>extends the BRSKI-MASA protocol to carry the new voucher-cose+cbor format.</li>
      </ul>
    </section>
    <section anchor="brski-est">
      <name>BRSKI-EST Protocol</name>
      <t>This section describes the constrained BRSKI extensions to EST-coaps <xref target="RFC9148"/> to transport the voucher between Registrar and Pledge (optionally via a Join Proxy) over CoAP.
The extensions are targeting low-resource networks with small packets.</t>
      <t>The constrained BRSKI-EST protocol described in this section is between the Pledge and the Registrar only.</t>
      <section anchor="sni">
        <name>Registrar and the Server Name Indicator (SNI)</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 mechanism, the DTLS connection should operate identically.</t>
        <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 RFC6125 DNS-ID validation on the Registrar's certificate.
Instead, it must do validation using the RFC8366 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 seen.</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>it uses DTLS and CoAP, not HTTPS</li>
          <li>it typically uses IPv6, often <xref target="RFC4193"/> Unique Local Address, which are plentiful</li>
          <li>the server port number is typically discovered, so multiple tenants can be accomodated via unique port numbers.</li>
        </ul>
        <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>
      </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.</t>
        <t>Subsequently the Pledge will send a Pledge Voucher Request (PVR).</t>
        <t>In <xref target="registrar-identity"/>, the contents of the "x5bag" structure in the Registrar Voucher Request (RVR) are explained. In <xref target="VR-COSE"/> the use of the "x5bag" structure and the "kid" attribute in the PVR and the RVR are specified.</t>
      </section>
      <section anchor="resource-discovery">
        <name>Resource Discovery, URIs and Content Formats</name>
        <t>To keep the protocol messages small the EST-coaps and constrained-BRSKI URIs are shorter than the respective EST and BRSKI URIs.</t>
        <t>The EST-coaps server URIs differ from the EST URIs by replacing the scheme https by coaps and by specifying shorter resource path names. Below are some examples;
the first two using a discovered short path name and the last one using the well-known URI of EST which requires no discovery.</t>
        <artwork><![CDATA[
  coaps://server.example.com/est/<short-name>
  coaps://server.example.com/e/<short-name>
  coaps://server.example.com/.well-known/est/<short-name>
]]></artwork>
        <t>Similarly the constrained BRSKI server URIs differ from the BRSKI URIs by replacing the scheme https by coaps and by specifying shorter resource path names. Below are some examples;
the first two using a discovered short path name and the last one using the well-known URI prefix which requires no discovery.
This is the same "/.well-known/brski" prefix as defined in <xref section="5" sectionFormat="of" target="RFC8995"/>.</t>
        <artwork><![CDATA[
  coaps://server.example.com/brski/<short-name>
  coaps://server.example.com/b/<short-name>
  coaps://server.example.com/.well-known/brski/<short-name>
]]></artwork>
        <t>Figure 5 in <xref section="3.2.2" sectionFormat="of" target="RFC7030"/> enumerates the operations supported by EST, for which Table 1 in <xref section="5.1" sectionFormat="of" target="RFC9148"/> enumerates the corresponding
EST-coaps short path names. Similarly, <xref target="brski-short-uri"/> below provides the mapping from the supported BRSKI extension URI paths to the constrained-BRSKI URI paths.</t>
        <table anchor="brski-short-uri">
          <name>BRSKI URI paths mapping to Constrained BRSKI URI paths</name>
          <thead>
            <tr>
              <th align="left">BRSKI resource</th>
              <th align="left">constrained-BRSKI resource</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">/requestvoucher</td>
              <td align="left">/rv</td>
            </tr>
            <tr>
              <td align="left">/voucher_status</td>
              <td align="left">/vs</td>
            </tr>
            <tr>
              <td align="left">/enrollstatus</td>
              <td align="left">/es</td>
            </tr>
          </tbody>
        </table>
        <t>Note that /requestvoucher indicated above occurs between the Pledge and Registrar (in scope of the BRSKI-EST protocol), but it also occurs between Registrar and MASA. However,
as described in <xref target="brski-est"/>, this section and above table addresses only the BRSKI-EST protocol.</t>
        <t>Pledges that wish to discover the available BRSKI bootstrap options/formats, or reduce the size of the CoAP headers by eliminating the "/.well-known/brski" path, can do a discovery operation using <xref target="RFC6690"/> Section 4 by sending a discovery query to the Registrar.</t>
        <t>For example, if the Registrar supports a short BRSKI URL (/b) and supports the voucher format "application/voucher-cose+cbor" (836), and status reporting in both CBOR and JSON formats:</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-short-uri"/>.</t>
        <t>Registrars that have implemented shorter URLs MUST also respond in equivalent ways to the corresponding "/.well-known/brski/&lt;short-name&gt;" URLs, and MUST NOT distinguish between them.
In particular, a Pledge MAY use the longer and shorter URLs in any combination.</t>
        <t>When responding to a discovery request for BRSKI resources, the server MAY in addition return
the full resource paths and the content types which are supported by these resources as shown in above example.
This is useful when multiple content types are specified for a particular resource on the server.
The server responds with only the root path for the BRSKI resources (rt=brski, resource /b in above example) and no others in case the client queries for only rt=brski type resources.
(So, a query for rt=brski, without the wildcard character.)</t>
        <t>Without discovery, a longer well-known URL can only be used, such as:</t>
        <artwork><![CDATA[
   REQ: GET /.well-known/brski/rv
]]></artwork>
        <t>while with discovery of shorter URLs, a request such as:</t>
        <artwork><![CDATA[
   REQ: GET /b/rv
]]></artwork>
        <t>is possible.</t>
        <t>The return of multiple content-types in the "ct" attribute allows the Pledge to choose the most appropriate one.
Note that Content-Format 836 ("application/voucher-cose+cbor") is defined in this document.</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 link format description, this implies that at least 836 is supported.</t>
        <t>Note that this specification allows for voucher-cose+cbor 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 836) for the voucher and for the voucher request.
The MASA needs to support all formats that the Pledge supports.</t>
        <t><xref target="discovery-considerations"/> details how the Pledge discovers the Registrar and Join Proxy in different deployment scenarios.</t>
        <section anchor="rfc8995-telemetry-returns">
          <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 POST operations 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 the list of acceptable formats to CBOR as well as JSON, using the rules from <xref target="RFC8610"/>.</t>
          <t>The existing JSON format is described as CoAP Content-Format 50 ("application/json"), and it MAY be supported.
The new CBOR format described as CoAP Content-Format 60 ("application/cbor"), MUST be supported by the Registrar for both the /vs and /es resources.</t>
        </section>
      </section>
      <section anchor="joinproxy">
        <name>Join Proxy options</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 <xref section="4" sectionFormat="comma" target="RFC8995"/>.</t>
      </section>
      <section anchor="brski-extensions">
        <name>Extensions to BRSKI</name>
        <t>The following section explains extension within the BRSKI/CoAP connection itself.
<xref target="discovery"/> explains ways in which a pledge may discover the capability to use constrained vouchers, and to use the CoAPS transport.</t>
        <section anchor="brski-extensions-discovery">
          <name>CoAP EST Resource Discovery and BRSKI</name>
          <t>Once the Pledge discovers an IP address and port number that connects to the Registrar (probably via a Join Proxy), and it establishes a DTLS connection.</t>
          <t>No further discovery of hosts or port numbers is required, but a pledge that can do more than one kind of enrollment (future work offers protocols other than <xref target="RFC9148"/>), then a pledge may need to use CoAP Discovery to determine what other protocols are available.</t>
          <t>A Pledge that only supports the EST-coaps enrollment method SHOULD NOT use CoAP discovery for BRSKI/EST resources.
It is more efficient to just try the supported enrollment method via the well-known BRSKI/EST-coaps resources.
This also avoids the Pledge having to do any CoRE Link Format parsing, which is specified in <xref section="4.1" sectionFormat="comma" target="RFC9148"/>.</t>
          <t>The Registrar MUST support all of the EST resources at their default ".well-known" locations (on the specified port)
as well as any server-specific shorter form that might also be supported.</t>
          <t>However, if discovery is done by the Pledge, it is possible for the Registrar to return references to resources which are on different port numbers.
The Registrar SHOULD NOT use different ports numbers by default, because a Pledge that is connected via a Join Proxy can only access a single UDP port.</t>
          <t>A Pledge that receives different port numbers or names SHOULD ignore those port numbers and continue to use the DTLS connection that it has already created.
Or it MAY fail the entire transaction and look for another Join Proxy/Registrar to do onboarding with. (If the resources without the port numbers do not work, then the Pledge will fail anyway)</t>
          <t>A Registrar configured to never use Join Proxies MAY be configured to use multiple port numbers.
Therefore a Registrar MUST host all discoverable BRSKI resources on the same (UDP) server port that the Pledge's DTLS connection is using.
However, using the same UDP server port for all resources allows the Pledge to continue via the  same DTLS connection which is more efficient.</t>
        </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 <xref section="5.7" sectionFormat="of" target="RFC9148"/> process for Delayed Responses.</t>
        </section>
      </section>
      <section anchor="brski-est-extensions">
        <name>Extensions to EST-coaps</name>
        <t>This document extends <xref target="RFC9148"/>, and it inherits the functions described in that document:
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 server.</t>
        <t>Collecting the resource definitions from both <xref target="RFC8995"/>, <xref target="RFC7030"/>, and <xref target="RFC9148"/> results in the following shorter forms of URI paths
for the commonly used resources:</t>
        <!-- Table order is currently the order in which typically the resources are used by Pledge. Change if we want to -->

<table anchor="brski-est-short-uri">
          <name>BRSKI/EST URI paths mapping to Constrained BRSKI/EST short URI paths</name>
          <thead>
            <tr>
              <th align="left">BRSKI + EST</th>
              <th align="left">Constrained-BRSKI + EST</th>
              <th align="left">Well-known URI namespace</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">/requestvoucher</td>
              <td align="left">/rv</td>
              <td align="left">brski</td>
            </tr>
            <tr>
              <td align="left">/voucher_status</td>
              <td align="left">/vs</td>
              <td align="left">brski</td>
            </tr>
            <tr>
              <td align="left">/csrattrs</td>
              <td align="left">/att</td>
              <td align="left">est</td>
            </tr>
            <tr>
              <td align="left">/simpleenroll</td>
              <td align="left">/sen</td>
              <td align="left">est</td>
            </tr>
            <tr>
              <td align="left">/cacerts</td>
              <td align="left">/crts</td>
              <td align="left">est</td>
            </tr>
            <tr>
              <td align="left">/enrollstatus</td>
              <td align="left">/es</td>
              <td align="left">brski</td>
            </tr>
            <tr>
              <td align="left">/simplereenroll</td>
              <td align="left">/sren</td>
              <td align="left">est</td>
            </tr>
          </tbody>
        </table>
        <section anchor="brski-est-extensions-pledge">
          <name>Pledge Extensions</name>
          <t>This section defines extensions to the BRSKI Pledge, which are applicable during the BRSKI bootstrap procedure.
A Pledge which only supports the EST-coaps enrollment method, SHOULD NOT use discovery for EST-coaps resources, because it is more efficient to enroll (e.g. /sen) via the well-known EST resource on the current DTLS connection.
This avoids an additional round-trip of packets and avoids the Pledge having to unnecessarily implement CoRE Link Format parsing.</t>
          <t>A constrained Pledge SHOULD NOT perform the optional EST "CSR attributes request" (/att) to minimize network traffic. The Pledge selects which attributes to include in the CSR.</t>
          <t>One or more Subject Distinguished Name fields MUST be included.
If the Pledge has no specific information on what attributes/fields are desired in the CSR, it MUST use the Subject Distinguished Name fields from its IDevID unmodified.
The Pledge can receive such information via the voucher (encoded in a vendor-specific way) or via some other, out-of-band means.</t>
          <t>A constrained Pledge MAY use the following optimized EST-coaps procedure to minimize network traffic.</t>
          <ol spacing="normal" type="1"><li>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 "CA certificates request" (/crts) to the Registrar.</li>
            <li>Using this CA certificate as trust anchor it proceeds with EST simple enrollment (/sen) to obtain its provisionally trusted LDevID certificate.</li>
            <li>If the Pledge validates that the trust anchor CA was used to sign its LDevID certificate, the Pledge accepts the pinned domain CA certificate as the legitimate trust anchor CA for the Registrar's domain and accepts the associated LDevID certificate.</li>
            <li>If the trust anchor CA was NOT used to sign its LDevID certificate, the Pledge MUST perform an actual "CA certificates request" (/crts) to the EST server to obtain the EST CA trust anchor(s) since these can differ from the (temporary) pinned domain CA.</li>
            <li>When doing this /crts request, the Pledge MAY use a CoAP Accept Option with value TBD287 ("application/pkix-cert") to limit the number of returned EST CA trust anchors to only one.
A constrained Pledge MAY support only this format in a /crts response, per <xref section="5.3" sectionFormat="of" target="RFC9148"/>.</li>
            <li>If the Pledge cannot obtain the single CA certificate or the finally validated CA certificate cannot be chained to the LDevID certificate, then the Pledge MUST abort the enrollment process and report the error using the enrollment status telemetry (/es).</li>
          </ol>
          <t>Note that even though the Pledge may avoid performing any /crts request using the above EST-coaps procedure during bootstrap, it SHOULD support retrieval of the trust anchor CA periodically as detailed in the next section.</t>
        </section>
        <section anchor="brski-est-extensions-estclient">
          <name>EST-client Extensions</name>
          <t>This section defines extensions to EST-coaps clients, used after the BRSKI bootstrap procedure is completed.
(Note that such client is not called "Pledge" in this section, since it is already enrolled into the domain.)
A constrained EST-coaps client MAY support only the Content-Format TBD287 ("application/pkix-cert") in a /crts response, per <xref section="5.3" sectionFormat="of" target="RFC9148"/>.
In this case, it can only store one trust anchor of the domain.</t>
          <t>An EST-coaps client that has an idea of the current time (internally, or via NTP) SHOULD consider the validity time of the trust anchor CA, and MAY begin requesting a new trust anchor CA 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 the trust anchor CA has expired, and SHOULD poll periodically for a new trust anchor 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>
          <t>The above-mentioned limitation that an EST-coaps client may support only one trust anchor CA is not an issue in case the domain trust anchor remains stable. However, special consideration is
needed for cases where the domain trust anchor can change over time. Such a change may happen due to relocation of the client device to a new domain, or due to key update of
the trust anchor as described in <xref section="4.4" sectionFormat="comma" target="RFC4210"/>.</t>
          <t>From the client's viewpoint, a trust anchor change typically happens during EST re-enrollment: a change of domain CA requires all devices
operating under the old domain CA to acquire a new LDevID 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.
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.4" sectionFormat="comma" target="RFC4210"/> for Root CA key update requires four certificates: OldWithOld, OldWithNew, NewWithOld, and NewWithNew. The OldWithOld certificate is already
stored in the EST client's trust store. The NewWithNew certificate will be distributed as the single certificate in a /crts response, during EST re-enrollment.
Since the EST client can only accept a single certificate in a /crts response it implies that the EST client
cannot obtain the certificates OldWithNew and NewWithOld in this way, to perform the complete verification of the new domain CA. Instead, the client only verifies the EST server (Registrar) using its
old domain CA certificate in its trust store as detailed below, and based on this trust in the active and valid DTLS connection it automatically trusts the
new (NewWithNew) domain CA certificate that the EST server provides in the /crts response.</t>
          <t>In this manner, even during rollover of trust anchors, it is possible to have only a single trust anchor provided in a /crts response.</t>
          <t>During the period of the certificate renewal, it is not possible to create new communication channels between devices with NewCA certificates devices with OldCA certificates.
One option is that devices should avoid restarting existing DTLS or OSCORE connections during this interval that new certificates are being deployed.
The recommended period for certificate renewal is 24 hours.
For re-enrollment, the constrained EST-coaps client MUST support the following EST-coaps procedure, where optional re-enrollment to a new domain is under control of the Registrar:</t>
          <ol spacing="normal" type="1"><li>The client connects with DTLS to the Registrar, and authenticates with its present domain certificate (LDevID certificate) as usual. The Registrar authenticates itself with its domain certificate that
is trusted by the client, i.e. it chains to the single trust anchor that the client has stored. This is the "old" trust anchor, the one that will be eventually replaced in case the Registrar
decides to re-enroll the client into a new domain.</li>
            <li>The client performs the simple re-enrollment request (/sren) and upon success it obtains a new LDevID.</li>
            <li>The client verifies the new LDevID against its (single) existing domain trust anchor. If it chains successfully, this means the trust anchor did not change and the client MAY skip retrieving the current CA certificate using the "CA certificates request" (/crts). If it does not chain successfully, this means the trust anchor was changed/updated and the client then MUST retrieve the new domain trust anchor using the "CA certificates request" (/crts).</li>
            <li>If the client retrieved a new trust anchor in step 3, then it MUST verify that the new trust anchor chains with the new LDevID certificate it obtained in step 2. If it chains successfully, the client stores both, accepts the new LDevID certificate and stops using it prior LDevID certificate. If it does not chain successfully, the client MUST NOT update its LDevID certificate, it MUST NOT update its (single) domain trust anchor, and the client MUST abort the enrollment process and report the error to the Registrar using enrollment status telemetry (/es).</li>
          </ol>
          <t>Note that even though the EST-coaps client may skip the /crts request in step 3, it SHOULD support retrieval of the trust anchor CA periodically as detailed earlier in this section.</t>
        </section>
        <section anchor="brski-est-extensions-registrar">
          <name>Registrar Extensions</name>
          <t>A Registrar SHOULD host any discoverable EST-coaps resources on the same (UDP) server port that the Pledge's DTLS initial connection is using.
This avoids the overhead of the Pledge reconnecting using DTLS, when it performs EST enrollment after the BRSKI voucher request.</t>
          <t>The Content-Format 50 (application/json) MUST be supported and 60 (application/cbor) MUST be supported by the Registrar for the /vs and /es resources.</t>
          <t>Content-Format 836 MUST be supported by the Registrar for the /rv resource.</t>
          <t>When a Registrar receives a "CA certificates request" (/crts) request with a CoAP Accept Option with value TBD287 ("application/pkix-cert") it SHOULD return only the
single CA certificate that is the envisioned or actual authority for the current, authenticated Pledge making the request.</t>
          <t>If the Pledge included in its request an Accept Option for only the TBD287 ("application/pkix-cert") Content Format, but 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 that the Pledge needs to use the Content Format 281 ("application/pkcs7-mime; smime-type=certs-only") to retrieve all the certificates.</t>
          <t>If the current authenticated client is an EST-coaps client that was already enrolled in the domain, and the Registrar is configured to assign this client to a new domain CA trust anchor during the next EST re-enrollment procedure, then the Registrar MUST respond with the new domain CA certificate in case the client performs the "CA Certificates request" (/crts) with an Accept Option for TBD287 only. This signals the client that a new domain is assigned to it. The client follows the procedure as defined in <xref target="brski-est-extensions-estclient"/>.</t>
        </section>
      </section>
      <section anchor="dtls-fragments">
        <name>DTLS handshake fragmentation Considerations</name>
        <t>DTLS includes a mechanism to fragment the handshake messages.
This is described in <xref section="4.4" sectionFormat="of" target="I-D.ietf-tls-dtls13"/>.
The protocol described in this document will often be used with a Join Proxy described in <xref target="I-D.ietf-anima-constrained-join-proxy"/>.
The Join Proxy will need some overhead, while the maximum packet sized guaranteed on 802.15.4 networks is 1280 bytes.
It is RECOMMENDED that a PMTU of 1024 bytes be assumed for the DTLS handshake.
It is unlikely that any Packet Too Big indications <xref target="RFC4443"/> will be relayed by the Join Proxy.</t>
        <t>During the operation of the constrained BRSKI-EST protocol, the CoAP Blockwise transfer mechanism will be 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 Section 4 of <xref target="RFC6066"/> with the maximum fragment length set to a value of either 2^9 or 2^10.</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+cbor" in its voucher request to MASA, when the Pledge uses this format in its request to the Registrar <xref target="RFC8995"/>.</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.</t>
        <t>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>the Registrar is not expected to be so constrained that it cannot support HTTPS client connections.</li>
          <li>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.</li>
          <li>a Registrar is likely to provide onboarding services to both constrained and non-constrained devices.  Such a Registrar would need to speak HTTPS anyway.</li>
          <li>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.</li>
          <li>security-related considerations: see <xref target="security-masa-coaps"/>.</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 <xref target="RFC6125"/> DNS-ID checks 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>
        <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>
        <section anchor="registrar-certificate-requirement">
          <name>Registrar Certificate Requirement</name>
          <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>
    <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><![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 <xref target="I-D.ietf-cose-x509"/>.</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:</t>
        <ol spacing="normal" type="1"><li>for a voucher containing a nonce, it SHOULD select the most specific (lowest-level) CA certificate in the chain.</li>
          <li>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.</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 constrained use cases, the pinning of the raw public key (RPK) of the Registrar is also supported in the constrained voucher, instead of an PKIX certificate.
If an RPK is pinned it MUST be the RPK of the Registrar.</t>
        <t>When the Pledge is known by MASA to support RPK but not PKIX certificates, 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 a voucher.
This is described in more detail in <xref target="yang-voucher"/>. A Pledge that does not support PKIX certificates cannot use EST to enroll; it has to use
another method for enrollment without certificates and the Registrar has to support this method also.
It is possible that the Pledge will not enroll, but instead only a network join operation will occur (See <xref target="RFC9031"/>).
How the Pledge discovers this method and details of the enrollment method are out of scope of this document.</t>
        <t>When the Pledge is known by MASA to support PKIX format certificates, the "pinned-domain-cert" field present in a voucher typically 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 to also support RPK pinning and the MASA intends to identify the Registrar in the voucher (not the CA), then MASA MUST 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 pinning</name>
          <artwork><![CDATA[
 .------------.
 | pub-CA (1) |
 '------------'
        |
        v
 .------------.
 | sub-CA (2) |
 '------------'
        |
        v
.--------------.
| Registrar(3) |
|    RPK3      |
'--------------'
]]></artwork>
        </figure>
      </section>
      <section anchor="registrar-idevid-issuer">
        <name>Considerations for use of IDevID-Issuer</name>
        <t><xref target="RFC8366"/> and <xref target="RFC8995"/> defines 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 must refer to the same device as the serial-number that is in 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 arisews 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.
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="RFC8366"/> 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>This section describes for both the voucher request and
the voucher first the abstract (tree) definition as explained
in <xref target="RFC8340"/>.  This provides a high-level
view of the contents of each artifact.</t>
      <t>Then the assigned SID values are presented. These have been assigned using
the rules in <xref target="I-D.ietf-core-sid"/>.</t>
      <section anchor="voucher-request-artifact">
        <name>Voucher Request artifact</name>
        <section anchor="tree-diagram">
          <name>Tree Diagram</name>
          <t>The following diagram is largely a duplicate of the contents of <xref target="RFC8366"/>,
with the addition of the fields proximity-registrar-pubk, proximity-registrar-pubk-sha256,
proximity-registrar-cert, and prior-signed-voucher-request.</t>
          <t>prior-signed-voucher-request is only used between the Registrar and the MASA.
proximity-registrar-pubk or proximity-registrar-pubk-sha256 optionally replaces proximity-registrar-cert
for the most constrained cases where RPK is used by the Pledge.</t>
          <artwork><![CDATA[
module: ietf-voucher-request-constrained

  grouping voucher-request-constrained-grouping:
    +-- voucher
       +-- created-on?                        yang:date-and-time
       +-- expires-on?                        yang:date-and-time
       +-- assertion                          enumeration
       +-- serial-number                      string
       +-- idevid-issuer?                     binary
       +-- pinned-domain-cert?                binary
       +-- domain-cert-revocation-checks?     boolean
       +-- nonce?                             binary
       +-- last-renewal-date?                 yang:date-and-time
       +-- proximity-registrar-pubk?          binary
       +-- proximity-registrar-pubk-sha256?   binary
       +-- proximity-registrar-cert?          binary
       +-- prior-signed-voucher-request?      binary

]]></artwork>
        </section>
        <section anchor="request-sid-values">
          <name>SID values</name>
          <artwork><![CDATA[
           
      SID Assigned to
--------- -------------------------------------------------- 
     2501 data /ietf-voucher-request-constrained:voucher
     2502 data .../assertion
     2503 data .../created-on
     2504 data .../domain-cert-revocation-checks
     2505 data .../expires-on
     2506 data .../idevid-issuer
     2507 data .../last-renewal-date
     2508 data /ietf-voucher-request-constrained:voucher/nonce
     2509 data .../pinned-domain-cert
     2510 data .../prior-signed-voucher-request
     2511 data .../proximity-registrar-cert
     2513 data .../proximity-registrar-pubk
     2512 data .../proximity-registrar-pubk-sha256
     2514 data .../serial-number

]]></artwork>
          <t>The "assertion" attribute is an enumerated type <xref target="RFC8366"/>, and the current PYANG tooling does not document the valid values for this attribute.
In the JSON serialization, the literal strings from the enumerated types are used so there is no ambiguity.
In the CBOR serialization, a small integer is used.
This following values are documented here, but the YANG module should be considered authoritative. No IANA registry is provided or necessary because the YANG module provides for extensions.</t>
          <table anchor="assertion-enums">
            <name>CBOR integers for the "assertion" attribute enum</name>
            <thead>
              <tr>
                <th align="left">Integer</th>
                <th align="left">Assertion Type</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">0</td>
                <td align="left">verified</td>
              </tr>
              <tr>
                <td align="left">1</td>
                <td align="left">logged</td>
              </tr>
              <tr>
                <td align="left">2</td>
                <td align="left">proximity</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="yang-voucher-request">
          <name>YANG Module</name>
          <t>In the voucher-request-constrained YANG module, the voucher is "augmented" within the "used" grouping statement such that one continuous set of SID values is generated for the voucher-request-constrained module name, all voucher attributes, and the voucher-request-constrained attributes. Two attributes of the voucher are "refined" to be optional.</t>
          <sourcecode markers="true" name="ietf-voucher-request-constrained@2021-04-15.yang"><![CDATA[
module ietf-voucher-request-constrained {
  yang-version 1.1;

  namespace
    "urn:ietf:params:xml:ns:yang:ietf-voucher-request-constrained";
  prefix "constrained";

  import ietf-restconf {
    prefix rc;
    description
      "This import statement is only present to access
       the yang-data extension defined in RFC 8040.";
    reference "RFC 8040: RESTCONF Protocol";
  }

  import ietf-voucher {
    prefix "v";
  }

  organization
   "IETF ANIMA Working Group";

  contact
   "WG Web:   <http://tools.ietf.org/wg/anima/>
    WG List:  <mailto:anima@ietf.org>
    Author:   Michael Richardson
              <mailto:mcr+ietf@sandelman.ca>
    Author:   Peter van der Stok
              <mailto: consultancy@vanderstok.org>
    Author:   Esko Dijk
              <mailto: esko.dijk@iotconsultancy.nl>
    Author:   Panos Kampanakis
              <mailto: pkampana@cisco.com>";

  description
   "This module defines the format for a voucher request,
    which is produced by a pledge to request a voucher.
    The voucher-request is sent to the potential owner's
    Registrar, which in turn sends the voucher request to
    the manufacturer or its delegate (MASA).

    A voucher is then returned to the pledge, binding the
    pledge to the owner.  This is a constrained version of the
    voucher-request present in
    {{I-D.ietf-anima-bootstrap-keyinfra}}

    This version provides a very restricted subset appropriate
    for very constrained devices.
    In particular, it assumes that nonce-ful operation is
    always required, that expiration dates are rather weak, as no
    clocks can be assumed, and that the Registrar is identified
    by either a pinned Raw Public Key of the Registrar, or by a
    pinned X.509 certificate of the Registrar or domain CA.

    The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL',
    'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'MAY',
    and 'OPTIONAL' in the module text are to be interpreted as
    described in RFC 2119.";

  revision "2021-04-15" {
    description
     "Initial version";
    reference
     "RFC XXXX: Voucher Profile for Constrained Devices";
  }

  rc:yang-data voucher-request-constrained-artifact {
    // YANG data template for a voucher.
    uses voucher-request-constrained-grouping;
  }

  // Grouping defined for future usage
  grouping voucher-request-constrained-grouping {
    description
      "Grouping to allow reuse/extensions in future work.";

    uses v:voucher-artifact-grouping {

      refine voucher/created-on {
          mandatory  false;
      }

      refine voucher/pinned-domain-cert {
          mandatory  false;
      }


      augment "voucher" {
        description "Base the constrained voucher-request upon the
          regular one";

        leaf proximity-registrar-pubk {
          type binary;
          description
            "The proximity-registrar-pubk replaces
             the proximity-registrar-cert in constrained uses of
             the voucher-request.
             The proximity-registrar-pubk is the
             Raw Public Key of the Registrar. This field is encoded
             as specified in RFC7250, section 3.
             The ECDSA algorithm MUST be supported.
             The EdDSA algorithm as specified in
             draft-ietf-tls-rfc4492bis-17 SHOULD be supported.
             Support for the DSA algorithm is not recommended.
             Support for the RSA algorithm is a MAY, but due to
             size is discouraged.";
        }

        leaf proximity-registrar-pubk-sha256 {
          type binary;
          description
            "The proximity-registrar-pubk-sha256
             is an alternative to both
             proximity-registrar-pubk and pinned-domain-cert.
             In many cases the public key of the domain has already
             been transmitted during the key agreement protocol,
             and it is wasteful to transmit the public key another
             two times.
             The use of a hash of public key info, at 32-bytes for
             sha256 is a significant savings compared to an RSA
             public key, but is only a minor savings compared to
             a 256-bit ECDSA public-key.
             Algorithm agility is provided by extensions to this
             specification which may define a new leaf for another
             hash type.";
        }

        leaf proximity-registrar-cert {
          type binary;
          description
            "An X.509 v3 certificate structure as specified by
             RFC 5280,
             Section 4 encoded using the ASN.1 distinguished encoding
             rules (DER), as specified in ITU-T X.690.

             The first certificate in the Registrar TLS server
             certificate_list sequence  (see [RFC5246]) presented by
             the Registrar to the Pledge. This field or one of its
             alternatives MUST be populated in a
             Pledge's voucher request if the proximity assertion is
             populated.";
        }

        leaf prior-signed-voucher-request {
          type binary;
          description
            "If it is necessary to change a voucher, or re-sign and
             forward a voucher that was previously provided along a
             protocol path, then the previously signed voucher
             SHOULD be included in this field.

             For example, a pledge might sign a proximity voucher,
             which an intermediate registrar then re-signs to
             make its own proximity assertion.  This is a simple
             mechanism for a chain of trusted parties to change a
             voucher, while maintaining the prior signature
             information.

             The pledge MUST ignore all prior voucher information
             when accepting a voucher for imprinting. Other
             parties MAY examine the prior signed voucher
             information for the purposes of policy decisions.
             For example, this information could be useful to a
             MASA to determine that both pledge and registrar
             agree on proximity assertions. The MASA SHOULD
             remove all prior-signed-voucher-request information when
             signing a voucher for imprinting so as to minimize the
             final voucher size.";
        }
      }
    }
  }
}

]]></sourcecode>
        </section>
        <section anchor="example2">
          <name>Example voucher request artifact</name>
          <t>Below is a CBOR serialization of an example constrained voucher request from a Pledge to a Registrar, shown in CBOR diagnostic notation. The enum value of the assertion field is calculated to be 2 by following the algorithm described in section 9.6.4.2 of <xref target="RFC7950"/>.</t>
          <artwork><![CDATA[
{
  2501: {
    +2 : "2016-10-07T19:31:42Z", / SID=2503, created-on /
    +4 : "2016-10-21T19:31:42Z", / SID=2505, expires-on /
    +1 : 2,                      / SID=2502, assertion "proximity" /
    +13: "JADA123456789",        / SID=2514, serial-number /
    +5 : h'08C2BF36....B3D2B3',  / SID=2506, idevid-issuer /
    +10: h'30820275....82c35f',  / SID=2511, proximity-registrar-cert/
    +3 : true,                   / SID=2504, domain-cert
                                                   -revocation-checks/
    +6 : "2017-10-07T19:31:42Z"  / SID=2507, last-renewal-date /
  }
}
]]></artwork>
        </section>
      </section>
      <section anchor="voucher-artifact">
        <name>Voucher artifact</name>
        <t>The voucher's primary purpose is to securely assign a Pledge to an
owner.  The voucher informs the Pledge which entity it should
consider to be its owner.</t>
        <section anchor="tree-diagram-1">
          <name>Tree Diagram</name>
          <t>The following diagram is largely a duplicate of the contents of <xref target="RFC8366"/>,
with only the addition of the fields pinned-domain-pubk and pinned-domain-pubk-sha256.</t>
          <artwork><![CDATA[
module: ietf-voucher-constrained

  grouping voucher-constrained-grouping:
    +-- voucher
       +-- created-on?                      yang:date-and-time
       +-- expires-on?                      yang:date-and-time
       +-- assertion                        enumeration
       +-- serial-number                    string
       +-- idevid-issuer?                   binary
       +-- pinned-domain-cert?              binary
       +-- domain-cert-revocation-checks?   boolean
       +-- nonce?                           binary
       +-- last-renewal-date?               yang:date-and-time
       +-- pinned-domain-pubk?              binary
       +-- pinned-domain-pubk-sha256?       binary

]]></artwork>
        </section>
        <section anchor="sid-values">
          <name>SID values</name>
          <artwork><![CDATA[
           
      SID Assigned to
--------- -------------------------------------------------- 
     2451 data /ietf-voucher-constrained:voucher
     2452 data /ietf-voucher-constrained:voucher/assertion
     2453 data /ietf-voucher-constrained:voucher/created-on
     2454 data .../domain-cert-revocation-checks
     2455 data /ietf-voucher-constrained:voucher/expires-on
     2456 data /ietf-voucher-constrained:voucher/idevid-issuer
     2457 data .../last-renewal-date
     2458 data /ietf-voucher-constrained:voucher/nonce
     2459 data .../pinned-domain-cert
     2460 data .../pinned-domain-pubk
     2461 data .../pinned-domain-pubk-sha256
     2462 data /ietf-voucher-constrained:voucher/serial-number

]]></artwork>
          <t>The "assertion" enumerated attribute is numbered as per <xref target="request-sid-values"/>.</t>
        </section>
        <section anchor="yang-voucher">
          <name>YANG Module</name>
          <t>In the voucher-constrained YANG module, the voucher is "augmented" within the "used" grouping statement such that one continuous set of SID values is generated for the voucher-constrained module name, all voucher attributes, and the voucher-constrained attributes.
Two attributes of the voucher are "refined" to be optional.</t>
          <sourcecode markers="true" name="ietf-voucher-constrained@2021-04-15.yang"><![CDATA[
module ietf-voucher-constrained {
  yang-version 1.1;

  namespace
    "urn:ietf:params:xml:ns:yang:ietf-voucher-constrained";
  prefix "constrained";

  import ietf-restconf {
    prefix rc;
    description
      "This import statement is only present to access
       the yang-data extension defined in RFC 8040.";
    reference "RFC 8040: RESTCONF Protocol";
  }

  import ietf-voucher {
    prefix "v";
  }

  organization
   "IETF ANIMA Working Group";

  contact
   "WG Web:   <http://tools.ietf.org/wg/anima/>
    WG List:  <mailto:anima@ietf.org>
    Author:   Michael Richardson
              <mailto:mcr+ietf@sandelman.ca>
    Author:   Peter van der Stok
              <mailto: consultancy@vanderstok.org>
    Author:   Esko Dijk
              <mailto: esko.dijk@iotconsultancy.nl>
    Author:   Panos Kampanakis
              <mailto: pkampana@cisco.com>";

description
  "This module defines the format for a voucher, which
   is produced by a pledge's manufacturer or its delegate
   (MASA) to securely assign one or more pledges to an 'owner',
   so that a pledge may establish a secure connection to the
   owner's network infrastructure.

   This version provides a very restricted subset appropriate
   for very constrained devices.
   In particular, it assumes that nonce-ful operation is
   always required, that expiration dates are rather weak, as no
   clocks can be assumed, and that the Registrar is identified
   by either a pinned Raw Public Key of the Registrar, or by a
   pinned X.509 certificate of the Registrar or domain CA.

   The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL',
   'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'MAY',
   and 'OPTIONAL' in the module text are to be interpreted as
   described in RFC 2119.";

  revision "2021-04-15" {
    description
     "Initial version";
    reference
     "RFC XXXX: Voucher Profile for Constrained Devices";
  }

  rc:yang-data voucher-constrained-artifact {
    // YANG data template for a voucher.
    uses voucher-constrained-grouping;
  }

  // Grouping defined for future usage
  grouping voucher-constrained-grouping {
    description
      "Grouping to allow reuse/extensions in future work.";

    uses v:voucher-artifact-grouping {

      refine voucher/created-on {
          mandatory  false;
      }

      refine voucher/pinned-domain-cert {
          mandatory  false;
      }

      augment "voucher" {
        description "Base the constrained voucher
                                   upon the regular one";
        leaf pinned-domain-pubk {
          type binary;
          description
            "The pinned-domain-pubk may replace the
             pinned-domain-cert in constrained uses of
             the voucher. The pinned-domain-pubk
             is the Raw Public Key of the Registrar.
             This field is encoded as a Subject Public Key Info block
             as specified in RFC7250, in section 3.
             The ECDSA algorithm MUST be supported.
             The EdDSA algorithm as specified in
             draft-ietf-tls-rfc4492bis-17 SHOULD be supported.
             Support for the DSA algorithm is not recommended.
             Support for the RSA algorithm is a MAY.";
        }

        leaf pinned-domain-pubk-sha256 {
          type binary;
          description
            "The pinned-domain-pubk-sha256 is a second
             alternative to pinned-domain-cert.  In many cases the
             public key of the domain has already been transmitted
             during the key agreement process, and it is wasteful
             to transmit the public key another two times.
             The use of a hash of public key info, at 32-bytes for
             sha256 is a significant savings compared to an RSA
             public key, but is only a minor savings compared to
             a 256-bit ECDSA public-key.
             Algorithm agility is provided by extensions to this
             specification which can define a new leaf for another
             hash type.";
        }
      }
    }
  }
}

]]></sourcecode>
        </section>
        <section anchor="example1">
          <name>Example voucher artifacts</name>
          <t>Below the CBOR serialization of an example constrained voucher is shown in CBOR diagnostic notation.
The enum value of the assertion field is calculated to be zero by following the algorithm described in section 9.6.4.2 of <xref target="RFC7950"/>.</t>
          <artwork><![CDATA[
{
  2451: {
    +2 : "2016-10-07T19:31:42Z", / SID = 2453, created-on /
    +4 : "2016-10-21T19:31:42Z", / SID = 2455, expires-on /
    +1 : 0,                      / SID = 2452, assertion "verified" /
    +11: "JADA123456789",        / SID = 2462, serial-number /
    +5 : h'E40393B4....68A3',    / SID = 2456, idevid-issuer /
    +8 : h'30820275....C35F',    / SID = 2459, pinned-domain-cert/
    +3 : true,                   / SID = 2454, domain-cert /
                                 /               -revocation-checks /
    +6 : "2017-10-07T19:31:42Z"  / SID = 2457, last-renewal-date /
  }
}
]]></artwork>
        </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="I-D.ietf-cose-rfc8152bis-struct"/>.
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="I-D.ietf-cose-rfc8152bis-algs"/>.
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="I-D.ietf-cose-rfc8152bis-algs"/>.  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 occuring 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 is shown in <xref target="fig-cose"/>.</t>
        <figure anchor="fig-cose">
          <name>COSE_Sign1 example in CBOR diagnostic notation</name>
          <artwork align="left"><![CDATA[
18( / COSE_Sign1 /
  [
    h'A101382E',        / protected header encoding: {1: -47}     /
    {                   /       which means { "alg": ES256K }     /
      4 : h'7890A03F1234'  / 4 is the "kid" binary key identifier /
    },
    h'1234....5678', / voucher-request binary content (CBOR)      /
    h'4567....1234'  / voucher-request binary public signature    /
  ]
)
]]></artwork>
        </figure>
        <t>The <xref target="COSE-registry"/> specifies the integers/encoding for the "alg" and "kid" fields in <xref target="fig-cose"/>. The "alg"
field restricts the key usage for verification of this COSE object to a particular cryptographic algorithm.</t>
        <t>The "kid" field is optionally present: it is an unprotected field that identifies the public key of the key pair that was used to sign this
message. The value of the key identifier "kid" parameter is an example value.
Usually a hash of the public key is used to identify the public key, but a device serial number may also be used. 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. For example, this context information
may be a unique serial number encoded in the binary content (CBOR) field.</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 as explained in <xref target="registrar-identity"/>.</t>
          <t>By default, a Registrar does not include a "kid" parameter in its RVR since the signing key
is already identified by the included signing certificates in the COSE "x5bag" structure.</t>
          <t>A Registrar MAY use a "kid" parameter in its RVR to identify its signing key as used to sign the RVR.
The method of generating this "kid" 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 MUST be configurable, on a per-manufacturer basis, to be able to configure the "kid" to a particular value.
Both binary and string values are to be supported, each being inserted using a CBOR bstr or tstr.</t>
        </section>
        <section anchor="signing-of-pledge-voucher-request-pvr">
          <name>signing of Pledge Voucher Request (PVR)</name>
          <t>A Pledge 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. Still, where needed 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.
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 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"/> a binary COSE_Sign1 object is shown based on the voucher-request example of <xref target="example2"/>.</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 its signing key is already identified
by the Pledge. Still, where needed the MASA MAY use
a "kid" parameter in the voucher response to help the Pledge identify the right 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 structure in the voucher response - exception is if the MASA knows the Pledge doesn't pre-store the signing public key/cert , and thus needs to provide a cert or cert chain that links the signing identity/key to the pre-stored Trust Anchor that is inside the Pledge.</t>
        </section>
      </section>
    </section>
    <section anchor="discovery">
      <name>Extensions to Discovery</name>
      <t>It is assumed that Join Proxy seamlessly provides a coaps connection between Pledge and Registrar. In particular this section extends section 4.1 of <xref target="RFC8995"/> for the constrained case.</t>
      <t>In general, the Pledge may be one or more hops away from the Registrar.</t>
      <t>In the degenerate case, the Pledge is zero hops away from the Registrar.
This would be unusual in wireless cases due to encryption of the layer two: one of the main purposes of the Join Proxy is to bridge between encrypted operational networks and unencrypted join networks.</t>
      <t>The situation where the link is not encrypted could occur in wired IoT networks such as BACnet,  Power-Line Ethernet, etc.</t>
      <t>In order to support the degenerate case the Registrar SHOULD announce itself as if it were a Join Proxy, but it would actually announce it's real (stateful) CoAPS endpoint.
No actual Join Proxy functionality is required though.</t>
      <t>When, as is typical, the Pledge is more than one hop away from a relevant Registrar, it needs to discover the link-local address and join-port of a Join Proxy. The Pledge then follows the BRSKI procedure using the link-local address of the Join Proxy.</t>
      <t>Once enrolled, a Pledge 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 amount of power available to the device, network bandwidth available, as well CPU and memory availability.</t>
      <t>The process by which a Pledge discovers the Join Proxy, and by which the Join Proxy discovers the location of the Registar are the subject to the following sections.</t>
      <section anchor="discovery-operations-by-pledge">
        <name>Discovery operations by Pledge</name>
        <t>The Pledge must discover the address/port and protocol with which to communicate.</t>
        <t>Note that the format the voucher-request and voucher is not part of the determination.
It is assumed that Registrars support all relevant voucher formats, while the pledge on supports a single format.
A pledge that makes a voucher request to a Registrar that does not support that format will fail with a 406 (4.6) status code.</t>
        <section anchor="grasp-discovery">
          <name>GRASP discovery</name>
          <t>This section is normative for uses with an ANIMA ACP.
In the context of autonomic networks, the Join-Proxy uses the DULL GRASP M_FLOOD mechanism to announce itself.
Section 4.1.1 of <xref target="RFC8995"/> discusses this in more detail.</t>
          <t>The following changes are necessary with respect to figure 10 of <xref target="RFC8995"/>:</t>
          <ul spacing="normal">
            <li>The transport-proto is IPPROTO_UDP</li>
            <li>the objective is AN_Proxy</li>
          </ul>
          <t>The Registrar announces itself using ACP instance of GRASP using M_FLOOD messages.
Autonomic Network Join Proxies MUST support GRASP discovery of Registrar as described in section 4.3 of <xref target="RFC8995"/> .</t>
          <t>Here is an example M_FLOOD announcing the Join-Proxy at fe80::1, on standard coaps port 5684, using DTLS.</t>
          <figure anchor="fig-grasp-rg">
            <name>Example of Join Proxy announcement message</name>
            <artwork align="left"><![CDATA[
     [M_FLOOD, 12340815, h'fe800000000000000000000000000001', 180000,
     [["AN_Proxy", 4, 1, "DTLS"],
     [O_IPv6_LOCATOR,
     h'fe800000000000000000000000000001', IPPROTO_UDP, 5684]]]
]]></artwork>
          </figure>
          <t>Note that a join proxy that supports also supports RFC8995 onboarding using HTTPS may announce more than one objective.
Objectives with an empty objective-value (whether CBOR NULL or an empty string) refer to <xref target="RFC8995"/>.</t>
          <t>Here is an example of an announcement that offers both constrained and unconstrained onboarding:</t>
          <figure anchor="fig-grasp-duo">
            <name>Example of Join Proxy announcing two methods</name>
            <artwork align="left"><![CDATA[
     [M_FLOOD, 12340851, h'fe800000000000000000000000000001', 180000,
     [["AN_Proxy", 4, 1, ""],
      [O_IPv6_LOCATOR,
       h'fe800000000000000000000000000001', IPPROTO_TCP, 4443],
      ["AN_Proxy", 4, 1, "DTLS"],
      [O_IPv6_LOCATOR,
       h'fe800000000000000000000000000001', IPPROTO_UDP, 5684]]
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="discovery-operations-by-join-proxy">
        <name>Discovery operations by Join-Proxy</name>
        <section anchor="grasp-discovery-1">
          <name>GRASP Discovery</name>
          <t>This section is normative for uses with an ANIMA ACP. In the context of autonomic networks, the Registrar announces itself to a stateful Join Proxy using ACP instance of GRASP using M_FLOOD messages.
Section 4.3 of <xref target="RFC8995"/> discusses this in more detail.</t>
          <t>The following changes are necessary with respect to figure 10 of <xref target="RFC8995"/>:</t>
          <ul spacing="normal">
            <li>The transport-proto is IPPROTO_UDP</li>
            <li>the objective is AN_join_registrar, identical to <xref target="RFC8995"/>.</li>
            <li>the objective name is "BRSKI_JP".</li>
          </ul>
          <t>The Registrar announces itself using ACP instance of GRASP using M_FLOOD messages.
Autonomic Network Join Proxies MUST support GRASP discovery of Registrar as described in section 4.3 of <xref target="RFC8995"/>.</t>
          <t>Here is an example M_FLOOD announcing the Registrar on example port 5684, which is the standard CoAPS port number.</t>
          <figure anchor="fig-grasp-rgj">
            <name>Example of Registrar announcement message</name>
            <artwork align="left"><![CDATA[
   [M_FLOOD, 51804321, h'fda379a6f6ee00000200000064000001', 180000,
   [["AN_join_registrar", 4, 255, "BRSKI_JP"],
    [O_IPv6_LOCATOR,
     h'fda379a6f6ee00000200000064000001', IPPROTO_UDP, 5684]]]
]]></artwork>
          </figure>
          <t>The Registrar uses a routable address that can be used by enrolled constrained Join Proxies.
The address will typically be a ULA (as it is in the example), but could also be a GUA.</t>
        </section>
        <section anchor="coap-disc">
          <name>CoAP discovery</name>
          <t>Section <xref target="brski-extensions-discovery"/> describes the mechanism by which a Pledge can learn about the different resource end-points that a Registrar supports.</t>
          <t>This section explains how a Join Proxy can discover the join-port and IP address of the Registrar  by sending a GET request to "/.well-known/core" including a resource type (rt) parameter with the value "brski.jp" <xref target="RFC6690"/>.</t>
          <t>This will typically be sent to the all-hosts Link-Local multicast address.</t>
          <t>Upon success, the return payload will contain the join-port of the Registrar.</t>
          <artwork><![CDATA[
  REQ: GET coap://[IP_address]/.well-known/core?rt=brski.jp

  RES: 2.05 Content
  <coaps://[IP_address]:join-port>; rt="brski.jp"
]]></artwork>
          <t>The discoverable port numbers are usually returned for Join Proxy resources in the &lt;URI-Reference&gt; of the payload (see section 5.1 of <xref target="RFC9148"/>).</t>
        </section>
      </section>
    </section>
    <section anchor="discovery-considerations">
      <name>Deployment-specific Discovery Considerations</name>
      <t>This section details how discovery is done in specific deployment scenarios.</t>
      <section anchor="tsch-deployments">
        <name>6TSCH Deployments</name>
        <t>In 6TISCH networks, the Constrained Join Proxy (CoJP) mechanism is described in <xref target="RFC9031"/>.
Such networks are expected to use a <xref target="I-D.ietf-lake-edhoc"/> to do key management.
This is the subject of future work.
The Enhanced Beacon has been extended in <xref target="RFC9032"/> to allow for discovery of the Join Proxy.</t>
      </section>
      <section anchor="generic-networks-using-grasp">
        <name>Generic networks using GRASP</name>
        <t><xref target="RFC8995"/> defines a mechanism for the Pledge to discover a Join Proxy by listening for <xref target="RFC8990"/> GRASP messages.
This mechanism can be used on any network which does not have another more specific mechanism.
This mechanism supports mesh networks, and can also be used over unencrypted WIFI.</t>
      </section>
      <section anchor="generic-networks-using-mdns">
        <name>Generic networks using mDNS</name>
        <t><xref target="RFC8995"/> also defines a non-normative mechanism for the Pledge to discover a Join Proxy by doing mDNS queries.
This mechanism can be used on any network which does not have another recommended mechanism.
This mechanism does not easily support mesh networks.  It can be used over unencrypted WIFI.</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 level: 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.</t>
      </section>
      <section anchor="non-mesh-networks-using-coap-discovery">
        <name>Non-mesh networks using CoAP Discovery</name>
        <t>On unencrypted constrained networks such as 802.15.4, CoAP discover may be done using the mechanism detailed in <xref target="RFC9148"/> section 5.1.</t>
      </section>
    </section>
    <section anchor="design-considerations">
      <name>Design Considerations</name>
      <t>The design considerations for the CBOR encoding of vouchers are much the same as for JSON vouchers in <xref target="RFC8366"/>.
One key difference is that the names of the leaves in the YANG definition do not affect the size of the resulting CBOR, as the SID translation process assigns integers to the names.</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.</t>
    </section>
    <section anchor="rpk-considerations">
      <name>Raw Public Key Use Considerations</name>
      <t>This section explains techniques to reduce the number of bytes that are sent over the wire during the BRSKI bootstrap.
The use of a raw public key (RPK) in the pinning process can significantly reduce the number of bytes and round trips, but it comes with a few significant operational limitations.</t>
      <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 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.
Instead of using a (TLSServer)Certificate of type X509 (see section 4.4.2 of <xref target="RFC8446"/>),
a RawPublicKey object is used.</t>
        <t>A Registrar operating in a mixed environment can determine whether to send a Certificate or a Raw Public key: this is determined by the pledge including the server_certificate_type of RawPublicKey.
This is shown in section 5 of <xref target="RFC7250"/>.</t>
        <t>The Pledge continues to send a client_certificate_type of X509, so that the Registrar can properly identify the pledge and distill the MASA URI information from its 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 voucher-request.
(The proximity-registrar-pubk-sha256 can also be used if the 32-bytes of a SHA256 hash turns out to be smaller than a typical ECDSA key.)</t>
        <t>As the format of the pubk field is identical to the TLS Certificate RawPublicKey, no manipulation at all is needed to insert this into a voucher-request.</t>
      </section>
      <section anchor="the-voucher-response">
        <name>The Voucher Response</name>
        <t>A returned voucher will have a pinned-domain-subk field with the identical key as was found in the proximity-registrar-pubk field above, as well as in the TLS connection.</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"/>.</t>
        <t>The voucher needs to be validated first.
The Pledge needs to have a public key to validate the signature from the MASA on the voucher.</t>
        <t>In certain cases, the MASA's public key counterpart of the (private) signing key is already installed in the Pledge at manufacturing time.
In other cases, if the MASA signing key is based upon a PKI (see <xref target="I-D.richardson-anima-masa-considerations"/> Section 2.3), then a certificate chain may need to be included with the voucher in order for the pledge to validate the signature.
In CMS signed artifacts, the CMS structure has a place for such certificates.</t>
        <t>In the COSE-signed Constrained Vouchers described in this document, the x5bag attribute from <xref target="I-D.ietf-cose-x509"/> is used to contain the needed certificates and chain.</t>
      </section>
    </section>
    <section anchor="use-of-constrained-vouchers-with-https">
      <name>Use of constrained vouchers 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 normal <xref target="RFC8995"/> resource names are used, together with the media types described in this document.</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 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="RFC8366"/> 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"/>.</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 target="voucher-request-artifact"/> 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>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.</li>
          <li>in many enterprise networks, outgoing UDP connections are often treated as suspicious, which could effectively block CoAP connections for some firewall configurations.</li>
          <li>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.</li>
        </ul>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="resource-type-registry">
        <name>Resource Type 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="the-ietf-xml-registry">
        <name>The IETF XML Registry</name>
        <t>This document registers two URIs in the IETF XML registry <xref target="RFC3688"/>.
Following the format in <xref target="RFC3688"/>, the following registration is requested:</t>
        <artwork><![CDATA[
  URI: urn:ietf:params:xml:ns:yang:ietf-voucher-constrained
  Registrant Contact: The ANIMA WG of the IETF.
  XML: N/A, the requested URI is an XML namespace.

  URI: urn:ietf:params:xml:ns:yang:ietf-voucher-request-constrained
  Registrant Contact: The ANIMA WG of the IETF.
  XML: N/A, the requested URI is an XML namespace.
]]></artwork>
      </section>
      <section anchor="the-yang-module-names-registry">
        <name>The YANG Module Names Registry</name>
        <t>This document registers two YANG modules in the YANG Module Names registry <xref target="RFC6020"/>.  Following the format defined in <xref target="RFC6020"/>, the the following registration is requested:</t>
        <artwork><![CDATA[
  name:         ietf-voucher-constrained
  namespace:    urn:ietf:params:xml:ns:yang:ietf-voucher-constrained
  prefix:       vch
  reference:    RFC XXXX

  name:         ietf-voucher-request-constrained
  namespace:    urn:ietf:params:xml:ns:yang:ietf-voucher-
                                           request-constrained
  prefix:       vch
  reference:    RFC XXXX
]]></artwork>
      </section>
      <section anchor="the-rfc-sid-range-assignment-sub-registry">
        <name>The RFC SID range assignment sub-registry</name>
        <artwork><![CDATA[
------------ ------ --------------------------- ------------
Entry-point | Size | Module name               | RFC Number
------------ ------ --------------------------- ------------
2450          50     ietf-voucher-constrained    [This RFC]
2500          50     ietf-voucher-request        [This RFC]
                                 -constrained
----------- ------  --------------------------- ------------
]]></artwork>
        <t>Warning: These SID values are defined in <xref target="I-D.ietf-core-sid"/>, not as an Early Allocation.</t>
        <t>IANA: please update the names in the Registry to match these revised names, if they have not already  been revised.</t>
      </section>
      <section anchor="media-types-registry">
        <name>Media Types Registry</name>
        <t>This section registers the 'application/voucher-cose+cbor' 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="I-D.ietf-cose-rfc8152bis-struct"/>.</t>
        <section anchor="applicationvoucher-cosecbor">
          <name>application/voucher-cose+cbor</name>
          <artwork><![CDATA[
Type name:  application
Subtype name:  voucher-cose+cbor
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:  The syntax and semantics of
  fragment identifiers specified for application/voucher-cose+cbor
  are as specified for application/cbor.  (At publication of this
  document, there is no fragment identification syntax defined for
  application/cbor.)
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+cbor  -          836  [This RFC]
]]></artwork>
      </section>
      <section anchor="update-to-brski-parameters-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 Constrained BRSKI 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>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>We are very grateful to Jim Schaad for explaining COSE and CMS choices.
Also thanks to Jim Schaad for correcting earlier versions of the COSE_Sign1 objects.</t>
      <t>Michel Veillette did extensive work on <em>pyang</em> to extend it to support the SID allocation process, and this document was among its first users.</t>
      <t>Daniel Franke and Henk Birkholtz provided review feedback.</t>
      <t>The BRSKI design team has met on many Thursdays for document review.
It includes:
Aurelio Schellenbaum,
David von Oheimb
Steffen Fries,
Thomas Werner,
Toerless Eckert,</t>
    </section>
    <section anchor="changelog">
      <name>Changelog</name>
      <t>-11 to -16
    (For change details see GitHub issues https://github.com/anima-wg/constrained-voucher/issues)</t>
      <t>-10
    Design considerations extended
    Examples made consistent</t>
      <t>-08
    Examples for cose_sign1 are completed and improved.</t>
      <t>-06
    New SID values assigned; regenerated examples</t>
      <t>-04
    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</t>
      <artwork><![CDATA[
Examples are inverted.
]]></artwork>
      <t>-02</t>
      <artwork><![CDATA[
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
]]></artwork>
      <t>-01</t>
      <artwork><![CDATA[
application/json is optional, application/cbor is compulsory
Cms and cose mediatypes are introduced
]]></artwork>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC3688" target="https://www.rfc-editor.org/info/rfc3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling">
              <organization/>
            </author>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC4193" target="https://www.rfc-editor.org/info/rfc4193">
          <front>
            <title>Unique Local IPv6 Unicast Addresses</title>
            <author fullname="R. Hinden" initials="R." surname="Hinden">
              <organization/>
            </author>
            <author fullname="B. Haberman" initials="B." surname="Haberman">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc4210">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate Management Protocol (CMP)</title>
            <author fullname="C. Adams" initials="C." surname="Adams">
              <organization/>
            </author>
            <author fullname="S. Farrell" initials="S." surname="Farrell">
              <organization/>
            </author>
            <author fullname="T. Kause" initials="T." surname="Kause">
              <organization/>
            </author>
            <author fullname="T. Mononen" initials="T." surname="Mononen">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper">
              <organization/>
            </author>
            <author fullname="S. Santesson" initials="S." surname="Santesson">
              <organization/>
            </author>
            <author fullname="S. Farrell" initials="S." surname="Farrell">
              <organization/>
            </author>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen">
              <organization/>
            </author>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <author fullname="W. Polk" initials="W." surname="Polk">
              <organization/>
            </author>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet.  An overview of this approach and model is provided as an introduction.  The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms.  Standard certificate extensions are described and two Internet-specific extensions are defined.  A set of required certificate extensions is specified.  The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions.  An algorithm for X.509 certification path validation is described.  An ASN.1 module and examples are provided in the appendices.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC5652" target="https://www.rfc-editor.org/info/rfc5652">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <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="RFC6020" target="https://www.rfc-editor.org/info/rfc6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund">
              <organization/>
            </author>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
        <reference anchor="RFC6066" target="https://www.rfc-editor.org/info/rfc6066">
          <front>
            <title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd">
              <organization/>
            </author>
            <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="RFC6125" target="https://www.rfc-editor.org/info/rfc6125">
          <front>
            <title>Representation and Verification of Domain-Based Application Service Identity within Internet Public Key Infrastructure Using X.509 (PKIX) Certificates in the Context of Transport Layer Security (TLS)</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre">
              <organization/>
            </author>
            <author fullname="J. Hodges" initials="J." surname="Hodges">
              <organization/>
            </author>
            <date month="March" year="2011"/>
            <abstract>
              <t>Many application technologies enable secure communication between two entities by means of Internet Public Key Infrastructure Using X.509 (PKIX) certificates in the context of Transport Layer Security (TLS). This document specifies procedures for representing and verifying the identity of application services in such interactions.   [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6125"/>
          <seriesInfo name="DOI" value="10.17487/RFC6125"/>
        </reference>
        <reference anchor="RFC7250" target="https://www.rfc-editor.org/info/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">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig">
              <organization/>
            </author>
            <author fullname="J. Gilmore" initials="J." surname="Gilmore">
              <organization/>
            </author>
            <author fullname="S. Weiler" initials="S." surname="Weiler">
              <organization/>
            </author>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen">
              <organization/>
            </author>
            <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="RFC7950" target="https://www.rfc-editor.org/info/rfc7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund">
              <organization/>
            </author>
            <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="RFC8366" target="https://www.rfc-editor.org/info/rfc8366">
          <front>
            <title>A Voucher Artifact for Bootstrapping Protocols</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen">
              <organization/>
            </author>
            <author fullname="M. Richardson" initials="M." surname="Richardson">
              <organization/>
            </author>
            <author fullname="M. Pritikin" initials="M." surname="Pritikin">
              <organization/>
            </author>
            <author fullname="T. Eckert" initials="T." surname="Eckert">
              <organization/>
            </author>
            <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="RFC8446" target="https://www.rfc-editor.org/info/rfc8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <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="RFC8610" target="https://www.rfc-editor.org/info/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">
              <organization/>
            </author>
            <author fullname="C. Vigano" initials="C." surname="Vigano">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <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="RFC8949" target="https://www.rfc-editor.org/info/rfc8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc8995">
          <front>
            <title>Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
            <author fullname="M. Pritikin" initials="M." surname="Pritikin">
              <organization/>
            </author>
            <author fullname="M. Richardson" initials="M." surname="Richardson">
              <organization/>
            </author>
            <author fullname="T. Eckert" initials="T." surname="Eckert">
              <organization/>
            </author>
            <author fullname="M. Behringer" initials="M." surname="Behringer">
              <organization/>
            </author>
            <author fullname="K. Watsen" initials="K." surname="Watsen">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document specifies automated bootstrapping of an Autonomic Control Plane.  To do this, a Secure Key Infrastructure is bootstrapped.  This is done using manufacturer-installed X.509 certificates, in combination with a manufacturer's authorizing service, both online and offline.  We call this process the Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol. Bootstrapping a new device can occur when using a routable address and a cloud service, only link-local connectivity, or limited/disconnected networks. Support for deployment models with less stringent security requirements is included. Bootstrapping is complete when the cryptographic identity of the new key infrastructure is successfully deployed to the device.  The established secure connection can be used to deploy a locally issued certificate to the device as well.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8995"/>
          <seriesInfo name="DOI" value="10.17487/RFC8995"/>
        </reference>
        <reference anchor="RFC9031" target="https://www.rfc-editor.org/info/rfc9031">
          <front>
            <title>Constrained Join Protocol (CoJP) for 6TiSCH</title>
            <author fullname="M. Vučinić" initials="M." role="editor" surname="Vučinić">
              <organization/>
            </author>
            <author fullname="J. Simon" initials="J." surname="Simon">
              <organization/>
            </author>
            <author fullname="K. Pister" initials="K." surname="Pister">
              <organization/>
            </author>
            <author fullname="M. Richardson" initials="M." surname="Richardson">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc9032">
          <front>
            <title>Encapsulation of 6TiSCH Join and Enrollment Information Elements</title>
            <author fullname="D. Dujovne" initials="D." role="editor" surname="Dujovne">
              <organization/>
            </author>
            <author fullname="M. Richardson" initials="M." surname="Richardson">
              <organization/>
            </author>
            <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="I-D.ietf-core-yang-cbor" target="https://www.ietf.org/archive/id/draft-ietf-core-yang-cbor-20.txt">
          <front>
            <title>CBOR Encoding of Data Modeled with YANG</title>
            <author fullname="Michel Veillette">
              <organization>Trilliant Networks Inc.</organization>
            </author>
            <author fullname="Ivaylo Petrov">
              <organization>Google Switzerland GmbH</organization>
            </author>
            <author fullname="Alexander Pelov">
              <organization>Acklio</organization>
            </author>
            <author fullname="Carsten Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Michael Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="11" month="April" year="2022"/>
            <abstract>
              <t>   Based on the Concise Binary Object Representation (CBOR, RFC 8949),
   this document defines encoding rules for representing configuration
   data, state data, parameters and results of Remote Procedure Call
   (RPC) operations or actions, and notifications, defined using YANG
   (RFC 7950).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-yang-cbor-20"/>
        </reference>
        <reference anchor="I-D.ietf-core-sid" target="https://www.ietf.org/archive/id/draft-ietf-core-sid-18.txt">
          <front>
            <title>YANG Schema Item iDentifier (YANG SID)</title>
            <author fullname="Michel Veillette">
              <organization>Trilliant Networks Inc.</organization>
            </author>
            <author fullname="Alexander Pelov">
              <organization>Acklio</organization>
            </author>
            <author fullname="Ivaylo Petrov">
              <organization>Google Switzerland GmbH</organization>
            </author>
            <author fullname="Carsten Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Michael Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="18" month="November" year="2021"/>
            <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.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-sid-18"/>
        </reference>
        <reference anchor="I-D.ietf-cose-rfc8152bis-struct" target="https://www.ietf.org/archive/id/draft-ietf-cose-rfc8152bis-struct-15.txt">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="Jim Schaad">
              <organization>August Cellars</organization>
            </author>
            <date day="1" month="February" year="2021"/>
            <abstract>
              <t>   Concise Binary Object Representation (CBOR) is a data format designed
   for small code size and small message size.  There is a need for the
   ability to have basic security services defined 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.

   This document along with [I-D.ietf-cose-rfc8152bis-algs] obsoletes
   RFC8152.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-rfc8152bis-struct-15"/>
        </reference>
        <reference anchor="I-D.ietf-cose-rfc8152bis-algs" target="https://www.ietf.org/archive/id/draft-ietf-cose-rfc8152bis-algs-12.txt">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="Jim Schaad">
              <organization>August Cellars</organization>
            </author>
            <date day="24" month="September" year="2020"/>
            <abstract>
              <t>   Concise Binary Object Representation (CBOR) is a data format designed
   for small code size and small message size.  There is a need for the
   ability to have basic security services defined 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 XXXX.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-rfc8152bis-algs-12"/>
        </reference>
        <reference anchor="RFC9148" target="https://www.rfc-editor.org/info/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">
              <organization/>
            </author>
            <author fullname="P. Kampanakis" initials="P." surname="Kampanakis">
              <organization/>
            </author>
            <author fullname="M. Richardson" initials="M." surname="Richardson">
              <organization/>
            </author>
            <author fullname="S. Raza" initials="S." surname="Raza">
              <organization/>
            </author>
            <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="I-D.ietf-cose-x509" target="https://www.ietf.org/archive/id/draft-ietf-cose-x509-08.txt">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Header parameters for carrying and referencing X.509 certificates</title>
            <author fullname="Jim Schaad">
              <organization>August Cellars</organization>
            </author>
            <date day="14" month="December" year="2020"/>
            <abstract>
              <t>   The CBOR Signing And Encrypted Message (COSE) structure uses
   references to keys in general.  For some algorithms, additional
   properties are defined which 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="Internet-Draft" value="draft-ietf-cose-x509-08"/>
        </reference>
        <reference anchor="I-D.ietf-tls-dtls13" target="https://www.ietf.org/archive/id/draft-ietf-tls-dtls13-43.txt">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="Eric Rescorla">
              <organization>RTFM, Inc.</organization>
            </author>
            <author fullname="Hannes Tschofenig">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Nagendra Modadugu">
              <organization>Google, Inc.</organization>
            </author>
            <date day="30" month="April" year="2021"/>
            <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.

 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.

 This document obsoletes RFC 6347.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-dtls13-43"/>
        </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" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC4443" target="https://www.rfc-editor.org/info/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">
              <organization/>
            </author>
            <author fullname="S. Deering" initials="S." surname="Deering">
              <organization/>
            </author>
            <author fullname="M. Gupta" initials="M." role="editor" surname="Gupta">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/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">
              <organization/>
            </author>
            <author fullname="P. Thubert" initials="P." surname="Thubert">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc6690">
          <front>
            <title>Constrained RESTful Environments (CoRE) Link Format</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby">
              <organization/>
            </author>
            <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="RFC7030" target="https://www.rfc-editor.org/info/rfc7030">
          <front>
            <title>Enrollment over Secure Transport</title>
            <author fullname="M. Pritikin" initials="M." role="editor" surname="Pritikin">
              <organization/>
            </author>
            <author fullname="P. Yee" initials="P." role="editor" surname="Yee">
              <organization/>
            </author>
            <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins">
              <organization/>
            </author>
            <date month="October" year="2013"/>
            <abstract>
              <t>This document profiles certificate enrollment for clients using Certificate Management over CMS (CMC) messages over a secure transport.  This profile, called Enrollment over Secure Transport (EST), describes a simple, yet functional, certificate management protocol targeting Public Key Infrastructure (PKI) clients that need to acquire client certificates and associated Certification Authority (CA) certificates.  It also supports client-generated public/private key pairs as well as key pairs generated by the CA.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7030"/>
          <seriesInfo name="DOI" value="10.17487/RFC7030"/>
        </reference>
        <reference anchor="RFC7228" target="https://www.rfc-editor.org/info/rfc7228">
          <front>
            <title>Terminology for Constrained-Node Networks</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="M. Ersue" initials="M." surname="Ersue">
              <organization/>
            </author>
            <author fullname="A. Keranen" initials="A." surname="Keranen">
              <organization/>
            </author>
            <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="RFC8340" target="https://www.rfc-editor.org/info/rfc8340">
          <front>
            <title>YANG Tree Diagrams</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund">
              <organization/>
            </author>
            <author fullname="L. Berger" initials="L." role="editor" surname="Berger">
              <organization/>
            </author>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document captures the current syntax used in YANG module tree diagrams.  The purpose of this document is to provide a single location for this definition.  This syntax may be updated from time to time based on the evolution of the YANG language.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="215"/>
          <seriesInfo name="RFC" value="8340"/>
          <seriesInfo name="DOI" value="10.17487/RFC8340"/>
        </reference>
        <reference anchor="RFC8990" target="https://www.rfc-editor.org/info/rfc8990">
          <front>
            <title>GeneRic Autonomic Signaling Protocol (GRASP)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="B. Carpenter" initials="B." role="editor" surname="Carpenter">
              <organization/>
            </author>
            <author fullname="B. Liu" initials="B." role="editor" surname="Liu">
              <organization/>
            </author>
            <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="I-D.ietf-6lo-mesh-link-establishment" target="https://www.ietf.org/archive/id/draft-ietf-6lo-mesh-link-establishment-00.txt">
          <front>
            <title>Mesh Link Establishment</title>
            <author fullname="Richard Kelsey">
	 </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" target="https://www.ietf.org/archive/id/draft-kuehlewind-update-tag-04.txt">
          <front>
            <title>Definition of new tags for relations between RFCs</title>
            <author fullname="Mirja Kuehlewind">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Suresh 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" target="https://www.ietf.org/archive/id/draft-richardson-anima-masa-considerations-07.txt">
          <front>
            <title>Operatonal Considerations for Voucher infrastructure for BRSKI MASA</title>
            <author fullname="Michael Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Wei Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="11" month="July" year="2022"/>
            <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-07"/>
        </reference>
        <reference anchor="I-D.ietf-anima-constrained-join-proxy" target="https://www.ietf.org/archive/id/draft-ietf-anima-constrained-join-proxy-10.txt">
          <front>
            <title>Constrained Join Proxy for Bootstrapping Protocols</title>
            <author fullname="Michael Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Peter van der Stok">
              <organization>vanderstok consultancy</organization>
            </author>
            <author fullname="Panos Kampanakis">
              <organization>Cisco Systems</organization>
            </author>
            <date day="14" month="April" year="2022"/>
            <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-10"/>
        </reference>
        <reference anchor="I-D.ietf-lake-edhoc" target="https://www.ietf.org/archive/id/draft-ietf-lake-edhoc-15.txt">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="Göran Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="10" month="July" year="2022"/>
            <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-15"/>
        </reference>
        <reference anchor="I-D.ietf-anima-jws-voucher" target="https://www.ietf.org/archive/id/draft-ietf-anima-jws-voucher-04.txt">
          <front>
            <title>JWS signed Voucher Artifacts for Bootstrapping Protocols</title>
            <author fullname="Thomas Werner">
              <organization>Siemens AG</organization>
            </author>
            <author fullname="Michael Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="11" month="July" year="2022"/>
            <abstract>
              <t>   [RFC8366] defines a digital artifact called voucher as a YANG-defined
   JSON document that has been signed using a Cryptographic Message
   Syntax (CMS) structure.  This memo introduces a variant of the
   voucher structure in which CMS is replaced by the JSON Object Signing
   and Encryption (JOSE) mechanism described in RFC7515 to better
   support use-cases in which JOSE is preferred over CMS.

   In addition to explaining how the format is created, MIME types are
   registered and examples are provided.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-anima-jws-voucher-04"/>
        </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="2021" month="November"/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-rats-architecture" target="https://www.ietf.org/archive/id/draft-ietf-rats-architecture-18.txt">
          <front>
            <title>Remote Attestation Procedures Architecture</title>
            <author fullname="Henk Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Dave Thaler">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Michael Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Ned Smith">
              <organization>Intel Corporation</organization>
            </author>
            <author fullname="Wei Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="14" month="June" 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.
   An attempt is made to provide for 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-18"/>
        </reference>
      </references>
    </references>
    <section anchor="libsup">
      <name>Library Support for BRSKI</name>
      <t>For the implementation of BRSKI, the use of a software library to manipulate 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 self signed root CA), and the target certificate. In other libraries, the chain must be constructed beforehand and obey order 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><![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 markers="true"><![CDATA[
mbedtls_x509_crt cert;
mbedtls_x509_crt caCert;
uint32_t         certVerifyResultFlags;
...
int result = mbedtls_x509_crt_verify(&cert, &caCert, NULL, NULL,
                             &certVerifyResultFlags, NULL, NULL);
]]></sourcecode>
      </section>
    </section>
    <section anchor="constrained-brski-est-message-examples">
      <name>Constrained BRSKI-EST Message Examples</name>
      <t>This appendix extends the message examples from Appendix A of <xref target="RFC9148"/> with constrained BRSKI 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[
    POST coaps://192.0.2.1:8085/b/es
      Content-Format: 60
      Payload: <binary CBOR enrollstatus document>
]]></artwork>
        <t>The corresponding CoAP header fields 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>
        <artwork><![CDATA[
  {
    "version": 1,
    "status": true
   }
]]></artwork>
        <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

  {
    "version": 1,
    "status": false,
    "reason": "<Informative human readable error message>"
  }
]]></artwork>
        <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>With CoAP 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[
    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>
        <artwork><![CDATA[
{
  "version": 1, 
  "status": false,
  "reason": "Informative human-readable error message",
  "reason-context": { 0: "Additional information" } 
}
]]></artwork>
        <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 certificates are described, following 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><![CDATA[
<CODE BEGINS>
Private-Key: (256 bit)
priv:
    9b:4d:43:b6:a9:e1:7c:04:93:45:c3:13:d9:b5:f0:
    41:a9:6a:9c:45:79:73:b8:62:f1:77:03:3a:fc:c2:
    9c:9a
pub:
    04:d6:b7:6f:74:88:bd:80:ae:5f:28:41:2c:72:02:
    ef:5f:98:b4:81:e1:d9:10:4c:f8:1b:66:d4:3e:5c:
    ea:da:73:e6:a8:38:a9:f1:35:11:85:b6:cd:e2:04:
    10:be:fe:d5:0b:3b:14:69:2e:e1:b0:6a:bc:55:40:
    60:eb:95:5c:54
ASN1 OID: prime256v1
NIST CURVE: P-256
<CODE ENDS>
]]></sourcecode>
        </section>
        <section anchor="jrcpriv">
          <name>Registrar private key</name>
          <sourcecode><![CDATA[
<CODE BEGINS>
Private-Key: (256 bit)
priv:
    81:df:bb:50:a3:45:58:06:b5:56:3b:46:de:f3:e9:
    e9:00:ae:98:13:9e:2f:36:68:81:fc:d9:65:24:fb:
    21:7e
pub:
    04:50:7a:c8:49:1a:8c:69:c7:b5:c3:1d:03:09:ed:
    35:ba:13:f5:88:4c:e6:2b:88:cf:30:18:15:4f:a0:
    59:b0:20:ec:6b:eb:b9:4e:02:b8:93:40:21:89:8d:
    a7:89:c7:11:ce:a7:13:39:f5:0e:34:8e:df:0d:92:
    3e:d0:2d:c7:b7
ASN1 OID: prime256v1
NIST CURVE: P-256
<CODE ENDS>
]]></sourcecode>
        </section>
        <section anchor="masapriv">
          <name>MASA private key</name>
          <sourcecode><![CDATA[
<CODE BEGINS>
Private-Key: (256 bit)
priv:
    c6:bb:a5:8f:b6:d3:c4:75:28:d8:d3:d9:46:c3:31:
    83:6d:00:0a:9a:38:ce:22:5c:e9:d9:ea:3b:98:32:
    ec:31
pub:
    04:59:80:94:66:14:94:20:30:3c:66:08:85:55:86:
    db:e7:d4:d1:d7:7a:d2:a3:1a:0c:73:6b:01:0d:02:
    12:15:d6:1f:f3:6e:c8:d4:84:60:43:3b:21:c5:83:
    80:1e:fc:e2:37:85:77:97:94:d4:aa:34:b5:b6:c6:
    ed:f3:17:5c:f1
ASN1 OID: prime256v1
NIST CURVE: P-256
<CODE ENDS>
]]></sourcecode>
        </section>
      </section>
      <section anchor="pledge-registrar-and-masa-certificates">
        <name>Pledge, Registrar and MASA Certificates</name>
        <t>All keys and 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><![CDATA[
<CODE BEGINS>
Certificate:
  Data:
      Version: 3 (0x2)
      Serial Number: 4822678189204992 (0x11223344556600)
      Signature Algorithm: ecdsa-with-SHA256
      Issuer: C=NL, ST=NB, L=Helmond, O=vanderstok, OU=manufacturer, 
                                                    CN=masa.stok.nl
      Validity
          Not Before: Dec  9 10:02:36 2020 GMT
          Not After : Dec 31 23:59:59 9999 GMT
      Subject: C=NL, ST=NB, L=Helmond, O=vanderstok, OU=manufacturing,
                 CN=uuid:pledge.1.2.3.4/serialNumber=pledge.1.2.3.4
      Subject Public Key Info:
          Public Key Algorithm: id-ecPublicKey
              Public-Key: (256 bit)
              pub:
                  04:d6:b7:6f:74:88:bd:80:ae:5f:28:41:2c:72:02:
                  ef:5f:98:b4:81:e1:d9:10:4c:f8:1b:66:d4:3e:5c:
                  ea:da:73:e6:a8:38:a9:f1:35:11:85:b6:cd:e2:04:
                  10:be:fe:d5:0b:3b:14:69:2e:e1:b0:6a:bc:55:40:
                  60:eb:95:5c:54
              ASN1 OID: prime256v1
              NIST CURVE: P-256
      X509v3 extensions:
          X509v3 Basic Constraints: 
              CA:FALSE
          X509v3 Authority Key Identifier: 
              keyid:
      E4:03:93:B4:C3:D3:F4:2A:80:A4:77:18:F6:96:49:03:01:17:68:A3

  Signature Algorithm: ecdsa-with-SHA256
         30:46:02:21:00:d2:e6:45:3b:b0:c3:00:b3:25:8d:f1:83:fe:
         d9:37:c1:a2:49:65:69:7f:6b:b9:ef:2c:05:07:06:31:ac:17:
         bd:02:21:00:e2:ce:9e:7b:7f:74:50:33:ad:9e:ff:12:4e:e9:
         a6:f3:b8:36:65:ab:7d:80:bb:56:88:bc:03:1d:e5:1e:31:6f
<CODE ENDS>
]]></sourcecode>
          <t>Below is the hexadecimal representation:</t>
          <sourcecode><![CDATA[
<CODE BEGINS>
30820226308201cba003020102020711223344556600300a06082a8648ce3d04
0302306f310b3009060355040613024e4c310b300906035504080c024e423110
300e06035504070c0748656c6d6f6e6431133011060355040a0c0a76616e6465
7273746f6b31153013060355040b0c0c6d616e75666163747572657231153013
06035504030c0c6d6173612e73746f6b2e6e6c3020170d323031323039313030
3233365a180f39393939313233313233353935395a308190310b300906035504
0613024e4c310b300906035504080c024e423110300e06035504070c0748656c
6d6f6e6431133011060355040a0c0a76616e64657273746f6b31163014060355
040b0c0d6d616e75666163747572696e67311c301a06035504030c1375756964
3a706c656467652e312e322e332e34311730150603550405130e706c65646765
2e312e322e332e343059301306072a8648ce3d020106082a8648ce3d03010703
420004d6b76f7488bd80ae5f28412c7202ef5f98b481e1d9104cf81b66d43e5c
eada73e6a838a9f1351185b6cde20410befed50b3b14692ee1b06abc554060eb
955c54a32e302c30090603551d1304023000301f0603551d23041830168014e4
0393b4c3d3f42a80a47718f6964903011768a3300a06082a8648ce3d04030203
49003046022100d2e6453bb0c300b3258df183fed937c1a24965697f6bb9ef2c
05070631ac17bd022100e2ce9e7b7f745033ad9eff124ee9a6f3b83665ab7d80
bb5688bc031de51e316f
<CODE ENDS>
]]></sourcecode>
        </section>
        <section anchor="jrccert">
          <name>Registrar Certificate</name>
          <sourcecode><![CDATA[
<CODE BEGINS>
Certificate:
  Data:
      Version: 3 (0x2)
      Serial Number:
        70:56:ea:aa:30:66:d8:82:6a:55:5b:90:88:d4:62:bf:9c:f2:8c:fd
      Signature Algorithm: ecdsa-with-SHA256
      Issuer: C=NL, ST=NB, L=Helmond, O=vanderstok, OU=consultancy,
                                               CN=registrar.stok.nl
      Validity
          Not Before: Dec  9 10:02:36 2020 GMT
          Not After : Dec  9 10:02:36 2021 GMT
      Subject: C=NL, ST=NB, L=Helmond, O=vanderstok, OU=consultancy,
                                                CN=registrar.stok.nl
      Subject Public Key Info:
          Public Key Algorithm: id-ecPublicKey
              Public-Key: (256 bit)
              pub:
                  04:50:7a:c8:49:1a:8c:69:c7:b5:c3:1d:03:09:ed:
                  35:ba:13:f5:88:4c:e6:2b:88:cf:30:18:15:4f:a0:
                  59:b0:20:ec:6b:eb:b9:4e:02:b8:93:40:21:89:8d:
                  a7:89:c7:11:ce:a7:13:39:f5:0e:34:8e:df:0d:92:
                  3e:d0:2d:c7:b7
              ASN1 OID: prime256v1
              NIST CURVE: P-256
      X509v3 extensions:
          X509v3 Subject Key Identifier: 
    08:C2:BF:36:88:7F:79:41:21:85:87:2F:16:A7:AC:A6:EF:B3:D2:B3
          X509v3 Authority Key Identifier: 
              keyid:
    08:C2:BF:36:88:7F:79:41:21:85:87:2F:16:A7:AC:A6:EF:B3:D2:B3

          X509v3 Basic Constraints: critical
              CA:TRUE
          X509v3 Extended Key Usage: 
              CMC Registration Authority, TLS Web Server 
              Authentication, TLS Web Client Authentication
          X509v3 Key Usage: critical
              Digital Signature, Non Repudiation, Key Encipherment, 
              Data Encipherment, Certificate Sign, CRL Sign
  Signature Algorithm: ecdsa-with-SHA256
       30:44:02:20:74:4c:99:00:85:13:b2:f1:bc:fd:f9:02:1a:46:
       fb:17:4c:f8:83:a2:7c:a1:d9:3f:ae:ac:f3:1e:4e:dd:12:c6:
       02:20:11:47:14:db:f5:1a:5e:78:f5:81:b9:42:1c:6e:47:02:
       ab:53:72:70:c5:ba:fb:2d:16:c3:de:9a:a1:82:c3:5f
<CODE ENDS>
]]></sourcecode>
          <t>Below is the hexadecimal representation which is in (request-)voucher examples referred to as regis-cert-hex:</t>
          <sourcecode><![CDATA[
<CODE BEGINS>
308202753082021ca00302010202147056eaaa3066d8826a555b9088d462bf9c
f28cfd300a06082a8648ce3d0403023073310b3009060355040613024e4c310b
300906035504080c024e423110300e06035504070c0748656c6d6f6e64311330
11060355040a0c0a76616e64657273746f6b31143012060355040b0c0b636f6e
73756c74616e6379311a301806035504030c117265676973747261722e73746f
6b2e6e6c301e170d3230313230393130303233365a170d323131323039313030
3233365a3073310b3009060355040613024e4c310b300906035504080c024e42
3110300e06035504070c0748656c6d6f6e6431133011060355040a0c0a76616e
64657273746f6b31143012060355040b0c0b636f6e73756c74616e6379311a30
1806035504030c117265676973747261722e73746f6b2e6e6c3059301306072a
8648ce3d020106082a8648ce3d03010703420004507ac8491a8c69c7b5c31d03
09ed35ba13f5884ce62b88cf3018154fa059b020ec6bebb94e02b8934021898d
a789c711cea71339f50e348edf0d923ed02dc7b7a3818d30818a301d0603551d
0e0416041408c2bf36887f79412185872f16a7aca6efb3d2b3301f0603551d23
04183016801408c2bf36887f79412185872f16a7aca6efb3d2b3300f0603551d
130101ff040530030101ff30270603551d250420301e06082b0601050507031c
06082b0601050507030106082b06010505070302300e0603551d0f0101ff0404
030201f6300a06082a8648ce3d04030203470030440220744c99008513b2f1bc
fdf9021a46fb174cf883a27ca1d93faeacf31e4edd12c60220114714dbf51a5e
78f581b9421c6e4702ab537270c5bafb2d16c3de9aa182c35f
<CODE ENDS>
]]></sourcecode>
        </section>
        <section anchor="masa-certificate">
          <name>MASA Certificate</name>
          <sourcecode><![CDATA[
<CODE BEGINS>
Certificate:
  Data:
      Version: 3 (0x2)
      Serial Number:
        14:26:b8:1c:ce:d8:c3:e8:14:05:cb:87:67:0d:be:ef:d5:81:25:b4
      Signature Algorithm: ecdsa-with-SHA256
      Issuer: C=NL, ST=NB, L=Helmond, O=vanderstok, 
          OU=manufacturer, CN=masa.stok.nl

      Validity
          Not Before: Dec  9 10:02:36 2020 GMT
          Not After : Sep  5 10:02:36 2023 GMT
      Subject: C=NL, ST=NB, L=Helmond, O=vanderstok, 
          OU=manufacturer, CN=masa.stok.nl
      Subject Public Key Info:
          Public Key Algorithm: id-ecPublicKey
              Public-Key: (256 bit)
              pub:
                  04:59:80:94:66:14:94:20:30:3c:66:08:85:55:86:
                  db:e7:d4:d1:d7:7a:d2:a3:1a:0c:73:6b:01:0d:02:
                  12:15:d6:1f:f3:6e:c8:d4:84:60:43:3b:21:c5:83:
                  80:1e:fc:e2:37:85:77:97:94:d4:aa:34:b5:b6:c6:
                  ed:f3:17:5c:f1
              ASN1 OID: prime256v1
              NIST CURVE: P-256
      X509v3 extensions:
          X509v3 Subject Key Identifier: 
    E4:03:93:B4:C3:D3:F4:2A:80:A4:77:18:F6:96:49:03:01:17:68:A3
          X509v3 Authority Key Identifier: 
              keyid:
     E4:03:93:B4:C3:D3:F4:2A:80:A4:77:18:F6:96:49:03:01:17:68:A3

          X509v3 Basic Constraints: critical
              CA:TRUE
          X509v3 Extended Key Usage: 
              CMC Registration Authority,
              TLS Web Server Authentication,
              TLS Web Client Authentication
          X509v3 Key Usage: critical
              Digital Signature, Non Repudiation, Key Encipherment, 
                    Data Encipherment, Certificate Sign, CRL Sign
  Signature Algorithm: ecdsa-with-SHA256
       30:44:02:20:2e:c5:f2:24:72:70:20:ea:6e:74:8b:13:93:67:
       8a:e6:fe:fb:8d:56:7f:f5:34:18:a9:ef:a5:0f:c3:99:ca:53:
       02:20:3d:dc:91:d0:e9:6a:69:20:01:fb:e4:20:40:de:7c:7d:
       98:ed:d8:84:53:61:84:a7:f9:13:06:4c:a9:b2:8f:5c
<CODE ENDS>
]]></sourcecode>
          <t>Below is the hexadecimal representation:</t>
          <sourcecode><![CDATA[
<CODE BEGINS>
3082026d30820214a00302010202141426b81cced8c3e81405cb87670dbeefd5
8125b4300a06082a8648ce3d040302306f310b3009060355040613024e4c310b
300906035504080c024e423110300e06035504070c0748656c6d6f6e64311330
11060355040a0c0a76616e64657273746f6b31153013060355040b0c0c6d616e
7566616374757265723115301306035504030c0c6d6173612e73746f6b2e6e6c
301e170d3230313230393130303233365a170d3233303930353130303233365a
306f310b3009060355040613024e4c310b300906035504080c024e423110300e
06035504070c0748656c6d6f6e6431133011060355040a0c0a76616e64657273
746f6b31153013060355040b0c0c6d616e756661637475726572311530130603
5504030c0c6d6173612e73746f6b2e6e6c3059301306072a8648ce3d02010608
2a8648ce3d0301070342000459809466149420303c6608855586dbe7d4d1d77a
d2a31a0c736b010d021215d61ff36ec8d48460433b21c583801efce237857797
94d4aa34b5b6c6edf3175cf1a3818d30818a301d0603551d0e04160414e40393
b4c3d3f42a80a47718f6964903011768a3301f0603551d23041830168014e403
93b4c3d3f42a80a47718f6964903011768a3300f0603551d130101ff04053003
0101ff30270603551d250420301e06082b0601050507031c06082b0601050507
030106082b06010505070302300e0603551d0f0101ff0404030201f6300a0608
2a8648ce3d040302034700304402202ec5f224727020ea6e748b1393678ae6fe
fb8d567ff53418a9efa50fc399ca5302203ddc91d0e96a692001fbe42040de7c
7d98edd884536184a7f913064ca9b28f5c
<CODE ENDS>
]]></sourcecode>
        </section>
      </section>
      <section anchor="cose-signed-pledge-voucher-request-pvr">
        <name>COSE-signed Pledge Voucher Request (PVR)</name>
        <t>In this COSE example the voucher request has been signed by the Pledge using the private key of <xref target="pledgepriv"/>, and has been sent to the link-local JRC (Registrar) over CoAPS.</t>
        <artwork><![CDATA[
    POST coaps://[JRC-link-local-address]/b/rv
    Content-Format: 836
    Payload: signed_request_voucher
]]></artwork>
        <t>The payload signed_request_voucher is shown as hexadecimal dump (with lf added):</t>
        <sourcecode><![CDATA[
<CODE BEGINS>
d28444a101382ea104582097113db094eee8eae48683e7337875c0372164
be89d023a5f3df52699c0fbfb55902d2a11909c5a60274323032302d3132
2d32335431323a30353a32325a0474323032322d31322d32335431323a30
353a32325a01020750684ca83e27230aff97630cf2c1ec409a0d6e706c65
6467652e312e322e332e340a590279308202753082021ca0030201020214
7056eaaa3066d8826a555b9088d462bf9cf28cfd300a06082a8648ce3d04
03023073310b3009060355040613024e4c310b300906035504080c024e42
3110300e06035504070c0748656c6d6f6e6431133011060355040a0c0a76
616e64657273746f6b31143012060355040b0c0b636f6e73756c74616e63
79311a301806035504030c117265676973747261722e73746f6b2e6e6c30
1e170d3230313230393130303233365a170d323131323039313030323336
5a3073310b3009060355040613024e4c310b300906035504080c024e4231
10300e06035504070c0748656c6d6f6e6431133011060355040a0c0a7661
6e64657273746f6b31143012060355040b0c0b636f6e73756c74616e6379
311a301806035504030c117265676973747261722e73746f6b2e6e6c3059
301306072a8648ce3d020106082a8648ce3d03010703420004507ac8491a
8c69c7b5c31d0309ed35ba13f5884ce62b88cf3018154fa059b020ec6beb
b94e02b8934021898da789c711cea71339f50e348edf0d923ed02dc7b7a3
818d30818a301d0603551d0e0416041408c2bf36887f79412185872f16a7
aca6efb3d2b3301f0603551d2304183016801408c2bf36887f7941218587
2f16a7aca6efb3d2b3300f0603551d130101ff040530030101ff30270603
551d250420301e06082b0601050507031c06082b0601050507030106082b
06010505070302300e0603551d0f0101ff0404030201f6300a06082a8648
ce3d04030203470030440220744c99008513b2f1bcfdf9021a46fb174cf8
83a27ca1d93faeacf31e4edd12c60220114714dbf51a5e78f581b9421c6e
4702ab537270c5bafb2d16c3de9aa182c35f58473045022063766c7bbd1b
339dbc398e764af3563e93b25a69104befe9aac2b3336b8f56e1022100cd
0419559ad960ccaed4dee3f436eca40b7570b25a52eb60332bc1f2991484
e9
<CODE ENDS>
]]></sourcecode>
        <t>The Pledge uses the "proximity" (SID 2502, enum 2) assertion together with an included proximity-registrar-cert field (SID 2511) to inform
MASA about its proximity to the specific Registrar.
The representiation of signed_voucher_request in CBOR diagnostic format is:</t>
        <sourcecode><![CDATA[
<CODE BEGINS>
Diagnose(signed_request_voucher) =
18([
h'A101382E',     / {"alg": -47} /
{4: h'97113DB094EEE8EAE48683E7337875C0372164B
      E89D023A5F3DF52699C0FBFB5'},
h'<request_voucher>',  / byte string as detailed below /
h'3045022063766C7BBD1B339DBC398E764AF3563E93B
25A69104BEFE9AAC2B3336B8F56E1022100CD0419559A
D960CCAED4DEE3F436ECA40B7570B25A52EB60332BC1F
2991484E9'
])

Diagnose(request_voucher) =
{2501: {2: "2020-12-23T12:05:22Z",
        4: "2022-12-23T12:05:22Z",
        1: 2,
        7: h'684CA83E27230AFF97630CF2C1EC409A',
        13: "pledge.1.2.3.4",
        10: h'<regis-cert-hex>' / byte string as defined in C.2.2 /
}}
<CODE ENDS>
]]></sourcecode>
      </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[
    POST https://masa.example.com/.well-known/brski/requestvoucher
    Content-Type: application/voucher-cose+cbor
    Accept: application/voucher-cose+cbor
    Body: signed_masa_request_voucher
]]></artwork>
        <t>The payload signed_masa_voucher_request is shown as hexadecimal dump (with lf added):</t>
        <sourcecode><![CDATA[
<CODE BEGINS>
d28444a101382ea1045820e8735bc4b470c3aa6a7aa9aa8ee584c09c1113
1b205efec5d0313bad84c5cd05590414a11909c5a60274323032302d3132
2d32385431303a30333a33355a0474323032322d31322d32385431303a30
333a33355a07501551631f6e0416bd162ba53ea00c2a050d6e706c656467
652e312e322e332e3405587131322d32385431303a30333a33355a075015
51631f6e0416bd162ba53ea00c2a050d6e706c656467652e312e322e332e
3405587131322d32385431303a300000000000000000000000000416bd16
2ba53ea00c2a050d6e706c656467652e312e322e332e3405587131322d32
385431303a09590349d28444a101382ea104582097113db094eee8eae486
83e7337875c0372164be89d023a5f3df52699c0fbfb55902d2a11909c5a6
0274323032302d31322d32385431303a30333a33355a0474323032322d31
322d32385431303a30333a33355a010207501551631f6e0416bd162ba53e
a00c2a050d6e706c656467652e312e322e332e340a590279308202753082
021ca00302010202147056eaaa3066d8826a555b9088d462bf9cf28cfd30
0a06082a8648ce3d0403023073310b3009060355040613024e4c310b3009
06035504080c024e423110300e06035504070c0748656c6d6f6e64311330
11060355040a0c0a76616e64657273746f6b31143012060355040b0c0b63
6f6e73756c74616e6379311a301806035504030c11726567697374726172
2e73746f6b2e6e6c301e170d3230313230393130303233365a170d323131
3230393130303233365a3073310b3009060355040613024e4c310b300906
035504080c024e423110300e06035504070c0748656c6d6f6e6431133011
060355040a0c0a76616e64657273746f6b31143012060355040b0c0b636f
6e73756c74616e6379311a301806035504030c117265676973747261722e
73746f6b2e6e6c3059301306072a8648ce3d020106082a8648ce3d030107
03420004507ac8491a8c69c7b5c31d0309ed35ba13f5884ce62b88cf3018
154fa059b020ec6bebb94e02b8934021898da789c711cea71339f50e348e
df0d923ed02dc7b7a3818d30818a301d0603551d0e0416041408c2bf3688
7f79412185872f16a7aca6efb3d2b3301f0603551d2304183016801408c2
bf36887f79412185872f16a7aca6efb3d2b3300f0603551d130101ff0405
30030101ff30270603551d250420301e06082b0601050507031c06082b06
01050507030106082b06010505070302300e0603551d0f0101ff04040302
01f6300a06082a8648ce3d04030203470030440220744c99008513b2f1bc
fdf9021a46fb174cf883a27ca1d93faeacf31e4edd12c60220114714dbf5
1a5e78f581b9421c6e4702ab537270c5bafb2d16c3de9aa182c35f584730
45022063766c7bbd1b339dbc398e764af3563e93b25a69104befe9aac2b3
336b8f56e1022100cd0419559ad960ccaed4dee3f436eca40b7570b25a52
eb60332bc1f2991484e958473045022100e6b45558c1b806bba23f4ac626
c9bdb6fd354ef4330d8dfb7c529f29cca934c802203c1f2ccbbac89733d1
7ee7775bc2654c5f1cc96afba2741cc31532444aa8fed8
<CODE ENDS>
]]></sourcecode>
        <t>The representiation of signed_masa_voucher_request in CBOR diagnostic format is:</t>
        <sourcecode><![CDATA[
<CODE BEGINS>
Diagnose(signed_registrar_request-voucher)
18([
h'A101382E',     / {"alg": -47} /
h'E8735BC4B470C3AA6A7AA9AA8EE584C09C11131B205EFEC5D0313BAD84
C5CD05'},
h'<registrar_request_voucher>', / byte string as detailed below /
h'3045022100E6B45558C1B806BBA23F4AC626C9BDB6FD354EF4330D8DFB
7C529F29CCA934C802203C1F2CCBBAC89733D17EE7775BC2654C5F1CC96A
FBA2741CC31532444AA8FED8'
])

Diagnose(registrar_request_voucher)
{2501:
    {2: "2020-12-28T10:03:35Z",
     4: "2022-12-28T10:03:35Z",
     7: h'1551631F6E0416BD162BA53EA00C2A05',
    13: "pledge.1.2.3.4",
     5: h'31322D32385431303A30333A33355A07501551631F6E0416BD
          162BA53EA00C2A050D6E706C656467652E312E322E332E3405
          587131322D32385431303A3000000000000000000000000004
          16BD162BA53EA00C2A050D6E706C656467652E312E322E332E
          3405587131322D32385431303A', / idevid-issuer /
     9: h'<prior-pvr>'  / prior-signed-voucher-request = PVR /
     }
}
<CODE ENDS>
]]></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 via the JRC to the
Pledge.  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><![CDATA[
<CODE BEGINS>
d28444a101382ea104582039920a34ee92d3148ab3a729f58611193270c9
029f7784daf112614b19445d5158cfa1190993a70274323032302d31322d
32335431353a30333a31325a0474323032302d31322d32335431353a3233
3a31325a010007506508e06b2959d5089d7a3169ea889a490b6e706c6564
67652e312e322e332e340858753073310b3009060355040613024e4c310b
300906035504080c024e423110300e06035504070c0748656c6d6f6e6431
133011060355040a0c0a76616e64657273746f6b31143012060355040b0c
0b636f6e73756c74616e6379311a301806035504030c1172656769737472
61722e73746f6b2e6e6c03f458473045022022515d96cd12224ee5d3ac67
3237163bba24ad84815699285d9618f463ee73fa022100a6bff9d8585c1c
9256371ece94da3d26264a5dfec0a354fe7b3aef58344c512f
<CODE ENDS>
]]></sourcecode>
        <t>The representiation of signed_voucher in CBOR diagnostic format is:</t>
        <sourcecode><![CDATA[
<CODE BEGINS>
Diagnose(signed_voucher) =
18([
h'A101382E',     / {"alg": -47} /
{4: h'39920A34EE92D3148AB3A729F58611193270C9029F7784DAF112614B194
45D51'},
h'<voucher>',    / byte string as detailed below /
h'3045022022515D96CD12224EE5D3AC673237163BBA24AD84815699285D9618F
463EE73FA022100A6BFF9D8585C1C9256371ECE94DA3D26264A5DFEC0A354FE7B
3AEF58344C512F'
])

Diagnose(voucher) = 
{2451: 
   {2: "2020-12-23T15:03:12Z",
    4: "2020-12-23T15:23:12Z",
    1: 0, 
    7: h'6508E06B2959D5089D7A3169EA889A49',
   11: "pledge.1.2.3.4", 
    8: h'<regis-cert-hex>', / as detailed in C.2.2 /
    3: false}
}
<CODE ENDS>
]]></sourcecode>
        <t>In above, regis-cert-hex represents the hexadecimal encoding of the Registrar certificate of <xref target="jrccert"/>.</t>
      </section>
    </section>
    <section anchor="appendix-gencerts">
      <name>Generating Certificates with OpenSSL</name>
      <t>This informative appendix shows an example of a Bash shell script to generate test certificates for the Pledge IDevID, the Registrar and the MASA.
This shell script cannot be run stand-alone because it depends on particular input files which are not included in this appendix. Nevertheless,
this example script may provide guidance on how OpenSSL can be configured for generating Constrained BRSKI certificates.</t>
      <t>Note: the *-comb.crt certificate files combine the certificate with the private key. These are generated to be used by libcoap for DTLS connection establishment.</t>
      <sourcecode><![CDATA[
<CODE BEGINS>
#!/bin/bash
#try-cert.sh
export dir=./brski/intermediate
export cadir=./brski
export cnfdir=./conf
export format=pem
export default_crl_days=30
sn=8

DevID=pledge.1.2.3.4
serialNumber="serialNumber=$DevID"
export hwType=1.3.6.1.4.1.6715.10.1
export hwSerialNum=01020304 # Some hex
export subjectAltName="otherName:1.3.6.1.5.5.7.8.4;SEQ:hmodname"
echo  $hwType - $hwSerialNum
echo $serialNumber
OPENSSL_BIN="openssl"

# remove all files
rm -r ./brski/*
#
# initialize file structure
# root level
cd $cadir
mkdir certs crl csr newcerts private
chmod 700 private
touch index.txt
touch serial
echo 11223344556600 >serial
echo 1000 > crlnumber
# intermediate level
mkdir intermediate
cd intermediate
mkdir certs crl csr newcerts private
chmod 700 private
touch index.txt
echo 11223344556600 >serial
echo 1000 > crlnumber
cd ../..



# file structure is cleaned start filling

echo "#############################"
echo "create registrar keys and certificates "
echo "#############################"


echo "create root registrar certificate using ecdsa with sha 256 key"
$OPENSSL_BIN ecparam -name prime256v1 -genkey \
   -noout -out $cadir/private/ca-regis.key

$OPENSSL_BIN req -new -x509 \
 -config $cnfdir/openssl-regis.cnf \
 -key $cadir/private/ca-regis.key \
 -out $cadir/certs/ca-regis.crt \
 -extensions v3_ca\
 -days 365 \
 -subj "/C=NL/ST=NB/L=Helmond/O=vanderstok/OU=consultancy \
/CN=registrar.stok.nl"

# Combine authority certificate and key
echo "Combine authority certificate and key"
$OPENSSL_BIN pkcs12 -passin pass:watnietWT -passout pass:watnietWT\
   -inkey $cadir/private/ca-regis.key \
   -in $cadir/certs/ca-regis.crt -export \
   -out $cadir/certs/ca-regis-comb.pfx

# converteer authority pkcs12 file to pem
echo "converteer authority pkcs12 file to pem"
$OPENSSL_BIN pkcs12 -passin pass:watnietWT -passout pass:watnietWT\
   -in $cadir/certs/ca-regis-comb.pfx \
   -out $cadir/certs/ca-regis-comb.crt -nodes

#show certificate in registrar combined certificate
$OPENSSL_BIN  x509 -in $cadir/certs/ca-regis-comb.crt -text

#
# Certificate Authority for MASA
#
echo "#############################"
echo "create MASA keys and certificates "
echo "#############################"

echo "create root MASA certificate using ecdsa with sha 256 key"
$OPENSSL_BIN ecparam -name prime256v1 -genkey -noout \
   -out $cadir/private/ca-masa.key

$OPENSSL_BIN req -new -x509 \
 -config $cnfdir/openssl-masa.cnf \
 -days 1000 -key $cadir/private/ca-masa.key \
  -out $cadir/certs/ca-masa.crt \
 -extensions v3_ca\
 -subj "/C=NL/ST=NB/L=Helmond/O=vanderstok/OU=manufacturer\
/CN=masa.stok.nl"

# Combine authority certificate and key
echo "Combine authority certificate and key for masa"
$OPENSSL_BIN pkcs12 -passin pass:watnietWT -passout pass:watnietWT\
   -inkey $cadir/private/ca-masa.key \
   -in $cadir/certs/ca-masa.crt -export \
   -out $cadir/certs/ca-masa-comb.pfx

# converteer authority pkcs12 file to pem for masa
echo "converteer authority pkcs12 file to pem for masa"
$OPENSSL_BIN pkcs12 -passin pass:watnietWT -passout pass:watnietWT\
   -in $cadir/certs/ca-masa-comb.pfx \
   -out $cadir/certs/ca-masa-comb.crt -nodes

#show certificate in pledge combined certificate
$OPENSSL_BIN  x509 -in $cadir/certs/ca-masa-comb.crt -text


#
# Certificate for Pledge derived from MASA certificate
#
echo "#############################"
echo "create pledge keys and certificates "
echo "#############################"


# Pledge derived Certificate

echo "create pledge derived certificate using ecdsa with sha 256 key"
$OPENSSL_BIN ecparam -name prime256v1 -genkey -noout \
   -out $dir/private/pledge.key

echo "create pledge certificate request"
$OPENSSL_BIN req -nodes -new -sha256 \
   -key $dir/private/pledge.key -out $dir/csr/pledge.csr \
  -subj "/C=NL/ST=NB/L=Helmond/O=vanderstok/OU=manufacturing\
 /CN=uuid:$DevID/$serialNumber"

# Sign pledge derived Certificate
echo "sign pledge derived certificate "
$OPENSSL_BIN ca -config $cnfdir/openssl-pledge.cnf \
 -extensions 8021ar_idevid\
 -days 365 -in $dir/csr/pledge.csr \
 -out $dir/certs/pledge.crt 

# Add pledge key and pledge certificate to pkcs12 file
echo "Add derived pledge key and derived pledge \
 certificate to pkcs12 file"
$OPENSSL_BIN pkcs12  -passin pass:watnietWT -passout pass:watnietWT\
   -inkey $dir/private/pledge.key \
   -in $dir/certs/pledge.crt -export \
   -out $dir/certs/pledge-comb.pfx

# converteer pledge pkcs12 file to pem
echo "converteer pledge pkcs12 file to pem"
$OPENSSL_BIN pkcs12 -passin pass:watnietWT -passout pass:watnietWT\
   -in $dir/certs/pledge-comb.pfx \
   -out $dir/certs/pledge-comb.crt -nodes

#show certificate in pledge-comb.crt
$OPENSSL_BIN  x509 -in $dir/certs/pledge-comb.crt -text

#show private key in pledge-comb.crt
$OPENSSL_BIN ecparam -name prime256v1\
  -in $dir/certs/pledge-comb.crt -text

<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="minimal-pledge">
        <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>No support for EST re-enrollment: whenever this would be needed, a factory reset followed by a new bootstrap process is required.</li>
          <li>No support for change of Registrar: for this case, a factory reset followed by a new bootstrap process is required.</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="typical-pledge">
        <name>Typical Pledge</name>
        <t>The Typical Pledge profile (Typ) aims to support a typical Constrained BRSKI feature set including EST re-enrollment support and Registrar changes.</t>
      </section>
      <section anchor="full-featured-pledge">
        <name>Full-featured Pledge</name>
        <t>The Full-featured Pledge profile (Full) illustrates a Pledge category that supports multiple bootstrap 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, Typ and Full.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Function |====================| Profiles -&gt;</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 Constrained BRSKI bootstrap</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">Support other bootstrap 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>Constrained BRSKI</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>Constrained EST</strong></td>
              <td align="center">===</td>
              <td align="center">===</td>
              <td align="center">====</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 281 (multiple CA certs)</td>
              <td align="center">-</td>
              <td align="center">-</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">GET /crts only format TBD287 (one CA cert only)</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
              <td align="center">-</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">- (1)</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 cert re-enrollment at own initiative</td>
              <td align="center">N/A</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">- (1)</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">- (1)</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
            </tr>
          </tbody>
        </table>
        <t>Notes: (1) is possible only by doing a factory-reset followed by a new bootstrap procedure.</t>
      </section>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="R." surname="Housley" fullname="Russ Housley">
        <organization/>
        <address>
          <email>housley@vigilsec.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAH9/zGIAA9y9/Xbc1rEv+D/X0jvg0msiMulufoiSJfokJzRF2YwlkYek
7JyV5Gqhu0ESYTfQB0CTYmTdZ5lnmSeb+t61ATQlO5kzd4ZeyyK7gf1Zu3Z9
/KpqOBw+WmvyZpbtJ4dlUTdVmhfZNPm2LBv8Y7HIi6vkLJuXTZacZ5NllSU/
ZPfJcXFZpfDActLgRxvfnp3/cLz5aC0dj6vsttUWfvdobVpOinQO/Uyr9LIZ
5llzOUyLfJ4OJ+Hh4W25nFxn1XDn+aO1R2t1kxbT9+msLOA96C3DD/NFRX/U
ze729ovtXei1ytJ9GFOTVUXWPFq7u9pPqOnkp7K6wRl8V5XLxaO1m7vw2PAl
juPR2iRt9pO6mcJvMI6sqJe19rVcTNMmgz+fP3n2bJA8f/HiKQ5gke8n8PNV
MkmLZFlnSVpV6X2ykV8m6WyW3Gf1ZlJWyXVaXycwF2goSZpyso/f4O91WTVV
dlnvUyPT7DJdzpoaHrEH7uf8Pf0N81s212W1j78Ok7yAL96MkrN8cp1W07os
8BVe2jf4WTZrfVdWsB7nsJLZbA4jPi8vmztYMloc6i+bp/lsP5lPqt/htvyx
1mdHk9R1ejpKbuH9aVYl5015E7o9zWBJO99Rt7fYVFXDRwkuL0w0LSb3rlP8
Cr/543h8jZ+Milnc5Q/pfJEW6U1euw7Toqxb31B3h3k9KZPz+7rJ5n5qixt+
9o8TfGA0Keeuk6NR8jL/u5vPUX1T2kfU7nF54YZPY7S2M3h6NIWn/5iXTfsp
oqqmysfLhnYwSYbSydmyrpPvy2U9y2g9rL1r/uyPt/lVPquziY62KKt52uS3
GTTzVZKcvTrc3dl5QW3C70+ePX+uv+/tvHhiv+/ubOvvT3efh9+fPd3V359t
726H3589s993dp/q71/vPrVnvn4RfsejYb/v7YXfn4V+n7/YexF+f2Ftvth+
sgNkl+NRnQ1rZC95cx++3OWZHg9fjohdTMoqG5bjv2eTxp5uPZJOsuFkXFbD
u2w8BNLKCuosbuI+La7oqZ7v6nza/rTOhtXl5PnO091xXg+Z6z38TDq7qm2S
O3vPe57+8HT7RfxxM6uHU/jfDu9dnmXZ8+3d4c7B2T7TR5NWVxkwq/Xrplns
b20Rd8RjPsJnR0CoW5d5MQVeVtt3W9DECJoYIq8cXTfz2bo0xkx//fjo6CiR
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
/wPfnPWAupIBAA==

-->

</rfc>
