<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-anima-constrained-voucher-32" category="std" consensus="true" submissionType="IETF" updates="8995, 9148" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.35.0 -->
  <front>
    <title abbrev="Constrained BRSKI (cBRSKI)">Constrained Bootstrapping Remote Secure Key Infrastructure (cBRSKI)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-anima-constrained-voucher-32"/>
    <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@kpnmail.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="2026" month="November" day="02"/>
    <area>Internet</area>
    <workgroup>anima Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 121?>

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

<section anchor="introduction">
      <name>Introduction</name>
      <t>Secure enrollment of new nodes into constrained networks with constrained nodes presents unique challenges.
As explained in <xref target="RFC7228"/>, such networks may have limited data throughput or may
experience frequent packet loss. In addition, their nodes may be constrained by energy availability, memory space, and code size.</t>
      <t>The Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol described in <xref target="RFC8995"/>
provides a solution for secure zero-touch (automated) onboarding of new (unconfigured) devices.
These new devices, called "Pledges", are equipped with a factory-installed Initial Device Identifier (IDevID) (see <xref target="ieee802-1AR"/>).
Using the IDevID, a Pledge is securely enrolled into a network.</t>
      <t>The BRSKI solution described in <xref target="RFC8995"/> was designed to be modular, and this document describes a version scaled to the constraints of IoT deployments.
This document uses the constrained voucher and voucher request artifacts defined in <xref target="RFC8366bis"/> for a constrained
version of the BRSKI protocol: cBRSKI.
The cBRSKI protocol uses the CoAP-based version of EST (EST-coaps from <xref target="RFC9148"/>) rather than the EST over HTTPS <xref target="RFC7030"/>.
cBRSKI is itself scalable to multiple resource levels through the definition of optional functions. <xref target="appendix-pledge-profiles"/> illustrates this.</t>
      <t>In BRSKI, the <xref target="RFC8366bis"/> voucher data is by default serialized to JSON with a signature in CMS <xref target="RFC5652"/>.
cBRSKI uses the CBOR <xref target="RFC8949"/> voucher data serialization defined by <xref target="RFC8366bis"/>, and applies a new COSE <xref target="RFC9052"/> signature format as
defined in <xref target="artifacts"/>.</t>
      <t>This COSE-signed CBOR-encoded voucher is transported using both secured CoAP <xref target="RFC7252"/> and HTTPS.
The CoAP connection (between Pledge and Registrar) is to be protected by DTLS (CoAPS).
The HTTP connection (between Registrar and MASA) is to be protected using TLS (HTTPS).</t>
      <t><xref target="overview"/> to <xref target="discovery"/> define the default cBRSKI protocol, by means of additions to and modifications of regular BRSKI.
<xref target="discovery-considerations"/> considers some variations of the protocol, specific to particular deployments or IoT networking technologies.
Next in <xref target="design-considerations"/>, some considerations for the design and implementation of cBRSKI components are provided.</t>
      <t><xref target="rpk-considerations"/> introduces a variant of cBRSKI for the most-constrained Pledges, using Raw Public Keys (RPK).
This variant achieves smaller sizes of data objects and avoids doing certain costly PKIX verification operations on the Pledge.</t>
      <t><xref target="pledge-discovery-on-registrar"/> provides more details on how a Pledge may discover the various onboarding/enrollment options that a
Registrar provides. Implementing these methods is optional for a Pledge.</t>
    </section>
    <section anchor="Terminology">
      <name>Terminology</name>
      <t>The following terms are defined in <xref target="RFC8366bis"/>, and are used identically as in that document:
Artifact, Attribute, Domain, Join Registrar and Coordinator (JRC), Malicious Registrar, Manufacturer Authorized Signing Authority
(MASA), Pledge, Registrar, Onboarding, Owner, Voucher Data, Voucher Request and Voucher.</t>
      <t>The protocol described in this document is referred to as cBRSKI, the constrained version of BRSKI <xref target="RFC8995"/>.</t>
      <t>The following terms from <xref target="RFC8995"/> are used identically as in that document:
Domain CA, enrollment, IDevID, Join Proxy, LDevID, manufacturer, nonced, nonceless, PKIX.</t>
      <t>The following terms from <xref target="RFC7030"/> are used identically as in that document:
Explicit Trust Anchor (TA), Explicit TA database, Third-party TA.</t>
      <t>The following terms from <xref target="RFC7252"/> are used identically as in that document:
Confirmable (CON), Acknowledgement (ACK), Endpoint, ETag, Client, Server, Piggybacked Response, resource, Resource Discovery, Content-Format.</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>The terms "PKIX Certificate" and "certificate" both refer to the X.509v3 profile described in <xref target="RFC5280"/>.</t>
      <t>The term "base resource" is defined as a CoAP resource that can be used as a base
to append an additional path segment to, where this segment is a short resource name ('short-name') as defined in
<xref target="resource-discovery"/> and <xref target="brski-est-short-uri-table"/>.</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.
"lf added" means that extra linefeed characters were added to an example to make lines fit in this document.</t>
      <t>The ellipsis ("...") in a CBOR diagnostic notation byte string denotes a further sequence of bytes that is not shown for brevity.
This notation is defined in <xref target="I-D.ietf-cbor-edn-literals"/>.</t>
    </section>
    <section anchor="reqlang">
      <name>Requirements Language</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
<?line -6?>
      </t>
    </section>
    <section anchor="overview">
      <name>Overview of Protocol</name>
      <t><xref target="RFC8366bis"/> defines a voucher that can assert proximity, authenticate the Registrar, and 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 send a Pledge Voucher Request (PVR). The Registrar then includes the PVR into its own
Registrar Voucher Request (RVR), which is 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,
which are used 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>The two main parts of the BRSKI protocol are named separately in this document: BRSKI-EST (<xref target="brski-est"/>) for the protocol between Pledge and Registrar, and BRSKI-MASA (<xref target="brski-masa"/>) for the
protocol between the Registrar and the MASA.</t>
      <t>Time-based vouchers are supported, but given that constrained devices are unlikely to have accurate time, their use will be uncommon.
Most Pledges using constrained vouchers will be online during enrollment and will use live nonces to provide anti-replay protection rather than expiry times.</t>
      <t><xref target="RFC8366bis"/> defines the CBOR voucher data encoding for the constrained voucher and the constrained voucher request, which are used by cBRSKI.</t>
      <t>The constrained voucher request MUST be signed by the Pledge. COSE <xref target="RFC9052"/> is used for signing as defined in <xref target="VR-COSE"/>.
The Pledge signs using the private key of its IDevID.
The constrained voucher MUST be signed by the MASA. Also in this case, COSE is used for signing.</t>
      <t>For the constrained voucher request (PVR) the default method for the Pledge to identify the Registrar is using the
Registrar's full PKIX certificate. But when operating PKIX-less
as described in <xref target="rpk-considerations"/>, the Registrar's Raw Public Key (RPK) is used for this.</t>
      <t>For the constrained voucher the default method to indicate ("pin") a trusted domain identity is the domain's PKIX CA certificate,
but when operating PKIX-less instead the RPK of the Registrar is pinned.</t>
      <t>For certificates, cBRSKI currently uses the X.509 format, like BRSKI. The protocol and data formats are defined such that future extension to other certificate formats is enabled. For example, CBOR-encoded and COSE-signed
C509 certificates (<xref target="I-D.ietf-cose-cbor-encoded-cert"/>) may provide data size savings as well as code sharing benefits with CBOR/COSE libraries, when applied to cBRSKI.</t>
      <t>The BRSKI architecture mandates that the MASA be aware of the capabilities of the Pledge.
This is not a drawback as a Pledge is constructed by a manufacturer which also arranges for the MASA to be aware of the inventory of devices.
The MASA therefore knows if the Pledge supports PKIX operations, or if it is limited to RPK operations only.
Based upon this, the MASA can select which attributes to use in the voucher for certain operations, like the pinning of the Registrar or domain identity.</t>
    </section>
    <section anchor="updates-to-rfc-8995-and-rfc-9148">
      <name>Updates to RFC 8995 and RFC 9148</name>
      <t>This section details the ways in which this document updates other RFCs.</t>
      <t>This document Updates <xref target="RFC8995"/> because it adds normative requirements on:</t>
      <ul spacing="normal">
        <li>
          <t>how pinning in vouchers is done (<xref target="pinning"/>),</t>
        </li>
        <li>
          <t>the use of TLS Server Name Indicator (SNI) (<xref target="sni"/>, <xref target="sni-masa"/>),</t>
        </li>
        <li>
          <t>when new trust anchors should be retrieved by a Pledge (<xref target="brski-est-extensions-pledge"/>),</t>
        </li>
        <li>
          <t>what Extended Key Usage attributes are required for each certificate (<xref target="registrar-certificate-requirement-server"/>, <xref target="registrar-certificate-requirement-client"/>),</t>
        </li>
        <li>
          <t>extending BRSKI with CoAP support,</t>
        </li>
        <li>
          <t>reducing the BRSKI/EST data traffic size and post-onboarding (EST) certificate maintenance (<xref target="brski-est-extensions"/>),</t>
        </li>
        <li>
          <t>extending the BRSKI-EST/BRSKI-MASA protocols (<xref target="brski-est"/>, <xref target="brski-masa"/>, <xref target="VR-COSE"/>) to carry the new <tt>application/voucher+cose</tt> format.</t>
        </li>
      </ul>
      <t>This document Updates <xref target="RFC9148"/> because it:</t>
      <ul spacing="normal">
        <li>
          <t>defines stricter DTLS requirements (<xref target="brski-est-dtls"/>), including mandatory DTLS 1.3 cipher suites
(<xref target="dtls-ciphersuites"/>),</t>
        </li>
        <li>
          <t>normatively details how an EST-coaps client handles certificate renewal and re-enrollment (<xref target="brski-est-extensions"/>),</t>
        </li>
        <li>
          <t>normatively details how an EST-coaps server processes a "CA certificates" request for content-format 287 (<tt>application/pkix-cert</tt>) (<xref target="brski-extensions-registrar"/>),</t>
        </li>
        <li>
          <t>defines enrollment status telemetry for the certificate renewal procedure (<xref target="est-reenrollment"/>),</t>
        </li>
        <li>
          <t>adds support for the media type <tt>application/multipart-core</tt> for the EST-coaps CA certificates (<tt>/crts</tt>) resource (<xref target="multipart-core"/>),</t>
        </li>
        <li>
          <t>defines a resource type ('<tt>rt</tt>') attribute value "<tt>ace.est</tt>" for the EST-coaps base resource (<xref target="iana-core-rt"/>).</t>
        </li>
      </ul>
    </section>
    <section anchor="brski-est">
      <name>BRSKI-EST Protocol</name>
      <t>This section describes the extensions to both BRSKI <xref target="RFC8995"/> and EST-coaps <xref target="RFC9148"/> operations between Pledge and Registrar.</t>
      <section anchor="brski-est-dtls">
        <name>DTLS Connection</name>
        <t>A DTLS connection is established between the Pledge and the Registrar, similar to the TLS connection
described in <xref section="5.1" sectionFormat="of" target="RFC8995"/>. This may occur via a Join Proxy as described in <xref target="joinproxy"/>.
Regardless of the Join Proxy presence or particular mechanism used, the DTLS connection should operate identically.
The cBRSKI and EST-coaps CoAP requests and responses for onboarding are carried over this DTLS connection.</t>
        <section anchor="dtls-version">
          <name>DTLS Version</name>
          <t>DTLS version 1.3 <xref target="RFC9147"/> SHOULD be used in any implementation of this specification. An exception case where DTLS 1.2 <xref target="RFC6347"/> MAY
be used is in a Pledge that uses a software platform where a DTLS 1.3 client is not available (yet). This may occur for example if a legacy
device gets software-upgraded to support cBRSKI. For this reason, a Registrar MUST by default support both DTLS 1.3 and DTLS 1.2
client connections. However, for security reasons the Registrar MAY be administratively configured to support only a particular DTLS version or higher.</t>
          <t>A Pledge that implements DTLS 1.3 MUST NOT additionally support DTLS 1.2.
This prevents a rogue Registrar from forcing the Pledge onto DTLS 1.2, reduces the DTLS code's attack surface on the
constrained Pledge, and keeps more handshake metadata encrypted.</t>
          <t>An EST-coaps server <xref target="RFC9148"/>, if present as a separate CoAP endpoint from above Registrar, that implements this specification
also MUST support both DTLS 1.3 and DTLS 1.2 client connections by default.
Again, for security reasons the EST-coaps server MAY be administratively configured to support only a particular DTLS version or higher.</t>
        </section>
        <section anchor="dtls-ciphersuites">
          <name>DTLS Cipher Suites</name>
          <section anchor="dtls-12-cipher-suites">
            <name>DTLS 1.2 Cipher Suites</name>
            <t>The DTLS 1.2 cipher suite requirements of <xref section="3" sectionFormat="of" target="RFC9148"/> MUST be applied to a Registrar and, if present, an EST-coaps
server hosted at a separate endpoint.
These requirements include mandatory support for TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8.
This is the default CoAPS cipher suite as specified in <xref section="9.1.3.3" sectionFormat="of" target="RFC7252"/>.</t>
            <t>A Pledge using DTLS 1.2 MUST implement the above cipher suite and MAY implement others.</t>
          </section>
          <section anchor="dtls-13-cipher-suites">
            <name>DTLS 1.3 Cipher Suites</name>
            <t>The DTLS 1.3 requirements of <xref section="3" sectionFormat="of" target="RFC9148"/> MUST be applied to a Registrar and, if present, an EST-coaps
server hosted at a separate endpoint.
However, these do not include a specific cipher suite requirement.</t>
            <t>This document updates <xref target="RFC9148"/> by defining the DTLS 1.3 mandatory cipher suites for an EST-coaps server.
A Registrar and, if present, a separate EST-coaps server, MUST support the following cipher suites:</t>
            <ul spacing="normal">
              <li>
                <t>mandatory TLS 1.3 cipher suites as defined in <xref section="9.1" sectionFormat="of" target="RFC8446"/> (TLS_AES_128_GCM_SHA256 with the digital
signature and key exchange algorithms listed there)</t>
              </li>
              <li>
                <t>TLS_AES_128_CCM_8_SHA256 (with the same digital signature and key exchange algorithms)</t>
              </li>
              <li>
                <t>TLS_AES_128_CCM_SHA256 (with the same digital signature and key exchange algorithms)</t>
              </li>
            </ul>
            <t>A Pledge whose IDevID certificate contains an Ed25519 public key (as recommended for new designs in <xref target="VR-COSE"/>) uses
the same Ed25519 IDevID private key to sign the DTLS handshake CertificateVerify and to sign its PVR; only one cryptographic
implementation of Ed25519 is therefore needed on the Pledge.
To enable such Pledges to authenticate, a Registrar MUST support digital signature algorithm Ed25519 and elliptic
curve group X25519 (see <xref target="RFC8446"/>).</t>
            <t>Note that per <xref section="4.5.3" sectionFormat="of" target="RFC9147"/> the cipher suite TLS_AES_128_CCM_8_SHA256 cannot be used unless specific
measures are taken against packet forgery attacks.
See <xref section="20" sectionFormat="of" target="I-D.ietf-uta-tls13-iot-profile"/> for a more detailed explanation of this topic.
These measures are needed on both the DTLS 1.3 client and server.
In the context of the cBRSKI protocol, the RECOMMENDED safeguard measure is to limit the number of records that can
fail authentication to at most 2^7, as defined in <xref section="B.3" sectionFormat="of" target="RFC9147"/>.
If this measure is applied and the limit is reached, the DTLS connection is closed.
This is a suitable measure because all cBRSKI and EST-coaps operations are relatively short-lived sessions that only require
a few, or a few tens of, DTLS records.</t>
            <t>A Pledge using DTLS 1.3 MUST implement at least one of the above cipher suites supported by the Registrar and MAY
implement multiple of these.</t>
          </section>
        </section>
        <section anchor="dtls-client-certificates-idevid-authentication">
          <name>DTLS 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, which is now used for DTLS.</t>
          <t>Subsequently the Pledge will send a Pledge Voucher Request (PVR). Further elements of Pledge authentication may be present in the PVR,
as detailed in <xref target="VR-COSE"/>.</t>
        </section>
        <section anchor="dtls-fragments">
          <name>DTLS Handshake Fragmentation Considerations</name>
          <t>DTLS includes a mechanism to fragment handshake messages. This is described in <xref section="4.4" sectionFormat="of" target="RFC9147"/>.
cBRSKI will often be used with a Join Proxy, described in <xref target="joinproxy"/>, which relays each DTLS message to the Registrar.
A stateless Join Proxy will need some additional space to wrap each DTLS message inside a Join Proxy UDP message, while the wrapped result needs to fit in the maximum IPv6
MTU guaranteed on 6LoWPAN <xref target="RFC6282"/> 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 ICMPv6 Packet Too Big indications (<xref target="RFC4443"/>) will be relayed by the Join Proxy back to the Pledge.</t>
          <t>During the operation of the EST-coaps protocol, the CoAP Block-wise transfer mechanism <xref target="RFC7959"/> will be automatically used when message sizes exceed the PMTU.
A Pledge/EST-client on a constrained network MUST use the (D)TLS maximum fragment length extension ('<tt>max_fragment_length</tt>') defined in <xref section="4" sectionFormat="of" target="RFC6066"/> with the maximum fragment length set to a value of either 2^9 or 2^10,
when operating as a DTLS 1.2 client.</t>
          <t>A Pledge/EST-client operating as DTLS 1.3 client, MUST use the (D)TLS record size limit extensions ('<tt>record_size_limit</tt>')
defined in <xref section="4" sectionFormat="of" target="RFC8449"/>, with RecordSizeLimit set to a value between 512 and 1024 (inclusive).</t>
        </section>
      </section>
      <section anchor="registrar-certificate-requirement-server">
        <name>Registrar Server Certificate Requirements</name>
        <t>As per <xref section="3.6.1" sectionFormat="of" target="RFC7030"/>, the Registrar certificate MUST have the Extended Key Usage (EKU) id-kp-cmcRA.
This certificate is also used as a TLS Server Certificate (BRSKI) or DTLS Server Certificate (cBRSKI), so it MUST also have the EKU id-kp-serverAuth.
This requirement is an update to <xref target="RFC8995"/>, which does not mention this EKU.</t>
        <t>See <xref target="cosesign-registrar-cert"/> for an example of a Registrar certificate with these EKUs set.
See <xref target="registrar-certificate-requirement-client"/> for Registrar client certificate requirements.</t>
      </section>
      <section anchor="sni">
        <name>Registrar and the Server Name Indicator (SNI)</name>
        <t>As the Pledge discovers the Registrar by (link-local) IP address, and the Registrar is typically connected via a Join Proxy,
the hostname of the Registrar is not known to the Pledge.
Therefore, it cannot do DNS-ID validation (<xref target="RFC9525"/>) on the Registrar's certificate.
Instead, it must do validation using the voucher.</t>
        <t>Without knowing the hostname, the Pledge cannot put any reasonable value into the <xref target="RFC6066"/> Server Name Indicator (SNI) extension.
Therefore 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 (D)TLS connection, and may result in the SNI being inserted by a library.
For this reason and other possible situations where the SNI can not be turned off, the Registrar MUST ignore any SNI it receives from a Pledge.</t>
        <t>A primary motivation for making the SNI ubiquitous in the public web is because it allows for multi-tenant hosting of HTTPS sites on a single (scarce) IPv4 address.
This consideration does not apply to the server function in the Registrar because:</t>
        <ul spacing="normal">
          <li>
            <t>it typically uses IPv6, often <xref target="RFC4193"/> Unique Local Addresses, which are plentiful;</t>
          </li>
          <li>
            <t>the server port number is either discovered or configured, so multiple tenants can be accommodated via unique UDP port numbers.</t>
          </li>
        </ul>
        <t>The SNI issue described above affects <xref target="RFC8995"/> as well, and is reported in errata: <eref target="https://www.rfc-editor.org/errata/eid6648">https://www.rfc-editor.org/errata/eid6648</eref>
The advice to omit the SNI (if practical) in the Pledge applies, as the SNI bytes are not useful.
The advice for the Registrar to ignore the SNI above applies to <xref target="RFC8995"/> as well, and this is an Update to that document.</t>
      </section>
      <section anchor="joinproxy">
        <name>cBRSKI Join Proxy</name>
        <t><xref target="I-D.ietf-anima-constrained-join-proxy"/> specifies the details for a stateful or stateless constrained Join Proxy which is equivalent to the BRSKI Proxy defined in <xref section="4" sectionFormat="comma" target="RFC8995"/>.
See also <xref target="discovery"/> for more details on discovery of a Join Proxy by a Pledge, and discovery of a Registrar by a Join Proxy.</t>
      </section>
      <section anchor="resource-discovery">
        <name>Request URIs, Resource Discovery and Content-Formats</name>
        <t>cBRSKI operates using CoAP over DTLS, with request URIs using the coaps scheme. The Pledge operates in CoAP client role.
To keep the protocol messages small the EST-coaps and cBRSKI request URIs are shorter than the respective EST and BRSKI URIs.</t>
        <t>During the cBRSKI onboarding on an IPv6 network these request URIs have the following form:</t>
        <artwork><![CDATA[
  coaps://[<link-local-ipv6>]:<port>/.well-known/brski/<short-name>
  coaps://[<link-local-ipv6>]:<port>/.well-known/est/<short-name>
]]></artwork>
        <t>where &lt;<tt>link-local-ipv6</tt>&gt; is the discovered link-local IPv6 address of a Join Proxy, and &lt;<tt>port</tt>&gt; is the discovered port of the Join Proxy that is
used to offer the cBRSKI proxy functionality.</t>
        <t>&lt;<tt>short-name</tt>&gt; is the short resource name for the cBRSKI and EST-coaps resources. For EST-coaps, <xref section="5.1" sectionFormat="of" target="RFC9148"/> defines the CoAP &lt;<tt>short-name</tt>&gt; resource names.
For cBRSKI, this document defines the short resource names based on the <xref target="RFC8995"/> long HTTP resource names.
See <xref target="brski-est-short-uri-table"/> for a summary of these resource names.</t>
        <t><xref target="discovery-considerations"/> details how the Pledge discovers a Join Proxy link-local address and port in different deployment scenarios.</t>
        <t>The request URI formats defined here enable the Pledge to perform onboarding/enrollment without requiring discovery of the available onboarding options, voucher formats,
BRSKI/EST resources, enrollment protocols, and so on. This is helpful for the majority of constrained Pledges that would support only a single set of these options. However, for Pledges that do support multiple options,
<xref target="I-D.ietf-anima-brski-discovery"/> will define discovery methods so that a Pledge can select the optimal set of options for the current onboarding operation.</t>
        <t>Alternatively, a Pledge could also send CoAP discovery queries (<xref section="7" sectionFormat="of" target="RFC7252"/>) to the Registrar to discover
detailed options for onboarding and/or enrollment functions. Supporting these queries is
OPTIONAL for both the Pledge and the Registrar. To clarify which options in particular can be discovered, <xref target="pledge-discovery-on-registrar"/> provides an informative overview of what can be
discovered and how to discover it.</t>
        <t>Because a Pledge only has indirect access to the Registrar via a single port on the Join Proxy, the Registrar MUST host all cBRSKI/EST-coaps resources on the same (UDP) server IP address and port.
This is the address and port where a Join Proxy would relay DTLS records from the Pledge to.</t>
        <t>Although the request URI templates include IP address, scheme and port, in practice the CoAP request message sent over the secure DTLS connection only encodes the URI path explicitly.
For example, a Pledge that skips resource discovery operations just sends the initial CoAP voucher request as follows:</t>
        <artwork><![CDATA[
  REQ: POST /.well-known/brski/rv
    Content-Format: 836 (application/voucher+cose)
    Payload       : (COSE-signed Pledge Voucher Request, PVR)
]]></artwork>
        <t>Note that only content-format 836 (<tt>application/voucher+cose</tt>) is defined in this document for the payload sent to the voucher request resource (<tt>/rv</tt>).
Content-format 836 MUST be supported by the Registrar for the <tt>/rv</tt> resource and it MAY support additional formats.
The Pledge MAY also indicate in the request the desired format of the (voucher) response, using the Accept Option. An example of using this option in the request is as follows:</t>
        <artwork><![CDATA[
  REQ: POST /.well-known/brski/rv
    Content-Format: 836 (application/voucher+cose)
    Accept        : 836 (application/voucher+cose)
    Payload       : (COSE-signed Pledge Voucher Request, PVR)
]]></artwork>
        <t>If the Accept Option is omitted in the request, the response format follows from the request payload format (which is 836).</t>
        <t>Note that this specification allows for <tt>application/voucher+cose</tt> format requests and vouchers to be transported over HTTPS,
as well as for <tt>application/voucher-cms+json</tt> and other formats yet to be defined over CoAP.
The burden for this flexibility is placed upon the Registrar.
A Pledge on constrained hardware is expected to support a single format only.</t>
        <t>The Pledge and MASA need to support one or more formats (at least format 836) for the voucher and for the voucher request.
The MASA needs to support all formats that the Pledge supports.</t>
        <section anchor="telemetry">
          <name>Status Telemetry Returns</name>
          <t><xref target="RFC8995"/> defines two telemetry returns from the Pledge which are sent to the Registrar.
These are the BRSKI Status Telemetry <xref section="5.7" sectionFormat="comma" target="RFC8995"/> and the Enrollment Status Telemetry <xref section="5.9.4" sectionFormat="comma" target="RFC8995"/>.
These are two CoAP POST requests made by the Pledge at two key steps in the process.</t>
          <t><xref target="RFC8995"/> defines the content of these POST operations in CDDL, which are serialized as JSON.
This document extends this with an additional CBOR format, derived using the CDDL rules in <xref target="RFC8610"/>.</t>
          <t>The new CBOR telemetry format has CoAP content-format 60 (<tt>application/cbor</tt>) and MUST be supported by the Registrar for both the <tt>/vs</tt> and <tt>/es</tt> resources.
The existing JSON format has CoAP content-format 50 (<tt>application/json</tt>) and MAY also be supported by the Registrar.
A Pledge MUST use the new CBOR format to send telemetry messages.</t>
        </section>
        <section anchor="coap-resources-table">
          <name>CoAP Resources Table</name>
          <t>cBRSKI inherits EST-coaps <xref target="RFC9148"/> functions:
specifically, the mandatory Simple (Re-)Enrollment (<tt>/sen</tt> and <tt>/sren</tt>) and Certification Authority certificates request (<tt>/crts</tt>).
Support for CSR Attributes Request (<tt>/att</tt>) and server-side key generation (<tt>/skg</tt>, <tt>/skc</tt>) remains optional for the EST-coaps server.</t>
          <t><xref target="brski-est-short-uri-table"/> summarizes the resources used in cBRSKI.
It includes both the short-name cBRSKI resources and the EST-coaps resources.</t>
          <!-- Table order can be changed -->

<table anchor="brski-est-short-uri-table">
            <name>BRSKI/EST resource name mapping to cBRSKI/EST-coaps short resource name</name>
            <thead>
              <tr>
                <th align="left">BRSKI + EST name</th>
                <th align="left">cBRSKI + EST-coaps &lt;short-name&gt;</th>
                <th align="left">Well-known URI namespace</th>
                <th align="left">Required for Registrar?</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>/enrollstatus</tt></td>
                <td align="left">
                  <tt>/es</tt></td>
                <td align="left">brski</td>
                <td align="left">MUST</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>/requestvoucher</tt></td>
                <td align="left">
                  <tt>/rv</tt></td>
                <td align="left">brski</td>
                <td align="left">MUST</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>/voucher_status</tt></td>
                <td align="left">
                  <tt>/vs</tt></td>
                <td align="left">brski</td>
                <td align="left">MUST</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>/cacerts</tt></td>
                <td align="left">
                  <tt>/crts</tt></td>
                <td align="left">est</td>
                <td align="left">MUST</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>/csrattrs</tt></td>
                <td align="left">
                  <tt>/att</tt></td>
                <td align="left">est</td>
                <td align="left">MAY</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>/simpleenroll</tt></td>
                <td align="left">
                  <tt>/sen</tt></td>
                <td align="left">est</td>
                <td align="left">MUST</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>/simplereenroll</tt></td>
                <td align="left">
                  <tt>/sren</tt></td>
                <td align="left">est</td>
                <td align="left">MUST</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>/serverkeygen</tt></td>
                <td align="left">
                  <tt>/skg</tt></td>
                <td align="left">est</td>
                <td align="left">MAY</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>/serverkeygen</tt></td>
                <td align="left">
                  <tt>/skc</tt></td>
                <td align="left">est</td>
                <td align="left">MAY</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="coap-uri-path-abbreviation">
          <name>CoAP Uri-Path Abbreviation</name>
          <t>To minimize the size of CoAP request packets on constrained networks, the CoAP Uri-Path-Abbrev Option
defined in <xref target="I-D.ietf-core-uri-path-abbrev"/> MUST be supported by the Registrar.</t>
        </section>
      </section>
      <section anchor="brski-coap-responses">
        <name>CoAP Responses</name>
        <t><xref section="5" sectionFormat="comma" target="RFC8995"/> defines a number of HTTP response codes that the Registrar is to return when certain conditions occur.</t>
        <t>The 401, 403, 404, 406 and 415 response codes map directly to CoAP codes 4.01, 4.03, 4.04, 4.06 and 4.15 respectively.</t>
        <t>The 202 Retry process which may occur in the voucher request, is to be handled in the same way as the <xref section="5.7" sectionFormat="of" target="RFC9148"/> process for Delayed Responses.</t>
      </section>
      <section anchor="brski-est-extensions">
        <name>Extensions to EST-coaps</name>
        <t>This section defines extensions to EST-coaps for Pledges (during initial onboarding), EST-coaps clients (after initial onboarding) and Registrars (that implement an EST-coaps server).
Note that a device that is already onboarded is not called "Pledge" in this section: it now acts in the role of an EST-coaps client.</t>
        <section anchor="brski-est-extensions-pledge">
          <name>Pledge Enrollment Procedure</name>
          <t>This section defines optimizations for the EST-coaps protocol as used by a Pledge. These aim to reduce payload sizes and the number of messages (round-trips) required for the initial EST enrollment.</t>
          <t>A Pledge SHOULD NOT perform the optional EST-coaps "CSR attributes request" (<tt>/att</tt>). Instead, the Pledge selects the attributes to include in the CSR as specified below.</t>
          <t>One or more Subject Distinguished Name fields MUST be included in the CSR.
If the Pledge has no specific information on what attributes/fields are desired in the CSR, which is the common case, it MUST use the Subject Distinguished Name fields from its IDevID unmodified.
Note that a Pledge MAY receive such specific information via the voucher data (encoded in a vendor-specific way, or as defined by a future specification) or via some other, out-of-band means.</t>
          <t>A Pledge uses the following optimized EST-coaps procedure:</t>
          <ol spacing="normal" type="1"><li>
              <t>If the voucher, that validates the current Registrar, contains a single pinned domain CA certificate, the Pledge provisionally considers this certificate as the EST trust anchor, as if it were the result of a "CA certificates request" (<tt>/crts</tt>) to the Registrar.</t>
            </li>
            <li>
              <t>Using this CA certificate as trust anchor it proceeds with EST simple enrollment (<tt>/sen</tt>) to obtain a provisionally trusted LDevID certificate.</t>
            </li>
            <li>
              <t>If the Pledge determines that the pinned domain CA is (1) a root CA certificate and (2) signer of the LDevID certificate, the Pledge accepts the pinned domain CA certificate as the legitimate trust anchor root CA for the Registrar's domain. It also accepts the LDevID certificate as its new LDevID identity. And steps 4 and 5 are skipped.</t>
            </li>
            <li>
              <t>Otherwise, if the step 3 condition was not met, the Pledge MUST perform a "CA certificates request" (<tt>/crts</tt>) to the EST server to obtain the full set of EST CA trust anchors. It then MUST attempt to chain the LDevID certificate to one of the CAs in the set.</t>
            </li>
            <li>
              <t>If the Pledge cannot obtain the set of CA certificates, or it is unable to create the chain as defined in step 4, the Pledge MUST abort the enrollment process and report the error using the enrollment status telemetry (<tt>/es</tt>).</t>
            </li>
          </ol>
        </section>
        <section anchor="est-renewal-crts">
          <name>Renewal of CA certificates</name>
          <t>An EST-coaps client that has an idea of the current time (internally, or via Network Time Protocol) SHOULD consider the validity time of the trust anchor CA(s), and MAY begin requesting new trust anchor certificates(s) using the <tt>/crts</tt> request when the CA has 50% of its validity time (notAfter - notBefore) left.
A client without access to the current time cannot decide if trust anchor CA(s) have expired, and SHOULD poll periodically for a new trust anchor certificate(s) using the <tt>/crts</tt> request at an interval of approximately 1 month.
An EST-coaps server SHOULD include the CoAP ETag Option (<xref section="5.10.6" sectionFormat="comma" target="RFC7252"/>) in every response to a <tt>/crts</tt> 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 <tt>/crts</tt> response in memory and SHOULD use this value in an ETag Option in its next GET <tt>/crts</tt> request.</t>
        </section>
        <section anchor="change-of-domain-trust-anchors">
          <name>Change of Domain Trust Anchor(s)</name>
          <t>The domain trust anchor(s) may change over time. Such a change may happen due to relocation of the client device to a new domain, a new subdomain, or due to a key update of
a trust anchor as described in <xref section="4.4" sectionFormat="comma" target="RFC4210"/>.</t>
          <t>From the client's viewpoint, a trust anchor change happens during EST-coaps re-enrollment: since a change of domain CA requires all devices
operating under the old domain CA to acquire a new LDevID certificate issued by the new domain CA. A client's re-enrollment may be triggered by various events, such as an instruction to re-enroll sent by a domain entity, or an imminent expiry of its LDevID certificate, or other.
How the re-enrollment is explicitly triggered on the client by a domain entity, such as a commissioner or a Registrar, is out of scope of this specification.</t>
          <t>The mechanism described in <xref section="4.1.3" sectionFormat="comma" target="RFC7030"/> and <xref section="4.4" sectionFormat="comma" target="RFC4210"/> for root CA key update requires four certificates: OldWithOld, OldWithNew, NewWithOld, and NewWithNew. Of these four, the OldWithOld certificate is already
stored in the client's Explicit TA database. The other certificates will be provided to the client in a <tt>/crts</tt> response, during the EST-coaps re-enrollment procedure.</t>
        </section>
        <section anchor="est-reenrollment">
          <name>Re-enrollment Procedure</name>
          <t>For re-enrollment, the EST-coaps client MUST support the following EST-coaps procedure. During this procedure the EST-coaps server MAY re-enroll the client into a new domain or into a new sub-CA within a larger domain.</t>
          <ol spacing="normal" type="1"><li>
              <t>The client connects with DTLS to the EST-coaps server, and authenticates with its present domain certificate (LDevID) as usual. The EST-coaps server authenticates itself with its domain RA certificate that
is currently trusted by the client, i.e. it chains to a trust anchor CA that the client has stored in its Explicit TA database. This is the OldWithOld trust anchor.
The client checks that the server is a Registration Authority (RA) of the domain as required by <xref section="3.6.1" sectionFormat="of" target="RFC7030"/> before proceeding.</t>
            </li>
            <li>
              <t>The client performs the simple re-enrollment request (<tt>/sren</tt>) and upon success it obtains a new LDevID certificate.</t>
            </li>
            <li>
              <t>The client verifies the new LDevID certificate against its Explicit TA database. If the new LDevID chains successfully to a TA, this means trust anchors did not significantly change and the client MAY skip retrieving the current CA certificates using the "CA certificates request" (<tt>/crts</tt>). If it does not chain successfully, it means trust anchor(s) were changed significantly and the client MUST retrieve the new domain trust anchors using the "CA certificates request" (<tt>/crts</tt>).</t>
            </li>
            <li>
              <t>If the client retrieved new trust anchor(s) in step 3, then it MUST verify that the new LDevID certificate it obtained in step 2 chains with the new trust anchor(s). If it chains successfully, the client stores the new trust anchor(s) in its Explicit TA database, accepts the new LDevID certificate and stops using its prior LDevID certificate. If it does not chain successfully, the client MUST NOT update its LDevID certificate, and it MUST NOT update its Explicit TA database, and the client MUST abort the enrollment process and MUST attempt to report the error to the EST-coaps server using enrollment status telemetry (<tt>/es</tt>).</t>
            </li>
          </ol>
          <t>Note that even though the EST-coaps client may skip the <tt>/crts</tt> request in step 3 at this time, it SHOULD still support renewal of the trust anchors as detailed in <xref target="est-renewal-crts"/>.</t>
          <t>Note that an EST-coaps server that is also a Registrar will already support the enrollment status telemetry resource (<tt>/es</tt>) in step 4, while an EST-coaps server that purely implements <xref target="RFC9148"/>, and not the present specification, will not support this resource.</t>
        </section>
        <section anchor="multipart-core">
          <name>Multipart Content-Format for CA certificates (<tt>/crts</tt>) Resource</name>
          <t>In EST-coaps <xref target="RFC9148"/> the PKCS#7 container format is used for CA certificates distribution. Because the PKCS#7 format is only used as a certificate container and no additional security is applied on the container, it
becomes attractive to replace this format by something simpler, on a constrained Pledge: so that additional PKCS#7 code is avoided. Therefore, this document defines a container format using the <xref target="RFC8710"/>
            <tt>application/multipart-core</tt> media type (CoAP content-format 62). This is beneficial since a Pledge necessarily already supports CBOR parsing, so there is little code overhead to support this CBOR-based
container format.</t>
          <t>A Registrar or EST-coaps server MUST support content-format 62 for the <tt>/crts</tt> resource.
The multipart collection MUST contain the individual CA certificates, each encoded as an <tt>application/pkix-cert</tt> (287) representation. Future documents may define other certificate formats: the multipart collection can handle any future types.
The order of CA certificates MUST be in the CA hierarchy order starting from the issuer of the client's LDevID first, up to the highest-level domain CA, then optionally followed by any further CA certificates that are not part of this hierarchy.
These further CA certificates may be Third-party TAs as defined in <xref target="RFC7030"/>. The highest-level domain CA may or may not be a root CA certificate.</t>
          <t>As an example, for the two-level CA domain PKI of <xref target="fig-twoca"/> the multipart container will contain two representations:</t>
          <artwork><![CDATA[
[ <domain sub-CA cert (2)> , <domain CA cert (1)> ]
]]></artwork>
          <t>Encoded as an <tt>application/multipart-core</tt> CBOR array this is (shown in CBOR diagnostic notation):</t>
          <artwork><![CDATA[
[ 287, h'3082' ... 'd713', 287, h'3082' ... 'a034' ]
]]></artwork>
          <t>The total number of CA certificates SHOULD be 1, 2 or 3 and not higher to prevent constrained Pledges from running out of memory for the trust anchor storage (Explicit TA database).
However if a domain operator can guarantee that any Pledges enrolled in its network can support larger sets of CA certificates, the total number MAY be configured as higher than 3.
To facilitate a reliable transfer of large payloads over constrained networks, the server MUST support CoAP Block-wise transfer for the <tt>/crts</tt> response. The server MUST also support
the Size2 Option <xref target="RFC7959"/> to provide the total resource length in bytes, when requested by a client.</t>
          <t>Implementation notes: a client that receives the first block of payload data from the server, can already inspect the total number of CA certificates by decoding the first byte of the payload.
In CBOR encoding, the respective first bytes 0x81-0x97 represent an array with length 1-23, respectively.
Furthermore, the length in bytes of the first CA certificate can be already determined by decoding the first bytes of the second element, because the CBOR encoding for binary string includes the length of this string.
A client that requires an estimate of the total resource size (to be returned as part of the first Block2 response from the server) can use a Size2 Option with value 0 in its request.
Knowing the overall progress of the data transfer may be helpful in certain cases, e.g. when a Pledge provides visual progress information on the onboarding progress.</t>
        </section>
      </section>
      <section anchor="brski-extensions-registrar">
        <name>Registrar Extensions</name>
        <t>Before a Registrar forwards a COSE-signed voucher from MASA to the Pledge, it MUST remove any '<tt>x5bag</tt>' or '<tt>x5chain</tt>'
unprotected COSE header attributes (which are defined in <xref target="RFC9360"/>).
The contents of these unprotected attributes are solely for validation/logging use by the Registrar.
Removing these attributes reduces the voucher size on the constrained network path to the Pledge.</t>
        <t>The content-format 60 (<tt>application/cbor</tt>) MUST be supported by the Registrar for the <tt>/vs</tt> and <tt>/es</tt> resources.</t>
        <t>Content-format 836 (<tt>application/voucher+cose</tt>) MUST be supported by the Registrar for the <tt>/rv</tt> resource for CoAP POST requests, both as request payload and as response payload.</t>
        <t>Content-format 287 (<tt>application/pkix-cert</tt>) MUST be supported by the Registrar as a response payload for the <tt>/sen</tt> and <tt>/sren</tt> resources.</t>
        <t>When a Registrar receives a "CA certificates request" (<tt>/crts</tt>) request with a CoAP Accept Option with value 287 (<tt>application/pkix-cert</tt>) it MUST return only the
single CA certificate that is the envisioned or actual CA authority for the current, authenticated Pledge making the request. An exception to this rule is when
the domain has been configured to operate with multiple CA trust anchors exclusively: then the Registrar returns a 4.06 Not Acceptable error to signal to the client that it
needs to request another content-format that supports retrieval of multiple CA certificates.</t>
      </section>
    </section>
    <section anchor="brski-masa">
      <name>BRSKI-MASA Protocol</name>
      <t>This section describes extensions to and clarifications of the BRSKI-MASA protocol between Registrar and MASA.</t>
      <section anchor="brski-masa-protocol-format">
        <name>Protocol and Formats</name>
        <t><xref section="5.4" sectionFormat="of" target="RFC8995"/> describes a connection between the Registrar and the MASA as being a normal TLS connection using HTTPS.
This document does not change that.</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.
Specifically, the Registrar MUST use the media type <tt>application/voucher+cose</tt> for its voucher request to MASA,
when the Pledge used content-format 836 in the payload of its request to the Registrar.</t>
        <t>The Registrar indicates the voucher format (by media type) 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 the resulting voucher.</t>
        <t>At the moment of writing the creation of CoAPS-based MASAs is deemed unrealistic and unnecessary.
The use of CoAP for the BRSKI-MASA connection is out of scope but can be the subject of another document.
Some consideration was made to specify CoAP support for consistency, but:</t>
        <ul spacing="normal">
          <li>
            <t>the Registrar is not expected to be so constrained that it cannot support HTTPS client connections.</t>
          </li>
          <li>
            <t>the technology and experience to build Internet-scale HTTPS responders (which the MASA is) is common, while the experience doing the same for CoAP is much less common.</t>
          </li>
          <li>
            <t>a Registrar is likely to provide onboarding services to both constrained and non-constrained devices.  Such a Registrar would need to speak HTTPS anyway.</t>
          </li>
          <li>
            <t>a manufacturer is likely to offer both constrained and non-constrained devices, so there may in practice be no situation
in which the MASA could be CoAP-only.
Additionally, as the MASA is intended to be a function that can easily be outsourced to a third-party service provider,
reducing the complexity would also seem to reduce the cost of that function.</t>
          </li>
          <li>
            <t>security-related considerations: see <xref target="security-masa-coaps"/>.</t>
          </li>
        </ul>
      </section>
      <section anchor="brski-masa-rvr">
        <name>Registrar Voucher Request</name>
        <t>If the PVR contains a proximity assertion, the Registrar MUST propagate this assertion into the RVR by including the '<tt>assertion</tt>' attribute 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 made by this document.
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, so it can be
determined by the manufacturer.</t>
        <t>The Registrar MUST do DNS-ID checks (<xref target="RFC9525"/>) on the contents of the certificate provided by the MASA during the
TLS handshake.</t>
        <t>In contrast 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 TLS 1.2, but common.
The SNI is considered mandatory with TLS 1.3.</t>
        <t>The presence of the SNI extension is required by the MASA, in order for the MASA's server to host multiple tenants
(for different customers).</t>
      </section>
      <section anchor="registrar-certificate-requirement-client">
        <name>Registrar Client Certificate Requirements</name>
        <t>The Registrar SHOULD use a TLS Client Certificate to authenticate to the MASA per <xref section="5.4.1" sectionFormat="of" target="RFC8995"/>.
If the certificate that the Registrar uses is marked as a id-kp-cmcRA certificate, via Extended Key Usage, then it MUST also have the id-kp-clientAuth EKU attribute set.</t>
        <t>In summary, for typical Registrar use, where a single Registrar certificate is used for both client and server roles,
the certificate MUST have an EKU set with at least all of id-kp-cmcRA, id-kp-serverAuth, and id-kp-clientAuth.</t>
        <t>These requirements update (and clarify) <xref target="RFC8995"/>.</t>
      </section>
    </section>
    <section anchor="pinning">
      <name>Pinning in Voucher Artifacts</name>
      <t>The voucher is a statement by the MASA for use by the Pledge that provides the identity of the Pledge's owner.
This section describes how the owner's identity is determined and how it is specified within the voucher.</t>
      <section anchor="registrar-identity">
        <name>Registrar Identity Selection and Encoding</name>
        <t><xref section="5.5" sectionFormat="of" target="RFC8995"/> describes BRSKI policies for selection of the owner identity. It indicates some of the
flexibility enabled 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 in an RVR, forming them into a chain with the Registrar's
(signing) identity on one end.
Then, it pins a certificate selected from this chain according to its pinning policy (<xref target="masa-pinning-policy"/>).</t>
        <t>For instance, for a domain with a two-level certification authority (see <xref target="fig-twoca"/>, also <xref section="5.1" sectionFormat="comma" target="I-D.irtf-t2trg-taxonomy-manufacturer-anchors"/>), where the RVR has been signed by "domain Registrar",
the RVR includes the chain formed by the domain Registrar EE certificate, the domain Sub-CA certificate, and the domain CA trust anchor certificate.
The arrows in the figure indicate the issuing of a certificate, i.e. the owner of (0) issued (1) and the owner of (1) issued (2).</t>
        <figure anchor="fig-twoca">
          <name>Two-Level CA PKI</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="320" width="168" viewBox="0 0 168 320" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,32 L 8,80" fill="none" stroke="black"/>
                <path d="M 16,224 L 16,288" fill="none" stroke="black"/>
                <path d="M 32,128 L 32,176" fill="none" stroke="black"/>
                <path d="M 88,80 L 88,120" fill="none" stroke="black"/>
                <path d="M 88,176 L 88,216" fill="none" stroke="black"/>
                <path d="M 136,128 L 136,176" fill="none" stroke="black"/>
                <path d="M 152,224 L 152,288" fill="none" stroke="black"/>
                <path d="M 160,32 L 160,80" fill="none" stroke="black"/>
                <path d="M 8,32 L 160,32" fill="none" stroke="black"/>
                <path d="M 8,80 L 160,80" fill="none" stroke="black"/>
                <path d="M 32,128 L 136,128" fill="none" stroke="black"/>
                <path d="M 32,176 L 136,176" fill="none" stroke="black"/>
                <path d="M 16,224 L 152,224" fill="none" stroke="black"/>
                <path d="M 16,288 L 152,288" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="96,216 84,210.4 84,221.6" fill="black" transform="rotate(90,88,216)"/>
                <polygon class="arrowhead" points="96,120 84,114.4 84,125.6" fill="black" transform="rotate(90,88,120)"/>
                <g class="text">
                  <text x="52" y="52">domain</text>
                  <text x="92" y="52">CA</text>
                  <text x="120" y="52">(0)</text>
                  <text x="48" y="68">trust</text>
                  <text x="100" y="68">anchor</text>
                  <text x="68" y="148">domain</text>
                  <text x="112" y="148">(1)</text>
                  <text x="68" y="164">Sub-CA</text>
                  <text x="68" y="244">domain</text>
                  <text x="64" y="260">Registrar</text>
                  <text x="120" y="260">(2)</text>
                  <text x="36" y="276">EE</text>
                  <text x="96" y="276">certificate</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
 .------------------.
 |  domain CA (0)   |
 |  trust anchor    |
 '---------+--------'
           |
           v
    .------------.
    | domain (1) |
    | Sub-CA     |
    '------+-----'
           |
           v
  .----------------.
  |   domain       |
  | Registrar (2)  |
  | EE certificate |
  '----------------'
]]></artwork>
          </artset>
        </figure>
        <t>When the Registrar is using a COSE-signed RVR, the COSE_Sign1 object contains a protected and an unprotected header.
The Registrar MUST place all the certificates needed by MASA to validate the signature chain for its RVR in an
 '<tt>x5bag</tt>' attribute in either the protected or the unprotected header as defined in <xref section="2" sectionFormat="of" target="RFC9360"/>.</t>
      </section>
      <section anchor="masa-pinning-policy">
        <name>MASA Pinning Policy</name>
        <t>The MASA, having assembled and verified the certificate chain that signed the RVR then needs to select a certificate to pin.
(For the case that only the Registrar's End-Entity certificate is included, only this certificate can be selected and this section does not apply.)
The BRSKI policy for pinning by the MASA as described in <xref section="5.5.2" sectionFormat="of" target="RFC8995"/> leaves much flexibility to the manufacturer.</t>
        <t>The present document adds the following rules to the MASA pinning policy to reduce the network load on the constrained network side:</t>
        <ol spacing="normal" type="1"><li>
            <t>for a voucher containing a nonce, it SHOULD pin the most specific (lowest-level) CA certificate in the chain.</t>
          </li>
          <li>
            <t>for a nonceless voucher, it SHOULD pin the least-specific (highest-level) CA certificate in the chain that is allowed under the MASA's policy for this specific domain.</t>
          </li>
        </ol>
        <t>The rationale for 1. is that in case of a voucher with nonce, the voucher is valid only in scope of the present DTLS connection between Pledge and Registrar anyway, so there is no
benefit to pin a higher-level CA. By pinning the most specific CA the constrained Pledge can validate its DTLS connection using less crypto operations. The
rationale for pinning a CA instead of the Registrar's End-Entity certificate directly is based on the following benefit on constrained networks: the pinned certificate in the voucher
can in common cases be re-used as a Domain CA trust anchor during the EST enrollment and during the operational phase that follows after EST enrollment, as explained in <xref target="brski-est-extensions-pledge"/>.</t>
        <t>The rationale for 2. follows from the flexible BRSKI trust model for, and purpose of, nonceless vouchers (Sections 5.5.* and 7.4.1 of <xref target="RFC8995"/>).</t>
        <t>Referring to the example of <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.</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 (RPK)</name>
        <t>Specifically for the most-constrained use cases, the pinning of the raw public key (RPK) of the Registrar is also supported in the constrained voucher, instead of a PKIX certificate.
This is used by the RPK variant of cBRSKI described in <xref target="rpk-considerations"/>, but it can also be used in the default cBRSKI flow as a means to reduce voucher size.</t>
        <t>For both cases, if an RPK is pinned, it MUST be the RPK of the Registrar, which equals the public key of the Registrar's EE certificate.</t>
        <t>When the Pledge is known by MASA to support the RPK variant only, the voucher produced by the MASA pins the RPK of the Registrar in either the '<tt>pinned-domain-pubk</tt>'
or '<tt>pinned-domain-pubk-sha256</tt>' attribute of the voucher data.
This is described in more detail in <xref target="RFC8366bis"/> and <xref target="rpk-considerations"/>.</t>
        <t>When the Pledge is known by MASA to support PKIX operations, the '<tt>pinned-domain-cert</tt>' attribute present in a voucher normally pins a domain certificate.
That can be either the End-Entity certificate of the Registrar, or the certificate of a domain CA, as specified in <xref target="masa-pinning-policy"/>.
However, if the Pledge is known by MASA to also support RPK pinning and the MASA policy intends to pin the Registrar in the voucher (and not a CA), then MASA SHOULD pin the
RPK (RPK3 in <xref target="fig-pinning"/>) of the Registrar instead of the Registrar's End-Entity certificate to save space in the voucher.</t>
        <figure anchor="fig-pinning">
          <name>Raw Public Key (RPK) pinning examples</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="288" width="472" viewBox="0 0 472 288" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,208 L 8,256" fill="none" stroke="black"/>
                <path d="M 16,48 L 16,80" fill="none" stroke="black"/>
                <path d="M 16,128 L 16,160" fill="none" stroke="black"/>
                <path d="M 72,88 L 72,120" fill="none" stroke="black"/>
                <path d="M 72,168 L 72,200" fill="none" stroke="black"/>
                <path d="M 120,48 L 120,80" fill="none" stroke="black"/>
                <path d="M 120,128 L 120,160" fill="none" stroke="black"/>
                <path d="M 128,208 L 128,256" fill="none" stroke="black"/>
                <path d="M 176,208 L 176,256" fill="none" stroke="black"/>
                <path d="M 184,112 L 184,160" fill="none" stroke="black"/>
                <path d="M 240,168 L 240,200" fill="none" stroke="black"/>
                <path d="M 296,112 L 296,160" fill="none" stroke="black"/>
                <path d="M 296,208 L 296,256" fill="none" stroke="black"/>
                <path d="M 344,32 L 344,80" fill="none" stroke="black"/>
                <path d="M 344,128 L 344,160" fill="none" stroke="black"/>
                <path d="M 344,208 L 344,256" fill="none" stroke="black"/>
                <path d="M 400,88 L 400,120" fill="none" stroke="black"/>
                <path d="M 400,168 L 400,200" fill="none" stroke="black"/>
                <path d="M 448,128 L 448,160" fill="none" stroke="black"/>
                <path d="M 456,32 L 456,80" fill="none" stroke="black"/>
                <path d="M 464,208 L 464,256" fill="none" stroke="black"/>
                <path d="M 344,32 L 456,32" fill="none" stroke="black"/>
                <path d="M 16,48 L 120,48" fill="none" stroke="black"/>
                <path d="M 16,80 L 120,80" fill="none" stroke="black"/>
                <path d="M 344,80 L 456,80" fill="none" stroke="black"/>
                <path d="M 184,112 L 296,112" fill="none" stroke="black"/>
                <path d="M 16,128 L 120,128" fill="none" stroke="black"/>
                <path d="M 344,128 L 448,128" fill="none" stroke="black"/>
                <path d="M 16,160 L 120,160" fill="none" stroke="black"/>
                <path d="M 184,160 L 296,160" fill="none" stroke="black"/>
                <path d="M 344,160 L 448,160" fill="none" stroke="black"/>
                <path d="M 8,208 L 128,208" fill="none" stroke="black"/>
                <path d="M 176,208 L 296,208" fill="none" stroke="black"/>
                <path d="M 344,208 L 464,208" fill="none" stroke="black"/>
                <path d="M 8,256 L 128,256" fill="none" stroke="black"/>
                <path d="M 176,256 L 296,256" fill="none" stroke="black"/>
                <path d="M 344,256 L 464,256" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="408,200 396,194.4 396,205.6" fill="black" transform="rotate(90,400,200)"/>
                <polygon class="arrowhead" points="408,120 396,114.4 396,125.6" fill="black" transform="rotate(90,400,120)"/>
                <polygon class="arrowhead" points="248,200 236,194.4 236,205.6" fill="black" transform="rotate(90,240,200)"/>
                <polygon class="arrowhead" points="80,200 68,194.4 68,205.6" fill="black" transform="rotate(90,72,200)"/>
                <polygon class="arrowhead" points="80,120 68,114.4 68,125.6" fill="black" transform="rotate(90,72,120)"/>
                <g class="text">
                  <text x="384" y="52">private</text>
                  <text x="52" y="68">pub-CA</text>
                  <text x="96" y="68">(1)</text>
                  <text x="384" y="68">root-CA</text>
                  <text x="432" y="68">(1)</text>
                  <text x="224" y="132">private</text>
                  <text x="52" y="148">sub-CA</text>
                  <text x="96" y="148">(2)</text>
                  <text x="224" y="148">root-CA</text>
                  <text x="272" y="148">(1)</text>
                  <text x="380" y="148">sub-CA</text>
                  <text x="424" y="148">(2)</text>
                  <text x="68" y="228">Registrar(3)</text>
                  <text x="236" y="228">Registrar(3)</text>
                  <text x="404" y="228">Registrar(3)</text>
                  <text x="60" y="244">RPK3</text>
                  <text x="228" y="244">RPK3</text>
                  <text x="396" y="244">RPK3</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
                                          .-------------.
 .------------.                           | private     |
 | pub-CA (1) |                           | root-CA (1) |
 '------------'                           '-------------'
        |                                        |       
        v             .-------------.            v       
 .------------.       | private     |     .------------. 
 | sub-CA (2) |       | root-CA (1) |     | sub-CA (2) | 
 '------------'       '-------------'     '------------' 
        |                    |                   |       
        v                    v                   v       
.--------------.     .--------------.     .--------------.
| Registrar(3) |     | Registrar(3) |     | Registrar(3) |
|    RPK3      |     |    RPK3      |     |    RPK3      |
'--------------'     '--------------'     '--------------'
                                      
]]></artwork>
          </artset>
        </figure>
      </section>
    </section>
    <section anchor="artifacts">
      <name>Artifacts</name>
      <t>The YANG (<xref target="RFC7950"/>) module and CBOR serialization for the constrained voucher as used by cBRSKI are described in <xref target="RFC8366bis"/>.
That document also assigns SID values to YANG elements in accordance with <xref target="RFC9254"/> and <xref target="RFC9595"/>.
The present section provides some examples of these artifacts and defines a new signature format for these, using COSE.</t>
      <t>Compared to the first voucher request definition done in <xref target="RFC8995"/>, the constrained voucher request adds the attributes
'<tt>proximity-registrar-pubk</tt>' and '<tt>proximity-registrar-pubk-sha256</tt>'.
One of these is optionally used to replace the '<tt>proximity-registrar-cert</tt>' attribute, for a smaller voucher request data size -
useful for the most constrained cases.</t>
      <t>The constrained voucher adds the attributes '<tt>pinned-domain-pubk</tt>' and '<tt>pinned-domain-pubk-sha256</tt>' to pin an RPK.
One of these is optionally used instead of the '<tt>pinned-domain-cert</tt>' attribute, for a smaller voucher data size.</t>
      <section anchor="example-artifacts">
        <name>Example Artifacts</name>
        <section anchor="example-pvr">
          <name>Example Pledge Voucher Request (PVR) Artifact</name>
          <t>Below, example voucher data from a constrained voucher request (PVR) from a Pledge to a Registrar is shown in CBOR diagnostic notation.
Long CBOR byte strings have been shortened for readability, using the ellipsis ("...") to indicate elided bytes. This notation is
defined in <xref target="I-D.ietf-cbor-edn-literals"/>. The enum value of the assertion attribute is
2 for the '<tt>proximity</tt>' assertion as defined in <xref section="8.3" sectionFormat="of" target="RFC8366bis"/>.</t>
          <sourcecode type="cbor-diag"><![CDATA[
{ 
 2501: {          / SID=2501, ietf-voucher-request:voucher|voucher /
   1: 2,                      / SID=2502, assertion 2 = "proximity"/
   7: h'831D5198A6CA2C7F',    / SID=2508, nonce                    /
  12: h'30593013' ... '9A54', / SID=2513, proximity-registrar-pubk /    
  13: "JADA123456789"         / SID=2514, serial-number            /
 }
}

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

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

]]></sourcecode>
          <t>While the above example voucher data includes the nonce from the PVR, the next example is for a nonce-less voucher. Instead of a nonce, it
includes an '<tt>expires-on</tt>' attribute 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 '<tt>assertion</tt>' attribute contains a weaker assertion of "verified" (0).
This indicates that the MASA verified the domain's ownership of the Pledge via some other means.</t>
          <sourcecode type="cbor-diag"><![CDATA[
{
 2451: {               / SID = 2451, ietf-voucher:voucher|voucher /
   1: 0,                      / SID = 2452, assertion "verified"  /
   2: "2022-12-06T10:15:32Z", / SID = 2453, created-on            /
   3: false,          / SID = 2454, domain-cert-revocation-checks /
   4: "2022-12-13T10:15:32Z", / SID = 2455, expires-on            /
   8: h'308201F8' ... 'FF',   / SID = 2459, pinned-domain-cert    /
  11: "JADA123456789"         / SID = 2462, serial-number         /
 }
}

]]></sourcecode>
          <t>The voucher is valid for one week. To verify the voucher's validity, the Pledge would either need an internal real-time clock
or some external means of obtaining the current time, such as Network Time Protocol (NTP) or a radio time signal receiver.</t>
        </section>
      </section>
      <section anchor="VR-COSE">
        <name>Signing Voucher and Voucher Request Artifacts with COSE</name>
        <t>The COSE_Sign1 structure is discussed in <xref section="4.2" sectionFormat="of" target="RFC9052"/>.
The CBOR object that carries the body, the signature, and the information about the body and signature is called the COSE_Sign1 structure.
It is used when only one signature is used on the body.</t>
        <t>Support for ECDSA with SHA2-256 using curve secp256r1 (aka prime256v1) is RECOMMENDED.
Most current low power hardware has support for acceleration of this algorithm.
Future hardware designs could omit this in favour of newer algorithms.
This is the ES256 (-7) 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 '<tt>crv</tt>' parameter is necessary to specify the Curve, for example value Ed25519 (6) from Table 18 of <xref target="RFC9053"/>.
The '<tt>kty</tt>' field MUST be present, and it MUST be "OKP" (Table 17 of <xref target="RFC9053"/>).</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 elliptic 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 below.</t>
        <sourcecode type="cbor-diag"><![CDATA[
18(                   / tag for COSE_Sign1                       /
 [
   h'A10126',         / protected COSE header encoding: {1: -7}  /
                      /            which means { "alg": ES256 }  /
   {},                / unprotected COSE header parameters       /
   h'A119' ... '3839', / PVR payload wrapped in CBOR byte string /
   h'4567' ... '1234'  / PVR binary Sign1 signature              /
 ]
)
]]></sourcecode>
        <t>The <xref target="COSE-registry"/> specifies the integers/encoding for the '<tt>alg</tt>' field. The '<tt>alg</tt>'
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 '<tt>x5bag</tt>' structure in the RVR as explained in <xref target="registrar-identity"/>.
Below, an example Registrar Voucher Request (RVR) is shown that includes the '<tt>x5bag</tt>' unprotected
header parameter (32). The bag contains two certificates in this case.</t>
          <sourcecode type="cbor-diag"><![CDATA[
18(                    / tag for COSE_Sign1                      /
 [
   h'A10126',          / protected COSE header encoding: {1: -7} /
                       /            which means { "alg": ES256 } /
   {                   / unprotected COSE header/
     32: [h'308202' ... '20AE', h'308201' ... '8CFF']    / x5bag /
   },
   h'A178' ... '7FED', / RVR payload wrapped in CBOR byte string /
   h'E1B7' ... '2925'  / RVR binary Sign1 signature              /
 ]
)
]]></sourcecode>
          <t>Besides storing the Registrar's own RVR-signing certificate chain (per <xref target="registrar-identity"/>), the Registrar MUST
include in the same '<tt>x5bag</tt>' structure all the certificates that the Pledge used to identify
itself in the Pledge/Registrar DTLS handshake, including the End-Entity (IDevID) certificate and all CAs up to the
root CA.
This serves two purposes:</t>
          <ol spacing="normal" type="1"><li>
              <t>A MASA that does not store the IDevIDs for all Pledges and their related sub-CAs is still able to reconstruct the
certificate chain for a given Pledge and validate the Pledge's signature on the PVR based purely on the root CA of
the Pledge's manufacturer that the MASA is storing.</t>
            </li>
            <li>
              <t>Diagnostic/debugging purposes: since the PVR's COSE signature does not store any certificates related to the signer,
but only the signature itself, it can be useful for the MASA to log or inspect the Pledge's certificate chain in
case the onboarding attempt fails.
Having the complete signing certificate chain at hand facilitates finding the root cause of the problem and helps
in the communication with the customer.</t>
            </li>
          </ol>
          <t>A '<tt>kid</tt>' (key ID) field is OPTIONAL 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 '<tt>kid</tt>' 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.</t>
          <t>By default, a Registrar does not include a '<tt>kid</tt>' parameter in the RVR since the signing key
is already identified by the signing certificates chain included in the COSE '<tt>x5bag</tt>' structure.
A Registrar nevertheless MAY use a '<tt>kid</tt>' parameter in its RVR to identify its signing key/identity.</t>
          <t>The method of generating such '<tt>kid</tt>' 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 '<tt>kid</tt>' field MUST be configurable, on a per-manufacturer basis,
to select a particular method for generating the '<tt>kid</tt>' value such that it is compatible with the method that
the manufacturer expects. Note that the '<tt>kid</tt>' field always has a CBOR byte string (bstr) format.</t>
          <t>In <xref target="rvr-example"/> a further example of a signed RVR is shown.</t>
        </section>
        <section anchor="signing-of-pledge-voucher-request-pvr">
          <name>Signing of Pledge Voucher Request (PVR)</name>
          <t>Like in the RVR, a '<tt>kid</tt>' (key ID) field is also OPTIONAL 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 '<tt>kid</tt>' 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 fully verify the PVR.
Still, when required the Pledge MAY use a '<tt>kid</tt>' 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 '<tt>kid</tt>' parameter in this case may be an integer byte identifying one out of N identities
present, or it may be a hash of the public key, or anything else the Pledge vendor decides.
A Registrar normally SHOULD ignore a '<tt>kid</tt>' 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 below shows a PVR with '<tt>kid</tt>' present as an unprotected header parameter.</t>
          <sourcecode type="cbor-diag"><![CDATA[
18(                    / tag for COSE_Sign1                      /
 [
   h'A10126',          / protected COSE header encoding: {1: -7} /
                       /            which means { "alg": ES256 } /
   {
      4: h'59AB3E'     / COSE "kid" header parameter             /
   },
   h'A119' ... '3839', / PVR payload wrapped in CBOR byte string /
   h'5678' ... '7890'  / PVR binary Sign1 signature              /
 ]
)
]]></sourcecode>
          <t>The Pledge SHOULD NOT use the '<tt>x5bag</tt>' or '<tt>x5chain</tt>' COSE header parameters in the PVR.
A Registrar that processes a PVR with such a 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 '<tt>x5bag</tt>' or '<tt>x5chain</tt>' 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="pvr-example"/> a further example of a signed PVR is shown.</t>
        </section>
        <section anchor="sign-voucher-masa">
          <name>Signing of Voucher by MASA</name>
          <t>The MASA SHOULD NOT use a '<tt>kid</tt>' 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 '<tt>kid</tt>' 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 '<tt>x5bag</tt>' or '<tt>x5chain</tt>' attribute in the protected header of the voucher response, because
normally a Pledge already stores the required public key for validation of the signed voucher.
The exception case is if the MASA knows that the Pledge doesn't pre-store the MASA's public key used for signing, and thus the MASA needs to provide
a certificate or certificate chain that will enable linking the signing identity to a pre-stored Trust Anchor (CA) in the Pledge.
This approach is not recommended, because including certificates in the protected '<tt>x5bag</tt>' or '<tt>x5chain</tt>' COSE header parameters will
significantly increase the size of the voucher which impacts cBRSKI operation on constrained networks.</t>
          <t>For example, if the MASA signing key is based upon a PKI (see <xref target="I-D.ietf-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.
In BRSKI CMS signed vouchers <xref target="RFC8995"/>, the CMS structure has a place for such a certificate chain.
In cBRSKI COSE-signed vouchers, the '<tt>x5bag</tt>' attribute <xref target="RFC9360"/> placed in the
COSE protected header parameters is used to contain the needed certificates for the Pledge to form the chain.</t>
          <t>To signal the complete chain of the MASA's signing identity to the Registrar, the MASA MUST include the complete
chain of signing certificates in an '<tt>x5bag</tt>' attribute in the unprotected header of the voucher.
This allows the Registrar to optionally validate the voucher before forwarding it to the Pledge, or to validate it for
logging purposes.
There is no voucher size impact of including this certificate chain in an unprotected '<tt>x5bag</tt>' COSE header parameter for
constrained networks, because the Registrar will remove this unprotected attribute prior to forwarding the voucher
response to the Pledge, as defined in <xref target="brski-extensions-registrar"/>.</t>
          <t>Note that cBRSKI currently does not support signing the voucher with an RPK for which there is no corresponding
certificate at all.
If the MASA wants to sign a voucher with an RPK that is not part of any PKIX hierarchy, it creates
a single self-signed "placeholder" root CA certificate that uses the designated RPK as the public key.
This "placeholder" certificate is then included as the sole certificate in an unprotected '<tt>x5bag</tt>' header parameter,
as defined in the previous paragraph.</t>
          <t>Below, an example is shown of a COSE-signed voucher as created by MASA.
This example shows the common case where a protected '<tt>x5bag</tt>' (32) attribute is not used, while an unprotected
'<tt>x5bag</tt>' (32) attribute is used to communicate the MASA's signature certificate chain to the Registrar.
The bag contains two certificates in this example. One of these is the identity of the signer of the
COSE_Sign1 object, whose signature is stored as the last CBOR array element in the below example.</t>
          <sourcecode type="cbor-diag"><![CDATA[
18(                    / tag for COSE_Sign1                        /
 [
   h'A10126',          / protected COSE header encoding: {1: -7}   /
                       /            which means { "alg": ES256 }   /
   {                   / unprotected COSE header parameters        /
     32: [h'308202' ... '20AE', h'308201' ... '8CFF']      / x5bag /
   },
   h'A119' ... '3839', / voucher payload wrapped in CBOR byte str  /
   h'2A2C' ... '7FBF'  / voucher binary Sign1 signature by MASA    /
 ]
)
]]></sourcecode>
          <t>In <xref target="voucher-example"/> a further example of a signed voucher is shown.</t>
        </section>
        <section anchor="optional-validation-of-voucher-by-registrar">
          <name>Optional Validation of Voucher by Registrar</name>
          <t>For a Registrar, validation of the voucher and/or the signature of the voucher is optional, per <xref section="5.6" sectionFormat="of" target="RFC8995"/>.
However, if a Registrar does perform the validation of the signature chain, communicated in the '<tt>x5bag</tt>' unprotected
COSE header parameter (see <xref target="sign-voucher-masa"/>), it MUST validate that one of the below cases hold:</t>
          <ol spacing="normal" type="1"><li>
              <t>The signature chain is a single self-signed root CA certificate with a correct signature; and the public key in
this certificate is also the public key that signed the voucher. This represents the case where a voucher has been
effectively signed with an RPK.</t>
            </li>
            <li>
              <t>The signature chain consists of one or more certificates that can be chained to a known (preconfigured) trust root
in the Registrar.</t>
            </li>
          </ol>
          <t>The above validation elements are needed only for cases where (nonceless) vouchers are communicated over potentially
unsecure channels to the Registrar. Since the '<tt>x5bag</tt>' header parameter is not protected by the voucher's COSE
signature, it could have been modified in transit.</t>
        </section>
        <section anchor="additional-information-in-the-cose-header">
          <name>Additional Information in the COSE Header</name>
          <t>The COSE header of the signed voucher can contain COSE header parameters with additional information,
to be used by the Pledge.
This information is additional to, and separate from, the voucher data defined by <xref target="RFC8366bis"/>.</t>
          <t>An example of how this additional information can be used is adding a CBOR Web Token (CWT, <xref target="RFC8392"/>) claim in the COSE
header as defined by <xref target="RFC9597"/>, to encode the COSE signing time as an integer value in an '<tt>iat</tt>' (Issued At) CWT claim.
This information in an integer format may be useful for a Pledge that does not have date/time parsing functions, so
it is unable to parse the date/time string value contained in the voucher.
Many other types of CWT claims can be included in a voucher in the same way, as needed for particular use cases.</t>
          <t>Such additional information can also be included in a COSE header of a voucher request by a Pledge, to be used by the MASA.</t>
        </section>
      </section>
    </section>
    <section anchor="discovery">
      <name>Extensions to Discovery</name>
      <t>It is assumed that a Join Proxy (<xref target="joinproxy"/>) seamlessly provides a relayed DTLS connection between the Pledge and the Registrar.
To use a Join Proxy, a Pledge needs to discover it. For Pledge discovery of a Join Proxy, this section extends Section 4.1 of <xref target="RFC8995"/> for the cBRSKI case.</t>
      <t>In general, the Pledge may be one or more hops away from the Registrar, where one hop means the Registrar is a direct link-local neighbor of the Pledge.
The case of one hop away can be considered as a degenerate case, because a Join Proxy is not really needed then.</t>
      <t>The degenerate case would be unusual in constrained wireless network deployments, because a Registrar would typically not have a wireless network interface of the type used by 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) (<xref target="RFC6775"/>) and the 6LBR happens to host a Registrar.</t>
      <t>In order to support the degenerate case, the Registrar SHOULD announce itself as if it were a Join Proxy -- though it would actually announce its real (stateful) Registrar CoAPS endpoint.
No actual Join Proxy functionality is then required on the Registrar.</t>
      <t>That way, a Pledge only needs to discover a Join Proxy, regardless of whether it is one or more than one hop away from a relevant Registrar.
It first discovers the link-local address and the UDP join-port of a Join Proxy.
The Pledge then follows the cBRSKI procedure of initiating a DTLS connection using the link-local address and join-port of the Join Proxy.</t>
      <t>Once enrolled, a Pledge itself may function as a Join Proxy.
The decision whether or not to provide this functionality depends upon many factors and is out of scope for this document.
Such a decision might depend upon the amount of energy available to the device, the network bandwidth available, as well as CPU and memory availability.</t>
      <t>The process by which a Pledge discovers the Join Proxy, and how a Join Proxy discovers the location of the Registrar, are the subject of the remainder of this section.
Further details on both these topics are provided in <xref target="I-D.ietf-anima-constrained-join-proxy"/>.</t>
      <section anchor="discovery-operations-by-a-pledge">
        <name>Discovery Operations by a Pledge</name>
        <t>The Pledge must discover the address/port and optionally the protocol with which to communicate. The present document only defines coaps (CoAP over DTLS) as the default protocol for cBRSKI,
therefore protocol discovery is out of scope.</t>
        <t>For the discovery method, this section only defines unsecured CoAP discovery per <xref section="7" sectionFormat="of" target="RFC7252"/> as the default method. This uses CoRE Link Format <xref target="RFC6690"/> payloads.</t>
        <t><xref target="discovery-considerations"/> briefly mentions other methods that apply to specific deployment types or technologies.
Details about these deployment-specific methods, or yet other methods, new payload formats, or more elaborate CoAP-based methods, may be defined in future documents such as <xref target="I-D.ietf-anima-brski-discovery"/>.
The more elaborate methods for example may include discovering only Join Proxies that support a particular desired onboarding protocol, voucher format, or cBRSKI variant.</t>
        <t>Note that identifying the format of the voucher request and the voucher is currently not a required part of the Pledge's discovery operation.
It is assumed that all Registrars support all relevant voucher(-request) formats, while the Pledge only supports a single format.
A Pledge that makes a voucher request to a Registrar that does not support that format will receive a CoAP 4.06 Not Acceptable status code and the onboarding attempt will fail.</t>
        <t>Using CoAP discovery, a Pledge can discover a Join Proxy by sending a link-local multicast discovery message to the All CoAP Nodes address FF02::FD.
Zero, one, or multiple Join Proxies may respond.
The handling of multiple responses and absence of responses cases follow the guidelines of <xref section="4" sectionFormat="of" target="RFC8995"/>.
The discovery message is a CoAP GET request on the URI path <tt>/.well-known/core</tt> using a URI query "<tt>brski-jp=*</tt>".
This target attribute ('<tt>brski-jp</tt>') is defined for the specific purpose of discovering/advertising the join-port
in <xref section="8.2" sectionFormat="of" target="I-D.ietf-anima-constrained-join-proxy"/>.</t>
        <t>Responding Join Proxies return a CoRE Link Format document with one or more links.
Each link indicates one CoAPS endpoint that offers cBRSKI Join Proxy functionality.</t>
        <t>In case a Pledge selects a particular Join Proxy for cBRSKI onboarding, it MUST use the link-local source address of
the Join Proxy's discovery response as the destination IP address for its subsequent onboarding attempt.</t>
        <section anchor="pledge-discovery-examples">
          <name>Examples</name>
          <t>Below, an example shows the Pledge's CoAP request and the Join Proxy's CoAP response.
The Join Proxy responds from its link-local source address, which is not included in the discovery response payload.
In this example, the Join Proxy has allocated the dedicated UDP port 8485 for DTLS connections. Traffic on that port from Pledges is used for cBRSKI:</t>
          <artwork><![CDATA[
  REQ: GET coap://[ff02::fd]/.well-known/core?brski-jp=*

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

  RES: 2.05 Content
    Content-Format: 40 (application/link-format)
    Payload:
      <>;brski-jp=8485

  RES: 2.05 Content
    Content-Format: 40 (application/link-format)
    Payload:
      <>;brski-jp="63245"
]]></artwork>
          <t>In the final example, a single Join Proxy host responds with two distinct cBRSKI endpoints.
The Pledge may now select one of the two CoAP endpoints for initiating its DTLS connection.</t>
          <artwork><![CDATA[
  REQ: GET coap://[ff02::fd]/.well-known/core?brski-jp=*

  RES: 2.05 Content
    Content-Format: 40 (application/link-format)
    Payload:
      <>;brski-jp=61616,
      <>;brski-jp=61617;var=",cmp"
]]></artwork>
          <t>The first endpoint on port 61616 supports only the default cBRSKI protocol variation as defined by this document.
The second endpoint, on port 61617, supports the same default variation as well as the variation "cmp",
enrollment using the Lightweight CMP Profile <xref target="RFC9483"/> instead of EST-coaps.
These supported variations are indicated by the '<tt>var</tt>' target attribute defined by <xref target="I-D.ietf-anima-brski-discovery"/>.
The value of '<tt>var</tt>' is a comma-separated list of Variation Strings, in which the empty first element indicates
the default cBRSKI variation.</t>
          <t>A Pledge not aware of these variations can safely ignore these values, because the base cBRSKI protocol is supported
by both endpoints, as indicated by the target attribute ('<tt>brski-jp</tt>').
If however a Pledge is aware of these variations, it can select the endpoint with the variation it prefers,
in case multiple options are discovered.
The use of attributes with a single base resource type allows future extensibility of cBRSKI, and enables the
Join Proxies to support (newer) cBRSKI variants that are unknown to them.</t>
        </section>
      </section>
      <section anchor="discovery-operations-by-a-join-proxy">
        <name>Discovery Operations by a Join Proxy</name>
        <t>A Join Proxy needs to discover a Registrar, either at the moment it needs to relay data (of a Pledge) towards the Registrar, or prior to that moment. For example, it may start Registrar
discovery as soon as it is requested to be enabled in a Join Proxy role. It may periodically redo this discovery, or periodically or on-demand check that the Registrar is still available
in the network at the discovered IP address.</t>
        <t>As shown in the final example in <xref target="pledge-discovery-examples"/>, a Join Proxy could discover multiple Registrars in its network
and present these options to the Pledge.
Each of these Registrars may support specific variations/extensions of cBRSKI - which may be defined in future documents.
It is up to the administrator of the network how many Registrars are enabled.</t>
        <t>Further details on CoAP discovery of the Registrar by a Join Proxy are provided in <xref section="5.1" sectionFormat="of" target="I-D.ietf-anima-constrained-join-proxy"/>.</t>
      </section>
    </section>
    <section anchor="discovery-considerations">
      <name>Deployment-specific Discovery Considerations</name>
      <t>This section details how discovery of a Join Proxy is done by the Pledge in specific deployment scenarios.
Future work such as <xref target="I-D.ietf-anima-brski-discovery"/> may define more details on discovery operations in
the specific deployments listed here.</t>
      <section anchor="tisch-deployments">
        <name>6TiSCH Deployments</name>
        <t>In 6TiSCH networks, the Constrained Join Protocol (CoJP) is used as described in <xref target="RFC9031"/>.
Such networks are expected to use EDHOC <xref target="RFC9528"/> for key management, which is out of scope of this document.
The IEEE 802.15.4 Enhanced Beacon has been extended in <xref target="RFC9032"/> to allow for discovery of a 6TiSCH-compliant Join Proxy.</t>
      </section>
      <section anchor="ip-networks-using-grasp">
        <name>IP networks using GRASP</name>
        <t>In IP networks that support GRASP <xref target="RFC8990"/>, a Pledge can discover a Join Proxy by listening for GRASP messages.
GRASP supports mesh networks, and can also be used over unencrypted Wi-Fi.</t>
        <t>Details of GRASP discovery of constrained Join Proxies are out of scope of this document and may be defined in
future work.</t>
      </section>
      <section anchor="ip-networks-using-mdns">
        <name>IP networks using mDNS</name>
        <t><xref target="RFC8995"/> defines a mechanism for the Pledge to discover a Join Proxy by sending mDNS <xref target="RFC6762"/> queries.
This mechanism can be used on any IP network which does not have another recommended mechanism.
It can be used over unencrypted Wi-Fi.
This mechanism does support link-local Join Proxy discovery in mesh networks. However, it does not support Registrar
discovery by Join Proxies in mesh networks, because the Registrar is typically not reachable by link-local communication
in that case. For this, another mechanism is needed, which is out of scope of this document and may be defined in
future work.</t>
        <t>A Pledge uses an mDNS PTR query for the name "<tt>_brski-proxy._udp.local.</tt>" to discover link-local constrained Join Proxies.
The label "<tt>_udp</tt>" here indicates a query for cBRSKI constrained Join Proxies, as opposed to "<tt>_tcp</tt>" defined in <xref target="RFC8995"/>
which is for discovering BRSKI Proxies.</t>
      </section>
      <section anchor="thread-networks-using-mesh-link-establishment-mle">
        <name>Thread Networks using Mesh Link Establishment (MLE)</name>
        <t>Thread <xref target="Thread"/> is a wireless mesh network protocol based on 6LoWPAN <xref target="RFC6282"/> and other IETF protocols. In Thread, a new device
discovers potential Thread networks and Thread nodes 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.</t>
        <t>The new device sends discovery requests on different IEEE 802.15.4 radio channels, to which Thread nodes
(if any present) respond with a discovery response containing information about their respective network.
The MLE discovery response message contains UDP port information to signal the new device which UDP port to use for its
DTLS connection to the Join Proxy function.
The link-local IPv6 source address of the MLE response message indicates the address of the Join Proxy.</t>
        <t>Once a suitable Thread node is selected as its Join Proxy, 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 Join Proxy.
This link is not yet secured at the radio/MAC link layer: link-layer security will be set up once the new device is
approved by the commissioning application to join the Thread network, and it gets provisioned with
network access credentials.</t>
        <t>A Thread node that is capable to act as a Join Proxy will only enable this role if the network-wide configuration data
indicates that new device commissioning is allowed.</t>
      </section>
    </section>
    <section anchor="design-considerations">
      <name>Design and Implementation Considerations</name>
      <section anchor="voucher-format-and-encoding">
        <name>Voucher Format and Encoding</name>
        <t>The design considerations for vouchers from <xref section="10" sectionFormat="of" target="RFC8366bis"/> apply. Specifically for CBOR encoding of voucher data,
one key difference with JSON encoding is that the names of the leaves in the YANG definition do not affect the size of the resulting CBOR,
if the SID (<xref target="RFC9254"/>, <xref target="RFC9595"/>) translation process is used that assigns integers to the names.</t>
        <t>To obtain the lowest code size and RAM use on the Pledge, it is recommended that a Pledge is designed to only process/generate these SID integers and not the lengthy strings.
The MASA in that case is required to generate the voucher data for that Pledge using only SID integers.
Yet, this MASA MUST still support both SID integers and strings, to be able to process attribute (string)
names in the RVR which the Registrar may use.</t>
      </section>
      <section anchor="coap-usage">
        <name>CoAP Usage</name>
        <t>A successful POST request to the Registrar's telemetry resources (<tt>/vs</tt>, <tt>/es</tt>) returns a 2.04 Changed response with empty payload.</t>
        <t>A CoAP client sending a request should be aware that the server, even in case of an empty payload, may use either a piggybacked
CoAP response (for example ACK with code 2.04) but may also respond with a separate CoAP response.
This is first an ACK message with code 0.0 that acknowledges the reception of the request.
It is followed by a CON message with a code 2.04 response in a separate CoAP message.
See <xref target="RFC7252"/> for details.</t>
      </section>
      <section anchor="use-of-cbrski-with-https">
        <name>Use of cBRSKI with HTTPS</name>
        <t>This specification contains two major 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 makes sense 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 <tt>application/voucher+cose</tt> media type described in this document.
For status telemetry requests, the format and requirements defined in <xref target="telemetry"/> remain unchanged.</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 usable 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 responsibility for supporting new formats is on the Registrar.</t>
      </section>
    </section>
    <section anchor="rpk-considerations">
      <name>Raw Public Key Variant</name>
      <section anchor="introduction-and-scope">
        <name>Introduction and Scope</name>
        <t>This section introduces a cBRSKI variant to further reduce the data volume and complexity of the cBRSKI onboarding.
The use of a raw public key (RPK) in the pinning process can significantly reduce the number of bytes sent over the wire and the number of round trips, and reduce the code footprint in a Pledge.
But it comes with a few significant operational limitations.</t>
        <t>One simplification that comes with RPK use is that a Pledge can avoid doing PKIX operations, such as certificate chain validation.</t>
      </section>
      <section anchor="dtls-connection-and-registrar-trust-anchor">
        <name>DTLS Connection and 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 the integrity of the DTLS 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 <xref section="4.4.2" sectionFormat="of" 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 PKIX certificate chain or a Raw Public Key to the Pledge: this is signaled by the Pledge.
In the case the Pledge needs an RPK, it includes the server_certificate_type of RawPublicKey.
This is shown in <xref section="5" sectionFormat="of" target="RFC7250"/>.</t>
        <t>The Pledge MUST send a client_certificate_type of X509 (not an RPK), so that the Registrar can properly identify the Pledge and distill the MASA URI information from its IDevID certificate.</t>
      </section>
      <section anchor="the-pledge-voucher-request">
        <name>The Pledge Voucher Request</name>
        <t>The Pledge puts the Registrar's public key into the '<tt>proximity-registrar-pubk</tt>' attribute of the Pledge Voucher Request (PVR).
The '<tt>proximity-registrar-pubk-sha256</tt>' can alternatively be used for efficiency, if the 32-bytes of a SHA256 hash turns out to be smaller than a typical ECDSA key.</t>
        <t>As the format of the '<tt>proximity-registrar-pubk</tt>' attribute is identical to the TLS RawPublicKey data object, no manipulation at all is needed to insert this attribute into the PVR.
This approach reduces the size of the PVR significantly, compared to including the full certificate.</t>
      </section>
      <section anchor="the-voucher-response">
        <name>The Voucher Response</name>
        <t>A returned voucher will have a '<tt>pinned-domain-pubk</tt>' attribute with the identical key as was found in the '<tt>proximity-registrar-pubk</tt>' attribute above, as well as being identical to the
Registrar's RPK in the currently active DTLS connection.
(Or alternatively the MASA may include the '<tt>pinned-domain-pubk-sha256</tt>' attribute if it knows the Pledge supports this attribute.)</t>
        <t>Validation of this key by the Pledge is what takes the DTLS connection out of the provisional state; see <xref section="5.6.2" sectionFormat="of" target="RFC8995"/> for more details.</t>
        <t>The received voucher needs to be validated by the Pledge.
The Pledge needs to have a public key to validate the signature from the MASA on the voucher.</t>
        <t>The MASA's public key counterpart of the (private) MASA signing key MUST be already installed in the Pledge at manufacturing time.
Otherwise, the Pledge cannot validate the voucher's signature.</t>
      </section>
      <section anchor="the-enrollment-phase">
        <name>The Enrollment Phase</name>
        <t>A Pledge that does not support PKIX operations cannot use EST to enroll; it has to use
another method for enrollment without certificates and the Registrar has to support this method also. For example, an enrollment process that
records an RPK owned by the Pledge as a legitimate entity that is part of the domain.</t>
        <t>It is possible that the Pledge will not enroll after obtaining a valid voucher, but instead will do only a network join operation (see for example <xref target="RFC9031"/>).
How the Pledge discovers this method and details of such enrollment methods are out of scope of this document.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <section anchor="duplicate-serial-numbers">
        <name>Duplicate Serial Numbers</name>
        <t>If a manufacturer sold products with duplicated serial numbers, that use the same MASA CA as their root of trust, a
customer of one of these products can potentially perform an attack where it uses a voucher created for product 1 to
onboard product 2. This attack only works for nonceless vouchers.</t>
        <t>Note that such a situation could only arise due to manufacturer mis-management or oversight.</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.
The attacker has obtained a light bulb which happens to have the same serial number as an operational gas centrifuge which it wishes to obtain access to.
The attacker performs a normal BRSKI onboarding for the light bulb, but then uses the resulting nonceless voucher to onboard the gas centrifuge.
The attack requires that the gas centrifuge be returned to a state where it is willing to perform a new onboarding operation.
For example, a factory reset.</t>
        <t>This attack is normally prevented by the mechanisms of using different trust root CAs for different product lines, and/or
using unique serial numbers within a single MASA CA scope.</t>
        <t><xref section="6.2" sectionFormat="of" target="RFC8366bis"/> discusses cases of duplicated serial numbers in products across different CAs and the role of
the '<tt>idevid-issuer</tt>' attribute in the RVR and in the voucher to disambiguate these products.</t>
      </section>
      <section anchor="idevid-security-in-the-pledge">
        <name>IDevID Security in the Pledge</name>
        <t>The security of this protocol depends upon the Pledge identifying itself to the Registrar using its 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="RFC9334"/>.
Future work will need to specify a background-check Attestation flow as part of the voucher request/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 privileged 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-masa-coaps">
        <name>Security of the BRSKI-MASA Protocol</name>
        <t><xref target="brski-masa-protocol-format"/> explains why no CoAPS version of the BRSKI-MASA protocol is specified.
The connection from the Registrar to the MASA continues to be HTTPS as in <xref target="RFC8995"/>.</t>
        <t>This choice enables the BRSKI-MASA protocol, which operates over the open Internet, to be secured using standard
solutions that are commonly used for HTTPS over the Internet.
The use of UDP protocols across the 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.</t>
        <t>Also, in many enterprise networks outgoing UDP connections can be treated as suspicious, which could effectively block CoAP connections for some firewall configurations.
Reducing the complexity of MASA (i.e. less protocols supported) also reduces its potential attack surface, which is relevant since the MASA is 24/7 exposed on the Internet and accepting (untrusted) incoming connections.</t>
      </section>
      <section anchor="registrar-certificate-may-be-self-signed">
        <name>Registrar Certificate May Be Self-signed</name>
        <t>The provisional (D)TLS connection formed by the Pledge with the Registrar does not authenticate the Registrar's identity.
This Registrar's identity is validated by the <xref target="RFC8366bis"/> voucher that is issued by the MASA, signed with a trust anchor that was built-in to the Pledge.</t>
        <t>The Registrar may therefore use any certificate, including a self-signed one.
The only restrictions on the certificate is that it MUST have EKU bits set as detailed in <xref target="registrar-certificate-requirement-server"/> and <xref target="registrar-certificate-requirement-client"/>.</t>
      </section>
      <section anchor="use-of-rpk-alternatives-to-proximity-registrar-cert">
        <name>Use of RPK Alternatives to '<tt>proximity-registrar-cert</tt>'</name>
        <t>In <xref section="9" sectionFormat="of" target="RFC8366bis"/> two compact alternative attributes for '<tt>proximity-registrar-cert</tt>' are defined that include an RPK: '<tt>proximity-registrar-pubk</tt>' and '<tt>proximity-registrar-pubk-sha256</tt>'.
The Pledge can use these attributes 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 attributes
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 certificate the Registrar could insert in this way still encodes its own identity the additional risk
of using the RPK alternatives is negligible.</t>
        <t>When a Registrar sees a PVR that uses one of '<tt>proximity-registrar-pubk</tt>' or '<tt>proximity-registrar-pubk-sha256</tt>' attributes, this implies the Registrar must include the certificate identified by these attributes 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>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="iana-core-rt">
        <name>Resource Type Link Target Attribute Values Registry</name>
        <t>Additions to the "Resource Type (rt=) Link Target Attribute Values" IANA registry, within the "CoRE Parameters"
registry group are specified below.</t>
        <t>Reference: [This RFC]</t>
        <table anchor="iana-core-rt-values">
          <name>Resource Type (rt) link target attribute values for cBRSKI and EST-coaps</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>brski</tt></td>
              <td align="left">Base resource of all Bootstrapping Remote Secure Key Infrastructure (cBRSKI) resources</td>
            </tr>
            <tr>
              <td align="left">
                <tt>brski.rv</tt></td>
              <td align="left">cBRSKI request voucher resource</td>
            </tr>
            <tr>
              <td align="left">
                <tt>brski.vs</tt></td>
              <td align="left">cBRSKI voucher status telemetry resource</td>
            </tr>
            <tr>
              <td align="left">
                <tt>brski.es</tt></td>
              <td align="left">cBRSKI enrollment status telemetry resource</td>
            </tr>
            <tr>
              <td align="left">
                <tt>ace.est</tt></td>
              <td align="left">Base resource of all Enrollment over Secure Transport CoAPS (EST-coaps) resources</td>
            </tr>
          </tbody>
        </table>
        <t>Note that the resource type "<tt>brski</tt>" identifies a base resource in a resource hierarchy on a CoAP server, where its
sub-resources each have one of the resource types "<tt>brski.*</tt>" as defined by this specification.
Similarly, the resource type "<tt>ace.est</tt>" identifies a base resource in a resource hierarchy, where its
sub-resources each have one of the resource types "<tt>ace.est.*</tt>" as defined by <xref target="RFC9148"/>.</t>
      </section>
      <section anchor="iana-media-types">
        <name>Media Types Registry</name>
        <t>This section registers the media type <tt>application/voucher+cose</tt> in the "Media Types" IANA 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"/> as defined in this document.</t>
        <section anchor="applicationvouchercose">
          <name><tt>application/voucher+cose</tt></name>
          <artwork><![CDATA[
Type name:  application
Subtype name:  voucher+cose
Required parameters:  N/A
Optional parameters:  N/A
Encoding considerations:  binary (CBOR)
Security considerations:  Section 14 of [This RFC], and Section 12
  of [RFC 9052] for the COSE_Sign1 structure that is used.
Interoperability considerations:  Section 15.2.2 of [This RFC]
Published specification:  [This RFC]
Applications that use this media type:  cBRSKI/ANIMA, 6TiSCH, and
  other zero-touch onboarding systems
Fragment identifier considerations: N/A
Additional information:
  Deprecated alias names for this type: N/A
  Magic number(s):  N/A
  File extension(s):  .vch
  Macintosh file type code(s):  N/A
Person & email address to contact for further information:  IETF
  ANIMA Working Group (anima@ietf.org) or IETF Operations and
  Management Area Working Group (opsawg@ietf.org)
Intended usage:  COMMON
Restrictions on usage:  N/A
Author:  ANIMA WG
Change controller:  IETF
Provisional registration? (standards tree only):  NO
]]></artwork>
        </section>
        <section anchor="interoperability-considerations-for-applicationvouchercose">
          <name>Interoperability Considerations for <tt>application/voucher+cose</tt></name>
          <t>The media type defined here does not have any parameter to indicate whether names are used, or SID integers are used,
or both can be mixed within a voucher data item.
In absence of any specific further knowledge about this, a mixed use of SID integers and names MUST be assumed, which
is equivalent to the <tt>application/yang-data+cbor</tt> media type (<xref target="RFC9254"/>) without the optional '<tt>id</tt>' parameter.</t>
          <t>Furthermore,</t>
          <ul spacing="normal">
            <li>
              <t>a Registrar assumes that mixed SIDs/names MAY be present in a received PVR or voucher;</t>
            </li>
            <li>
              <t>a MASA assumes that mixed SIDs/names MAY be present in a received RVR;</t>
            </li>
            <li>
              <t>a Pledge assumes, depending on its implementation, that SIDs are present only, or names are present only, or mixed
SIDs/names are present in a received voucher.</t>
            </li>
          </ul>
          <t>Because the MASA and Pledge are under control (either directly or by contract) of the same manufacturer, they can be
co-developed regarding the type of identifiers produced and identifiers consumed in order to guarantee interoperability.</t>
        </section>
      </section>
      <section anchor="coap-content-formats-registry">
        <name>CoAP Content-Formats Registry</name>
        <t>IANA has allocated ID 836 from the "CoAP Content-Formats" registry as shown below.</t>
        <table anchor="coap-cf-registry-additions">
          <name>Additions to the IANA CoAP Content-Formats Registry</name>
          <thead>
            <tr>
              <th align="left">Media type</th>
              <th align="left">Encoding</th>
              <th align="left">ID</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>application/voucher+cose</tt></td>
              <td align="left">-</td>
              <td align="left">836</td>
              <td align="left">[This RFC]</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="iana-brski-param-registry">
        <name>Update to BRSKI Well-Known URIs Registry</name>
        <t>This section updates the "BRSKI Well-Known URIs" IANA registry of the Bootstrapping Remote Secure Key Infrastructures
(BRSKI) Parameters Registry group, by adding a new column "Short Path Segment", clarifying existing "Description" values,
and renaming the column "URI" to "Path Segment".</t>
        <t>The new "Short Path Segment" entry denotes a shorter alternative to Path Segment for the resource that can be used by a client
in a CoAP request on a well-known BRSKI resource.
A value "N/A" can be registered to denote that there is no short path segment defined.</t>
        <t>The contents of the registry with these changes applied are as follows:</t>
        <table anchor="brski-wellknown-uri-registry">
          <name>Update of the IANA BRSKI Well-Known URIs Registry</name>
          <thead>
            <tr>
              <th align="left">Path Segment</th>
              <th align="left">Short Path Segment</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>requestvoucher</tt></td>
              <td align="left">
                <tt>rv</tt></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">
                <tt>voucher_status</tt></td>
              <td align="left">
                <tt>vs</tt></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">
                <tt>requestauditlog</tt></td>
              <td align="left">
                <tt>N/A</tt></td>
              <td align="left">Request audit log: Registrar to MASA</td>
              <td align="left">
                <xref target="RFC8995"/></td>
            </tr>
            <tr>
              <td align="left">
                <tt>enrollstatus</tt></td>
              <td align="left">
                <tt>es</tt></td>
              <td align="left">Enrollment status telemetry: Pledge to Registrar</td>
              <td align="left">
                <xref target="RFC8995"/>, [This RFC]</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="structured-syntax-suffixes-registry">
        <name>Structured Syntax Suffixes Registry</name>
        <t>This section registers the "+cose" suffix in the "Structured Syntax Suffixes" IANA Registry based on the <xref target="RFC6838"/> procedure.</t>
        <artwork><![CDATA[
Name:       CBOR Object Signing and Encryption (COSE) object
+suffix:    +cose
References: the application/cose media type [RFC9052]
Encoding considerations: binary (CBOR)
Interoperability considerations:
  the application/cose media type has an optional parameter
  "cose-type". Any new media type that uses the +cose suffix
  and allows use of this parameter MUST specify this
  explicitly, per Section 4.3 of [RFC6838]. If the parameter
  "cose-type" is allowed, its usage MUST be identical to the
  usage defined for the application/cose media type in
  Section 2 of [RFC9052].
  A COSE processor handling a media type foo+cose and which
  does not know the specific type "foo" SHOULD use the
  cose-type COSE tag, if present, or cose-type parameter, if
  present, to determine the specific COSE object type during
  processing. If the specific type cannot be determined,
  it MUST assume only the generic COSE object structure and
  it MUST NOT perform security-critical operations using the
  COSE object.
Fragment identifier considerations: N/A
Security considerations: see [RFC9052]
Contact:
  IETF COSE Working Group (cose@ietf.org) or
  IESG (iesg@ietf.org)
Author/Change controller:
  IETF ANIMA Working Group (anima@ietf.org).
  IESG has change control over this registration.
]]></artwork>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC4193">
          <front>
            <title>Unique Local IPv6 Unicast Addresses</title>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <author fullname="B. Haberman" initials="B." surname="Haberman"/>
            <date month="October" year="2005"/>
            <abstract>
              <t>This document defines an IPv6 unicast address format that is globally unique and is intended for local communications, usually inside of a site. These addresses are not expected to be routable on the global Internet. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4193"/>
          <seriesInfo name="DOI" value="10.17487/RFC4193"/>
        </reference>
        <reference anchor="RFC4210">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate Management Protocol (CMP)</title>
            <author fullname="C. Adams" initials="C." surname="Adams"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="T. Kause" initials="T." surname="Kause"/>
            <author fullname="T. Mononen" initials="T." surname="Mononen"/>
            <date month="September" year="2005"/>
            <abstract>
              <t>This document describes the Internet X.509 Public Key Infrastructure (PKI) Certificate Management Protocol (CMP). Protocol messages are defined for X.509v3 certificate creation and management. CMP provides on-line interactions between PKI components, including an exchange between a Certification Authority (CA) and a client system. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4210"/>
          <seriesInfo name="DOI" value="10.17487/RFC4210"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC6066">
          <front>
            <title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <date month="January" year="2011"/>
            <abstract>
              <t>This document provides specifications for existing TLS extensions. It is a companion document for RFC 5246, "The Transport Layer Security (TLS) Protocol Version 1.2". The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6066"/>
          <seriesInfo name="DOI" value="10.17487/RFC6066"/>
        </reference>
        <reference anchor="RFC6347">
          <front>
            <title>Datagram Transport Layer Security Version 1.2</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="January" year="2012"/>
            <abstract>
              <t>This document specifies version 1.2 of the Datagram Transport Layer Security (DTLS) protocol. The DTLS protocol provides communications privacy for datagram protocols. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. The DTLS protocol is based on the Transport Layer Security (TLS) protocol and provides equivalent security guarantees. Datagram semantics of the underlying transport are preserved by the DTLS protocol. This document updates DTLS 1.0 to work with TLS version 1.2. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6347"/>
          <seriesInfo name="DOI" value="10.17487/RFC6347"/>
        </reference>
        <reference anchor="RFC6690">
          <front>
            <title>Constrained RESTful Environments (CoRE) Link Format</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <date month="August" year="2012"/>
            <abstract>
              <t>This specification defines Web Linking using a link format for use by constrained web servers to describe hosted resources, their attributes, and other relationships between links. Based on the HTTP Link Header field defined in RFC 5988, the Constrained RESTful Environments (CoRE) Link Format is carried as a payload and is assigned an Internet media type. "RESTful" refers to the Representational State Transfer (REST) architecture. A well-known URI is defined as a default entry point for requesting the links hosted by a server. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6690"/>
          <seriesInfo name="DOI" value="10.17487/RFC6690"/>
        </reference>
        <reference anchor="RFC6762">
          <front>
            <title>Multicast DNS</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="M. Krochmal" initials="M." surname="Krochmal"/>
            <date month="February" year="2013"/>
            <abstract>
              <t>As networked devices become smaller, more portable, and more ubiquitous, the ability to operate with less configured infrastructure is increasingly important. In particular, the ability to look up DNS resource record data types (including, but not limited to, host names) in the absence of a conventional managed DNS server is useful.</t>
              <t>Multicast DNS (mDNS) provides the ability to perform DNS-like operations on the local link in the absence of any conventional Unicast DNS server. In addition, Multicast DNS designates a portion of the DNS namespace to be free for local use, without the need to pay any annual fee, and without the need to set up delegations or otherwise configure a conventional DNS server to answer for those names.</t>
              <t>The primary benefits of Multicast DNS names are that (i) they require little or no administration or configuration to set them up, (ii) they work when no infrastructure is present, and (iii) they work during infrastructure failures.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6762"/>
          <seriesInfo name="DOI" value="10.17487/RFC6762"/>
        </reference>
        <reference anchor="RFC7030">
          <front>
            <title>Enrollment over Secure Transport</title>
            <author fullname="M. Pritikin" initials="M." role="editor" surname="Pritikin"/>
            <author fullname="P. Yee" initials="P." role="editor" surname="Yee"/>
            <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins"/>
            <date month="October" year="2013"/>
            <abstract>
              <t>This document profiles certificate enrollment for clients using Certificate Management over CMS (CMC) messages over a secure transport. This profile, called Enrollment over Secure Transport (EST), describes a simple, yet functional, certificate management protocol targeting Public Key Infrastructure (PKI) clients that need to acquire client certificates and associated Certification Authority (CA) certificates. It also supports client-generated public/private key pairs as well as key pairs generated by the CA.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7030"/>
          <seriesInfo name="DOI" value="10.17487/RFC7030"/>
        </reference>
        <reference anchor="RFC7250">
          <front>
            <title>Using Raw Public Keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
            <author fullname="P. Wouters" initials="P." role="editor" surname="Wouters"/>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig"/>
            <author fullname="J. Gilmore" initials="J." surname="Gilmore"/>
            <author fullname="S. Weiler" initials="S." surname="Weiler"/>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>This document specifies a new certificate type and two TLS extensions for exchanging raw public keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS). The new certificate type allows raw public keys to be used for authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7250"/>
          <seriesInfo name="DOI" value="10.17487/RFC7250"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC7959">
          <front>
            <title>Block-Wise Transfers in the Constrained Application Protocol (CoAP)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="Z. Shelby" initials="Z." role="editor" surname="Shelby"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful transfer protocol for constrained nodes and networks. Basic CoAP messages work well for small payloads from sensors and actuators; however, applications will need to transfer larger payloads occasionally -- for instance, for firmware updates. In contrast to HTTP, where TCP does the grunt work of segmenting and resequencing, CoAP is based on datagram transports such as UDP or Datagram Transport Layer Security (DTLS). These transports only offer fragmentation, which is even more problematic in constrained nodes and networks, limiting the maximum size of resource representations that can practically be transferred.</t>
              <t>Instead of relying on IP fragmentation, this specification extends basic CoAP with a pair of "Block" options for transferring multiple blocks of information from a resource representation in multiple request-response pairs. In many important cases, the Block options enable a server to be truly stateless: the server can handle each block transfer separately, with no need for a connection setup or other server-side memory of previous block transfers. Essentially, the Block options provide a minimal way to transfer larger representations in a block-wise fashion.</t>
              <t>A CoAP implementation that does not support these options generally is limited in the size of the representations that can be exchanged, so there is an expectation that the Block options will be widely used in CoAP implementations. Therefore, this specification updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7959"/>
          <seriesInfo name="DOI" value="10.17487/RFC7959"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8449">
          <front>
            <title>Record Size Limit Extension for TLS</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>An extension to Transport Layer Security (TLS) is defined that allows endpoints to negotiate the maximum size of protected records that each will send the other.</t>
              <t>This replaces the maximum fragment length extension defined in RFC 6066.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8449"/>
          <seriesInfo name="DOI" value="10.17487/RFC8449"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8710">
          <front>
            <title>Multipart Content-Format for the Constrained Application Protocol (CoAP)</title>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This memo defines application/multipart-core, an application-independent media type that can be used to combine representations of zero or more different media types (each with a Constrained Application Protocol (CoAP) Content-Format identifier) into a single representation, with minimal framing overhead.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8710"/>
          <seriesInfo name="DOI" value="10.17487/RFC8710"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC8995">
          <front>
            <title>Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
            <author fullname="M. Pritikin" initials="M." surname="Pritikin"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="T. Eckert" initials="T." surname="Eckert"/>
            <author fullname="M. Behringer" initials="M." surname="Behringer"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document specifies automated bootstrapping of an Autonomic Control Plane. To do this, a Secure Key Infrastructure is bootstrapped. This is done using manufacturer-installed X.509 certificates, in combination with a manufacturer's authorizing service, both online and offline. We call this process the Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol. Bootstrapping a new device can occur when using a routable address and a cloud service, only link-local connectivity, or limited/disconnected networks. Support for deployment models with less stringent security requirements is included. Bootstrapping is complete when the cryptographic identity of the new key infrastructure is successfully deployed to the device. The established secure connection can be used to deploy a locally issued certificate to the device as well.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8995"/>
          <seriesInfo name="DOI" value="10.17487/RFC8995"/>
        </reference>
        <reference anchor="RFC9031">
          <front>
            <title>Constrained Join Protocol (CoJP) for 6TiSCH</title>
            <author fullname="M. Vučinić" initials="M." role="editor" surname="Vučinić"/>
            <author fullname="J. Simon" initials="J." surname="Simon"/>
            <author fullname="K. Pister" initials="K." surname="Pister"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes the minimal framework required for a new device, called a "pledge", to securely join a 6TiSCH (IPv6 over the Time-Slotted Channel Hopping mode of IEEE 802.15.4) network. The framework requires that the pledge and the JRC (Join Registrar/Coordinator, a central entity), share a symmetric key. How this key is provisioned is out of scope of this document. Through a single CoAP (Constrained Application Protocol) request-response exchange secured by OSCORE (Object Security for Constrained RESTful Environments), the pledge requests admission into the network, and the JRC configures it with link-layer keying material and other parameters. The JRC may at any time update the parameters through another request-response exchange secured by OSCORE. This specification defines the Constrained Join Protocol and its CBOR (Concise Binary Object Representation) data structures, and it describes how to configure the rest of the 6TiSCH communication stack for this join process to occur in a secure manner. Additional security mechanisms may be added on top of this minimal framework.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9031"/>
          <seriesInfo name="DOI" value="10.17487/RFC9031"/>
        </reference>
        <reference anchor="RFC9032">
          <front>
            <title>Encapsulation of 6TiSCH Join and Enrollment Information Elements</title>
            <author fullname="D. Dujovne" initials="D." role="editor" surname="Dujovne"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>In the Time-Slotted Channel Hopping (TSCH) mode of IEEE Std 802.15.4, opportunities for broadcasts are limited to specific times and specific channels. Routers in a TSCH network transmit Enhanced Beacon (EB) frames to announce the presence of the network. This document provides a mechanism by which additional information critical for new nodes (pledges) and long-sleeping nodes may be carried within the EB in order to conserve use of broadcast opportunities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9032"/>
          <seriesInfo name="DOI" value="10.17487/RFC9032"/>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </reference>
        <reference anchor="RFC9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC9148">
          <front>
            <title>EST-coaps: Enrollment over Secure Transport with the Secure Constrained Application Protocol</title>
            <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
            <author fullname="P. Kampanakis" initials="P." surname="Kampanakis"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="S. Raza" initials="S." surname="Raza"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>Enrollment over Secure Transport (EST) is used as a certificate provisioning protocol over HTTPS. Low-resource devices often use the lightweight Constrained Application Protocol (CoAP) for message exchanges. This document defines how to transport EST payloads over secure CoAP (EST-coaps), which allows constrained devices to use existing EST functionality for provisioning certificates.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9148"/>
          <seriesInfo name="DOI" value="10.17487/RFC9148"/>
        </reference>
        <reference anchor="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"/>
            <author fullname="I. Petrov" initials="I." role="editor" surname="Petrov"/>
            <author fullname="A. Pelov" initials="A." surname="Pelov"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <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="RFC9360">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Header Parameters for Carrying and Referencing X.509 Certificates</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="February" year="2023"/>
            <abstract>
              <t>The CBOR Object Signing and Encryption (COSE) message structure uses references to keys in general. For some algorithms, additional properties are defined that carry parameters relating to keys as needed. The COSE Key structure is used for transporting keys outside of COSE messages. This document extends the way that keys can be identified and transported by providing attributes that refer to or contain X.509 certificates.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9360"/>
          <seriesInfo name="DOI" value="10.17487/RFC9360"/>
        </reference>
        <reference anchor="RFC9525">
          <front>
            <title>Service Identity in TLS</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="R. Salz" initials="R." surname="Salz"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>Many application technologies enable secure communication between two entities by means of Transport Layer Security (TLS) with Internet Public Key Infrastructure using X.509 (PKIX) certificates. This document specifies procedures for representing and verifying the identity of application services in such interactions.</t>
              <t>This document obsoletes RFC 6125.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9525"/>
          <seriesInfo name="DOI" value="10.17487/RFC9525"/>
        </reference>
        <reference anchor="RFC8366bis">
          <front>
            <title>A Voucher Artifact for Onboarding Protocols</title>
            <author fullname="Kent Watsen" initials="K." surname="Watsen">
              <organization>Watsen Networks</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software</organization>
            </author>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <author fullname="Toerless Eckert" initials="T. T." surname="Eckert">
              <organization>Futurewei Technologies Inc.</organization>
            </author>
            <author fullname="Qiufang Ma" initials="Q." surname="Ma">
              <organization>Huawei</organization>
            </author>
            <date day="26" month="October" year="2026"/>
            <abstract>
              <t>   This document defines a strategy to securely assign a candidate
   device (Pledge) to an Owner using a digital artifact signed, directly
   or indirectly, by the Pledge's manufacturer.  This artifact is known
   as a "Voucher".

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

   The Voucher Artifact is normally generated by the Pledge's
   manufacturer which is represented by the Manufacturer Authorized
   Signing Authority (MASA).

   This document obsoletes RFC8366: it includes a number of desired
   extensions into the YANG module.  The Voucher Request YANG module
   defined in RFC8995 is also updated and now included in this document,
   as well as other YANG extensions needed for variants of RFC8995.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-anima-rfc8366bis-39"/>
        </reference>
        <reference anchor="I-D.ietf-anima-constrained-join-proxy">
          <front>
            <title>Join Proxy for Onboarding of Constrained Network Elements</title>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <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="21" month="July" year="2026"/>
            <abstract>
              <t>   This document supports the constrained Bootstrapping Remote Secure
   Key Infrastructures (cBRSKI) onboarding protocol by adding a required
   network function, the Join Proxy.  This function can be implemented
   on a constrained node.  The goal of the Join Proxy is to help new
   constrained nodes ("Pledges") securely onboard into a new IP network
   using the cBRSKI protocol.  It acts as a circuit proxy for User
   Datagram Protocol (UDP) packets that carry the onboarding messages.
   The solution is extensible to support other UDP-based onboarding
   protocols as well.  The Join Proxy functionality is designed for use
   in constrained networks, including IPv6 over Low-Power Wireless
   Personal Area Networks (6LoWPAN) based networks in which the
   onboarding authority server ("Registrar") may be multiple IP hops
   away from a Pledge.  Despite this distance, the Pledge only needs to
   use link-local communication to complete cBRSKI onboarding.  Two
   modes of Join Proxy operation are defined, stateless and stateful, to
   allow different trade-offs regarding resource usage, implementation
   complexity and security.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-anima-constrained-join-proxy-21"/>
        </reference>
        <reference anchor="I-D.ietf-core-uri-path-abbrev">
          <front>
            <title>URI Path abbreviation in CoAP</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   Applications built on CoAP face a conflict between the technical need
   for short message sizes and the interoperability requirement of
   following BCP190 and thus using (relatively verbose) well-known URI
   paths.  This document introduces the Uri-Path-Abbrev CoAP option that
   allows expressing well-known URI paths in as little as two bytes.

   Using this option revealed a subtle flaw in RFC7252 that severely
   limited the extension point of critical options.  This document
   updates RFC7252 to rectify that.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-uri-path-abbrev-05"/>
        </reference>
        <reference anchor="ieee802-1AR" target="https://standards.ieee.org/ieee/802.1AR/6995/">
          <front>
            <title>IEEE 802.1AR Secure Device Identity</title>
            <author>
              <organization/>
            </author>
            <date year="2018"/>
          </front>
          <refcontent>IEEE Standards Association</refcontent>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC4443">
          <front>
            <title>Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification</title>
            <author fullname="A. Conta" initials="A." surname="Conta"/>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <author fullname="M. Gupta" initials="M." role="editor" surname="Gupta"/>
            <date month="March" year="2006"/>
            <abstract>
              <t>This document describes the format of a set of control messages used in ICMPv6 (Internet Control Message Protocol). ICMPv6 is the Internet Control Message Protocol for Internet Protocol version 6 (IPv6). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="89"/>
          <seriesInfo name="RFC" value="4443"/>
          <seriesInfo name="DOI" value="10.17487/RFC4443"/>
        </reference>
        <reference anchor="RFC5652">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document describes the Cryptographic Message Syntax (CMS). This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary message content. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="70"/>
          <seriesInfo name="RFC" value="5652"/>
          <seriesInfo name="DOI" value="10.17487/RFC5652"/>
        </reference>
        <reference anchor="RFC6282">
          <front>
            <title>Compression Format for IPv6 Datagrams over IEEE 802.15.4-Based Networks</title>
            <author fullname="J. Hui" initials="J." role="editor" surname="Hui"/>
            <author fullname="P. Thubert" initials="P." surname="Thubert"/>
            <date month="September" year="2011"/>
            <abstract>
              <t>This document updates RFC 4944, "Transmission of IPv6 Packets over IEEE 802.15.4 Networks". This document specifies an IPv6 header compression format for IPv6 packet delivery in Low Power Wireless Personal Area Networks (6LoWPANs). The compression format relies on shared context to allow compression of arbitrary prefixes. How the information is maintained in that shared context is out of scope. This document specifies compression of multicast addresses and a framework for compressing next headers. UDP header compression is specified within this framework. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6282"/>
          <seriesInfo name="DOI" value="10.17487/RFC6282"/>
        </reference>
        <reference anchor="RFC6775">
          <front>
            <title>Neighbor Discovery Optimization for IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs)</title>
            <author fullname="Z. Shelby" initials="Z." role="editor" surname="Shelby"/>
            <author fullname="S. Chakrabarti" initials="S." surname="Chakrabarti"/>
            <author fullname="E. Nordmark" initials="E." surname="Nordmark"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="November" year="2012"/>
            <abstract>
              <t>The IETF work in IPv6 over Low-power Wireless Personal Area Network (6LoWPAN) defines 6LoWPANs such as IEEE 802.15.4. This and other similar link technologies have limited or no usage of multicast signaling due to energy conservation. In addition, the wireless network may not strictly follow the traditional concept of IP subnets and IP links. IPv6 Neighbor Discovery was not designed for non- transitive wireless links, as its reliance on the traditional IPv6 link concept and its heavy use of multicast make it inefficient and sometimes impractical in a low-power and lossy network. This document describes simple optimizations to IPv6 Neighbor Discovery, its addressing mechanisms, and duplicate address detection for Low- power Wireless Personal Area Networks and similar networks. The document thus updates RFC 4944 to specify the use of the optimizations defined here. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6775"/>
          <seriesInfo name="DOI" value="10.17487/RFC6775"/>
        </reference>
        <reference anchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
        <reference anchor="RFC7228">
          <front>
            <title>Terminology for Constrained-Node Networks</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Ersue" initials="M." surname="Ersue"/>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <date month="May" year="2014"/>
            <abstract>
              <t>The Internet Protocol Suite is increasingly used on small devices with severe constraints on power, memory, and processing resources, creating constrained-node networks. This document provides a number of basic terms that have been useful in the standardization work for constrained-node networks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7228"/>
          <seriesInfo name="DOI" value="10.17487/RFC7228"/>
        </reference>
        <reference anchor="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <reference anchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="RFC8990">
          <front>
            <title>GeneRic Autonomic Signaling Protocol (GRASP)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="B. Carpenter" initials="B." role="editor" surname="Carpenter"/>
            <author fullname="B. Liu" initials="B." role="editor" surname="Liu"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document specifies the GeneRic Autonomic Signaling Protocol (GRASP), which enables autonomic nodes and Autonomic Service Agents to dynamically discover peers, to synchronize state with each other, and to negotiate parameter settings with each other. GRASP depends on an external security environment that is described elsewhere. The technical objectives and parameters for specific application scenarios are to be described in separate documents. Appendices briefly discuss requirements for the protocol and existing protocols with comparable features.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8990"/>
          <seriesInfo name="DOI" value="10.17487/RFC8990"/>
        </reference>
        <reference anchor="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="N. Smith" initials="N." surname="Smith"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9334"/>
          <seriesInfo name="DOI" value="10.17487/RFC9334"/>
        </reference>
        <reference anchor="RFC9483">
          <front>
            <title>Lightweight Certificate Management Protocol (CMP) Profile</title>
            <author fullname="H. Brockhaus" initials="H." surname="Brockhaus"/>
            <author fullname="D. von Oheimb" initials="D." surname="von Oheimb"/>
            <author fullname="S. Fries" initials="S." surname="Fries"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>This document aims at simple, interoperable, and automated PKI management operations covering typical use cases of industrial and Internet of Things (IoT) scenarios. This is achieved by profiling the Certificate Management Protocol (CMP), the related Certificate Request Message Format (CRMF), and transfer based on HTTP or Constrained Application Protocol (CoAP) in a succinct but sufficiently detailed and self-contained way. To make secure certificate management for simple scenarios and constrained devices as lightweight as possible, only the most crucial types of operations and options are specified as mandatory. More specialized or complex use cases are supported with optional features.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9483"/>
          <seriesInfo name="DOI" value="10.17487/RFC9483"/>
        </reference>
        <reference anchor="RFC9528">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <date month="March" year="2024"/>
            <abstract>
              <t>This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a very compact and lightweight authenticated Diffie-Hellman key exchange with ephemeral keys. EDHOC provides mutual authentication, forward secrecy, and identity protection. EDHOC is intended for usage in constrained scenarios, and a main use case is to establish an Object Security for Constrained RESTful Environments (OSCORE) security context. By reusing CBOR Object Signing and Encryption (COSE) for cryptography, Concise Binary Object Representation (CBOR) for encoding, and Constrained Application Protocol (CoAP) for transport, the additional code size can be kept very low.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9528"/>
          <seriesInfo name="DOI" value="10.17487/RFC9528"/>
        </reference>
        <reference anchor="RFC9595">
          <front>
            <title>YANG Schema Item iDentifier (YANG SID)</title>
            <author fullname="M. Veillette" initials="M." role="editor" surname="Veillette"/>
            <author fullname="A. Pelov" initials="A." role="editor" surname="Pelov"/>
            <author fullname="I. Petrov" initials="I." role="editor" surname="Petrov"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="July" year="2024"/>
            <abstract>
              <t>YANG Schema Item iDentifiers (YANG SIDs) are globally unique 63-bit unsigned integers used to identify YANG items. SIDs provide a more compact method for identifying those YANG items that can be used efficiently, notably in constrained environments (RFC 7228). This document defines the semantics, registration processes, and assignment processes for YANG SIDs for IETF-managed YANG modules. To enable the implementation of these processes, this document also defines a file format used to persist and publish assigned YANG SIDs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9595"/>
          <seriesInfo name="DOI" value="10.17487/RFC9595"/>
        </reference>
        <reference anchor="RFC9597">
          <front>
            <title>CBOR Web Token (CWT) Claims in COSE Headers</title>
            <author fullname="T. Looker" initials="T." surname="Looker"/>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <date month="June" year="2024"/>
            <abstract>
              <t>This document describes how to include CBOR Web Token (CWT) claims in the header parameters of any CBOR Object Signing and Encryption (COSE) structure. This functionality helps to facilitate applications that wish to make use of CWT claims in encrypted COSE structures and/or COSE structures featuring detached signatures, while having some of those claims be available before decryption and/or without inspecting the detached payload. Another use case is using CWT claims with payloads that are not CWT Claims Sets, including payloads that are not CBOR at all.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9597"/>
          <seriesInfo name="DOI" value="10.17487/RFC9597"/>
        </reference>
        <reference anchor="I-D.ietf-6lo-mesh-link-establishment">
          <front>
            <title>Mesh Link Establishment</title>
            <author fullname="Richard Kelsey" initials="R." surname="Kelsey">
              <organization>Silicon Labs</organization>
            </author>
            <date day="1" month="December" year="2015"/>
            <abstract>
              <t>   This document defines the mesh link establishment (MLE) protocol for
   establishing and configuring secure radio links in IEEE 802.15.4
   radio mesh networks.  MLE extends IEEE 802.15.4 for use in multihop
   mesh networks by adding three capabilities: 1) dynamically
   configuring and securing radio connections between neighboring
   devices, 2) enabling network-wide changes to shared radio parameters,
   and 3) allowing the determination of radio link quality prior to
   configuration.  MLE operates below the routing layer, insulating it
   from the details of configuring, securing, and maintaining individual
   radio links within a larger mesh network.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-6lo-mesh-link-establishment-00"/>
        </reference>
        <reference anchor="I-D.ietf-anima-masa-considerations">
          <front>
            <title>Operational Considerations for Voucher infrastructure for BRSKI MASA</title>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Thomas Werner" initials="T." surname="Werner">
              <organization>Siemens AG</organization>
            </author>
            <date day="9" month="August" year="2026"/>
            <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-ietf-anima-masa-considerations-03"/>
        </reference>
        <reference anchor="I-D.ietf-anima-jws-voucher">
          <front>
            <title>JWS signed Voucher Artifacts for Bootstrapping Protocols</title>
            <author fullname="Thomas Werner" initials="T." surname="Werner">
              <organization>Siemens AG</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="15" month="January" year="2025"/>
            <abstract>
              <t>   This document introduces a variant of the RFC8366 voucher artifact in
   which CMS is replaced by the JSON Object Signing and Encryption
   (JOSE) mechanism described in RFC7515.  This supports deployments in
   which JOSE is preferred over CMS.  In addition to specifying the
   format, the "application/voucher-jws+json" media type is registered
   and examples are provided.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-anima-jws-voucher-16"/>
        </reference>
        <reference anchor="I-D.ietf-cbor-edn-literals">
          <front>
            <title>Concise Diagnostic Notation (CDN)</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="31" month="October" year="2026"/>
            <abstract>
              <t>   This document formalizes and consolidates the definition of the
   Concise Diagnostic Notation (CDN) of the Concise Binary Object
   Representation (CBOR), addressing implementer experience.

   Replacing CDN's previous informal descriptions, it updates RFC 8949,
   obsoleting its Section 8, and RFC 8610, obsoleting its Appendix G.

   It also specifies registry-based extension points and uses them to
   support text representations such as of epoch-based dates/times and
   of IP addresses and prefixes.


   // (This cref will be removed by the RFC editor:) This revision -29
   // attempts to implement various change requests not covered in -28
   // that have been discussed in the 2026-08-19 and 2026-09-30 WG
   // interim meetings, but does not attempt to reflect the outcome of
   // those discussions.  The text also does not have WG input yet on
   // any renaming decisions (CDN name, b1/t1 name).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-literals-29"/>
        </reference>
        <reference anchor="I-D.ietf-anima-brski-discovery">
          <front>
            <title>BRSKI discovery and variations</title>
            <author fullname="Toerless Eckert" initials="T. T." surname="Eckert">
              <organization>Futurewei USA</organization>
            </author>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <date day="31" month="October" year="2026"/>
            <abstract>
              <t>   This document specifies procedures for variations of the
   "Bootstrapping Remote Secure Key Infrastructure" (BRSKI) architecture
   of protocols to automatically announce, discover, and select
   responders using different discovery mechanisms such as DNS-SD,
   GRASP, or CORE-LF.  Different variations are not interoperable, so
   initiators need to be able to find responders that support the
   variation(s) they support.  Procedures are defined for BRSKI proxies
   that allow proxying of traffic for any current or future variation.
   Procedures to discover BRSKI Pledges by their identifier are defined.
   Extensibility is provided through a set of IANA registries.

   This document updates I-D.ietf-anima-brski-prm, RFC 6690, and RFC
   9733.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-anima-brski-discovery-16"/>
        </reference>
        <reference anchor="I-D.ietf-cose-cbor-encoded-cert">
          <front>
            <title>CBOR Encoded X.509 Certificates (C509 Certificates)</title>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Shahid Raza" initials="S." surname="Raza">
              <organization>University of Glasgow</organization>
            </author>
            <author fullname="Joel Höglund" initials="J." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Martin Furuhed" initials="M." surname="Furuhed">
              <organization>IN Groupe</organization>
            </author>
            <author fullname="Lijun Liao" initials="L." surname="Liao">
              <organization>NIO Inc.</organization>
            </author>
            <date day="24" month="September" year="2026"/>
            <abstract>
              <t>   This document specifies a CBOR encoding of X.509 certificates.  The
   resulting certificates are called C509 certificates.  The CBOR
   encoding supports a large subset of RFC 5280 and common certificate
   profiles, and it is extensible.

   Two types of C509 certificates are defined.  One type is an
   invertible CBOR re-encoding of DER-encoded X.509 certificates with
   the signature field copied from the DER encoding.  The other type is
   identical except that the signature is computed over the CBOR
   encoding instead of the DER encoding, thereby avoiding the use of
   ASN.1.  Both types of certificates have the same semantics as X.509
   while providing comparable size reduction.

   This document also specifies CBOR-encoded data structures for
   certification requests and certification request templates, new COSE
   headers, as well as a TLS certificate type and a file format for
   C509.  This document updates RFC 6698 by extending the TLSA selectors
   registry to include C509 certificates.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-cbor-encoded-cert-21"/>
        </reference>
        <reference anchor="I-D.ietf-uta-tls13-iot-profile">
          <front>
            <title>TLS/DTLS 1.3 Profiles for the Internet of Things</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of the Bundeswehr Munich</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>NVIDIA</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Daniel Migault" initials="D." surname="Migault">
              <organization>Ericsson</organization>
            </author>
            <date day="3" month="September" year="2026"/>
            <abstract>
              <t>   RFC 7925 offers guidance to developers on using TLS/DTLS 1.2 for
   Internet of Things (IoT) devices with resource constraints.  This
   document is a companion to RFC 7925, defining TLS/DTLS 1.3 profiles
   for IoT devices.  Additionally, it updates RFC 7925 with respect to
   the X.509 certificate profile and ciphersuite requirements.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/thomas-fossati/draft-tls13-iot.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-uta-tls13-iot-profile-25"/>
        </reference>
        <reference anchor="COSE-registry" target="https://www.iana.org/assignments/cose/cose.xhtml">
          <front>
            <title>CBOR Object Signing and Encryption (COSE) registry group</title>
            <author initials="" surname="IANA">
              <organization/>
            </author>
            <date year="2017" month="January" day="11"/>
          </front>
        </reference>
        <reference anchor="Thread" target="https://www.threadgroup.org/">
          <front>
            <title>Thread Group website</title>
            <author initials="" surname="Thread Group, Inc">
              <organization/>
            </author>
            <date year="2026" month="June"/>
          </front>
        </reference>
        <reference anchor="I-D.irtf-t2trg-taxonomy-manufacturer-anchors">
          <front>
            <title>A Taxonomy of operational security considerations for manufacturer installed keys and Trust Anchors</title>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="24" month="August" year="2026"/>
            <abstract>
              <t>   This document provides a taxonomy of methods used by manufacturers of
   silicon and devices to secure private keys and public trust anchors.
   This deals with two related activities: how trust anchors and private
   keys are installed into devices during manufacturing, and how the
   related manufacturer held private keys are secured against
   disclosure.

   This document does not evaluate the different mechanisms, but rather
   just serves to name them in a consistent manner in order to aid in
   communication.


   // This document is a product of the Internet Research Task Force
   // (IRTF).  The IRTF publishes the results of Internet-related
   // research and development activities.  These results might not be
   // suitable for deployment.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-t2trg-taxonomy-manufacturer-anchors-21"/>
        </reference>
      </references>
    </references>
    <?line 1643?>

<section anchor="software-and-library-support-for-cbrski">
      <name>Software and Library Support for cBRSKI</name>
      <t>This appendix lists software and security libraries that may be useful for implementing cBRSKI functionality.</t>
      <section anchor="open-source-cbrski-implementations">
        <name>Open Source cBRSKI Implementations</name>
        <t>There are a few ongoing open source projects to support cBRSKI development and testing. These include:</t>
        <ul spacing="normal">
          <li>
            <t>OpenThread Registrar (OT Registrar) - a cBRSKI Registrar, test MASA server, and test Pledge written in Java.
<eref target="https://github.com/EskoDijk/ot-registrar">Link</eref></t>
          </li>
          <li>
            <t>OpenThread CCM (pre-alpha) - a cBRSKI Pledge and Join Proxy for OpenThread-based IoT nodes, written in C/C++. OpenThread nodes implement the <xref target="Thread"/> protocol.
<eref target="https://github.com/EskoDijk/openthread/pull/7">Link</eref></t>
          </li>
          <li>
            <t>OpenThread Network Simulator v2 (OTNS2) - a CLI + GUI simulator for OpenThread IoT nodes in 6LoWPAN <xref target="RFC6282"/> mesh networks, able to accurately simulate cBRSKI Pledges onboarding (pre-alpha functionality) to a Thread mesh network via an OT Registrar.
<eref target="https://github.com/EskoDijk/ot-ns/pull/165">Link</eref></t>
          </li>
          <li>
            <t>Fountain - a BRSKI/6TiSCH Registrar with support for COSE-signed vouchers, written in Ruby.
<eref target="https://github.com/AnimaGUS-minerva/fountain">Link</eref></t>
          </li>
        </ul>
      </section>
      <section anchor="libsup">
        <name>Security Library Support</name>
        <t>For the implementation of BRSKI/cBRSKI, the use of a software library to manipulate PKIX certificates, establish secure (D)TLS connections, and use crypto algorithms is often beneficial. Two C-based examples are OpenSSL and mbedtls. Others more targeted to specific platforms or languages exist. It is important to realize that the library interfaces differ significantly between libraries.</t>
        <t>Libraries do not support all known crypto algorithms. Before deciding on a library, it is important to look at their supported crypto algorithms and the roadmap for future support. Apart from availability, the library footprint, and the required execution cycles should be investigated beforehand.</t>
        <t>The handling of certificates usually includes the checking of a certificate chain. In some libraries, chains are constructed and verified on the basis of a set of certificates, the trust anchor (usually a self signed root CA), and the target certificate. In other libraries, the chain must be constructed beforehand and obey ordering criteria. Verification always includes the checking of the signatures. Less frequent is the checking of 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 library can be used to construct a (D)TLS connection. It is useful to realize that differences between (D)TLS implementations will occur due to the differences in the certificate 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 succesful DTLS connection establishment.</t>
        <section anchor="openssl-example-code">
          <name>OpenSSL Example Code</name>
          <t>From OpenSSL's apps/verify.c :</t>
          <sourcecode type="c"><![CDATA[
<CODE BEGINS>
X509 *x = NULL;
int i = 0, ret = 0;
X509_STORE_CTX *csc;
STACK_OF(X509) *chain = NULL;
int num_untrusted;

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

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

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

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

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

<CODE ENDS>
]]></sourcecode>
        </section>
      </section>
      <section anchor="appendix-gencerts">
        <name>Generating Certificates with OpenSSL</name>
        <t>This informative appendix shows example Bash shell scripts to generate test PKIX certificates for the Pledge IDevID, the Registrar and the MASA.
The shell scripts cannot be run stand-alone because they depend on input files which are not all included in this appendix. Nevertheless,
these scripts may provide guidance on how OpenSSL can be configured for generating cBRSKI certificates.</t>
        <t>The scripts were tested with OpenSSL 3.0.2. Older versions may not work -- OpenSSL 1.1.1 for example does not support all extensions used.</t>
        <sourcecode type="bash"><![CDATA[
<CODE BEGINS>
#!/bin/bash
# File: create-cert-Pledge.sh
# Create new cert for: Pledge IDevID

# days certificate is valid - aim for the last day of 9999, near
# the 802.1AR "does not expire" end date 9999-12-31 23:59:59Z.
# notBefore defaults to 'now', and openssl x509 requires whole days,
# notAfter lands on 9999-12-31 at the current time-of-day. Truncating
# day count keeps notAfter at or below the X.509 max date (going past
# it makes OpenSSL silently emit an empty cert).
SECONDS1=`date +%s` # time now (= cert notBefore)
SECONDS2=`date --date="9999-12-31 23:59:59Z" +%s` # target end date
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 - notBefore defaults to 'now', notAfter = now + VALIDITY
openssl x509 -set_serial 32429 -CAform PEM -CA output/masa_ca.pem \
  -CAkey keys/privkey_masa_ca.pem -extfile x509v3.ext -extensions \
  pledge_ext -req -in $NAME.csr -out output/$NAME.pem \
  -days $VALIDITY -sha256

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

# delete temp files
rm -f $NAME.csr

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

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

[ req ]
prompt = no

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

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

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

[ masa_ext ]
keyUsage = critical, digitalSignature, nonRepudiation, \
           keyEncipherment, dataEncipherment
basicConstraints=CA:FALSE
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
# Set TLS server (and client) usage for the MASA's TLS endpoint.
#  see www.openssl.org/docs/man1.1.1/man5/x509v3_config.html
extendedKeyUsage = critical, serverAuth, clientAuth

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

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

# days certificate is valid
VALIDITY=1095

# cert filename
NAME=registrar

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

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

# delete temp files
rm -f $NAME.csr

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

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

# days certificate is valid
VALIDITY=3650

NAME=masa_ca

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

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

# delete temp files
rm -f $NAME.csr

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

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

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

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

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

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

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

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

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

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

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

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

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

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

]]></sourcecode>
        </section>
      </section>
      <section anchor="pvr-example">
        <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 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 (application/voucher+cose)
    Payload: <signed_pvr>
]]></artwork>
        <t>When the Join Proxy receives the DTLS handshake messages from the Pledge, it will relay these messages to the Registrar.
The payload signed_voucher_request is shown as hexadecimal dump (with lf added) below:</t>
        <sourcecode type="pseudocode"><![CDATA[
D28443A10126A0587EA11909C5A40102074823BFBBC9C2BCF2130C585B305930
1306072A8648CE3D020106082A8648CE3D030107034200042030855BE846910B
3ECB15CAF8572D3EB565BDC654A15EFAF6EDEBAA8B9E1608C5C910C93A20868F
C8504D370F1B26FA9759F67983BB78863EDA9ACBEA5124F60D6D4A4144413132
33343536373839584068987DE8B007F4E9416610BBE2D48E1D7EA1032092B8BF
CE611421950F45B22F17E214820C07E777ADF86175E25D3205568404C25FCEEC
1B817C7861A6104B3D

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

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

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

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

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

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

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

]]></sourcecode>
        <t>The largest element in the voucher is identified by key 8, which decodes to SID 2459 (pinned-domain-cert) based
on the delta encoding defined by <xref target="RFC9254"/>.
It contains the complete PKIX (DER-encoded X.509v3) certificate of the Registrar's domain CA. This certificate is
shown in <xref target="cose-example-domain-ca-cert"/>.</t>
      </section>
    </section>
    <section anchor="appendix-pledge-profiles">
      <name>Pledge Device Class Profiles</name>
      <t>cBRSKI 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 type an optimal trade-off between functionality, development/maintenance cost and hardware cost can be made.</t>
      <t>This appendix illustrates different selection outcomes by means of defining different example "profiles" of constrained Pledges. In the following
subsections, these profiles are defined and a comparison is provided.</t>
      <section anchor="profile-min">
        <name>Minimal Pledge</name>
        <t>The Minimal Pledge profile (Min) aims to reduce code size and hardware cost to a minimum. This comes with some severe functional restrictions, in particular:</t>
        <ul spacing="normal">
          <li>
            <t>No support for EST re-enrollment: whenever this would be needed, a factory reset followed by a new onboarding process is required.</t>
          </li>
          <li>
            <t>No support for change of Registrar: for this case, a factory reset followed by a new onboarding process is required.</t>
          </li>
        </ul>
        <t>This profile would be appropriate for single-use devices which must be replaced rather than re-deployed.
That might include medical devices, but also sensors used during construction, such as concrete temperature sensors.</t>
      </section>
      <section anchor="profile-typ">
        <name>Typical Pledge</name>
        <t>The Typical Pledge profile (Typ) aims to support a typical cBRSKI feature set including EST re-enrollment support and Registrar changes.</t>
      </section>
      <section anchor="profile-full">
        <name>Full-featured Pledge</name>
        <t>The Full-featured Pledge profile (Full) illustrates a Pledge category that supports multiple onboarding methods, hardware real-time clock, BRSKI/EST resource discovery, and
CSR Attributes request/response. It also supports most of the optional features defined in this specification.</t>
      </section>
      <section anchor="comparison-chart-of-pledge-classes">
        <name>Comparison Chart of Pledge Classes</name>
        <t>The below table specifies the functions implemented in the three example Pledge classes Min (<xref target="profile-min"/>), Typ (<xref target="profile-typ"/>) and Full (<xref target="profile-full"/>).</t>
        <table anchor="comparison-pledge-classes-table">
          <name>Comparison Chart of Pledge Classes Min, Typ and Full</name>
          <thead>
            <tr>
              <th align="left">Functions Implemented</th>
              <th align="center">Min</th>
              <th align="center">Typ</th>
              <th align="center">Full</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <strong>General</strong></td>
              <td align="center"> </td>
              <td align="center"> </td>
              <td align="center"> </td>
            </tr>
            <tr>
              <td align="left">Support cBRSKI onboarding</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">Support other onboarding method(s)</td>
              <td align="center">-</td>
              <td align="center">-</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">Real-time clock and cert time checks</td>
              <td align="center">-</td>
              <td align="center">-</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">
                <strong>cBRSKI</strong></td>
              <td align="center"> </td>
              <td align="center"> </td>
              <td align="center"> </td>
            </tr>
            <tr>
              <td align="left">CoAP discovery for <tt>rt=brski*</tt></td>
              <td align="center">-</td>
              <td align="center">-</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">Support pinned Registrar public key (RPK)</td>
              <td align="center">Y</td>
              <td align="center">-</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">Support pinned Registrar certificate</td>
              <td align="center">-</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">Support pinned Domain CA</td>
              <td align="center">-</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">
                <strong>EST-coaps</strong></td>
              <td align="center"> </td>
              <td align="center"> </td>
              <td align="center"> </td>
            </tr>
            <tr>
              <td align="left">Explicit TA database size (#certs)</td>
              <td align="center">0</td>
              <td align="center">3</td>
              <td align="center">8</td>
            </tr>
            <tr>
              <td align="left">CoAP discovery for <tt>rt=ace.est*</tt></td>
              <td align="center">-</td>
              <td align="center">-</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">GET <tt>/att</tt> and response parsing</td>
              <td align="center">-</td>
              <td align="center">-</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">GET <tt>/crts</tt> format 62 (multiple CA certs)</td>
              <td align="center">-</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">GET <tt>/crts</tt> format 281 (multiple CA certs)</td>
              <td align="center">-</td>
              <td align="center">-</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">ETag handling support for GET <tt>/crts</tt></td>
              <td align="center">-</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">Re-enrollment supported</td>
              <td align="center">- (*)</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="brski-est-extensions-pledge"/> optimized procedure</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
              <td align="center">-</td>
            </tr>
            <tr>
              <td align="left">Pro-active re-enrollment at own initiative</td>
              <td align="center">-</td>
              <td align="center">-</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">Periodic trust anchor retrieval GET <tt>/crts</tt></td>
              <td align="center">- (*)</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
            </tr>
            <tr>
              <td align="left">Supports change of Registrar identity</td>
              <td align="center">- (*)</td>
              <td align="center">Y</td>
              <td align="center">Y</td>
            </tr>
          </tbody>
        </table>
        <t>Notes: (*) means only possible via a factory-reset followed by a new cBRSKI onboarding procedure.</t>
      </section>
    </section>
    <section anchor="pledge-discovery-on-registrar">
      <name>Pledge Discovery of Onboarding and Enrollment Options</name>
      <t>The discovery functionality described in this section is informative only:
it derives from the normative CoRE documents <xref target="RFC6690"/>, <xref target="RFC7252"/> and from <xref target="RFC9148"/>.
In typical cases, for a constrained Pledge that only supports a single onboarding and enrollment method, this functionality is not needed.</t>
      <t>Note that the full-featured Pledge class defined in <xref target="profile-full"/> does support CoAP discovery functionality.</t>
      <section anchor="pledge-discovery-query-for-all-cbrski-resources">
        <name>Pledge Discovery Query for All cBRSKI Resources</name>
        <t>A Pledge that wishes to discover the available cBRSKI onboarding options/formats can do a discovery
operation using CoAP discovery per <xref section="7" sectionFormat="of" target="RFC7252"/> and <xref section="4" sectionFormat="of" target="RFC6690"/>. It first sends a CoAP discovery query to the Registrar over the secured DTLS connection.
The Registrar then responds with a CoRE Link Format payload containing the requested resources, if any.</t>
        <t>For example, if the Registrar supports a cBRSKI base resource <tt>/b</tt> in addition to the longer <tt>/.well-known/brski</tt> base
resource, and supports only the voucher format <tt>application/voucher+cose</tt> (836), and status reporting in both
CBOR (60) and JSON (50) 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 (application/link-format)
    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>In this case, the Registrar returns only the shorter URI paths matching the query filter, which are located under the
<tt>/b</tt> base resource. The <tt>/.well-known/brski</tt> based URI paths are not returned, as these are assumed to be well-known
(i.e. mandatory to support for a Registrar that offers this functionality under <tt>/b</tt>.)</t>
        <t>The Registrar is however under no obligation to provide the shorter URLs under <tt>/b</tt>, and may respond to this query with
only the <tt>/.well-known/brski/\&lt;short-name\&gt;</tt> resources for the short names as defined in
<xref target="brski-est-short-uri-table"/>, if these resources are not hosted anywhere else. This case is shown in the below interaction:</t>
        <artwork><![CDATA[
  REQ: GET /.well-known/core?rt=brski*

  RES: 2.05 Content
    Content-Format: 40 (application/link-format)
    Payload:
      </.well-known/brski>;rt=brski,
      </.well-known/brski/rv>;rt=brski.rv;ct=836,
      </.well-known/brski/vs>;rt=brski.vs;ct="50 60",
      </.well-known/brski/es>;rt=brski.es;ct="50 60"
]]></artwork>
        <t>When responding to a discovery request for cBRSKI resources, the Registrar may return the full resource paths for all
 &lt;short-name&gt; resources and the content-formats supported by these resources (using ct attributes) as shown in the above examples.
This is useful when multiple content-formats are supported for a particular resource on the Registrar and the discovering Pledge also supports multiple.</t>
        <t>Registrars that have implemented any cBRSKI or EST-coaps URI paths outside of <tt>/.well-known</tt> must process a request on
the corresponding <tt>/.well-known/brski/\&lt;short-name\&gt;</tt> or <tt>/.well-known/est/\&lt;short-name\&gt;</tt> URI paths identically.
In particular, a Pledge may use the longer (well-known) and shorter URI paths in any combination.</t>
        <t>A Registrar may also be implemented without support for the (optional) CoAP discovery.
In that case, it may for example return a 4.04 Not Found as shown in the example below, in case the Registrar does not
host the resource <tt>/.well-known/core</tt> at all.
In such case, the Pledge cannot discover any onboarding/enrollment options and so it has to rely on the default cBRSKI
resources under <tt>/.well-known/brski/...</tt> and <tt>/.well-known/est/...</tt>.</t>
        <artwork><![CDATA[
  REQ: GET /.well-known/core?rt=brski*

  RES: 4.04 Not Found
]]></artwork>
      </section>
      <section anchor="pledge-discovery-query-for-the-cbrski-base-resource">
        <name>Pledge Discovery Query for the cBRSKI Base Resource</name>
        <t>In case the client queries for only <tt>rt=brski</tt> type resources, the Registrar responds with only the base path for the cBRSKI
resources (<tt>rt=brski</tt>, resource <tt>/b</tt> in earlier examples) and no others.
(So, the query is "<tt>rt=brski</tt>", without the wildcard character.)
This is shown in the below example.
The Pledge in this case requests only the cBRSKI base resource of type <tt>rt=brski</tt> to check if cBRSKI is supported by the
Registrar and if a shorter-length cBRSKI base resource path is 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 below then shows that the Registrar indeed supports a cBRSKI resource at <tt>/b</tt>:</t>
        <artwork><![CDATA[
  REQ: GET /.well-known/core?rt=brski

  RES: 2.05 Content
    Content-Format: 40 (application/link-format)
    Payload:
      </b>;rt=brski
]]></artwork>
        <t>The Pledge can now start using any of the cBRSKI resources <tt>/b/\&lt;short-name\&gt;</tt> in a next CoAP request to the Registrar.
In above example, again the well-known resource present under <tt>/.well-known/brski</tt> is not returned because this is
assumed to be well-known to the Pledge and mandatory to support for a Registrar that offers this functionality under <tt>/b</tt>.</t>
        <t>As a follow-up example, the Pledge can now start the onboarding by sending its PVR:</t>
        <artwork><![CDATA[
  REQ: POST /b/rv
    Content-Format: 836 (application/voucher+cose)
    Accept: 836 (application/voucher+cose)
    Payload: <binary COSE-signed PVR>
]]></artwork>
      </section>
      <section anchor="usage-of-ct-attribute">
        <name>Usage of <tt>ct</tt> Attribute</name>
        <t>The return of multiple content-formats in the '<tt>ct</tt>' link format attribute by the Registrar allows the Pledge to choose the most appropriate one for a particular operation, and allows extension with new voucher formats.
Note that only content-format 836 (<tt>application/voucher+cose</tt>) is defined in this document for the voucher request resource (<tt>/rv</tt>), both as request payload and as response payload.
If the '<tt>ct</tt>' attribute is not indicated for the <tt>/rv</tt> resource in the CoRE Link Format description, this implies that at least format 836 is supported and maybe more.</t>
        <t>Note that this specification allows for <tt>application/voucher+cose</tt> payloads to be transmitted over HTTPS, as well as for
<tt>application/voucher-cms+json</tt> 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 needs to support one or more formats for the PVR and resulting voucher.
The MASA needs to support all formats that the associated Pledges use.</t>
        <t>In the below example, a Pledge queries specifically for the <tt>brski.rv</tt> resource type to learn what voucher formats are supported:</t>
        <artwork><![CDATA[
  REQ: GET /.well-known/core?rt=brski.rv

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

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

  RES: 2.05 Content
    Content-Format: 40 (application/link-format)
    Payload:
      </e/crts>;rt=ace.est.crts;ct="62 281 287",
      </e/sen>;rt=ace.est.sen;ct="281 287",
      </e/sren>;rt=ace.est.sren;ct="281 287",
      </e/att>;rt=ace.est.att,
      </e/skg>;rt=ace.est.skg,
      </e/skc>;rt=ace.est.skc
]]></artwork>
        <t>The response from the Registrar indicates that EST-coaps enrollment (<tt>/sen</tt>) and re-enrollment (<tt>/sren</tt>) is supported,
with a choice of two content-formats for the response payload:
either a PKCS#7 container with a single LDevID certificate (<tt>application/pkcs7-mime;smime-type=certs-only</tt>, content-format 281)
which is the BRSKI <xref target="RFC8995"/> encoding, or just a single LDevID certificate (<tt>application/pkix-cert</tt>, content-format 287)
which is the default cBRSKI encoding.</t>
        <t>For the EST <tt>cacerts</tt> resource (<tt>/crts</tt>) there are three content-formats supported:
an <tt>application/multipart-core</tt> container (62) per <xref target="multipart-core"/>, a PKCS#7 container with all CA certificates (281),
or a single (most relevant) CA certificate (287).</t>
        <t>The Pledge can now send a CoAP request to one of the discovered resources, with the Accept Option to indicate
which return payload content-format the Pledge wants to receive.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>We are very grateful to   <contact initials="J." surname="Schaad" fullname="Jim Schaad"/>
 for explaining COSE/CMS choices and for correcting early versions of the COSE_Sign1 objects.
</t>
      <t>
  <contact initials="M." surname="Veillette" fullname="Michel Veillette"/>
 did extensive work on _pyang_ to extend it to support the SID allocation process, and this document was among its first users.
</t>
      <t>
  <contact initials="R." surname="Housley" fullname="Russ Housley"/>
,   <contact initials="D." surname="Franke" fullname="Daniel Franke"/>
,   <contact initials="H." surname="Birkholtz" fullname="Henk Birkholtz"/>
,
  <contact initials="K." surname="Moriarty" fullname="Kathleen Moriarty"/>
,   <contact initials="X." surname="Liu" fullname="Xufeng Liu"/>

and   <contact initials="C." surname="Moberg" fullname="Karl Moberg"/>
 provided review feedback.
</t>
      <t>
The BRSKI design team has met on many Tuesdays and Thursdays for document review.
The team includes the authors and:   <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"/>
,   <contact initials="W." surname="Atwood" fullname="Bill Atwood"/>
 and   <contact initials="T." surname="Eckert" fullname="Toerless Eckert"/>
.
</t>
      <t>
  <contact initials="D." surname="Miller" fullname="Darrel Miller"/>
,   <contact initials="O." surname="Steele" fullname="Orie Steele"/>
 and   <contact initials="M." surname="Sporny" fullname="Manu Sporny"/>
 provided review feedback on the registration of the +cose structured syntax suffix.
</t>
      <t>
  <contact initials="C." surname="Bormann" fullname="Carsten Bormann"/>
 suggested the use of CBOR Web Token (CWT) claims in the voucher's COSE header.
</t>
    </section>
    <section numbered="false" anchor="changelog">
      <name>Changelog</name>
      <t>-32:
    Update cBRSKI variations discovery example to latest encoding in the BRSKI discovery draft (#359).
    Add informative ref for the two-level CA definition; and minor numbering/wording updates.
    Editorial improvements and fixes.</t>
      <t>-31:
    Move BRSKI/cBRSKI generic functions and RFC 8995 updates out of the cBRSKI-specific DTLS section (#352).
    Better formulation on how RFC 8995 and RFC 9148 are updated and where.
    Replace 'rt=brski.jp' discovery query by 'brski-jp=*' per #88 of draft-ietf-anima-constrained-join-proxy.
    Added cipher suite details for DTLS 1.2 and 1.3.
    Bugfix to Pledge IDevID cert creation script (avoid 'faketime' process which had a conditional bug).
    Updated masa-considerations reference to the adopted WG draft.</t>
      <t>-30:
    Require Pledge's DTLS cert chain to be included in RVR '<tt>x5bag</tt>' (#343).
    Add support for CoAP Uri-Path-Abbrev Option (#336).
    Move 'idevid-issuer' clarification text to draft-8366bis.
    Update the duplicate serial number attack to focus only on the case where the attack could be successful (equal CAs).
    Update section references draft-ietf-anima-8366bis to latest version.
    Remove reference to the to-be-deprecated RFC 8366.
    Align terms and notation with draft-ietf-anima-8366bis.
    Editorial (wording) updates.</t>
      <t>-29:
    Clarify that each brski.jp link indicates a root resource (<tt>/</tt>) (#335).
    Clarify that Pledge uses IP link-local address of JP's discovery response, instead of the UTF-8 encoded IP address literal (#334).
    Add example of Join Proxy offering multiple Registrars (endpoints) (#333).
    Updated CoAP request/response formatting of examples.
    Updated acknowledgements (#331).
    Editorial updates.</t>
      <t>-28:
    Cleanup of normative/informative references, setting each to right category.
    Bugfix and clarification in text around EdDSA Curve selection.
    Added section on additional information in COSE header with '<tt>iat</tt>' CWT timestamp example.
    Updates to BRSKI Well-Known URIs registry, including a rename of the "URI" column (#326).
    Unify COSE header parameters terminology (#330).
    Text formatting and editorial updates.</t>
      <t>-27:
    Clarify x5bag for storing signing chain and Registrar removes unprotected x5bag/x5chain (#324, #323, #230).
    Clarify RPK use with "placeholder" certificate.
    Merged the very similar BRSKI-MASA security considerations sections (#312).
    Require CBOR format for Pledge's/EST-client's telemetry (#309, #317).
    Removed figure captions from code examples for consistency (#315).
    Add base resource type (<tt>rt</tt>) for "<tt>ace.est</tt>" and related terminology (#314).
    Update IEEE 802.1AR reference to 2018 version (#313).
    Editorial updates.</t>
      <t>-26:
    Updated I-D/RFC references to newer versions.
    Corrected "sub-registry" term to official "registry", in IANA section.
    Explicitly imported terminology from <xref target="RFC7252"/>.
    Corrected "router" term in Thread/MLE section, with clarifications, and <xref target="Thread"/> reference fix.
    Moved references between "Informative" and "Normative" based on what's required to implement all the optional features.
    Removal of some lingering legacy text.
    Editorial improvements, bugfixes and typo corrections.</t>
      <t>-25:
    Moved all software/library support info into Appendix A and added "open source" section;
    Removed use of formal Extends/Amends Update-tags (#303, #304);
    Moved Section 14 to Appendix E (#302);
    Editorial improvements.</t>
      <t>-24:
    Rephrased well-known URL requirement in 14.1 (#292, #293);
    Added paragraph on future certificate formats like C509 (#281, #294);
    Add formal specification for CoAP discovery of Join Proxy by Pledge, instead of only showing examples (#296, #300);
    Enable mDNS discovery of Join Proxy by Pledge (also in mesh networks) and list service name to use (#297, #299);
    Add requirement to support content-format 287 in <tt>/sen</tt> and <tt>/sren</tt> response (#295, #298).</t>
      <t>-23:
    Removed Update tag for RFC 8366 (#285, #288);
    Introduced cBRSKI acronym (#284, #286);
    Added Update tag for RFC 9148 (#283, #289);
    Keep CoAP discovery as only mechanism and refer to future discovery work (#279, #282, #290);
    Introduce formal CBOR diagnostics ellipsis elision syntax (#281, #287);
    Support for multi-tier CAs by introducing multipart-core <tt>/crts</tt> format (#275, #291);
    Terminology updated for consistency with RFC 8366-bis (#274, #280);
    Rename voucher media type to <tt>application/voucher+cose</tt> and register +cose SSS (#264, #277);
    Editorial changes including section restructuring.</t>
      <t>-22:
    Streamlined text to focus mostly on the default flow, with optional functions moved to their own sections (#269, #273);
    For DTLS 1.3 client, use the record_size_limit extensions RFC 8449 (#270);
    Editorial updates;
    Reference rfc6125bis updated to RFC 9525.</t>
      <t>-11 to -21:
    (For change details see GitHub issues https://github.com/anima-wg/constrained-voucher/issues , related Pull Requests and commits.)</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:
    Examples are inverted.</t>
      <t>-02:
    Example of requestvoucher with unsigned <tt>application/cbor</tt> is added;
    attributes of voucher "refined" to optional;
    CBOR serialization of vouchers improved;
    Discovery port numbers are specified.</t>
      <t>-01:
    <tt>application/json</tt> is optional, <tt>application/cbor</tt> is compulsory;
    Cms and cose mediatypes are introduced.</t>
      <t>-00:
    Initial version.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9y963bj1pUu+h9PgS2PM0R1SOpWpapS0umWVXKsuC5qSbY7
J0lbEAlJSJEAmwClUpe9n2U/y36yM+9rLgBUlTt9epyznQybIoF1nWuuef3m
aDRKmqKZ5YfpcVXWzTIrynyafl1VDf6xWBTlbXqez6smTy/yyWqZp9/lj+lp
ebPM4IHVpMGvBpOvzy++O91KsuvrZX7fagt/Co9Mq0mZzaG/6TK7aUZF3tyM
srKYZ6NJeGl0X60md/lytL+XJHWTldOfsllVwlvQZ54kxWJJH+tmb2fn1c5e
ki3z7BCG1eTLMm+Sh9vDlBpNf6yWH3AOf1hWq0Xy4SE8NHqNA0gmWXOY1s0U
uoE25vD7yeU3CY4lL+tVLT2uFtOsyeGvl69ePR+mr3afvUySRXGYwj9fpZOs
TFd1nmbLZfaYDoqbNJvN0se83kqrZXqX1XcpTCZP0rSpJof4A3ysqyX0eFMf
UhPT/CZbzZoantDfH+f8M/6ZZKvmrloeJskoLUr48u04PS8md9lyWlclPM1r
+ha/ymfxT9USVuMC1jCfzWGgF9VN8wDrRUuDHeXzrJgdpvPJ8je4G/9c66Pj
SWb9nY3Te3h5mi/Ti6b6YD2e5bCa7Z+ox3tsZlnDNymuJkwuKyePoT/8BX/4
5w+LEr8ZlzPf23fZfJGV2YeiDn1lZVXHP1BPx0U9qdKLx7rJ525Ciw/85D9P
8PfxpJpb+yfj9HXxtzCLk/pDpd9Qk6fVpRs0Ds2azeHZ8RSe/eeialoPJUlZ
LedZU9znh/DG+TfHz3Zf7evHvd0d+fh876V+PNg5ONCP+89e6MeDV/bAi4M9
+fhiZ1+/fbH33H20B149fyUfXz57dhA+2rcHNoaXL8LHV+EBoG/5+GpnfxfI
osBzNBvVePqL5tF+27PHnruPOlk4IS/Cx5f6ce/5M/24f6Ddv3q+p32+3D84
uC5gh05Hr8eONyxvJvITPNf6zfONv1VFOVosq4+Ph/7BSbXMRzD80SJr7kbC
peCBIs/zlzt7o92jc/wTzme2vM2BIWzcNc2iPtzeJuaDR2mMz46BOLbxwza8
NYa3tg9gvbY3+F3moxunJycnqfyuTPN1fl9M8vR0mpfw2CO/oGcaPy8n+uaF
9pge1XU1KYCaqpJfQB50mO7t7ALzKcqbNqk9e6ar//zA9uRg76V9fPFC1/ng
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
2FztxrDCMybgRLWQxpxb68QFdszpPeLlrW4iqxNEQu0vKbOQZ+ixJIOklx9E
9u9RXUMCl/hWsum0jYTCUJaR/hBfeLE9TD3j7DZY7zlH5Y5xVPgaVEFETpr6
huiiDHH3C2HnVNPa0GEGGFyp0YtbbRepSip3lAm3px1S22S3NQSXbj8kugcY
mkEUJ/lkT2mI2efQz5DSK6qm2/oorTQk7eEWsbUwY6Rc0HvZ2ZtRkgJRNN1e
unokRciqefGuECQCpmAMkgwZrYEM2vDpautyiLze5PVIqDw+QLqsEg66buT4
wdA4vM6CQMfp149GQd2tpIy8mGKcf8bYIrK/9miZpbMlfvm4MIcz1y6AtUzi
tdRBZJTHz4hRnYqG6xmDYcMVrcon4ejoWqxB6+OwZ4GF6aEj2bxkQvnWHsqp
5vCpUUgqeN0vFcUZsz4rhCo49dTixXCluyy4PhnbmjHY4ibINi8mTeVOT4GW
/dJL0XQeW6jczLxmyiN5RvNqmhNeKYuCi9VyURH5D7tHuU4HwidrYpR/+Qd6
54WaOpyajLLaeX6TL5ci0ntrdCdKubr59RL7sJ/MBxsseW1sSfxGYjqKsg4h
DZUL6DjRXKdOvz31fKCHqU3zBSg7UiGKXGi0nDTkYcTUmfNvBOk+zuidVZoA
h8Qohq+tocoTOp34pcClEnT5rubcxJBSiMSOL5G/LjHiRi3Z1yNZbGSkFuTB
neZapnLDxOi1nRMXCqMnFiMzEHLi6o6PJODlo+x2mefiSBONXJ93CERGp1jg
aDQjIGilQDEIqoSEF3X2kJ5xTcbv8kcg0fOz77bECJNPR0hOo+XiA8hLPigg
VNcBAor8b2iHkRhE5SPSU0On7EErQCKAAHfWV6/VRxG7tP6uGX7omWSG0va/
trUuDolXaEHq6uw7gpHI2GMuwLstmQZm3anZxIZhMcUrkrRiC5MemN9kCF0m
Td4geRIrlOxYk0p8LJ/o4Gzc47UrCKIRx2knLkQ/iisdf22vnQLtkTdEEL7C
evfdIyfxcgXNRG64opbCuU4R8Dl90VqWGi+i0wNpHqcbew3sVPfNoKUhbF4J
JfJxGsFsPlxtJhTr2f1lVN9le88PIo2jihDxKJA2UEW0567sYEBJ3z84uC5q
g8boo4pfuWpEo0EKGPbOk+Lu/DRUHGIkQpkMhynNHtVW1MU8wKlaTSG/sGsE
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
HVUuF4Ucwn1Z4fe53cH1ZX/GdSdKMs6UfUQzjFzOjU9PXSuOTSs+QRWfoLxP
+CUC4O7Fe/pP49ODBxzLP3nwIPoURfxP49NZmCHs5/hT9F+R/OPf4qSnykJo
FW3EYOJ/4PXTcDGwzk9sYPQbpWEEHzx4wPWHbaNAJk/7QjB1+eIRGeQPLqKg
BG0ha2dmExnjoXX66llbOvWlz6zqJG/XfuFvkoK3Hjxw8dgPHpguHUnSUXS+
T+o1YbnScdb6ji6DsX3r8M8mIlmtHAJBZy0Pwk9H59FFL1ksLsSEVQayJCeb
qublIdR5oTbIoB+13HaXmxxqkelZzWf93Y17vpPqjs6TsU8ZtKeZLTGo6rRO
RuJCh5daD9r+RWXTgSGJfeKBqKafP7MSB4M88ogskV/fceMTKLYx0RWmJcEM
vWOdOVtkHE4YdOoVWLCg5Q/D1EI4c/IMiT0rXQtafaZireY490Dt5c8YykzF
mKrfImVillkCp/NlaYdSiWWQShzFWi72qFZRLzFUx7HbU9K2ahfxKu2iIlAC
NBxjYFhap5f+bcbCcROh0coa8xO7TRHPzZ23eHrMjrFaesgIuLBhUaVcJezx
XoP4O3O6yXG3NTP3DkGZ+3AqzqcfPFz//LnDf9jpMw7wTDgsA+Rk1LhVWUBW
6I5k0VXVcz6PaQ7cSeiYqOfhiJmly6JZoPLDYRDeBdZQu2Vw7as6BYIWWOgo
Dg8mTgPSfV2WW1W4i8r0/+dSJRzG3zhcCcUab+wHw+EZ17UW9mM43p/q+hO7
snclGH5oghFNkWtnwwGxiBOq1A1M/PO8IDvCC2Km2T/ckoe8IEiXEVZZythJ
ykX/N/W+woDtOqbEWKVcw269u5Ac/oVDqsaFSoj97AA0Eevkf1B3m2hgHF3M
w05gPckM5yxI5MxKzge7MmXkQ5jyi94lwXcr6KK7SWbap4uqy/2CSmhoCRw5
6KpxSDyla4Z7YCJbu5sDyeuWGGQOMyWO8RmBzTbIM9UarLMK9svZyxdRa3u9
LaUTVqzA/5V1Wp/OY09ejPUuZQSUwpjxiAg6j1j6/+7UnIZx6m6rI7fWqbtV
CnCmO/Ark9fi4pw5Qv/H3uXjH7Sejv+xl9/637v57Q/DxSMYOfvGbWHeuC3w
jeb2ejRYb9q3UvtWat+S6F29uWODNVxP6vJ286xgjnp7hddli+G1rl3ePyCP
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

-->

</rfc>
