Add support for Encrypted to-device verification messages

pull/270/head
CH Chethan Reddy 4 years ago
parent 10f09d4f43
commit 5358854de3
  1. 2
      src/DeviceVerificationFlow.cpp
  2. 45
      src/Olm.cpp
  3. 2
      src/timeline/TimelineModel.cpp

@ -165,7 +165,7 @@ DeviceVerificationFlow::DeviceVerificationFlow(QObject *,
} }
if (this->method == DeviceVerificationFlow::Method::Emoji) { if (this->method == DeviceVerificationFlow::Method::Emoji) {
std::cout<<info<<std::endl; std::cout << info << std::endl;
this->sasList = this->sas->generate_bytes_emoji(info); this->sasList = this->sas->generate_bytes_emoji(info);
} else if (this->method == DeviceVerificationFlow::Method::Decimal) { } else if (this->method == DeviceVerificationFlow::Method::Decimal) {
this->sasList = this->sas->generate_bytes_decimal(info); this->sasList = this->sas->generate_bytes_decimal(info);

@ -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…
Cancel
Save