<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.30 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-anima-constrained-voucher-10" category="std">

  <front>
    <title abbrev="Constrained Voucher">Constrained Voucher Artifacts for Bootstrapping Protocols</title>

    <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>consultancy@vanderstok.org</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="2021" month="February" day="20"/>

    <area>Internet</area>
    <workgroup>anima Working Group</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document defines a protocol to securely assign a Pledge to an
owner and to enroll it into the owner’s network.
The protocol uses an artifact that is signed by the Pledge’s manufacturer.
This artifact is known as a “voucher”.</t>

<t>This document builds upon the work in <xref target="RFC8366"></xref> and [BRSKI], but defines an encoding of
the voucher in CBOR rather than JSON, and enables the Pledge to perform its transactions using CoAP rather than HTTPS.</t>

<t>The use of Raw Public Keys instead of X.509 certificates for security operations is also explained.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>Secure enrollment of new nodes into constrained networks with constrained nodes
presents unique challenges. There are network bandwidth and code size issues to contend with.
A solution for autonomous enrollment such as <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/> may be too large in terms of
code size or bandwidth required.</t>

<t>Therefore, this document defines a constrained version of the voucher artifact <xref target="RFC8366"/>, along with a constrained version of BRSKI <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/> that makes use of the constrained CoAP-based version of EST, EST-coaps <xref target="I-D.ietf-ace-coap-est"/> rather than EST over HTTPS <xref target="RFC7030"/>.</t>

<t>While the <xref target="RFC8366"/> voucher is by default serialized to JSON with a signature in CMS,
this document defines a new voucher serialization to CBOR (<xref target="RFC7049"/>) with a signature in COSE <xref target="I-D.ietf-cose-rfc8152bis-struct"/>.
This COSE-signed CBOR-encoded voucher can be transported using secured CoAP or HTTP.
The CoAP connection (between Pledge and Registrar) is to be protected by either OSCORE+EDHOC, or DTLS (CoAPS). The HTTP connection
(between Registrar and MASA) is to be protected using TLS (HTTPS).</t>

<t>This document has a similar structure to <xref target="RFC8366"/> but adds sections concerning:</t>

<t><list style="numbers">
  <t>Voucher-request artifact specification based on Section 3 of <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/>,</t>
  <t>Voucher(-request) transport over CoAP based on Section 3 of <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/> and on <xref target="I-D.ietf-ace-coap-est"/>.</t>
</list></t>

<t>The CBOR definitions for the constrained voucher format are defined using the mechanism described in <xref target="I-D.ietf-core-yang-cbor"/> using the SID mechanism explained in <xref target="I-D.ietf-core-sid"/>.
As the tooling to convert YANG documents into a list of SID keys is still in its infancy, the table of SID values presented here should be considered normative rather than the output of the pyang tool.</t>

<t>There is additional work when the voucher is integrated into the key-exchange, described in <xref target="I-D.selander-ace-ake-authz"/>.
This work is not in scope for this document.</t>

</section>
<section anchor="Terminology" title="Terminology">

<t>The following terms are defined in <xref target="RFC8366"/>, and are used identically as in that document:
artifact, domain, imprint, Join Registrar/Coordinator (JRC), Manufacturer Authorized Signing Authority
(MASA), Pledge, Registrar, Trust of First Use (TOFU), and Voucher.</t>

<t>The following terms from <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/> are used identically as in that document:
Domain CA, enrollment, IDevID, Join Proxy, LDevID, manufacturer, nonced, nonceless, PKIX.</t>

</section>
<section anchor="reqlang" title="Requirements Language">

<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL
NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”,
“MAY”, and “OPTIONAL” in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

</section>
<section anchor="survey" title="Survey of Voucher Types">

<t><xref target="RFC8366"/> provides for vouchers that assert proximity, that authenticate the Registrar and that can offer varying levels of anti-replay protection.</t>

<t>This document does not make any extensions to the semantic meanings of vouchers, only the encoding has been changed to optimize for constrained devices and networks.</t>

<t>Time-based vouchers are supported in this definition, but given that constrained devices are extremely unlikely to have accurate time, their use is very unlikely.
Most Pledges using these constrained vouchers will be online during enrollment and will use live nonces to provide anti-replay protection.</t>

<t><xref target="RFC8366"/> defined only the voucher artifact, and not the Voucher Request artifact, which was defined in <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/>.
This document defines both a constrained voucher and a constrained voucher-request.
They are presented in the order “voucher-request”, followed by a “voucher” response as this is
the order that they occur in the protocol.</t>

<t>The constrained voucher request MUST be signed by the Pledge.
It can sign using its IDevID X.509 certificate, or if an IDevID is not available its manufacturer-installed raw public key (RPK).
The constrained voucher MUST be signed by the MASA.</t>

<t>For the constrained voucher request this document defines two distinct methods for the Pledge to identify the Registrar: using either the Registrar’s X.509 certificate, or using a raw public key (RPK)
of the Registrar.
For the constrained voucher also these two methods are supported to indicate (pin) a trusted domain identity: using either a pinned domain X.509 certificate, or a pinned raw public key (RPK).</t>

<t>When the Pledge is known by MASA to support RPK but not X.509 certificates, the voucher produced by the MASA pins the raw public key of the Registrar in the “pinned-domain-subject-public-key-info” field of a voucher.
This is described in more detail in the YANG definition for the constrained voucher and in section <xref target="pinning"/>.</t>

<t>When the Pledge is known by MASA to support PKIX format certificates, the “pinned-domain-cert” field present in a voucher typically pins a domain certificate. That can be either the End-Entity certificate of
the Registrar, or the certificate of a domain CA of the Registrar’s domain. However, if the Pledge is known to also support RPK pinning and the MASA intends to pin the Registrar’s identity (not a CA), then
MASA MAY pin the RPK of the Registrar instead of the Registrar’s End-Entity certificate in order to save space in the voucher.</t>

</section>
<section anchor="discovery-uri" title="Discovery and URI">

<t>This section describes the BRSKI extensions to EST-coaps <xref target="I-D.ietf-ace-coap-est"/> to transport the voucher between Registrar, join proxy and Pledge over CoAP.
The extensions are targeted to low-resource networks with small packets.
Saving header space is important and the EST-coaps URI is shorter than the EST URI.</t>

<t>The presence and location of (path to) the management data are discovered by sending a GET request to “/.well-known/core” including a resource type (RT) parameter with the value “ace.est” <xref target="RFC6690"/>.
Upon success, the return payload will contain the root resource of the EST resources.
It is up to the implementation to choose its root resource; throughout this document the
example root resource /est is used.</t>

<t>The EST-coaps server URIs differ from the EST URI by replacing the scheme https by coaps and by specifying shorter resource path names:</t>

<figure><artwork><![CDATA[
  coaps://www.example.com/est/short-name
]]></artwork></figure>

<t>Figure 5 in section 3.2.2 of <xref target="RFC7030"/> enumerates the operations and corresponding paths which are supported by EST.
<xref target="est-uri"/> provides the mapping from the BRSKI extension URI path to the EST-coaps URI path.</t>

<texttable title="BRSKI path to EST-coaps path" anchor="est-uri">
      <ttcol align='left'>BRSKI</ttcol>
      <ttcol align='left'>EST-coaps</ttcol>
      <c>/requestvoucher</c>
      <c>/rv</c>
      <c>/voucher_status</c>
      <c>/vs</c>
      <c>/enrollstatus</c>
      <c>/es</c>
</texttable>

<t>/requestvoucher, /voucher_status and /enrollstatus occur between the Pledge and Registrar (the BRSKI-EST protocol) and also between Registrar and MASA, but, as described in <xref target="brski-masa"/>, this document addresses only the BRSKI-EST portion of the protocol.</t>

<t>When discovering the root path for the EST resources, the server MAY return
the full resource paths and the used content types. This is useful when
multiple content types are specified for EST-coaps server. For example, the
following more complete response is possible.</t>

<!-- ******************************************************************** -->

</section>
<section anchor="brski-est" title="BRSKI-EST Protocol">

<t>The constrained BRSKI-EST protocol described in this section is between the Pledge and the Registrar only.
(probably via a join proxy, such as described in <xref target="I-D.ietf-anima-constrained-join-proxy"/>) It extends both
the BRSKI and EST-coaps protocols.</t>

<section anchor="discovery-uris-and-content-formats" title="Discovery, URIs and Content Formats">

<t>The constrained BRSKI-EST protocol described in this section is between the Pledge and the Registrar only.
(probably via a join proxy, such as described in <xref target="I-D.ietf-anima-constrained-join-proxy"/>)
It extends both the BRSKI and EST-coaps protocols.</t>

</section>
<section anchor="discovery-uris-and-content-formats-1" title="Discovery, URIs and Content Formats">

<t>TBD: content overlaps with <xref target="discovery-uri"/>, to be fixed - issue #79</t>

<t>The Pledge MAY perform a discovery operation on the “/.well-known/core?rt=brski*” resource of the Registrar if it wishes to discover possibly shorter URLs for the functions, or if it has the possibility to
use a variety of onboarding protocols or certificate enrollment protocols and it wants to discover which of these protocols are available.</t>

<t>For example, if the Registrar supports a short BRSKI URL (/b) and supports the voucher format “application/voucher-cose+cbor” (TBD3), and status reporting in both CBOR and JSON formats:</t>

<figure><artwork><![CDATA[
  REQ: GET /.well-known/core?rt=brski*

  RES: 2.05 Content
  Content-Format: 40
  Payload:
  </b>;rt=brski,
  </b/rv>;rt=brski.rv;ct=TBD3,
  </b/vs>;rt=brski.vs;ct="50 60",
  </b/es>;rt=brski.es;ct="50 60"
]]></artwork></figure>

<t>The Registrar is under no obligation to provide shorter URLs, and MAY respond to this query with only the “/.well-known/brski” end points defined in <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/> section 5.</t>

<t>Registrars that have implemented shorter URLs MUST also respond in equivalent ways to the “/.well-known/brski” URLs, and MUST NOT distinguish between them.
In particular, a Pledge MAY use the longer and shorter URLs in combination.</t>

<t>The return of multiple content-types in the “ct” attribute allows the Pledge to choose the most appropriate one.
Note that Content-Format TBD3 is defined in this document.</t>

<t>The Content-Format (“application/json”) 50 MAY be supported and 60 MUST be supported by the Registrar for the /vs and /es resources.
Content-Format TBD3 MUST be supported by the Registrar for the /rv resource.
If the “ct” attribute is not indicated for this resource, this implies that at least TBD3 is supported.</t>

<t>The Pledge and MASA need to support one or more formats (at least TBD3) for the voucher and for the voucher request.
The MASA needs to support all formats that the Pledge, produced by that manufacturer, supports.</t>

</section>
<section anchor="brski-extensions" title="Extensions to BRSKI">

<t>A Pledge that only supports the EST-coaps enrollment method SHOULD NOT use discovery for BRSKI resources, since it is more efficient to just try
the supported enrollment method via the well-known BRSKI/EST-coaps resources, and it avoids the Pledge having to do complex CoRE Link Format parsing.
A Registrar SHOULD host any discoverable BRSKI resources on the same (UDP) server port that the Pledge’s DTLS connection is using.
This avoids the Pledge having to reconnect using DTLS, in order to access these resources.</t>

</section>
<section anchor="brski-est-extensions" title="Extensions to EST-coaps">

<t>A Pledge that only supports the EST-coaps enrollment method SHOULD NOT use discovery for EST-coaps resources, for similar reasons as stated in the
previous section.
A Registrar SHOULD host any discoverable EST-coaps resources on the same (UDP) server port that the Pledge’s DTLS connection is using.
This avoids the Pledge having to reconnect using DTLS, in order to access these resources.</t>

<section anchor="pledge-extensions" title="Pledge Extensions">

<t>A constrained Pledge SHOULD NOT perform the optional “CSR attributes request” (/att) to minimize network traffic and reduce code size (i.e. by not implementing the complex CSR attributes parsing code).</t>

<t>When creating the CSR, the Pledge selects itself which attributes to include. One or more Subject Distinguished Name fields MUST be included.
If the Pledge has no specific information on what attributes/fields are desired in the CSR, it MUST use the Subject Distinguished Name fields from its IDevID unmodified.
The Pledge may receive such information via the voucher (encoded in a vendor-specific way) or some other, out-of-band means.</t>

<t>A constrained Pledge MAY use the following optimized EST-coaps procedure to minimize both network traffic and code size:</t>

<t><list style="numbers">
  <t>if the BRSKI-received voucher, validating the current EST server, contains a pinned domain CA certificate, the Pledge provisionally considers this single certificate as the sole EST trust anchor, in other words, the single result of “CA certificates request” (/crts) to the EST server.</t>
  <t>Using this trust anchor it proceeds with EST simple enrollment (/sen) to obtain its provisionally trusted LDevID.</t>
  <t>Then, the Pledge attempts to validate that the trust anchor CA is the signer of the LDevID.
If this is the case, the Pledge finally accepts the pinned domain CA certificate as the legitimate trust anchor CA for its domain and it also accepts its LDevID.</t>
  <t>If this is not the case, the Pledge MUST perform an actual “CA certificates request” (/crts) to the EST server to obtain the EST CA trust anchors since these obviously differ from the (temporary) pinned domain CA.</t>
  <t>When doing this request, the Pledge MAY use a CoAP Accept Option with value TBD287 (“application/pkix-cert”) to limit the number of returned EST CA trust anchors to only one.
Such limiting to only one has the advantages that storage requirements for CA certificates are reduced, network traffic can be reduced, and code size can be reduced (by not having to parse the alternative format 281 “application/pkcs7-mime;smime-type=certs-only” and not having to support CoAP block-wise transfer).</t>
  <t>If the Pledge cannot obtain the single CA certificate or the finally validated CA certificate cannot be chained to the LDevID, then the Pledge MUST abort the enrollment process and report the error using the enrollment status telemetry (/es).</t>
</list></t>

<t>The Content-Format (“application/json”) 50 MAY be supported and 60 MUST be supported by the Registrar for the /vs and /es resources.
Content-Format TBD3 MUST be supported by the Registrar for the /rv resource. If the “ct” attribute is not indicated for this resource, this implies that at least TBD3 is supported.</t>

<t>When a Registrar receives a “CA certificates request” (/crts) request with a CoAP Accept Option with value TBD287 it SHOULD return only the
single CA certificate that is the envisioned or actual authority for the current, authenticated Pledge making the request. The only exception case
is when the Registrar is configured to not support a request for a single CA certificate for operational or security reasons, e.g. because every device
enrolled into the domain needs to use at least multiple CAs. In such exception case the Registrar returns the CoAP response 4.06 Not Acceptable to indicate
that only the default Content-Format of 281 “application/pkcs7-mime;smime-type=certs-only” is available.</t>

<!-- ******************************************************************** -->

</section>
<section anchor="registrar-extensions" title="Registrar Extensions">

<t>When a Registrar receives a “CA certificates request” (/crts) request with a CoAP Accept Option with value TBD287 it SHOULD return only the
single CA certificate that is the envisioned or actual authority for the current, authenticated Pledge making the request. The only exception case
is when the Registrar is configured to not support a request for a single CA certificate for operational or security reasons, e.g. because every device
enrolled into the domain needs to use at least multiple CAs. In such exception case the Registrar returns the CoAP response 4.06 Not Acceptable to indicate
that only the default Content-Format of 281 “application/pkcs7-mime;smime-type=certs-only” is available.</t>

</section>
</section>
</section>
<section anchor="brski-masa" title="BRSKI-MASA Protocol">

<t><xref target="I-D.ietf-anima-bootstrapping-keyinfra"/> section 5.4 describes a connection between the Registrar and the MASA as being a normal TLS connection using HTTPS.
This document does not change that.
The use of CoAP for the BRSKI-MASA connection is NOT supported.</t>

<t>Some consideration was made to specify CoAP support for consistency but:</t>

<t><list style="symbols">
  <t>the Registrar is not expected to be so constrained that it cannot support HTTPS client connections.</t>
  <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>
  <t>in many Enterprise networks, outgoing UDP connections are often treated as suspicious, and there seems to be no advantage to using CoAP in that environment.</t>
  <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>
  <t>similarly, a manufacturer is likely to offer both constrained and non-constrained devices, so there may in practice be no situation in which the MASA could be CoAP-only.  Additionally, as the MASA is intended to be a function that can easily be oursourced to a third-party service provider, reducing the complexity would also seem to reduce the cost of that function.</t>
</list></t>

<!-- ******************************************************************** -->

</section>
<section anchor="pinning" title="Pinning in Voucher Artifacts">

<t>The voucher is a statement from the MASA to the Pledge indicating who the Pledge’s owner is.
This section deals with the question of how that owner’s identity is determined and how it is encoded within the voucher.</t>

<section anchor="registrar-identity-selection-and-encoding" title="Registrar Identity Selection and Encoding">

<t>Section 5.5 of <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/> describes BRSKI policies for selection of the owner identity. It indicates some of the flexibility that is possible for the Registrar.
The recommendation made there is for the Registrar to include only certificates in the (CMS) signing structure which participate in the certificate chain that is to be pinned.</t>

<t>The MASA is expected to evaluate the certificates included by the Registrar in its voucher request, forming them into a chain with the Registrar’s (signing) identity on one end. Then, it pins a certificate selected from the chain.
For instance, for a domain with a two-level certification authority, where the voucher-request has been signed by “Registrar” its signing structure includes two additional CA certificates:</t>

<figure title="Two Level PKI" anchor="fig-twoca"><artwork><![CDATA[
 .-------------.
 | priv-CA (1) |
 '-------------'
        |
        v
 .------------.
 | Int-CA (2) |
 '------------'
        |
        v
.--------------.
| Registrar(3) |
'--------------'
]]></artwork></figure>

<t>When the Registrar is using a COSE-signed constrained format voucher request towards MASA, instead of a regular CMS-signed voucher request, the COSE_Sign1 object contains a protected and an unprotected header, and according to <xref target="I-D.ietf-cose-x509"/>,
would carry all the certificates of the chain in an “x5bag” attribute placed in the unprotected header.</t>

</section>
<section anchor="masa-pinning-policy" title="MASA Pinning Policy">

<t>The MASA, having assembled and verified the chain in the signing structure, will now need to select a certificate to pin in the voucher in case there are multiple available.
(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 Section 5.5.2 of <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/> leaves much flexibility to the manufacturer. The present
document adds the following rules to the MASA pinning policy, in order to reduce on average the duration of BRSKI/EST on constrained, low-bandwidth networks:</t>

<t><list style="numbers">
  <t>for a voucher containing a nonce, it SHOULD select the most specific (lowest-level) CA certificate in the chain.</t>
  <t>for a nonceless voucher, it SHOULD select the least-specific (highest-level) CA certificate in the chain that is allowed under the MASA’s policy for this specific customer (domain).</t>
</list></t>

<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 it would have 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 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 elsewhere in this document.
Doing so avoids an additional transmission of this trust anchor over the network during the EST enrollment, saving potentially 100s of bytes and a CoAP transaction.</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="I-D.ietf-anima-bootstrapping-keyinfra"/>).</t>

<t>Using the previous example of a domain with a two-level certification authority, the most specific CA (“Sub-CA”) is the identity that is pinned by MASA in a nonced voucher.
A Registrar that wished to have only the Registrar’s End-Entity certificate pinned would omit the “priv-CA” and “Sub-CA” certificates from the voucher-request.</t>

<t>In case of a nonceless voucher, the MASA would depending on trust level pin only “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 “priv-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="pinning-of-raw-public-keys" title="Pinning of Raw Public Keys">

<t>Specifically for constrained use cases, the pinning of the raw public key (RPK) of the Registrar is also supported in the constrained voucher, instead of an X.509 certificate.
If an RPK is pinned it MUST be the RPK of the Registrar.</t>

<figure title="Raw Public Key pinning" anchor="fig-pinning"><artwork><![CDATA[
 .------------.
 | pub-CA (1) |
 '------------'
        |
        v
 .------------.
 | sub-CA (2) |
 '------------'
        |
        v
.--------------.
| Registrar(3) |
|   [RPK3]     |
'--------------'
]]></artwork></figure>

<t>When the Pledge is known by MASA to support RPK but not X.509 certificates, the voucher produced by the MASA pins the RPK of the Registrar in the “pinned-domain-subject-public-key-info” field of a voucher.
This is described in more detail in the YANG definition for the constrained voucher. A Pledge that does not support X.509 certificates cannot use EST to enroll; it has to use
another method for certificate-less enrollment and the Registrar has to support this method also.
It is possible that the Pledge will not enroll, but instead only a network join operation will occur, such as described in <xref target="I-D.ietf-6tisch-minimal-security"/>.
How the Pledge discovers this method and details of the enrollment method are out of scope of this document.</t>

<t>When the Pledge is known by MASA to support PKIX format certificates, the “pinned-domain-cert” field present in a voucher typically pins a domain certificate.
That can be either the End-Entity certificate of the Registrar, or the certificate of a domain CA of the Registrar’s domain.
However, if the Pledge is known to also support RPK pinning and the MASA intends to pin the Registrar’s identity (not a CA), then MASA SHOULD pin the RPK (RPK3 in figure <xref target="fig-pinning"/>) of the Registrar instead of the Registrar’s End-Entity certificate in order to save space in the voucher.</t>

<t>To Be Completed further (TBD): Note, the above paragraphs are duplicated from the section <xref target="survey"/> so we may have to resolve this duplication.</t>

<!-- ******************************************************************** -->

</section>
</section>
<section anchor="artifacts" title="Artifacts">

<t>This section describes the abstract (tree) definition as explained
in <xref target="I-D.ietf-netmod-yang-tree-diagrams"/> first.  This provides a high-level
view of the contents of each artifact.</t>

<t>Then the assigned SID values are presented. These have been assigned using
the rules in <xref target="I-D.ietf-core-sid"/>, with an allocation that was made
via the http://comi.space service.</t>

<section anchor="voucher-request-artifact" title="Voucher Request artifact">

<section anchor="tree-diagram" title="Tree Diagram">

<t>The following diagram is largely a duplicate of the contents of <xref target="RFC8366"/>,
with the addition of proximity-registrar-subject-public-key-info,
proximity-registrar-cert, and prior-signed-voucher-request.</t>

<t>prior-signed-voucher-request is only used between the Registrar and the MASA.
proximity-registrar-subject-public-key-info replaces proximity-registrar-cert
for the extremely constrained cases.</t>

<figure><artwork><![CDATA[
module: ietf-constrained-voucher-request

  grouping voucher-request-constrained-grouping
    +-- voucher
       +-- created-on?
       |       yang:date-and-time
       +-- expires-on?
       |       yang:date-and-time
       +-- assertion
       |       enumeration
       +-- serial-number
       |       string
       +-- idevid-issuer?
       |       binary
       +-- pinned-domain-cert?
       |       binary
       +-- domain-cert-revocation-checks?
       |       boolean
       +-- nonce?
       |       binary
       +-- last-renewal-date?
       |       yang:date-and-time
       +-- proximity-registrar-subject-public-key-info?
       |       binary
       +-- proximity-registrar-sha256-of-subject-public-key-info?
       |       binary
       +-- proximity-registrar-cert?
       |       binary
       +-- prior-signed-voucher-request?
               binary
]]></artwork></figure>

</section>
<section anchor="sid-values" title="SID values">

<figure><artwork><![CDATA[
           
      SID Assigned to
--------- -------------------------------------------------- 
     2501 data /ietf-constrained-voucher-request:voucher
     2502 data .../assertion
     2503 data .../created-on
     2504 data .../domain-cert-revocation-checks
     2505 data .../expires-on
     2506 data .../idevid-issuer
     2507 data .../last-renewal-date
     2508 data /ietf-constrained-voucher-request:voucher/nonce
     2509 data .../pinned-domain-cert
     2510 data .../prior-signed-voucher-request
     2511 data .../proximity-registrar-cert
     2512 data mity-registrar-sha256-of-subject-public-key-info
     2513 data .../proximity-registrar-subject-public-key-info
     2514 data .../serial-number
           
 WARNING, obsolete definitions
]]></artwork></figure>

</section>
<section anchor="yang-module" title="YANG Module">

<t>In the constrained-voucher-request YANG module, the voucher is “augmented” within the “used” grouping statement such that one continuous set of SID values is generated for the constrained-voucher-request module name, all voucher attributes, and the constrained-voucher-request attribute. Two attributes of the voucher are “refined” to be optional.</t>

<figure><artwork><![CDATA[
<CODE BEGINS> file "ietf-constrained-voucher-request@2019-09-01.yang"
module ietf-constrained-voucher-request {
  yang-version 1.1;

  namespace
    "urn:ietf:params:xml:ns:yang:ietf-constrained-voucher-request";
  prefix "constrained";

  import ietf-restconf {
    prefix rc;
    description
      "This import statement is only present to access
       the yang-data extension defined in RFC 8040.";
    reference "RFC 8040: RESTCONF Protocol";
  }

  import ietf-voucher {
    prefix "v";
  }

  organization
   "IETF ANIMA Working Group";

  contact
   "WG Web:   <http://tools.ietf.org/wg/anima/>
    WG List:  <mailto:anima@ietf.org>
    Author:   Michael Richardson
              <mailto:mcr+ietf@sandelman.ca>
    Author:   Peter van der Stok
              <mailto: consultancy@vanderstok.org>
    Author:   Panos Kampanakis
              <mailto: pkampana@cisco.com>";
  description
   "This module defines the format for a voucher request,
    which is produced by a pledge to request a voucher.
    The voucher-request is sent to the potential owner's
    Registrar, which in turn sends the voucher request to
    the manufacturer or delegate (MASA).

    A voucher is then returned to the pledge, binding the
    pledge to the owner.  This is a constrained version of the
    voucher-request present in
    draft-ietf-anima-bootstrap-keyinfra.txt.

    This version provides a very restricted subset appropriate
    for very constrained devices.
    In particular, it assumes that nonce-ful operation is
    always required, that expiration dates are rather weak, as no
    clocks can be assumed, and that the Registrar is identified
    by a pinned Raw Public Key.

    The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL',
    'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'MAY',
    and 'OPTIONAL' in the module text are to be interpreted as
    described in RFC 2119.";

  revision "2019-09-01" {
    description
     "Initial version";
    reference
     "RFC XXXX: Voucher Profile for Constrained Devices";
  }

  rc:yang-data voucher-request-constrained-artifact {
    // YANG data template for a voucher.
    uses voucher-request-constrained-grouping;
  }

  // Grouping defined for future usage
  grouping voucher-request-constrained-grouping {
    description
      "Grouping to allow reuse/extensions in future work.";

    uses v:voucher-artifact-grouping {

      refine voucher/created-on {
          mandatory  false;
      }

      refine voucher/pinned-domain-cert {
          mandatory  false;
      }


      augment "voucher" {
        description "Base the constrained voucher-request upon the
          regular one";

        leaf proximity-registrar-subject-public-key-info {
          type binary;
          description
            "The proximity-registrar-subject-public-key-info replaces
 	     the proximit-registrar-cert in constrained uses of
             the voucher-request.
             The proximity-registrar-subject-public-key-info is the
             Raw Public Key of the Registrar. This field is encoded
             as specified in RFC7250, section 3.
             The ECDSA algorithm MUST be supported.
             The EdDSA algorithm as specified in
             draft-ietf-tls-rfc4492bis-17 SHOULD be supported.
             Support for the DSA algorithm is not recommended.
             Support for the RSA algorithm is MAY, but due to 
             size is discouraged.";
        }

        leaf proximity-registrar-sha256-of-subject-public-key-info {
          type binary;
          description
            "The proximity-registrar-sha256-of-subject-public-key-info
             is an alternative to 
             proximity-registrar-subject-public-key-info.
             and pinned-domain-cert.  In many cases the
             public key of the domain has already been transmitted
             during the key agreement protocol, and it is wasteful
             to transmit the public key another two times.
             The use of a hash of public key info, at 32-bytes for
             sha256 is a significant savings compared to an RSA
             public key, but is only a minor savings compared to
             a 256-bit ECDSA public-key.
             Algorithm agility is provided by extensions to this
             specifications which define new leaf for other hash
             types.";
        }

        leaf proximity-registrar-cert {
          type binary;
          description
            "An X.509 v3 certificate structure as specified by
             RFC 5280,
             Section 4 encoded using the ASN.1 distinguished encoding
             rules (DER), as specified in ITU-T X.690.

             The first certificate in the Registrar TLS server
             certificate_list sequence  (see [RFC5246]) presented by
             the Registrar to the Pledge. This MUST be populated in a
             Pledge's voucher request if the proximity assertion is
             populated.";
        }

        leaf prior-signed-voucher-request {
          type binary;
          description
            "If it is necessary to change a voucher, or re-sign and
             forward a voucher that was previously provided along a
             protocol path, then the previously signed voucher
             SHOULD be included in this field.

             For example, a pledge might sign a proximity voucher,
             which an intermediate registrar then re-signs to
             make its own proximity assertion.  This is a simple
             mechanism for a chain of trusted parties to change a
             voucher, while maintaining the prior signature
             information.

             The pledge MUST ignore all prior voucher information
             when accepting a voucher for imprinting. Other
             parties MAY examine the prior signed voucher
             information for the purposes of policy decisions.
             For example this information could be useful to a
             MASA to determine that both pledge and registrar
             agree on proximity assertions. The MASA SHOULD
             remove all prior-signed-voucher-request information when
             signing a voucher for imprinting so as to minimize the
             final voucher size.";
        }
      }
    }
  }
}
<CODE ENDS>
]]></artwork></figure>

</section>
<section anchor="example2" title="Example voucher request artifact">

<t>Below is a CBOR serialization of an example constrained voucher request from a Pledge to a Registrar, shown in CBOR diagnostic notation. The enum value of the assertion field is calculated to be 2 by following the algorithm described in section 9.6.4.2 of <xref target="RFC7950"/>.
Four dots (“….”) in a CBOR byte string denotes a sequence of bytes that are not shown for brevity.</t>

<figure><artwork><![CDATA[
{
  2501: {
    +2 : "2016-10-07T19:31:42Z", / SID= 2503, created-on /
    +4 : "2016-10-21T19:31:42Z", / SID= 2505, expires-on /
    +1 : 2,                      / SID= 2502, assertion /
                                 /                "proximity" /
    +13: "JADA123456789",        / SID= 2514, serial-number /
    +5 : h'01020D0F',            / SID= 2506, idevid-issuer /
    +10: h'cert.der',            / SID=2511, proximity-registrar-cert/
    +3 : true,                   / SID= 2504, domain-cert
                                                  -revocation-checks/
    +6 : "2017-10-07T19:31:42Z", / SID= 2507, last-renewal-date /
    +12: h'key_info'             / SID= 2513, proximity-registrar
                                         -subject-public-key-info /
  }
}



<CODE ENDS>
]]></artwork></figure>

</section>
</section>
<section anchor="voucher-artifact" title="Voucher artifact">

<t>The voucher’s primary purpose is to securely assign a Pledge to an
owner.  The voucher informs the Pledge which entity it should
consider to be its owner.</t>

<section anchor="tree-diagram-1" title="Tree Diagram">

<t>The following diagram is largely a duplicate of the contents of <xref target="RFC8366"/>,
with only the addition of pinned-domain-subject-public-key-info.</t>

<figure><artwork><![CDATA[
module: ietf-constrained-voucher

  grouping voucher-constrained-grouping
    +-- voucher
       +-- created-on?
       |       yang:date-and-time
       +-- expires-on?
       |       yang:date-and-time
       +-- assertion                                   enumeration
       +-- serial-number                               string
       +-- idevid-issuer?                              binary
       +-- pinned-domain-cert?                         binary
       +-- domain-cert-revocation-checks?              boolean
       +-- nonce?                                      binary
       +-- last-renewal-date?
       |       yang:date-and-time
       +-- pinned-domain-subject-public-key-info?      binary
       +-- pinned-sha256-of-subject-public-key-info?   binary
<CODE ENDS>
]]></artwork></figure>

</section>
<section anchor="sid-values-1" title="SID values">

<figure><artwork><![CDATA[
           
      SID Assigned to
--------- -------------------------------------------------- 
     2451 data /ietf-constrained-voucher:voucher
     2452 data /ietf-constrained-voucher:voucher/assertion
     2453 data /ietf-constrained-voucher:voucher/created-on
     2454 data .../domain-cert-revocation-checks
     2455 data /ietf-constrained-voucher:voucher/expires-on
     2456 data /ietf-constrained-voucher:voucher/idevid-issuer
     2457 data .../last-renewal-date
     2458 data /ietf-constrained-voucher:voucher/nonce
     2459 data .../pinned-domain-cert
     2460 data .../pinned-domain-subject-public-key-info
     2461 data .../pinned-sha256-of-subject-public-key-info
     2462 data /ietf-constrained-voucher:voucher/serial-number
           
 WARNING, obsolete definitions
<CODE ENDS>
]]></artwork></figure>

</section>
<section anchor="yang-module-1" title="YANG Module">

<t>In the constrained-voucher YANG module, the voucher is “augmented” within the “used” grouping statement such that one continuous set of SID values is generated for the constrained-voucher module name, all voucher attributes, and the constrained-voucher attribute.
Two attributes of the voucher are “refined” to be optional.</t>

<figure><artwork><![CDATA[
<CODE BEGINS> file "ietf-constrained-voucher@2019-09-01.yang"
module ietf-constrained-voucher {
  yang-version 1.1;

  namespace
    "urn:ietf:params:xml:ns:yang:ietf-constrained-voucher";
  prefix "constrained";

  import ietf-restconf {
    prefix rc;
    description
      "This import statement is only present to access
       the yang-data extension defined in RFC 8040.";
    reference "RFC 8040: RESTCONF Protocol";
  }

  import ietf-voucher {
    prefix "v";
  }

  organization
   "IETF ANIMA Working Group";

  contact
   "WG Web:   <http://tools.ietf.org/wg/anima/>
    WG List:  <mailto:anima@ietf.org>
    Author:   Michael Richardson
              <mailto:mcr+ietf@sandelman.ca>
    Author:   Peter van der Stok
              <mailto: consultancy@vanderstok.org>
    Author:   Panos Kampanakis
              <mailto: pkampana@cisco.com>";
description
  "This module defines the format for a voucher, which is produced
   by a pledge's manufacturer or delegate (MASA) to securely assign
   one or more pledges to an 'owner', so that the pledges may
   establis a secure connection to the owner's network
   infrastructure.

   This version provides a very restricted subset appropriate
   for very constrained devices.
   In particular, it assumes that nonce-ful operation is
   always required, that expiration dates are rather weak, as no
   clocks can be assumed, and that the Registrar is identified
   by a pinned Raw Public Key.

   The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL',
   'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'MAY',
   and 'OPTIONAL' in the module text are to be interpreted as
   described in RFC 2119.";

  revision "2019-09-01" {
    description
     "Initial version";
    reference
     "RFC XXXX: Voucher Profile for Constrained Devices";
  }

  rc:yang-data voucher-constrained-artifact {
    // YANG data template for a voucher.
    uses voucher-constrained-grouping;
  }

  // Grouping defined for future usage
  grouping voucher-constrained-grouping {
    description
      "Grouping to allow reuse/extensions in future work.";

    uses v:voucher-artifact-grouping {

      refine voucher/created-on {
          mandatory  false;
      }

      refine voucher/pinned-domain-cert {
          mandatory  false;
      }

      augment "voucher" {
        description "Base the constrained voucher
                                   upon the regular one";
        leaf pinned-domain-subject-public-key-info {
          type binary;
          description
            "The pinned-domain-subject-public-key-info replaces the
             pinned-domain-cert in constrained uses of
             the voucher. The pinned-domain-subject-public-key-info
             is the Raw Public Key of the Registrar.
             This field is encoded as specified in RFC7250,
             section 3.
             The ECDSA algorithm MUST be supported.
             The EdDSA algorithm as specified in
             draft-ietf-tls-rfc4492bis-17 SHOULD be supported.
             Support for the DSA algorithm is not recommended.
             Support for the RSA algorithm is a MAY.";
        }

        leaf pinned-sha256-of-subject-public-key-info {
          type binary;
          description
            "The pinned-hash-subject-public-key-info is a second
             alternative to pinned-domain-cert.  In many cases the
             public key of the domain has already been transmitted
             during the key agreement process, and it is wasteful
             to transmit the public key another two times.
             The use of a hash of public key info, at 32-bytes for
             sha256 is a significant savings compared to an RSA
             public key, but is only a minor savings compared to
             a 256-bit ECDSA public-key.
             Algorithm agility is provided by extensions to this
             specifications which define new leaf for other hash types";
        }
      }
    }
  }
}
<CODE ENDS>
]]></artwork></figure>

</section>
<section anchor="example1" title="Example voucher artifacts">

<t>Below the CBOR serialization of an example constrained voucher is shown in CBOR diagnostic notation.
The enum value of the assertion field is calculated to be zero by following the algorithm described in section 9.6.4.2 of <xref target="RFC7950"/>.
Four dots (“….”) in a CBOR byte string denotes a sequence of bytes that are not shown for brevity.</t>

<figure><artwork><![CDATA[
{
  2451: {
    +2 : "2016-10-07T19:31:42Z", / SID = 2453, created-on /
    +4 : "2016-10-21T19:31:42Z", / SID = 2455, expires-on /
    +1 : 0,                      / SID = 2452, assertion "verified" /
    +11: "JADA123456789",        / SID = 2462, serial-number /
    +5 : h'E40393B4....68A3',    / SID = 2456, idevid-issuer /
    +8 : h'30820275....C35F',    / SID = 2459, pinned-domain-cert/
    +3 : true,                   / SID = 2454, domain-cert /
                                 /               -revocation-checks /
    +6 : "2017-10-07T19:31:42Z"  / SID = 2457, last-renewal-date /
  }
}



<CODE ENDS>
]]></artwork></figure>

</section>
</section>
<section anchor="signing-voucher-and-voucher-request-artifacts-with-cose" title="Signing voucher and voucher-request artifacts with COSE">

<t>The COSE-Sign1 structure is discussed in section 4.2 of <xref target="I-D.ietf-cose-rfc8152bis-struct"/>.
The CBOR object that carries the body, the signature, and the information about the body  and signature is called the COSE_Sign1 structure.
It is used when only one signature is used on the body.
Support for ECDSA with sha256 (secp256k1 and prime256v1 curves) is compulsory.</t>

<t>The supported COSE-sign1 object stucture is shown in <xref target="fig-cose"/>.
Support for EdDSA is encouraged. [EDNOTE: Expand and add a reference why. ]</t>

<figure title="cose-sign1 example" align="left" anchor="fig-cose"><artwork><![CDATA[
COSE_Sign1(
  [
    h'A101382E',        # { "alg": EC256K1 }
    {
      “kid” : h'789'  # hash256(public key)
    },
    h'123', #voucher-request binary content
    h'456', #voucher-request binary public signature
  ]
)
]]></artwork></figure>

<t>The <xref target="COSE-registry"/> specifies the integers that replace the strings and the mnemonics in <xref target="fig-cose"/>.
The value of the “kid” parameter is an example value.
Usually a hash of the public key is used to idientify the public key.
The public key and its hash are derived from the relevant certificate (Pledge, Registrar or MASA certificate).</t>

<t>In <xref target="cosesign"/> a binary cose-sign1 object is shown based on the voucher-request example of <xref target="example2"/>.</t>

</section>
</section>
<section anchor="design-considerations" title="Design Considerations">

<t>The design considerations for the CBOR encoding of vouchers is much the same as for <xref target="RFC8366"/>.</t>

<t>One key difference is that the names of the leaves in the YANG does not have a material effect on the size of the resulting CBOR, as the SID translation process assigns integers to the names.</t>

<t>Any POST request to the Registrar with resource /est/vs or /est/es returns a 2.05 response with empty payload. The client should be aware that the server may use a piggybacked CoAP response (ACK, 2.05) but may also respond with a separate CoAP response, i.e. first an (ACK, 0.0) that is an acknowledgement of the request reception followed by a (CON, 2.05) response in a separate CoAP message.</t>

</section>
<section anchor="security-considerations" title="Security Considerations">

<section anchor="clock-sensitivity" title="Clock Sensitivity">

<t>TBD.</t>

</section>
<section anchor="protect-voucher-pki-in-hsm" title="Protect Voucher PKI in HSM">

<t>TBD.</t>

</section>
<section anchor="test-domain-certificate-validity-when-signing" title="Test Domain Certificate Validity when Signing">

<t>TBD.</t>

</section>
</section>
<section anchor="iana-considerations" title="IANA Considerations">

<section anchor="resource-type-registry" title="Resource Type Registry">

<t>Additions to the sub-registry “CoAP Resource Type”, within the “CoRE parameters” registry are specified below.
These can be registered  either in the Expert Review range (0-255) or IETF Review range (256-9999).</t>

<figure><artwork><![CDATA[
 ace.rt.rv needs registration with IANA
 ace.rt.vs needs registration with IANA
 ace.rt.es needs registration with IANA
 ace.rt.ra needs registration with IANA
]]></artwork></figure>

</section>
<section anchor="the-ietf-xml-registry" title="The IETF XML Registry">

<t>This document registers two URIs in the IETF XML registry <xref target="RFC3688"/>.
Following the format in <xref target="RFC3688"/>, the following registration is requested:</t>

<figure><artwork><![CDATA[
  URI: urn:ietf:params:xml:ns:yang:ietf-constrained-voucher
  Registrant Contact: The ANIMA WG of the IETF.
  XML: N/A, the requested URI is an XML namespace.

  URI: urn:ietf:params:xml:ns:yang:ietf-constrained-voucher-request
  Registrant Contact: The ANIMA WG of the IETF.
  XML: N/A, the requested URI is an XML namespace.
]]></artwork></figure>

</section>
<section anchor="the-yang-module-names-registry" title="The YANG Module Names Registry">

<t>This document registers two YANG modules in the YANG Module Names registry <xref target="RFC6020"/>.  Following the format defined in <xref target="RFC6020"/>, the the following registration is requested:</t>

<figure><artwork><![CDATA[
  name:         ietf-constrained-voucher
  namespace:    urn:ietf:params:xml:ns:yang:ietf-constrained-voucher
  prefix:       vch
  reference:    RFC XXXX

  name:         ietf-constrained-voucher-request
  namespace:    urn:ietf:params:xml:ns:yang:ietf-constrained
                                           -voucher-request
  prefix:       vch
  reference:    RFC XXXX
]]></artwork></figure>

</section>
<section anchor="the-rfc-sid-range-assignment-sub-registry" title="The RFC SID range assignment sub-registry">

<figure><artwork><![CDATA[
------------ ------ --------------------------- ------------
Entry-point | Size | Module name               | RFC Number
------------ ------ --------------------------- ------------
2450          50     ietf-constrained-voucher    [ThisRFC]
2500          50     ietf-constrained-voucher    [ThisRFC}
                                 -request
----------- ------  --------------------------- ------------
]]></artwork></figure>

<t>Warning: These SID values are defined in <xref target="I-D.ietf-core-sid"/>, not as an Early Allocation.</t>

</section>
<section anchor="media-type-registry" title="Media-Type Registry">

<t>This section registers the the ‘application/voucher-cose+cbor’ in the “Media Types” registry.
These media types are used to indicate that the content is a CBOR voucher either signed with
a COSE_Sign1 structure <xref target="I-D.ietf-cose-rfc8152bis-struct"/>.</t>

<section anchor="applicationvoucher-cosecbor" title="application/voucher-cose+cbor">

<figure><artwork><![CDATA[
Type name:  application
Subtype name:  voucher-cose+cbor
Required parameters:  none
Optional parameters:  cose-type
Encoding considerations:  COSE_Sign1 CBOR vouchers are COSE objects
                          signed with one signer.
Security considerations:  See Security Considerations, Section
Interoperability considerations:  The format is designed to be
  broadly interoperable.
Published specification:  THIS RFC.
Applications that use this media type:  ANIMA, 6tisch, and other
  zero-touch imprinting systems
Additional information:
  Magic number(s):  None
  File extension(s):  .vch
  Macintosh file type code(s):  none
Person & email address to contact for further information:  IETF
  ANIMA WG
Intended usage:  LIMITED
Restrictions on usage:  NONE
Author:  ANIMA WG
Change controller:  IETF
Provisional registration? (standards tree only):  NO
]]></artwork></figure>

</section>
</section>
<section anchor="coap-content-format-registry" title="CoAP Content-Format Registry">

<t>Additions to the sub-registry “CoAP Content-Formats”, within the “CoRE
Parameters” registry are needed for two media types. These can be registered
either in the Expert Review range (0-255) or IETF Review range (256-9999).</t>

<figure><artwork><![CDATA[
Media type                    mime type    Encoding   ID  References
----------------------------  -----------  --------- ---- ----------
application/voucher-cose+cbor "COSE-Sign1"   CBOR    TBD3  [This RFC]
]]></artwork></figure>

</section>
</section>
<section anchor="acknowledgements" title="Acknowledgements">

<t>We are very grateful to Jim Schaad for explaining COSE and CMS choices.
Also thanks to Jim Schaad for correctinging earlier version of the COSE Sign1 objects.</t>

<t>Michel Veillette did extensive work on pyang to extend it to support the SID allocation process, and this document was among the first users.</t>

</section>
<section anchor="changelog" title="Changelog">

<t>-10
    Design considerations extended
    Examples made consistent</t>

<t>-08
    Examples for cose_sign1 are completed and improved.</t>

<t>-06
    New SID values assigned; regenerated examples</t>

<t>-04
    voucher and request-voucher MUST be signed
    examples for signed request are added in appendix
    IANA SID registration is updated
    SID values in examples are aligned
    signed cms examples aligned with new SIDs</t>

<t>-03</t>

<figure><artwork><![CDATA[
Examples are inverted.
]]></artwork></figure>

<t>-02</t>

<figure><artwork><![CDATA[
Example of requestvoucher with unsigned appllication/cbor is added
attributes of voucher "refined" to optional
CBOR serialization of vouchers improved
Discovery port numbers are specified
]]></artwork></figure>

<t>-01</t>

<figure><artwork><![CDATA[
application/json is optional, application/cbor is compulsory
Cms and cose mediatypes are introduced
]]></artwork></figure>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor="RFC7049" target='https://www.rfc-editor.org/info/rfc7049'>
<front>
<title>Concise Binary Object Representation (CBOR)</title>
<author initials='C.' surname='Bormann' fullname='C. Bormann'><organization /></author>
<author initials='P.' surname='Hoffman' fullname='P. Hoffman'><organization /></author>
<date year='2013' month='October' />
<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></abstract>
</front>
<seriesInfo name='RFC' value='7049'/>
<seriesInfo name='DOI' value='10.17487/RFC7049'/>
</reference>


<reference anchor="I-D.ietf-core-yang-cbor">
   <front>
      <title>CBOR Encoding of Data Modeled with YANG</title>
      <author fullname="Michel Veillette">
	 <organization>Trilliant Networks Inc.</organization>
      </author>
      <author fullname="Ivaylo Petrov">
	 <organization>Google Switzerland GmbH</organization>
      </author>
      <author fullname="Alexander Pelov">
	 <organization>Acklio</organization>
      </author>
      <date month="January" day="25" year="2021" />
      <abstract>
	 <t>   This document defines encoding rules for serializing configuration
   data, state data, RPC input and RPC output, action input, action
   output, notifications and yang-data extension defined within YANG
   modules using the Concise Binary Object Representation (CBOR, RFC
   8949).

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-core-yang-cbor-15" />
   <format type="TXT" target="https://www.ietf.org/internet-drafts/draft-ietf-core-yang-cbor-15.txt" />
</reference>


<reference anchor="I-D.ietf-core-sid">
   <front>
      <title>YANG Schema Item iDentifier (YANG SID)</title>
      <author fullname="Michel Veillette">
	 <organization>Trilliant Networks Inc.</organization>
      </author>
      <author fullname="Alexander Pelov">
	 <organization>Acklio</organization>
      </author>
      <author fullname="Ivaylo Petrov">
	 <organization>Acklio</organization>
      </author>
      <date month="January" day="17" year="2021" />
      <abstract>
	 <t>   YANG Schema Item iDentifiers (YANG SID) are globally unique 63-bit
   unsigned integers used to identify YANG items.  This document defines
   the semantics, the registration, and assignment processes of YANG
   SIDs.  To enable the implementation of these processes, this document
   also defines a file format used to persist and publish assigned YANG
   SIDs.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-core-sid-15" />
   <format type="TXT" target="https://www.ietf.org/internet-drafts/draft-ietf-core-sid-15.txt" />
</reference>



<reference  anchor="RFC7950" target='https://www.rfc-editor.org/info/rfc7950'>
<front>
<title>The YANG 1.1 Data Modeling Language</title>
<author initials='M.' surname='Bjorklund' fullname='M. Bjorklund' role='editor'><organization /></author>
<date year='2016' month='August' />
<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="RFC5652" target='https://www.rfc-editor.org/info/rfc5652'>
<front>
<title>Cryptographic Message Syntax (CMS)</title>
<author initials='R.' surname='Housley' fullname='R. Housley'><organization /></author>
<date year='2009' month='September' />
<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="RFC8366" target='https://www.rfc-editor.org/info/rfc8366'>
<front>
<title>A Voucher Artifact for Bootstrapping Protocols</title>
<author initials='K.' surname='Watsen' fullname='K. Watsen'><organization /></author>
<author initials='M.' surname='Richardson' fullname='M. Richardson'><organization /></author>
<author initials='M.' surname='Pritikin' fullname='M. Pritikin'><organization /></author>
<author initials='T.' surname='Eckert' fullname='T. Eckert'><organization /></author>
<date year='2018' month='May' />
<abstract><t>This document defines a strategy to securely assign a pledge to an owner using an artifact signed, directly or indirectly, by the pledge's manufacturer.  This artifact is known as a &quot;voucher&quot;.</t><t>This document defines an artifact format as a YANG-defined JSON document that has been signed using a Cryptographic Message Syntax (CMS) structure.  Other YANG-derived formats are possible.  The voucher artifact is normally generated by the pledge's manufacturer (i.e., the Manufacturer Authorized Signing Authority (MASA)).</t><t>This document only defines the voucher artifact, leaving it to other documents to describe specialized protocols for accessing it.</t></abstract>
</front>
<seriesInfo name='RFC' value='8366'/>
<seriesInfo name='DOI' value='10.17487/RFC8366'/>
</reference>



<reference  anchor="RFC3688" target='https://www.rfc-editor.org/info/rfc3688'>
<front>
<title>The IETF XML Registry</title>
<author initials='M.' surname='Mealling' fullname='M. Mealling'><organization /></author>
<date year='2004' month='January' />
<abstract><t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t></abstract>
</front>
<seriesInfo name='BCP' value='81'/>
<seriesInfo name='RFC' value='3688'/>
<seriesInfo name='DOI' value='10.17487/RFC3688'/>
</reference>



<reference  anchor="RFC6020" target='https://www.rfc-editor.org/info/rfc6020'>
<front>
<title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
<author initials='M.' surname='Bjorklund' fullname='M. Bjorklund' role='editor'><organization /></author>
<date year='2010' month='October' />
<abstract><t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6020'/>
<seriesInfo name='DOI' value='10.17487/RFC6020'/>
</reference>


<reference anchor="I-D.ietf-cose-rfc8152bis-struct">
   <front>
      <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
      <author fullname="Jim Schaad">
	 <organization>August Cellars</organization>
      </author>
      <date month="February" day="1" year="2021" />
      <abstract>
	 <t>   Concise Binary Object Representation (CBOR) is a data format designed
   for small code size and small message size.  There is a need for the
   ability to have basic security services defined for this data format.
   This document defines the CBOR Object Signing and Encryption (COSE)
   protocol.  This specification describes how to create and process
   signatures, message authentication codes, and encryption using CBOR
   for serialization.  This specification additionally describes how to
   represent cryptographic keys using CBOR.

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

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-cose-rfc8152bis-struct-15" />
   <format type="TXT" target="https://www.ietf.org/internet-drafts/draft-ietf-cose-rfc8152bis-struct-15.txt" />
</reference>


<reference anchor="I-D.ietf-anima-bootstrapping-keyinfra">
   <front>
      <title>Bootstrapping Remote Secure Key Infrastructures (BRSKI)</title>
      <author fullname="Max Pritikin">
	 <organization>Cisco</organization>
      </author>
      <author fullname="Michael C. Richardson">
	 <organization>Sandelman Software Works</organization>
      </author>
      <author fullname="Toerless Eckert">
	 <organization>Futurewei Technologies Inc.  USA</organization>
      </author>
      <author fullname="Michael H. Behringer">
	 </author>
      <author fullname="Kent Watsen">
	 <organization>Watsen Networks</organization>
      </author>
      <date month="November" day="11" year="2020" />
      <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&#39;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 using a routable address and a
   cloud service, or using only link-local connectivity, or on 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="Internet-Draft" value="draft-ietf-anima-bootstrapping-keyinfra-45" />
   <format type="TXT" target="https://www.ietf.org/internet-drafts/draft-ietf-anima-bootstrapping-keyinfra-45.txt" />
</reference>


<reference anchor="I-D.ietf-ace-coap-est">
   <front>
      <title>EST over secure CoAP (EST-coaps)</title>
      <author fullname="Peter van der Stok">
	 <organization>Consultant</organization>
      </author>
      <author fullname="Panos Kampanakis">
	 <organization>Cisco Systems</organization>
      </author>
      <author fullname="Michael C. Richardson">
	 <organization>Sandelman Software Works</organization>
      </author>
      <author fullname="Shahid Raza">
	 <organization>RISE SICS</organization>
      </author>
      <date month="January" day="6" year="2020" />
      <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="Internet-Draft" value="draft-ietf-ace-coap-est-18" />
   <format type="TXT" target="https://www.ietf.org/internet-drafts/draft-ietf-ace-coap-est-18.txt" />
</reference>


<reference anchor="I-D.ietf-cose-x509">
   <front>
      <title>CBOR Object Signing and Encryption (COSE): Header parameters for carrying and referencing X.509 certificates</title>
      <author fullname="Jim Schaad">
	 <organization>August Cellars</organization>
      </author>
      <date month="December" day="14" year="2020" />
      <abstract>
	 <t>   The CBOR Signing And Encrypted Message (COSE) structure uses
   references to keys in general.  For some algorithms, additional
   properties are defined which carry parameters relating to keys as
   needed.  The COSE Key structure is used for transporting keys outside
   of COSE messages.  This document extends the way that keys can be
   identified and transported by providing attributes that refer to or
   contain X.509 certificates.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-cose-x509-08" />
   <format type="TXT" target="https://www.ietf.org/internet-drafts/draft-ietf-cose-x509-08.txt" />
</reference>


<reference anchor="I-D.selander-ace-ake-authz">
   <front>
      <title>Lightweight Authorization for Authenticated Key Exchange.</title>
      <author fullname="Goeran Selander">
	 <organization>Ericsson AB</organization>
      </author>
      <author fullname="John Preuss Mattsson">
	 <organization>Ericsson AB</organization>
      </author>
      <author fullname="Malisa Vucinic">
	 <organization>INRIA</organization>
      </author>
      <author fullname="Michael Richardson">
	 <organization>Sandelman Software Works</organization>
      </author>
      <author fullname="Aurelio Schellenbaum">
	 <organization>Institute of Embedded Systems, ZHAW</organization>
      </author>
      <date month="November" day="2" year="2020" />
      <abstract>
	 <t>   This document describes a procedure for augmenting the authenticated
   Diffie-Hellman key exchange EDHOC with third party assisted
   authorization targeting constrained IoT deployments (RFC 7228).

Note to Readers

   Source for this draft and an issue tracker can be found at
   https://github.com/EricssonResearch/ace-ake-authz
   (https://github.com/EricssonResearch/ace-ake-authz).

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-selander-ace-ake-authz-02" />
   <format type="TXT" target="https://www.ietf.org/internet-drafts/draft-selander-ace-ake-authz-02.txt" />
</reference>



<reference  anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<abstract><t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='2119'/>
<seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>



<reference  anchor="RFC8174" target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author>
<date year='2017' month='May' />
<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>


<reference anchor="I-D.ietf-6tisch-minimal-security">
   <front>
      <title>Constrained Join Protocol (CoJP) for 6TiSCH</title>
      <author fullname="Malisa Vucinic">
	 <organization>Inria</organization>
      </author>
      <author fullname="Jonathan Simon">
	 <organization>Analog Devices</organization>
      </author>
      <author fullname="Kris Pister">
	 <organization>University of California Berkeley</organization>
      </author>
      <author fullname="Michael Richardson">
	 <organization>Sandelman Software Works</organization>
      </author>
      <date month="December" day="10" year="2019" />
      <abstract>
	 <t>   This document describes the minimal framework required for a new
   device, called &quot;pledge&quot;, to securely join a 6TiSCH (IPv6 over the
   TSCH mode of IEEE 802.15.4e) 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 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="Internet-Draft" value="draft-ietf-6tisch-minimal-security-15" />
   <format type="TXT" target="https://www.ietf.org/internet-drafts/draft-ietf-6tisch-minimal-security-15.txt" />
</reference>




    </references>

    <references title='Informative References'>




<reference anchor="I-D.ietf-netmod-yang-tree-diagrams">
   <front>
      <title>YANG Tree Diagrams</title>
      <author fullname="Martin Bjorklund">
	 <organization>Tail-f Systems</organization>
      </author>
      <author fullname="Lou Berger">
	 <organization>LabN Consulting, L.L.C.</organization>
      </author>
      <date month="February" day="8" year="2018" />
      <abstract>
	 <t>This document captures the current syntax used in YANG module tree diagrams.  The purpose of this document is to provide a single location for this definition.  This syntax may be updated from time to time based on the evolution of the YANG language.
	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-netmod-yang-tree-diagrams-06" />
   <format type="TXT" target="https://www.ietf.org/internet-drafts/draft-ietf-netmod-yang-tree-diagrams-06.txt" />
</reference>


<reference anchor="COSE-registry" target="https://www.iana.org/assignments/cose/cose.xhtml">
  <front>
    <title>CBOR Object Signing and Encryption (COSE) registry</title>
    <author initials="." surname="IANA">
      <organization></organization>
    </author>
    <date year="2017"/>
  </front>
</reference>




<reference  anchor="RFC6690" target='https://www.rfc-editor.org/info/rfc6690'>
<front>
<title>Constrained RESTful Environments (CoRE) Link Format</title>
<author initials='Z.' surname='Shelby' fullname='Z. Shelby'><organization /></author>
<date year='2012' month='August' />
<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.  &quot;RESTful&quot; refers to the Representational State Transfer (REST) architecture.  A well-known URI is defined as a default entry point for requesting the links hosted by a server.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6690'/>
<seriesInfo name='DOI' value='10.17487/RFC6690'/>
</reference>



<reference  anchor="RFC7030" target='https://www.rfc-editor.org/info/rfc7030'>
<front>
<title>Enrollment over Secure Transport</title>
<author initials='M.' surname='Pritikin' fullname='M. Pritikin' role='editor'><organization /></author>
<author initials='P.' surname='Yee' fullname='P. Yee' role='editor'><organization /></author>
<author initials='D.' surname='Harkins' fullname='D. Harkins' role='editor'><organization /></author>
<date year='2013' month='October' />
<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="I-D.ietf-anima-constrained-join-proxy">
   <front>
      <title>Constrained Join Proxy for Bootstrapping Protocols</title>
      <author fullname="Michael Richardson">
	 <organization>Sandelman Software Works</organization>
      </author>
      <author fullname="Peter van der Stok">
	 <organization>vanderstok consultancy</organization>
      </author>
      <author fullname="Panos Kampanakis">
	 <organization>Cisco Systems</organization>
      </author>
      <date month="February" day="4" year="2021" />
      <abstract>
	 <t>   This document defines a protocol to securely assign a pledge to a
   domain, represented by a Registrar, using an intermediary node
   between pledge and Registrar.  This intermediary node is known as a
   &quot;constrained Join Proxy&quot;.

   This document extends the work of
   [I-D.ietf-anima-bootstrapping-keyinfra] by replacing the Circuit-
   proxy by a stateless/stateful constrained (CoAP) Join Proxy.  It
   transports join traffic from the pledge to the Registrar without
   requiring per-client state.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-anima-constrained-join-proxy-02" />
   <format type="TXT" target="https://www.ietf.org/internet-drafts/draft-ietf-anima-constrained-join-proxy-02.txt" />
</reference>




    </references>


<section anchor="est-messages-to-est-coaps" title="EST messages to EST-coaps">

<t>This section extends the examples from Appendix A of <xref target="I-D.ietf-ace-coap-est"/>. The CoAP headers are only worked out for the enrollstatus example.</t>

<section anchor="es" title="enrollstatus">

<t>A coaps enrollstatus message can be :</t>

<figure><artwork><![CDATA[
    POST coaps://192.0.2.1:8085/est/es
]]></artwork></figure>

<t>The corresponding coap header fields are shown below.</t>

<figure><artwork><![CDATA[
  Ver = 1
  T = 0 (CON)
  Code = 0x02 (0.02 is POST)
  Options
   Option  (Uri-Path)
     Option Delta = 0xb   (option nr = 11)
     Option Length = 0x3
     Option Value = "est"
   Option  (Uri-Path)
     Option Delta = 0x0   (option nr = 11)
     Option Length = 0x2
     Option Value = "es"
  Payload = [Empty]
]]></artwork></figure>

<t>The Uri-Host and Uri-Port Options are omitted because they coincide with the transport protocol destination address and port respectively.</t>

<t>A 2.05 Content response with an unsigned voucher status (ct=60) will then be:</t>

<figure><artwork><![CDATA[
   2.05 Content (Content-Format: application/cbor)
]]></artwork></figure>

<t>With CoAP fields and payload:</t>

<figure><artwork><![CDATA[
   Ver=1
   T=2 (ACK)
   Code = 0x45 (2.05 Content)
   Options
     Option1 (Content-Format)
     Option Delta = 0xC  (option nr 12)
     Option Length = 0x2
     Option Value = 60 (application/cbor)

     Payload (CBOR diagnostic) =
     {
     "version":"1",
     "Status": 1,   / 1 = Success, 0 = Fail  /
     "Reason":"Informative human readable message",
     "reason-context": "Additional information"
     }
]]></artwork></figure>

<t>The binary payload is:</t>

<figure><artwork><![CDATA[
     A46776657273696F6E6131665374617475730166526561736F6E7822
     496E666F726D61746976652068756D616E207265616461626C65206D
     6573736167656e726561736F6E2D636F6E74657874
     764164646974696F6E616C20696E666F726D6174696F6E
]]></artwork></figure>

<t>The binary payload disassembles to the above CBOR diagnostic code.</t>

</section>
<section anchor="voucherstatus" title="voucher_status">

<t>A coaps voucher_status message can be:</t>

<figure><artwork><![CDATA[
   POST coaps://[2001:db8::2:1]:61616/est/vs
]]></artwork></figure>

<t>A 2.05 Content response with a non signed CBOR voucher status (ct=60) will then be:</t>

<figure><artwork><![CDATA[
    2.05 Content (Content-Format: application/cbor)
    Payload =
a46776657273696f6e6131665374617475730166526561736f6e7822496e666f7
26d61746976652068756d616e207265616461626c65206d6573736167656e7265
61736f6e2d636f6e74657874764164646974696f6e616c20696e666f726d61746
96f6e<CODE ENDS>
]]></artwork></figure>

<t>The payload above is represented in hexadecimal.</t>

<figure><artwork><![CDATA[
{"version": "1", "Status": 1, "Reason": "Informative human 
readable message", "reason-context": "Additional information"}<CODE ENDS>
]]></artwork></figure>

</section>
</section>
<section anchor="cosesign" title="COSE examples">

<t>These examples are generated on a pie 4 and a PC running BASH. Keys and Certificates have been generated with openssl with the following shell script:</t>

<figure><artwork><![CDATA[
#!/bin/bash
#try-cert.sh
export dir=./brski/intermediate
export cadir=./brski
export cnfdir=./conf
export format=pem
export default_crl_days=30
sn=8

DevID=pledge.1.2.3.4
serialNumber="serialNumber=$DevID"
export hwType=1.3.6.1.4.1.6715.10.1
export hwSerialNum=01020304 # Some hex
export subjectAltName="otherName:1.3.6.1.5.5.7.8.4;SEQ:hmodname"
echo  $hwType - $hwSerialNum
echo $serialNumber
OPENSSL_BIN="openssl"

# remove all files
rm -r ./brski/*
#
# initialize file structure
# root level
cd $cadir
mkdir certs crl csr newcerts private
chmod 700 private
touch index.txt
touch serial
echo 11223344556600 >serial
echo 1000 > crlnumber
# intermediate level
mkdir intermediate
cd intermediate
mkdir certs crl csr newcerts private
chmod 700 private
touch index.txt
echo 11223344556600 >serial
echo 1000 > crlnumber
cd ../..



# file structure is cleaned start filling

echo "#############################"
echo "create registrar keys and certificates "
echo "#############################"


echo "create root registrar certificate using ecdsa with sha 256 key"
$OPENSSL_BIN ecparam -name prime256v1 -genkey \
   -noout -out $cadir/private/ca-regis.key

$OPENSSL_BIN req -new -x509 \
 -config $cnfdir/openssl-regis.cnf \
 -key $cadir/private/ca-regis.key \
 -out $cadir/certs/ca-regis.crt \
 -extensions v3_ca\
 -days 365 \
 -subj "/C=NL/ST=NB/L=Helmond/O=vanderstok/OU=consultancy \
/CN=registrar.stok.nl"

# Combine authority certificate and key
echo "Combine authority certificate and key"
$OPENSSL_BIN pkcs12 -passin pass:watnietweet -passout pass:watnietweet\
   -inkey $cadir/private/ca-regis.key \
   -in $cadir/certs/ca-regis.crt -export \
   -out $cadir/certs/ca-regis-comb.pfx

# converteer authority pkcs12 file to pem
echo "converteer authority pkcs12 file to pem"
$OPENSSL_BIN pkcs12 -passin pass:watnietweet -passout pass:watnietweet\
   -in $cadir/certs/ca-regis-comb.pfx \
   -out $cadir/certs/ca-regis-comb.crt -nodes

#show certificate in registrar combined certificate
$OPENSSL_BIN  x509 -in $cadir/certs/ca-regis-comb.crt -text

#
# Certificate Authority for MASA
#
echo "#############################"
echo "create MASA keys and certificates "
echo "#############################"

echo "create root MASA certificate using ecdsa with sha 256 key"
$OPENSSL_BIN ecparam -name prime256v1 -genkey -noout \
   -out $cadir/private/ca-masa.key

$OPENSSL_BIN req -new -x509 \
 -config $cnfdir/openssl-masa.cnf \
 -days 1000 -key $cadir/private/ca-masa.key \
  -out $cadir/certs/ca-masa.crt \
 -extensions v3_ca\
 -subj "/C=NL/ST=NB/L=Helmond/O=vanderstok/OU=manufacturer\
/CN=masa.stok.nl"

# Combine authority certificate and key
echo "Combine authority certificate and key for masa"
$OPENSSL_BIN pkcs12 -passin pass:watnietweet -passout pass:watnietweet\
   -inkey $cadir/private/ca-masa.key \
   -in $cadir/certs/ca-masa.crt -export \
   -out $cadir/certs/ca-masa-comb.pfx

# converteer authority pkcs12 file to pem for masa
echo "converteer authority pkcs12 file to pem for masa"
$OPENSSL_BIN pkcs12 -passin pass:watnietweet -passout pass:watnietweet\
   -in $cadir/certs/ca-masa-comb.pfx \
   -out $cadir/certs/ca-masa-comb.crt -nodes

#show certificate in pledge combined certificate
$OPENSSL_BIN  x509 -in $cadir/certs/ca-masa-comb.crt -text


#
# Certificate for Pledge derived from MASA certificate
#
echo "#############################"
echo "create pledge keys and certificates "
echo "#############################"


# Pledge derived Certificate

echo "create pledge derived certificate using ecdsa with sha 256 key"
$OPENSSL_BIN ecparam -name prime256v1 -genkey -noout \
   -out $dir/private/pledge.key

echo "create pledge certificate request"
$OPENSSL_BIN req -nodes -new -sha256 \
   -key $dir/private/pledge.key -out $dir/csr/pledge.csr \
  -subj "/C=NL/ST=NB/L=Helmond/O=vanderstok/OU=manufacturing\
 /CN=uuid:$DevID/$serialNumber"

# Sign pledge derived Certificate
echo "sign pledge derived certificate "
$OPENSSL_BIN ca -config $cnfdir/openssl-pledge.cnf \
 -extensions 8021ar_idevid\
 -days 365 -in $dir/csr/pledge.csr \
 -out $dir/certs/pledge.crt 

# Add pledge key and pledge certificate to pkcs12 file
echo "Add derived pledge key and derived pledge \
 certificate to pkcs12 file"
$OPENSSL_BIN pkcs12  -passin pass:watnietweet -passout pass:watnietweet\
   -inkey $dir/private/pledge.key \
   -in $dir/certs/pledge.crt -export \
   -out $dir/certs/pledge-comb.pfx

# converteer pledge pkcs12 file to pem
echo "converteer pledge pkcs12 file to pem"
$OPENSSL_BIN pkcs12 -passin pass:watnietweet -passout pass:watnietweet\
   -in $dir/certs/pledge-comb.pfx \
   -out $dir/certs/pledge-comb.crt -nodes

#show certificate in pledge-comb.crt
$OPENSSL_BIN  x509 -in $dir/certs/pledge-comb.crt -text

#show private key in pledge-comb.crt
$OPENSSL_BIN ecparam -name prime256v1\
  -in $dir/certs/pledge-comb.crt -text
<CODE ENDS>
]]></artwork></figure>

<t>The xxxx-comb certificates have been generated as required by libcoap for the DTLS connection generation.</t>

<section anchor="pledge-registrar-and-masa-keys" title="Pledge, Registrar and MASA keys">

<t>This first section documents the public and private keys used in the
subsequent test vectors below.  These keys come from test code and are not used in any
production system, and should only be used only to validate implementations.</t>

<section anchor="pledge-private-key" title="Pledge private key">

<figure><artwork><![CDATA[
Private-Key: (256 bit)
priv:
    9b:4d:43:b6:a9:e1:7c:04:93:45:c3:13:d9:b5:f0:
    41:a9:6a:9c:45:79:73:b8:62:f1:77:03:3a:fc:c2:
    9c:9a
pub:
    04:d6:b7:6f:74:88:bd:80:ae:5f:28:41:2c:72:02:
    ef:5f:98:b4:81:e1:d9:10:4c:f8:1b:66:d4:3e:5c:
    ea:da:73:e6:a8:38:a9:f1:35:11:85:b6:cd:e2:04:
    10:be:fe:d5:0b:3b:14:69:2e:e1:b0:6a:bc:55:40:
    60:eb:95:5c:54
ASN1 OID: prime256v1
NIST CURVE: P-256
<CODE ENDS>
]]></artwork></figure>

</section>
<section anchor="jrcpriv" title="Registrar private key">

<figure><artwork><![CDATA[
Private-Key: (256 bit)
priv:
    81:df:bb:50:a3:45:58:06:b5:56:3b:46:de:f3:e9:
    e9:00:ae:98:13:9e:2f:36:68:81:fc:d9:65:24:fb:
    21:7e
pub:
    04:50:7a:c8:49:1a:8c:69:c7:b5:c3:1d:03:09:ed:
    35:ba:13:f5:88:4c:e6:2b:88:cf:30:18:15:4f:a0:
    59:b0:20:ec:6b:eb:b9:4e:02:b8:93:40:21:89:8d:
    a7:89:c7:11:ce:a7:13:39:f5:0e:34:8e:df:0d:92:
    3e:d0:2d:c7:b7
ASN1 OID: prime256v1
NIST CURVE: P-256
<CODE ENDS>
]]></artwork></figure>

</section>
<section anchor="masapriv" title="MASA private key">

<figure><artwork><![CDATA[
Private-Key: (256 bit)
priv:
    c6:bb:a5:8f:b6:d3:c4:75:28:d8:d3:d9:46:c3:31:
    83:6d:00:0a:9a:38:ce:22:5c:e9:d9:ea:3b:98:32:
    ec:31
pub:
    04:59:80:94:66:14:94:20:30:3c:66:08:85:55:86:
    db:e7:d4:d1:d7:7a:d2:a3:1a:0c:73:6b:01:0d:02:
    12:15:d6:1f:f3:6e:c8:d4:84:60:43:3b:21:c5:83:
    80:1e:fc:e2:37:85:77:97:94:d4:aa:34:b5:b6:c6:
    ed:f3:17:5c:f1
ASN1 OID: prime256v1
NIST CURVE: P-256
<CODE ENDS>
]]></artwork></figure>

</section>
</section>
<section anchor="pledge-registrar-and-masa-certificates" title="Pledge, Registrar and MASA certificates">

<t>Below the certificates that accompany the keys. The certificate description is followed by the hexadecimal DER of the certificate</t>

<section anchor="pledge-idevid-certificate" title="Pledge IDevID certificate">

<figure><artwork><![CDATA[
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 4822678189204992 (0x11223344556600)
        Signature Algorithm: ecdsa-with-SHA256
        Issuer: C=NL, ST=NB, L=Helmond, O=vanderstok, OU=manufacturer, 
                                                      CN=masa.stok.nl
        Validity
            Not Before: Dec  9 10:02:36 2020 GMT
            Not After : Dec 31 23:59:59 9999 GMT
        Subject: C=NL, ST=NB, L=Helmond, O=vanderstok, OU=manufacturing,
                   CN=uuid:pledge.1.2.3.4/serialNumber=pledge.1.2.3.4
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
                pub:
                    04:d6:b7:6f:74:88:bd:80:ae:5f:28:41:2c:72:02:
                    ef:5f:98:b4:81:e1:d9:10:4c:f8:1b:66:d4:3e:5c:
                    ea:da:73:e6:a8:38:a9:f1:35:11:85:b6:cd:e2:04:
                    10:be:fe:d5:0b:3b:14:69:2e:e1:b0:6a:bc:55:40:
                    60:eb:95:5c:54
                ASN1 OID: prime256v1
                NIST CURVE: P-256
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            X509v3 Authority Key Identifier: 
                keyid:
      E4:03:93:B4:C3:D3:F4:2A:80:A4:77:18:F6:96:49:03:01:17:68:A3

    Signature Algorithm: ecdsa-with-SHA256
         30:46:02:21:00:d2:e6:45:3b:b0:c3:00:b3:25:8d:f1:83:fe:
         d9:37:c1:a2:49:65:69:7f:6b:b9:ef:2c:05:07:06:31:ac:17:
         bd:02:21:00:e2:ce:9e:7b:7f:74:50:33:ad:9e:ff:12:4e:e9:
         a6:f3:b8:36:65:ab:7d:80:bb:56:88:bc:03:1d:e5:1e:31:6f

<CODE ENDS>
]]></artwork></figure>

<t>This is the hexadecimal representation in (request-)voucher examples referred to as pledge-cert-hex.</t>

<figure><artwork><![CDATA[
30820226308201cba003020102020711223344556600300a06082a8648ce3d04
0302306f310b3009060355040613024e4c310b300906035504080c024e423110
300e06035504070c0748656c6d6f6e6431133011060355040a0c0a76616e6465
7273746f6b31153013060355040b0c0c6d616e75666163747572657231153013
06035504030c0c6d6173612e73746f6b2e6e6c3020170d323031323039313030
3233365a180f39393939313233313233353935395a308190310b300906035504
0613024e4c310b300906035504080c024e423110300e06035504070c0748656c
6d6f6e6431133011060355040a0c0a76616e64657273746f6b31163014060355
040b0c0d6d616e75666163747572696e67311c301a06035504030c1375756964
3a706c656467652e312e322e332e34311730150603550405130e706c65646765
2e312e322e332e343059301306072a8648ce3d020106082a8648ce3d03010703
420004d6b76f7488bd80ae5f28412c7202ef5f98b481e1d9104cf81b66d43e5c
eada73e6a838a9f1351185b6cde20410befed50b3b14692ee1b06abc554060eb
955c54a32e302c30090603551d1304023000301f0603551d23041830168014e4
0393b4c3d3f42a80a47718f6964903011768a3300a06082a8648ce3d04030203
49003046022100d2e6453bb0c300b3258df183fed937c1a24965697f6bb9ef2c
05070631ac17bd022100e2ce9e7b7f745033ad9eff124ee9a6f3b83665ab7d80
bb5688bc031de51e316f<CODE ENDS>
]]></artwork></figure>

</section>
<section anchor="registrar-certificate" title="Registrar Certificate">

<figure><artwork><![CDATA[
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            70:56:ea:aa:30:66:d8:82:6a:55:5b:90:88:d4:62:bf:9c:f2:8c:fd
        Signature Algorithm: ecdsa-with-SHA256
        Issuer: C=NL, ST=NB, L=Helmond, O=vanderstok, OU=consultancy,
                                                 CN=registrar.stok.nl
        Validity
            Not Before: Dec  9 10:02:36 2020 GMT
            Not After : Dec  9 10:02:36 2021 GMT
        Subject: C=NL, ST=NB, L=Helmond, O=vanderstok, OU=consultancy,
                                                  CN=registrar.stok.nl
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
                pub:
                    04:50:7a:c8:49:1a:8c:69:c7:b5:c3:1d:03:09:ed:
                    35:ba:13:f5:88:4c:e6:2b:88:cf:30:18:15:4f:a0:
                    59:b0:20:ec:6b:eb:b9:4e:02:b8:93:40:21:89:8d:
                    a7:89:c7:11:ce:a7:13:39:f5:0e:34:8e:df:0d:92:
                    3e:d0:2d:c7:b7
                ASN1 OID: prime256v1
                NIST CURVE: P-256
        X509v3 extensions:
            X509v3 Subject Key Identifier: 
      08:C2:BF:36:88:7F:79:41:21:85:87:2F:16:A7:AC:A6:EF:B3:D2:B3
            X509v3 Authority Key Identifier: 
                keyid:
      08:C2:BF:36:88:7F:79:41:21:85:87:2F:16:A7:AC:A6:EF:B3:D2:B3

            X509v3 Basic Constraints: critical
                CA:TRUE
            X509v3 Extended Key Usage: 
                CMC Registration Authority, TLS Web Server 
                Authentication, TLS Web Client Authentication
            X509v3 Key Usage: critical
                Digital Signature, Non Repudiation, Key Encipherment, 
                Data Encipherment, Certificate Sign, CRL Sign
    Signature Algorithm: ecdsa-with-SHA256
         30:44:02:20:74:4c:99:00:85:13:b2:f1:bc:fd:f9:02:1a:46:
         fb:17:4c:f8:83:a2:7c:a1:d9:3f:ae:ac:f3:1e:4e:dd:12:c6:
         02:20:11:47:14:db:f5:1a:5e:78:f5:81:b9:42:1c:6e:47:02:
         ab:53:72:70:c5:ba:fb:2d:16:c3:de:9a:a1:82:c3:5f

<CODE ENDS>
]]></artwork></figure>

<t>This the hexadecimal representation, in (request-)voucher examples referred to as regis-cert-hex</t>

<figure><artwork><![CDATA[
308202753082021ca00302010202147056eaaa3066d8826a555b9088d462bf9c
f28cfd300a06082a8648ce3d0403023073310b3009060355040613024e4c310b
300906035504080c024e423110300e06035504070c0748656c6d6f6e64311330
11060355040a0c0a76616e64657273746f6b31143012060355040b0c0b636f6e
73756c74616e6379311a301806035504030c117265676973747261722e73746f
6b2e6e6c301e170d3230313230393130303233365a170d323131323039313030
3233365a3073310b3009060355040613024e4c310b300906035504080c024e42
3110300e06035504070c0748656c6d6f6e6431133011060355040a0c0a76616e
64657273746f6b31143012060355040b0c0b636f6e73756c74616e6379311a30
1806035504030c117265676973747261722e73746f6b2e6e6c3059301306072a
8648ce3d020106082a8648ce3d03010703420004507ac8491a8c69c7b5c31d03
09ed35ba13f5884ce62b88cf3018154fa059b020ec6bebb94e02b8934021898d
a789c711cea71339f50e348edf0d923ed02dc7b7a3818d30818a301d0603551d
0e0416041408c2bf36887f79412185872f16a7aca6efb3d2b3301f0603551d23
04183016801408c2bf36887f79412185872f16a7aca6efb3d2b3300f0603551d
130101ff040530030101ff30270603551d250420301e06082b0601050507031c
06082b0601050507030106082b06010505070302300e0603551d0f0101ff0404
030201f6300a06082a8648ce3d04030203470030440220744c99008513b2f1bc
fdf9021a46fb174cf883a27ca1d93faeacf31e4edd12c60220114714dbf51a5e
78f581b9421c6e4702ab537270c5bafb2d16c3de9aa182c35f<CODE ENDS>
]]></artwork></figure>

</section>
<section anchor="masa-certificate" title="MASA Certificate">

<figure><artwork><![CDATA[
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            14:26:b8:1c:ce:d8:c3:e8:14:05:cb:87:67:0d:be:ef:d5:81:25:b4
        Signature Algorithm: ecdsa-with-SHA256
        Issuer: C=NL, ST=NB, L=Helmond, O=vanderstok, 
            OU=manufacturer, CN=masa.stok.nl

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

            X509v3 Basic Constraints: critical
                CA:TRUE
            X509v3 Extended Key Usage: 
                CMC Registration Authority,
                TLS Web Server Authentication,
                TLS Web Client Authentication
            X509v3 Key Usage: critical
                Digital Signature, Non Repudiation, Key Encipherment, 
                      Data Encipherment, Certificate Sign, CRL Sign
    Signature Algorithm: ecdsa-with-SHA256
         30:44:02:20:2e:c5:f2:24:72:70:20:ea:6e:74:8b:13:93:67:
         8a:e6:fe:fb:8d:56:7f:f5:34:18:a9:ef:a5:0f:c3:99:ca:53:
         02:20:3d:dc:91:d0:e9:6a:69:20:01:fb:e4:20:40:de:7c:7d:
         98:ed:d8:84:53:61:84:a7:f9:13:06:4c:a9:b2:8f:5c


<CODE ENDS>
]]></artwork></figure>

<t>This is the hexadecimal representation, in (request-)voucher examples referred to as masa-cert-hex.</t>

<figure><artwork><![CDATA[
3082026d30820214a00302010202141426b81cced8c3e81405cb87670dbeefd5
8125b4300a06082a8648ce3d040302306f310b3009060355040613024e4c310b
300906035504080c024e423110300e06035504070c0748656c6d6f6e64311330
11060355040a0c0a76616e64657273746f6b31153013060355040b0c0c6d616e
7566616374757265723115301306035504030c0c6d6173612e73746f6b2e6e6c
301e170d3230313230393130303233365a170d3233303930353130303233365a
306f310b3009060355040613024e4c310b300906035504080c024e423110300e
06035504070c0748656c6d6f6e6431133011060355040a0c0a76616e64657273
746f6b31153013060355040b0c0c6d616e756661637475726572311530130603
5504030c0c6d6173612e73746f6b2e6e6c3059301306072a8648ce3d02010608
2a8648ce3d0301070342000459809466149420303c6608855586dbe7d4d1d77a
d2a31a0c736b010d021215d61ff36ec8d48460433b21c583801efce237857797
94d4aa34b5b6c6edf3175cf1a3818d30818a301d0603551d0e04160414e40393
b4c3d3f42a80a47718f6964903011768a3301f0603551d23041830168014e403
93b4c3d3f42a80a47718f6964903011768a3300f0603551d130101ff04053003
0101ff30270603551d250420301e06082b0601050507031c06082b0601050507
030106082b06010505070302300e0603551d0f0101ff0404030201f6300a0608
2a8648ce3d040302034700304402202ec5f224727020ea6e748b1393678ae6fe
fb8d567ff53418a9efa50fc399ca5302203ddc91d0e96a692001fbe42040de7c
7d98edd884536184a7f913064ca9b28f5c<CODE ENDS>
]]></artwork></figure>

</section>
</section>
<section anchor="cose-signed-voucher-request-from-pledge-to-registrar" title="COSE signed voucher request from Pledge to Registrar">

<t>In this example the voucher request has been signed by the Pledge, and has been sent to the JRC over CoAPS.
The Pledge uses the proximity assertion together with an included proximity-registrar-cert field to inform
MASA about its proximity to the specific Registrar.</t>

<figure><artwork><![CDATA[
    POST coaps://registrar.example.com/est/rv
    (Content-Format: application/voucher-cose+cbor)
    signed_request_voucher
]]></artwork></figure>

<t>The payload signed_request_voucher is shown as hexadecimal dump (with lf added):</t>

<figure><artwork><![CDATA[
d28444a101382ea104582097113db094eee8eae48683e7337875c0372164be89d023a5f3d
f52699c0fbfb55902d2a11909c5a60274323032302d31322d32335431323a30353a32325a
0474323032322d31322d32335431323a30353a32325a01020750684ca83e27230aff97630
cf2c1ec409a0d6e706c656467652e312e322e332e340a590279308202753082021ca00302
010202147056eaaa3066d8826a555b9088d462bf9cf28cfd300a06082a8648ce3d0403023
073310b3009060355040613024e4c310b300906035504080c024e423110300e0603550407
0c0748656c6d6f6e6431133011060355040a0c0a76616e64657273746f6b3114301206035
5040b0c0b636f6e73756c74616e6379311a301806035504030c117265676973747261722e
73746f6b2e6e6c301e170d3230313230393130303233365a170d323131323039313030323
3365a3073310b3009060355040613024e4c310b300906035504080c024e423110300e0603
5504070c0748656c6d6f6e6431133011060355040a0c0a76616e64657273746f6b3114301
2060355040b0c0b636f6e73756c74616e6379311a301806035504030c1172656769737472
61722e73746f6b2e6e6c3059301306072a8648ce3d020106082a8648ce3d0301070342000
4507ac8491a8c69c7b5c31d0309ed35ba13f5884ce62b88cf3018154fa059b020ec6bebb9
4e02b8934021898da789c711cea71339f50e348edf0d923ed02dc7b7a3818d30818a301d0
603551d0e0416041408c2bf36887f79412185872f16a7aca6efb3d2b3301f0603551d2304
183016801408c2bf36887f79412185872f16a7aca6efb3d2b3300f0603551d130101ff040
530030101ff30270603551d250420301e06082b0601050507031c06082b06010505070301
06082b06010505070302300e0603551d0f0101ff0404030201f6300a06082a8648ce3d040
30203470030440220744c99008513b2f1bcfdf9021a46fb174cf883a27ca1d93faeacf31e
4edd12c60220114714dbf51a5e78f581b9421c6e4702ab537270c5bafb2d16c3de9aa182c
35f58473045022063766c7bbd1b339dbc398e764af3563e93b25a69104befe9aac2b3336b
8f56e1022100cd0419559ad960ccaed4dee3f436eca40b7570b25a52eb60332bc1f299148
4e9
<CODE ENDS>
]]></artwork></figure>

<t>The representiation of signed_voucher_request in CBOR diagnostic format is:</t>

<figure><artwork><![CDATA[
Diagnose(signed_request_voucher) =
18([
h'A101382E',     # {"alg": -47}
{4: h'97113DB094EEE8EAE48683E7337875C0372164BE89D023A5F3DF52699C0FBFB5'},
h'request_voucher',
h'3045022063766C7BBD1B339DBC398E764AF3563E93B25A69104BEFE9AAC2B3336B8F56E
1022100CD0419559AD960CCAED4DEE3F436ECA40B7570B25A52EB60332BC1F2991484E9'
])

Diagnose(request_voucher) =
{2501: {2: "2020-12-23T12:05:22Z",
        4: "2022-12-23T12:05:22Z",
        1: 2, 
        7: h'684CA83E27230AFF97630CF2C1EC409A', 
        13: "pledge.1.2.3.4", 
        10: h'regis-cert-hex'}}
<CODE ENDS>
]]></artwork></figure>

</section>
<section anchor="cose-signed-voucher-request-from-registrar-to-masa" title="COSE signed voucher request from Registrar to MASA">

<t>In this example the voucher request has been signed by the JRC using the private key from
<xref target="jrcpriv"/>.  Contained within this voucher request is the voucher
request from the Pledge to JRC.</t>

<figure><artwork><![CDATA[
    POST coaps://masa.example.com/est/rv
    (Content-Format: application/voucher-cose+cbor)
    signed_masa_request_voucher
]]></artwork></figure>

<t>The payload signed_masa_voucher_request is shown as hexadecimal dump (with lf added):</t>

<figure><artwork><![CDATA[
d28444a101382ea1045820e8735bc4b470c3aa6a7aa9aa8ee584c09c11131b205efec5d03
13bad84c5cd05590414a11909c5a60274323032302d31322d32385431303a30333a33355a
0474323032322d31322d32385431303a30333a33355a07501551631f6e0416bd162ba53ea
00c2a050d6e706c656467652e312e322e332e3405587131322d32385431303a30333a3335
5a07501551631f6e0416bd162ba53ea00c2a050d6e706c656467652e312e322e332e34055
87131322d32385431303a300000000000000000000000000416bd162ba53ea00c2a050d6e
706c656467652e312e322e332e3405587131322d32385431303a09590349d28444a101382
ea104582097113db094eee8eae48683e7337875c0372164be89d023a5f3df52699c0fbfb5
5902d2a11909c5a60274323032302d31322d32385431303a30333a33355a0474323032322
d31322d32385431303a30333a33355a010207501551631f6e0416bd162ba53ea00c2a050d
6e706c656467652e312e322e332e340a590279308202753082021ca00302010202147056e
aaa3066d8826a555b9088d462bf9cf28cfd300a06082a8648ce3d0403023073310b300906
0355040613024e4c310b300906035504080c024e423110300e06035504070c0748656c6d6
f6e6431133011060355040a0c0a76616e64657273746f6b31143012060355040b0c0b636f
6e73756c74616e6379311a301806035504030c117265676973747261722e73746f6b2e6e6
c301e170d3230313230393130303233365a170d3231313230393130303233365a3073310b
3009060355040613024e4c310b300906035504080c024e423110300e06035504070c07486
56c6d6f6e6431133011060355040a0c0a76616e64657273746f6b31143012060355040b0c
0b636f6e73756c74616e6379311a301806035504030c117265676973747261722e73746f6
b2e6e6c3059301306072a8648ce3d020106082a8648ce3d03010703420004507ac8491a8c
69c7b5c31d0309ed35ba13f5884ce62b88cf3018154fa059b020ec6bebb94e02b89340218
98da789c711cea71339f50e348edf0d923ed02dc7b7a3818d30818a301d0603551d0e0416
041408c2bf36887f79412185872f16a7aca6efb3d2b3301f0603551d2304183016801408c
2bf36887f79412185872f16a7aca6efb3d2b3300f0603551d130101ff040530030101ff30
270603551d250420301e06082b0601050507031c06082b0601050507030106082b0601050
5070302300e0603551d0f0101ff0404030201f6300a06082a8648ce3d0403020347003044
0220744c99008513b2f1bcfdf9021a46fb174cf883a27ca1d93faeacf31e4edd12c602201
14714dbf51a5e78f581b9421c6e4702ab537270c5bafb2d16c3de9aa182c35f5847304502
2063766c7bbd1b339dbc398e764af3563e93b25a69104befe9aac2b3336b8f56e1022100c
d0419559ad960ccaed4dee3f436eca40b7570b25a52eb60332bc1f2991484e95847304502
2100e6b45558c1b806bba23f4ac626c9bdb6fd354ef4330d8dfb7c529f29cca934c802203
c1f2ccbbac89733d17ee7775bc2654c5f1cc96afba2741cc31532444aa8fed8

<CODE ENDS>
]]></artwork></figure>

<t>The representiation of signed_masa_voucher_request in CBOR diagnostic format is:</t>

<figure><artwork><![CDATA[
Diagnose(signed_registrar_request-voucher)
18([
h'A101382E',     # {"alg": -47}
h'E8735BC4B470C3AA6A7AA9AA8EE584C09C11131B205EFEC5D0313BAD84C5CD0
5'}, 
h'registrar_request_voucher',
h'3045022100E6B45558C1B806BBA23F4AC626C9BDB6FD354EF4330D8DFB7C529
F29CCA934C802203C1F2CCBBAC89733D17EE7775BC2654C5F1CC96AFBA2741CC3
1532444AA8FED8'
])

Diagnose(registrar_request_voucher)
{2501: 
    {2: "2020-12-28T10:03:35Z",
     4: "2022-12-28T10:03:35Z", 
     7: h'1551631F6E0416BD162BA53EA00C2A05', 
    13: "pledge.1.2.3.4", 
     5: h'31322D32385431303A30333A33355A07501551631F6E0416BD162BA53EA00C2
A050D6E706C656467652E312E322E332E3405587131322D32385431303A300000
000000000000000000000416BD162BA53EA00C2A050D6E706C656467652E312E3
22E332E3405587131322D32385431303A', 
     9: h'signed_request_voucher'}}
<CODE ENDS>
]]></artwork></figure>

</section>
<section anchor="cose-signed-voucher-from-masa-to-pledge-via-registrar" title="COSE signed voucher from MASA to Pledge via Registrar">

<t>The resulting voucher is created by the MASA and returned via the JRC to the
Pledge.  It is signed by the MASA’s private key <xref target="masapriv"/> and can be
verified by the Pledge using the MASA’s public key contained within the MASA certificate.</t>

<t>This is the raw binary signed_voucher, encoded in hexadecimal (with lf added):</t>

<figure><artwork><![CDATA[
d28444a101382ea104582039920a34ee92d3148ab3a729f58611193270c9029f7784daf11
2614b19445d5158cfa1190993a70274323032302d31322d32335431353a30333a31325a04
74323032302d31322d32335431353a32333a31325a010007506508e06b2959d5089d7a316
9ea889a490b6e706c656467652e312e322e332e340858753073310b300906035504061302
4e4c310b300906035504080c024e423110300e06035504070c0748656c6d6f6e643113301
1060355040a0c0a76616e64657273746f6b31143012060355040b0c0b636f6e73756c7461
6e6379311a301806035504030c117265676973747261722e73746f6b2e6e6c03f45847304
5022022515d96cd12224ee5d3ac673237163bba24ad84815699285d9618f463ee73fa0221
00a6bff9d8585c1c9256371ece94da3d26264a5dfec0a354fe7b3aef58344c512f

<CODE ENDS>
]]></artwork></figure>

<t>The representiation of signed_voucher in CBOR diagnostic format is:</t>

<figure><artwork><![CDATA[
Diagnose(signed_voucher) =
18([
h'A101382E',     # {"alg": -47}
{4: h'39920A34EE92D3148AB3A729F58611193270C9029F7784DAF112614B194
45D51'},
h'voucher',
h'3045022022515D96CD12224EE5D3AC673237163BBA24AD84815699285D9618F
463EE73FA022100A6BFF9D8585C1C9256371ECE94DA3D26264A5DFEC0A354FE7B
3AEF58344C512F'
])


Diagnose(voucher) = 
{2451: 
   {2: "2020-12-23T15:03:12Z",
    4: "2020-12-23T15:23:12Z",
    1: 0, 
    7: h'6508E06B2959D5089D7A3169EA889A49',
   11: "pledge.1.2.3.4", 
    8: h'regis-cert-hex',
    3: false}}
<CODE ENDS>
]]></artwork></figure>

</section>
</section>


  </back>

<!-- ##markdown-source:
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
NmF///YBXvfHS6ubSuYLi4GDcMmFlscMtKxoEaFBUzjAClx4Bx5V6TVdO0Pt
/HzYkjP4vFF28vUxTvnV4F3jxTNcuaZ0BIT+Z0x8odR0FLGimETfGrxscvnq
ThVH8DYSRSBaoibe1zd6zIae75oWwSH6utWNLAPq1eM5pmv5WzUbzT+HqNwy
13NB/TS+S62WNXqhVfBYOFLBzOS0Lal6p73e29zeph4Xx0dnbxoPQfL1XsF/
zOpITGJX5bLql9dSzKXeuLqkDiEWv3ztnvCyfcrLZfKZl/n4YfO0u7+8exsd
VFzZpJDjfF9qKSmQ8x/7gyDWiLcli94dau8Srkrz8K2uPPIJhOGC654Bdrzn
QY1L2DPAa/ZQc90jhHB7t5NsL3d7aBHt3Wc06QDK1XIucAOFeo+Asf/++N2+
+eaPSty4v75+BPvcM+/X9rsh3duxtgnHmDtAglgqOsv7v8B6Vfj96usW5AgM
feo44x6NJYHhHwu7aLQYbfBibUAbY5aiTfMeMH5bbmB7Mgrx/b/+ouDP4IsH
Dn3yczBvig6AW535enSpD7w2T89gf+Yv8N9TF9xEmJ++cB3h0f/dt4SfsGPB
PvwJNRpmuvWlyJHYUAj1gv9M9H9L/4ue8QhHOQzXo06a5kcQeqBt/ajoinBs
7PdHWt97ajTySy1hc2t7vZ5B/r7vrPHZt0iDsI7v5Pvt9Z/2/adHHnd8uEv2
+4QNr658k/DVmhLXbMQ9lzczDUOZFKAnDnaElYdm34c0fc2CHadJb0ERieLF
AeMSVvL8wa64z31KEI3Ol67VuojXOyb0tG5O7s00vYrHa7rahLmOfOgRiaIi
UV6U36sryVLXyCN9OewmfHB/SlEENWE7wQf8cDAbVsHzJYMQUct1xoHSBi/n
RW75+QftOxc9p+Xj6EqXYprF9tueCeEQQo3BTZfpsoXpPofdAXy9L4mCBLRV
1cUX5h9Ye5+m3tXSDB6DipwpRUmqLBbGOgsUJCcWq3pDdfnDEownSqv3o1FN
Cz6jTDpKcI0uosWRvzoeIK+SF/froxQblTuxUUqTYix8RjpF13CClNxWWAWS
DD20vaqgPnJ8kyZ56+dAShMBeF1oG3oB/a3175ILdBcTB227Dsz53mMGKAFY
1+07T/LzfiA+3uH9HFXhLsFwy+TmE6zq5DdrHDsBhAAq/19ggmKmnVyGoPeA
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

-->

</rfc>

