aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2022-04-23CleanupAlexey Rusakov
2022-04-23SLICE()Alexey Rusakov
Add a macro to make slicing clear in the code and quiet for static analysis.
2022-04-16Use more idiomatic C++Tobias Fella
2022-04-16Only build function when E2EE is enabledTobias Fella
2022-04-16Try fixing lgtm.comTobias Fella
2022-04-09Comment out debug statementTobias Fella
2022-04-09Prepare for MSC 3700Tobias Fella
2022-04-09Don't crash when decrypting existing messagesTobias Fella
2022-04-09Make sure devices are known before decrypting olm messagesTobias Fella
2022-04-09Check edKey when receiving an olm messageTobias Fella
2022-04-09Correctly load EncryptedEventsTobias Fella
2022-03-11Fix loading images when E2EE is disabledTobias Fella
2022-03-10Merge pull request #541 from TobiasFella/storesessionedkeyAlexey Rusakov
Store some more things in the database
2022-03-09Check for empty ed25519 key.Tobias Fella
2022-03-09Update lib/database.cppTobias Fella
Co-authored-by: Carl Schwan <carl@carlschwan.eu>
2022-03-08Store time of last decrypted message for each olm sessionTobias Fella
Is required to correctly choose a session to use for sending messages
2022-03-07Add datbase migrationTobias Fella
2022-03-07Guard against device reuse attacksTobias Fella
2022-03-07Store the device's ed25519 in the databaseTobias Fella
2022-02-27Merge #538: Verification should return false instead of error for failed ↵Alexey Rusakov
signature checks
2022-02-27Merge #535: Convenience functions for querying user devices and keys from cacheAlexey Rusakov
2022-02-27Update lib/e2ee/qolmutility.cppTobias Fella
Co-authored-by: Carl Schwan <carl@carlschwan.eu>
2022-02-27Return false instead of error for failed signature checksTobias Fella
2022-02-27Merge pull request #537 from TobiasFella/decryptcheckroomAlexey Rusakov
2022-02-27Apply suggestionsTobias Fella
2022-02-27Apply suggestionsTobias Fella
2022-02-27Merge #536: Use QOlmMessage::Type in more placesAlexey Rusakov
2022-02-26Check that decrypted events are for the current roomTobias Fella
2022-02-26Use QOlmMessage::Type in more placesTobias Fella
Make sure that the enum values correspond to the values used in the spec and use them instead of magic constants
2022-02-26Handle to-device messages before handling roomdataTobias Fella
Probably improves the performance slightly If we handle to room data first, if a message arrives at the same time as the to-device message containing the key and we handle the message first, it will not be decryptable and stored as undecrypted. Then, when the key is handled, the cache of undecrypted messages is searched, the message decrypted and replaced. When handling the key first, the message can be decryped instantly.
2022-02-26Add convenience functions for querying user devices and keys from cacheTobias Fella
2022-02-26Merge pull request #477 from TobiasFella/work/readencryptedmessagesAlexey Rusakov
2022-02-25IfdefTobias Fella
2022-02-25Save key counts to stateTobias Fella
Otherwise new one time keys will be uploaded on every start
2022-02-24Fix all testsTobias Fella
2022-02-16quotient_export.h: #include <qglobal.h>Alexey Rusakov
To ensure Q_DECL_EXPORT/Q_DECL_IMPORT macros are defined.
2022-02-16More cleanup, especially in EncryptedFileAlexey Rusakov
For EncryptedFile: - JSON converter bodies moved away to .cpp; - instead of C-style casts, reinterpret_cast is used to convert from (const) char* to (const) unsigned char*; - the size for the target plain text takes into account the case where the cipher block size can be larger than 1 (after reading https://www.openssl.org/docs/man1.1.1/man3/EVP_DecryptUpdate.html). - file decryption is wrapped in #ifdef Quotient_E2EE_ENABLED, to avoid OpenSSL linking errors when compiling without E2EE.
2022-02-16isSupportedAlgorithm()Alexey Rusakov
That's a better primitive than just exposing SupportedAlgorithms list.
2022-02-16Use QHash instead of QMapAlexey Rusakov
We don't seem to need sorted associative containers in those cases.
2022-02-16Fix file decryptionTobias Fella
2022-02-16Connection: guard device loading per-objectAlexey Rusakov
Using a static variable is incorrect as it doesn't load the device list for any subsequent created Connection object.
2022-02-16CleanupAlexey Rusakov
A note on switching to QLatin1String for JSON key constants - this is more concise and barely affects (if at all) runtime performance (padding each QChar with zeros is trivial for assignment; and comparison can be done directly with the same performance as for two QStrings).
2022-02-16Add a few missing QUOTIENT_API stanzasAlexey Rusakov
Also, removed Q_GADGET macros from key verification events as those don't seem to do anything (no Q_ENUM/Q_FLAG things, namely).
2022-02-14Don't set lifetime as version in call invitesTobias Fella
2022-02-14Revert "Don't #include "logging.h" from headers"Alexey Rusakov
This reverts commit 2cf44607cf0f057e147c2c4fe6dded6c13c58a8a (that was stupid, honestly).
2022-02-14Don't #include "logging.h" from headersAlexey Rusakov
Logging categories used by Quotient are not supposed to be exposed externally, which basically forbids usage of logging in header files. A more flexible solution would involve moving logging.h to private headers but Quotient doesn't have that thing yet.
2022-02-13Merge branch 'dev'Alexey Rusakov
The result is FTBFS as yet; next commits will fix that, along with a few other things.
2022-02-12Replace QPair with std::pairTobias Fella
2022-02-11Implement more suggestionsTobias Fella
2022-02-11Enable to/fromJson to work with non-assignable objectsAlexey Rusakov
Previously you could not use toJson() on a polymorphic structure such as one of those defined in eventcontent.h because it is not assignable and the default specialisation of JsonObjectConverter used assignment. To avoid that limitation, one had to specialise JsonObjectConverter for each descendant of EventContent::Base, which is a lot of boilerplate. The new JsonConverter (the template underpinning the "default" to/fromJson implementation) improves on two things: 1. dump() allows to construct your own QJsonObject - or anything else convertable to QJsonValue - instead of requiring to fill in the pre-constructed one. 2. load() allows to construct your value type directly from QJsonObject instead of default-constructing it in advance.