Skip to content

Commit da968ce

Browse files
committed
tests(crypto): Add malformed event payloads to verification test
1 parent ec54819 commit da968ce

File tree

1 file changed

+49
-0
lines changed
  • crates/matrix-sdk-crypto/src/machine/tests

1 file changed

+49
-0
lines changed

crates/matrix-sdk-crypto/src/machine/tests/mod.rs

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -737,6 +737,8 @@ async fn test_megolm_encryption() {
737737
async fn test_megolm_state_encryption() {
738738
use ruma::events::{AnyStateEvent, EmptyStateKey};
739739

740+
use crate::types::events::room::{encrypted::RoomEncryptedEventContent, Event};
741+
740742
let (alice, bob) =
741743
get_machine_pair_with_setup_sessions_test_helper(alice_id(), user_id(), false).await;
742744
let room_id = room_id!("!test:example.org");
@@ -790,14 +792,61 @@ async fn test_megolm_state_encryption() {
790792
"content": encrypted_content,
791793
});
792794

795+
// Malformed events
796+
let bad_type_event = json!({
797+
"event_id": "$xxxxx:example.org",
798+
"origin_server_ts": MilliSecondsSinceUnixEpoch::now(),
799+
"sender": alice.user_id(),
800+
"type": "m.room.encrypted",
801+
"state_key": "m.room.malformed:",
802+
"content": encrypted_content,
803+
});
804+
let bad_state_key_event = json!({
805+
"event_id": "$xxxxx:example.org",
806+
"origin_server_ts": MilliSecondsSinceUnixEpoch::now(),
807+
"sender": alice.user_id(),
808+
"type": "m.room.encrypted",
809+
"state_key": "m.room.malformed:",
810+
"content": encrypted_content,
811+
});
812+
793813
let event = json_convert(&event).unwrap();
794814

815+
let bad_type_event: Raw<Event<RoomEncryptedEventContent>> =
816+
json_convert(&bad_type_event).unwrap();
817+
let bad_state_key_event = json_convert(&bad_state_key_event).unwrap();
818+
795819
let decryption_settings =
796820
DecryptionSettings { sender_device_trust_requirement: TrustRequirement::Untrusted };
797821

798822
let decryption_result =
799823
bob.try_decrypt_room_event(&event, room_id, &decryption_settings).await.unwrap();
824+
825+
let bad_type_decryption_result =
826+
bob.try_decrypt_room_event(&bad_type_event, room_id, &decryption_settings).await.unwrap();
827+
let bad_state_key_decryption_result = bob
828+
.try_decrypt_room_event(&bad_state_key_event, room_id, &decryption_settings)
829+
.await
830+
.unwrap();
831+
800832
assert_let!(RoomEventDecryptionResult::Decrypted(decrypted_event) = decryption_result);
833+
834+
// Require malformed events fail verification
835+
assert_matches!(
836+
bad_type_decryption_result,
837+
RoomEventDecryptionResult::UnableToDecrypt(UnableToDecryptInfo {
838+
reason: UnableToDecryptReason::StateKeyVerificationFailed,
839+
..
840+
})
841+
);
842+
assert_matches!(
843+
bad_state_key_decryption_result,
844+
RoomEventDecryptionResult::UnableToDecrypt(UnableToDecryptInfo {
845+
reason: UnableToDecryptReason::StateKeyVerificationFailed,
846+
..
847+
})
848+
);
849+
801850
let decrypted_event = decrypted_event.event.deserialize().unwrap();
802851

803852
if let AnyTimelineEvent::State(AnyStateEvent::RoomTopic(StateEvent::Original(

0 commit comments

Comments
 (0)