<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.21 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-pardue-httpbis-identity-digest-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title abbrev="HTTP Identity Digest">HTTP Identity Digest</title>
    <seriesInfo name="Internet-Draft" value="draft-pardue-httpbis-identity-digest-00"/>
    <author fullname="Lucas Pardue">
      <organization>Cloudflare</organization>
      <address>
        <email>lucas@lucaspardue.com</email>
      </address>
    </author>
    <author fullname="Mike West">
      <organization>Google</organization>
      <address>
        <email>mkwst@google.com</email>
      </address>
    </author>
    <date year="2024" month="December" day="19"/>
    <area>Applications</area>
    <workgroup>HTTP</workgroup>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 42?>

<t>The Repr-Digest and Content-Digest integrity fields are subject to HTTP content
coding considerations. There are some use cases that benefit from the
unambiguous exchange of integrity digests of unencoded representation. The
Identity-Digest and Want-Identity-Digest fields complement existing integrity
fields for this purpose.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://LPardue.github.io/draft-pardue-http-identity-digest/draft-pardue-httpbis-identity-digest.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-pardue-httpbis-identity-digest/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        HTTP Working Group mailing list (<eref target="mailto:ietf-http-wg@w3.org"/>),
        which is archived at <eref target="https://lists.w3.org/Archives/Public/"/>.
        Working Group information can be found at <eref target="https://httpwg.org/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/LPardue/draft-pardue-http-identity-digest"/>.</t>
    </note>
  </front>
  <middle>
    <?line 51?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The <tt>Repr-Digest</tt> and <tt>Content-Digest</tt> integrity fields integrity fields defined in
<xref target="DIGEST-FIELDS"/> are suitable for a range of use cases. However,
because the fields are subject to HTTP content coding considerations, it is
difficult to support use cases that could benefit from the exchange of integrity
digests of the unencoded representation.</t>
      <t>As a simple example, an application using HTTP might be presented with request
or response representation data that has been transparently decoded.  Attempting
to verify the integrity of the data against the <tt>Repr-Digest</tt> would first require
re-encoding that data using the same coding indicated by the Content-Encoding
header field (<xref section="8.4" sectionFormat="of" target="HTTP"/>), which is not always possible
(see <xref section="6.5" sectionFormat="of" target="DIGEST-FIELDS"/>).</t>
      <t>Although receivers could feasibly re-encode data in order to carry out
<tt>Repr-Digest</tt> validation, it might be impractical for certain kinds of
environments. For instance, browsers tend to provide built-in support for
transparent decoding but little support for encoding; while this could be done
via the use of additional libraries it would create work in JavaScript that
could contend with other activities. Even on the server side, the re-encoding of
received data might not be acceptable; some coding algorithms are optimized
towards efficient decoding at the cost of complex encoding. A Content-Encoding
field value that indicates a series of encodings adds further complexity.</t>
      <t>A more complex example involves HTTP Range Requests (<xref section="14" sectionFormat="of" target="HTTP"/>), where a client fetches multiple partial representations from
different origins and "stitches" them back into a whole. Unfortunately, if the
origins apply different content coding, the <tt>Repr-Digest</tt> field will vary by the
server's selected encoding (i.e. the Content-Encoding header field, <xref section="8.4" sectionFormat="of" target="HTTP"/>). This provides a challenge for a client - in order to verify the
integrity of the pieced-together whole it would need to remove the encoding of
each part, combine them, and then encode the result in order to compare against
one or more <tt>Repr-Digest</tt>s.</t>
      <t>The Accept-Encoding header field (<xref section="12.5.3" sectionFormat="of" target="HTTP"/>) provides the means
to indicate preferences for content coding. It is possible for an endpoint to
indicate a preference for no encoding, for example by sending the "identity"
token. However, codings often provide data compression that is advantageous.
Disabling content coding in order to simplify integrity checking is possibly an
unacceptable trade off.</t>
      <t>For a variety of reasons, decoding and re-encoding content in order to benefit
from HTTP integrity fields is not preferable. This specification defines the
Identity-Digest and Want-Identity-Digest fields to support a simpler validation
workflow in some scenarios where content coding is applied. These fields
complement the other integrity fields defined in <xref target="DIGEST-FIELDS"/>.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This document uses the Augmented BNF defined in <xref target="RFC5234"/> and updated by
<xref target="RFC7405"/>. This includes the rules: LF (line feed)</t>
      <t>This document uses the following terminology from <xref section="3" sectionFormat="of" target="STRUCTURED-FIELDS"/> to specify syntax and parsing: Byte Sequence,
Dictionary, and Integer.</t>
      <t>The definitions "representation", "selected representation", "representation
data", "representation metadata", and "content" in this document are to be
interpreted as described in <xref target="HTTP"/>.</t>
      <t>"Integrity fields" is the collective term for <tt>Content-Digest</tt>, <tt>Repr-Digest</tt>,
and <tt>Identity-Digest</tt></t>
      <t>"Integrity preference fields" is the collective term for <tt>Want-Repr-Digest</tt>,
<tt>Want-Content-Digest</tt>, and <tt>Want-Identity-Digest</tt></t>
    </section>
    <section anchor="identity-digest">
      <name>The Identity-Digest Field</name>
      <t>The <tt>Identity-Digest</tt> HTTP field can be used in requests and responses to
communicate digests that are calculated using a hashing algorithm applied to the
representation with no content coding (<xref section="8.4.1" sectionFormat="of" target="HTTP"/>). Apart from
the content coding concerns, it behaves similarly to <tt>Repr-Digest</tt> (<xref section="3" sectionFormat="of" target="DIGEST-FIELDS"/>).</t>
      <t><tt>Identity-Digest</tt> is a <tt>Dictionary</tt> (see <xref section="3.2" sectionFormat="of" target="STRUCTURED-FIELDS"/>)
where each:</t>
      <ul spacing="normal">
        <li>
          <t>key conveys the hashing algorithm (see <xref section="5" sectionFormat="of" target="DIGEST-FIELDS"/> used to
compute the digest;</t>
        </li>
        <li>
          <t>value is a <tt>Byte Sequence</tt> (<xref section="3.3.5" sectionFormat="of" target="STRUCTURED-FIELDS"/>), that
conveys an encoded version of the byte output produced by the digest
calculation.</t>
        </li>
      </ul>
      <t>For example:</t>
      <sourcecode type="http-message"><![CDATA[
NOTE: '\' line wrapping per RFC 8792

Identity-Digest: \
  sha-512=:YMAam51Jz/jOATT6/zvHrLVgOYTGFy1d6GJiOHTohq4yP+pgk4vf2aCs\
  yRZOtw8MjkM7iw7yZ/WkppmM44T3qg==:
]]></sourcecode>
      <t>The <tt>Dictionary</tt> type can be used, for example, to attach multiple digests
calculated using different hashing algorithms in order to support a population
of endpoints with different or evolving capabilities. Such an approach could
support transitions away from weaker algorithms (see
<xref section="6.6" sectionFormat="of" target="DIGEST-FIELDS"/>).</t>
      <sourcecode type="http-message"><![CDATA[
NOTE: '\' line wrapping per RFC 8792

Identity-Digest: \
  sha-256=:d435Qo+nKZ+gLcUHn7GQtQ72hiBVAgqoLsZnZPiTGPk=:,\
  sha-512=:YMAam51Jz/jOATT6/zvHrLVgOYTGFy1d6GJiOHTohq4yP+pgk4vf2aCs\
  yRZOtw8MjkM7iw7yZ/WkppmM44T3qg==:
]]></sourcecode>
      <t>A recipient <bcp14>MAY</bcp14> ignore any or all digests. Application-specific behavior or
local policy <bcp14>MAY</bcp14> set additional constraints on the processing and validation
practices of the conveyed digests. The security considerations cover some of
the issues related to ignoring digests (see <xref section="6.6" sectionFormat="of" target="DIGEST-FIELDS"/>)
and validating multiple digests (see <xref section="6.7" sectionFormat="of" target="DIGEST-FIELDS"/>).</t>
      <t>A sender <bcp14>MAY</bcp14> send a digest without knowing whether the recipient supports a
given hashing algorithm. A sender <bcp14>MAY</bcp14> send a digest if it knows the recipient
will ignore it.</t>
      <t><tt>Identity-Digest</tt> can be sent in a trailer section. In this case,
<tt>Identity-Digest</tt> <bcp14>MAY</bcp14> be merged into the header section; see <xref section="6.5.1" sectionFormat="of" target="HTTP"/>.</t>
    </section>
    <section anchor="the-want-identity-digest-field">
      <name>The Want-Identity-Digest Field</name>
      <t><tt>Want-Identity-Digest</tt> is an integrity preference field; see <xref section="4" sectionFormat="of" target="DIGEST-FIELDS"/>. It indicates that the sender would like to receive (via the
<tt>Identity-Digest</tt> field) a representation digest on messages associated with the
request URI and representation metadata where no content coding is applied.</t>
      <t>If <tt>Want-Identity-Digest</tt> is used in a response, it indicates that the server
would like the client to provide the <tt>Identity-Digest</tt> field on future requests.</t>
      <t><tt>Want-Identity-Digest</tt> is only a hint. The receiver of the field can ignore it
and send an <tt>Identity-Digest</tt> field using any algorithm or omit one entirely. It
is not a protocol error if preferences are ignored. Applications that use
<tt>Identity-Digest</tt> and <tt>Want-Identity-Digest</tt> can define expectations or
constraints that operate in addition to this specification.</t>
      <t><tt>Want-Identity-Digest</tt> is of type <tt>Dictionary</tt> where each:</t>
      <ul spacing="normal">
        <li>
          <t>key conveys the hashing algorithm;</t>
        </li>
        <li>
          <t>value is an <tt>Integer</tt> (<xref section="3.3.1" sectionFormat="of" target="STRUCTURED-FIELDS"/>) that conveys an
ascending, relative, weighted preference. It must be in the range 0 to 10
inclusive. 1 is the least preferred, 10 is the most preferred, and a value of
0 means "not acceptable".</t>
        </li>
      </ul>
      <t>Examples:</t>
      <sourcecode type="http-message"><![CDATA[
Want-Identity-Digest: sha-256=1
Want-Identity-Digest: sha-512=3, sha-256=10, unixsum=0
]]></sourcecode>
    </section>
    <section anchor="messages-containing-both-identity-digest-and-content-encoding">
      <name>Messages containing both Identity-Digest and Content-Encoding</name>
      <t>Digests delivered through <tt>Identity-Digest</tt> apply to the unencoded representation. If a message is
received with content coding, a recipient needs to decode the message in order
to calculate the digest that can subsequently be used for validation. If
multiple content codings are applied, the recipient needs to decode all
encodings in order before validation.</t>
    </section>
    <section anchor="integrity-fields-are-complementary">
      <name>Integrity Fields are Complementary</name>
      <t>Integrity fields can be used in combination to address different and
complementary needs, particularly the cases described in <xref target="introduction"/>.</t>
      <t>In the following examples, the unencoded response data is the string "An
unexceptional string" following by an LF.</t>
      <t>The first example demonstrates a request that uses content negotiation.</t>
      <figure>
        <name>GET request with content negotiation</name>
        <sourcecode type="http-message"><![CDATA[
GET /boringstring HTTP/1.1
Host: example.org
Accept-Encoding: gzip

]]></sourcecode>
      </figure>
      <t>The server responds with the full GZIP-encoded representation. The <tt>Repr-Digest</tt>
and <tt>Identity-Digest</tt> therefore differ.</t>
      <figure>
        <name>GET response with GZIP-encoded content</name>
        <sourcecode type="http-message"><![CDATA[
NOTE: '\' line wrapping per RFC 8792

HTTP/1.1 200 OK
Content-Encoding: gzip
Repr-Digest: \
  sha-256=:XyjvEuFb1P5rqc2le3vQm7M96DwZhvmOwqHLu2xVpY4=:
Identity-Digest: \
  sha-256=:5Bv3NIx05BPnh0jMph6v1RJ5Q7kl9LKMtQxmvc9+Z7Y=:

1f 8b 08 00 79 1f 08 64 00 ff
73 cc 53 28 cd 4b ad 48 4e 2d
28 c9 cc cf 4b cc 51 28 2e 29
ca cc 4b e7 02 00 7e af 07 44
18 00 00 00

]]></sourcecode>
      </figure>
      <t>The second example demonstrates a range request with content negotiation.</t>
      <figure>
        <name>Range request with content negotiation</name>
        <sourcecode type="http-message"><![CDATA[
GET /boringstring HTTP/1.1
Host: example.org
Accept-Encoding: gzip
Range: bytes=0-10

]]></sourcecode>
      </figure>
      <t>The server responds with a 206 Partial Content response using GZIP encoding, it
has three different Integrity fields. The <tt>Content-Digest</tt> relates to the
response message content that can be used to validate the integrity of the
received part. <tt>Repr-Digest</tt> and <tt>Identity-Digest</tt> can be used later once the
entire object is reconstructed. The choice of which to use is left to the
application that would consider a range of factors outside the scope of
this document.</t>
      <figure>
        <name>Partial response with GZIP encoding</name>
        <sourcecode type="http-message"><![CDATA[
NOTE: '\' line wrapping per RFC 8792

HTTP/1.1 206 Partial Content
Content-Encoding: gzip
Content-Range: bytes 0-9/44
Content-Digest: \
  sha-256=:SotB7Pa5A7iHSBdh9mg1Ev/ktAzrxU4Z8ldcCIUyfI4=:
Repr-Digest: \
  sha-256=:XyjvEuFb1P5rqc2le3vQm7M96DwZhvmOwqHLu2xVpY4=:
Identity-Digest: \
  sha-256=:5Bv3NIx05BPnh0jMph6v1RJ5Q7kl9LKMtQxmvc9+Z7Y=:

1f 8b 08 00 79 1f 08 64 00 ff
]]></sourcecode>
      </figure>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The considerations in <xref target="DIGEST-FIELDS"/> apply. There are no known additional
considerations.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions (yet)</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="DIGEST-FIELDS">
        <front>
          <title>Digest Fields</title>
          <author fullname="R. Polli" initials="R." surname="Polli"/>
          <author fullname="L. Pardue" initials="L." surname="Pardue"/>
          <date month="February" year="2024"/>
          <abstract>
            <t>This document defines HTTP fields that support integrity digests. The Content-Digest field can be used for the integrity of HTTP message content. The Repr-Digest field can be used for the integrity of HTTP representations. Want-Content-Digest and Want-Repr-Digest can be used to indicate a sender's interest and preferences for receiving the respective Integrity fields.</t>
            <t>This document obsoletes RFC 3230 and the Digest and Want-Digest HTTP fields.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9530"/>
        <seriesInfo name="DOI" value="10.17487/RFC9530"/>
      </reference>
      <reference anchor="HTTP">
        <front>
          <title>HTTP Semantics</title>
          <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
          <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
          <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
          <date month="June" year="2022"/>
          <abstract>
            <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
            <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="97"/>
        <seriesInfo name="RFC" value="9110"/>
        <seriesInfo name="DOI" value="10.17487/RFC9110"/>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
      <reference anchor="RFC5234">
        <front>
          <title>Augmented BNF for Syntax Specifications: ABNF</title>
          <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
          <author fullname="P. Overell" initials="P." surname="Overell"/>
          <date month="January" year="2008"/>
          <abstract>
            <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="68"/>
        <seriesInfo name="RFC" value="5234"/>
        <seriesInfo name="DOI" value="10.17487/RFC5234"/>
      </reference>
      <reference anchor="RFC7405">
        <front>
          <title>Case-Sensitive String Support in ABNF</title>
          <author fullname="P. Kyzivat" initials="P." surname="Kyzivat"/>
          <date month="December" year="2014"/>
          <abstract>
            <t>This document extends the base definition of ABNF (Augmented Backus-Naur Form) to include a way to specify US-ASCII string literals that are matched in a case-sensitive manner.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7405"/>
        <seriesInfo name="DOI" value="10.17487/RFC7405"/>
      </reference>
      <reference anchor="STRUCTURED-FIELDS">
        <front>
          <title>Structured Field Values for HTTP</title>
          <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
          <author fullname="P-H. Kamp" surname="P-H. Kamp"/>
          <date month="September" year="2024"/>
          <abstract>
            <t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields.</t>
            <t>This document obsoletes RFC 8941.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9651"/>
        <seriesInfo name="DOI" value="10.17487/RFC9651"/>
      </reference>
    </references>
    <?line 324?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Early drafts of <xref target="DIGEST-FIELDS"/> included a mechanism to support the exchange
of digests where no content coding is applied, which was removed before
publication. While the design here is different, it is motivated by discussion
of the previous design in the HTTP WG. The motivating use cases still mostly
apply identically.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
Mkzmzo9AweFn8d+lilpbgi8AAA==

-->

</rfc>
