mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-23 03:18:49 +03:00
Add support for Encrypted to-device verification messages
This commit is contained in:
parent
10f09d4f43
commit
5358854de3
3 changed files with 47 additions and 2 deletions
45
src/Olm.cpp
45
src/Olm.cpp
|
@ -138,6 +138,51 @@ handle_olm_message(const OlmMessage &msg)
|
||||||
|
|
||||||
auto payload = try_olm_decryption(msg.sender_key, cipher.second);
|
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()) {
|
if (!payload.is_null()) {
|
||||||
nhlog::crypto()->debug("decrypted olm payload: {}", payload.dump(2));
|
nhlog::crypto()->debug("decrypted olm payload: {}", payload.dump(2));
|
||||||
create_inbound_megolm_session(msg.sender, msg.sender_key, payload);
|
create_inbound_megolm_session(msg.sender, msg.sender_key, payload);
|
||||||
|
|
|
@ -879,7 +879,7 @@ TimelineModel::sendEncryptedMessage(mtx::events::RoomEvent<T> msg, mtx::events::
|
||||||
using namespace mtx::identifiers;
|
using namespace mtx::identifiers;
|
||||||
|
|
||||||
json doc = {{"type", mtx::events::to_string(eventType)},
|
json doc = {{"type", mtx::events::to_string(eventType)},
|
||||||
{"content", msg.content},
|
{"content", json(msg.content)},
|
||||||
{"room_id", room_id}};
|
{"room_id", room_id}};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
Loading…
Reference in a new issue