<?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.11 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-privacypass-protocol-05" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.10 -->
  <front>
    <title abbrev="Privacy Pass Issuance">Privacy Pass Issuance Protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-privacypass-protocol-05"/>
    <author initials="S." surname="Celi" fullname="Sofía Celi">
      <organization>Cloudflare</organization>
      <address>
        <postal>
          <city>Lisbon</city>
          <country>Portugal</country>
        </postal>
        <email>sceli@cloudflare.com</email>
      </address>
    </author>
    <author initials="A." surname="Davidson" fullname="Alex Davidson">
      <organization>Brave Software</organization>
      <address>
        <postal>
          <city>Lisbon</city>
          <country>Portugal</country>
        </postal>
        <email>alex.davidson92@gmail.com</email>
      </address>
    </author>
    <author initials="A." surname="Faz-Hernandez" fullname="Armando Faz-Hernandez">
      <organization>Cloudflare</organization>
      <address>
        <postal>
          <street>101 Townsend St</street>
          <city>San Francisco</city>
          <country>United States of America</country>
        </postal>
        <email>armfazh@cloudflare.com</email>
      </address>
    </author>
    <author initials="S." surname="Valdez" fullname="Steven Valdez">
      <organization>Google LLC</organization>
      <address>
        <email>svaldez@chromium.org</email>
      </address>
    </author>
    <author initials="C. A." surname="Wood" fullname="Christopher A. Wood">
      <organization>Cloudflare</organization>
      <address>
        <postal>
          <street>101 Townsend St</street>
          <city>San Francisco</city>
          <country>United States of America</country>
        </postal>
        <email>caw@heapingbits.net</email>
      </address>
    </author>
    <date year="2022" month="July" day="01"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document specifies two variants of the the two-message issuance protocol
for Privacy Pass tokens: one that produces tokens that are privately
verifiable, and another that produces tokens that are publicly verifiable.
The privately verifiable issuance protocol optionally supports public
metadata during the issuance flow.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The Privacy Pass protocol provides a privacy-preserving authorization
mechanism. In essence, the protocol allows clients to provide
cryptographic tokens that prove nothing other than that they have been
created by a given server in the past <xref target="I-D.ietf-privacypass-architecture"/>.</t>
      <t>This document describes the issuance protocol for Privacy Pass. It specifies
two variants: one that is privately verifiable based on the oblivious
pseudorandom function from <xref target="OPRF"/>, and one that is
publicly verifiable based on the blind RSA signature scheme
<xref target="BLINDRSA"/>.</t>
      <t>This document DOES NOT cover the architectural framework required for
running and maintaining the Privacy Pass protocol in the Internet
setting. In addition, it DOES NOT cover the choices that are necessary
for ensuring that client privacy leaks do not occur. Both of these
considerations are covered in <xref target="I-D.ietf-privacypass-architecture"/>.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <t>The following terms are used throughout this document.</t>
      <ul spacing="normal">
        <li>Client: An entity that provides authorization tokens to services
across the Internet, in return for authorization.</li>
        <li>Issuer: A service produces Privacy Pass tokens to clients.</li>
        <li>Private Key: The secret key used by the Issuer for issuing tokens.</li>
        <li>Public Key: The public key used by the Issuer for issuing and verifying
tokens.</li>
      </ul>
      <t>We assume that all protocol messages are encoded into raw byte format
before being sent across the wire.</t>
    </section>
    <section anchor="setup">
      <name>Configuration</name>
      <t>Issuers MUST provide two parameters for configuration:</t>
      <ol spacing="normal" type="1"><li>Issuer Request URI: a token request URL for generating access tokens.
For example, an Issuer URL might be https://issuer.example.net/example-token-request.
This parameter uses resource media type "text/plain".</li>
        <li>Issuer Public Key values: an Issuer Public Key for an issuance protocol.</li>
      </ol>
      <t>The Issuer parameters can be obtained from an Issuer via a directory object, which is a JSON
object whose values are other JSON objects and URLs for the parameters.</t>
      <table>
        <thead>
          <tr>
            <th align="left">Field Name</th>
            <th align="left">Value</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">issuer-request-uri</td>
            <td align="left">Issuer Request URI resource URL as a JSON string</td>
          </tr>
          <tr>
            <td align="left">token-keys</td>
            <td align="left">List of Issuer Public Key values, each as JSON objects</td>
          </tr>
        </tbody>
      </table>
      <t>Each "token-keys" JSON object contains the following fields and corresponding raw values.</t>
      <table>
        <thead>
          <tr>
            <th align="left">Field Name</th>
            <th align="left">Value</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">token-type</td>
            <td align="left">Integer value of the Token Type, as defined in <xref target="token-type"/>, as a JSON number</td>
          </tr>
          <tr>
            <td align="left">token-key</td>
            <td align="left">The base64url encoding of the public key for use with the issuance protocol, including padding, as a JSON string</td>
          </tr>
        </tbody>
      </table>
      <t>Issuers MAY advertise multiple token-keys for the same token-type to
support key rotation. In this case, Issuers indicate preference for which
token key to use based on the order of keys in the list, with preference
given to keys earlier in the list.</t>
      <t>Altogether, the Issuer's JSON directory could look like:</t>
      <artwork><![CDATA[
 {
    "issuer-request-uri": "https://issuer.example.net/example-token-request",
    "token-keys": [
      {
        "token-type": 2,
        "token-key": "MI...AB",
      },
      {
        "token-type": 2,
        "token-key": "MI...AQ",
      }
    ]
 }
]]></artwork>
      <t>Issuer directory resources have the media type "application/json"
and are located at the well-known location /.well-known/token-issuer-directory.</t>
    </section>
    <section anchor="token-challenge-requirements">
      <name>Token Challenge Requirements</name>
      <t>Clients receive challenges for tokens, as described in <xref target="AUTHSCHEME"/>.
The basic token issuance protocols described in this document can be
interactive or non-interactive, and per-origin or cross-origin.</t>
    </section>
    <section anchor="private-flow">
      <name>Issuance Protocol for Privately Verifiable Tokens</name>
      <t>The Privacy Pass issuance protocol is a two message protocol that takes
as input a challenge from the redemption protocol and produces a token,
as shown in the figure below.</t>
      <artwork><![CDATA[
   Origin          Client                   Issuer
                    (pkI)                 (skI, pkI)
                  +------------------------------------\
  Challenge   ----> TokenRequest ------------->        |
                  |                       (evaluate)   |
    Token    <----+     <--------------- TokenResponse |
                  \------------------------------------/
]]></artwork>
      <t>Issuers provide a Private and Public Key, denoted skI and pkI, respectively,
used to produce tokens as input to the protocol. See <xref target="issuer-configuration"/>
for how this key pair is generated.</t>
      <t>Clients provide the following as input to the issuance protocol:</t>
      <ul spacing="normal">
        <li>Issuer name, identifying the Issuer. This is typically a host name that
can be used to construct HTTP requests to the Issuer.</li>
        <li>Issuer Public Key pkI, with a key identifier <tt>key_id</tt> computed as
described in <xref target="issuer-configuration"/>.</li>
        <li>Challenge value <tt>challenge</tt>, an opaque byte string. For example, this might
be provided by the redemption protocol in <xref target="HTTP-Authentication"/>.</li>
      </ul>
      <t>Given this configuration and these inputs, the two messages exchanged in
this protocol are described below. This section uses notation described in
<xref section="4" sectionFormat="comma" target="OPRF"/>, including SerializeElement and DeserializeElement,
SerializeScalar and DeserializeScalar, and DeriveKeyPair.</t>
      <section anchor="private-request">
        <name>Client-to-Issuer Request</name>
        <t>The Client first creates a context as follows:</t>
        <artwork><![CDATA[
client_context = SetupVOPRFClient(0x0004, pkI)
]]></artwork>
        <t>Here, 0x0004 is the two-octet identifier corresponding to the
OPRF(P-384, SHA-384) ciphersuite in <xref target="OPRF"/>. SetupVOPRFClient
is defined in <xref section="3.2" sectionFormat="comma" target="OPRF"/>.</t>
        <t>The Client then creates an issuance request message for a random value <tt>nonce</tt>
using the input challenge and Issuer key identifier as follows:</t>
        <artwork><![CDATA[
nonce = random(32)
context = SHA256(challenge)
token_input = concat(0x0001, nonce, context, key_id)
blind, blinded_element = client_context.Blind(token_input)
]]></artwork>
        <t>The Blind function is defined in <xref section="3.3.2" sectionFormat="comma" target="OPRF"/>.
If the Blind function fails, the Client aborts the protocol. Otherwise,
the Client then creates a TokenRequest structured as follows:</t>
        <artwork><![CDATA[
struct {
   uint16_t token_type = 0x0001;
   uint8_t token_key_id;
   uint8_t blinded_msg[Ne];
} TokenRequest;
]]></artwork>
        <t>The structure fields are defined as follows:</t>
        <ul spacing="normal">
          <li>"token_type" is a 2-octet integer, which matches the type in the challenge.</li>
          <li>"token_key_id" is the least significant byte of the <tt>key_id</tt> in network byte order (in other words, the last 8 bits of <tt>key_id</tt>).</li>
          <li>"blinded_msg" is the Ne-octet blinded message defined above, computed as
<tt>SerializeElement(blinded_element)</tt>. Ne is as defined in <xref section="4" sectionFormat="comma" target="OPRF"/>.</li>
        </ul>
        <t>The values <tt>token_input</tt> and <tt>blinded_element</tt> are stored locally and used later
as described in <xref target="finalization"/>. The Client then generates an HTTP POST request
to send to the Issuer, with the TokenRequest as the body. The media type for
this request is "message/token-request". An example request is shown below.</t>
        <artwork><![CDATA[
:method = POST
:scheme = https
:authority = issuer.example.net
:path = /example-token-request
accept = message/token-response
cache-control = no-cache, no-store
content-type = message/token-request
content-length = <Length of TokenRequest>

<Bytes containing the TokenRequest>
]]></artwork>
        <t>Upon receipt of the request, the Issuer validates the following conditions:</t>
        <ul spacing="normal">
          <li>The TokenRequest contains a supported token_type.</li>
          <li>The TokenRequest.token_key_id corresponds to a key ID of a Public Key owned by the issuer.</li>
          <li>The TokenRequest.blinded_request is of the correct size.</li>
        </ul>
        <t>If any of these conditions is not met, the Issuer MUST return an HTTP 400 error
to the client.</t>
      </section>
      <section anchor="private-response">
        <name>Issuer-to-Client Response</name>
        <t>Upon receipt of a TokenRequest, the Issuer tries to deseralize TokenRequest.blinded_msg
using DeserializeElement from <xref section="2.1" sectionFormat="of" target="OPRF"/>, yielding <tt>blinded_element</tt>.
If this fails, the Issuer MUST return an HTTP 400 error to the client. Otherwise, if the
Issuer is willing to produce a token token to the Client, the Issuer completes the issuance
flow by computing a blinded response as follows:</t>
        <artwork><![CDATA[
server_context = SetupVOPRFServer(0x0004, skI, pkI)
evaluate_element, proof = server_context.Evaluate(skI, blinded_element)
]]></artwork>
        <t>SetupVOPRFServer is in <xref section="3.2" sectionFormat="comma" target="OPRF"/> and Evaluate is defined in
<xref section="3.3.2" sectionFormat="comma" target="OPRF"/>. The Issuer then creates a TokenResponse structured
as follows:</t>
        <artwork><![CDATA[
struct {
   uint8_t evaluate_msg[Nk];
   uint8_t evaluate_proof[Ns+Ns];
} TokenResponse;
]]></artwork>
        <t>The structure fields are defined as follows:</t>
        <ul spacing="normal">
          <li>"evaluate_msg" is the Ne-octet evaluated messaged, computed as
<tt>SerializeElement(evaluate_element)</tt>.</li>
          <li>"evaluate_proof" is the (Ns+Ns)-octet serialized proof, which is a pair of Scalar values,
computed as <tt>concat(SerializeScalar(proof[0]), SerializeScalar(proof[1]))</tt>,
where Ns is as defined in <xref section="4" sectionFormat="comma" target="OPRF"/>.</li>
        </ul>
        <t>The Issuer generates an HTTP response with status code 200 whose body consists
of TokenResponse, with the content type set as "message/token-response".</t>
        <artwork><![CDATA[
:status = 200
content-type = message/token-response
content-length = <Length of TokenResponse>

<Bytes containing the TokenResponse>
]]></artwork>
      </section>
      <section anchor="finalization">
        <name>Finalization</name>
        <t>Upon receipt, the Client handles the response and, if successful, deserializes
the body values TokenResponse.evaluate_response and TokenResponse.evaluate_proof,
yielding <tt>evaluated_element</tt> and <tt>proof</tt>. If deserialization of either value fails,
the Client aborts the protocol. Otherwise, the Client processes the response as
follows:</t>
        <artwork><![CDATA[
authenticator = client_context.Finalize(token_input, blind, evaluated_element, blinded_element, proof)
]]></artwork>
        <t>The Finalize function is defined in <xref section="3.3.2" sectionFormat="comma" target="OPRF"/>. If this
succeeds, the Client then constructs a Token as follows:</t>
        <artwork><![CDATA[
struct {
    uint16_t token_type = 0x0001
    uint8_t nonce[32];
    uint8_t challenge_digest[32];
    uint8_t token_key_id[32];
    uint8_t authenticator[Nk];
} Token;
]]></artwork>
        <t>Otherwise, the Client aborts the protocol.</t>
      </section>
      <section anchor="issuer-configuration">
        <name>Issuer Configuration</name>
        <t>Issuers are configured with Private and Public Key pairs, each denoted skI and
pkI, respectively, used to produce tokens. Each key pair MUST be generated as
follows:</t>
        <artwork><![CDATA[
seed = random(Ns)
(skI, pkI) = DeriveKeyPair(seed, "PrivacyPass")
]]></artwork>
        <t>The key identifier for this specific key pair, denoted <tt>key_id</tt>, is computed
as follows:</t>
        <artwork><![CDATA[
key_id = SHA256(0x0001 || SerializeElement(pkI))
]]></artwork>
      </section>
    </section>
    <section anchor="public-flow">
      <name>Issuance Protocol for Publicly Verifiable Tokens</name>
      <t>This section describes a variant of the issuance protocol in <xref target="private-flow"/>
for producing publicly verifiable tokens. It differs from the previous variant
in two important ways:</t>
      <ol spacing="normal" type="1"><li>The output tokens are publicly verifiable by anyone with the Issuer public
key.</li>
        <li>The issuance protocol does not admit public or private metadata to bind
additional context to tokens.</li>
      </ol>
      <t>The first property means that any Origin can select a given Issuer to produce tokens, as long
as the Origin has the Issuer public key, without explicit coordination or permission
from the Issuer. This is because the Issuer does not learn the Origin that requested
the token during the issuance protocol.</t>
      <t>Beyond these differences, the publicly verifiable issuance protocol variant is nearly
identical to the privately verifiable issuance protocol variant. In particular, Issuers
provide a Private and Public Key, denoted skI and pkI, respectively, used to produce
tokens as input to the protocol. See <xref target="public-issuer-configuration"/> for how this key
pair is generated.</t>
      <t>Clients provide the following as input to the issuance protocol:</t>
      <ul spacing="normal">
        <li>Issuer name, identifying the Issuer. This is typically a host name that
can be used to construct HTTP requests to the Issuer.</li>
        <li>Issuer Public Key pkI, with a key identifier <tt>key_id</tt> computed as
described in <xref target="public-issuer-configuration"/>.</li>
        <li>Challenge value <tt>challenge</tt>, an opaque byte string. For example, this might
be provided by the redemption protocol in <xref target="HTTP-Authentication"/>.</li>
      </ul>
      <t>Given this configuration and these inputs, the two messages exchanged in
this protocol are described below.</t>
      <section anchor="public-request">
        <name>Client-to-Issuer Request</name>
        <t>The Client first creates an issuance request message for a random value
<tt>nonce</tt> using the input challenge and Issuer key identifier as follows:</t>
        <artwork><![CDATA[
nonce = random(32)
context = SHA256(challenge)
token_input = concat(0x0002, nonce, context, key_id)
blinded_msg, blind_inv = rsabssa_blind(pkI, token_input)
]]></artwork>
        <t>The rsabssa_blind function is defined in <xref section="5.1.1." sectionFormat="comma" target="BLINDRSA"/>.
The Client then creates a TokenRequest structured as follows:</t>
        <artwork><![CDATA[
struct {
   uint16_t token_type = 0x0002
   uint8_t token_key_id;
   uint8_t blinded_msg[Nk];
} TokenRequest;
]]></artwork>
        <t>The structure fields are defined as follows:</t>
        <ul spacing="normal">
          <li>"token_type" is a 2-octet integer, which matches the type in the challenge.</li>
          <li>"token_key_id" is the least significant byte of the <tt>key_id</tt> in network byte order (in other words, the last 8 bits of <tt>key_id</tt>).</li>
          <li>"blinded_msg" is the Nk-octet request defined above.</li>
        </ul>
        <t>The Client then generates an HTTP POST request to send to the Issuer,
with the TokenRequest as the body. The media type for this request
is "message/token-request". An example request is shown below, where
Nk = 512.</t>
        <artwork><![CDATA[
:method = POST
:scheme = https
:authority = issuer.example.net
:path = /example-token-request
accept = message/token-response
cache-control = no-cache, no-store
content-type = message/token-request
content-length = <Length of TokenRequest>

<Bytes containing the TokenRequest>
]]></artwork>
        <t>Upon receipt of the request, the Issuer validates the following conditions:</t>
        <ul spacing="normal">
          <li>The TokenRequest contains a supported token_type.</li>
          <li>The TokenRequest.token_key_id corresponds to a key ID of a Public Key owned by the issuer.</li>
          <li>The TokenRequest.blinded_msg is of the correct size.</li>
        </ul>
        <t>If any of these conditions is not met, the Issuer MUST return an HTTP 400 error
to the Client, which will forward the error to the client.</t>
      </section>
      <section anchor="public-response">
        <name>Issuer-to-Client Response</name>
        <t>If the Issuer is willing to produce a token token to the Client, the Issuer
completes the issuance flow by computing a blinded response as follows:</t>
        <artwork><![CDATA[
blind_sig = rsabssa_blind_sign(skI, TokenRequest.blinded_rmsg)
]]></artwork>
        <t>This is encoded and transmitted to the client in the following TokenResponse structure:</t>
        <artwork><![CDATA[
struct {
   uint8_t blind_sig[Nk];
} TokenResponse;
]]></artwork>
        <t>The rsabssa_blind_sign function is defined in <xref section="5.1.2." sectionFormat="comma" target="BLINDRSA"/>.
The Issuer generates an HTTP response with status code 200 whose body consists
of TokenResponse, with the content type set as "message/token-response".</t>
        <artwork><![CDATA[
:status = 200
content-type = message/token-response
content-length = <Length of TokenResponse>

<Bytes containing the TokenResponse>
]]></artwork>
      </section>
      <section anchor="finalization-1">
        <name>Finalization</name>
        <t>Upon receipt, the Client handles the response and, if successful, processes the
body as follows:</t>
        <artwork><![CDATA[
authenticator = rsabssa_finalize(pkI, nonce, blind_sig, blind_inv)
]]></artwork>
        <t>The rsabssa_finalize function is defined in <xref section="5.1.3." sectionFormat="comma" target="BLINDRSA"/>.
If this succeeds, the Client then constructs a Token as described in
<xref target="HTTP-Authentication"/> as follows:</t>
        <artwork><![CDATA[
struct {
    uint16_t token_type = 0x0002
    uint8_t nonce[32];
    uint8_t challenge_digest[32];
    uint8_t token_key_id[32];
    uint8_t authenticator[Nk];
} Token;
]]></artwork>
        <t>Otherwise, the Client aborts the protocol.</t>
      </section>
      <section anchor="public-issuer-configuration">
        <name>Issuer Configuration</name>
        <t>Issuers are configured with Private and Public Key pairs, each denoted skI and
pkI, respectively, used to produce tokens. Each key pair SHALL be generated as
as specified in FIPS 186-4 <xref target="DSS"/>.</t>
        <t>The key identifier for a keypair (skI, pkI), denoted <tt>key_id</tt>, is computed as
SHA256(encoded_key), where encoded_key is a DER-encoded SubjectPublicKeyInfo
(SPKI) object carrying pkI. The SPKI object MUST use the RSASSA-PSS OID <xref target="RFC5756"/>,
which specifies the hash algorithm and salt size. The salt size MUST match the
output size of the hash function associated with the public key and token type.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security considerations</name>
      <t>This document outlines how to instantiate the Issuance protocol
based on the VOPRF defined in <xref target="OPRF"/> and blind RSA protocol defnied in
<xref target="BLINDRSA"/>. All security considerations described in the VOPRF document also
apply in the Privacy Pass use-case. Considerations related to broader privacy
and security concerns in a multi-Client and multi-Issuer setting are deferred
to the Architecture document <xref target="I-D.ietf-privacypass-architecture"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA considerations</name>
      <section anchor="token-type">
        <name>Token Type</name>
        <t>This document updates the "Token Type" Registry with the following values.</t>
        <table anchor="aeadid-values">
          <name>Token Types</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Name</th>
              <th align="left">Publicly Verifiable</th>
              <th align="left">Public Metadata</th>
              <th align="left">Private Metadata</th>
              <th align="left">Nk</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x0001</td>
              <td align="left">VOPRF (P-384, SHA-384)</td>
              <td align="left">N</td>
              <td align="left">N</td>
              <td align="left">N</td>
              <td align="left">48</td>
              <td align="left">
                <xref target="private-flow"/></td>
            </tr>
            <tr>
              <td align="left">0x0002</td>
              <td align="left">Blind RSA (SHA-384, 2048-bit)</td>
              <td align="left">Y</td>
              <td align="left">N</td>
              <td align="left">N</td>
              <td align="left">256</td>
              <td align="left">
                <xref target="public-flow"/></td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="media-types">
        <name>Media Types</name>
        <t>This specification defines the following protocol messages, along with their
corresponding media types:</t>
        <ul spacing="normal">
          <li>TokenRequest: "message/token-request"</li>
          <li>TokenResponse: "message/token-response"</li>
        </ul>
        <t>The definition for each media type is in the following subsections.</t>
        <section anchor="messagetoken-request-media-type">
          <name>"message/token-request" media type</name>
          <dl>
            <dt>Type name:</dt>
            <dd>
              <t>message</t>
            </dd>
            <dt>Subtype name:</dt>
            <dd>
              <t>token-request</t>
            </dd>
            <dt>Required parameters:</dt>
            <dd>
              <t>N/A</t>
            </dd>
            <dt>Optional parameters:</dt>
            <dd>
              <t>None</t>
            </dd>
            <dt>Encoding considerations:</dt>
            <dd>
              <t>only "8bit" or "binary" is permitted</t>
            </dd>
            <dt>Security considerations:</dt>
            <dd>
              <t>see <xref target="security-considerations"/></t>
            </dd>
            <dt>Interoperability considerations:</dt>
            <dd>
              <t>N/A</t>
            </dd>
            <dt>Published specification:</dt>
            <dd>
              <t>this specification</t>
            </dd>
            <dt>Applications that use this media type:</dt>
            <dd>
              <t>N/A</t>
            </dd>
            <dt>Fragment identifier considerations:</dt>
            <dd>
              <t>N/A</t>
            </dd>
            <dt>Additional information:</dt>
            <dd>
              <dl>
                <dt>Magic number(s):</dt>
                <dd>N/A</dd>
                <dt>Deprecated alias names for this type:</dt>
                <dd>N/A</dd>
                <dt>File extension(s):</dt>
                <dd>N/A</dd>
                <dt>Macintosh file type code(s):</dt>
                <dd>N/A</dd>
              </dl>
            </dd>
            <dt>Person and email address to contact for further information:</dt>
            <dd>
              <t>see Authors' Addresses section</t>
            </dd>
            <dt>Intended usage:</dt>
            <dd>
              <t>COMMON</t>
            </dd>
            <dt>Restrictions on usage:</dt>
            <dd>
              <t>N/A</t>
            </dd>
            <dt>Author:</dt>
            <dd>
              <t>see Authors' Addresses section</t>
            </dd>
            <dt>Change controller:</dt>
            <dd>
              <t>IESG</t>
            </dd>
          </dl>
        </section>
        <section anchor="messagetoken-response-media-type">
          <name>"message/token-response" media type</name>
          <dl>
            <dt>Type name:</dt>
            <dd>
              <t>message</t>
            </dd>
            <dt>Subtype name:</dt>
            <dd>
              <t>access-token-response</t>
            </dd>
            <dt>Required parameters:</dt>
            <dd>
              <t>N/A</t>
            </dd>
            <dt>Optional parameters:</dt>
            <dd>
              <t>None</t>
            </dd>
            <dt>Encoding considerations:</dt>
            <dd>
              <t>only "8bit" or "binary" is permitted</t>
            </dd>
            <dt>Security considerations:</dt>
            <dd>
              <t>see <xref target="security-considerations"/></t>
            </dd>
            <dt>Interoperability considerations:</dt>
            <dd>
              <t>N/A</t>
            </dd>
            <dt>Published specification:</dt>
            <dd>
              <t>this specification</t>
            </dd>
            <dt>Applications that use this media type:</dt>
            <dd>
              <t>N/A</t>
            </dd>
            <dt>Fragment identifier considerations:</dt>
            <dd>
              <t>N/A</t>
            </dd>
            <dt>Additional information:</dt>
            <dd>
              <dl>
                <dt>Magic number(s):</dt>
                <dd>N/A</dd>
                <dt>Deprecated alias names for this type:</dt>
                <dd>N/A</dd>
                <dt>File extension(s):</dt>
                <dd>N/A</dd>
                <dt>Macintosh file type code(s):</dt>
                <dd>N/A</dd>
              </dl>
            </dd>
            <dt>Person and email address to contact for further information:</dt>
            <dd>
              <t>see Authors' Addresses section</t>
            </dd>
            <dt>Intended usage:</dt>
            <dd>
              <t>COMMON</t>
            </dd>
            <dt>Restrictions on usage:</dt>
            <dd>
              <t>N/A</t>
            </dd>
            <dt>Author:</dt>
            <dd>
              <t>see Authors' Addresses section</t>
            </dd>
            <dt>Change controller:</dt>
            <dd>
              <t>IESG</t>
            </dd>
          </dl>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <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="HTTP-Authentication" target="https://datatracker.ietf.org/doc/html/draft-pauly-privacypass-auth-scheme-00">
          <front>
            <title>The Privacy Pass HTTP Authentication Scheme</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="I-D.ietf-privacypass-architecture">
          <front>
            <title>Privacy Pass Architectural Framework</title>
            <author fullname="Alex Davidson">
              <organization>LIP</organization>
            </author>
            <author fullname="Jana Iyengar">
              <organization>Fastly</organization>
            </author>
            <author fullname="Christopher A. Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="7" month="March" year="2022"/>
            <abstract>
              <t>   This document specifies the architectural framework for constructing
   secure and anonymity-preserving instantiations of the Privacy Pass
   protocol.  It provides recommendations on how the protocol ecosystem
   should be constructed to ensure the privacy of clients, and the
   security of all participating entities.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-privacypass-architecture-03"/>
        </reference>
        <reference anchor="OPRF">
          <front>
            <title>Oblivious Pseudorandom Functions (OPRFs) using Prime-Order Groups</title>
            <author fullname="Alex Davidson">
              <organization>Brave Software</organization>
            </author>
            <author fullname="Armando Faz-Hernandez">
              <organization>Cloudflare, Inc.</organization>
            </author>
            <author fullname="Nick Sullivan">
              <organization>Cloudflare, Inc.</organization>
            </author>
            <author fullname="Christopher A. Wood">
              <organization>Cloudflare, Inc.</organization>
            </author>
            <date day="30" month="June" year="2022"/>
            <abstract>
              <t>   An Oblivious Pseudorandom Function (OPRF) is a two-party protocol
   between client and server for computing the output of a Pseudorandom
   Function (PRF).  The server provides the PRF secret key, and the
   client provides the PRF input.  At the end of the protocol, the
   client learns the PRF output without learning anything about the PRF
   secret key, and the server learns neither the PRF input nor output.
   An OPRF can also satisfy a notion of 'verifiability', called a VOPRF.
   A VOPRF ensures clients can verify that the server used a specific
   private key during the execution of the protocol.  A VOPRF can also
   be partially-oblivious, called a POPRF.  A POPRF allows clients and
   servers to provide public input to the PRF computation.  This
   document specifies an OPRF, VOPRF, and POPRF instantiated within
   standard prime-order groups, including elliptic curves.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-voprf-10"/>
        </reference>
        <reference anchor="BLINDRSA">
          <front>
            <title>RSA Blind Signatures</title>
            <author fullname="Frank Denis">
              <organization>Fastly Inc.</organization>
            </author>
            <author fullname="Frederic Jacobs">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Christopher A. Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="2" month="February" year="2022"/>
            <abstract>
              <t>   This document specifies the RSA-based blind signature protocol with
   appendix (RSA-BSSA).  RSA blind signatures were first introduced by
   Chaum for untraceable payments [Chaum83].  It extends RSA-PSS
   encoding specified in [RFC8017] to enable blind signature support.

Discussion Venues

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

   Source for this draft and an issue tracker can be found at
   https://github.com/chris-wood/draft-wood-cfrg-blind-signatures.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-rsa-blind-signatures-03"/>
        </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="AUTHSCHEME">
          <front>
            <title>The Privacy Pass HTTP Authentication Scheme</title>
            <author fullname="Tommy Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Steven Valdez">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Christopher A. Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="31" month="January" year="2022"/>
            <abstract>
              <t>   This document defines an HTTP authentication scheme that can be used
   by clients to redeem Privacy Pass tokens with an origin.  It can also
   be used by origins to challenge clients to present an acceptable
   Privacy Pass token.

Discussion Venues

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

   Source for this draft and an issue tracker can be found at
   https://github.com/tfpauly/privacy-proxy.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-pauly-privacypass-auth-scheme-00"/>
        </reference>
        <reference anchor="RFC5756">
          <front>
            <title>Updates for RSAES-OAEP and RSASSA-PSS Algorithm Parameters</title>
            <author fullname="S. Turner" initials="S." surname="Turner">
              <organization/>
            </author>
            <author fullname="D. Brown" initials="D." surname="Brown">
              <organization/>
            </author>
            <author fullname="K. Yiu" initials="K." surname="Yiu">
              <organization/>
            </author>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <author fullname="T. Polk" initials="T." surname="Polk">
              <organization/>
            </author>
            <date month="January" year="2010"/>
            <abstract>
              <t>This document updates RFC 4055.  It updates the conventions for using the RSA Encryption Scheme - Optimal Asymmetric Encryption Padding (RSAES-OAEP) key transport algorithm in the Internet X.509 Public Key Infrastructure (PKI).  Specifically, it updates the conventions for algorithm parameters in an X.509 certificate's subjectPublicKeyInfo field.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5756"/>
          <seriesInfo name="DOI" value="10.17487/RFC5756"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="DSS">
          <front>
            <title>Digital Signature Standard (DSS)</title>
            <author>
              <organization/>
            </author>
            <date month="July" year="2013"/>
          </front>
          <seriesInfo name="National Institute of Standards and Technology" value="report"/>
          <seriesInfo name="DOI" value="10.6028/nist.fips.186-4"/>
        </reference>
      </references>
    </references>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors of this document would like to acknowledge the helpful
feedback and discussions from Benjamin Schwartz, Joseph Salowey, Sofia
Celi, and Tara Whalen.</t>
    </section>
    <section anchor="test-vectors">
      <name>Test Vectors</name>
      <t>This section includes test vectors for the two basic issuance protocols
specified in this document. <xref target="test-vectors-poprf"/> contains test vectors
for token issuance protocol 1 (0x0001), and <xref target="test-vectors-rsa"/> contains
test vectors for token issuance protocol 2 (0x0002).</t>
      <section anchor="test-vectors-poprf">
        <name>Issuance Protocol 1 - VOPRF(P-384, SHA-384)</name>
        <t>The test vector below lists the following values:</t>
        <ul spacing="normal">
          <li>skS: The encoded OPRF private key, serialized using SerializeScalar from <xref section="2.1" sectionFormat="of" target="OPRF"/> and
represented as a hexadecimal string.</li>
          <li>pkS: The encoded OPRF public key, serialized using SerializeElement from <xref section="2.1" sectionFormat="of" target="OPRF"/> and
represented as a hexadecimal string.</li>
          <li>challenge: A random challenge digest, represented as a hexadecimal string.</li>
          <li>nonce: The 32-byte client nonce generated according to <xref target="private-request"/>, represented as a
hexadecimal string.</li>
          <li>blind: The blind used when computing the OPRF blinded message, serialized using SerializeScalar
from <xref section="2.1" sectionFormat="of" target="OPRF"/> and represented as a hexadecimal string.</li>
          <li>token_request: The TokenRequest message constructed according to <xref target="private-request"/>, represented
as a hexadecimal string.</li>
          <li>token_request: The TokenResponse message constructed according to <xref target="private-response"/>, represented
as a hexadecimal string.</li>
          <li>token: The output Token from the protocol, represented as a hexadecimal string.</li>
        </ul>
        <artwork><![CDATA[
skS: 0177781aeced893dccdf80713d318a801e2a0498240fdcf650304bbbfd0f8d3b5c0
cf6cfee457aaa983ec02ff283b7a9
pkS: 022c63f79ac59c0ba3d204245f676a2133bd6120c90d67afa05cd6f8614294b7366
c252c6458300551b79a4911c2590a36
challenge:
a5d46383359ef34e3c4a7b8d1b3165778bffc9b70c9e6a60dd14143e4c9c9fbd
nonce: 5d4799f8338ddc50a6685f83b8ecd264b2f157015229d12b3384c0f199efe7b8
blind: 0322fec505230992256296063d989b59cc03e83184eb6187076d264137622d202
48e4e525bdc007b80d1560e0a6f49d9
token_request: 00011a02861fd50d14be873611cff0131d2c872c79d0260c6763498a2
a3f14ca926009c0f247653406e1d52b68d61b7ed2bac9ea
token_response: 038e3625b6a769668a99680e46cf9479f5dc1e86d57164ab3b4a569d
dfc486bf1485d4916a5194fdc0518d3e8444968421ba36e8144aa7902705ff0f3cf40586
3d69451a2a7ba210cc45760c2f1a6045134d877b39e8bcbbf920e5de4a3372557debf211
765cd969976860bc039f9082d6a3e03f8e891246240173d2cf3d69a4613b0f8415979029
22e74c7a1f2e4639e4
token: 00015d4799f8338ddc50a6685f83b8ecd264b2f157015229d12b3384c0f199efe
7b8742cdfb0ed756ea680868ef109a280a393e001d2fa56b1be46ecb31fa25e76731a5b1
d698ea7ab843b8e8a71ed9b2fffa70457a43a8fc687939424b29a7554b40fde130ab7a82
2715909cb73f99a45b640ca1c85180ba9ca1a40bab8b664406a34bcbc63b5e2e5c455cea
00001a968f7
]]></artwork>
      </section>
      <section anchor="test-vectors-rsa">
        <name>Issuance Protocol 2 - Blind RSA, 4096</name>
        <t>The test vector below lists the following values:</t>
        <ul spacing="normal">
          <li>skS: The PEM-encoded PKCS#8 RSA private key used for signing tokens, represented
as a hexadecimal string.</li>
          <li>pkS: The DER-encoded SubjectPublicKeyInfo object carrying the public key corresponding
to skS, as described in <xref target="public-issuer-configuration"/>, represented as a hexadecimal string.</li>
          <li>challenge: A random challenge digest, represented as a hexadecimal string.</li>
          <li>nonce: The 32-byte client nonce generated according to <xref target="public-request"/>, represented as a
hexadecimal string.</li>
          <li>blind: The blind used when computing the blind RSA blinded message, represented as a hexadecimal string.</li>
          <li>salt: The randomly generated 48-byte salt used when encoding the blinded token request message,
represented as a hexadecimal string.</li>
          <li>token_request: The TokenRequest message constructed according to <xref target="public-request"/>, represented
as a hexadecimal string.</li>
          <li>token_request: The TokenResponse message constructed according to <xref target="public-response"/>, represented
as a hexadecimal string.</li>
          <li>token: The output Token from the protocol, represented as a hexadecimal string.</li>
        </ul>
        <artwork><![CDATA[
skS: 2d2d2d2d2d424547494e2050524956415445204b45592d2d2d2d2d0a4d494945765
149424144414e42676b71686b6947397730424151454641415343424b63776767536a416
74541416f49424151444c4775317261705831736334420a4f6b7a38717957355379356b6
f6a41303543554b66717444774e38366a424b5a4f76457245526b49314c527876734d645
3327961326333616b4745714c756b440a556a35743561496b3172417643655844644e445
03442325055707851436e6969396e6b492b6d67725769744444494871386139793137586
e6c5079596f784f530a646f6558563835464f314a752b62397336356d586d34516a75513
94559614971383371724450567a50335758712b524e4d636379323269686763624c766d4
2390a6a41355334475666325a6c74785954736f4c364872377a58696a4e3946374862716
5676f753967654b524d584645352f2b4a3956595a634a734a624c756570480a544f72535
a4d4948502b5358514d4166414f454a4547426d6d4430683566672f43473475676a79486
e4e51383733414e4b6a55716d3676574574413872514c620a4530742b496c706641674d4
241414543676745414c7a4362647a69316a506435384d6b562b434c6679665351322b726
6486e7266724665502f566344787275690a3270316153584a596962653645532b4d622f4
d4655646c485067414c773178513457657266366336444373686c6c784c5753563847734
2737663386f364750320a6359366f777042447763626168474b556b5030456b623953305
84c4a57634753473561556e484a585237696e7834635a6c666f4c6e72455165366855787
34d710a6230644878644844424d644766565777674b6f6a4f6a70532f39386d455579375
6422f3661326c7265676c766a632f326e4b434b7459373744376454716c47460a787a414
261577538364d435a342f5131334c762b426566627174493973715a5a776a72645568514
83856437872793251564d515751696e57684174364d7154340a53425354726f6c5a7a777
2716a65384d504a393175614e4d6458474c63484c49323673587a76374b53514b4267514
4766377735055557641395a325a583958350a6d49784d54424e6445467a56625550754b4
b413179576e31554d444e63556a71682b7a652f376b337946786b6830514633316271363
0654c393047495369414f0a354b4f574d39454b6f2b7841513262614b314d664f5931472
b386a7a42585570427339346b353353383879586d4b366e796467763730424a385a68356
66b55710a5732306f5362686b686a5264537a48326b52476972672b5553774b426751445
a4a4d6e7279324578612f3345713750626f737841504d69596e6b354a415053470a79327
a305a375455622b7548514f2f2b78504d376e433075794c494d44396c61544d48776e367
3372f4c62476f455031575267706f59482f4231346b2f526e360a667577524e3632496f3
97463392b41434c745542377674476179332b675277597453433262356564386c4969656
774546b6561306830754453527841745673330a6e356b796132513976514b4267464a754
67a4f5a742b7467596e576e51554567573850304f494a45484d45345554644f637743784
b7248527239334a6a7546320a453377644b6f546969375072774f59496f614a5468706a5
0634a62626462664b792b6e735170315947763977644a724d6156774a637649707756367
6315570660a56744c61646d316c6b6c7670717336474e4d386a6e4d30587833616a6d6d6
e66655739794758453570684d727a4c4a6c394630396349324c416f4742414e58760a756
75658727032627354316f6b6436755361427367704a6a5065774e526433635a4b397a306
153503144544131504e6b7065517748672f2b36665361564f487a0a79417844733968355
272627852614e6673542b7241554837783153594456565159564d68555262546f5a65364
72f6a716e544333664e6648563178745a666f740a306c6f4d4867776570362b53494d436
f6565325a6374755a5633326c63496166397262484f633764416f47416551386b3853494
c4e4736444f413331544535500a6d3031414a49597737416c5233756f2f524e61432b785
96450553354736b75414c78786944522f57734c455142436a6b46576d6d4a41576e51554
474626e594e0a536377523847324a36466e72454374627479733733574156476f6f465a6
e636d504c50386c784c79626c534244454c79615a762f624173506c4d4f39624435630a4
a2b4e534261612b6f694c6c31776d4361354d43666c633d0a2d2d2d2d2d454e442050524
956415445204b45592d2d2d2d2d0a
pkS: 30820152303d06092a864886f70d01010a3030a00d300b060960864801650304020
2a11a301806092a864886f70d010108300b0609608648016503040202a20302013003820
10f003082010a0282010100cb1aed6b6a95f5b1ce013a4cfcab25b94b2e64a23034e4250
a7eab43c0df3a8c12993af12b111908d4b471bec31d4b6c9ad9cdda90612a2ee903523e6
de5a224d6b02f09e5c374d0cfe01d8f529c500a78a2f67908fa682b5a2b430c81eaf1af7
2d7b5e794fc98a3139276879757ce453b526ef9bf6ceb99979b8423b90f4461a22af37aa
b0cf5733f7597abe44d31c732db68a181c6cbbe607d8c0e52e0655fd9996dc584eca0be8
7afbcd78a337d17b1dba9e828bbd81e291317144e7ff89f55619709b096cbb9ea474cead
264c2073fe49740c01f00e109106066983d21e5f83f086e2e823c879cd43cef700d2a352
a9babd612d03cad02db134b7e225a5f0203010001
challenge:
3f5a1c30d13f860622458ce836d8af325378054370fe8a3d771eebd67d4d810d
nonce: c0fcbbb243d8f5d4f661dbdefca95879b39aeccb77b7db731b59c09688773125
blind: 04d00c700128b4b201b4bec4f05d942bc903d49c26568b5956e0827590d2e4b43
570105ae492f655d41a3d68f1cc6a9a2895c36fd45c88239257f2e6cee5bd88e7d870f35
67069d78f8b85947c7ab123b16c9f3b76d856112802dd0fefa800a9c3807fbb5d949481b
4f7a21da0269f17611b93dfa7197e87ef9c1ef9c2fd0f86119917cdf01284038435f2df3
f8ae2935ae0ef5440b3b4ac12fed83a03bc494abaa87241d624d2dcb0c6a64422eb63dbf
ba0193161648e5b2afbdf3140901840c7d08a0e2953320fffa09641500122ba81c5907e7
ebd4d2384221ddb99439c2465138b98348b58a5f89b4e05b70856a270e1f5308512e368c
fe6dfe4cf3759ed
salt: 4daf07bc96a829736ce6386a4d3ed988192ea4f0acb3ed715dca2ae688c16ad346
ee5e2b3dd26eb2868639a778e3bc5d
token_request: 0002ca832fffabdd44e2cd54e5e24d74519d297608aec9ab88e26b732
adcb382781e7e2657c8b94751b9fa6b2ed02cec383f8cd04e9627d5b62a7f1b7ea16b81e
46f35637cca49f8990d5359f8a7dcac1ba58fb685d4b32a67621d368cc112197d4f84ee5
241c359299cb5fc41182bd65bba112f35a4073d1231290447fb884888ba84eb5b4602534
787aa1e167bc1ddcceb7fb5ad43e2b242fd4b4939349897cfb911cf0f3785847edaeaca6
350c16cb05b7882ec076a3adde7c361f54d6eb67ec239aeafe8a4816b29e4c6aa8bf2873
ba36ec6e2b9596aa508b5e34543a469286be2404f1f481f6a274a2afb429d62377f7ab6d
e56379d2c42f7205e3bf1c74d3159
token_response: 6e7d5334765bea44ea43b81ae8f41334fdac47b3dfaaeb2c3b99f42a
67d8239592ac4fa129a938e139bf052d85804bdaa90f7f54fdfa34d6efeaea0ccc15a500
fb2987b534d0558e8d32df68b3533f6cbc953dabcfff2ef6b6af336c1128f607f0796190
6a2fed919691340e751a8e2173e674569f7e4beb7ad0ee5c65ce82ad477d3e44b3755bcd
0f168ab85ce662d3f87c5634be036382d6ad4ab870ab975e8bffd0b95bcf457dc83337ff
ea85b7c77d44e5cb4bddc5aecfc958cc822cc53ded3da699af86bfad3054fe49da8eeb55
162e444a3b4d438f9e3cbadd50cba56b4f3f0718a65e7d8dfc40762cdb9962edc731f6a7
ec8641cbf98a0ec9cdf8b7f6
token: 0002c0fcbbb243d8f5d4f661dbdefca95879b39aeccb77b7db731b59c09688773
125ad76ab53adc2ca44e4eaae3d71b9bf3fc9332122faeef07cb70d9e04da68c6a7ca572
f8982a9ca248a3056186322d93ca147266121ddeb5632c07f1f71cd27080d1f816364e5d
4d516d2f3e80366e56edc1de4ba0d7aed2675c15156d774b311778091bf5f2aea9926156
2289459a41c5739dec6dc42447744fe07c53c9d090f053263d019255cdfc27739132bd68
21ad49f1a98db6873319d04c04703d74a8fe1d0806b2a25b46246c5bb2ff927463b03152
589068389df89494c6d82f3b92be773a9fe6bc1fed9cbf26bdfbae1ff369f20d0267cdd2
0f3bcba30f8b0c0e9d9a1a39a40156b0614030d5099aa36f085347681aef502f3d081b36
cd79f7ea14df1ca9694320fc44ccbc7c5d90aeedc915af3ac11a3baf562d38c8213e39f6
731fa5e701697d0bfbfcfc83b447945b351115a20770370226b52a19df939f3080e
]]></artwork>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+2c63YcR3Lnv9dT1EIfTB4DYN0vGGl2IJKyaEskLVD28RnP
kbIys4A2G91wV4MUJNLPsi+wL7H7YvuLzKrq6gtvmll7zq5IgWrUJTMyLv/4
R2RVn5ycBOvZem7PwqPnq9krpe/C56rrwiddd6sW2obPV8v1Ui/nR4FqmpV9
dRYevC4wS71Q14xjVqpdn8zsuj258VfecCGf/TgnUR4YtbZngebfy+Xq7iyc
LdplEMxuVmfhenXbrZMoqqMkeGnvXi9X5ix8sljb1cKuTx7J2EHQrdXC/KDm
ywXz3dkuuJmdhX9k+OOwW67WK9t2fLq7lg9/CgJ1u75ars6C8CQI+TNbdGfh
xWn40M5n7oCX+2LZ/u//qTZHl6vLs/DhfHlr2rlaWXdMz9aI+82sa5YLf2B5
u1jLEp4z7+2lmruj9lrN5mdhpxnrD3oc4lQvr7eEOD8NH6lXM9P1o3lBzuf2
p+3jTpQvV+qVFSnXr3+dOIpxT00/bp384VIOH5LpK/XzydcoHCXbn6eCra45
tDxw/pCuOuxg12dhHMXhi+XrRWcXJrxYTwS/UIvwqxXeM+v0clv+7xeztZXL
8ZEuXLbh+bVdzbTaWs/qulU/X71PwVj5n9R8exUXa/vKLqbHnfR/t1xezm34
zTcPt0z4yl32B321Wl7Pbq9PuXZrhoenorF/Xi7NZIqHV6tZt17eXNnV1tn/
EjVp9foPV1bdzBaXzWzdnRJHQbBYYsv17BVhGIbfffUwieNaPn794sXzk3Pi
xS7WjLOeLRdnbrAeJF5c2e34lxvC7RvCC31lr/3q1mp1Kau7Wq9vurMHD4h8
tV4p/dKuTgUiRJ8PgI4HV+vr+QMPHTfqdn63hR0SwCedG/Ukihj4ycmj0z2E
USt9hTr0+nbFsoKTk5NQNZ3MxoJfXM26kIlurxE07G6snrUzdLZ+vQxfqdVM
LdZOgSzE/7xenlzbrlOXNpwNWDhgWNAuV9tqWC9fWnEHEInb1VouNbfaDmf8
QWweOonXdn4XvMJU7Uw1c3scEkr8LNfiMR+4/7aZz/T8LtzcfhqIWcaBJ2f2
RQ+XN2IjNee67vbmBpzo+jGDa7tWYqDQ3K7wFqeHcYB2vnx96rV6PTNmboPg
MwFmJ6cMGQR7zjFOygdgh9WosLcYlrOdXb2SeTw+z3523oMU+kotZt31KcOH
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
389euu8YUpubfUll5zft7TxorTUygdOhmXX61j2f0D9I8qVd/Ju6nrmvxHut
Vuufj8O/X3b25iq8gJu8lq13/7WTgXztpH9R7gVxHP7zlZrbRf+1TN0aIixv
mXc7j8j4N/aECck1r/w14xcmyOapfwt8//3vYKtI3/5SIvkOCflGgX68kxv/
zV+T79qYzBaMr64feDAhDvtnh+77pe0MvOrUZNhgfxHvGDbph03ub9oo288d
xeGJZ9l7JPuXzw6szXvCZH6/ueO+r2GXZvZfWyN8sXt54b+5aGgaOF4/PIfj
HmmZPLvrt4N335h831P0rj8TUlm678pb9A/zKnzvJ+pLPbsGovpte6S5OSzN
5PmadwvzMc/0f5o0Y6tNvmGq3x7fbID79tvxxw7m2nl+cWly4jYr+4a73x6f
dKC0do8Muc2HTRU0bPK/3Z+SJR2e1DUc/KS+9+DaYq99g3PYhnDPEomed14A
+7DlmfdD2v5Y9fim5WooXPb2xIZnFca+7KcqSr5i7NdM3/e+P2n+flvpkwU4
mz6F52vKybN8w7fTfJRGfeNZwimKy7KsYmW1NVWdGq1NW0VlnJo0rlQVxTZR
UVZXSRa1RrdFHqVR1jRNa6K2MmmT6yjgsCZLZHmplKqr1OooadukSptS1YGL
2ihJdJG2Za10XuuoUamhHk+yvC3KQiVxmjamiJNI15EpStWqKNemaKsizpI6
a8q0KAKd5AyS5VUaRXkeNwyW1XHM4TpSKefHgAxUbrIirdI0r22bZjbVmSqb
ysRNGhc5C27aVtdNyXy2UEVkTJzFWWozXeu6bUzQxyPDlHXdMlBljM4jVRRV
zq9NZbVJiqxJ2jgvozhPktrEScN1mY7auGZay4RBH2JRmiStZYA8SaO6TpK8
SOoiKlJTV3WDRnSU2gqNZ7Yp4qqMykKGj9OySBI0lQRZZTObJ3ljdBQxcmTi
vIgsErVZbepgx0UlJcUqSlBga3IuzhpboUXU1bZRnMYm0VWZ6LI2UVJEGiuk
WFklgUrbONOq5miEpdokK4s8zaLCxiZPmqLCTk1pTQInqK0aJx56BVFa2bRA
0EKVRY2+VF0XVWQzfKRGm21udGyrwuRlXGSqSZtM5UVtAtPqrCoaZq9Qex0X
Ko/rDKeL8hhPs1WWZYyUJTHeU9gqzjKlyjpKyihnTW2q2yzKqyJITVFneawS
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

-->

</rfc>
