From 54169880577d3ec98aad0f96020d665052776027 Mon Sep 17 00:00:00 2001
From: Nicolas Werner <nicolas.werner@hotmail.de>
Date: Fri, 20 Aug 2021 14:00:16 +0200
Subject: [PATCH] Trust key forwards from the original sender

---
 src/Olm.cpp | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/Olm.cpp b/src/Olm.cpp
index 05eefce4b..c0360e1c1 100644
--- a/src/Olm.cpp
+++ b/src/Olm.cpp
@@ -835,6 +835,13 @@ import_inbound_megolm_session(
                 data.sender_claimed_ed25519_key = roomKey.content.sender_claimed_ed25519_key;
                 // may have come from online key backup, so we can't trust it...
                 data.trusted = false;
+                // if we got it forwarded from the sender, assume it is trusted. They may still have
+                // used key backup, but it is unlikely.
+                if (roomKey.content.forwarding_curve25519_key_chain.size() == 1 &&
+                    roomKey.content.forwarding_curve25519_key_chain.back() ==
+                      roomKey.content.sender_key) {
+                        data.trusted = true;
+                }
 
                 cache::saveInboundMegolmSession(index, std::move(megolm_session), data);
         } catch (const lmdb::error &e) {
-- 
GitLab