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