From e2ff2daf5dc51cc1a30481df52b6e60e0f76cffa Mon Sep 17 00:00:00 2001 From: Andy Balaam Date: Tue, 30 Jul 2024 11:45:08 +0100 Subject: [PATCH] crypto: Extract a function to convert SenderData->VerificationState --- crates/matrix-sdk-crypto/src/machine.rs | 61 ++++++++++++++----------- 1 file changed, 34 insertions(+), 27 deletions(-) diff --git a/crates/matrix-sdk-crypto/src/machine.rs b/crates/matrix-sdk-crypto/src/machine.rs index f082884d9..2b28861e0 100644 --- a/crates/matrix-sdk-crypto/src/machine.rs +++ b/crates/matrix-sdk-crypto/src/machine.rs @@ -1405,33 +1405,7 @@ impl OlmMachine { ) .await?; - Ok(match sender_data { - SenderData::UnknownDevice { owner_check_failed: false, .. } => { - let device_link_problem = if session.has_been_imported() { - DeviceLinkProblem::InsecureSource - } else { - DeviceLinkProblem::MissingDevice - }; - - (VerificationState::Unverified(VerificationLevel::None(device_link_problem)), None) - } - SenderData::UnknownDevice { owner_check_failed: true, .. } => ( - VerificationState::Unverified(VerificationLevel::None( - DeviceLinkProblem::InsecureSource, - )), - None, - ), - SenderData::DeviceInfo { device_keys, .. } => ( - VerificationState::Unverified(VerificationLevel::UnsignedDevice), - Some(device_keys.device_id), - ), - SenderData::SenderKnown { master_key_verified: false, device_id, .. } => { - (VerificationState::Unverified(VerificationLevel::UnverifiedIdentity), device_id) - } - SenderData::SenderKnown { master_key_verified: true, device_id, .. } => { - (VerificationState::Verified, device_id) - } - }) + Ok(sender_data_to_verification_state(sender_data, session.has_been_imported())) } /// Request missing local secrets from our devices (cross signing private @@ -2305,6 +2279,39 @@ impl OlmMachine { } } +fn sender_data_to_verification_state( + sender_data: SenderData, + session_has_been_imported: bool, +) -> (VerificationState, Option) { + match sender_data { + SenderData::UnknownDevice { owner_check_failed: false, .. } => { + let device_link_problem = if session_has_been_imported { + DeviceLinkProblem::InsecureSource + } else { + DeviceLinkProblem::MissingDevice + }; + + (VerificationState::Unverified(VerificationLevel::None(device_link_problem)), None) + } + SenderData::UnknownDevice { owner_check_failed: true, .. } => ( + VerificationState::Unverified(VerificationLevel::None( + DeviceLinkProblem::InsecureSource, + )), + None, + ), + SenderData::DeviceInfo { device_keys, .. } => ( + VerificationState::Unverified(VerificationLevel::UnsignedDevice), + Some(device_keys.device_id), + ), + SenderData::SenderKnown { master_key_verified: false, device_id, .. } => { + (VerificationState::Unverified(VerificationLevel::UnverifiedIdentity), device_id) + } + SenderData::SenderKnown { master_key_verified: true, device_id, .. } => { + (VerificationState::Verified, device_id) + } + } +} + /// A set of requests to be executed when bootstrapping cross-signing using /// [`OlmMachine::bootstrap_cross_signing`]. #[derive(Debug, Clone)]