<?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-04" 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="Privacy Pass Issuance">Privacy Pass Issuance Protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-privacypass-protocol-04"/>
    <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="April" day="05"/>
    <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)                 (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" 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>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 = 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" format="default"/>. SetupVOPRFClient
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_element = client_context.Blind(token_input)
]]></artwork>
        <t>The Blind function is defined in <xref section="3.3.2" 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_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>.</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" format="default"/>.</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" 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_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" numbered="true" toc="default">
        <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" format="default"/>, 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 name="" type="" align="left" alt=""><![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" format="default"/> and Evaluate is defined in
<xref section="3.3.2" 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_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" 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,
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 name="" type="" align="left" alt=""><![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" 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 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" 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 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" 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">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" 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 - 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" 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>
        <artwork name="" type="" align="left" alt=""><![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" numbered="true" toc="default">
        <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" 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:
H4sIAEpBTGIAA+2c63YcR3al/+dT5FA/LC4DYN4vbKlXU5Rk0ZZIjki1l1e7
lxSZEQlUs4DCVBVIQRL7WeYF5iVmXmy+HZFZF6B4U3tsr7GoVgusyozLuey9
z8lIHB8fR+vZeu7ux3eeLmcvTX8dPzWrVfxotboyF72Lny4X60W/mN+JTNct
3cv78cHrIrvoL8w549ilGdbHM7ceji/DlZdcyM9hnOOkiKxZu/tRz/+fLpbX
9+PZxbCIotnl8n68Xl6t1lmStEkWvXDXrxZLez9+dLF2ywu3Pv5cY0fRam0u
7Pdmvrhgvmu3ii5n9+M/MfxRvFos10s3rPjp+lw//DmKzNX6bLG8H8XHUcyf
2cXqfvzsJH7o5jP/QVj3s8Xwf/6X2X66WJ7ejx/OF1d2mJul85/1szXL/Xq2
6hYX4YPF1cVaW3jKvFenZu4/dedmNr8fr3rG+kO/GeKkX5zvLeLBSfy5eTmz
q3G0sJAHc/fj/ud+KZ8tzUunVa5f/brlGMY9seO4bfaHU318aE1fmp+Ov8Lg
GNn9tLuw5TkfLQ58f8hWK/zg1vfjNEnj54tXFyt3YeNn652FPzMX8ZdLome2
6hf76//uYrZ2upwYWcWLIX5w7paz3uztZ3k+mJ/O3mZgvPxHM9/fxbO1e+ku
dj/3q/+HxeJ07uKvv36458KX/rI/9GfLxfns6vyEa/dmeHgii/3zYmF3pnh4
tpyt1ovLM7fc+/Y/xEy9efWHM2cuZxen3Wy9OiGPouhigS/Xs5ekYRx/++XD
LE1b/fjV8+dPjx+QL+5izTjr2eLivh9sBInnZ24//3VDvH9D/Kw/c+dhd2uz
PNXuztbry9X9e/fIfLNemv6FW54IImTPe0DHvbP1+fxegI5LczW/3sMOJfDx
yo96nCQM/Oj485NbCGOW/Rnm6NdXS7YVHR8fx6ZbaTY2/PxstoqZ6Oqchcar
S9fPhhk2W79axC/NcmYu1t6AbCT8+2pxfO5WK3Pq4tmEhROGRcNiuW+G9eKF
UziASNxu1rrUXvVu+iZ8iM9jv+K1m19HL3HVMDPd3B3FpBL/LtaKmHfcf9XN
Z/38Ot7efhLJLZuBd765vfR4cSkfmTnXra4uL8GJ1ThmdO7WRg6K7dWSaPF2
2AwwzBevToJVz2fWzl0UfSRg9uvUkFF0Kzg2k/IDsMNuTDx6DM+5lVu+1DwB
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
TZFLvSyrkkEHNw6CsB9h5TveEy4e71/xWvSvN28WjGa62fwNg/hdeIBYnYnq
d+MoWONWeEXRg+17UeOLx6D62L3dGHw7/JdLc+oBcO/M8+GlPNg+n9BvbvG/
SWJcySd2/ns01id2/ftvzCmAdnF13rnlx6u79z+5x4efWPt7xuBnO133ubtE
dgfFMZ/B9uHtvU1jx6/zTTd/OQM93Y8UCCuW8LZpvjG9XvZcncWD7vHhJJXw
xnvuaSvRU6Jl7EX736ehhzPL8LplKDOQElrqcLX0j8tvGkQB8MC3h1Z/Fz8I
97rNo7Pgf1/3XinS/S16EfrJYwW1GvAhhWJ/wn+6Inhh/K027zHJQ98kj8cW
0tyFux598ewf3pCZY/L/qtQMr6Me36jifkvR31L0txT9dSmqV+U607+Qon3Q
62XVubOn09un4ufQgB7bkbty9lV4d3f2wv+iBLO92bP1mZtfDlfzaKDw1wTe
hna26q9WK78l/4z9M3fxF3M+87/X55VZrn86iv9xsXKXZ/EztMkrPSwOvzsr
0u/OCu//PCeP43+mPncX4++WWK0RvHqjdnXj9EB4EUlKSNe8DNds3szW477w
xuvtd12j6Zei3H7X9YSU1njH43jHl+HXl2wbyruzRZvXdA88wk/j8VjF3bC1
GwMvV2Zn2Oj2Jt4wbDYOm93dNg/2j2Sk8fEbVPXPHx3YW4iEnfnDIw2cv1rf
lJlBvHq9uHrxLPz6halo9pXiToF/tHusMTzAvPki2NsOGPuuREzl6H/hz8VY
0Rti70fqx352DkSND5pZzeXh1Wx+M8TbFvM+x50/bDWbBpN+Tcb4QHfz2dH7
juK7V2FXeXbsn7uN/eXwJHen47LbStmWPdPz6Ne3p2Qvhyf1nYQwaWgq+C7Q
q9DPm7ruCgpv4Bsvxbzb5cz7LjO/r3lCj245VSy3HgFNj9U3bcgPNZR+Qcqv
mX5s9X7Q/ONTlA9ewP3dk0mhmNw53xQA4T0DLvRZlUdJWtd1kxrXO9u0ue17
OzRJneY2TxvTJKnLTFK0TVYkg+2HqkzypOi6brDJ0Ni8K/sk4uMeeijK2hjT
Nrnrk2wYsibvatNGPl2TLOurfKhb05dtn3Qmt1lSZEU5VHVlsjTPO1ulWdK3
ia1qM5ik7G01NFVaZG3R1XlVRX1WMkhRNnmSlGXaMVjRpikft4nJ+X6TiZEp
bVHlTZ6XrRvywuV9YequsWmXp1XJhrth6NuuZj5XmSqxNi3SIndF3/bt0Nlo
zEeGqdt2YKDG2r5MTFU1JX/tGtfbrCq6bEjLOknLLGttmnVcV/TJkLZM65gw
GlMsybNscAxQZnnStllWVllbJVVu26btsEif5K7B4oXrqrSpk7rS8GleV1mG
pbKoaFzhyqzsbJ8kjJzYtKwSx4qGorVtdCNExUWpSTIMONiSi4vONVgRcw1D
kuapzfqmzvq6tUlWJT1eyPGyySKTD2nRm5ZPEzw1ZEVdlXmRVC61ZdZVDX7q
amczxEDrzGbiqUmQ5I3LKxZambpqsZdp26pJXEGMtFhzKG2fuqayZZ1Wheny
rjBl1drIDn3RVB2zN5i9TStTpm1B0CVlSqS5pigKRiqylOipXJMWhTF1m2R1
UrKnIe+HIimbKspt1RZlajJcTmglfU9kskd8hav5Ji9sU9dd3rqm6wnlNktc
aV1h8rzOyrK2rhuyNI3YeG/bqm3rqqmSDh+1Q5s0ma1M7pJ8aFzTpllRkRtp
TUD3g6Y2RZXmHdlRpGWr9bVRlrm66GuTDhl2YN4iGjNafvqbgiwiFuoiI2u7
xNm6rJzB2k3VuCFNWpM1pEbLahM8PmDoLu1YgutJhMFkpaurOk9N2aURS2+c
qU3XFJq6MXXqbMvkw2DqRMld5KYZ+qqp27wld7usNXVZFp2gwaV5Ysj3Jouy
mo0TO2Tt0GIOQqFIepP2DY4k9Vt+NgU/dE1XVQWhZfICRwAQXekyV+Kvsie0
ElnH4POh3jyQuy2BMiTQzQbfDfEj/fW3Sp+nX3yzeWbw9J8ePvuoufWUw9On
9Jw/Q7P5PVYfgPMbafPBTyg8CWx/OdZe/8//9ivt5NDvl3nracD31i//0Spo
/1De/xMRtH3ucksJvef2VmY+qodgofn1zo6KJmxYF+2swU19jc0SpsMtN88U
Hr2/Zv23kFNvs/i/g5q6cSTlP4eYgqrHfyRtirpoC5clYv2iLaHzsihKZE8H
vrXbaxNTwHf8A+HVkW7KECMF/7oig5g7iBJihNTqvK3rXLopLVMmYEh+ygv+
KfM8qQFzf31SpBUDlfpa+oALdAPSiZlsXhWwDGIgrw1UlcDSnViibKs+T0tT
uKrJYZA8QzS1VYR+gHih2aJHUiVMVRZIgZKhK9isgNmLvqjqrK4KUW8P21bV
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
DowAAA==

-->

</rfc>
