Commit Graph

437 Commits (9edf8657d05647fc720106e373a591a58a84465b)

Author SHA1 Message Date
Damir Jelić 3a1eeb6a16 Merge branch 'crypto-improvements' into new-state-store 2020-11-11 14:43:49 +01:00
Damir Jelić 3f57ba57d0 base: WIP start to split out the steps collect changes, save changes,
apply changes.
2020-11-11 14:37:04 +01:00
Damir Jelić b27f1b0e34 crypto: Fix some clippy warnings. 2020-10-30 14:38:29 +01:00
Damir Jelić b67cd4ddd2 crypto: Create a trusted public cross signing identity when we create a private one. 2020-10-30 13:21:14 +01:00
Damir Jelić 44cc1cef71 crypto: Let devices hold on to the private identity. 2020-10-30 11:41:48 +01:00
Damir Jelić 34bec59389 crypto: Hold on to the private identity in the store. 2020-10-30 11:34:55 +01:00
Damir Jelić cb95f576a5 crypto: Clear out the signatures when signing a device.
This avoids re-uploading all the existing signatures.
2020-10-29 15:37:29 +01:00
Damir Jelić 5c530cf9ee crypto: Upload signatures after verification is done. 2020-10-27 16:39:23 +01:00
Damir Jelić 30a78bb1d6 crypto: Add the private identity to the Sas object. 2020-10-27 14:21:22 +01:00
Damir Jelić 2077ea0ddf crypto: Split out the device_key signing method. 2020-10-27 13:48:51 +01:00
Damir Jelić e757d605f5 crypto: Allow users to be signed as well. 2020-10-27 13:29:19 +01:00
Damir Jelić 61a5293af5 cyrpto: Document the signing module. 2020-10-26 16:03:59 +01:00
Damir Jelić 6e83a4bbca crypto: Split out the signing module into two files. 2020-10-26 16:03:59 +01:00
Damir Jelić 5c14910126 crypto: WIP cross signing bootstrap. 2020-10-26 16:03:59 +01:00
Damir Jelić 4cc803fe27 crypto: WIP cross signing bootstrap. 2020-10-24 10:32:17 +02:00
Damir Jelić 8ed1e37cef crypto: Save the account if we create a new one. 2020-10-23 11:17:37 +02:00
Damir Jelić 5fd004bae5 crypto: Connect the private identity to the verification machine. 2020-10-23 11:17:13 +02:00
Damir Jelić 7de002b128 crypto: Fix some lint issues. 2020-10-22 16:40:05 +02:00
Damir Jelić f60dc7ed78 crypto: Allow cross signing identities to be stored/restored. 2020-10-22 16:25:25 +02:00
Damir Jelić 78d7f6c10b crypto: Fix a clippy issue. 2020-10-21 17:05:36 +02:00
Damir Jelić fa25ca4475 crypto: Make the pickle key encryption future proof. 2020-10-21 16:52:40 +02:00
Damir Jelić c9db63509f crypto: Add error handling to the signing module. 2020-10-21 16:24:10 +02:00
Damir Jelić ac0df5dea9 crypto: Properly handle errors in the pickle key decryption. 2020-10-21 15:28:43 +02:00
Damir Jelić d175c47a05 crypto: Use a random pickle key in the sqlite store. 2020-10-21 15:13:21 +02:00
Damir Jelić 959e8450af crypto: Use a transaction to create sqlite tables. 2020-10-21 14:01:27 +02:00
Damir Jelić dd0642cd59 crypto: Add a pickle key struct. 2020-10-21 13:21:22 +02:00
Damir Jelić 6a7da5a8b6 crypto: Correctly generate a random nonce for pickling of the signing objects. 2020-10-21 12:55:45 +02:00
Damir Jelić 7cab7cadc9 crypto: Rework the cryptostore.
This modifies the cryptostore and storage logic in two ways:
    * The cryptostore trait has only one main save method.
    * The receive_sync method tries to save all the objects in one
    `save_changes()` call.

This means that all the changes a sync makes get commited to the store
in one transaction, leaving us in a consistent state.

This also means that we can pass the Changes struct the receive sync
method collects to our caller if the caller wishes to store the room
state and crypto state changes in a single transaction.
2020-10-20 17:19:37 +02:00
Damir Jelić 728d80ed06 crypto: Connect the cross signing to the main state machine. 2020-10-19 16:03:01 +02:00
Damir Jelić 404cc410cc crypto: Fix the docs and return value of the import_keys method. 2020-10-17 14:39:19 +02:00
Damir Jelić 93f49265a6 crypto: Use a git version of sqlx.
The beta release has a nasty bug where one thread would consume 100% of
CPU.
2020-10-16 19:42:41 +02:00
Damir Jelić 425a07d670 crypto: Don't load all the devices in the sqlite store. 2020-10-16 16:57:26 +02:00
Damir Jelić 4262f1d3b0 crypto: Don't cache inbound group sessions in the sqlite store. 2020-10-16 15:54:50 +02:00
Damir Jelić b5560d3cb6 crypto: More transactions in the sqlite store. 2020-10-16 15:23:34 +02:00
Damir Jelić fc54c63a4c crypto: Upgrade sqlx to the beta release.
This change is much needed to enable transactions in our sqlite store,
before this release creating a transaction would take ownership of the
connection, now it just mutably borrows it.
2020-10-16 15:05:53 +02:00
Damir Jelić e7a24d5e68 crypto: Move the session managers under a common module. 2020-10-16 11:09:55 +02:00
Damir Jelić b5c9473424 crypto: Test the session unwedging logic. 2020-10-15 15:03:22 +02:00
Damir Jelić 59d7b53242 crypto: Add an user for a key request if the device was marked as wedged. 2020-10-15 15:02:02 +02:00
Damir Jelić 59a7199202 crypto: Initial test for the session manager. 2020-10-15 13:58:35 +02:00
Damir Jelić d1313b8614 crypto: Fix another clippy warning. 2020-10-14 16:15:26 +02:00
Damir Jelić 4e8ce4cb5d crypto: Fix clippy warnings and don't use the PickleMode for signing pickling. 2020-10-14 16:01:52 +02:00
Damir Jelić c85fe6bc21 crypto: Initial support for private cross signing identities. 2020-10-14 15:35:06 +02:00
Damir Jelić 3338ecf62a Merge branch 'master' into crypto-improvements 2020-10-13 13:02:02 +02:00
Damir Jelić 1c6a67d864 matrix-sdk: Bump our deps. 2020-10-13 13:01:18 +02:00
Damir Jelić 1cabc0cac9 crypto: Correctly store the uploaded key count when saving the account.
This fixes: #101.
2020-10-13 09:47:49 +02:00
Damir Jelić bd0ac703a0 crypto: Initial logic for session unwedging. 2020-10-09 15:39:35 +02:00
Damir Jelić 6d2e9cfc02 crypto: Share the users_for_key_claim map between modules. 2020-10-09 11:36:31 +02:00
Damir Jelić 473e49252e crytpo: Get the session from the list of sessions in a safe manner. 2020-10-08 15:56:17 +02:00
Damir Jelić d96c9f85a1 crypto: Add doces for the get_missing_sessions method. 2020-10-08 14:50:35 +02:00
Damir Jelić 279ce0bba0 crypto: Split out the Olm session handling logic into a separate module. 2020-10-08 14:41:34 +02:00