Work offline
A wallet built with the SDK keeps working in a car park, on a plane or at a remote checkpoint. The credentials live on the phone, the answer is signed on the phone, and in person the two phones talk over Bluetooth. Only a few things reach out to a server.
sequenceDiagram
autonumber
actor H as Holder
participant W as Wallet (your app)
participant V as Verifier app
actor O as Operator
Note over W,V: No network on either phone
O->>V: Picks a check
H->>W: Present: QR code
V->>W: Scans the QR, then connects over Bluetooth
V->>W: Signed request
W->>H: Names the verifier, lists the fields
H->>W: Share (and the face check, for protected credentials)
W->>V: Approved fields, signed with the phone's key
V-->>O: Result, checked on the verifier's phone
What works without a network
Section titled “What works without a network”| Task | Offline? | Why |
|---|---|---|
| Show the card list and a card’s details | yes | the credentials are stored on the phone |
| Present in person (QR + Bluetooth) | yes | the phones connect directly; the answer is signed with a key in the phone’s secure hardware |
| Name the verifier on the consent sheet | yes | the list of trusted verifiers ships with your app (TrustedVerifiers) |
| The face check (Prove it’s you) | yes | the face match with the ID photo runs only on the phone, on a FaceNet model (how it works) |
| Receive a credential from an issuer | no | the credential is fetched from the issuer (OpenID4VCI) |
| Share with a website (link, QR or the phone’s ID sheet) | no | the website’s request and the answer travel over the internet |
| Refresh a credential’s status or renew it | no | the wallet contacts the issuer; it does so on its own when it next has a network |
In your app
Section titled “In your app”Nothing to configure: in person, the SDK never needs a network. Two things are worth doing:
- Let the holder know. The ready-made wallet screen shows Online or Offline at the top, so the holder knows a website share will wait for a network.
- Keep the trusted verifiers current. The signed verifier list is part of your app. Ship an updated list with app updates, or download a newer one when the phone is online; nothing is fetched while presenting.
The verifier side works offline too, with one policy decision about revocation: Build a verifier app → Work offline.
Next: Go live.