Package-level declarations
Types
Output of ProtocolEngine.encrypt, input of ProtocolEngine.decrypt.
The server's registration metadata of a device's authoritative device authentication key (docs/device-authentication-rotation.md), as returned by the signed GET /v1/devices/{user}/{device}/registration.
Transport envelope. The payload stays opaque to the server.
The terminal outcome of a received logical message (docs/message-discard.md). A pending message becomes exactly one of these, once, by an explicit application call; the outcome never changes afterwards.
The server's state of a user's offline last-device recovery key (docs/recovery-key-lifecycle.md), as returned to a registered device of the user by the signed GET /v1/devices/{user}/{device}/last-device-recovery/key.
KSecureMessage-owned identifier of one logical application message (docs/message-reliability.md). 128 random bits chosen by the sending device. It travels inside the encrypted payload, never in the envelope, and stays the same when the message is encrypted again for a resend. Only meaningful together with the sender's DeviceAddress: two devices may pick the same value for unrelated messages.
Why the application discarded a received message (docs/message-discard.md). A closed set of codes, deliberately not free text: it is stored unencrypted as local metadata and never sent to the sender. Use it for permanent decisions only; a temporary failure should leave the message pending.
ID of one EncryptedEnvelope: one transport attempt. A logical message that is sent again gets a new envelope with a new MessageId but keeps its LogicalMessageId.
KSecureMessage-owned identifier of a one-time prekey. Separate ID space from SignedPreKeyId. Used to find and then delete the consumed private key. Range 0..Int.MAX_VALUE, like SignedPreKeyId.
Public data published by a device for asynchronous session establishment. Byte arrays intentionally avoid exposing Kodium-specific key types in the public KSecureMessage model.
A ratchet message plus the X3DH data the recipient needs to create its side of the session.
Public prekey material a device uploads to the server: its identity key, its current signed prekey and a batch of one-time prekeys.
Public half of a one-time prekey. Each one should be handed out at most once.
A Double Ratchet message on an established session. bytes is opaque: ratchet header plus authenticated ciphertext.
The pending delayed reset of a user's offline recovery key (docs/recovery-key-reset.md), as returned to a registered device of the user by the signed GET …/last-device-recovery/key/reset, or to the holder of the current recovery key by the recovery-key-signed status query.
Session initiation format (docs/session-lifecycle.md, S1 in docs/security-review-remediation.md).
KSecureMessage-owned identifier of a signed prekey. Chosen by the owning device; used to select the matching private key when a PreKeyMessage arrives and, later, for rotation. Range 0..Int.MAX_VALUE: the wire format encodes it as 32 bits with the high bit clear.