Skip to content

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
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

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.