From 99f3296a644b50d4189a5cfd7785f2c53acafacf Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Fri, 3 Sep 2021 15:08:16 +0200 Subject: [PATCH] Make error case with unverified master key more descriptive --- src/Cache.cpp | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/Cache.cpp b/src/Cache.cpp index a7fe473f..5842f536 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp @@ -4442,13 +4442,19 @@ Cache::verificationStatus_(const std::string &user_id, lmdb::txn &txn) // Update verified devices count to count without cross-signing updateUnverifiedDevices(theirKeys->device_keys); - if (!mtx::crypto::ed25519_verify_signature( - olm::client()->identity_keys().ed25519, - json(ourKeys->master_keys), - ourKeys->master_keys.signatures.at(local_user) - .at("ed25519:" + http::client()->device_id()))) { - verification_storage.status[user_id] = status; - return status; + { + auto &mk = ourKeys->master_keys; + std::string dev_id = "ed25519:" + http::client()->device_id(); + if (!mk.signatures.count(local_user) || + !mk.signatures.at(local_user).count(dev_id) || + !mtx::crypto::ed25519_verify_signature( + olm::client()->identity_keys().ed25519, + json(mk), + mk.signatures.at(local_user).at(dev_id))) { + nhlog::crypto()->debug("We have not verified our own master key"); + verification_storage.status[user_id] = status; + return status; + } } auto master_keys = ourKeys->master_keys.keys;