Skip to content

feat: Add WIA wallet-provider endpoint, change KA structure, add persistent WIA/KA revocation status lists - #141

Open
vmarkop wants to merge 15 commits into
masterfrom
feat/wua-lifecycle
Open

vmarkop wants to merge 15 commits into
masterfrom
feat/wua-lifecycle

Conversation

@vmarkop

@vmarkop vmarkop commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Add wallet-provider lifecycle support for Wallet Instance Attestations (WIAs) and Key Attestations (KAs), based on WE BUILD CS-04.

Each generated attestation receives a distinct, persisted status reference. Revoking an account invalidates all its WIA/KA entries and prevents further attestation issuance.

Changes

  • Add authenticated WIA generation with client identity, authorization-server audience, and proof-of-possession key binding.
  • Extend KA claims with key-storage and user-authentication assurance, certification URL, and revocation status.
  • Publish signed Token Status List JWTs through a public endpoint, using the provider signing identity, ZLIB compression, and a 60-second lifetime.
  • Persist random, non-reused status indices with a 32-day (1+31) maintenance period. Unallocated, revoked, and maintenance-expired entries report invalid.
  • Add authenticated self-revocation.
  • Canonicalize certificate chains for JOSE x5c headers.

Deployment and verification

Migration is required to get the new status list database tables - run yarn typeorm migration:run before starting the updated backend to create the three status tables.

Manually verify issuance and revocation using disposable accounts:

  1. Generate WIA and KA tokens, fetch their status-list URIs without authentication, and verify their signatures and indexed status bits.
  2. Revoke one account and confirm all its entries become invalid, another account remains valid, and fresh issuance returns 403.
  3. Restart the backend and confirm status persists.

Limitations

  • Operator revocation is not implemented, as there is no concept of an operator role in wwWallet that manages other accounts.
  • Revoking an account revokes all WIA/KA attestations associated with it across all devices and prevents that account from obtaining new attestations. Individual devices cannot be revoked separately.
  • WIA and KA tokens expire after 15 seconds. The frontend must obtain a fresh WIA before delayed token exchanges and refresh requests.

@vmarkop vmarkop changed the title feat: Add WIA wallet-provider endpoint and change KA structure feat: Add WIA wallet-provider endpoint, change KA structure, add persistent WIA/KA revocation status lists Oct 13, 2026
@vmarkop
vmarkop force-pushed the feat/wua-lifecycle branch from 610d44e to c21cd7f Compare October 21, 2026 14:22
@vmarkop
vmarkop marked this pull request as ready for review October 26, 2026 11:29
@vmarkop
vmarkop requested a review from a team as a code owner October 26, 2026 11:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant