<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-tigress-sample-implementation-01" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.2 -->
  <front>
    <title abbrev="tigress-sample-implementation">Transfer Digital Credentials Securely: sample implementation and threat model</title>
    <seriesInfo name="Internet-Draft" value="draft-tigress-sample-implementation-01"/>
    <author initials="D." surname="Vinokurov" fullname="Dmitry Vinokurov">
      <organization>Apple Inc</organization>
      <address>
        <email>dvinokurov@apple.com</email>
      </address>
    </author>
    <author initials="A." surname="Bulgakov" fullname="Alexey Bulgakov">
      <organization>Apple Inc</organization>
      <address>
        <email>abulgakov@apple.com</email>
      </address>
    </author>
    <author initials="J. L." surname="Giraud" fullname="Jean-Luc Giraud">
      <organization>Apple Inc</organization>
      <address>
        <email>jgiraud@apple.com</email>
      </address>
    </author>
    <author initials="C." surname="Astiz" fullname="Casey Astiz">
      <organization>Apple Inc</organization>
      <address>
        <email>castiz@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="J." surname="Hansen" fullname="Jake Hansen">
      <organization>Apple Inc</organization>
      <address>
        <email>jake.hansen@apple.com</email>
      </address>
    </author>
    <date year="2022" month="November" day="09"/>
    <area>ART</area>
    <workgroup>Tigress</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document describes a sample implementation of Tigress internet draft <xref target="Tigress-00"/> and a threat model of this implementation.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://github.com/dimmyvi/tigress-sample-implementation"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-tigress-sample-implementation/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/dimmyvi/tigress-sample-implementation"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>This document provides a sample implementation and threat model for Tigress draft <xref target="Tigress-00"/>.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and 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>
      <ul spacing="normal">
        <li>DCK - Digital Car Key</li>
        <li>AP - Application Processor</li>
        <li>TTL - Time To Live</li>
        <li>AAA - Apple Anonymous Attestation - a subtype of WebAuthn <xref target="WebAuthn-2"/></li>
        <li>PKI - public Key Infrastructure</li>
        <li>UUID - a unique identifier defined in <xref target="RFC4122"/></li>
        <li>SMS - Short Message Service</li>
        <li>OS - Operating System</li>
        <li>URI - Uniform Resource Identifier</li>
        <li>URL - Universal Resource Locator</li>
        <li>RNG - Random Number Generator</li>
      </ul>
    </section>
    <section anchor="sample-implementation-digital-car-key-sharing-example">
      <name>Sample Implementation - Digital Car Key sharing example.</name>
      <ul spacing="normal">
        <li>An Owner's device (Sender) starts sharing flow with selection of credential entitlements for the key shared - e.g. access entitlements (allow open the car, allow start the engine, allow to drive the car), time of sharing - e.g. from 09/01/2022 to 09/03/2022, then generates a KeyCreationRequest (per <xref target="CCC-Digital-Key-30"/> ).</li>
        <li>The Owner's device generates a new symmetric encryption key (Secret) and builds an encrypted KeyCreationRequest. Then it generates an attestation data, that follows a WebAuthn API <xref target="WebAuthn-2"/>, specific to Apple - AAA, which covers the encrypted content. Owner device makes a call to Relay server (Intermediary) - createMailbox, passing over the encrypted content, device attestation, mailbox configuration (mailbox time-to-live, access rights - Read/Write/Delete), preview (display information) details, its push notification token and a unique deviceClaim.</li>
        <li>Relay server verifies device attestation using WebAuthn verification rules specific to attestation data used, including verifying device PKI certificate in attestation blob. Relay server creates a mailbox, using mailboxConfiguration received in the request and stores encrypted content in it.</li>
        <li>The mailbox has a time-to-live which defines when it is to expire and be deleted by the Relay server. This time is limited by the value that can be considered both sufficient to complete the transfer and secure against brute force attacks on the encrypted content - e.g. 48 hours.</li>
        <li>Relay server generates a unique mailboxIdentifier value, that is hard to predict - i.e. using UUID - and builds a full URL (shareURL) referencing the mailbox - e.g. "https://www.example.com/v1/m/2bba630e-519b-11ec-bf63-0242ac130002", which it returns to the Owner device.</li>
        <li>Owner's device locally stores the shareURL and the Secret and sends the shareURL with optional vertical in URL parameter and mandatory secret in Fragment part (e.g. "https://www.example.com/v1/m/2bba630e-519b-11ec-bf63-0242ac130002?v=c#hXlr6aRC7KgJpOLTNZaLsw==") to the Friend's device (Receiver) over SMS.</li>
        <li>Friend's device receives the shareURL in SMS, messaging application makes an automatic GET call to shareURL (excluding Fragment part - Secret) - and fetches a preview (Display Information) html page with OpenGraph tags in the head:</li>
      </ul>
      <figure anchor="opengraph-preview-example">
        <name>OpenGraph preview of a credential</name>
        <artwork><![CDATA[
<html prefix="og: https://ogp.me/ns#">
<head>
 <title>Shared Key</title>
 <meta content="Shared Key" property="og:title"/>
 <meta content="You've been invited to add a shared digital car key to your device." property="og:description"/>
 <meta content="https://example.com/displayInfo/general.png" property="og:url"/>
 <meta content="https://example.com/displayInfo/general.png" property="og:image"/>
 <meta content="200" property="og:image:width"/>
 <meta content="100" property="og:image:height"/>
</head>
</html>
]]></artwork>
      </figure>
      <ul spacing="normal">
        <li>Messaging application shows a preview of the DCK on the Friend's device that Owner wants to share with them. User accepts the shareURL by clicking on the preview in the messaging application. Messaging application redirects the user to wallet (credential manager application) using a deep link mechanism embedded into the OS.</li>
        <li>Wallet receives the shareURL with the Secret in the Fragment. Friend's device checks if the Relay server is in allow-list of accepted Relay servers.</li>
        <li>Wallet reads secure content from the mailbox using shareURL (without the Fragment part) with ReadSecureContentFromMailbox method, passing a unique deviceClaim with the request. Thus, relay server binds the mailbox (identified by mailboxIdentifier) with the Owner's device (with Owner's device deviceClaim at the mailbox creation time) and the Friend's device (with Friend's device deviceClaim at the first time Friend's device calls ReadSecureContentFromMailbox for the mailbox). Now only these 2 devices are allowed to read and write secure content to this particular mailbox. This secures the message exchange and prevents other devices from altering the exchange between Owner and Friend.</li>
        <li>Friend's device decrypts secure content using Secret and extracts KeyCreationRequest (ref to <xref target="CCC-Digital-Key-30"/> specification).</li>
        <li>Friend's device generates a KeySigningRequest (ref to <xref target="CCC-Digital-Key-30"/> specification), encrypts it with Secret and uploads to the mailbox with UpdateMailbox call to Relay server, providing its unique deviceClaim and push notification token.</li>
        <li>Relay server sends a push notification to Owner's device via Push Notification Server.</li>
        <li>Owner device, having received a push notification message,  reads secure content from the mailbox using shareURL with ReadSecureContentFromMailbox method, passing its unique deviceClaim with the request. Owner's device decrypts secure content using Secret and extracts KeySigningRequest (ref to <xref target="CCC-Digital-Key-30"/> specification).</li>
        <li>Owner's device signs the Friend's device public key with Owner's private key and creates a KeyImportRequest (ref to <xref target="CCC-Digital-Key-30"/> specification). Owner's device encrypts it with the Secret and uploads to the mailbox with UpdateMailbox call to Relay server, providing its unique deviceClaim.</li>
        <li>Relay server sends a push notification to Friend's device via Push Notification Server.</li>
        <li>Friend's device, having received a push notification message,  reads secure content from the mailbox using shareURL with ReadSecureContentFromMailbox method, passing its unique deviceClaim with the request. Friend device decrypts secure content using Secret and extracts KeyImportRequest (ref to <xref target="CCC-Digital-Key-30"/> specification). Friend's device provisions the new credential to the wallet and deletes the mailbox with DeleteMailbox call to the Relay server. As an additional security measure, Friend device asks for a verification code (PIN code) generated by Owner's device and communicated to Friend out-of-band.</li>
      </ul>
    </section>
    <section anchor="threat-model">
      <name>Threat Model</name>
      <t>Threat model for the sample implementation is provided at the following URL:
[threat_model]: https://github.com/dimmyvi/tigress-sample-implementation/blob/main/threat_model.png "Threat model for Tigress sample implementation"</t>
      <table>
        <thead>
          <tr>
            <th align="left">Item</th>
            <th align="left">Asset</th>
            <th align="left">Threat</th>
            <th align="left">Impact</th>
            <th align="left">Mitigation</th>
            <th align="left">Comment</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">1</td>
            <td align="left">Owner's DCK</td>
            <td align="left">Kicking-off arbitrary key sharing by spoofing user identity</td>
            <td align="left">DCK becomes shared with arbitrary user/adversary allowing them access to the Owner's car</td>
            <td align="left">1) User auth (face/touch ID), 2) Secure Intent</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">2</td>
            <td align="left">Content on Intermediary server</td>
            <td align="left">Content recovery by brute forcing secret</td>
            <td align="left">Exposure of encrypted content and key redemption</td>
            <td align="left">1) Strong source of randomness for salt, 2) At least 128 bit key length, 3) Limitted TTL of the mailbox</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">Content on Intermediary server</td>
            <td align="left">Content recovery by intercepting secret</td>
            <td align="left">Ability to decrypt content on Intermediary server</td>
            <td align="left">1) Physical separation between content and secret, e.g. secret sent as URI fragment to recipient, 2) Optional second factor(e.g. Device PIN, Activation Options - please refer to CCC Technical Specification) can be proposed to the user via user notification based on security options of selected primary sharing channel (used to share URL with secret)</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">4</td>
            <td align="left">Content on Intermediary server</td>
            <td align="left">Access to content by multiple arbitrary  users/devices</td>
            <td align="left">1) Adversary can go to partner and redeem the shared key, 2) Adversary can send push notifications</td>
            <td align="left">1) Mailboxes identified by version 4 UUID defined in <xref target="RFC4122"/>(hard to guess/bruteforce), 2) Mailboxes 'tied' to sender and recipient (trust on first use via deviceClaim), 3) TTL limit for mailboxes, 4) Mailboxes deleted after pass redemption</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">Content on Intermediary server</td>
            <td align="left">Compromised Intermediary server</td>
            <td align="left">1) Adversary can redeem the sharedKey, 2) Adversary can send push notifications</td>
            <td align="left">1) Separation between content and secret, e.g. secret sent as URI fragment to recipient, 2) TTL limit for mailboxes</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">6</td>
            <td align="left">Content on Intermediary server and Push Tokens</td>
            <td align="left">Unauthenticated access to mailbox on Intermediary server</td>
            <td align="left">1) Adversary can redeem the sharedKey, 2) Adversary can send push notifications</td>
            <td align="left">1) Mailboxes identified by version 4 UUID defined in <xref target="RFC4122"/>(hard to guess/bruteforce), 2) Mailboxes 'tied' to sender and recipient (trust on first use via deviceClaim), 3) TTL limit for mailboxes, 4) Mailboxes deleted after pass redemption</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">7</td>
            <td align="left">Content on Intermediary server</td>
            <td align="left">User stores non-credential information in mailbox (e.g. "cat pictures")</td>
            <td align="left">Service abuse, Adversary can use Intermediary server as cloud storage</td>
            <td align="left">1) Mailboxes have size limit, 2) Mailboxes have TTL</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">8</td>
            <td align="left">Device PIN</td>
            <td align="left">Receiver device compromised (redemption before friend)</td>
            <td align="left">Device PIN can exposure and forwarding to an advarsary</td>
            <td align="left">Activation Options as defined in <xref target="CCC-Digital-Key-30"/>, Section 11.2 Sharing Principles, subsection 11.2.1.3. Activation Options</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">9</td>
            <td align="left">Device PIN</td>
            <td align="left">Weak PIN can be easily guessed</td>
            <td align="left">Anyone with share URL in their possession can guess the PIN and redeem the key</td>
            <td align="left">1) Use of strong RNG as a source to generate Device PIN, 2) Long enough PIN (e.g. 6 digits) as per <xref target="NIST-800-63B"/> recommendations, 3) Limit the number of retries (e.g. Device PIN retry counter + limit) as per <xref target="NIST-800-63B"/> recommendations</td>
            <td align="left">
              <xref target="NIST-800-63B"/>, section 5.1.1.1 Memorized Secret Authenticators</td>
          </tr>
          <tr>
            <td align="left">10</td>
            <td align="left">Device PIN</td>
            <td align="left">Eavesdropping on weak msg channels/app</td>
            <td align="left">PIN exposure would allow one with possession of share URL and Secret to redeem key</td>
            <td align="left">In person, out of band PIN transfer, e.g. voice channel</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">11</td>
            <td align="left">Device PIN</td>
            <td align="left">PIN recovery via timing attack</td>
            <td align="left">Adversary with shared URL in possession can recover PIN based on the response delay, in the case where the PIN verification is not invariant</td>
            <td align="left">1) Time invariant compare, 2) PIN retry counter/limit</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">12</td>
            <td align="left">Device PIN retry counter/limit</td>
            <td align="left">Device PIN brute force</td>
            <td align="left">Device PIN successful guess</td>
            <td align="left">1) Use of strong RNG as a source to generate Device PIN, 2) Long enough PIN (e.g. 6 digits) as per  <xref target="NIST-800-63B"/> recommendations, 3) Limit the number of retries (e.g. Device PIN retry counter + limit) as per <xref target="NIST-800-63B"/> recommendations</td>
            <td align="left">
              <xref target="NIST-800-63B"/>, section 5.1.1.1 Memorized Secret Authenticators</td>
          </tr>
          <tr>
            <td align="left">13</td>
            <td align="left">Sharing Invitation</td>
            <td align="left">Messaging channel eavesdropping</td>
            <td align="left">Share invitation forwarding and DCK redemtion by malicious party</td>
            <td align="left">1) Send invitation and Device PIN via different channels, e.g. Device PIN can be shared out of band (over voice), 2) Use of E2E encrypted msg apps/chhannel</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">14</td>
            <td align="left">Sharing Invitation</td>
            <td align="left">Voluntary/Involuntary forwarding by Friend</td>
            <td align="left">DCK redemption before Friend</td>
            <td align="left">Use of messaging apps with anti-forwarding mechanisms(e.g. hide link, copy/past prevention)</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">15</td>
            <td align="left">Sharing Invitation</td>
            <td align="left">Friend device compromise allow malware to forward invitation to an adversary</td>
            <td align="left">Share invitation forwarding and key redemption by malicious party</td>
            <td align="left">Activation Options as defined in <xref target="CCC-Digital-Key-30"/>, Section 11.2 Sharing Principles, subsection 11.2.1.3. Activation Options</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">16</td>
            <td align="left">Sharing Invitation</td>
            <td align="left">User mistakenly shares with the wrong person</td>
            <td align="left">DCK redemption by adversary/not intended user</td>
            <td align="left">1) Send invitation and Device PIN via different channels, e.g. Device PIN can be shared out of band (over voice), 2) DCK revocation</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">17</td>
            <td align="left">Sharing Invitation</td>
            <td align="left">Owner device compromise allow malware to forward invitation to an adversary</td>
            <td align="left">Share invitation forwarding and key redemption by malicious party</td>
            <td align="left">Activation Options as defined in <xref target="CCC-Digital-Key-30"/>, Section 11.2 Sharing Principles, subsection 11.2.1.3. Activation Options</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">18</td>
            <td align="left">Sharing Invitation</td>
            <td align="left">Friend device OEM account take over</td>
            <td align="left">DCK provisioning on adversary's device</td>
            <td align="left">1) Binding to deviceClaim, 2) Device PIN shared out of band, 3) Activation Options as defined in <xref target="CCC-Digital-Key-30"/>, Section 11.2 Sharing Principles, subsection 11.2.1.3. Activation Options</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">19</td>
            <td align="left">User's credentials, payment card details, etc</td>
            <td align="left">Phishing attacks leveraging malicious Java Script in preview page</td>
            <td align="left">1) Preview page URL fragement contains encryption key - meaning malicious JS could use key to decrypt contents, 2) Malicious Java Script can phish for user credentials, payment card information, or other sensitive data</td>
            <td align="left">1) Properly vet Java Script that is embedded in the preview page, 2) Define strong content security policy</td>
            <td align="left"> </td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="Tigress-00" target="https://datatracker.ietf.org/doc/draft-art-tigress/">
        <front>
          <title>Transfer Digital Credentials Securely</title>
          <author initials="D." surname="Vinokurov" fullname="Dmitry Vinokurov">
            <organization/>
          </author>
          <author initials="M." surname="Byington" fullname="Matt Byington">
            <organization/>
          </author>
          <author initials="M." surname="Lerch" fullname="Matthias Lerch">
            <organization/>
          </author>
          <author initials="A." surname="Pelletier" fullname="Alex Pelletier">
            <organization/>
          </author>
          <author initials="N." surname="Sha" fullname="Nick Sha">
            <organization/>
          </author>
          <date year="2022" month="November"/>
        </front>
      </reference>
      <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="NIST-800-63B" target="https://pages.nist.gov/800-63-3/sp800-63b.html">
        <front>
          <title>NIST Special Publication 800-63B, Digital Identity Guidelines</title>
          <author>
            <organization>NIST</organization>
          </author>
          <date year="2022" month="November"/>
        </front>
      </reference>
      <reference anchor="WebAuthn-2" target="https://www.w3.org/TR/webauthn-2/">
        <front>
          <title>Web Authentication - An API for accessing Public Key Credentials - Level 2</title>
          <author>
            <organization>W3</organization>
          </author>
          <date year="2021" month="April"/>
        </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">
            <organization/>
          </author>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba">
            <organization/>
          </author>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
      <reference anchor="RFC4122">
        <front>
          <title>A Universally Unique IDentifier (UUID) URN Namespace</title>
          <author fullname="P. Leach" initials="P." surname="Leach">
            <organization/>
          </author>
          <author fullname="M. Mealling" initials="M." surname="Mealling">
            <organization/>
          </author>
          <author fullname="R. Salz" initials="R." surname="Salz">
            <organization/>
          </author>
          <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>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
4cvuDLJTdOWMF5fVSDXs/CfRjLnipz8AAA==

-->

</rfc>
