<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 2.7.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-anima-constrained-voucher-19" category="std" consensus="true" updates="8366, 8995" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.3 -->
  <front>
    <title abbrev="Constrained BRSKI">Constrained Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-anima-constrained-voucher-19"/>
    <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="2023" month="January" day="02"/>
    <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.
This document Updates RFC 8366 and RFC 8995.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-anima-constrained-voucher/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        anima Working Group mailing list (<eref target="mailto:anima@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/anima/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/anima/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/anima-wg/constrained-voucher"/>.</t>
    </note>
  </front>
  <middle>
    <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="RFC9052"/>.</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="RFC9254"/> 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"/> defines a voucher that can assert proximity, authenticates the Registrar, and can offer varying levels of anti-replay protection.
The proximity proof provided by a voucher is an assertion that the Pledge and the Registrar are believed to be close together, from a network topology point of view.
Similar to BRSKI <xref target="RFC8995"/>, proximity is proven by making a DTLS connection between a Pledge and a Registrar. 
The Pledge initiates this connection using a link-local source address.</t>
      <t>The secure DTLS connection is then used by the Pledge to make a Pledge Voucher Request (PVR). The Registrar then includes the PVR into its own 
Registrar Voucher Request (RVR), sent to an agent (MASA) of the Pledge's manufacturer. The MASA verifies the PVR and RVR and issues a signed voucher.
The voucher provides an authorization statement from the manufacturer indicating that the Registrar is the intended owner of the Pledge.
The voucher refers to the Registrar through pinning of the Registrar's identity.</t>
      <t>After verification of the voucher, the Pledge enrolls into the Registrar's domain by obtaining a certificate using the EST-coaps <xref target="RFC9148"/> protocol, suitable for 
constrained devices. Once the Pledge has obtained its domain identity (LDevID) in this manner, it can use this identity to obtain network access credentials,<br/>
to join the local IP network. The method to obtain such credentials depends on the particular network technology used and is outside the scope of this document.</t>
      <t>This document does not make any extensions to the semantic meaning of vouchers, only the encoding has been changed to optimize for constrained devices and networks.</t>
      <t>The two main parts of the BRSKI protocol are named separately in this document: BRSKI-EST 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. This also holds for the most constrained types of Pledges that 
are unable to perform certain PKIX operations (such as certificate chain validation). These types of Pledge still contain an IDevID 
identity that is used for authentication. See <xref target="rpk-considerations"/> for additional details on PKIX-less operations.</t>
      <t>The constrained voucher MUST be signed by the MASA.</t>
      <t>For the constrained voucher request (PVR) this document defines two distinct methods for the Pledge to identify the Registrar: using either the 
Registrar's full PKIX certificate, or using a Raw Public Key (RPK). The method depends on which type of Registrar identity is 
obtained by the Pledge during the DTLS handshake process. Normally, the Pledge obtains the PKIX certificate. But when operating PKIX-less 
as described in <xref target="rpk-considerations"/>, the Registrar's RPK is obtained.</t>
      <t>For the constrained voucher also both methods are supported to indicate (pin) a trusted domain identity: using either a pinned domain PKIX certificate, 
or a pinned RPK.</t>
      <t>The BRSKI architectures mandates that the MASA be aware of the capabilities of the Pledge.
This is not a drawback as a Pledges is constructed by a manufacturer which also arranges for the MASA to be aware of the inventory of devices.
The MASA therefore knows if the Pledge supports PKIX operations, or if it is limited to Raw Public Key (RPK) operations only.
Based upon this, the MASA can select which attributes to use in the voucher for certain operations, like the pinning of the Registrar identity.</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 a 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>clarifies 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="brski-est-dtls">
        <name>DTLS Connection</name>
        <t>A DTLS connection is established between the Pledge and the Registrar, similar to the TLS connection
described in <xref section="5.1" sectionFormat="of" target="RFC8995"/>. This may occur via a Join Proxy as described in <xref target="joinproxy"/>.
Regardless of the Join Proxy presence or particular mechanism used, the DTLS connection should operate identically.
The Constrained BRSKI and EST-coaps requests and responses for bootstrapping are carried over this DTLS connection.</t>
        <section anchor="dtls-version">
          <name>DTLS Version</name>
          <t>DTLS version 1.3 <xref target="RFC9147"/> SHOULD be used in any implementation of this specification. An exception case where DTLS 1.2 <xref target="RFC6347"/> MAY 
be used is in a Pledge that uses a software platform where DTLS 1.3 is not available (yet). This may occur for example if a legacy 
device gets software-upgraded to support Constrained BRSKI. For this reason, a Registrar MUST by default support both DTLS 1.3 and DTLS 1.2 
client connections. However, for security reasons the Registrar MAY be administratively configured to support only a particular DTLS version or higher.</t>
          <t>An EST-coaps server <xref target="RFC9148"/> that implements this specification also MUST support both DTLS 1.3 and DTLS 1.2 client connections by default.
However, for security reasons the EST-coaps server MAY be administratively configured to support only a particular DTLS version or higher.</t>
        </section>
        <section anchor="tls-client-certificates-idevid-authentication">
          <name>TLS Client Certificates: IDevID authentication</name>
          <t>As described in <xref section="5.1" sectionFormat="of" target="RFC8995"/>, the Pledge makes a connection to the Registrar using a TLS Client Certificate for authentication.
This is the Pledge's IDevID certificate.</t>
          <t>Subsequently the Pledge will send a Pledge Voucher Request (PVR). Further elements of Pledge authentication may be present in the PVR, 
as detailed in <xref target="VR-COSE"/>.</t>
        </section>
        <section anchor="dtls-fragments">
          <name>DTLS Handshake Fragmentation Considerations</name>
          <t>DTLS includes a mechanism to fragment handshake messages. This is described in <xref section="4.4" sectionFormat="of" target="RFC9147"/>.
Constrained BRSKI will often be used with a Join Proxy, described in <xref target="I-D.ietf-anima-constrained-join-proxy"/>, which relays each DTLS message to the Registrar.
A stateless Join Proxy will need some additional space to wrap each DTLS message inside a CoAP request, while the wrapped result needs to fit in the maximum packet 
sized guaranteed on 6LoWPAN networks, which is 1280 bytes.</t>
          <t>For this reason it is RECOMMENDED that a PMTU of 1024 bytes be assumed for the DTLS handshake and appropriate DTLS fragmentation is used.
It is unlikely that any Packet Too Big indications <xref target="RFC4443"/> will be relayed by the Join Proxy back to the Pledge.</t>
          <t>During the operation of the 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 anchor="sni">
          <name>Registrar and the Server Name Indicator (SNI)</name>
          <t>The SNI issue described below affects <xref target="RFC8995"/> as well, and is reported in errata: https://www.rfc-editor.org/errata/eid6648</t>
          <t>As the Registrar is discovered by IP address, and typically connected via a Join Proxy, the name of the Registrar is not known to the Pledge.
The Pledge will not know what the hostname for the Registrar is, so it cannot do DNS-ID validation (<xref target="I-D.ietf-uta-rfc6125bis"/>) on the Registrar's certificate.
Instead, it must do validation using the voucher.</t>
          <t>As the Pledge does not know the name of the Registrar, the Pledge cannot put any reasonable value into the <xref target="RFC6066"/> Server Name Indicator (SNI).
Threfore the Pledge SHOULD omit the SNI extension as per <xref section="9.2" sectionFormat="of" target="RFC8446"/>.</t>
          <t>In some cases, particularly while testing BRSKI, a Pledge may be given the hostname of a particular Registrar to connect to directly.
Such a bypass of the discovery process may result in the Pledge taking a different code branch to establish a DTLS connection, and may result in the SNI being inserted by a library.
The Registrar MUST ignore any SNI 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.
See <xref target="cosesign-registrar-cert"/> for an example of a Registrar certificate with these EKUs set.</t>
        </section>
      </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 resource discovery by the EST client.</t>
        <artwork><![CDATA[
  coaps://estserver.example.com/est/<short-name>
  coaps://estserver.example.com/e/<short-name>
  coaps://estserver.example.com/.well-known/est/<short-name>
]]></artwork>
        <t>Similarly the constrained BRSKI Registrar URIs differ from the RFC 8995 BRSKI URIs by replacing the scheme https by coaps and by specifying shorter resource path names. Below are some examples;
the first two are using a discovered short path name and the last one is using the well-known URI prefix which requires no resource discovery by the Pledge.
This is the same "/.well-known/brski" prefix as defined in <xref section="5" sectionFormat="of" target="RFC8995"/>.</t>
        <artwork><![CDATA[
  coaps://registrar.example.com/brski/<short-name>
  coaps://registrar.example.com/b/<short-name>
  coaps://registrar.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 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 section="4" sectionFormat="of" target="RFC6690"/> by sending a discovery query to the Registrar over the secured DTLS connection.</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, 
a CoAP resource discovery request and response may look as follows:</t>
        <artwork><![CDATA[
  REQ: GET /.well-known/core?rt=brski*

  RES: 2.05 Content
  Content-Format: 40
  Payload:
  </b>;rt=brski,
  </b/rv>;rt=brski.rv;ct=836,
  </b/vs>;rt=brski.vs;ct="50 60",
  </b/es>;rt=brski.es;ct="50 60"
]]></artwork>
        <t>The Registrar is under no obligation to provide shorter URLs, and MAY respond to this query with only the "/.well-known/brski/&lt;short-name&gt;" resources for the short names as defined in 
<xref target="brski-short-uri"/>.</t>
        <t>When responding to a discovery request for BRSKI resources, the Registrar 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 Registrar.</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 (e.g. well-known) and shorter URLs in any combination.</t>
        <t>In case the client queries for only rt=brski type resources, the Registrar responds with only the root path for the BRSKI resources (rt=brski, resource /b in above example) and no others.
(So, a query for rt=brski, without the wildcard character.) This is shown in the below example. The Pledge requests only the BRSKI root resource of type rt=brski to check if short names 
are supported or not. In this case, the Pledge is not interested to check what voucher request formats, or status telemetry formats -- other than the mandatory default formats -- are 
supported. The compact response then shows that the Registrar indeed supports a short-name BRSKI resource at /b:</t>
        <artwork><![CDATA[
  REQ: GET /.well-known/core?rt=brski

  RES: 2.05 Content
  Content-Format: 40
  Payload:
  </b>;rt=brski
]]></artwork>
        <t>In above example, the well-known resource present under /.well-known/brski is not returned because this is assumed to be well-known to the Pledge and would not require discovery anyway. 
Effectively, the client is guided to preferably use the short names under resource /b instead.</t>
        <t>Without discovery, a Pledge can only use the longer well-known URI for its voucher request, 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 for a particular operation, and allows extension with new voucher (request) formats.
Note that only Content-Format 836 ("application/voucher-cose+cbor") is defined in this document for the voucher request resource (/rv).</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 format 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 format 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="telemetry">
          <name>RFC8995 Telemetry Returns</name>
          <t><xref target="RFC8995"/> defines two telemetry returns from the Pledge which are sent to the Registrar.
These are the BRSKI Status Telemetry <xref section="5.7" sectionFormat="comma" target="RFC8995"/> and the Enrollment Status Telemetry <xref section="5.9.4" sectionFormat="comma" target="RFC8995"/>.
These are two 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 287 ("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 287 ("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-coaps server 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-coaps 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 EST-coaps server:</t>
          <ol spacing="normal" type="1"><li>The client connects with DTLS to the EST-coaps server, and authenticates with its present domain certificate (LDevID certificate) as usual. The EST-coaps server 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 server 
decides to re-enroll the client into a new domain. The client also checks that the server is a Registration Authority (RA) of the domain as required by <xref section="3.6.1" sectionFormat="of" target="RFC7030"/>.</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 MUST attempt to report the error to the EST-coaps server 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>
          <t>Note that an EST-coaps server that is also a Registrar will already support the enrollment status telemetry resource (/es) in step 4, while an EST-coaps server that purely implements <xref target="RFC9148"/>, and not the present specification, will not support this resource.</t>
        </section>
        <section anchor="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 287 ("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 287 ("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 287 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>
    <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 DNS-ID checks (<xref target="I-D.ietf-uta-rfc6125bis"/>) 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 a 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 certificate operations, 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"/> and <xref target="rpk-considerations"/>. 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 (RPK) 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="example-pvr">
          <name>Example Pledge voucher request (PVR) artifact</name>
          <t>Below, an example constrained voucher request (PVR) from a Pledge to a Registrar is shown in CBOR diagnostic notation. 
Long CBOR byte strings have been shortened (with "....") for readability. The enum value of the assertion field is calculated 
to be 2 for the "proximity" assertion by following the algorithm described in section 9.6.4.2 of <xref target="RFC7950"/>. For reference, <xref target="request-sid-values"/> shows a 
table with all currently defined assertion values.</t>
          <artwork><![CDATA[
{ 
 2501: {      / SID=2501, ietf-voucher-request-constrained:voucher /
    1: 2,                     / SID=2502, assertion 2 = "proximity"/
    7: h'831D5198A6CA2C7F',   / SID=2508, nonce                    /
   12: h'30593013....D29A54', / SID=2513, proximity-registrar-pubk /    
   13: "JADA123456789"        / SID=2514, serial-number            /
 }
}

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

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

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

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

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

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

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

  RES: 2.05 Content
  <coaps://[fe80::d359:3813:f382:3b23]:63245>;rt="brski.jp"
]]></artwork>
        </section>
      </section>
      <section anchor="discovery-operations-by-join-proxy">
        <name>Discovery operations by Join Proxy</name>
        <t>The Join Proxy needs to discover a Registrar, at the moment it needs to relay data towards the Registrar or prior to that moment.</t>
        <section anchor="graspregistrardiscovery">
          <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 Unique Local Address (ULA) as in the example, but could also be a Global Unicast Address (GUA).</t>
        </section>
        <section anchor="coap-disc">
          <name>CoAP discovery</name>
          <t>Further details on CoAP discovery of the Registrar by a Join Proxy are provided in <xref section="5.1.1" sectionFormat="of" target="I-D.ietf-anima-constrained-join-proxy"/>.</t>
        </section>
      </section>
    </section>
    <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>
    <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 data volume and complexity of the BRSKI bootstrap.
The use of a raw public key (RPK) in the pinning process can significantly reduce the number of bytes sent over the wire and round trips, and reduce the code footprint in a Pledge, 
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 normally provides its public key in a TLSServerCertificate, and the Pledge uses that to validate that integrity of the (D)TLS connection, but it does not validate the identity of
the provided certificate.</t>
        <t>As the TLSServerCertificate object is never verified directly by the Pledge, sending it can be considered superfluous.
So instead of using a (TLSServer)Certificate of type X509 (see section 4.4.2 of <xref target="RFC8446"/>),
a RawPublicKey object (as defined by <xref target="RFC7250"/>) is used.</t>
        <t>A Registrar operating in a mixed environment can determine whether to send a Certificate or a Raw Public Key to the Pledge: this is signaled by the Pledge. In the case it needs an RPK, it 
includes the server_certificate_type of RawPublicKey. This is shown in section 5 of <xref target="RFC7250"/>.</t>
        <t>The Pledge always sends a client_certificate_type of X509 (not an RPK), so that the Registrar can properly identify the Pledge and distill the MASA URI information from its IDevID certificate.</t>
      </section>
      <section anchor="the-pledge-voucher-request">
        <name>The Pledge Voucher Request</name>
        <t>The Pledge puts the Registrar's public key into the proximity-registrar-pubk field of the Pledge Voucher Request (PVR).
(The proximity-registrar-pubk-sha256 can also be used for efficiency, if the 32-bytes of a SHA256 hash turns out to be smaller than a typical ECDSA key.)</t>
        <t>As the format of this pubk field is identical to the TLS RawPublicKey data object, no manipulation at all is needed to insert this into the PVR.</t>
      </section>
      <section anchor="the-voucher-response">
        <name>The Voucher Response</name>
        <t>A returned voucher will have a pinned-domain-pubk field with the identical key as was found in the proximity-registrar-pubk field above, as well as being identical to the 
Registrar's RPK in the currently active DTLS connection.</t>
        <t>Validation of this key by the Pledge is what takes the DTLS connection out of the provisional state; see <xref section="5.6.2" sectionFormat="of" target="RFC8995"/> for more details.</t>
        <t>The voucher needs to be validated first by the Pledge.
The Pledge needs to have a public key to validate the signature from the MASA on the voucher.</t>
        <t>The MASA's public key counterpart of the (private) MASA signing key MUST be already installed in the Pledge at manufacturing time. Otherwise, the Pledge 
cannot validate the voucher's signature.</t>
      </section>
    </section>
    <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 regular long <xref target="RFC8995"/> resource names are used, together with the new "application/voucher-cose+cbor" media type described in this document.
For status telemetry requests, the Pledge may use either one or both of the formats defined in <xref target="telemetry"/>. A Registrar MUST support both formats.</t>
      <t>Other combinations are possible, but they are not enumerated here.
New work such as <xref target="I-D.ietf-anima-jws-voucher"/> provides new formats that may be useable over a number of different transports.
In general, sending larger payloads over constrained networks makes less sense,
while sending smaller payloads over unconstrained networks is perfectly acceptable.</t>
      <t>The Pledge will in most cases support a single voucher format, which it uses without negotiation i.e. without discovery of formats supported.
The Registrar, being unconstrained, is expected to support all voucher formats.
There will be cases where a Registrar does not support a new format that a new Pledge uses, and this is an unfortunate situation that will result in lack of interoperation.</t>
      <t>The responsability for supporting new formats is on the Registrar.</t>
    </section>
    <section 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="grasp-discovery-registry">
        <name>GRASP Discovery Registry</name>
        <t>IANA is asked to extend the registration of the "AN_Proxy" (without quotes) in the "GRASP Objective Names" table in the Grasp Parameter registry.
This document should also be cited for this existing registration, because <xref target="grasppledgediscovery"/> defines the new protocol value IPPROTO_UDP for the objective.</t>
        <t>IANA is asked to extend the registration of the "AN_join_registrar" (without quotes) in the "GRASP Objective Names" table in the Grasp Parameter registry.
This document should also be cited for this existing registration, because <xref target="graspregistrardiscovery"/> adds the objective value "BRSKI_JP" to the objective.</t>
      </section>
      <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="RFC9052"/>.</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   <contact initials="J." surname="Schaad" fullname="Jim Schaad"/>
 for explaining COSE/CMS choices and for correcting early versions of the COSE_Sign1 objects. 
</t>
      <t>
  <contact initials="M." surname="Veillette" fullname="Michel Veillette"/>
 did extensive work on _pyang_ to extend it to support the SID allocation process, and this document was among its first users. 
</t>
      <t>
  <contact initials="R." surname="Housley" fullname="Russ Housley"/>
,   <contact initials="D." surname="Franke" fullname="Daniel Franke"/>
 and   <contact initials="H." surname="Birkholtz" fullname="Henk Birkholtz"/>
 provided review feedback. 
</t>
      <t>
The BRSKI design team has met on many Tuesdays and Thursdays for document review. The team includes:   <contact initials="A." surname="Schellenbaum" fullname="Aurelio Schellenbaum"/>
,   <contact initials="D." surname="von Oheimb" fullname="David von Oheimb"/>
,   <contact initials="S." surname="Fries" fullname="Steffen Fries"/>
,   <contact initials="T." surname="Werner" fullname="Thomas Werner"/>
 and   <contact initials="T." surname="Eckert" fullname="Toerless Eckert"/>
.
</t>
    </section>
    <section anchor="changelog">
      <name>Changelog</name>
      <t>-11 to -19
    (For change details see GitHub issues https://github.com/anima-wg/constrained-voucher/issues and related Pull Requests.)</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="RFC6347" target="https://www.rfc-editor.org/info/rfc6347">
          <front>
            <title>Datagram Transport Layer Security Version 1.2</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu">
              <organization/>
            </author>
            <date month="January" year="2012"/>
            <abstract>
              <t>This document specifies version 1.2 of the Datagram Transport Layer Security (DTLS) protocol.  The DTLS protocol provides communications privacy for datagram protocols.  The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.  The DTLS protocol is based on the Transport Layer Security (TLS) protocol and provides equivalent security guarantees.  Datagram semantics of the underlying transport are preserved by the DTLS protocol.  This document updates DTLS 1.0 to work with TLS version 1.2.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6347"/>
          <seriesInfo name="DOI" value="10.17487/RFC6347"/>
        </reference>
        <reference anchor="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="RFC9052" target="https://www.rfc-editor.org/info/rfc9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad">
              <organization/>
            </author>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size.  There is a need to be able to define basic security services for this data format.  This document defines the CBOR Object Signing and Encryption (COSE) protocol.  This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization.  This specification additionally describes how to represent cryptographic keys using CBOR.  </t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9147" target="https://www.rfc-editor.org/info/rfc9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu">
              <organization/>
            </author>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability.  Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC9148" 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="RFC9254" target="https://www.rfc-editor.org/info/rfc9254">
          <front>
            <title>Encoding of Data Modeled with YANG in the Concise Binary Object Representation (CBOR)</title>
            <author fullname="M. Veillette" initials="M." role="editor" surname="Veillette">
              <organization/>
            </author>
            <author fullname="I. Petrov" initials="I." role="editor" surname="Petrov">
              <organization/>
            </author>
            <author fullname="A. Pelov" initials="A." surname="Pelov">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="M. Richardson" initials="M." surname="Richardson">
              <organization/>
            </author>
            <date month="July" year="2022"/>
            <abstract>
              <t>YANG (RFC 7950) is a data modeling language used to model configuration data, state data, parameters and results of Remote Procedure Call (RPC) operations or actions, and notifications.</t>
              <t>This document defines encoding rules for YANG in the Concise Binary Object Representation (CBOR) (RFC 8949).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9254"/>
          <seriesInfo name="DOI" value="10.17487/RFC9254"/>
        </reference>
        <reference anchor="I-D.ietf-core-sid" target="https://www.ietf.org/archive/id/draft-ietf-core-sid-19.txt">
          <front>
            <title>YANG Schema Item iDentifier (YANG SID)</title>
            <author fullname="Michel Veillette" initials="M." surname="Veillette">
              <organization>Trilliant Networks Inc.</organization>
            </author>
            <author fullname="Alexander Pelov" initials="A." surname="Pelov">
              <organization>Acklio</organization>
            </author>
            <author fullname="Ivaylo Petrov" initials="I." surname="Petrov">
              <organization>Google Switzerland GmbH</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="26" month="July" year="2022"/>
            <abstract>
              <t>   YANG Schema Item iDentifiers (YANG SID) are globally unique 63-bit
   unsigned integers used to identify YANG items, as a more compact
   method to identify YANG items that can be used for efficiency and in
   constrained environments (RFC 7228).  This document defines the
   semantics, the registration, and assignment processes of YANG SIDs
   for IETF managed YANG modules.  To enable the implementation of these
   processes, this document also defines a file format used to persist
   and publish assigned YANG SIDs.


   // The present version (-19) adds in draft text about objectives,
   // parties, and roles.  This attempts to record discussions at side
   // meetings before, at, and after IETF 113.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-sid-19"/>
        </reference>
        <reference anchor="I-D.ietf-cose-x509" target="https://www.ietf.org/archive/id/draft-ietf-cose-x509-09.txt">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Header parameters for carrying and referencing X.509 certificates</title>
            <author fullname="Jim Schaad" initials="J." surname="Schaad">
              <organization>August Cellars</organization>
            </author>
            <date day="13" month="October" year="2022"/>
            <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-09"/>
        </reference>
        <reference anchor="I-D.ietf-uta-rfc6125bis" target="https://www.ietf.org/archive/id/draft-ietf-uta-rfc6125bis-08.txt">
          <front>
            <title>Service Identity in TLS</title>
            <author fullname="Peter Saint-Andre" initials="P." surname="Saint-Andre">
              <organization>independent</organization>
            </author>
            <author fullname="Rich Salz" initials="R." surname="Salz">
              <organization>Akamai Technologies</organization>
            </author>
            <date day="12" month="October" year="2022"/>
            <abstract>
              <t>   Many application technologies enable secure communication between two
   entities by means of Transport Layer Security (TLS) with Internet
   Public Key Infrastructure Using X.509 (PKIX) certificates.  This
   document specifies procedures for representing and verifying the
   identity of application services in such interactions.

   This document obsoletes RFC 6125.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-uta-rfc6125bis-08"/>
        </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="RFC9053" target="https://www.rfc-editor.org/info/rfc9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad">
              <organization/>
            </author>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052). </t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </reference>
        <reference anchor="I-D.ietf-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" initials="R." surname="Kelsey">
              <organization>Silicon Labs</organization>
            </author>
            <date day="1" month="December" year="2015"/>
            <abstract>
              <t>   This document defines the mesh link establishment (MLE) protocol for
   establishing and configuring secure radio links in IEEE 802.15.4
   radio mesh networks.  MLE extends IEEE 802.15.4 for use in multihop
   mesh networks by adding three capabilities: 1) dynamically
   configuring and securing radio connections between neighboring
   devices, 2) enabling network-wide changes to shared radio parameters,
   and 3) allowing the determination of radio link quality prior to
   configuration.  MLE operates below the routing layer, insulating it
   from the details of configuring, securing, and maintaining individual
   radio links within a larger mesh network.

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kuehlewind-update-tag-04"/>
        </reference>
        <reference anchor="I-D.richardson-anima-masa-considerations" 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" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="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-13.txt">
          <front>
            <title>Constrained Join Proxy for Bootstrapping Protocols</title>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
              <organization>vanderstok consultancy</organization>
            </author>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>Cisco Systems</organization>
            </author>
            <date day="23" month="October" year="2022"/>
            <abstract>
              <t>   This document extends the work of Bootstrapping Remote Secure Key
   Infrastructures (BRSKI) by replacing the (stateful) TLS Circuit proxy
   between Pledge and Registrar with a stateless or stateful Circuit
   proxy using CoAP which is called the 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.

   Like the BRSKI Circuit proxy, this constrained Join Proxy eliminates
   the need of Pledges to have routeable IP addresses before enrolment
   by utilizing link-local addresses.  Use of the constrained Join Proxy
   also eliminates the need of the Pledge to authenticate to the network
   or perform network-wide Registrar discover before enrolment.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-anima-constrained-join-proxy-13"/>
        </reference>
        <reference anchor="I-D.ietf-lake-edhoc" target="https://www.ietf.org/archive/id/draft-ietf-lake-edhoc-18.txt">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="28" month="November" 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-18"/>
        </reference>
        <reference anchor="I-D.ietf-anima-jws-voucher" target="https://www.ietf.org/archive/id/draft-ietf-anima-jws-voucher-05.txt">
          <front>
            <title>JWS signed Voucher Artifacts for Bootstrapping Protocols</title>
            <author fullname="Thomas Werner" initials="T." surname="Werner">
              <organization>Siemens AG</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="24" month="October" 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 support
   deployments 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-05"/>
        </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="2022" month="November"/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-rats-architecture" target="https://www.ietf.org/archive/id/draft-ietf-rats-architecture-22.txt">
          <front>
            <title>Remote Attestation Procedures Architecture</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Dave Thaler" initials="D." surname="Thaler">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Intel Corporation</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="28" month="September" year="2022"/>
            <abstract>
              <t>   In network protocol exchanges it is often useful for one end of a
   communication to know whether the other end is in an intended
   operating state.  This document provides an architectural overview of
   the entities involved that make such tests possible through the
   process of generating, conveying, and evaluating evidentiary claims.
   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-22"/>
        </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[
  REQ: POST coaps://192.0.2.1:8085/b/es
  Content-Format: 60
  Payload: <binary CBOR encoding of an enrollstatus map>
]]></artwork>
        <t>The corresponding CoAP header fields for this request are shown below.</t>
        <artwork><![CDATA[
  Ver = 1
  T = 0 (CON)
  TKL = 1
  Code = 0x02 (0.02 is POST method)
  Message ID = 0xab0f
  Token = 0x4d
  Options
   Option  (Uri-Path)
     Option Delta = 0xb   (option nr = 11)
     Option Length = 0x1
     Option Value = "b"
   Option  (Uri-Path)
     Option Delta = 0x0   (option nr = 11)
     Option Length = 0x2
     Option Value = "es"
   Option  (Content-Format)
     Option Delta = 0x1   (option nr = 12)
     Option Length = 0x1
     Option Value = 60    (application/cbor)
  Payload Marker = 0xFF
  Payload = A26776657273696F6E0166737461747573F5 (18 bytes binary)
]]></artwork>
        <t>The Uri-Host and Uri-Port Options are omitted because they coincide with the transport protocol (UDP) destination address and port respectively.</t>
        <t>The above binary CBOR enrollstatus payload looks as follows in CBOR diagnostic notation, for the case of enrollment success:</t>
        <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    (69 bytes binary)

  {
    "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>Which in case of a piggybacked response has the following CoAP header fields:</t>
        <artwork><![CDATA[
  Ver=1
  T=2 (ACK)
  TKL=1
  Code = 0x44 (2.04 Changed)
  Message ID = 0xab0f
  Token = 0x4d
]]></artwork>
      </section>
      <section anchor="voucherstatus">
        <name>voucher_status</name>
        <t>A coaps voucher_status message from Pledge to Registrar can be as follows:</t>
        <artwork><![CDATA[
  REQ: POST coaps://[2001:db8::2:1]/.well-known/brski/vs
  Content-Format: 60 (application/cbor)
  Payload = 
    A46776657273696F6E0166737461747573F466726561736F6E7828496E66
    6F726D61746976652068756D616E2D7265616461626C65206572726F7220
    6D6573736167656E726561736F6E2D636F6E74657874A100764164646974
    696F6E616C20696E666F726D6174696F6E

]]></artwork>
        <t>The request payload above is binary CBOR but represented here in hexadecimal for readability. Below is the equivalent CBOR diagnostic format.</t>
        <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, followed by examples of
a constrained PVR, RVR and voucher.</t>
      <section anchor="pledge-registrar-and-masa-keys">
        <name>Pledge, Registrar and MASA Keys</name>
        <t>This section documents the public and private keys used for all examples in this appendix. These keys are not used in any
production system, and must only be used for testing purposes.</t>
        <section anchor="pledgepriv">
          <name>Pledge IDevID private key</name>
          <sourcecode><![CDATA[
<CODE BEGINS>
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIMv+C4dbzeyrEH20qkpFlWIH2FFACGZv9kW7rNWtSlYtoAoGCCqGSM49
AwEHoUQDQgAESH6OUiYFRhfIgWl4GG8jHoj8a+8rf6t5s1mZ/4SePlKom39GQ34p
VYryJ9aHmboLLfz69bzICQFKbkoQ5oaiew==
-----END EC PRIVATE KEY-----
<CODE ENDS>
]]></sourcecode>
          <sourcecode><![CDATA[
<CODE BEGINS>
Private-Key: (256 bit)
priv:
    cb:fe:0b:87:5b:cd:ec:ab:10:7d:b4:aa:4a:45:95:
    62:07:d8:51:40:08:66:6f:f6:45:bb:ac:d5:ad:4a:
    56:2d
pub:
    04:48:7e:8e:52:26:05:46:17:c8:81:69:78:18:6f:
    23:1e:88:fc:6b:ef:2b:7f:ab:79:b3:59:99:ff:84:
    9e:3e:52:a8:9b:7f:46:43:7e:29:55:8a:f2:27:d6:
    87:99:ba:0b:2d:fc:fa:f5:bc:c8:09:01:4a:6e:4a:
    10:e6:86:a2:7b
ASN1 OID: prime256v1
NIST CURVE: P-256

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

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

<CODE ENDS>
]]></sourcecode>
        </section>
      </section>
      <section anchor="pledge-registrar-domain-ca-and-masa-certificates">
        <name>Pledge, Registrar, Domain CA and MASA Certificates</name>
        <t>All keys and 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: 32429 (0x7ead)
 Signature Algorithm: ecdsa-with-SHA256
 Issuer: CN = masa.stok.nl, O = vanderstok, L = Helmond, 
         C = NL
 Validity
   Not Before: Dec  9 12:50:47 2022 GMT
   Not After : Dec 31 12:50:47 9999 GMT
 Subject: CN = Stok IoT sensor Y-42, serialNumber = JADA123456789
 Subject Public Key Info:
   Public Key Algorithm: id-ecPublicKey
     Public-Key: (256 bit)
     pub:
       04:48:7e:8e:52:26:05:46:17:c8:81:69:78:18:6f:
       23:1e:88:fc:6b:ef:2b:7f:ab:79:b3:59:99:ff:84:
       9e:3e:52:a8:9b:7f:46:43:7e:29:55:8a:f2:27:d6:
       87:99:ba:0b:2d:fc:fa:f5:bc:c8:09:01:4a:6e:4a:
       10:e6:86:a2:7b
     ASN1 OID: prime256v1
     NIST CURVE: P-256
 X509v3 extensions:
   X509v3 Key Usage: critical
     Digital Signature, Non Repudiation, Key Encipherment, 
             Data Encipherment
   X509v3 Basic Constraints: 
     CA:FALSE
   X509v3 Authority Key Identifier: 
     CB:8D:98:CA:74:C5:1B:58:DD:E7:AC:EF:86:9A:94:43:A8:D6:66:A6
   1.3.6.1.5.5.7.1.32: 
      hl=2 l=  12 prim: IA5STRING     :masa.stok.nl

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

NAME=pledge

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

# sign csr
openssl x509 -set_serial 32429 -CAform PEM -CA output/masa_ca.pem \
  -CAkey keys/privkey_masa_ca.pem -extfile x509v3.ext -extensions \
  pledge_ext -req -in $NAME.csr -out output/$NAME.pem \
  -days $VALIDITY -sha256

# delete temp files
rm -f $NAME.csr

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

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

[ req ]
prompt = no

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

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

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

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

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

# days certificate is valid
VALIDITY=1095

# cert filename
NAME=registrar

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

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

# delete temp files
rm -f $NAME.csr

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

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

# days certificate is valid
VALIDITY=3650

NAME=masa_ca

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

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

# delete temp files
rm -f $NAME.csr

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

<CODE ENDS>
]]></sourcecode>
    </section>
    <section anchor="appendix-pledge-profiles">
      <name>Pledge Device Class Profiles</name>
      <t>This specification allows implementers to select between various functional options for the Pledge,
yielding different code size footprints and different requirements on Pledge hardware.
Thus for each product an optimal trade-off between functionality, development/maintenance cost and hardware cost can be made.</t>
      <t>This appendix illustrates different selection outcomes by means of defining different example "profiles" of constrained Pledges. In the following
subsections, these profiles are defined and a comparison is provided.</t>
      <section anchor="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 287 (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>
  </back>
  <!-- ##markdown-source:
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
OCjv/wCCFerBiM8BAA==

-->

</rfc>
