Skip to content

Commit 0a9c9c1

Browse files
committed
Spell out all VerificationLevels
1 parent 50ccc26 commit 0a9c9c1

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

src/error.rs

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
use js_sys::JsString;
44
use matrix_sdk_common::deserialized_responses::{VerificationLevel, WithheldCode};
55
use matrix_sdk_crypto::{vodozemac, MegolmError};
6+
use tracing::warn;
67
use wasm_bindgen::prelude::wasm_bindgen;
78

89
/// Decryption error codes
@@ -73,15 +74,25 @@ impl From<MegolmError> for MegolmDecryptionError {
7374
MegolmError::MismatchedIdentityKeys { .. } => {
7475
decryption_error(DecryptionErrorCode::UnknownMessageIndex, None)
7576
}
76-
MegolmError::SenderIdentityNotTrusted(VerificationLevel::VerificationViolation) => {
77-
decryption_error(DecryptionErrorCode::SenderIdentityVerificationViolation, None)
78-
}
79-
MegolmError::SenderIdentityNotTrusted(VerificationLevel::UnsignedDevice) => {
80-
decryption_error(DecryptionErrorCode::UnsignedSenderDevice, None)
81-
}
82-
MegolmError::SenderIdentityNotTrusted(VerificationLevel::None(..)) => {
83-
decryption_error(DecryptionErrorCode::UnknownSenderDevice, None)
84-
}
77+
MegolmError::SenderIdentityNotTrusted(vl) => match vl {
78+
VerificationLevel::VerificationViolation => {
79+
decryption_error(DecryptionErrorCode::SenderIdentityVerificationViolation, None)
80+
}
81+
VerificationLevel::UnsignedDevice => {
82+
decryption_error(DecryptionErrorCode::UnsignedSenderDevice, None)
83+
}
84+
VerificationLevel::None(..) => {
85+
decryption_error(DecryptionErrorCode::UnknownSenderDevice, None)
86+
}
87+
VerificationLevel::UnverifiedIdentity => {
88+
// We do not expect to find this in a MegolmError, since even at the strictest
89+
// `TrustRequirement` level, we are happy to accept events from users whose
90+
// identities we have not verified. We spit out a warning and then treat
91+
// it as a generic UTD.
92+
warn!("Unexpected verification level in megolm decryption error {}", value);
93+
decryption_error(DecryptionErrorCode::UnableToDecrypt, None)
94+
}
95+
},
8596
_ => decryption_error(DecryptionErrorCode::UnableToDecrypt, None),
8697
}
8798
}

0 commit comments

Comments
 (0)