OEM Cookbook · Wallet Attestation onboarding · HAIP §5.11
Get your OEM app a Wallet Attestation.
A Wallet Attestation (WA, sometimes called WIA) is a short-lived JWT that binds the wallet's ECDSA-P256 public key to a claim from the tenant that the wallet is legitimate. HAIP-conformant verifiers demand it (via OAuth-Client-Attestation) to distinguish a real European Digital Identity Wallet from a scripted client. This cookbook covers the runtime mint via /wallet-attestation.ashx and the presentation of the WA to verifiers.
Mint. The WA JWT is HS256-signed with a per-tenant HMAC key (see /wallet-attestation.ashx). The tenant's OIDC access token gates access; the mint binds the wallet's public JWK to the acting sub and returns a JWT with typ=wallet-attestation+jwt.
1 OEM onboarding
Email info@aloaha.com with:
- Company legal name + registration number, jurisdiction, VAT ID.
- Technical contact: name, e-mail, phone.
- OIDC client name + redirect URIs (your app's custom URL scheme).
- Intended deployment scope (regions, expected user count in year 1).
Aloaha provisions your OEM OIDC client_id against a tenant of your choice (shared managed, per-OEM subdomain, or on-premise). WA minting works out of the box.
2 Mint a WA (C3)
POST /wallet-attestation.ashx with the wallet public JWK and an optional nonce. Body:
POST /wallet-attestation.ashx HTTP/1.1
Authorization: Bearer <OIDC access token>
Content-Type: application/json
{
"walletPublicJwk": { "kty":"EC", "crv":"P-256", "x":"...", "y":"..." },
"nonce": "<from verifier request, or omit>"
}
Response:
{
"wallet_attestation": "<compact JWT>",
"token_type": "wallet_attestation+jwt",
"expires_in": 86400,
"iat": <unix>, "exp": <unix>,
"sub": "<RFC 7638 JWK thumbprint of walletPublicJwk>",
"iss": "https://<tenant>/wallet-attestation"
}
The JWT header carries typ=wallet-attestation+jwt (hyphen — matches HAIP §5.11); the response body's token_type field uses underscore. Cache the JWT until exp - 60s.
3 Present the WA on OID4VP responses
Attach the WA JWT as an HTTP header on the direct_post to the verifier's response_uri:
OAuth-Client-Attestation: <WA JWT>
Verifiers advertise WA requirement in their JAR's client_metadata. When absent, presenting the WA anyway is harmless — conformant verifiers ignore unknown headers. See Present cookbook for where in the flow to attach.
4 Rotation + revocation
The per-tenant HMAC key is stored server-side; token expiry is 24 h so a compromise window is bounded. In case of suspected compromise, contact info@aloaha.com and the tenant's HMAC key is rotated (all outstanding WAs invalidated). No client-side action required beyond fetching a fresh WA on the next request.
Next: Vault sync →
Previous: present
API reference