aboutsummaryrefslogtreecommitdiff
path: root/autotests/testolmaccount.cpp
AgeCommit message (Collapse)Author
2022-09-26QOlmUtility::ed25519Verify: just return boolAlexey Rusakov
It's too easy to incorrectly test the previous return type. (cherry picked from commit 5904a61c59f0eef00aef07ef998658fd791ff139)
2022-09-26Wrap error reporting into facility macrosAlexey Rusakov
Facility macros to report Olm errors: QOLM_INTERNAL_ERROR[_X], QOLM_FAIL_OR_LOG[_X]
2022-09-26Cleanup across E2EE codeAlexey Rusakov
Notably: - simplified unnecessarily verbose constructs; - formally aligned (no re-numeration was necessary) QOlmMessage::Type with corresponding OLM_ constants; - dropped QOlmSession::encryptMessageType() because it's very sensitive to the order of calling with QOlmSession::encrypt() (and encrypt() itself already calls it and returns the message type); - simplify the return type of pickle() calls that can only fail due to an internal error; - replace const QString& with QStringView or const QByteArray& where appropriate; - use '\0' where it was meant to be instead of '0'.
2022-09-26Replace QOlmError with OlmErrorCodeAlexey Rusakov
QOlmError represents a subset of OlmErrorCode, and the associated fromString() function uses undocumented strings produced inside Olm; meanwhile OlmErrorCode is documented in its own header file. Each QOlm* class now has lastErrorCode() next to lastError() (that, from now, returns a textual representation straight from Olm, not QOlmError enum). Also: including olm/error.h in e2ee/e2ee.h required some rearrangement of the code to make sure non-E2EE configuration still builds.
2022-09-06Add autotest for key verification and fix several edge-casesTobias Fella
2022-06-01Fix FTBFS after the mergeAlexey Rusakov
2022-05-31Merge branch 'dev' into update-api-updateAlexey Rusakov
2022-05-31Tweak QOlmAccount and data structures aroundAlexey Rusakov
This is mainly to plug the definition of a string-to-variant map for one-time keys (see https://spec.matrix.org/v1.2/client-server-api/#key-algorithms) into the CS API generated code (see the "shortcut OneTimeKeys" commit for gtad.yaml); but along with it came considerable streamlining of code in qolmaccount.cpp. Using std::variant to store that map also warranted converters.h to gain support for that type (even wider than toJson() that is already in dev - a non-trivial merge from dev is in order).
2022-05-29Merge #557: Refresh and organise run-tests.sh/adjust-config.shAlexey Rusakov
2022-05-29TestOlmAccount: fix testsAlexey Rusakov
Mainly the change is about eliminating the checks for an exact number of key-value pairs inside `one_time_key_counts` - these checks started failing with new Synapse throwing `signed_curve25519: 0` into this dict.
2022-05-29Move some Meg/Olm session logic from Room::Private to Connection::PrivateAlexey Rusakov
Functions (Room::Private::)createOlmSession, payloadForUserDevice and sendRoomKeyToDevices don't have a lot to do with the given Room object but deal with quite a few things stored in Connection. This commit moves them to Connection::Private, exposing sendSessionKeyToDevices (the new name for sendRoomKeyToDevices) in Connection so that Room could call it from Room::P::sendMegolmSession(). While moving these over, a few additional things were adjusted: - more functions marked as const - a few functions could be moved now from Connection to Connection::Private - false slots in Connection (such as picklingMode) are moved out of the slots block - keys.yml in Matrix CS API definitions has been adjusted to match the real structure of `/claim` response (see quotient-im/matrix-spec repo); csapi/keys.h has been regenerated accordingly.
2022-05-29Refactor EncryptedFile and EC::FileInfo::fileAlexey Rusakov
Besides having a misleading name (and it goes back to the spec), EncryptedFile under `file` key preempts the `url` (or `thumbnail_url`) string value so only one of the two should exist. This is a case for using std::variant<> - despite its clumsy syntax, it can actually simplify and streamline code when all the necessary bits are in place (such as conversion to JSON and getting the common piece - the URL - out of it). This commit replaces `FileInfo::url` and `FileInfo::file` with a common field `source` of type `FileSourceInfo` that is an alias for a variant type covering both underlying types; and `url()` is reintroduced as a function instead, to allow simplified access to whichever URL is available inside the variant. Oh, and EncryptedFile is EncryptedFileMetadata now, to clarify that it does not represent the file payload itself but rather the data necessary to obtain that payload.
2022-05-16QOlmExpected and associated refactoringAlexey Rusakov
As mentioned in the commit introducing `Expected`, `QOlmExpected` is simply an alias for `Expected<T, QOlmError>`. This simplifies quite a few function signatures in `QOlm*` classes and collapses unwieldy `std::holds_alternative<>`/`std::get<>` constructs into a neat contextual bool cast and an invocation of `operator*` or `value()`/`error()` accessors that don't need to specify the type. While refactoring the code, I found a couple of cases of mismatching `uint32_t` and `qint32_t` in return values; a couple of cases where `decrypt()` returns `QString` which is in fact `QByteArray` (e.g., in `QOlmSession::decrypt()`); there's a repetitive algorithm in `Connection::Private::sessionDecryptPrekey()` and `sessionDecryptGeneral()`
2022-02-24Fix all testsTobias Fella
2022-02-24Fix testTobias Fella
2022-02-23Fix tests a bitTobias Fella
2022-02-18TestOlmAccount::claimKeys(): auth bob as bob, not as aliceAlexey Rusakov
2022-02-18testolmaccount.cpp: cleanupAlexey Rusakov
2022-02-18TestOlmAccount: align homeserver address with that in run-tests.shAlexey Rusakov
It would probably be even better to pass the homeserver address in the environment but that's a bigger endeavour. Also: reformatted CREATE_CONNECTION macro.
2022-02-18Use QCoreApplication in autotestsAlexey Rusakov
QEventLoop refuses to work without an application object instance.
2022-02-17Don't create QApplications in testsTobias Fella
2022-02-07Remove encryptionmanager and various fixesTobias Fella
2022-01-29Apply suggestions from code reviewTobias Fella
Co-authored-by: Alexey Rusakov <Kitsune-Ral@users.sf.net>
2021-12-24Apply suggestionsTobias Fella
2021-12-10Fix compilation of tests against older qtTobias Fella
2021-12-07Rename "crypto" -> "e2ee"Tobias Fella
2021-12-01Remove outdated commentTobias Fella
2021-12-01Fix setting encrypted flag in roomsCarl Schwan
2021-12-01Add a test (now failing)Carl Schwan
2021-12-01Text: Add KeyChange testCarl Schwan
2021-12-01Fix testsCarl Schwan
2021-12-01test: Add QueryKey test (failing)Carl Schwan
2021-12-01Finish writing TestOlmAccount::signatureValidCarl Schwan
2021-12-01Fix everythingCarl Schwan
2021-12-01sslCarl Schwan
2021-12-01fix typoCarl Schwan
2021-12-01Apply a few more commentsCarl Schwan
2021-12-01Fix signing keysCarl Schwan
2021-12-01More test but still failing in signing/signature verificationCarl Schwan
2021-12-01Add more test and use macro to remove duplicated codeCarl Schwan
2021-12-01Key verificationCarl Schwan
2021-12-01More testsCarl Schwan
2021-12-01E2EE: initial port to internal olm wrapperAlexey Andreyev
Remove qtolm git module. Update CMakeLists.txt. Rename olm to crypto subdir to prevent disambiguation. Rename internal files accordingly. Comment out not ported E2EE API usage.
2021-12-01Move filesCarl Schwan
2021-12-01Add encrypted file structCarl Schwan
2021-12-01Add device key testCarl Schwan
2021-12-01Disable olm test when disabling encryptionCarl Schwan
2021-12-01Improve APICarl Schwan
2021-12-01Implement outboundsessionCarl Schwan
2021-12-01Add testsCarl Schwan