Commit graph

43 commits

Author SHA1 Message Date
Damir Jelić
5418c88775 crypto: Add some more serialize/deserialize implementations 2021-01-18 13:21:30 +01:00
Damir Jelić
2e3b6fba7d common: Use the re-exported versions of js_int and assign 2021-01-04 15:29:49 +01:00
Damir Jelić
d39e3141fc crypto: Use CanonicalJsonValue for all the signature calculations. 2020-12-22 14:12:57 +01:00
Damir Jelić
b5c61af472 crypto: Move the base64 helpers into a common module. 2020-12-08 16:21:29 +01:00
Damir Jelić
8e53982bcd Merge branch 'master' into crypto-improvements 2020-12-08 15:06:14 +01:00
Damir Jelić
35247fac2a crypto: Fix a lint issue. 2020-12-08 10:50:58 +01:00
Damir Jelić
aa1a64628f crypto: Remove a bunch of unneeded whitespace in a log line. 2020-12-05 14:59:40 +01:00
Damir Jelić
e20b1efae9 crypto: Store private identities and accounts with the Changes struct as well. 2020-12-01 17:14:32 +01:00
Damir Jelić
5d0ff961b2 crypto: Check the Olm message hash if we fail to decrypt an Olm message.
Wether by accident (the next_batch token doesn't get stored properly) or
by malicious intent (the server replays a message) an Olm encrypted to-device
message may appear multiple times.

This is usually fine since nothing bad happens, we don't decrypt the message
and the message gets thrown away.

Since the introduction of Olm session unwedging an undecryptable message
leads to the creation of a new fresh Olm session. To avoid this we
remember which Olm messages we already decrypted so they don't trigger
an unwedging dance.
2020-12-01 14:50:04 +01:00
Damir Jelić
270350cd34 crypto: Save the olm message hash. 2020-12-01 14:38:03 +01:00
Damir Jelić
24592adbba crypto: Return a higher level struct when decrypting olm messages instead of tuples 2020-12-01 12:41:11 +01:00
Damir Jelić
7ec5a5ad1a Merge branch 'master' into crypto-improvements 2020-11-26 13:24:57 +01:00
Jonas Platte
0422bae924
Fix clippy lint rc_buffer 2020-11-25 19:01:28 +01:00
Damir Jelić
c40edcf2fc matrix-sdk: Try to lower our compile times, at least in the crypto part for now. 2020-11-20 20:35:48 +01:00
Damir Jelić
61a5293af5 cyrpto: Document the signing module. 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ć
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ć
59a7199202 crypto: Initial test for the session manager. 2020-10-15 13:58:35 +02:00
Damir Jelić
bd0ac703a0 crypto: Initial logic for session unwedging. 2020-10-09 15:39:35 +02:00
Damir Jelić
23ac00c8ec crypto: Initial support for group session invalidation. 2020-10-08 11:16:02 +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ć
8fe1eda169 crypto: Test the full key share flow. 2020-09-29 14:18:03 +02:00
Damir Jelić
84066d4a76 crypto: Split out the Account into a read only portion and one with effects. 2020-09-29 12:03:41 +02:00
Damir Jelić
e1c220e2f7 crypto: Test a key share cycle. 2020-09-29 10:24:54 +02:00
Damir Jelić
5b0457dad0 crypto: Remember the users that received the outbound group session. 2020-09-18 18:55:17 +02:00
Damir Jelić
7b3dfe2f27 crypto: Move the device and user identities under one module. 2020-09-04 10:51:46 +02:00
Damir Jelić
81b127b6e7 crypto: Modify all the pickling logic so we return serializeable structs. 2020-09-02 11:45:35 +02:00
Damir Jelić
269cfc3d34 crypto: Add a pickled account struct making account storing easier. 2020-09-02 09:37:10 +02:00
Damir Jelić
0de4a21320 crypto: Expose some missing structs that are needed to implement a cryptostore. 2020-09-01 17:39:51 +02:00
Damir Jelić
6760f81498 matrix-sdk: Update Ruma. 2020-08-26 13:40:38 +02:00
Damir Jelić
ce93869915 crypto: Return an Option instead of an empty result for the key uploads. 2020-08-21 09:50:01 +02:00
Damir Jelić
43aea6e482 crypto: Rename Device to ReadOnlyDevice. 2020-08-17 16:17:28 +02:00
Jonas Platte
5040be042f
Update ruma 2020-08-15 15:17:27 +02:00
Damir Jelić
344631b4ee crypto: Respect the encryption settings of a room when creating sessions. 2020-08-13 14:41:59 +02:00
Damir Jelić
7637e79f2c matrix-sdk: Fix the tarpaulin skip directives. 2020-08-11 15:49:04 +02:00
Jonas Platte
d83fc971ce
Update ruma 2020-08-10 13:58:39 +02:00
Damir Jelić
2bf8c99dfe Merge branch 'master' into sas-verification 2020-08-04 11:23:24 +02:00
Devin Ragotzy
0ac2b84c02 Unify import style across workspace 2020-08-02 08:05:43 -04:00
Devin Ragotzy
ed1f12ce37 Run cargo fmt with merge-imports true 2020-08-02 07:46:02 -04:00
Damir Jelić
4fa58bfaac crypto: Add getters for the user and device id in the account. 2020-07-22 13:40:47 +02:00
Damir Jelić
e50cf39a17 crypto: Store a copy of the user_id/device_id and identity keys in sessions. 2020-07-21 12:40:23 +02:00
Damir Jelić
3f1439fe28 crypto: Move the olm encryption logic into the Session struct. 2020-07-21 12:03:05 +02:00
Damir Jelić
b22324b305 crypto: Split out the olm module into separate files. 2020-07-21 10:38:14 +02:00