Body
| Field | Type | Required | Description |
|---|---|---|---|
did | string | ✅ | DID derived from seed/PIN unlock |
signature | string | ✅ | Base64 signature over the challenge using unlocked Ed25519 key |
challenge | string | ✅ | Value returned by /api/auth/challenge (expires ~5 minutes) |
dilithium_pubkey_hash | string | ➖ | Optional PQ hash for cross-verifying the Dilithium key used during credential issuance |
Preconditions
- User enters PIN → decrypts seed phrase → re-derives auth token (PBKDF2-HMAC-SHA256).
- Client calls
/api/auth/challengewithdidto obtain nonce. - Wallet signs nonce with Ed25519 secret key (derived from same seed) and submits here.
Response
200 OK
Authorization: Bearer <token> plus X-User-DID. Credential offer acceptance (POST /api/wallet/offers/{id}/accept) reuses the unlocked keys to sign the per-offer challenge, binding the issued credential to this DID.