crypto: Make sure we send verification done events
parent
9b20b00908
commit
cbcf673d21
|
@ -46,7 +46,6 @@ pub enum InnerSas {
|
||||||
Confirmed(SasState<Confirmed>),
|
Confirmed(SasState<Confirmed>),
|
||||||
MacReceived(SasState<MacReceived>),
|
MacReceived(SasState<MacReceived>),
|
||||||
WaitingForDone(SasState<WaitingForDone>),
|
WaitingForDone(SasState<WaitingForDone>),
|
||||||
WaitingForDoneUnconfirmed(SasState<WaitingForDone>),
|
|
||||||
Done(SasState<Done>),
|
Done(SasState<Done>),
|
||||||
Cancelled(SasState<Cancelled>),
|
Cancelled(SasState<Cancelled>),
|
||||||
}
|
}
|
||||||
|
@ -88,7 +87,6 @@ impl InnerSas {
|
||||||
.short_auth_string
|
.short_auth_string
|
||||||
.contains(&ShortAuthenticationString::Emoji),
|
.contains(&ShortAuthenticationString::Emoji),
|
||||||
InnerSas::WaitingForDone(_) => false,
|
InnerSas::WaitingForDone(_) => false,
|
||||||
InnerSas::WaitingForDoneUnconfirmed(_) => false,
|
|
||||||
InnerSas::Done(_) => false,
|
InnerSas::Done(_) => false,
|
||||||
InnerSas::Cancelled(_) => false,
|
InnerSas::Cancelled(_) => false,
|
||||||
}
|
}
|
||||||
|
@ -154,7 +152,6 @@ impl InnerSas {
|
||||||
InnerSas::MacReceived(s) => s.set_creation_time(time),
|
InnerSas::MacReceived(s) => s.set_creation_time(time),
|
||||||
InnerSas::Done(s) => s.set_creation_time(time),
|
InnerSas::Done(s) => s.set_creation_time(time),
|
||||||
InnerSas::WaitingForDone(s) => s.set_creation_time(time),
|
InnerSas::WaitingForDone(s) => s.set_creation_time(time),
|
||||||
InnerSas::WaitingForDoneUnconfirmed(s) => s.set_creation_time(time),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -181,11 +178,11 @@ impl InnerSas {
|
||||||
(InnerSas::Confirmed(sas), Some(content))
|
(InnerSas::Confirmed(sas), Some(content))
|
||||||
}
|
}
|
||||||
InnerSas::MacReceived(s) => {
|
InnerSas::MacReceived(s) => {
|
||||||
if s.is_dm_verification() {
|
if s.started_from_request {
|
||||||
let sas = s.confirm_and_wait_for_done();
|
let sas = s.confirm_and_wait_for_done();
|
||||||
let content = sas.as_content();
|
let content = sas.as_content();
|
||||||
|
|
||||||
(InnerSas::WaitingForDoneUnconfirmed(sas), Some(content))
|
(InnerSas::WaitingForDone(sas), Some(content))
|
||||||
} else {
|
} else {
|
||||||
let sas = s.confirm();
|
let sas = s.confirm();
|
||||||
let content = sas.as_content();
|
let content = sas.as_content();
|
||||||
|
@ -273,13 +270,6 @@ impl InnerSas {
|
||||||
},
|
},
|
||||||
AnyVerificationContent::Done(c) => match self {
|
AnyVerificationContent::Done(c) => match self {
|
||||||
InnerSas::WaitingForDone(s) => match s.into_done(sender, c) {
|
InnerSas::WaitingForDone(s) => match s.into_done(sender, c) {
|
||||||
Ok(s) => (InnerSas::Done(s), None),
|
|
||||||
Err(s) => {
|
|
||||||
let content = s.as_content();
|
|
||||||
(InnerSas::Cancelled(s), Some(content))
|
|
||||||
}
|
|
||||||
},
|
|
||||||
InnerSas::WaitingForDoneUnconfirmed(s) => match s.into_done(sender, c) {
|
|
||||||
Ok(s) => {
|
Ok(s) => {
|
||||||
let content = s.done_content();
|
let content = s.done_content();
|
||||||
(InnerSas::Done(s), Some(content))
|
(InnerSas::Done(s), Some(content))
|
||||||
|
@ -289,7 +279,6 @@ impl InnerSas {
|
||||||
(InnerSas::Cancelled(s), Some(content))
|
(InnerSas::Cancelled(s), Some(content))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_ => (self, None),
|
_ => (self, None),
|
||||||
},
|
},
|
||||||
AnyVerificationContent::Request(_)
|
AnyVerificationContent::Request(_)
|
||||||
|
@ -320,7 +309,6 @@ impl InnerSas {
|
||||||
InnerSas::Confirmed(s) => s.timed_out(),
|
InnerSas::Confirmed(s) => s.timed_out(),
|
||||||
InnerSas::MacReceived(s) => s.timed_out(),
|
InnerSas::MacReceived(s) => s.timed_out(),
|
||||||
InnerSas::WaitingForDone(s) => s.timed_out(),
|
InnerSas::WaitingForDone(s) => s.timed_out(),
|
||||||
InnerSas::WaitingForDoneUnconfirmed(s) => s.timed_out(),
|
|
||||||
InnerSas::Done(s) => s.timed_out(),
|
InnerSas::Done(s) => s.timed_out(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -335,7 +323,6 @@ impl InnerSas {
|
||||||
InnerSas::Confirmed(s) => s.verification_flow_id.clone(),
|
InnerSas::Confirmed(s) => s.verification_flow_id.clone(),
|
||||||
InnerSas::MacReceived(s) => s.verification_flow_id.clone(),
|
InnerSas::MacReceived(s) => s.verification_flow_id.clone(),
|
||||||
InnerSas::WaitingForDone(s) => s.verification_flow_id.clone(),
|
InnerSas::WaitingForDone(s) => s.verification_flow_id.clone(),
|
||||||
InnerSas::WaitingForDoneUnconfirmed(s) => s.verification_flow_id.clone(),
|
|
||||||
InnerSas::Done(s) => s.verification_flow_id.clone(),
|
InnerSas::Done(s) => s.verification_flow_id.clone(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,6 +37,7 @@ use matrix_sdk_common::{
|
||||||
identifiers::{DeviceId, EventId, RoomId, UserId},
|
identifiers::{DeviceId, EventId, RoomId, UserId},
|
||||||
uuid::Uuid,
|
uuid::Uuid,
|
||||||
};
|
};
|
||||||
|
use tracing::trace;
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
event_enums::{AnyVerificationContent, OwnedAcceptContent, StartContent},
|
event_enums::{AnyVerificationContent, OwnedAcceptContent, StartContent},
|
||||||
|
@ -305,6 +306,14 @@ impl Sas {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if mac_request.is_some() {
|
||||||
|
trace!(
|
||||||
|
user_id = self.other_user_id().as_str(),
|
||||||
|
device_id = self.other_device_id().as_str(),
|
||||||
|
"Confirming SAS verification"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
if done {
|
if done {
|
||||||
match self.mark_as_done().await? {
|
match self.mark_as_done().await? {
|
||||||
VerificationResult::Cancel(c) => Ok((self.cancel_with_code(c), None)),
|
VerificationResult::Cancel(c) => Ok((self.cancel_with_code(c), None)),
|
||||||
|
|
|
@ -316,6 +316,7 @@ impl<S: Clone> SasState<S> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Is this verification happening inside a DM.
|
/// Is this verification happening inside a DM.
|
||||||
|
#[allow(dead_code)]
|
||||||
pub fn is_dm_verification(&self) -> bool {
|
pub fn is_dm_verification(&self) -> bool {
|
||||||
matches!(&*self.verification_flow_id, FlowId::InRoom(_, _))
|
matches!(&*self.verification_flow_id, FlowId::InRoom(_, _))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue