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
Damir Jelić
da5ef42719
crypto: Log when we invalidate a group session.
2020-10-08 14:03:01 +02:00
Damir Jelić
723fdeaa06
crypto: Fix a clippy warning.
2020-10-08 12:59:10 +02:00
Damir Jelić
19d513e3c0
crypto: Simplify and test the group session invalidation logic.
2020-10-08 12:40:42 +02:00
Damir Jelić
23ac00c8ec
crypto: Initial support for group session invalidation.
2020-10-08 11:16:02 +02:00
Damir Jelić
4019ebf121
crypto: Fix some clippy warnings.
2020-10-07 17:56:29 +02:00
Damir Jelić
9a838abd67
crypto: Log when we're not serving a key request because of a missing session.
2020-10-07 14:22:13 +02:00
Damir Jelić
17d23eb9e5
matrix-sdk: Add automatic key claiming support.
2020-10-07 14:07:47 +02:00
Damir Jelić
8ea0035cd0
crypto: Add the automatic key claim users to the key claim request.
2020-10-07 14:02:50 +02:00
Damir Jelić
06b9c71dbc
crypto: Refactor out the key share wait queue.
2020-10-07 12:42:39 +02:00
Damir Jelić
6a8ac62a51
crypto: Remove an unwrap.
2020-10-07 11:57:46 +02:00
Damir Jelić
1e894269c8
crypto: Correctly handle the key share without a session and test it.
2020-10-07 11:57:09 +02:00
Damir Jelić
e5f0f64405
crypto: Initial scaffolding for key shares for devices that are missing a session.
2020-10-06 16:38:42 +02:00
Damir Jelić
e3d24f5c31
crypto: Fix some clippy warnings.
2020-10-01 16:45:13 +02:00
Damir Jelić
02c765f903
crypto: Don't mark outbound group sessions automatically as shared.
2020-10-01 16:31:24 +02:00
Damir Jelić
fc6ff2c78a
crytpo: Remove an unneeded map/clone.
2020-10-01 12:46:09 +02:00
Damir Jelić
1d8f01ef11
crypto: Remove the third Device variant.
2020-10-01 12:15:13 +02:00
Damir Jelić
c8ca93c924
crytpo: Let the verification machine hold on to a raw CryptoStore.
...
This will later be useful when our higher level store wrapper holds on
to a verification machine to return higher level Device objects.
2020-10-01 11:17:27 +02:00
Damir Jelić
d644af7be9
crypto: Remove an unneeded clone.
2020-10-01 09:56:22 +02:00
Damir Jelić
ff2079da91
crypto: Move the group session handling logic into separate module.
2020-09-30 15:43:25 +02:00
Damir Jelić
646f18ae18
crypto: Remove an unused import.
2020-09-29 17:53:11 +02:00
Damir Jelić
2b8d4a21a4
crypto: Connect the key request handling to the main state machine.
2020-09-29 17:40:06 +02:00
Damir Jelić
78badd9af8
crypto: Use the correct event type when sending out forwarded room keys.
2020-09-29 17:36:56 +02:00
Damir Jelić
58aef51770
crypto: Remove an unneeded mutable borrow.
2020-09-29 14:44:18 +02:00
Damir Jelić
8fe1eda169
crypto: Test the full key share flow.
2020-09-29 14:18:03 +02:00