diff --git a/include/Olm.hpp b/include/Olm.hpp index 6f87162..eb7f906 100644 --- a/include/Olm.hpp +++ b/include/Olm.hpp @@ -75,4 +75,7 @@ encrypt_group_message(const std::string &room_id, const std::string &device_id, const std::string &body); +void +mark_keys_as_published(); + } // namespace olm diff --git a/src/ChatPage.cc b/src/ChatPage.cc index e543cdf..cc9473e 100644 --- a/src/ChatPage.cc +++ b/src/ChatPage.cc @@ -1038,7 +1038,8 @@ ChatPage::tryInitialSync() return; } - olm::client()->mark_keys_as_published(); + olm::mark_keys_as_published(); + for (const auto &entry : res.one_time_key_counts) nhlog::net()->info( "uploaded {} {} one-time keys", entry.second, entry.first); @@ -1273,7 +1274,7 @@ ChatPage::ensureOneTimeKeyCount(const std::map &counts) return; } - olm::client()->mark_keys_as_published(); + olm::mark_keys_as_published(); }); } } diff --git a/src/Olm.cpp b/src/Olm.cpp index 5976c1c..c426968 100644 --- a/src/Olm.cpp +++ b/src/Olm.cpp @@ -5,6 +5,8 @@ using namespace mtx::crypto; +static const std::string STORAGE_SECRET_KEY("secret"); + namespace { auto client_ = std::make_unique(); } @@ -229,4 +231,11 @@ create_inbound_megolm_session(const std::string &sender, nhlog::crypto()->info("established inbound megolm session ({}, {})", room_id, sender); } +void +mark_keys_as_published() +{ + olm::client()->mark_keys_as_published(); + cache::client()->saveOlmAccount(olm::client()->save(STORAGE_SECRET_KEY)); +} + } // namespace olm