SdkError in Swift, SdkException in Kotlin, with the same variants. The SDK never retries, and your app must not retry behind the user’s back. A capture that failed before the reply was frozen cannot be resumed.
Details
NotLoggedIn
NotLoggedIn
login ended with no cookie of the profile’s domains: the user declined the disclosure, closed the page, or signed in to a page that set none. Also raised when capture is called before login. Each login serves one capture.SessionLost
SessionLost
The capture ended before the reply was frozen, because the network dropped or the app was suspended. Also raised when
prove is called 120 seconds or more after its capture (the verifier refuses older receipts), counting the time the phone slept.Cancelled
Cancelled
cancel() was called, or the task running the verb was cancelled, including your own cancel from the lifecycle’s expiry callback. In Kotlin, cancelling the coroutine ends it with its own CancellationException instead.WrongEvidence, Truncated, ExtraResponse, Reordered
WrongEvidence, Truncated, ExtraResponse, Reordered
WrongEvidence: an enclave’s receipt did not match its opening. If it repeats, report it with the time and your app credential’s ID. Truncated: the reply ended before its declared length. ExtraResponse: the provider sent more than the profile allows. Reordered: TLS records arrived out of order.InsufficientMemory
InsufficientMemory
prove did not start, because the phone has less free memory than the proof needs at its peak. The capture is spent; the user starts a new session after closing other apps.Transport
Transport
A network failure on the way to the front door, an enclave or the verifier. The text is the raw reason:
verifier unreachable: ..., the allocation named no verifier (none ready; try later), or allocate returned <status>: <body> (400 malformed field, 401 or 403 credential problem, 429 quota).Reading the text
Transport and Policy carry their text. In Swift: case .Transport(let text). In Kotlin: e.v1 (e.message reads v1=<text>).