<?xml version="1.0" encoding="utf-8"?>
<!-- name="GENERATOR" content="github.com/mmarkdown/mmark Mmark Markdown Processor - mmark.miek.nl" -->
<rfc version="3" ipr="trust200902" docName="draft-hopley-x402-rfc9421-binding-00" submissionType="IETF" category="info" xml:lang="en" xmlns:xi="http://www.w3.org/2001/XInclude" indexInclude="true">

<front>
<title abbrev="x402-rfc9421-binding">RFC 9421 HTTP Message Signatures Binding for x402 Payment Flows</title><seriesInfo value="draft-hopley-x402-rfc9421-binding-00" stream="IETF" status="informational" name="Internet-Draft"></seriesInfo>
<author initials="C." surname="Hopley" fullname="Christopher Hopley"><organization>AlgoVoi</organization><address><postal><street></street>
</postal><email>chopmob@gmail.com</email>
</address></author><date year="2026" month="May" day="30"></date>
<area>Independent Submission</area>
<workgroup>Independent Submission</workgroup>
<keyword>x402</keyword>
<keyword>agentic payments</keyword>
<keyword>HTTP Message Signatures</keyword>
<keyword>RFC 9421</keyword>
<keyword>RFC 9530</keyword>
<keyword>Content-Digest</keyword>
<keyword>transport signing</keyword>
<keyword>proxy-chain</keyword>
<keyword>JCS</keyword>
<keyword>RFC 8785</keyword>

<abstract>
<t>This document specifies the normative binding of RFC 9421 (HTTP
Message Signatures) and RFC 9530 (Digest Fields for HTTP) to the
x402-foundation/x402 challenge/response payment flow. It defines
the minimum covered-components set for an x402 challenge response
and a payment proof submission, the RFC 9530 Content-Digest
discipline, keyid resolution patterns, and the multi-hop
proxy-chain survival property that the x402 transport requires.</t>
<t>This binding is complementary to the existing
<tt>http-message-signatures</tt> extension in the x402 specification,
which specifies agent identity and registration (registrationUrl,
signatureSchemes, tags). This document specifies the normative
binding: which components MUST be covered, how Content-Digest is
handled, and how signatures survive multi-hop proxy chains. The two
compose cleanly in a deployment that uses both.</t>
<t>A reference implementation is provided as
<tt>algovoi-rfc9421-verifier</tt> on PyPI and npm (Apache 2.0), with
Python and TypeScript byte-for-byte parity, cross-validated against
external fixture sets.</t>
<t>This document is an Independent Submission filed per RFC 4846 and
is intended for publication as Informational. It is not an IETF
Standards Track document, does not represent IETF community
consensus, and has not been subject to review by an IETF Working
Group. Change control resides with the document author. The binding
specified is one approach among possible alternatives; implementers
may choose this approach, alternative approaches, or hybrid
approaches as appropriate to their requirements.</t>
</abstract>

</front>
<middle>
<section anchor="sect-1-introduction"><name>Introduction</name>

<section anchor="sect-1-1-motivation"><name>Motivation</name>
<t>The x402-foundation/x402 specification defines an HTTP 402-based
challenge/response payment flow. It specifies the payment-payload
signature semantics (which sign the payment proof content) but does
not normatively specify:</t>

<ul spacing="compact">
<li>The minimum set of RFC 9421 covered components on an x402
challenge response or payment proof submission.</li>
<li>The RFC 9530 Content-Digest discipline, including rejection rules
for unknown algorithms.</li>
<li>How RFC 9421 signatures survive multi-hop proxy chains in the
x402 transport topology.</li>
<li>The keyid resolution discipline for x402 message signing.</li>
</ul>
<t>This document closes those gaps by providing a normative binding
of RFC 9421 and RFC 9530 to the x402 challenge/response flow. The
binding is transport-layer and additive: it adds message-integrity
signing on the HTTP request/response envelope without modifying
the existing payment-payload signature semantics.</t>
</section>

<section anchor="sect-1-2-scope"><name>Scope</name>
<t>This document specifies:</t>

<ul spacing="compact">
<li>The HTTP headers carried by an x402 challenge or response that
adopts this binding (Section 3).</li>
<li>The minimum RFC 9421 covered-components set for an x402 challenge
response and a payment proof submission (Section 4).</li>
<li>The RFC 9530 Content-Digest discipline (Section 5).</li>
<li>The multi-hop proxy-chain survival property (Section 6).</li>
<li>The keyid resolution patterns (Section 7).</li>
<li>Composition with the x402 base specification and the AlgoVoi-
authored receipt format suite (Section 8).</li>
</ul>
<t>This document does NOT specify:</t>

<ul spacing="compact">
<li>The cryptographic algorithm suite. Algorithm selection is per
RFC 9421; this document imposes no additional algorithm
constraints beyond those in RFC 9421.</li>
<li>Agent identity or registration. Those are specified by the
existing <tt>http-message-signatures</tt> extension
(registrationUrl, signatureSchemes, tags).</li>
<li>Payment-payload signature semantics. The existing x402 base
specification covers those; this document adds transport-layer
signing only.</li>
</ul>
</section>

<section anchor="sect-1-3-relationship-to-other-documents"><name>Relationship to Other Documents</name>
<t>This document normatively references:</t>

<ul spacing="compact">
<li>RFC 9421 -- HTTP Message Signatures.</li>
<li>RFC 9530 -- Digest Fields for HTTP.</li>
<li>draft-hopley-x402-canonicalisation-jcs-v1 -- the JCS
canonicalisation discipline used for the signing base pin
treatment referenced in Section 3.</li>
</ul>
<t>This document is complementary to:</t>

<ul spacing="compact">
<li>The x402 <tt>http-message-signatures</tt> extension -- agent identity
and registration. This document specifies the normative binding
that the identity extension assumes.</li>
<li>draft-hopley-x402-compliance-receipt -- admission-time compliance
receipts. The two compose: this extension signs the transport
envelope; the compliance receipt records the admission-time
verdict over the payload.</li>
<li>draft-hopley-x402-settlement-attestation -- post-settlement
attestations. Transport-layer signing under this binding and
the settlement receipt are orthogonal and compose in a
deployment that uses both.</li>
</ul>
<t>This document is distinct from message-signing extensions for
agent-to-agent protocols. The Envoys signature/v1 extension
(proposed on the a2aproject/A2A repository) targets A2A task
envelopes, not x402 HTTP requests. A2A messages have a different
envelope shape than x402 HTTP challenge/response and require their
own composition. This extension covers only the x402 HTTP request
and response shape; the two layers are orthogonal.</t>
</section>
</section>

<section anchor="sect-2-conventions-and-definitions"><name>Conventions and Definitions</name>

<section anchor="sect-2-1-notation"><name>Notation</name>
<t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;,
&quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;NOT RECOMMENDED&quot;, &quot;MAY&quot;, and
&quot;OPTIONAL&quot; in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.</t>
</section>

<section anchor="sect-2-2-definitions"><name>Definitions</name>
<t><strong>x402 challenge response</strong>: the HTTP 402 response emitted by a
resource server per the x402 base specification, carrying the
payment challenge.</t>
<t><strong>payment proof submission</strong>: the HTTP request carrying the
buyer-agent's payment proof, submitted to the resource server per
the x402 base specification.</t>
<t><strong>covered components</strong>: the set of RFC 9421 component identifiers
included in the <tt>Signature-Input</tt> header and covered by the
detached signature.</t>
<t><strong>signing base</strong>: the canonical byte string constructed per RFC 9421
Section 2.5 over which the signature is computed.</t>
<t><strong>proxy-chain survival</strong>: the property that an RFC 9421 signature
remains verifiable at the final destination after traversing one or
more intermediate proxy hops, provided no covered component is
modified in transit.</t>
</section>
</section>

<section anchor="sect-3-normative-format"><name>Normative Format</name>
<t>An x402 challenge or response that adopts this binding MUST carry
the following HTTP headers:</t>

<ul spacing="compact">
<li><tt>Signature-Input</tt>: per RFC 9421, with covered components from
the closed set defined in Section 4.</li>
<li><tt>Signature</tt>: per RFC 9421, carrying the detached signature over
the signing base.</li>
<li><tt>Content-Digest</tt>: per RFC 9530, carrying a digest of the message
body under the discipline defined in Section 5.</li>
</ul>
<t>The following header is OPTIONAL:</t>

<ul spacing="compact">
<li><tt>Signature-Algorithm</tt>: an extension parameter indicating the
algorithm class, when the verifier needs this information at
admission time without resolving the keyid.</li>
</ul>
<t>The signing base is constructed per RFC 9421 Section 2.5. When the
x402 payload body is canonicalised under the JCS discipline pinned
by draft-hopley-x402-canonicalisation-jcs-v1, the
<tt>content-digest</tt> covered component commits the signature to the
JCS-canonical bytes of the body. Component identifiers are quoted
per RFC 9421 Section 2.5. The <tt>@signature-params</tt> component is
included in the signing base by RFC 9421 mandate.</t>
</section>

<section anchor="sect-4-covered-components"><name>Covered Components for x402 Messages</name>

<section anchor="sect-4-1-challenge-response"><name>Challenge Response</name>
<t>Implementations MUST cover the following RFC 9421 components on an
x402 challenge response:</t>

<table>
<thead>
<tr>
<th>Component</th>
<th>Source</th>
<th>Rationale</th>
</tr>
</thead>
<tbody>
<tr>
<td><tt>@method</tt></td>
<td>HTTP method of the request that triggered the 402</td>
<td>Binds the signature to the request method</td>
</tr>
<tr>
<td><tt>@authority</tt></td>
<td>HTTP authority of the resource being challenged</td>
<td>Binds the signature to the resource origin</td>
</tr>
<tr>
<td><tt>@path</tt></td>
<td>HTTP path of the resource being challenged</td>
<td>Binds the signature to the resource path</td>
</tr>
<tr>
<td><tt>content-digest</tt></td>
<td>RFC 9530 Content-Digest of the response body</td>
<td>Binds the signature to the body integrity</td>
</tr>
</tbody>
</table>
<t>Implementations MAY additionally cover RFC 9421 derived components
per facilitator-specific need. The minimum covered set above is
normative.</t>
</section>

<section anchor="sect-4-2-payment-proof"><name>Payment Proof Submission</name>
<t>The covered set on a payment proof submission MUST include:</t>

<table>
<thead>
<tr>
<th>Component</th>
<th>Source</th>
</tr>
</thead>
<tbody>
<tr>
<td><tt>@method</tt></td>
<td>HTTP method of the proof submission</td>
</tr>
<tr>
<td><tt>@path</tt></td>
<td>HTTP path of the proof submission</td>
</tr>
<tr>
<td><tt>content-digest</tt></td>
<td>RFC 9530 Content-Digest of the proof body</td>
</tr>
<tr>
<td><tt>created</tt></td>
<td>RFC 9421 created parameter</td>
</tr>
</tbody>
</table>
<t>The <tt>created</tt> parameter is REQUIRED on payment proof submissions to
bind the signature to a specific point in time and prevent replay
of a valid payment proof against a fresh challenge.</t>
</section>

<section anchor="sect-4-3-minimum-set-normative"><name>Normative Status of the Minimum Set</name>
<t>The covered-components minimum sets defined in Sections 4.1 and 4.2
are normative. Implementations MUST include the minimum set.
Implementations MAY add additional components; they MUST NOT remove
components from the minimum set. New mandatory components MAY be
introduced only by a normative successor document
(<tt>rfc9421-x402-binding-v2</tt> or higher).</t>
</section>
</section>

<section anchor="sect-5-content-digest-discipline"><name>RFC 9530 Content-Digest Discipline</name>
<t>Implementations MUST emit <tt>Content-Digest</tt> using the <tt>sha-256</tt>
algorithm (mandatory per RFC 9530) for all x402 message bodies.</t>
<t>Implementations SHOULD additionally emit <tt>sha-512</tt> for bodies at or
above 4096 bytes, per RFC 9530 implementation guidance.</t>
<t>Verifiers MUST accept both <tt>sha-256</tt> and <tt>sha-512</tt> digest
algorithms.</t>
<t>Verifiers MUST NOT silently skip Content-Digest verification when
only an unsupported algorithm is present in the header. When the
<tt>Content-Digest</tt> header is present but contains only algorithms the
verifier does not support, the verifier MUST treat the header as if
no usable digest were present and MUST reject the message. Silent
skip would defeat the body-integrity binding the signature
provides.</t>
</section>

<section anchor="sect-6-proxy-chain-survival"><name>Multi-Hop Proxy-Chain Survival</name>
<t>The RFC 9421 signature over an x402 message MUST survive
byte-identically across multi-hop proxy chains (for example, CDN
edge to reverse proxy to application server) provided that each
intermediate hop:</t>

<ul spacing="compact">
<li>Performs TLS re-termination only.</li>
<li>Does not modify any covered component (method, authority, path,
content-digest, created where present).</li>
<li>Does not modify the <tt>Content-Digest</tt> header.</li>
</ul>
<t>Verifiers SHOULD re-derive the signing base from the as-received
headers without normalising them. The signature verifies
byte-for-byte against the bytes the original signer covered,
regardless of the number of intervening proxy hops.</t>
<t>The conformance fixture set <tt>rfc9421_proxy_chain_v0</tt> in the
AlgoVoi JCS conformance vectors repository provides byte-level
proof of this property across a three-hop proxy chain topology.
See Appendix A for the repository reference.</t>
</section>

<section anchor="sect-7-keyid-resolution"><name>Keyid Resolution</name>
<t>The <tt>keyid</tt> parameter on the <tt>Signature-Input</tt> header MUST be a
stable identifier for the signing key. Implementations MAY use
either of the following resolution patterns:</t>

<ul spacing="compact">
<li><strong>DID-based</strong>: <tt>keyid</tt> is a DID URI (e.g. <tt>did:web:...</tt>). The
verifier resolves the DID document to obtain the public key
material, using the standard DID resolution procedure for the
DID method.</li>
<li><strong>HTTPS-URL-based</strong>: <tt>keyid</tt> is an HTTPS URL that returns a JSON
object containing the public key, following the Envoys
signature/v1 convention. The verifier fetches the URL to obtain
the public key material.</li>
</ul>
<t>Both patterns MUST be supported by conformant verifiers. A verifier
that supports only one pattern MUST reject <tt>Signature-Input</tt> headers
whose <tt>keyid</tt> is in the unsupported format rather than treating
verification as passed.</t>
</section>

<section anchor="sect-8-composition"><name>Composition with the x402 Base Specification</name>

<section anchor="sect-8-1-flow"><name>Signing Flow</name>
<t>This binding composes with the x402 challenge/response flow as
follows:</t>

<ol spacing="compact">
<li>Resource server emits an HTTP 402 challenge per the x402 base
specification.</li>
<li>With this binding, the 402 response carries <tt>Signature-Input</tt>,
<tt>Signature</tt>, and <tt>Content-Digest</tt> headers per Section 3.</li>
<li>Buyer-agent verifies the signature on the challenge before
constructing a payment proof.</li>
<li>Payment proof submission carries the same header set, signed by
the buyer-agent's key, with the covered set defined in
Section 4.2.</li>
<li>Resource server verifies the payment proof signature before
accepting the proof.</li>
</ol>
</section>

<section anchor="sect-8-2-additive-property"><name>Additive Property</name>
<t>The transport-layer message-integrity signing defined by this
binding is additive to the existing x402 payment-payload validation.
Existing x402 payload signatures, which sign the payment proof
content per the x402 base specification, are unchanged. This
binding adds an additional layer of transport-layer signing on the
HTTP request/response envelope.</t>
</section>

<section anchor="sect-8-3-composition-with-receipts"><name>Composition with Receipt Formats</name>
<t>This binding composes with the AlgoVoi-authored receipt format
suite:</t>

<ul spacing="compact">
<li>draft-hopley-x402-compliance-receipt: the compliance receipt
covers admission-time payload decisions; this binding covers
transport-layer message integrity. The two are orthogonal.</li>
<li>draft-hopley-x402-settlement-attestation: the settlement
attestation covers post-settlement categorical outcome; this
binding covers the transport-layer signing on the messages
that preceded settlement. The two compose without conflict.</li>
<li>draft-hopley-x402-composite-trust-query: a CTQ response
evaluated over a chain that includes transport-signed messages
may cite the transport-binding status as an evidence class in
the composite verdict.</li>
</ul>
</section>
</section>

<section anchor="sect-9-backward-compatibility"><name>Backward Compatibility</name>
<t>This binding is additive. Resource servers that do not adopt RFC
9421 signing on x402 messages are unaffected. Buyer-agents that do
not verify transport-layer signatures continue to function as
before, subject to their own signature discipline. Adoption is
opt-in per-deployment.</t>
<t>A resource server that adopts this binding MUST NOT reject x402
requests from buyer-agents that do not include <tt>Signature-Input</tt>
headers, unless the resource server's policy explicitly requires
transport-layer signing. The binding is additive at the sender
level; enforcement is a resource-server policy decision.</t>
</section>

<section anchor="sect-10-iana-considerations"><name>IANA Considerations</name>
<t>This document defines no new IANA registrations. The HTTP header
fields referenced (<tt>Signature-Input</tt>, <tt>Signature</tt>, <tt>Content-Digest</tt>,
<tt>Signature-Algorithm</tt>) are registered by RFC 9421 and RFC 9530
respectively.</t>
<t>The extension identifier <tt>rfc9421-x402-binding-v1</tt> is an x402
extension identifier. Registration with any IANA registry is not
requested at this time.</t>
</section>

<section anchor="sect-11-security-considerations"><name>Security Considerations</name>

<section anchor="sect-11-1-covered-component-scope"><name>Covered Component Scope</name>
<t>The minimum covered set (method, authority, path, content-digest)
binds the signature to the specific resource and its body. An
attacker cannot replay a valid challenge response against a
different resource or path without invalidating the signature.
Implementations that add additional covered components increase
the binding strength; they MUST NOT remove components from the
minimum set.</t>
</section>

<section anchor="sect-11-2-replay-protection"><name>Replay Protection</name>
<t>The <tt>created</tt> parameter is REQUIRED on payment proof submissions
(Section 4.2). This binds the proof signature to a specific
instant and prevents replay of a valid payment proof against a
fresh challenge from the same resource server. Resource servers
SHOULD enforce a <tt>created</tt> freshness window appropriate to their
risk model.</t>
</section>

<section anchor="sect-11-3-content-digest-bypass"><name>Content-Digest Bypass</name>
<t>The rejection rule in Section 5 (verifiers MUST NOT silently skip
Content-Digest when only an unsupported algorithm is present) is a
security requirement. Silent skip would allow an attacker to
present a message with a body that differs from what the signer
covered, by substituting an unsupported algorithm name in the
Content-Digest header. The mandatory rejection rule closes this
gap.</t>
</section>

<section anchor="sect-11-4-proxy-chain-integrity"><name>Proxy-Chain Integrity</name>
<t>The proxy-chain survival property defined in Section 6 requires
that covered components and the Content-Digest header are not
modified by intermediate hops. A proxy that modifies any covered
component (e.g. rewrites the Host header that maps to
<tt>@authority</tt>) will invalidate the signature at the destination.
Operators deploying this binding in environments with header-
rewriting proxies MUST ensure that covered components are not
modified in transit, or MUST exclude the affected components from
the covered set (subject to the minimum-set constraint).</t>
</section>

<section anchor="sect-11-5-keyid-staleness"><name>Keyid Staleness</name>
<t>Both DID-based and HTTPS-URL-based keyid resolution fetch public
key material at verification time. If the key at the resolution
endpoint changes between signature creation and verification (key
rotation), verification will fail. Implementations SHOULD cache
resolved keys with an appropriate TTL and SHOULD implement key
rollover signalling per their chosen DID method or HTTPS-URL
convention.</t>
</section>
</section>

</middle>
<back>
<section anchor="sect-12-references"><name>References</name>

<section anchor="sect-12-1-normative-references"><name>Normative References</name>

<ul spacing="compact">
<li>[RFC2119] Bradner, S., &quot;Key words for use in RFCs to Indicate
Requirement Levels&quot;, BCP 14, RFC 2119, DOI 10.17487/RFC2119,
March 1997.</li>
<li>[RFC8174] Leiba, B., &quot;Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words&quot;, BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017.</li>
<li>[RFC9421] Backman, A., Richer, J., and M. Sporny, &quot;HTTP Message
Signatures&quot;, RFC 9421, DOI 10.17487/RFC9421, February 2024.</li>
<li>[RFC9530] Polli, R. and L. Pardue, &quot;Digest Fields for HTTP&quot;,
RFC 9530, DOI 10.17487/RFC9530, February 2024.</li>
<li>draft-hopley-x402-canonicalisation-jcs-v1, Hopley, C., &quot;JCS
Canonicalisation Discipline for Agentic-Payment Receipts&quot;,
draft-hopley-x402-canonicalisation-jcs-v1-04, May 2026.</li>
</ul>
</section>

<section anchor="sect-12-2-informative-references"><name>Informative References</name>

<ul spacing="compact">
<li>[RFC8032] Josefsson, S. and I. Liusvaara, &quot;Edwards-Curve Digital
Signature Algorithm (EdDSA)&quot;, RFC 8032, DOI 10.17487/RFC8032,
January 2017.</li>
<li>[RFC8785] Rundgren, A., Jordan, B., and S. Erdtman, &quot;JSON
Canonicalization Scheme (JCS)&quot;, RFC 8785, DOI 10.17487/RFC8785,
June 2020.</li>
<li>draft-hopley-x402-compliance-receipt-00, Hopley, C., &quot;Categorical
Compliance Screening Receipt Format for Agentic-Payment Flows&quot;,
May 2026.</li>
<li>draft-hopley-x402-settlement-attestation-02, Hopley, C.,
&quot;Categorical Settlement Attestation Format for Agentic-Payment
Flows&quot;, May 2026.</li>
<li>draft-hopley-x402-composite-trust-query-02, Hopley, C.,
&quot;Composite Trust Query Response Format for Agentic-Payment
Audit Chains&quot;, May 2026.</li>
<li>AlgoVoi, &quot;Substrate Authorship and Provenance&quot;,
<eref target="https://docs.algovoi.co.uk/substrate-authorship-provenance">https://docs.algovoi.co.uk/substrate-authorship-provenance</eref></li>
</ul>
</section>
</section>

<section anchor="appendix-a-reference-implementation"><name>Appendix A. Reference Implementation (Informative)</name>
<t>The following open-source implementation conforms to this binding:</t>

<ul>
<li><t><tt>algovoi-rfc9421-verifier</tt> (Python) on PyPI:
<eref target="https://pypi.org/project/algovoi-rfc9421-verifier/">https://pypi.org/project/algovoi-rfc9421-verifier/</eref>
Apache 2.0 licensed. Implements RFC 9421 verification with
default signing base mode <tt>rfc9421</tt>. 23 internal unit tests
passing.</t>
</li>
<li><t><tt>@algovoi/rfc9421-verifier</tt> (TypeScript) on npm:
<eref target="https://www.npmjs.com/package/@algovoi/rfc9421-verifier">https://www.npmjs.com/package/@algovoi/rfc9421-verifier</eref>
Byte-for-byte parity with the Python sibling. Apache 2.0
licensed. 18 internal unit tests passing.</t>
</li>
</ul>
<t>Cross-validated against external fixture sets: 7 of 7 verifiable
vectors PASS across <tt>envoys-rfc9421</tt> (jschoemaker/Envoys-public,
5 positive verifiable plus 2 manifest-declared non-verifiable) and
<tt>hippo-rfc9421</tt> (opena2a-org/a2a-idf-conformance, 2 composition
vectors).</t>
<t>Conformance fixture set for proxy-chain survival:</t>

<artwork><![CDATA[https://github.com/chopmob-cloud/algovoi-jcs-conformance-vectors/tree/main/vectors/rfc9421_proxy_chain_v0
]]></artwork>
<t>The <tt>rfc9421_proxy_chain_v0</tt> fixture set provides byte-level
reference vectors for the three-hop proxy-chain topology described
in Section 6, including the as-received header bytes at each hop
and the expected signing-base bytes at the final destination.</t>
</section>

<section anchor="appendix-b-acknowledgments"><name>Appendix B. Acknowledgments</name>
<t>This document, the binding it specifies, and the conformance vectors
derived from it are AlgoVoi work under sole AlgoVoi authorship.
Substrate authorship history is catalogued at
<eref target="https://docs.algovoi.co.uk/substrate-authorship-provenance">https://docs.algovoi.co.uk/substrate-authorship-provenance</eref>.</t>
<t>The canonicalisation discipline referenced in Section 3 is
normatively specified in draft-hopley-x402-canonicalisation-jcs-v1
under the same authorship.</t>
<t>The author acknowledges Anders Rundgren as the editor of RFC 8785,
the JSON Canonicalization Scheme referenced by the canonicalisation
discipline, and the authors of RFC 9421 (Backman, Richer, Sporny)
and RFC 9530 (Polli, Pardue) whose specifications this binding
composes with.</t>
</section>
</back>

</rfc>
