The draft-hardt-httpbis-signature-key draft is being revised, and @hellocoop/httpsig 2.0 (#65) tracks -07. It is not wire compatible with 1.x in either direction, and the protocol has no version negotiation, so both ends of a deployment must move together.
@hellocoop/email-verification needs a conformance pass before it can move.
It is currently not being exercised against 2.0
email-verification/node_modules/@hellocoop/httpsig is a real directory pinned at the published 1.7.1, not a symlink to the workspace package. It shadows the workspace symlink at packages-js/node_modules, so npm test --workspace=email-verification and tsc --noEmit both resolve 1.7.1 regardless of what the workspace httpsig contains.
This means the suite currently passes against 2.0 only because it never sees it. Worth fixing first, or the rest of this work will look done when it is not.
Known breakage
strictAAuth is removed in 2.0. src/issuance/verify-request.ts:63 passes it:
const verifyOptions: VerifyOptions = {
maxClockSkew,
strictAAuth: true,
}
This is a compile error against 2.x — the option is gone because covering signature-key is a specification requirement rather than a profile choice and can no longer be disabled. The fix is to delete the line; the behaviour it requested is now the only behaviour. The comment at line 85 referring to strictAAuth=true needs updating too.
The dependency range is ^1.7.0, which will not resolve 2.x.
Protocol-level change, not just a dependency bump
EVP conveys the browser-generated public key with the hwk scheme so the issuer can bind it into the verification token. Under -07:
- A conveyed JWK must carry a fully-specified
alg (Ed25519, not EdDSA). crypto.subtle.exportKey("jwk", ...) does not set alg, so whatever generates the browser key must stamp it.
- The
hwk header gains a required alg parameter: sig=hwk;alg="Ed25519";kty="OKP";crv="Ed25519";x="...". In -06 that parameter was forbidden, so this is a two-way break on the wire.
- A
kid parameter on hwk is now rejected.
That affects the EVP wire format and anything already deployed against it, not only this package. Worth deciding deliberately rather than inheriting it from a version bump.
References
The draft is not adopted and -07 is not final, so there is no urgency to move — the point is to know what moving costs before 2.0 leaves prerelease.
Revision correction: this work lands in -08, not -07. -07 was published to the datatracker on 2026-07-05 and was editorial (an Introduction paragraph citing AAuth and Email Verification). The hwk alg parameter was forbidden in -06 and -07 and becomes required in -08, so the break is -07 → -08. References to -07 below should be read as -08.
The
draft-hardt-httpbis-signature-keydraft is being revised, and@hellocoop/httpsig2.0 (#65) tracks-07. It is not wire compatible with 1.x in either direction, and the protocol has no version negotiation, so both ends of a deployment must move together.@hellocoop/email-verificationneeds a conformance pass before it can move.It is currently not being exercised against 2.0
email-verification/node_modules/@hellocoop/httpsigis a real directory pinned at the published 1.7.1, not a symlink to the workspace package. It shadows the workspace symlink atpackages-js/node_modules, sonpm test --workspace=email-verificationandtsc --noEmitboth resolve 1.7.1 regardless of what the workspacehttpsigcontains.This means the suite currently passes against 2.0 only because it never sees it. Worth fixing first, or the rest of this work will look done when it is not.
Known breakage
strictAAuthis removed in 2.0.src/issuance/verify-request.ts:63passes it:This is a compile error against 2.x — the option is gone because covering
signature-keyis a specification requirement rather than a profile choice and can no longer be disabled. The fix is to delete the line; the behaviour it requested is now the only behaviour. The comment at line 85 referring tostrictAAuth=trueneeds updating too.The dependency range is
^1.7.0, which will not resolve 2.x.Protocol-level change, not just a dependency bump
EVP conveys the browser-generated public key with the
hwkscheme so the issuer can bind it into the verification token. Under-07:alg(Ed25519, notEdDSA).crypto.subtle.exportKey("jwk", ...)does not setalg, so whatever generates the browser key must stamp it.hwkheader gains a requiredalgparameter:sig=hwk;alg="Ed25519";kty="OKP";crv="Ed25519";x="...". In-06that parameter was forbidden, so this is a two-way break on the wire.kidparameter onhwkis now rejected.That affects the EVP wire format and anything already deployed against it, not only this package. Worth deciding deliberately rather than inheriting it from a version bump.
References
httpsig/MIGRATING-2.0.mdThe draft is not adopted and
-07is not final, so there is no urgency to move — the point is to know what moving costs before 2.0 leaves prerelease.Revision correction: this work lands in
-08, not-07.-07was published to the datatracker on 2026-07-05 and was editorial (an Introduction paragraph citing AAuth and Email Verification). Thehwkalgparameter was forbidden in-06and-07and becomes required in-08, so the break is-07→-08. References to-07below should be read as-08.