Add workaround for broken key counts

This commit is contained in:
Nicolas Werner 2021-09-06 00:32:09 +02:00
parent d30401c3c4
commit 6490ee3a34
No known key found for this signature in database
GPG key ID: C8D75E610773F2D9

View file

@ -1001,6 +1001,23 @@ ChatPage::ensureOneTimeKeyCount(const std::map<std::string, uint16_t> &counts)
// mark as published anyway, otherwise we may end up in a loop.
olm::mark_keys_as_published();
});
} else if (count->second > 2 * MAX_ONETIME_KEYS) {
nhlog::crypto()->warn("too many one-time keys, deleting 1");
mtx::requests::ClaimKeys req;
req.one_time_keys[http::client()->user_id().to_string()]
[http::client()->device_id()] =
std::string(mtx::crypto::SIGNED_CURVE25519);
http::client()->claim_keys(
req, [](const mtx::responses::ClaimKeys &, mtx::http::RequestErr err) {
if (err)
nhlog::crypto()->warn(
"failed to clear 1 one-time key: {} {} {}",
err->matrix_error.error,
static_cast<int>(err->status_code),
static_cast<int>(err->error_code));
else
nhlog::crypto()->info("cleared 1 one-time key");
});
}
}
}