docs(ap2): clarify ES512 signature scope - #618
Conversation
|
Really like the alg↔curve binding you added here — that's the right safeguard. One thing I noticed while checking it against the schema: I opened #625 with the one-line |
|
Thanks for digging into this and for validating the example against #625 — I For now, I would prefer to keep #625 separate rather than fold it into this One small consistency point for that review: the top-level The two changes remain technically compatible, and your confirmation that the |
|
A concise review handoff:
I will respond promptly to any scope or wording feedback. |
|
|
||
| * **Algorithm:** per AP2's Checkout JWT signing rule — AP2 v0.2 requires | ||
| ECDSA (`ES256`/`ES384`/`ES512`); see the note below. | ||
| ECDSA (`ES256`/`ES384`/`ES512`); see the note below and |
There was a problem hiding this comment.
worth noting that we are likely to remove this restriction in FIDO in 0.3 (and just mandate randomness in the Checkout. But this seems fine for now.
There was a problem hiding this comment.
Thanks for the heads-up, Gareth. That makes sense. This PR keeps the
requirement explicitly scoped to AP2 v0.2 and retains the note pointing to
google-agentic-commerce/AP2#268. Once FIDO 0.3 publishes the normative Checkout
payload entropy requirement, we can follow up to align UCP with it rather than
anticipating the final wording here.
| When a verifier selects a key, it **MUST** ensure that the protected JWS | ||
| `alg` is compatible with the key's curve according to the table above. This | ||
| binding follows [RFC 8725 Section 3.1](https://datatracker.ietf.org/doc/html/rfc8725#section-3.1). | ||
| If the JWK includes its optional `alg` member, that value **MUST** also match |
There was a problem hiding this comment.
I'd just mandate this be set, it's best practices.
There was a problem hiding this comment.
Thanks for the suggestion - agreed. I updated this so keys used with the AP2
extension MUST include the JWK alg, and a missing or mismatched value makes
the AP2 signature invalid. The requirement remains AP2-scoped and does not
change the global profile JWK schema.
|
Thanks again @GarethCOliver for the review. I pushed
The focused cspell, markdownlint, and @amithanda, could you please help approve the pending workflow runs and route |
Summary
ES256/P-256,ES384/P-384, andES512/P-521 pairingsalgto the selected key'scurve and optional JWK
algES512profile key examplesignature baseline
Motivation
AP2 currently accepts
ES512for its JWS objects, while the shared HTTPMessage Signatures table stops at P-384/
ES384. That can be read as eitheran omitted global requirement or an AP2-specific extension.
This change takes the AP2-scoped interpretation already implied by the current
specification: AP2 owns its JWS algorithm policy, while reusing UCP's JWK
publication, discovery, and rotation mechanisms.
Scope
This is a documentation clarification only. It does not:
ES512to UCP HTTP Message SignaturesES256implementation baselineprofile.jsonor any generated schemaThe existing profile JWK vocabulary is open, so the annotated P-521 example is
schema-compatible without a core schema change.
Validation
git diff --checkopen JWK vocabulary
scripts/test_validate_examples.py: 34 contract checks passed; its singleintegration check could not run locally because the
ucp-schemabinary isunavailable
the same missing local
ucp-schemadependencyThe PR Docs workflow will run schema example validation and the strict site
build with the repository's complete CI toolchain.
Closes #571