Skip to main content

Module protocol_state_storage

Module protocol_state_storage 

Source
Expand description

Install-scoped storage for protocol delivery state.

This storage domain is deliberately separate from crate::MlsStorage. MLS storage contains cryptographic identity and group material that may outlive an app-container incarnation. Protocol state contains restartable delivery machinery—outbox entries, pending messages, retry lifecycles, and peer snapshots—and must be removed with the app container.

§Confidentiality

Lifecycle separation is not confidentiality separation: some of this state (queued message plaintext, cloud-media encryption_key/iv) is as sensitive as anything in the credential store. Implementations are not trusted to protect it — the SDK seals those record values with an AEAD whose key lives in crate::MlsStorage before they ever reach this trait (see protocol::state_crypto). An implementation therefore only ever sees ciphertext for sensitive categories, and a stolen app container without the credential store yields nothing.

Record keys (key_type / key_id) are not sealed: they are peer ids and message ids, and the storage layout needs them in the clear to list and address entries.

Enums§

ProtocolStateError
Failure of a protocol-state storage operation.

Constants§

MAX_PROTOCOL_STATE_RECORD_TRANSFER_BYTES
Largest record the SDK will ever hand a ProtocolStateStorage, and the ceiling implementations must enforce on the way back.

Traits§

ProtocolStateStorage
Storage for restartable protocol and message-plane state.

Type Aliases§

ProtocolStateResult
Result alias for ProtocolStateStorage operations.