Allow properly editing pending encrypted messages
This commit is contained in:
parent
9f5b647fb3
commit
8e20139079
4 changed files with 96 additions and 30 deletions
|
|
@ -470,6 +470,30 @@ handle_pre_key_olm_message(const std::string &sender,
|
|||
return plaintext;
|
||||
}
|
||||
|
||||
mtx::events::msg::Encrypted
|
||||
encrypt_group_message_with_session(mtx::crypto::OutboundGroupSessionPtr &session,
|
||||
const std::string &device_id,
|
||||
nlohmann::json body)
|
||||
{
|
||||
using namespace mtx::events;
|
||||
|
||||
// relations shouldn't be encrypted...
|
||||
mtx::common::Relations relations = mtx::common::parse_relations(body["content"]);
|
||||
|
||||
auto payload = olm::client()->encrypt_group_message(session.get(), body.dump());
|
||||
|
||||
// Prepare the m.room.encrypted event.
|
||||
msg::Encrypted data;
|
||||
data.ciphertext = std::string((char *)payload.data(), payload.size());
|
||||
data.sender_key = olm::client()->identity_keys().curve25519;
|
||||
data.session_id = mtx::crypto::session_id(session.get());
|
||||
data.device_id = device_id;
|
||||
data.algorithm = MEGOLM_ALGO;
|
||||
data.relations = relations;
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
mtx::events::msg::Encrypted
|
||||
encrypt_group_message(const std::string &room_id, const std::string &device_id, nlohmann::json body)
|
||||
{
|
||||
|
|
@ -631,19 +655,7 @@ encrypt_group_message(const std::string &room_id, const std::string &device_id,
|
|||
if (!sendSessionTo.empty())
|
||||
olm::send_encrypted_to_device_messages(sendSessionTo, megolm_payload);
|
||||
|
||||
// relations shouldn't be encrypted...
|
||||
mtx::common::Relations relations = mtx::common::parse_relations(body["content"]);
|
||||
|
||||
auto payload = olm::client()->encrypt_group_message(session.get(), body.dump());
|
||||
|
||||
// Prepare the m.room.encrypted event.
|
||||
msg::Encrypted data;
|
||||
data.ciphertext = std::string((char *)payload.data(), payload.size());
|
||||
data.sender_key = olm::client()->identity_keys().curve25519;
|
||||
data.session_id = mtx::crypto::session_id(session.get());
|
||||
data.device_id = device_id;
|
||||
data.algorithm = MEGOLM_ALGO;
|
||||
data.relations = relations;
|
||||
auto data = encrypt_group_message_with_session(session, device_id, body);
|
||||
|
||||
group_session_data.message_index = olm_outbound_group_session_message_index(session.get());
|
||||
nhlog::crypto()->debug("next message_index {}", group_session_data.message_index);
|
||||
|
|
|
|||
|
|
@ -79,6 +79,11 @@ handle_pre_key_olm_message(const std::string &sender,
|
|||
const std::string &sender_key,
|
||||
const mtx::events::msg::OlmCipherContent &content);
|
||||
|
||||
mtx::events::msg::Encrypted
|
||||
encrypt_group_message_with_session(mtx::crypto::OutboundGroupSessionPtr &session,
|
||||
const std::string &device_id,
|
||||
nlohmann::json body);
|
||||
|
||||
mtx::events::msg::Encrypted
|
||||
encrypt_group_message(const std::string &room_id,
|
||||
const std::string &device_id,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue