<?xml version="1.0" encoding="utf-8"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="info" docName="draft-singh-psi-http-00" ipr="trust200902" submissionType="IETF" version="3" xml:lang="en">
<front><title abbrev="PSI HTTP">The Compliance-Receipt HTTP Response Header Field</title><seriesInfo name="Internet-Draft" value="draft-singh-psi-http-00"/><author fullname="Kawaljeet Singh" initials="K." surname="Singh"><organization>APEX Infrastructure</organization>
<address><postal><city>Melbourne</city><region>Victoria</region><country>Australia</country></postal>
<email>kawaljeet.singh3008@gmail.com</email><uri>https://ai-governance-standard.com</uri></address></author>
<date year="2026" month="October" day="13"/>
<abstract><t>This document defines the Compliance-Receipt HTTP response header field, a Structured Field that carries a reference to a Proof of Stateful Integrity (PSI) receipt for the response.  The signature covers every security-relevant parameter.  The header shows that the issuer sealed a digest of the response; despite its name it does not show that the response, or the service, complies with any law or policy.</t></abstract></front><middle><section><name>Introduction</name><t>Clients that receive machine-generated responses may want a durable, independently checkable record that a given response was issued.  The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>SHOULD</bcp14>", and "<bcp14>MAY</bcp14>" in this document are to be interpreted as described in BCP&#160;14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t></section><section><name>Header Field Definition</name><t>Compliance-Receipt is a Dictionary Structured Field <xref target="RFC9651"/>.  Members:</t><ul><li><tt>v</tt>: Integer, version; this document defines 1.</li><li><tt>rid</tt>: String, receipt identifier.</li><li><tt>h</tt>: Byte Sequence, SHA-256 of the response content.</li><li><tt>st</tt>: Token, one of <tt>sealed</tt> or <tt>pending</tt>.</li><li><tt>kid</tt>: String, signing key identifier.</li><li><tt>sig</tt>: Byte Sequence, Ed25519 signature.</li></ul><t>All members except <tt>sig</tt> are REQUIRED.  Unknown members MUST be ignored.  A field that fails to parse, repeats a member, or lacks a required member MUST be treated as absent.</t><artwork><![CDATA[
Compliance-Receipt: v=1, rid="APEX-NTR-1EEBEA8EE8EBF44A",
  h=:<base64>:, st=sealed, kid="apex-psi-2026", sig=:<base64>:
]]></artwork></section><section><name>Signature Input</name><t>The signature input is the serialization, per <xref target="RFC9651" section="4.1"/>, of the Dictionary containing all members other than <tt>sig</tt>, in the order v, rid, h, st, kid.  Signing only <tt>rid</tt> would allow status or digest substitution and is not permitted.  The signature is Ed25519 <xref target="RFC8032"/>; keys are discovered from <tt>/.well-known/compliance-receipt</tt> on the issuer origin.</t></section><section><name>Verification</name><t>A client recomputes SHA-256 of the received content, compares it with <tt>h</tt>, reconstructs the signature input, and verifies <tt>sig</tt>.  It MAY then resolve <tt>rid</tt> to the full receipt.  Status <tt>pending</tt> MUST NOT be presented as anchored.</t></section><section><name>Security Considerations</name><t>The header is set by the server; an intermediary able to rewrite responses can strip it.  It binds content, not the identity of the requester.  Content encodings change bytes; <tt>h</tt> is over the content as received after removing transfer codings but before content decoding.</t></section><section><name>IANA Considerations</name><t>This document has no IANA actions in this revision.  Registration in the Hypertext Transfer Protocol Field Name Registry will be requested only if this document advances.</t></section></middle><back><references><name>References</name><references><name>Normative References</name><reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119"><front><title>Key words for use in RFCs to Indicate Requirement Levels</title><author initials="S." surname="Bradner"/><date year="1997" month="March"/></front><seriesInfo name="BCP" value="14"/><seriesInfo name="RFC" value="2119"/></reference><reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174"><front><title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title><author initials="B." surname="Leiba"/><date year="2017" month="May"/></front><seriesInfo name="BCP" value="14"/><seriesInfo name="RFC" value="8174"/></reference><reference anchor="RFC9651" target="https://www.rfc-editor.org/info/rfc9651"><front><title>Structured Field Values for HTTP</title><author initials="M." surname="Nottingham"/><author initials="P-H." surname="Kamp"/><date year="2024" month="September"/></front><seriesInfo name="RFC" value="9651"/></reference><reference anchor="RFC8032" target="https://www.rfc-editor.org/info/rfc8032"><front><title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title><author initials="S." surname="Josefsson"/><author initials="I." surname="Liusvaara"/><date year="2017" month="January"/></front><seriesInfo name="RFC" value="8032"/></reference></references><references><name>Informative References</name><reference anchor="PSI" target="https://datatracker.ietf.org/doc/draft-singh-psi/"><front><title>Proof of Stateful Integrity (PSI): Signed, Merkle-Committed Receipts for Digital Records</title><author initials="K." surname="Singh"/><date year="2026" month="October"/></front><seriesInfo name="Internet-Draft" value="draft-singh-psi-02"/></reference></references></references></back></rfc>