polysoft1 / libmatrix-client

A C++ client for the matrix communication protocol that is designed to not be dependent on specific libraries.
MIT License
2 stars 0 forks source link

Support end-to-end encryption #12

Open jaredoconnell opened 4 years ago

jaredoconnell commented 4 years ago

End to End Encryption is very important since most servers use it. Messages sent by others are not readable without this supported.

These must be supported:

Ideally, the API should not change in any way except the necessary things to setup E2E, as well as a bool or something in the message object that states whether the messages are encrypted.

jaredoconnell commented 4 years ago

It appears that we will be using OLM for encryption. It's designed by matrix.org for this. It's even natively written in C++. All other apps are using bindings.

https://gitlab.matrix.org/matrix-org/olm The documentation appears to be good. https://matrix-client.dpldocs.info/matrix.olm.html

Here is a master's thesis about adding E2EE: https://www.theseus.fi/bitstream/handle/10024/264169/makkonen_teemu.pdf?sequence=2

Here is another page for API endpoint information: https://matrix.org/docs/api/client-server/#/

This project is a C++ project that uses it, as an example: https://github.com/Nheko-Reborn/mtxclient

fire commented 3 years ago

What are the tasks needed to support this?

kdvalin commented 3 years ago

Currently tasks needed (not necessarily in this order):

You can checkout the issue-12/feature-e2e branch for current code