Types

Link copied to clipboard

A routine device authentication key rotation cannot start while a device recovery is pending (docs/device-recovery.md). Complete or cancel the recovery first. Nothing was changed.

Link copied to clipboard

A device recovery cannot start while a routine device authentication key rotation is pending (docs/device-authentication-rotation.md). First try SecureMessageClient.resolveDeviceAuthenticationRotation; if the rotation did not happen, SecureMessageClient.cancelDeviceAuthenticationRotation. Nothing was changed.

Link copied to clipboard

address sent a new session initiation that names the local signed prekey signedPreKeyId, whose grace period is over (see docs/signed-prekey-lifecycle.md). Its private key is deleted or about to be, so no new session can be accepted with it. Nothing was changed. Existing sessions are not affected.

Link copied to clipboard

address presented an identity key that differs from the one pinned on first contact (see docs/identity-trust.md). Nothing was changed: the pin, any existing session and the local one-time prekeys stay as they were.

Link copied to clipboard

The storage is damaged in a way the client does not repair: prekeys or a device authentication key without a local identity (a new identity would not match them), or an initialized storage whose device authentication key is missing (a new key could not replace the one the server has registered; docs/server-authentication.md).

Link copied to clipboard

The pending rotation key changed while the rotation was submitted. Nothing was promoted.

Link copied to clipboard

A device recovery request or authorization is not acceptable for this device (docs/device-recovery.md): wrong device or user, self authorization, outside the validity window, invalid proof of possession, or not for the pending key. Nothing was changed.

Link copied to clipboard

A last-device recovery is not acceptable for this device (docs/last-device-recovery.md): the server issued a challenge for another device, or the pending key changed while the recovery was submitted. Nothing was promoted.

Link copied to clipboard

A scanned safety number payload could not be decoded. Nothing was changed.

Link copied to clipboard

A device recovery or a routine rotation cannot start while a last-device recovery is pending (docs/last-device-recovery.md). Complete it, or resolve and then cancel it. Nothing was changed.

Link copied to clipboard

The given recovery key is not the user's active recovery key (docs/recovery-key-lifecycle.md): another key was rotated in, or the wrong backup was used. Nothing was sent. A lost active key cannot be replaced by a device alone.

Link copied to clipboard

The user has no active offline recovery key (never registered, or revoked; docs/recovery-key-lifecycle.md). Register one with SecureMessageClient.registerLastDeviceRecoveryKey. Nothing was sent.

Link copied to clipboard

No recovery key reset is pending for this user (docs/recovery-key-reset.md): request one first, or it was cancelled or replaced by another transition. Nothing was sent.

Link copied to clipboard

sender sent logical message messageId again with another body than the one this device accepted first (docs/application-delivery.md). A correct sender never does this. The envelope was rejected: nothing was stored, the pending, committed or discarded message is unchanged, and nothing was acknowledged.

Link copied to clipboard

The transport did not take the envelope of message messageId; cause is the transport's exception. The message is stored as pending: send it again with SecureMessageClient.retryPendingMessages. The session advanced for the lost envelope and is not rolled back.

Link copied to clipboard
Link copied to clipboard

The storage has no local identity yet. Call SecureMessageClient.initialize first.

Link copied to clipboard

All prekey IDs up to Int.MAX_VALUE are used. IDs never wrap around.

Link copied to clipboard

SecureMessageClient.commitReceivedMessage or SecureMessageClient.discardReceivedMessage for a message that is neither pending nor finalized (docs/application-delivery.md, docs/message-discard.md). Nothing was changed or recorded.

Link copied to clipboard

The identity pinned for address is not the one the call expected: an identity change was accepted in the meantime (or the call was based on an outdated RemoteIdentityChange or SafetyNumber). Nothing was changed. Show the current state to the user again.

Link copied to clipboard

No identity key is pinned for address yet: there was no successful first contact. Safety numbers and verification need a pin; the client never fetches a bundle to create one. Nothing was changed.

Link copied to clipboard

address started a session at the same time as this device, and this device's initiation won. The message was authenticated but not delivered: its session is not used. The losing initiation was retired; the current session and the local one-time prekeys are unchanged. Once address processes this device's initiation, both use one session.

Link copied to clipboard

address sent a message of a session initiation that was replaced earlier or lost a simultaneous-initiation collision (see docs/session-lifecycle.md). It can never become the current session again, so this also rejects replays. Nothing was changed.

Properties

Link copied to clipboard
expect open val cause: Throwable?
Link copied to clipboard
expect open val message: String?