pub enum SessionState {
Idle,
Offered {
pending: PendingOffer,
},
OfferReceived {
bundle: PreKeyBundle,
},
AwaitingAck {
ratchet: Ratchet,
},
Established {
ratchet: Ratchet,
},
Rejected,
Closed,
}Expand description
How far a conversation has got towards being encrypted.
Only SessionState::Established carries a ratchet that will decrypt content, which is what
makes “an accept does not mean established” a property of the type.
Deliberately not Debug: two of these variants hold key material, and a derived formatter would
put it in whatever log the caller happens to write.
Variants§
Idle
Nothing has been offered yet.
Offered
We sent init and are waiting for an answer.
Fields
pending: PendingOfferThe keys we offered, kept until the answer arrives.
OfferReceived
They sent init and we have not answered yet.
Fields
bundle: PreKeyBundleWhat they offered.
AwaitingAck
We answered and are waiting for the ack that proves they can decrypt.
An accept can be lost, so showing a lock here would tell the user something untrue. This
state deliberately exposes no way to decrypt content.
Established
The session works in both directions.
Rejected
They refused.
Closed
The session ended.