mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-26 04:58: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
|
@ -165,7 +165,7 @@ DeviceVerificationFlow::DeviceVerificationFlow(QObject *,
|
|||
}
|
||||
|
||||
if (this->method == DeviceVerificationFlow::Method::Emoji) {
|
||||
std::cout<<info<<std::endl;
|
||||
std::cout << info << std::endl;
|
||||
this->sasList = this->sas->generate_bytes_emoji(info);
|
||||
} else if (this->method == DeviceVerificationFlow::Method::Decimal) {
|
||||
this->sasList = this->sas->generate_bytes_decimal(info);
|
||||
|
|
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);
|
||||
|
||||
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);
|
||||
|
|
|
@ -879,7 +879,7 @@ TimelineModel::sendEncryptedMessage(mtx::events::RoomEvent<T> msg, mtx::events::
|
|||
using namespace mtx::identifiers;
|
||||
|
||||
json doc = {{"type", mtx::events::to_string(eventType)},
|
||||
{"content", msg.content},
|
||||
{"content", json(msg.content)},
|
||||
{"room_id", room_id}};
|
||||
|
||||
try {
|
||||
|
|
Loading…
Reference in a new issue