<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.4 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-vinokurov-tigress-http-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.0 -->
  <front>
    <title abbrev="Tigress">Transfer Digital Credentials Securely</title>
    <seriesInfo name="Internet-Draft" value="draft-vinokurov-tigress-http-00"/>
    <author initials="D." surname="Vinokurov" fullname="Dmitry Vinokurov">
      <organization>Apple Inc</organization>
      <address>
        <email>dvinokurov@apple.com</email>
      </address>
    </author>
    <author initials="Y." surname="Karandikar" fullname="Yogesh Karandikar">
      <organization>Apple Inc</organization>
      <address>
        <email>ykarandikar@apple.com</email>
      </address>
    </author>
    <author initials="M." surname="Lerch" fullname="Matthias Lerch">
      <organization>Apple Inc</organization>
      <address>
        <email>mlerch@apple.com</email>
      </address>
    </author>
    <author initials="A." surname="Pelletier" fullname="Alex Pelletier">
      <organization>Apple Inc</organization>
      <address>
        <email>a_pelletier@apple.com</email>
      </address>
    </author>
    <author initials="N." surname="Sha" fullname="Nick Sha">
      <organization>Alphabet Inc</organization>
      <address>
        <email>nicksha@google.com</email>
      </address>
    </author>
    <date year="2024" month="January" day="11"/>
    <area>Applications and Real-Time</area>
    <workgroup>Transfer dIGital cREdentialS Securely</workgroup>
    <keyword>tigress</keyword>
    <abstract>
      <?line 69?>

<t>Digital Credentials allow users to access Homes, Cars or Hotels using their mobile devices. Once a user has a Credential on a device, sharing it to others is a natural use case. Process of sharing credentials should be secure, privacy preserving and have a seamless user experience. To facilitate Credential sharing, a new transport is required. This document defines that new transport to meet unique requirements of sharing a Credential.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://datatracker.ietf.org/doc/draft-vinokurov-tigress-http/"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-vinokurov-tigress-http/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Transfer dIGital cREdentialS Securely Working Group mailing list (<eref target="mailto:tigress@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tigress/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/tigress/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/dimmyvi/tigress"/>.</t>
    </note>
  </front>
  <middle>
    <?line 73?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Mobile devices with ever increasing computational power and security capabilities are enabling various use cases. One such category includes use of mobile devices to gain access to a property that a user owns or rents or is granted access to. The cryptographic material and other data required to enable this use case is termed as Digital Credential.</t>
      <t>Based on type of property, various public or proprietary standards govern details of Digital Credentials. These sets of standards and the bodies setting them are collectively termed as Verticals. The details include policies, mechanism and practices to create, maintain and use Digital Credentials. The process of getting a Digital Credential on a mobile device is termed as Provisioning.</t>
      <t>Once a user has a Digital Credential provisioned on their mobile device, sharing it to others is a natural use case. Sharing a Credential should feel like a natural extension of regular communication methods (like instant messaging, sms, email). The user experience of sharing a Credential should be intuitive, similar to sharing other digital assets like photos or documents. The sharing process should be secure and privacy preserving.</t>
      <t>Credentials pose two unique requirements that differ from sharing other digital assets. The Initiator and Recipient devices may need to communicate back and forth to transfer the necessary Provisioning Information. The Provisioning Information exchange must be limited to Initiator device and the first Recipient device to claim the information.</t>
      <t>To achieve these goals, a new transport is necessary. This document defines  HTTP [RFC9110] based API to create such a transport, termed as Relay Server. The document also defines data in JSON standard [RFC8259] to enable a uniform user experience for securely sharing Digital Credentials of various types.</t>
    </section>
    <section anchor="conventions-definitions">
      <name>Conventions &amp; Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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>
      <?line -18?>

<section anchor="general-terms">
        <name>General Terms</name>
        <ul spacing="normal">
          <li>
            <t>Digital Credential (or simply Credential) - Cryptographic material and other data used to authorize User with an access point. The cryptographic material can also be used for mutual authentication between user device and access point.</t>
          </li>
          <li>
            <t>Digital Credential Vertical (or simply Vertical) - The public or proprietary standards that that define details of Digital Credentials for type of property accessed. The details include policy, process and mechanism to create, maintain and use Digital Credentials in the given Vertical.</t>
          </li>
          <li>
            <t>Provisioning - A Vertical defined process of adding a new Digital Credential to the device.</t>
          </li>
          <li>
            <t>Provisioning Entity - An entity that facilitates creation, update and termination (Lifecycle Management) of the Credential. Based on Vertical, the role of Provisioning Entity may be played by various actors in various stages of Credential lifecycle.</t>
          </li>
          <li>
            <t>Provisioning Information - data transferred from Initiator to Recipient that is both necessary and sufficient for the Recipient to Provision a Credential.</t>
          </li>
          <li>
            <t>Initiator - User and their device initiating a transfer of Provisioning Information to a Recipient.</t>
          </li>
          <li>
            <t>Recipient - User and their device that receives Provisioning Information and uses it to provision a new Credential.</t>
          </li>
          <li>
            <t>Relay Server - an intermediary server that provides a standardized and platform-independent way of transferring Provisioning Information between Initiator and Recipient, acting as a temporary store and forward service. This is the new transport defined by this document.</t>
          </li>
          <li>
            <t>Secret - a symmetric encryption key shared between an Initiator and Recipient device. It is used to encrypt Provisioning Information stored on the Relay server.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sharing-process">
      <name>Sharing Process</name>
      <section anchor="some-example-use-cases">
        <name>Some Example Use Cases</name>
        <ul spacing="normal">
          <li>
            <t>Amit owns a car that supports Digital Credentials. Being a tech enthusiast, he has the Credential provisioned on his mobile device. Amit can now use his mobile device to lock/unlock and operate his car. One Monday he is out of town and realizes that his car needs to be moved for street cleaning. He asks his neighbor Bob for help via their favorite instant messaging method. As Bob agrees, Amit shares the Digital Credential to Bob via the next instant message. Bob accepts the Credential and uses his mobile device to unlock Amit's car and drive it to the other side of street.</t>
          </li>
          <li>
            <t>Alice booked a room at a hotel that supports Digital Credentials. Being a frequent traveller, she has the Digital Credential provisioned on her mobile device. As her flight gets delayed, she realizes that her partner Bakari will reach the hotel first. So she shares the Digital Credential with him over email. Bakari sees the email after his flight lands and he accepts the shared Credential. On his arrival to the hotel, Bakari is able to access common areas and their room using his mobile device.</t>
          </li>
        </ul>
      </section>
      <section anchor="credential-sharing-flow">
        <name>Credential Sharing Flow</name>
        <t>A simplified sharing flow is shown in the sequence diagram below. Initiator (User) sends an invitation to share a Credential over their preferred communication method. Recipient (user) accepts the Credential share invitation. Then the two devices go back and forth as necessary to transfer Provisioning Information without further interaction by user. After the transfer is complete Recipient device gets the Credential Provisioned according to Vertical defined process.</t>
        <artset>
          <artwork type="svg"><svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" height="535px" preserveAspectRatio="none" version="1.1" viewBox="0 0 993 535" width="993px">
              <defs/>
              <g>
                <rect fill="none" height="136.9966" width="675" x="169.5" y="263.8105" stroke="#000000" stroke-width="1.5"/>
                <line x1="54" x2="54" y1="82.0146" y2="453.6064" stroke="black" stroke-width="0.5"/>
                <line x1="238.5" x2="238.5" y1="82.0146" y2="453.6064" stroke="black" stroke-width="0.5"/>
                <line x1="535" x2="535" y1="82.0146" y2="453.6064" stroke="black" stroke-width="0.5"/>
                <line x1="770.5" x2="770.5" y1="82.0146" y2="453.6064" stroke="black" stroke-width="0.5"/>
                <line x1="939" x2="939" y1="82.0146" y2="453.6064" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="14" x="5" y="79.0752">Initiator User</text>
                <ellipse cx="54" cy="13.5" fill="white" rx="8" ry="8" stroke="black" stroke-width="0.5"/>
                <path d="M54,21.5 L54,48.5 M41,29.5 L67,29.5 M54,48.5 L41,63.5 M54,48.5 L67,63.5 " fill="none" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="14" x="5" y="466.6816">Initiator User</text>
                <ellipse cx="54" cy="478.1211" fill="white" rx="8" ry="8" stroke="black" stroke-width="0.5"/>
                <path d="M54,486.1211 L54,513.1211 M41,494.1211 L67,494.1211 M54,513.1211 L41,528.1211 M54,513.1211 L67,528.1211 " fill="none" stroke="black" stroke-width="0.5"/>
                <rect fill="white" height="31.0146" rx="2.5" ry="2.5" width="119" x="179.5" y="50" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="14" x="186.5" y="71.0752">Initiator Device</text>
                <rect fill="white" height="31.0146" rx="2.5" ry="2.5" width="119" x="179.5" y="452.6064" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="14" x="186.5" y="473.6816">Initiator Device</text>
                <rect fill="white" height="31.0146" rx="2.5" ry="2.5" width="102" x="484" y="50" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="14" x="491" y="71.0752">Relay Server</text>
                <rect fill="white" height="31.0146" rx="2.5" ry="2.5" width="102" x="484" y="452.6064" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="14" x="491" y="473.6816">Relay Server</text>
                <rect fill="white" height="31.0146" rx="2.5" ry="2.5" width="127" x="707.5" y="50" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="14" x="714.5" y="71.0752">Recipient Device</text>
                <rect fill="white" height="31.0146" rx="2.5" ry="2.5" width="127" x="707.5" y="452.6064" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="14" x="714.5" y="473.6816">Recipient Device</text>
                <text fill="black" font-family="sans-serif" font-size="14" x="886" y="79.0752">Recipient User</text>
                <ellipse cx="939" cy="13.5" fill="white" rx="8" ry="8" stroke="black" stroke-width="0.5"/>
                <path d="M939,21.5 L939,48.5 M926,29.5 L952,29.5 M939,48.5 L926,63.5 M939,48.5 L952,63.5 " fill="none" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="14" x="886" y="466.6816">Recipient User</text>
                <ellipse cx="939" cy="478.1211" fill="white" rx="8" ry="8" stroke="black" stroke-width="0.5"/>
                <path d="M939,486.1211 L939,513.1211 M926,494.1211 L952,494.1211 M939,513.1211 L926,528.1211 M939,513.1211 L952,528.1211 " fill="none" stroke="black" stroke-width="0.5"/>
                <polygon fill="black" points="227,109.814,237,113.814,227,117.814,231,113.814" stroke="black" stroke-width="1.0"/>
                <line x1="54" x2="233" y1="113.814" y2="113.814" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="61" y="109.0845">Initiate Credential Share</text>
                <polygon fill="black" points="523,139.6133,533,143.6133,523,147.6133,527,143.6133" stroke="black" stroke-width="1.0"/>
                <line x1="239" x2="529" y1="143.6133" y2="143.6133" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="246" y="138.8838">create a mailbox, establish Initiator claim</text>
                <polygon fill="black" points="759,185.2119,769,189.2119,759,193.2119,763,189.2119" stroke="black" stroke-width="1.0"/>
                <line x1="239" x2="765" y1="189.2119" y2="189.2119" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="246" y="168.6831">Invitation to accept Credential</text>
                <text fill="black" font-family="sans-serif" font-size="13" x="251" y="184.4824">over IM, sms, email etc</text>
                <polygon fill="black" points="782,215.0112,772,219.0112,782,223.0112,778,219.0112" stroke="black" stroke-width="1.0"/>
                <line x1="776" x2="938" y1="219.0112" y2="219.0112" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="788" y="214.2817">accept the Credential</text>
                <polygon fill="black" points="546,244.8105,536,248.8105,546,252.8105,542,248.8105" stroke="black" stroke-width="1.0"/>
                <line x1="540" x2="770" y1="248.8105" y2="248.8105" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="552" y="244.0811">establish Recipient claim</text>
                <path d="M169.5,263.8105 L245.5,263.8105 L245.5,271.6099 L235.5,281.6099 L169.5,281.6099 L169.5,263.8105 " fill="white" stroke="#000000" stroke-width="1.5"/>
                <rect fill="none" height="136.9966" width="675" x="169.5" y="263.8105" stroke="#000000" stroke-width="1.5"/>
                <text fill="black" font-family="sans-serif" font-size="13" font-weight="bold" x="184.5" y="277.8804">loop</text>
                <text fill="black" font-family="sans-serif" font-size="11" font-weight="bold" x="260.5" y="276.8696">[Transfer]</text>
                <polygon fill="black" points="546,299.4092,536,303.4092,546,307.4092,542,303.4092" stroke="black" stroke-width="1.0"/>
                <line x1="540" x2="770" y1="303.4092" y2="303.4092" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="552" y="298.6797">request Provisioning Information</text>
                <polygon fill="black" points="250,329.2085,240,333.2085,250,337.2085,246,333.2085" stroke="black" stroke-width="1.0"/>
                <line x1="244" x2="534" y1="333.2085" y2="333.2085" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="256" y="328.479">Forward request</text>
                <polygon fill="black" points="523,359.0078,533,363.0078,523,367.0078,527,363.0078" stroke="black" stroke-width="1.0"/>
                <line x1="239" x2="529" y1="363.0078" y2="363.0078" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="246" y="358.2783">Provisioning Information response</text>
                <polygon fill="black" points="759,388.8071,769,392.8071,759,396.8071,763,392.8071" stroke="black" stroke-width="1.0"/>
                <line x1="535" x2="765" y1="392.8071" y2="392.8071" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="542" y="388.0776">forward response</text>
                <path d="M665,412.8071 L665,437.8071 L876,437.8071 L876,422.8071 L866,412.8071 L665,412.8071 " fill="white" stroke="black" stroke-width="0.5"/>
                <path d="M866,412.8071 L866,422.8071 L876,422.8071 L866,412.8071 " fill="white" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="671" y="430.877">Finish Credential Provisioning</text>
                <!--SRC=[TP4zRiCm38LtdOB8d5uWGvSQ0JmK2EnswyB8T4F0bXnATTlRb_AVt0BT2EcznuyaskW53gNZo9ZArq1o00p0-dGX2TwP0IMovG5Tt4iB6jdI92wBtwAAElo6ccHSqghwhq0h9YrtALLXSER9tnkFa5rmJ4Q3XqVjVO85Yk19g54ROmVr3OLCMIHDLP_02YK5Ge_SNVtN4IX4l7OSRf27iXrolxgcv94ZHjPUqGDQIqFSTNbpu7L6A9-F4FgWcIaTA5gp0SzHS5hTyRRdDDL6c7do_3DFv_q0Bu8kj2G687k4xX_gWuluaODYidjNwDPBFr4dSRskwUpb4wLPJVgNr_DVW8h3u5sWBIcjfTsIbazoZJ7EwuAdVUWf0SvwA1rcTvDzasI1v33c1m00]-->
  </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[            ┌─┐                                                                                                                                  ┌─┐      
            ║"│                                                                                                                                  ║"│      
            └┬┘                                                                                                                                  └┬┘      
            ┌┼┐                                                                                                                                  ┌┼┐      
             │                 ┌────────────────┐                             ┌────────────┐                  ┌────────────────┐                  │       
            ┌┴┐                │Initiator Device│                             │Relay Server│                  │Recipient Device│                 ┌┴┐      
      Initiator User           └───────┬────────┘                             └─────┬──────┘                  └───────┬────────┘           Recipient User 
            │ Initiate Credential Share│                                            │                                 │                          │        
            │ ─────────────────────────>                                            │                                 │                          │        
            │                          │                                            │                                 │                          │        
            │                          │ create a mailbox, establish Initiator claim│                                 │                          │        
            │                          │ ───────────────────────────────────────────>                                 │                          │        
            │                          │                                            │                                 │                          │        
            │                          │                        Invitation to accept Credential                       │                          │        
            │                          │                         over IM, sms, email etc                              │                          │        
            │                          │ ─────────────────────────────────────────────────────────────────────────────>                          │        
            │                          │                                            │                                 │                          │        
            │                          │                                            │                                 │   accept the Credential  │        
            │                          │                                            │                                 │ <─────────────────────────        
            │                          │                                            │                                 │                          │        
            │                          │                                            │    establish Recipient claim    │                          │        
            │                          │                                            │ <────────────────────────────────                          │        
            │                          │                                            │                                 │                          │        
            │                          │                                            │                                 │                          │        
            │        ╔═══════╤═════════╪════════════════════════════════════════════╪═════════════════════════════════╪══════════════════╗       │        
            │        ║ LOOP  │  Transfer                                            │                                 │                  ║       │        
            │        ╟───────┘         │                                            │                                 │                  ║       │        
            │        ║                 │                                            │ request Provisioning Information│                  ║       │        
            │        ║                 │                                            │ <────────────────────────────────                  ║       │        
            │        ║                 │                                            │                                 │                  ║       │        
            │        ║                 │               Forward request              │                                 │                  ║       │        
            │        ║                 │ <───────────────────────────────────────────                                 │                  ║       │        
            │        ║                 │                                            │                                 │                  ║       │        
            │        ║                 │      Provisioning Information response     │                                 │                  ║       │        
            │        ║                 │ ───────────────────────────────────────────>                                 │                  ║       │        
            │        ║                 │                                            │                                 │                  ║       │        
            │        ║                 │                                            │         forward response        │                  ║       │        
            │        ║                 │                                            │ ────────────────────────────────>                  ║       │        
            │        ╚═════════════════╪════════════════════════════════════════════╪═════════════════════════════════╪══════════════════╝       │        
            │                          │                                            │                                 │                          │        
            │                          │                                            │                 ╔═══════════════╧════════════════╗         │        
            │                          │                                            │                 ║Finish Credential Provisioning ░║         │        
      Initiator User           ┌───────┴────────┐                             ┌─────┴──────┐          ╚════════════════════════════════╝   Recipient User 
            ┌─┐                │Initiator Device│                             │Relay Server│                  │Recipient Device│                 ┌─┐      
            ║"│                └────────────────┘                             └────────────┘                  └────────────────┘                 ║"│      
            └┬┘                                                                                                                                  └┬┘      
            ┌┼┐                                                                                                                                  ┌┼┐      
             │                                                                                                                                    │       
            ┌┴┐                                                                                                                                  ┌┴┐      
]]></artwork>
        </artset>
      </section>
      <section anchor="relay-server-design-requirements">
        <name>Relay Server Design Requirements</name>
        <t>Based on the sharing flow, we can see that Relay server is an important component of the credential Sharing flow. Relay server design needs to adhere to following requirements :</t>
        <ul spacing="normal">
          <li>
            <t>Relay server <bcp14>SHALL</bcp14> provide confidentiality and integrity to the transfer of Provisioning Information.</t>
          </li>
          <li>
            <t>Transfer of Provisioning Information <bcp14>MAY</bcp14> require several round trips. Relay server <bcp14>SHALL</bcp14> guarantee round trip communication between initiator device and first device to establish Recipient claim.</t>
          </li>
          <li>
            <t>Relay Server <bcp14>SHALL</bcp14> support flow of information that <bcp14>MAY</bcp14> NOT always be in turn taking fashion. Same party <bcp14>SHALL</bcp14> be allowed to send back to back messages. E.g. a cancel message may be sent by same party that sent the previous message.</t>
          </li>
          <li>
            <t>User involvement in the process needs to be minimal for a seamless user experience. A lay user is expected to be unaware of Relay Server (similar to any transport protocols like TCP/IP). So Relay Server <bcp14>SHALL</bcp14> be able to function without user interaction.</t>
          </li>
          <li>
            <t>Initiator and Recipient <bcp14>MAY</bcp14> NOT be online at the same time. So Relay Server <bcp14>SHALL</bcp14> be able to store and forward data. It is <bcp14>RECOMMENDED</bcp14> to have notification mechanism for snappy user experience.</t>
          </li>
          <li>
            <t>To protect user privacy, Relay server <bcp14>SHALL NOT</bcp14> require any identifying information of the 2 parties involved in the transfer.</t>
          </li>
          <li>
            <t>Relay Server <bcp14>SHALL</bcp14> allow encrypted data (that can not be deciphered by the Relay Server itself) to be stored and transferred.</t>
          </li>
          <li>
            <t>Relay Server <bcp14>MAY</bcp14> host multiple mailboxes at the same time, each bound to various pairs of Initiator and Recipient Devices. Relay Server <bcp14>SHALL</bcp14> not be able to relate the devices across various mailboxes.</t>
          </li>
          <li>
            <t>User preferred communication methods need to be allowed for invitation delivery. It's assumed that user is familiar with them and trusts them to be secure enough to deliver messages to intended recipient. But security properties of the methods can not be taken for granted in the design of the Relay Server. Verticals can require second factor to authenticate Recipient if they deem it necessary. Policies and mechanisms for this second factor are in the realm of the Verticals and outside the scope of this document.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="relay-server-design">
      <name>Relay Server Design</name>
      <section anchor="design-elements">
        <name>Design Elements</name>
        <ul spacing="normal">
          <li>
            <t>Mailbox - A place to store data on the Relay Server. A reader can also read the data from mailbox.</t>
          </li>
          <li>
            <t>MailboxIdentifier - a unique identifier for the given mailbox, generated by the Relay server at the time of mailbox creation. The value is a UUID <xref target="RFC4122"/>.</t>
          </li>
          <li>
            <t>Device Claim - a unique token allowing the caller to read from / write data to the mailbox. Initiator Device generates a Device Claim and presents it to the Relay Server at time of mailbox creation. Relay server creates a mailbox, and binds it to Initiator's Device Claim. Recipient Device generates a Device Claim and presents it to the Relay Server, at time of first read from mailbox. Relay server binds the mailbox to the Recipient's Device Claim. Thus, both Initiator and Recipient devices are bound to the mailbox (allowed to read from / write to it). Only Initiator and Recipient devices that present valid Device Claims are allowed to send subsequent read/update/delete calls to the mailbox. The value <bcp14>SHALL</bcp14> be a unique UUID <xref target="RFC4122"/>. Initiator and Recipient <bcp14>MUST</bcp14> use different values for Device Claim. Implementation <bcp14>SHOULD</bcp14> assign unique values for new mailboxes (avoid re-using values).</t>
          </li>
          <li>
            <t>Notification Token - a short or long-lived unique token stored by the Initiator or Recipient Device in a mailbox on the Relay server. This allows Relay server to send a push notification to the Initiator or Recipient Device, informing them of updates in the mailbox.</t>
          </li>
        </ul>
      </section>
      <section anchor="api-connection-details">
        <name>API connection details</name>
        <t>The Relay server API endpoint <bcp14>MUST</bcp14> be accessed over HTTP using an https URI <xref target="RFC2818"/> and <bcp14>SHOULD</bcp14> use the default https port. This ensures confidentiality property of the transfer process.</t>
        <t>Request and response bodies <bcp14>SHALL</bcp14> be formatted as either JSON or HTML (based on the API endpoint). The communication protocol used for all interfaces <bcp14>SHALL</bcp14> be HTTPs.</t>
        <t>All Strings <bcp14>SHOULD</bcp14> be UTF-8 encoded (Unicode Normalization Form C (NFC)).</t>
        <t>An API version <bcp14>SHOULD</bcp14> be included in the URI for all interfaces. The version at the time of this document's latest update is v1. The version <bcp14>SHALL</bcp14> be incremented by 1 for major API changes or backward incompatible iterations on existing APIs.</t>
      </section>
      <section anchor="sharing-flow-with-api-calls">
        <name>Sharing Flow With API calls</name>
        <t>Sequence diagram below shows an example sharing flow with detailed API calls.</t>
        <ul spacing="normal">
          <li>
            <t>Initiator Device composes Provisioning Information and encrypts it with a Secret before storing it in a mailbox on Relay Server</t>
          </li>
          <li>
            <t>Initiator Device generates a unique token - an Initiator Device Claim - to be sent to Relay Server. Initiator Device Claim allows the Initiator Device to read and write data to / from the mailbox, thus binding it to the mailbox.</t>
          </li>
          <li>
            <t>Initiator Device can also create an optional notification token for the mailbox with the Relay Server. Relay Server can notify Initiator devices when other side has deposited data in mailbox that is ready to be read. This improves user experience over polling mechanism that the devices would have to use otherwise.</t>
          </li>
          <li>
            <t>Initiator Device calls CreateMailbox API endpoint on a Relay server and provides Device Claim and optional Notification token. Relay server creates the mailbox and assigns a unique Mailbox Identifier generated using a good source of entropy (preferably hardware-based entropy).</t>
          </li>
          <li>
            <t>A mailbox has limited lifetime configured with mandatory "expiration" parameter in mailboxConfiguration. When expired, the mailbox <bcp14>SHALL</bcp14> be deleted - refer to DeleteMailbox endpoint.  Relay server <bcp14>SHALL</bcp14> be responsible to periodically check for mailboxes that are past the expiration time and delete them.</t>
          </li>
          <li>
            <t>Relay server builds a unique URL link to a mailbox (for example, “https://relayserver.example.com/v1/m/1234567890”) and returns it to the Initiator Device.</t>
          </li>
          <li>
            <t>Initiator sends this link as invitation to Recipient Device over communication method preferred by users.</t>
          </li>
          <li>
            <t>Recipient Device, having obtained both the URL link and the Secret, is ready to read the mailbox upon user action.</t>
          </li>
          <li>
            <t>Recipient Device generates a unique token - a Recipient Device Claim - to be sent to Relay Server. Recipient Device Claim allows the Recipient Device to read and write data to / from the mailbox, thus binding it to the mailbox.</t>
          </li>
          <li>
            <t>Recipient Device can also create an optional notification token for the mailbox with the Relay Server for snappy user experience.</t>
          </li>
          <li>
            <t>Recipient Device calls ReadSecureContentFromMailbox API endpoint on the Relay Server and provides Device Claim and optional Notification token. If this is the first Recipient claim, Relay server allows the read and binds the device to the mailbox. Thus establishing a connection between Initiator and Recipient devices facilitated by Relay Server.</t>
          </li>
          <li>
            <t>Initiator Device or bound Recipient Device may delete the mailbox using the DeleteMailbox API call.</t>
          </li>
        </ul>
        <artset>
          <artwork type="svg"><svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" height="1110px" preserveAspectRatio="none" version="1.1" viewBox="0 0 1111 1110" width="1111px">
              <defs/>
              <g>
                <line x1="54" x2="54" y1="82.0146" y2="1029.3921" stroke="black" stroke-width="0.5"/>
                <line x1="347.5" x2="347.5" y1="82.0146" y2="1029.3921" stroke="black" stroke-width="0.5"/>
                <line x1="648" x2="648" y1="82.0146" y2="1029.3921" stroke="black" stroke-width="0.5"/>
                <line x1="887.5" x2="887.5" y1="82.0146" y2="1029.3921" stroke="black" stroke-width="0.5"/>
                <line x1="1057" x2="1057" y1="82.0146" y2="1029.3921" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="14" x="5" y="79.0752">Initiator User</text>
                <ellipse cx="54" cy="13.5" fill="white" rx="8" ry="8" stroke="black" stroke-width="0.5"/>
                <path d="M54,21.5 L54,48.5 M41,29.5 L67,29.5 M54,48.5 L41,63.5 M54,48.5 L67,63.5 " fill="none" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="14" x="5" y="1042.4673">Initiator User</text>
                <ellipse cx="54" cy="1053.9067" fill="white" rx="8" ry="8" stroke="black" stroke-width="0.5"/>
                <path d="M54,1061.9067 L54,1088.9067 M41,1069.9067 L67,1069.9067 M54,1088.9067 L41,1103.9067 M54,1088.9067 L67,1103.9067 " fill="none" stroke="black" stroke-width="0.5"/>
                <rect fill="white" height="31.0146" rx="2.5" ry="2.5" width="119" x="288.5" y="50" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="14" x="295.5" y="71.0752">Initiator Device</text>
                <rect fill="white" height="31.0146" rx="2.5" ry="2.5" width="119" x="288.5" y="1028.3921" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="14" x="295.5" y="1049.4673">Initiator Device</text>
                <rect fill="white" height="31.0146" rx="2.5" ry="2.5" width="102" x="597" y="50" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="14" x="604" y="71.0752">Relay Server</text>
                <rect fill="white" height="31.0146" rx="2.5" ry="2.5" width="102" x="597" y="1028.3921" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="14" x="604" y="1049.4673">Relay Server</text>
                <rect fill="white" height="31.0146" rx="2.5" ry="2.5" width="127" x="824.5" y="50" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="14" x="831.5" y="71.0752">Recipient Device</text>
                <rect fill="white" height="31.0146" rx="2.5" ry="2.5" width="127" x="824.5" y="1028.3921" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="14" x="831.5" y="1049.4673">Recipient Device</text>
                <text fill="black" font-family="sans-serif" font-size="14" x="1004" y="79.0752">Recipient User</text>
                <ellipse cx="1057" cy="13.5" fill="white" rx="8" ry="8" stroke="black" stroke-width="0.5"/>
                <path d="M1057,21.5 L1057,48.5 M1044,29.5 L1070,29.5 M1057,48.5 L1044,63.5 M1057,48.5 L1070,63.5 " fill="none" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="14" x="1004" y="1042.4673">Recipient User</text>
                <ellipse cx="1057" cy="1053.9067" fill="white" rx="8" ry="8" stroke="black" stroke-width="0.5"/>
                <path d="M1057,1061.9067 L1057,1088.9067 M1044,1069.9067 L1070,1069.9067 M1057,1088.9067 L1044,1103.9067 M1057,1088.9067 L1070,1103.9067 " fill="none" stroke="black" stroke-width="0.5"/>
                <polygon fill="black" points="336,125.6133,346,129.6133,336,133.6133,340,129.6133" stroke="black" stroke-width="1.0"/>
                <line x1="54" x2="342" y1="129.6133" y2="129.6133" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="61" y="109.0845">Share this Credential with Recipient User</text>
                <text fill="black" font-family="sans-serif" font-size="13" x="66" y="124.8838">over communication method m_1</text>
                <path d="M208,142.6133 L208,183.6133 L487,183.6133 L487,152.6133 L477,142.6133 L208,142.6133 " fill="white" stroke="black" stroke-width="0.5"/>
                <path d="M477,142.6133 L477,152.6133 L487,152.6133 L477,142.6133 " fill="white" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="214" y="160.6831">Create and encrypt Provisioning</text>
                <text fill="black" font-family="sans-serif" font-size="13" x="214" y="176.4824">Info message_1 encrypted with Secret</text>
                <polygon fill="black" points="636,222.8105,646,226.8105,636,230.8105,640,226.8105" stroke="black" stroke-width="1.0"/>
                <line x1="348" x2="642" y1="226.8105" y2="226.8105" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="355" y="206.2817">CreateMailbox</text>
                <text fill="black" font-family="sans-serif" font-size="13" x="355" y="222.0811">(With DeviceClaim and Notification token)</text>
                <polygon fill="black" points="359,252.6099,349,256.6099,359,260.6099,355,256.6099" stroke="black" stroke-width="1.0"/>
                <line x1="353" x2="647" y1="256.6099" y2="256.6099" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="365" y="251.8804">URL link to mailbox</text>
                <polygon fill="black" points="876,298.2085,886,302.2085,876,306.2085,880,302.2085" stroke="black" stroke-width="1.0"/>
                <line x1="348" x2="882" y1="302.2085" y2="302.2085" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="355" y="281.6797">URL link and Secret</text>
                <text fill="black" font-family="sans-serif" font-size="13" x="360" y="297.479">over preferred communication method m_1</text>
                <polygon fill="black" points="899,328.0078,889,332.0078,899,336.0078,895,332.0078" stroke="black" stroke-width="1.0"/>
                <line x1="893" x2="1056" y1="332.0078" y2="332.0078" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="905" y="327.2783">Accept the Credential</text>
                <polygon fill="black" points="659,373.6064,649,377.6064,659,381.6064,655,377.6064" stroke="black" stroke-width="1.0"/>
                <line x1="653" x2="887" y1="377.6064" y2="377.6064" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="665" y="357.0776">ReadSecureContentFromMailbox</text>
                <text fill="black" font-family="sans-serif" font-size="13" x="670" y="372.877">(With DeviceClaim)</text>
                <polygon fill="black" points="876,403.4058,886,407.4058,876,411.4058,880,407.4058" stroke="black" stroke-width="1.0"/>
                <line x1="648" x2="882" y1="407.4058" y2="407.4058" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="655" y="402.6763">encrypted info</text>
                <path d="M692,420.4058 L692,445.4058 L1084,445.4058 L1084,430.4058 L1074,420.4058 L692,420.4058 " fill="white" stroke="black" stroke-width="0.5"/>
                <path d="M1074,420.4058 L1074,430.4058 L1084,430.4058 L1074,420.4058 " fill="white" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="698" y="438.4756">Decrypt with Secret to get Provisioning Info message_1</text>
                <path d="M761,456.2051 L761,497.2051 L1014,497.2051 L1014,466.2051 L1004,456.2051 L761,456.2051 " fill="white" stroke="black" stroke-width="0.5"/>
                <path d="M1004,456.2051 L1004,466.2051 L1014,466.2051 L1004,456.2051 " fill="white" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="767" y="474.2749">Generate Provision Info message_2</text>
                <text fill="black" font-family="sans-serif" font-size="13" x="767" y="490.0742">encrypted with Secret</text>
                <polygon fill="black" points="659,520.603,649,524.603,659,528.603,655,524.603" stroke="black" stroke-width="1.0"/>
                <line x1="653" x2="887" y1="524.603" y2="524.603" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="665" y="519.8735">UpdateMailbox(encrypted info)</text>
                <polygon fill="black" points="876,550.4023,886,554.4023,876,558.4023,880,554.4023" stroke="black" stroke-width="1.0"/>
                <line x1="648" x2="882" y1="554.4023" y2="554.4023" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="655" y="549.6729">OK</text>
                <polygon fill="black" points="359,580.2017,349,584.2017,359,588.2017,355,584.2017" stroke="black" stroke-width="1.0"/>
                <line x1="353" x2="647" y1="584.2017" y2="584.2017" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="365" y="579.4722">Push Notification</text>
                <polygon fill="black" points="636,610.001,646,614.001,636,618.001,640,614.001" stroke="black" stroke-width="1.0"/>
                <line x1="348" x2="642" y1="614.001" y2="614.001" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="355" y="609.2715">ReadSecureContentFromMailbox</text>
                <polygon fill="black" points="359,639.8003,349,643.8003,359,647.8003,355,643.8003" stroke="black" stroke-width="1.0"/>
                <line x1="353" x2="647" y1="643.8003" y2="643.8003" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="365" y="639.0708">encrypted info</text>
                <path d="M161,656.8003 L161,681.8003 L534,681.8003 L534,666.8003 L524,656.8003 L161,656.8003 " fill="white" stroke="black" stroke-width="0.5"/>
                <path d="M524,656.8003 L524,666.8003 L534,666.8003 L524,656.8003 " fill="white" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="167" y="674.8701">Decrypt with Secret to get Provision Info message_2</text>
                <path d="M211,692.5996 L211,733.5996 L484,733.5996 L484,702.5996 L474,692.5996 L211,692.5996 " fill="white" stroke="black" stroke-width="0.5"/>
                <path d="M474,692.5996 L474,702.5996 L484,702.5996 L474,692.5996 " fill="white" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="217" y="710.6694">Update with Provision Info message_3</text>
                <text fill="black" font-family="sans-serif" font-size="13" x="217" y="726.4688">encrypted with Secret</text>
                <polygon fill="black" points="636,756.9976,646,760.9976,636,764.9976,640,760.9976" stroke="black" stroke-width="1.0"/>
                <line x1="348" x2="642" y1="760.9976" y2="760.9976" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="355" y="756.2681">UpdateMailbox(encrypted info)</text>
                <polygon fill="black" points="359,786.7969,349,790.7969,359,794.7969,355,790.7969" stroke="black" stroke-width="1.0"/>
                <line x1="353" x2="647" y1="790.7969" y2="790.7969" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="365" y="786.0674">OK</text>
                <polygon fill="black" points="876,816.5962,886,820.5962,876,824.5962,880,820.5962" stroke="black" stroke-width="1.0"/>
                <line x1="648" x2="882" y1="820.5962" y2="820.5962" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="655" y="815.8667">Push Notification</text>
                <polygon fill="black" points="659,846.3955,649,850.3955,659,854.3955,655,850.3955" stroke="black" stroke-width="1.0"/>
                <line x1="653" x2="887" y1="850.3955" y2="850.3955" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="665" y="845.666">ReadSecureContentFromMailbox</text>
                <polygon fill="black" points="876,876.1948,886,880.1948,876,884.1948,880,880.1948" stroke="black" stroke-width="1.0"/>
                <line x1="648" x2="882" y1="880.1948" y2="880.1948" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="655" y="875.4653">encrypted info</text>
                <path d="M593,893.1948 L593,918.1948 L943,918.1948 L943,903.1948 L933,893.1948 L593,893.1948 " fill="white" stroke="black" stroke-width="0.5"/>
                <path d="M933,893.1948 L933,903.1948 L943,903.1948 L933,893.1948 " fill="white" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="599" y="911.2646">Decrypt with Secret for Provision Info message_3</text>
                <polygon fill="black" points="659,941.7935,649,945.7935,659,949.7935,655,945.7935" stroke="black" stroke-width="1.0"/>
                <line x1="653" x2="887" y1="945.7935" y2="945.7935" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="665" y="941.064">DeleteMailbox</text>
                <polygon fill="black" points="876,971.5928,886,975.5928,876,979.5928,880,975.5928" stroke="black" stroke-width="1.0"/>
                <line x1="648" x2="882" y1="975.5928" y2="975.5928" stroke="black" stroke-width="1.0"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="655" y="970.8633">OK</text>
                <path d="M782,988.5928 L782,1013.5928 L993,1013.5928 L993,998.5928 L983,988.5928 L782,988.5928 " fill="white" stroke="black" stroke-width="0.5"/>
                <path d="M983,988.5928 L983,998.5928 L993,998.5928 L983,988.5928 " fill="white" stroke="black" stroke-width="0.5"/>
                <text fill="black" font-family="sans-serif" font-size="13" x="788" y="1006.6626">Finish Credential Provisioning</text>
                <!--SRC=[bPH1J-Cm48Nl_XKZJY3j7c1lFI2jYa08TXUrglQ2X8mpRKOaTkIuPVdtEucRs0ukXLlgFhzvyyqaKZbZuUHMaoFPFQvQj2SWMo0-wdw8Hbf7YXgfNIoymXqfxANZOQfTO2NVO8bsjxVi3wOQVYBanyXlF1JInmkgCPv5rQSJGqxuVXc2m0oMfRG8hgGMvXOBlaooWbTo9QHsZneC9mHbwdghIKb7HaEDhZG5r4_dGcZZq6j2fz2vIZwNkW3Kohur3XwisL7BrqblM76hruQDsbPkyEbyK67XKonHMNG2-NvNG8Jmt4cFQhQlyKjIzMp-mQC-_TlTzAZcbQIwB__RE5eFmPrvGNqcXASVGvd1Qd4F5UaN5a7jJSMqxXvD9EvA-B0mi6eihj4orW-exIUKkF9SVYg5ZCgL6CsbYpj8GlSBb0KNtbgS6-tulsjhwW03tj4u2rr7ZGJkn0E9nnaM3TZ6pp2QJOTfW-bO9qCDuplaUuCQRRSeeqjgSS6Q8vkHOxDgYh0PfscBUGn_xl9ByR1josI5H7OLFnf6rdU2FVyIVORwb5T0dlVqQBpb0PCVnw5d8NoIUaGXeHvDuptrhxu1NzvrLdyxkl9hxlSWj00d5_OAAnpX75p1_5jopPzn1X9zgPDlwLZuFm00]-->
  </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[            ┌─┐                                                                                                                                             ┌─┐      
            ║"│                                                                                                                                             ║"│      
            └┬┘                                                                                                                                             └┬┘      
            ┌┼┐                                                                                                                                             ┌┼┐      
             │                                 ┌────────────────┐                           ┌────────────┐               ┌────────────────┐                  │       
            ┌┴┐                                │Initiator Device│                           │Relay Server│               │Recipient Device│                 ┌┴┐      
      Initiator User                           └───────┬────────┘                           └─────┬──────┘               └───────┬────────┘           Recipient User 
            │ Share this Credential with Recipient User│                                          │                              │                          │        
            │  over communication method m_1           │                                          │                              │                          │        
            │ ─────────────────────────────────────────>                                          │                              │                          │        
            │                                          │                                          │                              │                          │        
            │                       ╔══════════════════╧═══════════════════╗                      │                              │                          │        
            │                       ║Create and encrypt Provisioning      ░║                      │                              │                          │        
            │                       ║Info message_1 encrypted with Secret  ║                      │                              │                          │        
            │                       ╚══════════════════╤═══════════════════╝                      │                              │                          │        
            │                                          │ CreateMailbox                            │                              │                          │        
            │                                          │ (With DeviceClaim and Notification token)│                              │                          │        
            │                                          │ ─────────────────────────────────────────>                              │                          │        
            │                                          │                                          │                              │                          │        
            │                                          │            URL link to mailbox           │                              │                          │        
            │                                          │ <─────────────────────────────────────────                              │                          │        
            │                                          │                                          │                              │                          │        
            │                                          │                 URL link and Secret      │                              │                          │        
            │                                          │                  over preferred communication method m_1                │                          │        
            │                                          │ ────────────────────────────────────────────────────────────────────────>                          │        
            │                                          │                                          │                              │                          │        
            │                                          │                                          │                              │   Accept the Credential  │        
            │                                          │                                          │                              │ <─────────────────────────        
            │                                          │                                          │                              │                          │        
            │                                          │                                          │ ReadSecureContentFromMailbox │                          │        
            │                                          │                                          │  (With DeviceClaim)          │                          │        
            │                                          │                                          │ <─────────────────────────────                          │        
            │                                          │                                          │                              │                          │        
            │                                          │                                          │        encrypted info        │                          │        
            │                                          │                                          │ ─────────────────────────────>                          │        
            │                                          │                                          │                              │                          │        
            │                                          │                                          │  ╔═══════════════════════════╧══════════════════════════╧═╗      
            │                                          │                                          │  ║Decrypt with Secret to get Provisioning Info message_1 ░║      
            │                                          │                                          │  ╚═══════════════════════════╤══════════════════════════╤═╝      
            │                                          │                                          │             ╔════════════════╧══════════════════╗       │        
            │                                          │                                          │             ║Generate Provision Info message_2 ░║       │        
            │                                          │                                          │             ║encrypted with Secret              ║       │        
            │                                          │                                          │             ╚════════════════╤══════════════════╝       │        
            │                                          │                                          │ UpdateMailbox(encrypted info)│                          │        
            │                                          │                                          │ <─────────────────────────────                          │        
            │                                          │                                          │                              │                          │        
            │                                          │                                          │              OK              │                          │        
            │                                          │                                          │ ─────────────────────────────>                          │        
            │                                          │                                          │                              │                          │        
            │                                          │             Push Notification            │                              │                          │        
            │                                          │ <─────────────────────────────────────────                              │                          │        
            │                                          │                                          │                              │                          │        
            │                                          │       ReadSecureContentFromMailbox       │                              │                          │        
            │                                          │ ─────────────────────────────────────────>                              │                          │        
            │                                          │                                          │                              │                          │        
            │                                          │              encrypted info              │                              │                          │        
            │                                          │ <─────────────────────────────────────────                              │                          │        
            │                                          │                                          │                              │                          │        
            │                ╔═════════════════════════╧═══════════════════════════╗              │                              │                          │        
            │                ║Decrypt with Secret to get Provision Info message_2 ░║              │                              │                          │        
            │                ╚═════════════════════════╤═══════════════════════════╝              │                              │                          │        
            │                       ╔══════════════════╧═══════════════════╗                      │                              │                          │        
            │                       ║Update with Provision Info message_3 ░║                      │                              │                          │        
            │                       ║encrypted with Secret                 ║                      │                              │                          │        
            │                       ╚══════════════════╤═══════════════════╝                      │                              │                          │        
            │                                          │       UpdateMailbox(encrypted info)      │                              │                          │        
            │                                          │ ─────────────────────────────────────────>                              │                          │        
            │                                          │                                          │                              │                          │        
            │                                          │                    OK                    │                              │                          │        
            │                                          │ <─────────────────────────────────────────                              │                          │        
            │                                          │                                          │                              │                          │        
            │                                          │                                          │       Push Notification      │                          │        
            │                                          │                                          │ ─────────────────────────────>                          │        
            │                                          │                                          │                              │                          │        
            │                                          │                                          │ ReadSecureContentFromMailbox │                          │        
            │                                          │                                          │ <─────────────────────────────                          │        
            │                                          │                                          │                              │                          │        
            │                                          │                                          │        encrypted info        │                          │        
            │                                          │                                          │ ─────────────────────────────>                          │        
            │                                          │                                          │                              │                          │        
            │                                          │                                 ╔════════╧══════════════════════════════╧══════════╗               │        
            │                                          │                                 ║Decrypt with Secret for Provision Info message_3 ░║               │        
            │                                          │                                 ╚════════╤══════════════════════════════╤══════════╝               │        
            │                                          │                                          │         DeleteMailbox        │                          │        
            │                                          │                                          │ <─────────────────────────────                          │        
            │                                          │                                          │                              │                          │        
            │                                          │                                          │              OK              │                          │        
            │                                          │                                          │ ─────────────────────────────>                          │        
            │                                          │                                          │                              │                          │        
            │                                          │                                          │              ╔═══════════════╧════════════════╗         │        
            │                                          │                                          │              ║Finish Credential Provisioning ░║         │        
      Initiator User                           ┌───────┴────────┐                           ┌─────┴──────┐       ╚════════════════════════════════╝   Recipient User 
            ┌─┐                                │Initiator Device│                           │Relay Server│               │Recipient Device│                 ┌─┐      
            ║"│                                └────────────────┘                           └────────────┘               └────────────────┘                 ║"│      
            └┬┘                                                                                                                                             └┬┘      
            ┌┼┐                                                                                                                                             ┌┼┐      
             │                                                                                                                                               │       
            ┌┴┐                                                                                                                                             ┌┴┐      
]]></artwork>
        </artset>
      </section>
    </section>
    <section anchor="http-headers">
      <name>HTTP Headers</name>
      <section anchor="mailbox-request-id">
        <name>Mailbox-Request-ID</name>
        <t>All requests to and from Relay server will have an HTTP header "Mailbox-Request-ID". The corresponding response to the API will have the same HTTP header, which <bcp14>SHALL</bcp14> echo the value in the request header. This is used to identify the request associated to the response for a particular API request and response pair. The value <bcp14>SHOULD</bcp14> be a UUID <xref target="RFC4122"/>.
The request originator <bcp14>SHALL</bcp14> match the value of this header in the response with the one sent in the request. If response is not received, caller may retry sending the request with the same value of "Mailbox-Request-ID".
Relay server <bcp14>SHOULD</bcp14> store the value of the last successfully processed "Mailbox-Request-ID" for each device based on the caller's Device Claim.
A key-value pair of "Device Claim" to "Mailbox-Request-ID" is suggested to store the last successfully processed request for each device.
In case of receiving a request with duplicated "Mailbox-Request-ID", Relay <bcp14>SHOULD</bcp14> respond to the caller with status code 201, ignoring the duplicate request body content.</t>
      </section>
      <section anchor="mailbox-device-claim">
        <name>Mailbox-Device-Claim</name>
        <t>All requests to CreateMailbox, ReadSecureContentFromMailbox and UpdateMailbox endpoints <bcp14>MUST</bcp14> contain this header. The value represents "Device Claim" (refer to Terminology)</t>
      </section>
      <section anchor="mailbox-device-attestation">
        <name>Mailbox-Device-Attestation</name>
        <t>Request to CreateMailbox <bcp14>MAY</bcp14> contain this header. The value represents a Device Attestation (String, Optional) - optional remote OEM device proprietary attestation data</t>
      </section>
    </section>
    <section anchor="http-access-methods">
      <name>HTTP access methods</name>
      <section anchor="createmailbox">
        <name>CreateMailbox</name>
        <t>An application running on a remote device can invoke this API on Relay Server to create a mailbox and store secure data content to it (encrypted data specific to a provisioning partner). MailboxIdentifier is created by the Relay server as an UUID <xref target="RFC4122"/>, using cryptographic entropy. A URL to the created mailbox to be returned to the caller in the response.</t>
        <section anchor="endpoint">
          <name>Endpoint</name>
          <t>POST  /{version}/m</t>
        </section>
        <section anchor="request-parameters">
          <name>Request Parameters:</name>
          <t>Path parameters</t>
          <ul spacing="normal">
            <li>
              <t>version (String, Required) - the version of the API. At the time of writing this document, “v1”.</t>
            </li>
          </ul>
          <t>Header parameters</t>
          <ul spacing="normal">
            <li>
              <t>Mailbox-Device-Attestation (String, Optional) - optional remote OEM device proprietary attestation data.</t>
            </li>
            <li>
              <t>Mailbox-Device-Claim (String, UUID, Required) - Device Claim (refer to Terminology).</t>
            </li>
            <li>
              <t>Mailbox-Request-ID (String, UUID, Required) - Unique request identifier.</t>
            </li>
          </ul>
        </section>
        <section anchor="consumes">
          <name>Consumes</name>
          <t>This API call consumes the following media types via the Content-Type request header: <tt>application/json</tt></t>
        </section>
        <section anchor="produces">
          <name>Produces</name>
          <t>This API call produces the following media types via the Content-Type response header: <tt>application/json</tt></t>
        </section>
        <section anchor="request-body">
          <name>Request body</name>
          <t>Request body is a complex structure, including the following fields:</t>
          <ul spacing="normal">
            <li>
              <t>payload (Object, Required) - for the purposes of Tigress API, this is a data structure, describing Provisioning Information specific to Credential Provider. It consists of the following 2 key-value pairs:
              </t>
              <ol spacing="normal" type="1"><li>
                  <t>"type": "AEAD_AES_128_GCM" (refer to Encryption Format section).</t>
                </li>
                <li>
                  <t>"data": BASE64-encoded binary value of ciphertext.</t>
                </li>
              </ol>
            </li>
            <li>
              <t>displayInformation (Object, Required) - for the purposes of the Tigress API, this is a data structure. It allows an application running on a receiving device to build a visual representation of the credential to show to user.
The data structure contains the following fields:
              </t>
              <ol spacing="normal" type="1"><li>
                  <t>title (String, Required) - the title of the credential (e.g. "Car Key")</t>
                </li>
                <li>
                  <t>description (String, Required) - a brief description of the credential (e.g. "a key to my personal car")</t>
                </li>
                <li>
                  <t>imageURL (String, Required) - a link to a picture representing the credential visually.</t>
                </li>
              </ol>
            </li>
            <li>
              <t>notificationToken (Object, Optional) - optional notification token used to notify an appropriate remote device that the mailbox data has been updated. Data structure includes the following (if notificationToken is provided it should include both fields):
              </t>
              <ol spacing="normal" type="1"><li>
                  <t>type (String, Required) - notification token name. Used to define which Push Notification System to be used to notify appropriate remote device of a mailbox data update. (E.g. "com.apple.apns" for APNS)</t>
                </li>
                <li>
                  <t>tokenData (String, Required) - notification token data (data encoded based on specific device OEM notification service rules - e.g. HEX-encoded or Base64-encoded) - application-specific - refer to appropriate Push Notification System specification.</t>
                </li>
              </ol>
            </li>
            <li>
              <t>mailboxConfiguration (Object, Optional) - optional mailbox configuration, defines access rights to the mailbox, mailbox expiration time. Required at the time of the mailbox creation. OEM device may provide this data in the request, Relay server shall define a default configuration, if it is not provided in the incoming request. Data structure includes the following:
              </t>
              <ol spacing="normal" type="1"><li>
                  <t>accessRights (String, Optional) - optional access rights to the mailbox for Initiator and  Recipient devices. Default access to the mailbox is Read and Delete.
Value is defined as a combination of the following values: "R" - for read access, "W" - for write access, "D" - for delete access. Example" "RD" - allows to read from the mailbox and delete it.</t>
                </li>
                <li>
                  <t>expiration (String, Required) - Mailbox expiration time in "YYYY-MM-DDThh:mm:ssZ" format (UTC time zone) <xref target="RFC3339"/>. Mailbox has limited lifetime. Once expired, it <bcp14>SHALL</bcp14> be deleted - refer to DeleteMailbox endpoint. Relay server <bcp14>SHOULD</bcp14> periodically check for expired mailboxes and delete them.</t>
                </li>
              </ol>
            </li>
          </ul>
          <figure anchor="apple-push-token">
            <name>Apple Push Token Example</name>
            <artwork><![CDATA[
{
   "notificationToken": {
        "type":"com.apple.apns",
        "tokenData":"APNS1234...QW"
    }
}
]]></artwork>
          </figure>
          <figure anchor="create-mailbox-request">
            <name>Create Mailbox Request Example</name>
            <artwork><![CDATA[
{
    "displayInformation" : {
        "title" : "Hotel Pass",
        "description" : "Some Hotel Pass",
        "imageURL" : "https://example.com/sharingImage"
    },
    "payload" : {
        "type": "AEAD_AES_128_GCM",
        "data": "FDEC...987654321"
    },
    "notificationToken" : {
        "type" : "com.apple.apns",
        "tokenData" : “APNS...1234"
    },
    "mailboxConfiguration" : {
        "accessRights" : "RWD",
        "expiration" : "2022-02-08T14:57:22Z"
    }
}
]]></artwork>
          </figure>
        </section>
        <section anchor="responses">
          <name>Responses</name>
          <t><tt>200</tt>
Status: “200” (OK)</t>
          <t>ResponseBody:</t>
          <ul spacing="normal">
            <li>
              <t>urlLink (String, Required) - a full URL link to the mailbox including fully qualified domain name and mailbox Identifier. Refer to "Share URL" section for details.</t>
            </li>
            <li>
              <t>isPushNotificationSupported (boolean, Required) - indicates whether push notification is supported or not. The device uses this field to decide whether it should listen on the push topic or do long-polling.</t>
            </li>
          </ul>
          <figure anchor="create-mailbox-response">
            <name>Create Mailbox Response Example</name>
            <artwork><![CDATA[
{
    "urlLink":"https://relayserver.example.com/m/12345678-9...A-BCD",
    "isPushNotificationSupported":true
}
]]></artwork>
          </figure>
          <t><tt>201</tt>
Status: “201” (Created) - response to a duplicated request (duplicated "Mailbox-Request-ID"). Relay server <bcp14>SHALL</bcp14> respond to duplicated requests with 201 without creating a new mailbox. "Mailbox-Request-ID" passed in the first CreateMailbox request's header <bcp14>SHOULD</bcp14> be stored by the Relay server and compared to the same value in the subsequent requests to identify duplicated requests. If duplicate is found, Relay <bcp14>SHALL</bcp14> not create a new mailbox, but respond with 201 instead. The value of "Mailbox-Request-ID" of the last successfully completed request <bcp14>SHOULD</bcp14> be stored based on the Device Claim passed by the caller.</t>
          <t><tt>400</tt>
Bad Request - invalid request has been passed (can not parse or required fields missing).</t>
          <t><tt>401</tt>
Unauthorized - calling device is not authorized to create a mailbox. E.g. a device presented an invalid device claim or device attestation.</t>
        </section>
      </section>
      <section anchor="updatemailbox">
        <name>UpdateMailbox</name>
        <t>An application running on a remote device can invoke this API on Relay Server to update secure data content in an existing mailbox (encrypted data specific to a Provisioning Partner). The update effectively overwrites the secure payload previously stored in the mailbox.</t>
        <section anchor="endpoint-1">
          <name>Endpoint</name>
          <t>PUT  /{version}/m/{mailboxIdentifier}</t>
        </section>
        <section anchor="request-parameters-1">
          <name>Request Parameters</name>
          <t>Path parameters:</t>
          <ul spacing="normal">
            <li>
              <t>version (String, Required) - the version of the API. At the time of writing this document, “v1”.</t>
            </li>
            <li>
              <t>mailboxIdentifier(String, Required) - MailboxIdentifier (refer to Terminology).</t>
            </li>
          </ul>
          <t>Header parameters:</t>
          <ul spacing="normal">
            <li>
              <t>Mailbox-Device-Attestation (String, Optional) - optional remote OEM device proprietary attestation data.</t>
            </li>
            <li>
              <t>Mailbox-Device-Claim (String, UUID, Required) - Device Claim (refer to Terminology).</t>
            </li>
            <li>
              <t>Mailbox-Request-ID (String, UUID, Required) - Unique request identifier.</t>
            </li>
          </ul>
        </section>
        <section anchor="consumes-1">
          <name>Consumes</name>
          <t>This API call consumes the following media types via the Content-Type request header: <tt>application/json</tt></t>
        </section>
        <section anchor="produces-1">
          <name>Produces</name>
          <t>This API call produces following media types via the Content-Type request header: <tt>application/json</tt></t>
        </section>
        <section anchor="request-body-1">
          <name>Request body</name>
          <t>Request body is a complex structure, including the following fields:</t>
          <ul spacing="normal">
            <li>
              <t>payload (Object, Required) - for the purposes of Tigress API, this is a data structure, describing Provisioning Information specific to Credential Provider. It consists of the following 2 key-value pairs:
              </t>
              <ol spacing="normal" type="1"><li>
                  <t>"type": "AEAD_AES_128_GCM" (refer to Encryption Format section).</t>
                </li>
                <li>
                  <t>"data": BASE64-encoded binary value of ciphertext.</t>
                </li>
              </ol>
            </li>
            <li>
              <t>notificationToken (Object, Optional) - optional notification token used to notify an appropriate remote device that the mailbox data has been updated. Data structure includes the following (if notificationToken is provided it should include both fields):
              </t>
              <ol spacing="normal" type="1"><li>
                  <t>type (String, Required) - notification token name. Used to define which Push Notification System to be used to notify appropriate remote device of a mailbox data update. (E.g. "com.apple.apns" for APNS)</t>
                </li>
                <li>
                  <t>tokenData (String, Required) - notification token data (data encoded based on specific device OEM notification service rules - e.g. HEX-encoded or Base64-encoded) - application-specific - refer to appropriate Push Notification System specification.</t>
                </li>
              </ol>
            </li>
          </ul>
          <figure anchor="update-mailbox-request">
            <name>Update Mailbox Request Example</name>
            <artwork><![CDATA[
{
     "payload" : {
        "type": "AEAD_AES_128_GCM",
        "data": "FDEC...987654321"
    },
    "notificationToken":{
        "type" : "com.apple.apns",
        "tokenData" : “APNS...1234"
    }
}
]]></artwork>
          </figure>
        </section>
        <section anchor="responses-1">
          <name>Responses</name>
          <t>ResponseBody:</t>
          <ul spacing="normal">
            <li>
              <t>isPushNotificationSupported (boolean, Required) - indicates whether push notification is supported or not. The device uses this field to decide whether it should listen on the push topic or do long-polling.</t>
            </li>
          </ul>
          <figure anchor="update-mailbox-response">
            <name>Update Mailbox Response Example</name>
            <artwork><![CDATA[
{
    "isPushNotificationSupported":true
}
]]></artwork>
          </figure>
          <t><tt>200</tt>
Status: “200” (OK)</t>
          <t><tt>201</tt>
Status: “201” (Created) - response to a duplicate request (duplicate "Mailbox-Request-ID"). Relay server <bcp14>SHALL</bcp14> respond to duplicate requests with 201 without performing mailbox update. "Mailbox-Request-ID" passed in the first UpdateMailbox request's header <bcp14>SHALL</bcp14> be stored by the Relay server and compared to the same value in the subsequent requests to identify duplicate requests. If duplicate is found, Relay <bcp14>SHALL</bcp14> not perform mailbox update, but respond with 201 instead.
The value of "Mailbox-Request-ID" of the last successfully completed request <bcp14>SHALL</bcp14> be stored based on the Device Claim passed by the caller.</t>
          <t><tt>400</tt>
Bad Request - invalid request has been passed (can not parse or required fields missing).</t>
          <t><tt>401</tt>
Unauthorized - calling device is not authorized to update the mailbox. E.g. a device presented the incorrect Device Claim.</t>
          <t><tt>404</tt>
Not Found - mailbox with provided mailboxIdentifier not found.</t>
        </section>
      </section>
      <section anchor="deletemailbox">
        <name>DeleteMailbox</name>
        <t>An application running on a remote device can invoke this API on Relay Server to close the existing mailbox after it served its purpose. Recipient or Initiator Device needs to present a Device Claim in order to close the mailbox.</t>
        <section anchor="endpoint-2">
          <name>Endpoint</name>
          <t>DELETE /{version}/m/{mailboxIdentifier}</t>
        </section>
        <section anchor="request-parameters-2">
          <name>Request Parameters</name>
          <t>Path parameters:</t>
          <ul spacing="normal">
            <li>
              <t>version (String, Required) - the version of the API. At the time of writing this document, “v1”.</t>
            </li>
            <li>
              <t>mailboxIdentifier(String, Required) - MailboxIdentifier (refer to Terminology).</t>
            </li>
          </ul>
          <t>Header parameters:</t>
          <ul spacing="normal">
            <li>
              <t>Mailbox-Device-Claim (String, UUID, Required) - Device Claim (refer to Terminology).</t>
            </li>
            <li>
              <t>Mailbox-Request-ID (String, UUID, Required) - Unique request identifier.</t>
            </li>
          </ul>
        </section>
        <section anchor="responses-2">
          <name>Responses</name>
          <t><tt>200</tt>
Status: “200” (OK)</t>
          <t><tt>401</tt>
Unauthorized - calling device is not authorized to delete a mailbox. E.g. a device presented the incorrect Device Claim.</t>
          <t><tt>404</tt>
Not Found - mailbox with provided mailboxIdentifier not found. Relay server may respond with 404 if the Mailbox Identifier passed by the caller is invalid or mailbox has already been deleted (as a result of duplicate DeleteMailbox request).</t>
        </section>
      </section>
      <section anchor="readdisplayinformationfrommailbox">
        <name>ReadDisplayInformationFromMailbox</name>
        <t>An application running on a remote device can invoke this API on Relay Server to retrieve public display information content from a mailbox. Display Information shall be returned in OpenGraph format (please refer to https://ogp.me for details).
OpenGraph-formatted display information is required to display a preview of credential in a messaging application, e.g. iMessage or WhatsApp.</t>
        <section anchor="endpoint-3">
          <name>Endpoint</name>
          <t>GET /{version}/m/{mailboxIdentifier}</t>
        </section>
        <section anchor="request-parameters-3">
          <name>Request Parameters</name>
          <t>Path parameters:</t>
          <ul spacing="normal">
            <li>
              <t>version (String, Required)- the version of the API. At the time of writing this document, “v1”.</t>
            </li>
            <li>
              <t>mailboxIdentifier(String, Required) - MailboxIdentifier (refer to Terminology).</t>
            </li>
          </ul>
        </section>
        <section anchor="produces-2">
          <name>Produces</name>
          <t>This API call produces the following media types via the Content-Type response header: <tt>text/html</tt></t>
        </section>
        <section anchor="responses-3">
          <name>Responses</name>
          <t><tt>200</tt>
Status: “200” (OK)</t>
          <t>ResponseBody :</t>
          <ul spacing="normal">
            <li>
              <t>displayInformation (Object, Required) - visual representation of digital credential in OpenGraph format (please refer to https://ogp.me for details).</t>
            </li>
          </ul>
          <figure anchor="read-display-information-response">
            <name>Read Display Information Response Example</name>
            <artwork><![CDATA[
    "<html prefix="og: https://ogp.me/ns#">
     <head>
     <title>Hotel Pass</title>
     <meta property="og:title" content="Hotel Pass" />
     <meta property="og:type" content="image/jpeg" />
     <meta property="og:description" content="Some Hotel Pass" />
     <meta property="og:url" content="share://" />
     <meta property="og:image" content="https://example.com/photos/photo.jpg" />
     <meta property="og:image:width" content="612" />
     <meta property="og:image:height" content="408" /></head>
     </html>"
]]></artwork>
          </figure>
          <t><tt>404</tt>
Not Found - mailbox with provided mailboxIdentifier not found.</t>
        </section>
      </section>
      <section anchor="readsecurecontentfrommailbox">
        <name>ReadSecureContentFromMailbox</name>
        <t>An application running on a remote device can invoke this API on Relay Server to retrieve secure payload content from a mailbox (encrypted data specific to a Provisioning Information Provider).</t>
        <section anchor="endpoint-4">
          <name>Endpoint</name>
          <t>POST /{version}/m/{mailboxIdentifier}</t>
        </section>
        <section anchor="request-parameters-4">
          <name>Request Parameters</name>
          <t>Path parameters:</t>
          <ul spacing="normal">
            <li>
              <t>version (String, Required) - the version of the API. At the time of writing this document, “v1”.</t>
            </li>
            <li>
              <t>mailboxIdentifier(String, Required) - MailboxIdentifier (refer to Terminology).</t>
            </li>
          </ul>
          <t>Header parameters:</t>
          <ul spacing="normal">
            <li>
              <t>Mailbox-Device-Claim (String, UUID, Required) - Device Claim (refer to Terminology).</t>
            </li>
          </ul>
        </section>
        <section anchor="produces-3">
          <name>Produces</name>
          <t>This API call produces the following media types via the Content-Type response header: <tt>application/json</tt></t>
        </section>
        <section anchor="responses-4">
          <name>Responses</name>
          <t><tt>200</tt>
Status: “200” (OK)</t>
          <t>ResponseBody :</t>
          <ul spacing="normal">
            <li>
              <t>payload (String, Required) - for the purposes of Tigress API, this is a JSON metadata blob, describing Provisioning Information specific to Credential Provider.</t>
            </li>
            <li>
              <t>displayInformation (Object, Required) - for the purposes of the Tigress API, this is a JSON data blob. It allows an application running on a receiving device to build a visual representation of the credential to show to user. Specific to Credential Provider.</t>
            </li>
            <li>
              <t>expiration (String, Required) - the date that the mailbox will expire. The mailbox expiration time is set during mailbox creation. Expiration time should be a complete <xref target="RFC3339"/> date string in "YYYY-MM-DDThh:mm:ssZ" format (UTC time zone), and can be used to allow receiving clients to show when a share will expire.</t>
            </li>
          </ul>
          <figure anchor="read-secure-content-response">
            <name>Read Secure Content Response Example</name>
            <artwork><![CDATA[
{
    “displayInformation" : {
        "title" : "Hotel Pass",
        "description" : "Some Hotel Pass",
        "imageURL" : "https://example.com/sharingImage"
    },
    "payload" : {
        "type": "AEAD_AES_128_GCM",
        "data": "FDEC...987654321"
    },
    "expiration": "2021-11-03T20:32:34Z"
}
]]></artwork>
          </figure>
          <t><tt>401</tt>
Unauthorized - calling device is not authorized to read the secure content of the mailbox. E.g. a device presented the incorrect Device Claim.</t>
          <t><tt>404</tt>
Not Found - mailbox with provided mailboxIdentifier not found.</t>
        </section>
      </section>
      <section anchor="relinquishmailbox">
        <name>RelinquishMailbox</name>
        <t>An application running on a remote device can invoke this API on Relay Server to relinquish their ownership of the mailbox. Recipient Device needs to present the currently established Recipient Device Claim in order to relinquish their ownership of the mailbox. Once relinquished, the mailbox can be bound to a different Recipient Device that presents its Device Claim in a ReadSecureContentFromMailbox call.</t>
        <section anchor="endpoint-5">
          <name>Endpoint</name>
          <t>PATCH /{version}/m/{mailboxIdentifier}</t>
        </section>
        <section anchor="request-parameters-5">
          <name>Request Parameters</name>
          <t>Path parameters:</t>
          <ul spacing="normal">
            <li>
              <t>version (String, Required) - the version of the API. At the time of writing this document, “v1”.</t>
            </li>
            <li>
              <t>mailboxIdentifier(String, Required) - MailboxIdentifier (refer to Terminology).</t>
            </li>
          </ul>
          <t>Header parameters:</t>
          <ul spacing="normal">
            <li>
              <t>Mailbox-Device-Claim (String, UUID, Required) - Device Claim (refer to Terminology).</t>
            </li>
            <li>
              <t>Mailbox-Request-ID (String, UUID, Required) - Unique request identifier.</t>
            </li>
          </ul>
        </section>
        <section anchor="responses-5">
          <name>Responses</name>
          <t><tt>200</tt>
Status: “200” (OK)</t>
          <t><tt>201</tt>
Status: “201” (Created) - response to a duplicate request (duplicate "Mailbox-Request-ID"). Relay server <bcp14>SHALL</bcp14> respond to duplicate requests with 201 without performing mailbox relinquish. "Mailbox-Request-ID" passed in the first RelinquishMailbox request's header <bcp14>SHALL</bcp14> be stored by the Relay server and compared to the same value in the subsequent requests to identify duplicate requests. If duplicate is found, Relay <bcp14>SHALL</bcp14> not perform mailbox relinquish, but respond with 201 instead.
The value of "Mailbox-Request-ID" of the last successfully completed request <bcp14>SHALL</bcp14> be stored based on the Device Claim passed by the caller.</t>
          <t><tt>401</tt>
Unauthorized - calling device is not authorized to relinquish a mailbox. E.g. a device presented the incorrect Device Claim, or the device is not bound to the mailbox.</t>
          <t><tt>404</tt>
Not Found - mailbox with provided mailboxIdentifier not found. Relay server may respond with 404 if the Mailbox Identifier passed by the caller is invalid.</t>
        </section>
      </section>
    </section>
    <section anchor="provisioning-information-structure">
      <name>Provisioning Information Structure</name>
      <t>The Provisioning Information is the data transferred via the Relay Server between the Initiator Device and Recipient Device. Each use case defines its own specialized Provisioning Information format, but all formats must at least adhere to the following structure. Formats are free to define new top level keys, so clients shouldn't be surprised if a message of an unexpected format has specialized top level keys.</t>
      <table>
        <thead>
          <tr>
            <th align="left">Key</th>
            <th align="left">Type</th>
            <th align="left">Required</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">format</td>
            <td align="left">String</td>
            <td align="left">Yes</td>
            <td align="left">The Provisioning Information format that the message follows. This is used by the Initiator Device and Recipient Device to know how to parse the message.</td>
          </tr>
          <tr>
            <td align="left">content</td>
            <td align="left">Dictionary</td>
            <td align="left">Yes</td>
            <td align="left">A dictionary of content to be used for the credential transfer. See each format's specification for exact fields.</td>
          </tr>
        </tbody>
      </table>
      <section anchor="provisioning-information-format">
        <name>Provisioning Information Format</name>
        <t>Each Provisioning Information format must have the message structure defined in an external specification.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Format Type</th>
              <th align="left">Spec Link</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">digitalwallet.carkey.ccc</td>
              <td align="left">
                <xref target="CCC-Digital-Key-30"/></td>
              <td align="left">A digital wallet Provisioning Information for sharing a car key that follows the Car Connectivity Consortium specification.</td>
            </tr>
            <tr>
              <td align="left">digitalwallet.generic.authorizationToken</td>
              <td align="left">
                <xref target="ISO-18013-5"/></td>
              <td align="left">A digital wallet Provisioning Information for sharing a generic pass that relies solely on an authorization token.</td>
            </tr>
          </tbody>
        </table>
        <figure anchor="provisioning-info-format">
          <name>Provisioning Information format</name>
          <artwork><![CDATA[
{
   "format" : "digitalwallet.carkey.ccc",
   "content": {
      // Format specific fields
   }
}
]]></artwork>
        </figure>
      </section>
      <section anchor="provisioning-information-encryption">
        <name>Provisioning Information Encryption</name>
        <t>Provisioning Information will be stored on the Relay Server encrypted. The Secret used to encrypt the Provisioning Information should be given to the Recipient Device via a "Share URL" (a URL link to a mailbox). The encrypted payload should be a data structure having the following key-value pairs:</t>
        <ul spacing="normal">
          <li>
            <t>"type" (String, Required) - the encryption algorithm and mode used.</t>
          </li>
          <li>
            <t>"data" (String, Required) - Base64 encoded binary value of the encrypted Provisioning Information, aka the ciphertext.</t>
          </li>
        </ul>
        <t>Please refer to <xref target="RFC5116"/> for the details of the encryption algorithm.</t>
        <t>The following algorithms and modes are mandatory to implement:</t>
        <ul spacing="normal">
          <li>
            <t>"AEAD_AES_128_GCM": AES symmetric encryption algorithm with key length 128 bits, in GCM mode with no padding.  Initialization Vector (IV) has the length of 96 bits randomly generated and tag length of 128 bits.</t>
          </li>
          <li>
            <t>"AEAD_AES_256_GCM": AES symmetric encryption algorithm with key length 256 bits, in GCM mode with no padding.  Initialization Vector (IV) has the length of 96 bits randomly generated and tag length of 128 bits.</t>
          </li>
        </ul>
        <figure anchor="secure-payload-format">
          <name>Secure Payload Format example</name>
          <artwork><![CDATA[
{
    "type" : "AEAD_AES_128_GCM",
    "data" : "IV  ciphertext  tag"
}
]]></artwork>
        </figure>
      </section>
      <section anchor="share-url">
        <name>Share URL</name>
        <t>A "Share URL" is the url a Initiator Device sends to the Recipient Device allowing it to retrieve the Provisioning Information stored on the Relay Server. A Share URL is made up of the following fields:</t>
        <figure anchor="share-url-example">
          <name>Share URL example</name>
          <artwork><![CDATA[
https://{RelayServerHost}/v{ApiVersion}/m/{MailboxIdentifier}?v={CredentialVertical}#{Secret}
]]></artwork>
        </figure>
        <table>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Location</th>
              <th align="left">Required</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">RelayServerHost</td>
              <td align="left">URL Host</td>
              <td align="left">Yes</td>
            </tr>
            <tr>
              <td align="left">ApiVersion</td>
              <td align="left">URI Path Parameter</td>
              <td align="left">Yes</td>
            </tr>
            <tr>
              <td align="left">MailboxIdentifier</td>
              <td align="left">URI Path Parameter</td>
              <td align="left">Yes</td>
            </tr>
            <tr>
              <td align="left">CredentialVertical</td>
              <td align="left">Query Parameter</td>
              <td align="left">No</td>
            </tr>
            <tr>
              <td align="left">Secret</td>
              <td align="left">Fragment</td>
              <td align="left">No</td>
            </tr>
          </tbody>
        </table>
        <section anchor="credential-vertical-in-share-url">
          <name>Credential Vertical in Share URL</name>
          <t>When a user interacts with a share URL on a Recipient Device it can be helpful to know what Credential Vertical this share is for. This is particularly important if the Recipient Device has multiple applications that can handle a share URL. For example, a Recipient Device might want to handle a general access share in their wallet app, but handle car key shares in a specific car application.</t>
          <t>To properly route a share URL, the Initiator can include the Credential Vertical in the share URL as a query parameter. The Credential Vertical can't be included in the encrypted payload because the Recipient Device might need to open the right application before retrieving the secure payload. The Credential Vertical query parameter uses the "v" key and supports the below types. If no Credential Vertical is provided it will be assumed that this is a general access share URL.</t>
          <table>
            <thead>
              <tr>
                <th align="left">Vertical</th>
                <th align="left">Value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">General Access</td>
                <td align="left">a or <em>None</em></td>
              </tr>
              <tr>
                <td align="left">Home Key</td>
                <td align="left">h</td>
              </tr>
              <tr>
                <td align="left">Car Key</td>
                <td align="left">c</td>
              </tr>
            </tbody>
          </table>
          <figure anchor="car-key-share-url-example">
            <name>Car Key Share URL example</name>
            <artwork><![CDATA[
https://relayserver.example.com/v1/m/2bba630e-519b-11ec-bf63-0242ac130002?v=c#hXlr6aRC7KgJpOLTNZaLsw==
]]></artwork>
          </figure>
          <t>The Credential Vertical query parameter can be added to the share URL by the Initiator Device when constructing the full share URL that is going to be sent to the Recipient Device.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="relay-server-defined-in-this-document">
        <name>Relay Server defined in this document</name>
        <section anchor="confidentiality-integrity">
          <name>Confidentiality &amp; Integrity</name>
          <ul spacing="normal">
            <li>
              <t>Relay Server <bcp14>SHALL</bcp14> only allow TLS connections to thwart eavesdropping or disruption of communication between Relay Server and Initiator/Recipient.</t>
            </li>
            <li>
              <t>Relay Server <bcp14>SHALL</bcp14> use Device Claim to bind Initiator and exactly one Recipient device to a mailbox. The binding prevents eavesdropping or disruption of communication between Initiator and Recipient via mailbox.</t>
            </li>
          </ul>
        </section>
        <section anchor="network-attacks">
          <name>Network attacks</name>
          <ul spacing="normal">
            <li>
              <t>An attacker may attempt to guess the MailboxIdentifier to eavesdrop or disrupt communication. Using version 4 UUID <xref target="RFC4122"/> for MailboxIdentifier <bcp14>SHOULD</bcp14> contain 122-bits of cryptographic entropy. That makes brute-force guessing attacks impractical. Also Relay Server generating MailboxIdentifiers removes any chance of collision.</t>
            </li>
            <li>
              <t>It is possible to hosting malicious or untrusted scripts by relay server preview page (ReadDisplayInformationFromMailbox). That can be mitigated by not hosting a third party JavaScripts on a preview page. Another approach is with a policy and tools to maintain the trust of such scripts (e.g. force client to verify the script against a good known hash of it).</t>
            </li>
            <li>
              <t>Relay server <bcp14>SHALL</bcp14> periodically check and delete expired mailboxes ( refer to expiration parameter in the CreateMailbox request). This prevents un-authorized data leaks in future in addition to general cleanup.</t>
            </li>
          </ul>
        </section>
        <section anchor="privacy-considerations">
          <name>Privacy Considerations</name>
          <ul spacing="normal">
            <li>
              <t>Relay Server <bcp14>SHALL</bcp14> not look into data exchanged over mailbox. This is achieved by encrypting that data and making sure the Secret doesn't land on Relay Server.</t>
            </li>
            <li>
              <t>At no time Relay server <bcp14>SHALL</bcp14> store or track the identities of Initiator and Recipient. This is achieved by letting clients pick Device Claims and Notification Tokens.</t>
            </li>
            <li>
              <t>Relay Server <bcp14>SHALL NOT</bcp14> be able to identify different mailboxes that same device is interacting with. This is achieved by letting clients pick Device Claims and Notification Tokens.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="clients-of-relay-server">
        <name>Clients of Relay Server</name>
        <section anchor="confidentiality-integrity-1">
          <name>Confidentiality &amp; Integrity</name>
          <ul spacing="normal">
            <li>
              <t>Clients <bcp14>SHALL</bcp14> encrypt contents of the mailbox to protect it from getting revealed to the Relay Server.</t>
            </li>
            <li>
              <t>Clients <bcp14>SHALL</bcp14> check cryptographic checksum of the content to verify integrity of data. It's in the realm of Verticals to define the details and out of scope of this document.</t>
            </li>
            <li>
              <t>It is recommended that URL and secret are send separately. But if the Initiator sends both URL and the Secret as a single URL, Secret <bcp14>MUST</bcp14> be appended as URI fragment <xref target="RFC3986"/>. Recipient Device, upon receipt of such URL, <bcp14>MUST</bcp14> remove the Fragment (Secret) before calling the Relay server API. This ensures that Relay Server never ends up with the Secret to decode data.</t>
            </li>
          </ul>
          <figure anchor="link-with-fragment">
            <name>Example of URL with Secret as URI Fragment</name>
            <artwork><![CDATA[
“https://relayserver.example.com/v1/m/{mailboxIdentifier}#{Secret}”
]]></artwork>
          </figure>
        </section>
        <section anchor="privacy-considerations-1">
          <name>Privacy Considerations</name>
          <ul spacing="normal">
            <li>
              <t>Notification Token <bcp14>SHALL NOT</bcp14> not contain identifying information. It <bcp14>SHOULD</bcp14> also be different for every new share to prevent the Relay server from correlating different shares.</t>
            </li>
            <li>
              <t>Notification token <bcp14>SHOULD</bcp14> only inform the corresponding device that there is an update available on the corresponding mailbox. Each device <bcp14>SHOULD</bcp14> keep track of all mailboxes associated with it and make read calls to appropriate mailboxes.</t>
            </li>
            <li>
              <t>The value of Mailbox-Device-Attestation header parameter <bcp14>SHALL</bcp14> not contain identifying information. It <bcp14>SHOULD</bcp14> also be different for every new share to prevent the Relay server from correlating different shares.</t>
            </li>
            <li>
              <t>Display Information is not encrypted, therefore, it <bcp14>SHOULD</bcp14> not contain any identifying information.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="overall-system">
        <name>Overall System</name>
        <t>The overall system security considerations are in the realm of Verticals. They are mentioned here for getting a better picture. But these are not in scope of this document as Relay Server is a piece of the overall System.</t>
        <section anchor="initiator-shares-with-the-wrong-recipient">
          <name>Initiator shares with the wrong Recipient</name>
          <ul spacing="normal">
            <li>
              <t>Verticals allow Initiator to cancel in-flight shares and delete completed shares.</t>
            </li>
          </ul>
        </section>
        <section anchor="malicious-recipient-forwards-the-share-to-3rd-party-without-redeeming-it-or-the-recipients-device-is-compromised">
          <name>Malicious Recipient forwards the share to 3rd party without redeeming it or the Recipient's device is compromised.</name>
          <ul spacing="normal">
            <li>
              <t>No mitigation, the Initiator <bcp14>SHOULD</bcp14> only share with receivers they trust.</t>
            </li>
          </ul>
        </section>
        <section anchor="invitation-channel-security">
          <name>Invitation Channel Security</name>
          <ul spacing="normal">
            <li>
              <t>For better user experience, the sharing flow <bcp14>SHOULD</bcp14> allow user preferred channels. Users are familiar with these channels and use them frequently for communication. Users typically consider these channels as secure enough and trust them to deliver messages to intended recipient. Some of these channels are end to end encrypted and hence very secure and some are not. So depending on channel used it's possible that the invitation is leaked to determined attackers.</t>
            </li>
            <li>
              <t>Verticals can deploy various mitigations for this scenario.
              </t>
              <ul spacing="normal">
                <li>
                  <t>Verticals <bcp14>SHALL</bcp14> ensure that the Provisioning Information of a share can only be redeemed exactly once. Relay Server helps in this by guaranteeing that only one Recipient device gets the Provisioning Information.</t>
                </li>
                <li>
                  <t>Verticals can use second factor to authenticate the Recipient. Verticals can use PIN codes, presence of Initiator Credential or other mechanisms as second factor. The second factor introduces friction to the smooth user experience during the Provisioning process or at time of use of Credential. Details of the second factor and policies around use of the second factor are out of scope of this document.</t>
                </li>
              </ul>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document registers new headers, "Mailbox-Request-ID", "Mailbox-Device-Claim" and "Mailbox-Device-Attestation"
in the "Permanent Message Header Field Names" &lt;<eref target="https://www.iana.org/assignments/message-headers"/>&gt;.</t>
      <figure anchor="iana-header-type-table">
        <name>Registered HTTP Header</name>
        <artwork><![CDATA[
    +----------------------------+----------+--------+---------------+
    | Header Field Name          | Protocol | Status |   Reference   |
    +----------------------------+----------+--------+---------------+
    | Mailbox-Request-ID         |   http   |  std   | This document |
    | Mailbox-Device-Claim       |   http   |  std   | This document |
    | Mailbox-Device-Attestation |   http   |  std   | This document |
    +----------------------------+----------+--------+---------------+
]]></artwork>
      </figure>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="CCC-Digital-Key-30" target="https://carconnectivity.org/download-digital-key-3-specification/">
          <front>
            <title>Digital Key Release 3</title>
            <author>
              <organization>Car Connectivity Consortium</organization>
            </author>
            <date year="2022" month="July"/>
          </front>
        </reference>
        <reference anchor="ISO-18013-5" target="https://www.iso.org/standard/69084.html">
          <front>
            <title>Personal identification — ISO-compliant driving license — Part 5: Mobile driving license (mDL) application</title>
            <author>
              <organization>Cards and security devices for personal identification</organization>
            </author>
            <date year="2021" month="September"/>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC4122">
          <front>
            <title>A Universally Unique IDentifier (UUID) URN Namespace</title>
            <author fullname="P. Leach" initials="P." surname="Leach"/>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <author fullname="R. Salz" initials="R." surname="Salz"/>
            <date month="July" year="2005"/>
            <abstract>
              <t>This specification defines a Uniform Resource Name namespace for UUIDs (Universally Unique IDentifier), also known as GUIDs (Globally Unique IDentifier). A UUID is 128 bits long, and can guarantee uniqueness across space and time. UUIDs were originally used in the Apollo Network Computing System and later in the Open Software Foundation\'s (OSF) Distributed Computing Environment (DCE), and then in Microsoft Windows platforms.</t>
              <t>This specification is derived from the DCE specification with the kind permission of the OSF (now known as The Open Group). Information from earlier versions of the DCE specification have been incorporated into this document. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4122"/>
          <seriesInfo name="DOI" value="10.17487/RFC4122"/>
        </reference>
        <reference anchor="RFC3339">
          <front>
            <title>Date and Time on the Internet: Timestamps</title>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <date month="July" year="2002"/>
            <abstract>
              <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3339"/>
          <seriesInfo name="DOI" value="10.17487/RFC3339"/>
        </reference>
        <reference anchor="RFC5116">
          <front>
            <title>An Interface and Algorithms for Authenticated Encryption</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>This document defines algorithms for Authenticated Encryption with Associated Data (AEAD), and defines a uniform interface and a registry for such algorithms. The interface and registry can be used as an application-independent set of cryptoalgorithm suites. This approach provides advantages in efficiency and security, and promotes the reuse of crypto implementations. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5116"/>
          <seriesInfo name="DOI" value="10.17487/RFC5116"/>
        </reference>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC2818">
          <front>
            <title>HTTP Over TLS</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="May" year="2000"/>
            <abstract>
              <t>This memo describes how to use Transport Layer Security (TLS) to secure Hypertext Transfer Protocol (HTTP) connections over the Internet. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2818"/>
          <seriesInfo name="DOI" value="10.17487/RFC2818"/>
        </reference>
      </references>
    </references>
    <?line 845?>

<section anchor="contributors">
      <name>Contributors</name>
      <t>The following people provided substantive contributions to this document:</t>
      <ul spacing="normal">
        <li>
          <t>Casey Astiz</t>
        </li>
        <li>
          <t>Adam Bar-Niv</t>
        </li>
        <li>
          <t>Alexey Bulgakov</t>
        </li>
        <li>
          <t>Matt Byington</t>
        </li>
        <li>
          <t>Ben Chester</t>
        </li>
        <li>
          <t>Igor Gariev</t>
        </li>
        <li>
          <t>Manuel Gerster</t>
        </li>
        <li>
          <t>Jean-Luc Giraud</t>
        </li>
        <li>
          <t>Tommy Pauly</t>
        </li>
        <li>
          <t>Crystal Qin</t>
        </li>
      </ul>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
Jh0RcHdQ2QU8yQens5sOZBtkpyUHh7V9QFTyLFFG5GeI30tpfVesnq5z86Xw
ruhyY/A+ire9cMF7pCaZykyn7uZdzFyT2SyXsjAUNixoj2ynK0s2raMljQj7
q0aAfffNopk1eLsu6N6KuR/+w4Luzl/1YG4y6oMUyLqAdzuMf/hLHP/fKI7/
M8z5Swj/3yKE/0s89pd47H9aPDbweP4ZUYPDnzpmELhTTAPr/Hcpnry9/97y
0P+Dfd938VpbaI691haeO73WDZGRH+HTdri0P9Kj3eDQLk1hj137gzwshW7t
08ZFVh0+rcRs/3Eu7bt7tIKHBhJu8Gl7P7FP28DTf45LK55adHJnnVNrs0ZF
gTcwxeWVCMHdb3rA4mAh4fEb5+jw5jiToOX+EFC09+IHx+XQP0MdW5rLLQEt
h5cvFUWBh63RfimtRRueZ4syVoIHd4GYvT6jceUIMEpeTJoQrHNvT06fnF6c
/uLg3t7B/df0Om8dr//BDGxTjv8C7BsrDq4lD+QzzCBXUHUdy+6SnLhiKyb9
qWN+4Sjl864kMW3KcYtSvDApZorzUL3EGUjZrm0ROJg6Pmnl4cITIz+9EMIq
e3qdRt5+kDxgdDWdjc5RnjjYYIE1dpCpICCsWAWB83xpssdY9eoyvkt+fNBR
v01F5LPlcGHCbAwgx3Uf+FtNuuAM3nojipQmmqN6hu6RDOqR+DIKd9d3gNcd
dlySp3LhI0DzBXis5dFy2ZKQj08v/mHi8V9aOv5jikUxYrGLryZ+8yMSkXxH
623rFteWDdrnrmKa+pHETv4HOSsf4TLppGby+uN+PjtsdNzNyvf6n7AT+REi
yP5NHsonPvf+0S5/Iz8DqfmH/Whgye0Ln38cZvjV7oZu5Ni6XpTW3/12aWYb
e0WFAq5zs1xg0wh1kQY96apvQMrGLgRb0Kmr6oAfVuP/DL9dbl4FDXh4nUyq
eTDsvf2DW/Sa44MEVdDt7t597PbRbriLROWf9J0/inpmIDQ7CMReyzOlCqQu
2dzpo/5k5vLGo44/o+JqZHC6ldW7pJBClNnA7nb30Ypf7OJ/sF38zz6S8IOV
jUtadOH6HZIWdIcbChai4lGaj36axMXPV8dPEDto/5l1/Or8ZiTcVORY8VGA
jhQGHRjm8kAObK4p0KVIqKnAKShCl99X5J422vt3PLWLCUU1kgxQWfEta+9Y
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
Id8Ql/785LnS7lsz7P1/YybVocO4AAA=

-->

</rfc>
