Wallet Configuration
NewWallet's configuration.
Constructors
Types
Which copy of a credential a presentation uses (OpenID4VCI 1.0: "a unique Credential per presentation or per Verifier").
The profile issuance follows.
How an in-person response authenticates the mdoc (ISO/IEC 18013-5 §9.1.3).
Properties
The scheme of redirectURI: the scheme the authorization's redirect comes back on.
The wallet's registration with Authorization Servers: empty for a wallet with no WalletProvider, receiving credentials only from pre-authorized codes redeemed with no client authentication.
Which copy of a credential a presentation uses.
Relaxes what production requires, for a wallet talking to services on a development machine. Never ship an app with it set. It lets issuers, Authorization Servers, Verifiers and status lists be on loopback addresses, over http there too; with developmentRoots, makes requests through an ordinary HTTPS client, without the hardened one's refusal of private network addresses; and skips the production checks on receiving credentials: durable stores and keys, and the random source.
PEM certificates the wallet's HTTPS requests trust besides the system's: a development service's own CA (Go reads only Android's system CA files, so a CA installed on the device doesn't reach it). Only with development.
The profile issuance follows.
PEM certificates: the trust anchors for signed Credential Issuer Metadata. With them, signed metadata is asked for and verified.
PEM certificates: the trust anchors for issuers' credentials, and for Verifiers' requests.
Refuses signed metadata signed longer ago than this many seconds; 0 doesn't limit it.
Recognizes only reader certificates with the ISO/IEC 18013-5 reader authentication extended key usage (1.0.18013.5.1.6), so a certificate issued for another role under mdocReaderRoots isn't taken for a reader's.
PEM certificates: the mdoc readers recognized when one signs an org-iso-mdoc request (MdocPresentation.Request.reader). Empty: every such request is shown by its origin.
How an in-person response authenticates the mdoc. ProximityDeviceAuth.MAC_PREFERRED needs a key store that is also a KeyAgreement.
Where the issuer's pages send the holder back to: a private-use URI the app receives. Empty for a wallet that receives only pre-authorized codes.
A dotted object identifier: recognizes only registrar certificates under registrarRoots with that extended key usage. Outside development, required when registrarRoots shares a trust anchor with another role's roots.
PEM certificates: the registrars whose registrations of Verifiers the wallet checks (Presentation.Verifier.registration). Empty: registrations are ignored.
Asks Authorization Servers for a refresh token, so Wallet.refreshCredential can later replace a credential's copies without the holder. The server must allow the wallet the offline_access scope, or the authorization fails.
Refuses signed metadata whose certificate doesn't name the issuer.
Refuses a received SD-JWT VC whose iss its signing certificate doesn't name. SD-JWT VC doesn't require them to correspond: set it where issuerRoots certify several issuers.
Refuses an unsigned OpenID4VP request over the Digital Credentials API: Wallet.startDCAPIPresentation throws untrustedVerifier, before the holder sees it. Its only identity is the origin the platform reports; HAIP requires a wallet to support unsigned requests, so set it only where every Verifier must be one verifierRoots accepts.
Refuses an issuer whose metadata isn't signed under issuerMetadataRoots, before the holder signs in or enters a code.
Refuses an org-iso-mdoc request no recognized reader signed: Wallet.startMdocPresentation throws untrustedVerifier, and nothing is shown to the holder. Needs mdocReaderRoots.
The Status Issuers that may sign a credential issuer's status lists on its behalf: credential issuer (an SD-JWT VC's iss) → Status Issuer identifiers, each recognized by a certificate under issuerRoots naming it. Without it, Wallet.checkStatus accepts only a status list the issuer signed itself.
Pins hosts' certificates for the wallet's own HTTPS requests: host → base64 SHA-256 digests of a certificate's SubjectPublicKeyInfo, one of which a certificate in the verified chain must have, or the request fails as tlsPin before anything is sent. A host is a name, or *. and one, matching any name a label below it; not an IP address. Pins add to certificate verification, never replace it: pin a CA's key, so a leaf renewal doesn't break the app, and keep a backup pin. They cover the requests the SDK makes (issuers, Authorization Servers, Verifiers, status lists), not the app's own, such as to its Wallet Provider: pin that client yourself (OkHttp's CertificatePinner, or a network security configuration).
A dotted object identifier: recognizes only Verifier certificates under verifierRoots with that extended key usage, the one your ecosystem marks its Verifiers' certificates with. Outside development, required when verifierRoots shares a trust anchor with another role's roots.
PEM certificates: the trust anchors for Verifiers' requests.