summary refs log tree commit diff
path: root/src/Olm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Olm.cpp')
-rw-r--r--src/Olm.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/Olm.cpp b/src/Olm.cpp

index 74af61dd..9e997801 100644 --- a/src/Olm.cpp +++ b/src/Olm.cpp
@@ -139,6 +139,51 @@ handle_olm_message(const OlmMessage &msg) auto payload = try_olm_decryption(msg.sender_key, cipher.second); if (!payload.is_null()) { + std::string msg_type = payload["type"]; + + if (msg_type == to_string(mtx::events::EventType::KeyVerificationAccept)) { + ChatPage::instance()->recievedDeviceVerificationAccept( + payload["content"]); + return; + } else if (msg_type == + to_string(mtx::events::EventType::KeyVerificationRequest)) { + ChatPage::instance()->recievedDeviceVerificationRequest( + payload["content"], payload["sender"]); + return; + } else if (msg_type == + to_string(mtx::events::EventType::KeyVerificationCancel)) { + ChatPage::instance()->recievedDeviceVerificationCancel( + payload["content"]); + return; + } else if (msg_type == + to_string(mtx::events::EventType::KeyVerificationKey)) { + ChatPage::instance()->recievedDeviceVerificationKey( + payload["content"]); + return; + } else if (msg_type == + to_string(mtx::events::EventType::KeyVerificationMac)) { + ChatPage::instance()->recievedDeviceVerificationMac( + payload["content"]); + return; + } else if (msg_type == + to_string(mtx::events::EventType::KeyVerificationStart)) { + ChatPage::instance()->recievedDeviceVerificationStart( + payload["content"], payload["sender"]); + return; + } else if (msg_type == + to_string(mtx::events::EventType::KeyVerificationReady)) { + ChatPage::instance()->recievedDeviceVerificationReady( + payload["content"]); + return; + } else if (msg_type == + to_string(mtx::events::EventType::KeyVerificationDone)) { + ChatPage::instance()->recievedDeviceVerificationDone( + payload["content"]); + return; + } + } + + if (!payload.is_null()) { nhlog::crypto()->debug("decrypted olm payload: {}", payload.dump(2)); create_inbound_megolm_session(msg.sender, msg.sender_key, payload); return;