<?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-rfc2629 version 1.5.17 -->
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-privacypass-protocol-03" category="info" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.11.1 -->
  <front>
    <title abbrev="PP Issuance">Privacy Pass Issuance Protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-privacypass-protocol-03"/>
    <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="March" day="07"/>
    <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" numbered="true" toc="default">
      <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" format="default"/>.</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" format="default"/>, and one that is
publicly verifiable based on the blind RSA signature scheme
<xref target="BLINDRSA" format="default"/>.</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" format="default"/>.</t>
    </section>
    <section anchor="terminology" numbered="true" toc="default">
      <name>Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <t>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" numbered="true" toc="default">
      <name>Configuration</name>
      <t>Issuers MUST provide one parameter 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>
      </ol>
      <t>The Issuer parameters can be obtained from an Issuer via a directory object, which is a JSON
object whose field names and values are raw values and URLs for the parameters.</t>
      <table align="center">
        <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>
        </tbody>
      </table>
      <t>As an example, the Issuer's JSON directory could look like:</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
 {
    "issuer-request-uri": "https://issuer.example.net/example-token-request"
 }
]]></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" numbered="true" toc="default">
      <name>Token Challenge Requirements</name>
      <t>Clients receive challenges for tokens, as described in <xref target="AUTHSCHEME" format="default"/>.
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" numbered="true" toc="default">
      <name>Issuance Protocol for Privately Verifiable Tokens with Public Metadata</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 name="" type="" align="left" alt=""><![CDATA[
   Origin          Client                   Issuer
                (pkI, info)            (skI, pkI, info)
                  +------------------------------------\
  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" format="default"/>
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" format="default"/>.</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" format="default"/>.</li>
      </ul>
      <t>Both Client and Issuer also share a common public string called <tt>info</tt>.</t>
      <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" format="default"/>, including SerializeElement and DeserializeElement,
SerializeScalar and DeserializeScalar, and DeriveKeyPair.</t>
      <section anchor="private-request" numbered="true" toc="default">
        <name>Client-to-Issuer Request</name>
        <t>The Client first creates a context as follows:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
client_context = SetupPOPRFClient(0x0004, pkI)
]]></artwork>
        <t>Here, 0x0004 is the two-octet identifier corresponding to the
OPRF(P-384, SHA-384) ciphersuite in <xref target="OPRF" format="default"/>. SetupPOPRFClient
is defined in <xref section="3.2" sectionFormat="comma" target="OPRF" format="default"/>.</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 name="" type="" align="left" alt=""><![CDATA[
nonce = random(32)
context = SHA256(challenge)
token_input = concat(0x0001, nonce, context, key_id)
blind, blinded_msg, tweaked_key = client_context.Blind(nonce, info)
]]></artwork>
        <t>The Blind function is defined in <xref section="3.3.3" sectionFormat="comma" target="OPRF" format="default"/>.
If the Blind function fails, the Client aborts the protocol. Otherwise,
the Client then creates a TokenRequest structured as follows:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
struct {
   uint16_t token_type = 0x0001;
   uint8_t token_key_id;
   uint8_t blinded_request[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>.</li>
          <li>"blinded_request" is the Ne-octet blinded message defined above, computed as
<tt>SerializeElement(blinded_msg)</tt>. Ne is as defined in <xref section="4" sectionFormat="comma" target="OPRF" format="default"/>.</li>
        </ul>
        <t>The value <tt>tweaked_key</tt> is stored locally and used later as described in <xref target="finalization" format="default"/>.
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 name="" type="" align="left" alt=""><![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="private-response" numbered="true" toc="default">
        <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 name="" type="" align="left" alt=""><![CDATA[
server_context = SetupPOPRFServer(0x0004, skI, pkI)
evaluate_msg, proof = server_context.Evaluate(skI,
    TokenRequest.blinded_message, info)
]]></artwork>
        <t>SetupPOPRFServer is in <xref section="3.2" sectionFormat="comma" target="OPRF" format="default"/> and Evaluate is
defined in <xref section="3.3.3" sectionFormat="comma" target="OPRF" format="default"/>. The Issuer then creates
a TokenResponse structured as follows:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
struct {
   uint8_t evaluate_response[Nk];
   uint8_t evaluate_proof[Ns+Ns];
} TokenResponse;
]]></artwork>
        <t>The structure fields are defined as follows:</t>
        <ul spacing="normal">
          <li>"evaluate_response" is the Ne-octet evaluated messaged, computed as
<tt>SerializeElement(evaluated_msg)</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" format="default"/>.</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 name="" type="" align="left" alt=""><![CDATA[
:status = 200
content-type = message/token-response
content-length = <Length of TokenResponse>

<Bytes containing the TokenResponse>
]]></artwork>
      </section>
      <section anchor="finalization" numbered="true" toc="default">
        <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.
If deserialization of any value fails, the Client aborts the protocol.
Otherwise, when deserialization yields <tt>evaluated_msg</tt> and <tt>proof</tt>, the Client
processes the response as follows:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
authenticator = client_context.Finalize(context, blind, pkI,
  evaluated_msg, blinded_msg, info, tweaked_key)
]]></artwork>
        <t>The Finalize function is defined in <xref section="3.3.3" sectionFormat="comma" target="OPRF" format="default"/>. If this
succeeds, the Client then constructs a Token as follows:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
struct {
    uint16_t token_type = 0x0001
    uint8_t nonce[32];
    uint8_t context[32];
    uint8_t key_id[32];
    uint8_t authenticator[Nk];
} Token;
]]></artwork>
        <t>Otherwise, the Client aborts the protocol.</t>
      </section>
      <section anchor="issuer-configuration" numbered="true" toc="default">
        <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 name="" type="" align="left" alt=""><![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 name="" type="" align="left" alt=""><![CDATA[
key_id = SHA256(0x0001 || SerializeElement(pkI))
]]></artwork>
      </section>
    </section>
    <section anchor="public-flow" numbered="true" toc="default">
      <name>Issuance Protocol for Publicly Verifiable Tokens</name>
      <t>This section describes a variant of the issuance protocol in <xref target="private-flow" format="default"/>
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; and</li>
        <li>The issuance protocol does not admit public or private metadata to bind
additional context to tokens.</li>
      </ol>
      <t>Otherwise, this variant is nearly identical. 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" format="default"/> 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" format="default"/>.</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" format="default"/>.</li>
      </ul>
      <t>Given this configuration and these inputs, the two messages exchanged in
this protocol are described below.</t>
      <section anchor="public-request" numbered="true" toc="default">
        <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 name="" type="" align="left" alt=""><![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" format="default"/>.
The Client then creates a TokenRequest structured as follows:</t>
        <artwork name="" type="" align="left" alt=""><![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>.</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 name="" type="" align="left" alt=""><![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" numbered="true" toc="default">
        <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 name="" type="" align="left" alt=""><![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 name="" type="" align="left" alt=""><![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" format="default"/>.
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 name="" type="" align="left" alt=""><![CDATA[
:status = 200
content-type = message/token-response
content-length = <Length of TokenResponse>

<Bytes containing the TokenResponse>
]]></artwork>
      </section>
      <section anchor="finalization-1" numbered="true" toc="default">
        <name>Finalization</name>
        <t>Upon receipt, the Client handles the response and, if successful, processes the
body as follows:</t>
        <artwork name="" type="" align="left" alt=""><![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" format="default"/>.
If this succeeds, the Client then constructs a Token as described in
<xref target="HTTP-Authentication" format="default"/> as follows:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
struct {
    uint16_t token_type = 0x0002
    uint8_t nonce[32];
    uint8_t context[32];
    uint8_t key_id[32];
    uint8_t authenticator[Nk];
} Token;
]]></artwork>
        <t>Otherwise, the Client aborts the protocol.</t>
      </section>
      <section anchor="public-issuer-configuration" numbered="true" toc="default">
        <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
as a valid 4096-bit RSA private key according to [TODO]. 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 object carrying pkI.</t>
      </section>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security considerations</name>
      <t>This document outlines how to instantiate the Issuance protocol
based on the VOPRF defined in <xref target="OPRF" format="default"/> and blind RSA protocol defnied in
<xref target="BLINDRSA" format="default"/>. 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" format="default"/>.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA considerations</name>
      <section anchor="token-type" numbered="true" toc="default">
        <name>Token Type</name>
        <t>This document updates the "Token Type" Registry with the following values.</t>
        <table anchor="aeadid-values" align="center">
          <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">OPRF(P-384, SHA-384)</td>
              <td align="left">N</td>
              <td align="left">Y</td>
              <td align="left">N</td>
              <td align="left">48</td>
              <td align="left">
                <xref target="private-flow" format="default"/></td>
            </tr>
            <tr>
              <td align="left">0x0002</td>
              <td align="left">Blind RSA, 4096</td>
              <td align="left">Y</td>
              <td align="left">N</td>
              <td align="left">N</td>
              <td align="left">512</td>
              <td align="left">
                <xref target="public-flow" format="default"/></td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="media-types" numbered="true" toc="default">
        <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" numbered="true" toc="default">
          <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" format="default"/></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" numbered="true" toc="default">
          <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" format="default"/></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>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="8" month="February" 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-09"/>
      </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>
    </references>
    <section anchor="acknowledgements" numbered="true" toc="default">
      <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" numbered="true" toc="default">
      <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" format="default"/> contains test vectors
for token issuance protocol 1 (0x0001), and <xref target="test-vectors-rsa" format="default"/> contains
test vectors for token issuance protocol 2 (0x0002).</t>
      <section anchor="test-vectors-poprf" numbered="true" toc="default">
        <name>Issuance Protocol 1 (POPRF)</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" format="default"/> 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" format="default"/> and
represented as a hexadecimal string.</li>
          <li>challenge: A random challenge, represented as a hexadecimal string.</li>
          <li>nonce: The 32-byte client nonce generated according to <xref target="private-request" format="default"/>, 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" format="default"/> and represented as a hexadecimal string.</li>
          <li>token_request: The TokenRequest message constructed according to <xref target="private-request" format="default"/>, represented
as a hexadecimal string.</li>
          <li>token_request: The TokenResponse message constructed according to <xref target="private-response" format="default"/>, represented
as a hexadecimal string.</li>
          <li>token: The output Token from the protocol, represented as a hexadecimal string.</li>
        </ul>
        <t>The <tt>info</tt> parameter used when computing the token is the ASCII string "Privacy Pass".</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
skS: accb1467936ba0c06500acc592633dd19c7d8cd752fc3975f6fd3123b993a703a84
f0a7d88949bd41ec9c655459c9b47
pkS: 03fa7bb43a5223538e3bfd06e817af754d6a950a86eb88a134dacbb3f5c4cff47e4
a8a8f4cea5eb2cf162a913a985167f8
challenge:
f7e31518291770916d2164b7ec4a7a32698588fdaef0428812069b54dbc70bca
nonce: ae576e03963659fe07badeccb21967ad5d893e09a1ad71635367d87fb932ca39
blind: 4a13636159a6769241dcb439d7e2ff604ce971d217edb20f1f8ad7b28faf841e5
1688a95e722554d2ea796f40c010c4c
token_request: 000178036e06b416f09c58bd9ca0a6c5d60391e0d993fc2ffdea33963
f3c7d6c421a8c36d9b1d2f1164fd94a4be70651d1745e01
token_response: 036544d94b1e2b3518bcbf6a80e85779f516406c5b41d1c2d35e6f22
dc7d61708736f0768a3bc7313f42e06be5674db27cc2af138521a9dc979ea2ca4636bec9
0d21258aba98e4f322ec4a443bf8976fe5529dd92dd60c2e6f3c9030fcdb2621bf0e25c5
0d9deb319df250a9ec40ec121e1852f2365007ca0b330cb9edbff46daa89087fc3d8cf2f
d33979c2a6d8f64fed
token: 0001ae576e03963659fe07badeccb21967ad5d893e09a1ad71635367d87fb932c
a39ebecc2a0a1a2beef6f8457a256501ff3d943f9a18a507f21069bd960542420b178d37
692bdb29cedf2e6c44adc55d7b8909584e5a9096005aeb5b8913a69c681e7a5d48fd687f
fb181512ba16d6472489b363ad84047b4e1701d50f30fa03516eae4ca715698f37c68d16
0c7ffb0dbd4
]]></artwork>
      </section>
      <section anchor="test-vectors-rsa" numbered="true" toc="default">
        <name>Issuance Protocol 2 (Blind RSA)</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" format="default"/>, represented as a hexadecimal string.</li>
          <li>challenge: A random challenge, represented as a hexadecimal string.</li>
          <li>nonce: The 32-byte client nonce generated according to <xref target="public-request" format="default"/>, 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" format="default"/>, represented
as a hexadecimal string.</li>
          <li>token_request: The TokenResponse message constructed according to <xref target="public-response" format="default"/>, represented
as a hexadecimal string.</li>
          <li>token: The output Token from the protocol, represented as a hexadecimal string.</li>
        </ul>
        <artwork name="" type="" align="left" alt=""><![CDATA[
skS: 2d2d2d2d2d424547494e2050524956415445204b45592d2d2d2d2d0a4d49494a517
749424144414e42676b71686b69473977304241514546414153434353307767676b70416
74541416f4943415144584d4d364c5073637a6130696b0a39596c315a4e683868324a796
d504962704c383035354d52516f6463446c4c4672764d694c57666f59535241506b4e744
1546272324162654e334d454a2f67550a392f424958717a704d4256484852546c627a676
b364c7866766b54505a2b4a427832517177364f5555714b442f34426f5464765761536d6
a63644165555037760a4836376e396a383836307463367375546e67616c574d4b6d764d2
f5a6237644262543763345647386577706c6776444f6d616641353956354f78505545704
9510a586c454f4771414f43436c316f54686d33363836436c48413352374c5a4d78567a4
742386f594537583548396a70793532786a2f3242724a6861625033567a430a6f4c696c3
54f6e36487158785363466d4956573742787956495979756d75537659544e52757652777
3566c3775595446366f4d6d2b59722f5a506372594c7a510a4e666135634f747533532b6
649594456716f6f58375541415671382f716c4945747a794a744f7261616756393039327
0324f474c4f6d306a52384543666963520a3868363332572f76554d7739724c4c317a4d4
e7554424f4b74316c546c307265644a677668626b66515a5a55303541336a69366c71754
d2f47307250553030470a3369385253732f64694e625843505453746b616f45537350345
946496d526269756c786a544e2b626c5859744868494261556774306e2b566b544a77554
86e380a5367447534664e547142776567517265494e427732446b6e63576e676b5644416
867577635383669727351644c345843723376765856647a51375134586978730a465a6b6
d7763676d665142444f3469363078536c336337316954595362783359326e74584b4e6f5
a4c31537a424f595051496a6c734749454250677157546e5a0a64655a7852464f6c4d384
679794b6d30746471586271594b57716b663777494441514142416f4943414364314d707
044773645424467763558654168777252710a32726c717042492f6a6a50304e6e7057755
a302b6e787a53624a4361784d2f4f61436844676e654e586e573259655144524e7242505
84d5331344e646f4e554e0a56516c36497166445567637169636741696e7542622f4a687
a6c4d74466d5350466d2b667650726a4d2b6c4831544f384863354253633274414a52574
36468770a794a7663446349656d74646378437877754b6746485251704a5071356368526
56431535077766f50494c7831686959356c2f5175423478717a764149483873530a34673
949705a2f766169443558573541335847734a4f2b696a78717250706756655236474e4f5
33763515551716a44446967665a626a5864354a322b734d79460a4c435a6e514d6771577
03731756437366a4f4a445571563537454154534e6b56472f52633279537a554b4d6e354
c335a314a796d6d31694f584a5136535744760a6f5375426b435652436645635a746b546
f436c76646f5456666b63414a394e51343839686b3050754e466f593675315671614c5a4
a7764657a3931764f5966300a4b676f665a4a6e774976547733754b786f7559685033334
43644574a4f31763265487658767a4c744f4a54477054446f726f4c7a2f475459316b682
f484d50510a416c4f333758772f526b527752684b4d6f39545555347766642b2b5348325
4346e6730584875355254764d5339496b4266724455337a75557675434b7270356b0a377
942364473763433517932364f6367367151584a563650676b6c5770696164445778326f4
73935746578436f3346563434764a6d49327a706d5748514257630a48395331336b6d7a3
06873506274576a537535494c443061694f5630764d4c61353841685a767a32774562763
750546a494d48364d77446736326d6450744d6b0a534969517548644a38326a69316e757
8646f5678416f4942415144773431456757476e437644496239727a73704b6e61486a654
3574650385737664a6b446c4c0a61786c724a6f574e614d654c33306b646873576569765
7616730436f457656556631543455374936735a33705054675653685079374b6f4c645a4
86f757a5a390a4d774679716d694652726e574135467138544b756f4354647a3836542f5
37859753330625a476c6d6a4c432f6664453279556141486f6f5177375a2f34646b6d0a4
1693031696a36484d654e39486e5a425737656c436c4173443242436d4b5279655554793
7754b472b6b3732704630336e45694f7a42615565354d6c7a7436620a3867586b63715a5
735495478454b41726b6d486a77454379765178346a7867324573326a7653654e3041554
b624a63534a736e7a35434a65667a697561676f650a36482b3947676f62386e496a78546
34e784c7a58316a676e5236772f41302f6e657837714e6b57357773485a46644c58416f4
9424151446b734d6e75503452460a7558474a6e34316559696c43716b694e4e6b4a53753
9637456556b7772364570744230506d34556e3770535238684866767a5a43782f6b65766
b33553336546e0a67556c72416a4b72474a6a77437231457a7252726e417153466f61395
04851395a69697264626336726f474932576f63795a585859664b784a56646a4f754c440
a793947564d72575133665a3571696d7a6a394b4163304852455765784b6875514259465
554542f44323169584b4b65497568647834796b795435323857714b310a66786f4c72584
e6d5936726b77787778763334556779685a54564a75454879506e51422f54743242377a2
b342f763033665a46347361635646337738514a306c0a692b466879555a34326b63674a3
52b654c6d5558726b6d5a5959314a534332417a722f336449516a4b554655515935326a3
65775667338392f576a72516669470a31732b6c51385a7a6d4a4370416f49424151432b3
84c43686e764e574e4b37546b365431507943546b466758726351457950374a657453766
6316c4b6f654a430a304d6337692b58387a5a4e6674473478353941636163716c43376c6
96a5a55394351564f6d415159652f754d4679524371524c62453271426d79694f70357a7
00a3538487562693261513034564e554f44767644555256346468364148556e52706f534
f49356b59723079646137746f7070376a4662565165324b4c56535a742b0a746f4448384
a6c7a2f5374345774427033465a4538354747573748586a70746f756f6855344c777a464
7492f4c6d37486935783733357038716a385a6366642f0a384f756632626e6354382f674
938676b35633034307451794b483177534d4e4e6d5a496c54535943635653725369346b4
5567677684955354d726e75507647380a6256556b48584d694b7377316d63777739704d4
6373634716f6d464337586f66594d30664d6a6c4a416f494241465079565632676354534
b2b784e7976786b4c0a58577638522f2b57454569416256395674445572387a503079736
f6b34333869412b57432f32367271515a676b36446d61486d673073367356622f7a495a6
84f0a7769307a4e41446a41375751705179314f6961533333522b594b56333435656c345
35454386a433543736a79536e306559504b71396679376636614e343770570a304267664
4346d37584b454d4c66664a744d2b437a6e56536f41504c433449677257646e5a4141376
c306d57416c52576832645275664a3377703751763943770a2b315659446178785235334
e2b327930686e4b696d4b613745696970555952567834566f444a6c6d2f5a525a5769545
335796253375279514f563645334e71560a2f592f6647366563446a33674732497a50674
c4e664f3651646b556d7679364e4155386c645638754962707045446749497042684f684
a394865486a664343490a75326b4367674542414d68686e6f69312b78454a365339636e5
a327977527737433057544962662b54557230436e374f344a4d76637843544b484d62773
76a680a574c6247392f314732595966354c5673326b572f34472b2f446d586b6d4b68715
4746d6f324e50463666504b73694d64477877354149677039557a50543168550a2f6c777
26a75474d322f2b77434b70316d3645374e4d4d5659684b5841534f673473652b3676586
455356a56436f634343576162657a6c5835513262796c51480a2b2b624f6d4661504d535
5683761616d6657357573614553627366612f45506932446d3545574f456339567577525
671526143527552534632507043627279410a6b376e6b6b6746474b5a523777353053465
5366f7a776667627a2b7a33637256315535766d3076346c63794b6d524b6c4b575a51554
9624b782f5070583737640a395057536e3569594343704c432f316245372f566f4c70467
7757631656a773d0a2d2d2d2d2d454e442050524956415445204b45592d2d2d2d2d0a
pkS: 30820252303d06092a864886f70d01010a3030a00d300b060960864801650304020
2a11a301806092a864886f70d010108300b0609608648016503040202a20302013003820
20f003082020a0282020100d730ce8b3ec7336b48a4f5897564d87c87627298f21ba4bf3
4e7931142875c0e52c5aef3222d67e86124403e436d0136ebd806de37730427f814f7f04
85eace93015471d14e56f3824e8bc5fbe44cf67e241c7642ac3a39452a283ff80684ddbd
66929a371d01e50feef1faee7f63f3ceb4b5ceacb939e06a558c2a6bccfd96fb7416d3ed
ce151bc7b0a6582f0ce99a7c0e7d5793b13d41292105e510e1aa00e082975a13866dfaf3
a0a51c0dd1ecb64cc55cc607ca1813b5f91fd8e9cb9db18ffd81ac985a6cfdd5cc2a0b8a
5e4e9fa1ea5f149c1662155bb071c95218cae9ae4af613351baf470b1597bb984c5ea832
6f98aff64f72b60bcd035f6b970eb6edd2f9f2180d5aa8a17ed400056af3faa5204b73c8
9b4eada6a057dd3dda9d8e18b3a6d2347c1027e2711f21eb7d96fef50cc3dacb2f5ccc36
e4c138ab75953974ade74982f85b91f419654d390378e2ea5aae33f1b4acf534d06de2f1
14acfdd88d6d708f4d2b646a8112b0fe181489916e2ba5c634cdf9b95762d1e120169482
dd27f959132705079fc4a00eee1f353a81c1e810ade20d070d839277169e09150c08605a
fe7cea2aec41d2f85c2af7bef5d577343b4385e2c6c159926c1c8267d00433b88bad314a
5ddcef58936126f1dd8da7b5728da192f54b304e60f4088e5b0620404f82a5939d975e67
14453a533c172c8a9b4b5da976ea60a5aa91fef0203010001
challenge:
83ce743dcdadd5fc4aeb0357977bb8426635c390a15b88947f0b1c62e4a87c22
nonce: 7e0da97bfdc4365a5f40e69262f78b81bcd2f92daf885358d9831874e3dd9d22
blind: cd6d03e332386d0166eb76b8e78522510e5cbdcf49aaac83191ea948a7719e914
0ccb6701f7301b7d445ede7adbc5e582b35edd9ac45bc4b8f794e150b2e3e407b7b7624b
6f90b33845bc255174cee0c570aa781c203dce8563afe9f48e2b49c773bba1031987fb48
d981d131876f53e264ec0609a3ea628cf2042005ed3071aeb6657472c7e7df947915b8cd
333e3f5078e456e65e5edef8f892c4f21d25a18dcd80628ed6c7d55b0b9433bc67760be0
8a4eacbdb16a4be4c5b8cab26b478fa6a36ea3c3dd1ffb420bf69feef52aab4892c9e60a
df18347b4e8256b5a0e8cbf55fc97ac62af2e7349ba98ca7462cb6a41d70b0217814a06e
1b257289c3b345be652b87d5820b06a80500880b40b8772140bf431f11497114b20fee7e
5ffc1af5cf874cc293a0c8df65d52814bcd55ae6d3701f73d140ca82c6528627129ea389
f3cbd6058f4f80b7df3818f36dd3489259b6b95df4511930ff02b5cbe643fea44306e7c4
e3d9b02f1b0559aa238b8882a6e8791bfbfd366ef4fe433fd42e5c5db208c9fcebc74def
11663ce5f793c7013116995b3fef392a8633b08179a9c8309fb69359fd8486a7a8febb42
4d0726c2516b11e8b19a55fa54e9be606de6811059976473de8f9adb25af7e2862932bed
c7764b4dc50bfc9d724a4aba356a7677b5aceef21876e56b4f1b65adef0fbf8bf1636815
be01b372727e79aa6c47f41
salt: d13a47fa6466a37203e51ac34f7319831b3f04202ff74c98ab18e78088b7ac3014
06189783503227153871405c6a1da0
token_request: 0002013a370077e8259098e741dcaac8184838b7c995cd82966419064
90205bf28e6745396dd9ec1761c4676e9fec3272588194c48bc60fc77c3fff19219a6b65
96523044d07d9d9e4dd88f2db9d9c369597363a12a65d244d69a1b743b365f8f5bdbf8d6
52f2d2e249f417e9fd7da7db2626d6499d7d3856d8f9277385dfd776ffa4ffa74d7a7b17
01d87f40e525bb258a7f5b4d6c134b3b242ef46d93b32f106c84c396b1fc2772796b2473
64c48c364537708f3a8a87fb870a299ac08107a5dd3f467733d76c2359e346ee3ebcff68
c3c7e10f0f01a2b9bbbdb26ffea14f81f036a71c47725b5c9f81e0320b85abfd77d5eb1c
ccfdd8eb0cf2735ea297e2a07c82dfee9b0a4d21baa81a2cfb2a72983107555035386c33
973d48f04257dd8298116d2c93298810cb6b82ad033f5b16f9f7a65d8f74b7bdcae000db
1411b40f46cb373cb69c8ab58552f98904b78229b63838ab40e833fab4ec47acf00a00db
3290c9c74ed982c64ddbcae16fd73976ffe7da7b3b1a8e0190e95b7ce7900295f3c8c94f
2d3d85cd1825fe27073aad63fa4c530907402dc4e3a748edb300f05ce7ac5b8c1d9aeb2f
d6002b05dee582aeaefa4f503f13bae1a51be9420e3cdcb685169bdc5ae2ebca7713ec16
666b55b097e56e5719d1b0324ecaca613af76b9f367775a90dba5e7fdd21a8da73bd80b1
31e6531117ef709ad8c7b2b3182255235acea
token_response: 061780e09bc9b851fe81e7022ee2d55b043198bcb1aa33f761d213a9
8d831abaef5417d30904a7c9d7ec531278cd9655c4b7d72f3a4e66e26565b73e5f1b9271
b541f28556543d2473c363e104a11c6ba1a1d8f99b32d3cd8f74ae07b465afdaabd21977
d6f114ea9484cd592f461e5dc4a97b86fe1463b1c69171cf734f49c240760dc2555d7cc8
9d7f882d3e1b99388bc3b561d418a7fc5770ccc66e3dd41f4a74e8267492f48e8b6aabce
592c8dc83826b1f4528f2497902a0ce4baacd4216623274057592e77091102452de115bb
d0c98ee22b14fe30fb371277ab17bc948b62b8adb56b67e44dce74860647718c8f4bd10e
7b022ad35e2996dd49fb4a6c765689931fc11b56b06cca921fb1205e8b230254054a48da
38ed7a5e20f7aa80b55f1de9f5a6c9589f4f2c3b6ed2c53ad2a6a64abb8fba67aef86e6f
f77647aa05ce96527e2d1199b7553a3b900ec510f5b765211c14d0fc6cbe82f28be4d8ac
8110f13d7aee3741fc68f4abf3ca33444f790a72ef4ddec72c1d92938ee5d303f914ff12
8d9a73e867d9aa5d327934d4b2b299d7ffa32350d72d35103c027ac76c5417823e6790ee
174b9761e086bfa445f1725b20cff6a94d51abdfcfe46ff7c0f69685fd38639bdbd3917f
424949027b5a322fc217364748e544257d11f0cdcab9aa1d3282f6ac2811dfc8db5b2f99
c1ba00c366057748cabe6975fc73ed60
token: 00027e0da97bfdc4365a5f40e69262f78b81bcd2f92daf885358d9831874e3dd9
d22895c9d3ff72e71d22cdbc11706d350ab772b0820be9f33a02e003652cb00a31501000
000000000000000000000000000000000000000000000000000000000004c9e19f2a624e
e7d44ac35846749b29b1d3a784f13ea1005a2c87b9d3f939f795877d5fded823f45fd399
dc0b8730cb46c66102740c679338b7093c47e8f586e48a8b042cb0ea2b901f6981e797c4
a614f52f02ffe3ae7f83fa4f9a243e8b59621975abffb94f82b3fadfb4cb305cc1c1b677
42a673204e5a0aa0c25423c604430597d0332e30dddab8855de42bcf49668410df38bb3b
fa4370df28ec59316bc1c6f3c9afc8ccfdb93f4ca60365683988f649201e1c6d6bb73d14
d0dc9a0f596a9f76502ebadc0b248985f9bb66d9d99a5aca08527aa11d555b26489299ba
5b400157a9fd47b6b4fa74315eade2b22624b29d53eb84126f64b98ea5ba45914d1fa14b
1525e2327856565054a1db9b0d778871fa6ed4d0d4c26641bf3f4faa33efaa0f5b8cec80
8d52ed3f1378273d5b7b0b0b812bfc128ef5e4924a60aebd124659d31661e9ec89f8bcb9
a51bab6a5711187639c24fdd31f14abf7d80827df91f31bfe7c4916ec4d1927ca138c5ba
9a595a9e83b5055148d19ad005c523eda76ea94006ce6315e20ed0d637fb1211b541e9ea
12c9b641d48fd2cc5f0c7f479672a4e2bf7469267c8526d734df41f2c30fb62c2aea4033
214df44a53353dc683cf72dee7b1ba39ef668478958935a0e8c9a880ae85712c401d7f09
b66fbad05cfd69d615b229bce8818c6a6472e07a8793456f19f4f4015c507ab5c1357881
68b
]]></artwork>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAI4mJmIAA+2c65Ycx3Wl/+dT5IA/TCx3N/J+gUQtgSBpwiZBDAHZy0vW
IiMjIoESqrt6qqoBQSL8LPMC8xIzLzbfjsisS3eDAOmLZC+BF1RnZUacOJd9
9jkR2aenp8l2sV36++mdJ+vFK2PfpE/MZpM+2myuzIX16ZP1aruyq+WdxAzD
2r+6nz55svs2cSt7Yc552q3NuD1d+O14ehnHuWQYPsenT7MycWbr7yeW/z9f
rd/cTxcX4ypJFpfr++l2fbXZFlnWZ0Xy0r95vVq7++mji61fX/jt6WcaO0k2
W3PhvjPL1QXzvfGb5HJxP/0tw5+km9V6u/bjhk9vzvXhd0lirrYvVuv7SXqa
pPxZXGzup0/P0od+uQgXotxPV+P/+z9mf3W1fn4/fbhcXblxadY+XLOLLeJ+
tdgMq4t4YXV1sdUSnjDv1XOzDFf9uVks76cby1i/trshzuzq/EiIB2fpZ+bV
wm2m0aIgD5b+D8fXgyifrs0rLym3r3+eOIZxz9w0bl/8+rku3ybTF+aPp1+i
cJTs/3go2PqcS6tbvr9NVxvs4Lf30zzL02er1xcbf+HSp9sDwZ+ai/SLNd6z
2NjVsfy/uVhsvW7HRzbpakwfnPv1wpqj9azPR/PHFz+mYKz8j2Z5vIqnW//K
XxxeD9L/3Wr1fOnTr756eGTCV+G2X9sX69X54ur8jHuPZnh4Jo3902rlDqZ4
+GK92GxXly/8+ujbP4uarHn96xfeXC4ung+L7eaMOEqSixW23C5eEYZp+u0X
D4s87/Xxy2fPnpw+IF78xZZxtovVxf0w2AQNz14IBw7QQQ+kxw+kT+0Lfx5X
tzXr51rdi+32cnP/3j0i32zXxr706zNBhPR5D+i492J7vrwXoePSXC3fHGGH
Avh0E0Y9zTIGfnT62dkNhDFr+wJ12O3VmmUlp6enqRk2mo0FP3ux2KRMdHWO
oOnm0tvFuEBn29er9JVZL8zFNiiQhcT/Xq9Oz/1mY577dDEj4IxhybhaH6th
u3rp5Q4gEo+brW51V9bP38SL2DwNEm/98k3yClONCzMs/UlKKPHfaiuPec/z
V8NyYZdv0v3jZ4nMshv44JuboqerS9nILLlvc3V5CU5spjGTc781MlDqrtZ4
S9DDboBxuXp9FrV6vnBu6ZPkIwFzkFNDJskN59hNygdgh9WYdLIYlvMbv36l
eSI+L/4YvAcp7AtzsdicnzF8igk8058EYXbjIf7q9Sa1y4WX3bareYbErt9c
blfP1+byxcIeKU93+FQ61pw7VV/Eb/nxTfpCCDt4f8Ew3iiyhjeI/HwhwJC0
PLK4iKKYzTb905/e64hv355ddz70YNeLQbZ9cZuFrjsXejjw2OTQYw8cbrG5
3QMGs2Edqyj1Cju/WqyuyJgbf+VWa+H5eTpeXQQTpiMox6r+xzdPvv3ik7C2
NWuz4/r56avV5Xp8+za66sGsyS0OeTwpX/PIt08fpJvF8wsjraQxmBOm+vSr
R48/48tr06035jQ8eLp7aHOLLj/75vOn6eNvngGJr4I9fXqgfYMy1yAyLOJl
uvb/62qxRiz0m6yvLi6C6yEZMHmx5b/Z5W934cnuMxVJNn675YngpMa5hfR3
ki5uFcm+WC1CLM9BfOGtsGX9JiAJLjoHHN9Hp57jJF1681ILluemK2uv1mfp
p3jvBFYbXH51scH11yF8NmH8MDVLRegP9dGP0md+fb64WC1Xz9/EWIZ/pSJg
m/TO1795+uzOSfxbi9Pnbz//n7959O3nn+nz0y8ffPXV7kMy3fH0y29+89Vn
+0/7Jx9+8/XXnz/+LD4sZR1dSu58/eCf70RXu/PNk2ePvnn84Ks70QSH1tdS
if2BKJJZgBTFrNkkc4gFDXz68Mn//d95Jb+eMt3bt9MPXd5W/PCa7DU7No4c
fxQiJOby0psQ9EAOqfRysTVLyKXZpJsXZOsUFAF/o77GlWApGBJVRktcKRC2
sIer5y9WV9vjBQhP4QOyN+wKsCOHbt/s4SpC5iE67hBtFfBIXkU6NHa92myO
/PNEMqOPq/VFAJSjUc6YVsTdQ7gfzAPtU84tmU0TTmirh59EpEn/wb+JnGDj
Qcxt8Jiw4uFNlCZMEgQQzgXVhPHCIAE49mNEIPmQMWSpgDZv+In1z2Mm/0T4
c8/5hE6y2S6Ap2wezUJOWbngHixsbV4z2VYGFCtKBs8HJQLNtQmOtlfw60Uw
+Efpw9XFuHh+FcMu/dNHAMLV5dskifJu0hAqkxUDYF4aYdF2Wos9fBy6kp/N
K/0WoPJkl998+wiSGxcX0Cte/Co8/txfhIiXNqzAZKcEWNcXApU/mPPLSC3m
gfXs+eL5i60iZmZki/Dd2XS72OG96fNpGPF0mjkMHMB3vw7MtEGyzepqjf+c
e7dA3DeXPr2z9X/Y3rtcgqp3zmJwTDLsHiZ7I9mgnCTwFS4r+eylfcVgUBHU
bbdUidz3ez6dEJ0L+0LpzqR///Sbx0m8zuXVBgsu/NIFFr6JXmKWV5PJZeX5
R75BGZugyZjNZ6mQ9of0izDKYy6l+z8/qGS4Orzy3j8/JD/cP73tzzsu/9gf
xkqjrWaLnJI0glw3/WZvFNnczLpSsSGP+SFJHkgLeyfZB9rfbOKte8VTbaCN
5Wr1Ml0uXopa/+u//muS/ikQ/Ds3ZbpzP73zU73rTpK+DcNO4XMw/byUTaRn
kvTQ00Do5VR43Ps9he2dJHBpDL5c2cDhIrtLX/vl8vTlhUA7fKOovXe2v3ov
CjStZzd/TI0hBh++AFD8BRXBt5FLCMM3SfJwoqE84aGKpPvpvsnBQmCGnHGU
l0hBD37z7MunD7/8/OvPA/350cpHWVqBBLeame1N8nhtiuN0GQMuCbmSokii
It7FikXvL8U8eIkKSBfPGUNYJfSbfg76uNET2pPWwD//cU8Fn8X88XoBZZkQ
/+u5zvjTRxNlPVV18faWCuImOw6BLw48V2e7byKPNy9Jiah6cXFJujV7Y0R8
kSfAjPx5KIMOKgotek6AE+ieJLs0P7G/gNjKDLEYCnGQpt9ERe3+RH+4BQ+i
byfXL398+fLRSWiC3T26vNHl/Xc3nkvTv/0Q5PgXHty7bprq2q+iXWbIOLr/
V3v4ugXS3gF1H3thK6a8u3swBg1/fqlR/zbdfTz4M4uxuYS6+ltn/JcPWeO9
Q/DY7NKu2TEV2XdPOE4IE/g0QYKOo+2lZqCGMktRsHxzkkTqtprdYmZCO9/i
q8Oi9Cx96j1BPQHIUX5/+zYQfVwphqQ4zqVZiNHMmdy7sz2SzPJvj1jl9Zlv
BIe6HnM2UA7EcZw4ZeBJBxh/FhM5/4KhgKeaAQbp8AQ9FiIJS0wJetaD6ozt
mmI/Nn0m5N7M0kxD7yXYqztqN0CACWufxFpw1/f8/N3Cfc/w56wt8vf0OlLe
rlRNtvfskNzT73cB/33gPqtLg5yR38X0d3bMj4JBAi1i2sHPut/xz9vQIsh0
S68sVFKhOpswQK41qYO6AdL+QpnJaLHnGjCqaErLMgTzfq9o/56B/i70HYJ8
RwsPo4baL/rD5mRuWe1Jrv+DuijPg/6SMMQe6pBgr96IZdEhNj62AQKvIz7i
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
MyyW7xgkrCIAxOaFUv2hH0Vt3HCvJHmwfyVpeucXVJ/atTuF74f/Ym2eBwA8
OiJ8uygP9hsS2kANv8RhkuSXbvkrONYv3fZXX5vnANrF1fng1x9v7t7/5T0u
/tK5XzEGn91832f+Ep4dGcdyQbaPL87tOjlBznc9/MUC9IT0QWgQ4cem+dpY
vWe5eZGOeia4k1jCO5+5p6UkT/CWqfkcfpWFdmPW8U3HWFdAJSTqeLUWWbyh
EDnAg9AP2vxN+iA+63d7ZdH+odC9kqeHR/QO8jeP5dTquMcQSsOB+PmOaIXp
F8p8wCQPQ1c8nXpGSx+fevT50797R2TOZ2h+TmjGN0FPr5Vtfw3Rv4boX0P0
54WoXlEbjH0pRvvA6j3RpXfP5xc/lZ9jx3nqPx7S2dfxtdnFy/A7Csz+4ZCt
X/jl5Xi1TEYqfU0QdOgWG3u12YQlhU31T/3F7835IvxKnddmvf3jSfr3q42/
fJE+hZu81u5w/LVViX5tVXxd5hlxnP7TC7P0F9OvddhsIbx6mXVz7bhAfG9H
TEj3vIr37F6K1v5efNn05mumyfz7SG6+ZnpGSGu802m808v4m0P2HeTD2ZLd
G7K37Nnn6XSO4m5c2rWB1xtzMGxycxHvGLaYhi3u7psHx2cwmDgcBb2b/umj
W9YSLX8wX9yzwNib7XVaGclq4Iebl0/jbzqYi+RQGR4U9CeHZxfjDuX196Sm
39Ayd4+Ks1yet69jic21D79b52Kq4A2+9gfqRbs4B5KmnWSkubxdmt0vYfgx
Yea3u/79pNltnek3Ukw7trtrJx86SmhPxVWVxWnYWJsayHGr9qDDctg62Zc5
84bz25tTspbbJw2dgzhpbCKErs/r2LCb2+pyiqDga6+IvN/kzPs+NX+oemJ3
bz1XKDf2eOZ9812f8acqSr+L5OdMP/Vyf9L80zbJTxbg/uHRo1g8HhxgigDw
gQ4XYCC+rnn8WzFuNf8MR7G98vTho0fzi59Hv3Bx7tAHtGD1Q141bV82g8ls
1tRZxrW6L5qydC7vbes669q6GG3Zt/XYjK7Mi3Lo+9K0WWm6Khkzw01dX/WD
q3Jve9vUdVX3th+qNgkwkJWjaYehKk1dFGVddr4cRpc1vstbM7Z15RrT15np
Gj90ncnLyhk7DOVY28qOY9X6KjGd6cbKelP7obBj3hSmz0vTd3XetGOX7CM8
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
AA==

-->

</rfc>
