crypto: Extract a function to convert SenderData->VerificationState

This commit is contained in:
Andy Balaam
2024-07-30 11:45:08 +01:00
committed by Andy Balaam
parent 8760ea8440
commit e2ff2daf5d

View File

@@ -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<OwnedDeviceId>) {
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)]