crypto: Add a method to check if a group session needs to be shared.

master
Damir Jelić 2020-04-10 11:46:31 +02:00
parent 0a2b66de9a
commit b43407b165
1 changed files with 18 additions and 0 deletions

View File

@ -919,6 +919,23 @@ impl OlmMachine {
}) })
} }
/// Should the client share a group session for the given room.
///
/// Returns true if a session needs to be shared before room messages can be
/// encrypted, false if one is already shared and ready to encrypt room
/// messages.
///
/// This should be called every time a new room message wants to be sent out
/// since group sessions can expire at any time.
pub fn should_share_group_session(&self, room_id: &RoomId) -> bool {
let session = self.outbound_group_session.get(room_id);
match session {
Some(s) => !s.shared() || s.expired(),
None => true,
}
}
// TODO accept an algorithm here // TODO accept an algorithm here
pub(crate) async fn share_group_session<'a, I>( pub(crate) async fn share_group_session<'a, I>(
&mut self, &mut self,
@ -958,6 +975,7 @@ impl OlmMachine {
user_id, user_id,
device.device_id() device.device_id()
); );
// TODO mark the user for a key query.
continue; continue;
}; };