Help us improve
Share bugs, ideas, or general feedback.
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-paymentsHow this skill is triggered — by the user, by Claude, or both
Slash command
/ap2-agentic-payments:ap2-cryptographic-signingThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Fetch live docs**:
Implements AP2 VDC framework with tamper-evident signed credentials for agentic payments. Covers issuance, verification, holder binding, SD-JWT format, and mandate types.
Implements UCP AP2 Mandates for autonomous agent payments using SD-JWT credentials, JWS merchant signatures, and Agent Payments Protocol in 7-step flow with security lock.
Provides ACP patterns for idempotency, error handling, 3D Secure flows, request signing, rate limiting, monitoring, and security best practices. Use when designing architecture or addressing production issues.
Share bugs, ideas, or general feedback.
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.