<?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-xhtml.ent">
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-anima-brski-cloud-00" category="std" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.5.0 -->
  <front>
    <title abbrev="BRSKI-CLOUD">BRSKI Cloud Registrar</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-anima-brski-cloud-00"/>
    <author initials="O." surname="Friel" fullname="Owen Friel">
      <organization>Cisco</organization>
      <address>
        <email>ofriel@cisco.com</email>
      </address>
    </author>
    <author initials="R." surname="Shekh-Yusef" fullname="Rifaat Shekh-Yusef">
      <organization>Auth0</organization>
      <address>
        <email>rifaat.s.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="M." surname="Richardson" fullname="Michael Richardson">
      <organization>Sandelman Software Works</organization>
      <address>
        <email>mcr+ietf@sandelman.ca</email>
      </address>
    </author>
    <date year="2021" month="April" day="28"/>
    <abstract>
      <t>This document specifies the behaviour of a BRSKI Cloud Registrar, and how a
pledge can interact with a BRSKI Cloud Registrar when bootstrapping.</t>
      <t>RFCED REMOVE: It is being actively worked on at https://github.com/anima-wg/brski-cloud</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>Bootstrapping Remote Secure Key Infrastructures (BRSKI) <xref target="I-D.ietf-anima-bootstrapping-keyinfra" format="default"/> specifies automated bootstrapping of an Autonomic Control Plane.
BRSKI Section 2.7 describes how a pledge "MAY contact a well known URI of a cloud registrar if a local registrar cannot be discovered or if the pledge's target use cases do not include a local registrar".</t>
      <t>This document further specifies use of a BRSKI cloud registrar and clarifies operations that are not sufficiently specified in BRSKI.</t>
      <section anchor="terminology" numbered="true" toc="default">
        <name>Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP&nbsp;14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <t>This document uses the terms Pledge, Registrar, MASA, and Voucher from <xref target="I-D.ietf-anima-bootstrapping-keyinfra" format="default"/> and <xref target="RFC8366" format="default"/>.</t>
        <ul spacing="normal">
          <li>Local Domain: The domain where the pledge is physically located and bootstrapping from.
This may be different to the pledge owner's domain.</li>
          <li>Owner Domain: The domain that the pledge needs to discover and bootstrap with.</li>
          <li>Cloud Registrar: The default Registrar that is deployed at a URI that is well known to the pledge.</li>
          <li>Owner Registrar: The Registrar that is operated by the Owner, or the Owner's delegate.
There may not be an Owner Registrar in all deployment scenarios.</li>
          <li>Local Domain Registrar: The Registrar discovered on the Local Domain.
There may not be a Local Domain Registrar in all deployment scenarios.</li>
        </ul>
      </section>
      <section anchor="target-use-cases" numbered="true" toc="default">
        <name>Target Use Cases</name>
        <t>Two high level use cases are documented here.
There are more details provided in sections <xref target="redirect2Registrar" format="default"/> and <xref target="voucher2EST" format="default"/>.
While both use cases aid with incremental deployment of BRSKI infrastructure, for many smaller sites (such as teleworkers) no further infrastructure are expected.</t>
        <t>The pledge is not expected to know which of these two situations it is in.
The pledge determines this based upon signals that it receives from the Cloud Registrar.
The Cloud Registrar is expected to make the determination based upon the identity presented by the pledge.</t>
        <t>While a Cloud Registrar will typically handle all the devices of a particular product line from a  particular manufacturer there are no restrictions on how the Cloud Registrar is horizontally (many sites) or vertically (more equipment at one site) scaled.
It is also entirely possible that all devices sold by through a particular VAR might be preloaded with a configuration that changes the Cloud Registrar URL to point to a VAR.
Such an effort would require unboxing each device in a controlled environment, but the provisioning could occur using a regular BRSKI or SZTP <xref target="RFC8572" format="default"/> process.</t>
        <section anchor="owner-registrar-discovery" numbered="true" toc="default">
          <name>Owner Registrar Discovery</name>
          <t>A pledge is bootstrapping from a remote location with no local domain registrar (specifically: with no local infrastructure to provide for automated discovery), and needs to discover its owner registrar.
The cloud registrar is used by the pledge to discover the owner registrar.
The cloud registrar redirects the pledge to the owner registrar, and the pledge completes bootstrap against the owner registrar.</t>
          <t>A typical example is an enduser deploying a pledge in a home or small branch office, where the pledge belongs to the enduser's employer.
There is no local domain registrar, and the pledge needs to discover and bootstrap with the employer's registrar which is deployed in headquarters.</t>
        </section>
        <section anchor="bootstrapping-with-no-owner-registrar" numbered="true" toc="default">
          <name>Bootstrapping with no Owner Registrar</name>
          <t>A pledge is bootstrapping where the owner organization does not yet have an owner registrar deployed.
The cloud registrer issues a voucher, and the pledge completes trust bootstrap using the cloud registrar.
The voucher issued by the cloud includes domain information for the owner's EST <xref target="RFC7030" format="default"/> service the pledge should use for certificate enrollment.</t>
          <t>In one use case, an organization has an EST service deployed, but does not have yet a BRSKI capable Registrar service deployed.
The pledge is deployed in the organizations domain, but does not discover a local domain, or owner, registrar.
The pledge uses the cloud registrar to bootstrap, and the cloud registrar provides a voucher that includes instructions on finding the organization's EST service.</t>
        </section>
      </section>
    </section>
    <section anchor="architecture" numbered="true" toc="default">
      <name>Architecture</name>
      <t>The high level architecture is illustrated in <xref target="architecture-figure" format="default"/>.</t>
      <t>The pledge connects to the cloud registrar during bootstrap.</t>
      <t>The cloud registrar may redirect the pledge to an owner registrar in order to complete bootstrap against the owner registrar.</t>
      <t>If the cloud registrar issues a voucher itself without redirecting the pledge to an owner registrar, the cloud registrar will inform the pledge what domain to use for accessing EST services in the voucher response.</t>
      <t>Finally, when bootstrapping against an owner registrar, this registrar may interact with a backend CA to assist in issuing certificates to the pledge.
The mechanisms and protocols by which the registrar interacts with the CA are transparent to the pledge and are out-of-scope of this document.</t>
      <t>The architecture shows the cloud registrar and MASA as being logically separate entities.
The two functions could of course be integrated into a single service.</t>
      <t>TWO CHOICES:
1. Cloud Registrar redirects to Owner Registrar
2. Cloud Registrar returns VOUCHER pinning Owner Register.</t>
      <figure anchor="architecture-figure">
        <name>High Level Architecture</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
|<--------------OWNER------------------------>|     MANUFACTURER

 On-site                Cloud
+--------+                                         +-----------+
| Pledge |---------------------------------------->| Cloud     |
+--------+                                         | Registrar |
    |                                              +---+  +----+
    |                                                  |??|
    |                 +-----------+                +---+  +----+
    +---------------->|  Owner    |--------------->|   MASA    |
    |   VR-sign(N)    | Registrar |sign(VR-sign(N))+-----------+
    |                 +-----------+
    |                       |    +-----------+
    |                       +--->|    CA     |
    |                            +-----------+
    |
    |                 +-----------+
    +---------------->| Services  |
                      +-----------+
]]></artwork>
      </figure>
      <section anchor="interested-parties" numbered="true" toc="default">
        <name>Interested Parties</name>
        <ol spacing="normal" type="1"><li>OEM - Equipment manufacturer.  Operate the MASA.</li>
          <li>Network operator. Operate the Owner Registrar.
Often operated by end owner (company), or by outsourced IT entity.</li>
          <li>Network integrator. They operate a Cloud Registrar.</li>
        </ol>
      </section>
      <section anchor="network-connectivity" numbered="true" toc="default">
        <name>Network Connectivity</name>
        <t>The assumption is that the pledge already has network connectivity prior to connecting to the cloud registrar.
The pledge must have an IP address, must be able to make DNS queries, and must be able to send HTTP requests to the cloud registrar.
The pledge operator has already connected the pledge to the network, and the mechanism by which this has happened is out of scope of this document.</t>
      </section>
      <section anchor="pledge-certificate-identity-considerations" numbered="true" toc="default">
        <name>Pledge Certificate Identity Considerations</name>
        <t>BRSKI section 5.9.2 specifies that the pledge MUST send a CSR Attributes request to the registrar. The registrar MAY use this mechanism to instruct the pledge about the identities it should include in the CSR request it sends as part of enrollment.
The registrar may use this mechanism to tell the pledge what Subject or Subject Alternative Name identity information to include in its CSR request.
This can be useful if the Subject must have a specific value in order to complete enrollment with the CA.</t>
        <t>For example, the pledge may only be aware of its IDevID Subject which includes a manufacturer serial number, but must include a specific fully qualified domain name in the CSR in order to complete domain ownership proofs required by the CA.</t>
        <t>As another example, the registrar may deem the manufacturer serial number in an IDevID as personally identifiable information, and may want to specify a new random opaque identifier that the pledge should use in its CSR.</t>
      </section>
    </section>
    <section anchor="protocol-operation" numbered="true" toc="default">
      <name>Protocol Operation</name>
      <section anchor="pledge-requests-voucher-from-cloud-registrar" numbered="true" toc="default">
        <name>Pledge Requests Voucher from Cloud Registrar</name>
        <section anchor="cloud-registrar-discovery" numbered="true" toc="default">
          <name>Cloud Registrar Discovery</name>
          <t>BRSKI defines how a pledge MAY contact a well known URI of a cloud registrar if a local domain registrar cannot be discovered.
Additionally, certain pledge types may never attempt to discover a local domain registrar and may automatically bootstrap against a cloud registrar.</t>
          <t>The details of the URI are manufacturer specific, with BRSKI giving the example "brski-registrar.manufacturer.example.com".</t>
          <t>The Pledge SHOULD be provided with the entire URL of the Cloud Registrar, including the path component, which is typically "/.well-known/brski/requestvoucher", but may be another value.</t>
        </section>
        <section anchor="pledge-cloud-registrar-tls-establishment-details" numbered="true" toc="default">
          <name>Pledge - Cloud Registrar TLS Establishment Details</name>
          <t>The pledge MUST use an Implicit Trust Anchor database (see <xref target="RFC7030" format="default"/>) to authenticate the cloud registrar service.
The Pledge can be done with pre-loaded trust-anchors that are used to validate the TLS connection.
This can be using a public Web PKI trust anchors using <xref target="RFC6125" format="default"/> DNS-ID mechanisms, a pinned certification authority, or even a pinned raw public key.
This is a local implementation decision.</t>
          <t>The pledge MUST NOT establish a provisional TLS connection (see BRSKI section 5.1) with the cloud registrar.</t>
          <t>The cloud registrar MUST validate the identity of the pledge by sending a TLS CertificateRequest message to the pledge during TLS session establishment.
The cloud registrar MAY include a certificate_authorities field in the message to specify the set of allowed IDevID issuing CAs that pledges may use when establishing connections with the cloud registrar.</t>
          <t>The cloud registrar MAY only allow connections from pledges that have an IDevID that is signed by one of a specific set of CAs, e.g. IDevIDs issued by certain manufacturers.</t>
          <t>The cloud registrar MAY allow pledges to connect using self-signed identity certificates or using Raw Public Key <xref target="RFC7250" format="default"/> certificates.</t>
        </section>
        <section anchor="pledge-issues-voucher-request" numbered="true" toc="default">
          <name>Pledge Issues Voucher Request</name>
          <t>After the pledge has established a full TLS connection with the cloud registrar and has verified the cloud registrar PKI identity, the pledge generates a voucher request message as outlined in BRSKI section 5.2, and sends the voucher request message to the cloud registrar.</t>
        </section>
      </section>
      <section anchor="cloud-registrar-handles-voucher-request" numbered="true" toc="default">
        <name>Cloud Registrar Handles Voucher Request</name>
        <t>The cloud registrar must determine pledge ownership.
Once ownership is determined, or if no owner can be determined, then the registrar may:</t>
        <ul spacing="normal">
          <li>return a suitable 4xx or 5xx error response to the pledge if the registrar is unwilling or unable to handle the voucher request</li>
          <li>redirect the pledge to an owner register via 307 response code</li>
          <li>issue a voucher and return a 200 response code</li>
        </ul>
        <section anchor="pledgeOwnershipLookup" numbered="true" toc="default">
          <name>Pledge Ownership Lookup</name>
          <t>The cloud registrar needs some suitable mechanism for knowing the correct owner of a connecting pledge based on the presented identity certificate.
For example, if the pledge establishes TLS using an IDevID that is signed by a known manufacturing CA, the registrar could extract the serial number from the IDevID and use this to lookup a database of pledge IDevID serial numbers to owners.</t>
          <t>Alternatively, if the cloud registrar allows pledges to connect using self-signed certificates, the registrar could use the thumbprint of the self-signed certificate to lookup a database of pledge self-signed certificate thumbprints to owners.</t>
          <t>The mechanism by which the cloud registrar determines pledge ownership is out-of-scope of this document.</t>
        </section>
        <section anchor="cloud-registrar-redirects-to-owner-registrar" numbered="true" toc="default">
          <name>Cloud Registrar Redirects to Owner Registrar</name>
          <t>Once the cloud registar has determined pledge ownership, the cloud registrar may redirect the pledge to the owner registrar in order to complete bootstrap.
Ownership registration will require the owner to register their local domain.
The mechanism by which pledge owners register their domain with the cloud registrar is out-of-scope of this document.</t>
          <t>The cloud registrar replies to the voucher request with a suitable HTTP 307 response code, including the owner's local domain in the HTTP Location header.</t>
        </section>
        <section anchor="cloud-registrar-issues-voucher" numbered="true" toc="default">
          <name>Cloud Registrar Issues Voucher</name>
          <t>If the cloud registrar issues a voucher, it returns the voucher in a HTTP response with a 200 response code.</t>
          <t>The cloud registrar MAY issue a 202 response code if it is willing to issue a voucher, but will take some time to prepare the voucher.</t>
          <t>The voucher MUST include the "est-domain" field as defined below.
This tells the pledge where the domain of the EST service to use for completing certificate enrollment.</t>
          <t>The voucher MAY include the "additional-configuration" field..
This points the pledge to a URI where application specific additional configuration information may be retrieved.
Pledge and Registrar behavior for handling and specifying the "additional-configuration" field is out-of-scope of this document.</t>
        </section>
      </section>
      <section anchor="pledge-handles-cloud-registrar-response" numbered="true" toc="default">
        <name>Pledge Handles Cloud Registrar Response</name>
        <section anchor="redirect-response" numbered="true" toc="default">
          <name>Redirect Response</name>
          <t>The cloud registrar returned a 307 response to the voucher request.
The pledge should complete BRSKI bootstrap as per standard BRSKI operation after following the HTTP redirect.
The pledge should establish a provisional TLS connection with specified local domain registrar.
The pledge should not use its Implicit Trust Anchor database for validating the local domain registrar identity.
The pledge should send a voucher request message via the local domain registrar.
When the pledge downloads a voucher, it can validate the TLS connection to the local domain registrar and continue with enrollment and bootstrap as per standard BRSKI operation.</t>
        </section>
        <section anchor="voucher-response" numbered="true" toc="default">
          <name>Voucher Response</name>
          <t>The cloud registrar returned a voucher to the pledge.
The pledge should perform voucher verification as per standard BRSKI operation.
The pledge should verify the voucher signature using the manufacturer-installed trust anchor(s), should verify the serial number in teh voucher, and must verify any nonce information in the voucher.</t>
          <t>The pledge should extract the "est-domain" field from the voucher, and should continue with EST enrollment as per standard BRSKI operation.</t>
        </section>
      </section>
    </section>
    <section anchor="protocol-details" numbered="true" toc="default">
      <name>Protocol Details</name>
      <section anchor="redirect2Registrar" numbered="true" toc="default">
        <name>Voucher Request Redirected to Local Domain Registrar</name>
        <t>This flow illlustrates the Owner Registrar Discovery flow. A pledge is bootstrapping in a remote location with no local domain registrar.
The assumption is that the owner registrar domain is accessible and the pledge can establish a network connection with the owner registrar.
This may require that the owner network firewall exposes the registrar on the public internet.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+--------+                                       +----------+
| Pledge |                                       | Cloud RA |
|        |                                       |          |
+--------+                                       +----------+
    |                                                 |
    | 1. Mutual-authenticated TLS                     |
    |<----------------------------------------------->|
    |                                                 |
    | 2. Voucher Request                              |
    |------------------------------------------------>|
    |                                                 |
    | 3. 307 Location: owner-ra.example.com           |
    |<------------------------------------------------|
    |
    |                  +-----------+             +---------+
    |                  | Owner     |             |  MASA   |
    |                  | Registrar |             |         |
    |                  +-----------+             +---------+
    | 4. Provisional TLS   |                          |
    |<-------------------->|                          |
    |                      |                          |
    | 5. Voucher Request   |                          |
    |--------------------->| 6. Voucher Request       |
    |                      |------------------------->|
    |                      |                          |
    |                      | 7. Voucher Response      |
    |                      |<-------------------------|
    | 8. Voucher Response  |                          |
    |<---------------------|                          |
    |                      |                          |
    | 9. Validate TLS      |                          |
    |<-------------------->|                          |
    |                      |                          |
    | 10. etc.             |                          |
    |--------------------->|                          |
]]></artwork>
        <t>The process starts, in step 1, when the Pledge establishes a Mutual TLS channel with the Cloud RA using artifacts created during the manufacturing process of the Pledge.</t>
        <t>In step 2, the Pledge sends a voucher request to the Cloud RA.</t>
        <t>The Cloud RA completes pledge ownership lookup as outlined in <xref target="pledgeOwnershipLookup" format="default"/>, and determines the owner registrar domain.
In step 3, the Cloud RA redirects the pledge to the owner registrar domain.</t>
        <t>Steps 4 and onwards follow the standard BRSKI flow.
The pledge establishes a provisional TLS connection with the owner registrar, and sends a voucher request to the owner registrar.
The registar forwards the voucher request to the MASA.
Assuming the MASA issues a voucher, then the pledge validates the TLS connection with the registrar using the pinned-domain-cert from the voucher and completes the BRSKI flow.</t>
      </section>
      <section anchor="voucher2EST" numbered="true" toc="default">
        <name>Voucher Request Handled by Cloud Registrar</name>
        <t>The Voucher includes the EST domain to use for EST enroll.
It is assumed services are accessed at that domain too.
As trust is already established via the Voucher, the pledge does a full TLS handshake against the local RA indicated by the voucher response.</t>
        <t>The returned voucher contains an attribute, "est-domain", defined in <xref target="redirected" format="default"/> below.
The pledge is directed to continue enrollment using the EST registrar found at that URI.
The pledge uses the pinned-domain-cert from the voucher to authenticate the EST registrar.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+--------+                                       +----------+
| Pledge |                                       | Cloud RA |
|        |                                       | / MASA   |
+--------+                                       +----------+
    |                                                 |
    | 1. Mutual TLS                                   |
    |<----------------------------------------------->|
    |                                                 |
    | 2. Voucher Request                              |
    |------------------------------------------------>|
    |                                                 |
    | 3. Voucher Response  {est-domain:fqdn}          |
    |<------------------------------------------------|
    |                                                 |
    |                 +----------+                    |
    |                 | RFC7030  |                    |
    |                 |  EST     |                    |
    |                 | Registrar|                    |
    |                 +----------+                    |
    |                      |                          |
    | 4. Full TLS          |                          |
    |<-------------------->|                          |
    |                                                 |
    |     3a. /voucher_status POST  success           |
    |------------------------------------------------>|
    |     ON FAILURE 3b. /voucher_status POST         |
    |                                                 |
    | 5. EST Enrol         |                          |
    |--------------------->|                          |
    |                      |                          |
    | 6. Certificate       |                          |
    |<---------------------|                          |
    |                      |                          |
    | 7. /enrollstatus     |                          |
    |--------------------->|                          |
]]></artwork>
        <t>The process starts, in step 1, when the Pledge establishes a Mutual TLS channel with the Cloud RA/MASA using artifacts created during the manufacturing process of the Pledge.
In step 2, the Pledge sends a voucher request to the Cloud RA/MASA, and in response the Pledge receives an <xref target="RFC8366" format="default"/> format voucher from the Cloud RA/MASA that includes its assigned EST domain in the est-domain attribute.</t>
        <t>At this stage, the Pledge should be able to establish a TLS channel with the EST Registrar.
The connection may involve crossing the Internet requiring a DNS lookup on the provided name.
It may also be a local address that includes an IP address literal including both <xref target="RFC1918" format="default"/> and IPv6 Unique Local Address.
The EST Registrar is validated using the pinned-domain-cert value provided in the voucher as described in section 5.6.2 of <xref target="I-D.ietf-anima-bootstrapping-keyinfra" format="default"/>.
This involves treating the artifact provided in the pinned-domain-cert as a trust anchor, and attempting to validate the EST Registrar from this anchor only.</t>
        <t>There is a case where the pinned-domain-cert is the identical End-Entity (EE) Certificate as the EST Registrar.
It also explicitly includes the case where the EST Registrar has a self-signed EE Certificate, but it may also be an EE certificate that is part of a larger PKI.
If the certificate is not a self-signed or EE certificate, then the Pledge SHOULD apply <xref target="RFC6125" format="default"/> DNS-ID validation on the certificate against the URL provided in the est-domain attribute.
If the est-domain was provided by with an IP address literal, then it is unlikely that it can be validated, and in that case, it is expected that either a self-signed certificate or an EE certificate will be pinned.</t>
        <t>The Pledge also has the details it needs to be able to create the CSR request to send to the RA based on the details provided in the voucher.</t>
        <t>In step 4, the Pledge establishes a TLS channel with the Cloud RA/MASA, and optionally the pledge should send a request, steps 3.a and 3.b, to the Cloud RA/MASA to inform it that the Pledge was able to establish a secure TLS channel with the EST Registrar.</t>
        <t>The Pledge then follows that, in step 5, with an EST Enroll request with the CSR and obtains the requested certificate.
The Pledge must validate that the issued certificate has the expected identifier obtained from the Cloud RA/MASA in step 3.</t>
      </section>
    </section>
    <section anchor="redirected" numbered="true" toc="default">
      <name>YANG extension for Voucher based redirect</name>
      <t>An extension to the <xref target="RFC8366" format="default"/> voucher is needed for the case where the client will be redirected to a local EST Registrar.</t>
      <section anchor="yang-tree" numbered="true" toc="default">
        <name>YANG Tree</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
module: ietf-redirected-voucher

  grouping voucher-redirected-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
       +-- est-domain?                      ietf:uri
       +-- additional-configuration?        ietf:uri
]]></artwork>
      </section>
      <section anchor="yang-voucher" numbered="true" toc="default">
        <name>YANG Voucher</name>
        <sourcecode name="ietf-redirected-voucher@2020-09-23.yang" type="" markers="true"><![CDATA[
module ietf-redirected-voucher {
  yang-version 1.1;

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

  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-inet-types {
    prefix ietf;
    reference "RFC 6991: Common YANG Data Types";
  }

  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:   Owen Friel
              <mailto: ofriel@cisco.com>
    Author:   Rifaat Shekh-Yusef
              <mailto: rifaat.ietf@gmail.com>";
description
  "This module extendes the base RFC8366 voucher format to include a redirect
   to an EST server to which enrollment should continue.

   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 BCP14, RFC 2119, and RFC8174.";

  revision "2020-09-23" {
    description
     "Initial version";
    reference
     "RFC XXXX: Voucher Profile for Cloud redirected Devices";
  }

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

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

    uses v:voucher-artifact-grouping {

      augment "voucher" {
        description "Base the constrained voucher
                     upon the regular one";
        leaf est-domain {
          type ietf:uri;
          description
            "The est-domain is a URL to which the Pledge should continue
             doing enrollment rather than with the Cloud Registrar.";
        }
        leaf additional-configuration {
          type ietf:uri;
          description
            "The additional-configuration attribute contains a URL to which the Pledge can retrieve additional configuration
             information. The contents of this URL are vendor specific.  This is intended to do things like configure
             a VoIP phone to point to the correct hosted PBX, for example.";
        }
      }
    }
  }
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>TODO:MCR - Will need to add IETF YANG registration from templates.
[[ TODO ]]</t>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>[[ TODO ]]</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <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="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 "voucher".</t>
              <t>This document defines an artifact format as a YANG-defined JSON document that has been signed using a Cryptographic Message Syntax (CMS) structure.  Other YANG-derived formats are possible.  The voucher artifact is normally generated by the pledge's manufacturer (i.e., the Manufacturer Authorized Signing Authority (MASA)).</t>
              <t>This document only defines the voucher artifact, leaving it to other documents to describe specialized protocols for accessing it.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8366"/>
          <seriesInfo name="DOI" value="10.17487/RFC8366"/>
        </reference>
        <reference anchor="I-D.ietf-anima-bootstrapping-keyinfra" target="https://www.ietf.org/archive/id/draft-ietf-anima-bootstrapping-keyinfra-45.txt">
          <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'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"/>
        </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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC6125" target="https://www.rfc-editor.org/info/rfc6125">
          <front>
            <title>Representation and Verification of Domain-Based Application Service Identity within Internet Public Key Infrastructure Using X.509 (PKIX) Certificates in the Context of Transport Layer Security (TLS)</title>
            <author initials="P." surname="Saint-Andre" fullname="P. Saint-Andre">
              <organization/>
            </author>
            <author initials="J." surname="Hodges" fullname="J. Hodges">
              <organization/>
            </author>
            <date year="2011" month="March"/>
            <abstract>
              <t>Many application technologies enable secure communication between two entities by means of Internet Public Key Infrastructure Using X.509 (PKIX) certificates in the context of Transport Layer Security (TLS). This document specifies procedures for representing and verifying the identity of application services in such interactions.   [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6125"/>
          <seriesInfo name="DOI" value="10.17487/RFC6125"/>
        </reference>
        <reference anchor="IEEE802.1AR" target="http://standards.ieee.org/findstds/standard/802.1AR-2018.html">
          <front>
            <title>IEEE 802.1AR Secure Device Identifier</title>
            <author initials="." surname="IEEE Standard">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
        </reference>
        <reference anchor="RFC8572" target="https://www.rfc-editor.org/info/rfc8572">
          <front>
            <title>Secure Zero Touch Provisioning (SZTP)</title>
            <author initials="K." surname="Watsen" fullname="K. Watsen">
              <organization/>
            </author>
            <author initials="I." surname="Farrer" fullname="I. Farrer">
              <organization/>
            </author>
            <author initials="M." surname="Abrahamsson" fullname="M. Abrahamsson">
              <organization/>
            </author>
            <date year="2019" month="April"/>
            <abstract>
              <t>This document presents a technique to securely provision a networking device when it is booting in a factory-default state.  Variations in the solution enable it to be used on both public and private networks.  The provisioning steps are able to update the boot image, commit an initial configuration, and execute arbitrary scripts to address auxiliary needs.  The updated device is subsequently able to establish secure connections with other systems.  For instance, a device may establish NETCONF (RFC 6241) and/or RESTCONF (RFC 8040) connections with deployment-specific network management systems.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8572"/>
          <seriesInfo name="DOI" value="10.17487/RFC8572"/>
        </reference>
        <reference anchor="RFC7250" target="https://www.rfc-editor.org/info/rfc7250">
          <front>
            <title>Using Raw Public Keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
            <author initials="P." surname="Wouters" fullname="P. Wouters" role="editor">
              <organization/>
            </author>
            <author initials="H." surname="Tschofenig" fullname="H. Tschofenig" role="editor">
              <organization/>
            </author>
            <author initials="J." surname="Gilmore" fullname="J. Gilmore">
              <organization/>
            </author>
            <author initials="S." surname="Weiler" fullname="S. Weiler">
              <organization/>
            </author>
            <author initials="T." surname="Kivinen" fullname="T. Kivinen">
              <organization/>
            </author>
            <date year="2014" month="June"/>
            <abstract>
              <t>This document specifies a new certificate type and two TLS extensions for exchanging raw public keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS).  The new certificate type allows raw public keys to be used for authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7250"/>
          <seriesInfo name="DOI" value="10.17487/RFC7250"/>
        </reference>
        <reference anchor="RFC1918" target="https://www.rfc-editor.org/info/rfc1918">
          <front>
            <title>Address Allocation for Private Internets</title>
            <author initials="Y." surname="Rekhter" fullname="Y. Rekhter">
              <organization/>
            </author>
            <author initials="B." surname="Moskowitz" fullname="B. Moskowitz">
              <organization/>
            </author>
            <author initials="D." surname="Karrenberg" fullname="D. Karrenberg">
              <organization/>
            </author>
            <author initials="G. J." surname="de Groot" fullname="G. J. de Groot">
              <organization/>
            </author>
            <author initials="E." surname="Lear" fullname="E. Lear">
              <organization/>
            </author>
            <date year="1996" month="February"/>
            <abstract>
              <t>This document describes address allocation for private internets.  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="5"/>
          <seriesInfo name="RFC" value="1918"/>
          <seriesInfo name="DOI" value="10.17487/RFC1918"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
/RV3oZcVd92ldob9DyGDIaUbXQAA

-->

</rfc>
