diff --git a/matrix_sdk_crypto/src/verification/sas/helpers.rs b/matrix_sdk_crypto/src/verification/sas/helpers.rs index 893451f7..c3afcf86 100644 --- a/matrix_sdk_crypto/src/verification/sas/helpers.rs +++ b/matrix_sdk_crypto/src/verification/sas/helpers.rs @@ -159,7 +159,7 @@ pub fn receive_mac_event( ids: &SasIds, flow_id: &str, event: &ToDeviceEvent, -) -> Result<(Vec, Vec), CancelCode> { +) -> Result<(Vec, Vec), CancelCode> { let mut verified_devices = Vec::new(); let mut verified_identities = Vec::new(); @@ -217,7 +217,7 @@ pub fn receive_mac_event( key_id, event.sender ); - verified_identities.push(identity) + verified_identities.push(identity.clone()) } else { return Err(CancelCode::KeyMismatch); } @@ -233,7 +233,7 @@ pub fn receive_mac_event( } } - Ok((verified_devices, vec![])) + Ok((verified_devices, verified_identities)) } /// Get the extra info that will be used when we generate a MAC and need to send diff --git a/matrix_sdk_crypto/src/verification/sas/mod.rs b/matrix_sdk_crypto/src/verification/sas/mod.rs index 0c92d44e..74a33e78 100644 --- a/matrix_sdk_crypto/src/verification/sas/mod.rs +++ b/matrix_sdk_crypto/src/verification/sas/mod.rs @@ -150,6 +150,7 @@ impl Sas { other_identity.clone(), )?; let flow_id = inner.verification_flow_id(); + Ok(Sas { inner: Arc::new(Mutex::new(inner)), account, @@ -334,6 +335,11 @@ impl Sas { self.inner.lock().unwrap().verified_devices() } + #[allow(dead_code)] + pub(crate) fn verified_identities(&self) -> Option>> { + self.inner.lock().unwrap().verified_identities() + } + pub(crate) fn content_to_request( &self, content: AnyToDeviceEventContent, @@ -564,6 +570,14 @@ impl InnerSas { None } } + + fn verified_identities(&self) -> Option>> { + if let InnerSas::Done(s) = self { + Some(s.verified_identities()) + } else { + None + } + } } #[cfg(test)] diff --git a/matrix_sdk_crypto/src/verification/sas/sas_state.rs b/matrix_sdk_crypto/src/verification/sas/sas_state.rs index 5c072800..85201fa9 100644 --- a/matrix_sdk_crypto/src/verification/sas/sas_state.rs +++ b/matrix_sdk_crypto/src/verification/sas/sas_state.rs @@ -207,7 +207,7 @@ pub struct MacReceived { we_started: bool, their_pubkey: String, verified_devices: Arc>, - verified_master_keys: Arc>, + verified_master_keys: Arc>, } /// The SAS state indicating that the verification finished successfully. @@ -217,7 +217,7 @@ pub struct MacReceived { #[derive(Clone, Debug)] pub struct Done { verified_devices: Arc>, - verified_master_keys: Arc>, + verified_master_keys: Arc>, } #[derive(Clone, Debug)] @@ -791,6 +791,11 @@ impl SasState { pub fn verified_devices(&self) -> Arc> { self.state.verified_devices.clone() } + + /// Get the list of verified identities. + pub fn verified_identities(&self) -> Arc> { + self.state.verified_master_keys.clone() + } } impl Canceled {