rfc9421_proxy_chain_v1) — one half
of AlgoVoi’s authored L1 alongside the JCS canonicalisation substrate,
dated in draft-hopley-x402-rfc9421-binding. Build L2 freely; the one ask is to attribute the L1
(keep the NOTICE, import by hash).
Python (PyPI)
pip install algovoi-rfc9421-signerTypeScript (npm)
npm install @algovoi/rfc9421-signerWhat the signer produces
A singlesign_request() / signRequest() call returns three headers ready to attach
to your HTTP request:
The signing base follows RFC 9421 §2.5:
@method is case-preserved (uppercase for HTTP),
and a final @signature-params line is appended. This is the format expected by
algovoi-rfc9421-verifier v0.3.0+ and any other RFC 9421-compliant verifier.
Quick start
Python
TypeScript
Signing a /compliance/screen request
The AlgoVoi gateway verifies inbound request signatures on /compliance/screen
when Signature-Input, Signature, and X-Signer-Pubkey are present.
The response includes request_signature_verified: true when the signature checks out:
request_signature_verified is null when the
signature headers are absent.
Covered components
By default,sign_request() covers:
@method, @authority, @path, content-digest, created.
This default carries created as a covered component, matching the legacy rfc9421_proxy_chain_v0 coverage and the AlgoVoi gateway’s verifier expectations. Strict RFC 9421 treats created as a signature parameter, not a covered component; the RFC 9421 §2.5-conformant rfc9421_proxy_chain_v1 set therefore covers only @method, @authority, @path, content-digest, with created carried as a parameter. Pass an explicit covered_components list to emit the conformant coverage. See the conformance vectors for both.
Cross-implementation parity
Python uses PyNaCl; TypeScript uses@noble/ed25519. Both derive the same public key
from the same Ed25519 seed and produce byte-identical signatures for the same signing base.
Test seed: 9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae3d55
Derived public key: 700e2ce7c4b674427eab27ba820bcf6f0faebe68e09fe8564292114e41dc6a41
This keypair is used throughout the signer and verifier test suites for
byte-reproducible fixture generation.
See also
- RFC 9421 Verifier — companion verifier package
- Canonicalisation substrate — JCS RFC 8785 discipline
- Conformance vectors — cross-implementation vector corpus
- Compliance gate — gateway compliance enforcement