From ap2-agentic-payments
Implements AP2 cryptographic signing: hardware-backed user/merchant signatures, VDC integrity, key management, attestation flows. Use for AP2 mandate signing/verification.
npx claudepluginhub orcaqubits/agentic-commerce-skills-plugins --plugin ap2-agentic-paymentsThis skill is limited to using the following tools:
**Fetch live docs**:
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Automates semantic versioning and release workflow for Claude Code plugins: bumps versions in package.json, marketplace.json, plugin.json; verifies builds; creates git tags, GitHub releases, changelogs.
Fetch live docs:
https://ap2-protocol.org/specification/ for cryptographic signing requirementshttps://ap2-protocol.org/topics/privacy-and-security/ for security architecturesite:github.com google-agentic-commerce AP2 signature mandate for signing implementationsap2 protocol VDC signing cryptographic hardware-backed for community guidesAP2's core innovation is verifiable intent — cryptographic proof that:
AP2 VDCs use the SD-JWT with Key Binding (+kb) format, enabling selective disclosure and cryptographic holder binding.
AP2 supports ECDSA with the following algorithm/curve combinations:
Before signing, JSON payloads are canonicalized using JCS (RFC 8785) to produce a deterministic byte representation. This ensures that logically equivalent JSON objects produce the same signature regardless of key ordering or whitespace.
The merchant_authorization field on Cart Mandates uses Detached JWS format:
<base64url-header>..<base64url-signature>
Note the double dots — the payload is omitted from the JWS because it is the JCS-canonicalized CartContents, which the verifier already possesses.
JWT header MUST include:
alg — The signing algorithm (ES256, ES384, or ES512)kid — Key identifier for the signing keyJWT payload for merchant_authorization includes:
iss — Issuer (merchant identifier)aud — Audienceiat — Issued-at timestampexp — Expiration timestampjti — Unique JWT identifiercart_hash — Hash of the canonicalized cart contents| VDC | Signed By | What's Covered |
|---|---|---|
| Cart Mandate | Merchant + User | Exact items, prices, totals, payment methods |
| Intent Mandate | User | Shopping constraints, categories, intent, TTL |
| Payment Mandate | User | Payment method selection, transaction amount |
The user signing step (especially for Cart and Payment Mandates) involves:
This is a load-bearing security step — the agent cannot bypass it.
Verifiers check:
Signed mandates provide non-repudiation for disputes:
VDC signatures prevent MITM attacks:
Fetch the specification for exact signature formats, supported algorithms, attestation requirements, and verification procedures before implementing.