mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-25 20:48:52 +03:00
Send master key in verification flow (if we trust it)
This commit is contained in:
parent
e5fb9a25ea
commit
8ec76daeda
2 changed files with 26 additions and 0 deletions
|
@ -57,6 +57,25 @@ DeviceVerificationFlow::DeviceVerificationFlow(QObject *,
|
|||
this->their_keys = res;
|
||||
});
|
||||
|
||||
ChatPage::instance()->query_keys(
|
||||
http::client()->user_id().to_string(),
|
||||
[this](const UserKeyCache &res, mtx::http::RequestErr err) {
|
||||
if (err) {
|
||||
nhlog::net()->warn("failed to query device keys: {},{}",
|
||||
err->matrix_error.errcode,
|
||||
static_cast<int>(err->status_code));
|
||||
return;
|
||||
}
|
||||
|
||||
if (res.master_keys.keys.empty())
|
||||
return;
|
||||
|
||||
if (auto status =
|
||||
cache::verificationStatus(http::client()->user_id().to_string());
|
||||
status && status->user_verified)
|
||||
this->our_trusted_master_key = res.master_keys.keys.begin()->second;
|
||||
});
|
||||
|
||||
if (model) {
|
||||
connect(this->model_,
|
||||
&TimelineModel::updateFlowEventId,
|
||||
|
@ -655,6 +674,10 @@ DeviceVerificationFlow::sendVerificationMac()
|
|||
std::map<std::string, std::string> key_list;
|
||||
key_list["ed25519:" + http::client()->device_id()] = olm::client()->identity_keys().ed25519;
|
||||
|
||||
// send our master key, if we trust it
|
||||
if (!this->our_trusted_master_key.empty())
|
||||
key_list["ed25519:" + our_trusted_master_key] = our_trusted_master_key;
|
||||
|
||||
mtx::events::msg::KeyVerificationMac req =
|
||||
key_verification_mac(sas.get(),
|
||||
http::client()->user_id(),
|
||||
|
|
|
@ -185,6 +185,9 @@ private:
|
|||
mtx::identifiers::User toClient;
|
||||
QString deviceId;
|
||||
|
||||
// public part of our master key, when trusted or empty
|
||||
std::string our_trusted_master_key;
|
||||
|
||||
mtx::events::msg::SASMethods method = mtx::events::msg::SASMethods::Emoji;
|
||||
QTimer *timeout = nullptr;
|
||||
sas_ptr sas;
|
||||
|
|
Loading…
Reference in a new issue