Commit graph

142 commits

Author SHA1 Message Date
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ć
3338ecf62a Merge branch 'master' into crypto-improvements 2020-10-13 13:02:02 +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ć
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ć
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ć
a357536ade crypto: Initial scaffolding for incoming key share handling. 2020-09-28 09:27:16 +02:00
Damir Jelić
f3be27921c crypto: Move the device trust state logic into the read only device. 2020-09-24 12:45:23 +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ć
af4b00195b crypto: Implement the key/value store for the sqlite store. 2020-09-18 13:42:51 +02:00
Damir Jelić
6b24d91ed9 crypto: Add an initial version of our key request state machine. 2020-09-17 14:16:43 +02:00
Damir Jelić
24ce4881c7 crypto: Add a method to save/load arbitrary objects from a CryptoStore.
This actually adds trait methods that save/load strings from the
CryptoStore. We add a wrapper for the CryptoStore since we can't mix
trait objects and generics, so we add generic methods to save/load
anything that implements Serialize/Deserialize.
2020-09-16 16:03:19 +02:00
Damir Jelić
464e181f66 crypto: Add a method to get all group sessions from the store. 2020-09-10 14:59:20 +02:00
Damir Jelić
7bd0e4975b crypto: Store the forwarding chains for group sessions. 2020-09-09 17:27:10 +02:00
Damir Jelić
127d4c225b crypto: Change the crypto store so we can save multiple group sessions at once. 2020-09-09 16:34:18 +02:00
Damir Jelić
3e9b0a8e7f crypto: Correctly store the ed25519 key map for inbound group sessions. 2020-09-09 15:03:19 +02:00
Damir Jelić
fc60593801 crypto: Remove some unused into implementation. 2020-09-08 17:34:34 +02:00
Damir Jelić
70ffc43ce0 crypto: Store the trust state of our own identities as well. 2020-09-08 16:07:37 +02:00
Damir Jelić
9810a2f630 crypto: Finish up the cross signing storing for the sqlite store. 2020-09-08 15:24:23 +02:00
Damir Jelić
083cebe735 crypto: Initial WIP user identity storing logic. 2020-09-07 16:57:58 +02:00
Damir Jelić
adf8905d9f crypto: Rename the memory stores into caches and reorder the store module. 2020-09-04 12:42:40 +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ć
d86c05efb3 crypto: Add a fixme to the sqlite store since it's not storing forwarding chains. 2020-09-02 15:08:24 +02:00
Damir Jelić
65843f89dc crypto: Simplify the signature loading in the sqlite cryptostore. 2020-09-02 12:24:46 +02:00
Damir Jelić
8b56546565 crypto: Remove an unwrap from the sqlite cryptostore. 2020-09-02 12:17:38 +02:00
Damir Jelić
8c4acf54e0 crypto: Reorder the errors so unpickling now returns the timestamp error. 2020-09-02 12:11:06 +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ć
987d87cd5d crypto: Use the correct async-trait macro for the CryptoStores. 2020-09-01 17:41:30 +02:00
Damir Jelić
8d39821a1f crypto: Remove some unused imports from the top level module. 2020-08-24 14:34:22 +02:00
Damir Jelić
90ea0229f2 crypto: Rename TrustState to LocalTrust since.
We might still trust the device event if our local trust isn't set, so
rename the enum to better reflect that meaning.
2020-08-19 11:20:08 +02:00
Damir Jelić
37a7f69e03 crypto: Implement storage for the user identities in the memory store. 2020-08-18 15:13:56 +02:00
Damir Jelić
f96437a242 crypto: Initial scaffolding for handling user identities in key queries. 2020-08-18 12:50:03 +02:00
Damir Jelić
de097d3ca0 crypto: Rename UserDevices to ReadOnlyUserDevices. 2020-08-17 17:01:38 +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ć
9b8e11aab9 crypto: Fix the docs for our features. 2020-08-13 11:06:26 +02:00
Damir Jelić
0d2f8c6d0f crypto: Fix some clippy warnings. 2020-08-11 16:01:48 +02:00
Damir Jelić
7637e79f2c matrix-sdk: Fix the tarpaulin skip directives. 2020-08-11 15:49:04 +02:00
Damir Jelić
d0a5b86ff3 crypto: Remove our lock around the cryptostore. 2020-08-11 15:39:50 +02:00
Damir Jelić
707b4c1185 crypto: Put a bunch of crypto store stuff behind atomic references. 2020-08-11 15:17:33 +02:00
Damir Jelić
2437a92998 crypto: Don't require the account loading method to borrow self mutably. 2020-08-11 15:12:15 +02:00
Damir Jelić
947fa08dae crypto: Don't require the load_account to mutably borrow self. 2020-08-11 15:08:07 +02:00
Damir Jelić
8f4ac3da7f crypto: Change the way we load the devices/sessions in the SqliteStore. 2020-08-11 14:43:18 +02:00
Damir Jelić
01bcbaf063 crypto: Remove most mutable self borrows from the crypto-store trait. 2020-08-11 14:34:42 +02:00
Damir Jelić
ac2469d270 crypto: Change the way we check if an user is already tracked. 2020-08-11 13:45:32 +02:00
Damir Jelić
eeb6a811c0 crypto: Make the in-memory stores threadsafe and cloneable. 2020-08-11 13:18:58 +02:00
Jonas Platte
d83fc971ce
Update ruma 2020-08-10 13:58:39 +02:00
Jonas Platte
d016ce1848
Use identifier macros in tests 2020-08-06 13:03:32 +02:00
Damir Jelić
2bf8c99dfe Merge branch 'master' into sas-verification 2020-08-04 11:23:24 +02:00
Damir Jelić
1787d2ebe6 crypto: Hook up marking the device as verified. 2020-08-03 12:38:43 +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ć
a71c7b2964 crypto: Add a method to set the verification state of devices. 2020-07-30 15:54:56 +02:00
Damir Jelić
57b65ec8c4 crypto: Add a verification machine. 2020-07-28 14:45:53 +02:00
Jonas Platte
bf54b17a2f
Upgrade ruma 2020-07-22 22:31:42 +02:00
Damir Jelić
2481fbbd27 crypto: Store the device signatures with the devices as well. 2020-07-21 17:33:47 +02:00
Damir Jelić
a9d645cbcd crypto: Rewrite the device keys fetching in the SQLiteStore using filter_map. 2020-07-21 16:46:11 +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ć
fe33430e9b crypto: Use DeviceId instead of str everywhere. 2020-07-21 10:48:15 +02:00
Devin R
807435c043 Updates DeviceId to be Box<DeviceId> 2020-07-18 08:51:19 -04:00
Damir Jelić
5bebe1d434 crypto: Clippy fixes for our tests. 2020-07-15 15:58:36 +02:00
Damir Jelić
a2a87b9fff matrix-sdk: Fix a bunch of clippy warnings. 2020-07-15 15:53:17 +02:00
Damir Jelić
de1988265d crypto: Move the outbound session creation logic into the account. 2020-07-15 15:39:56 +02:00
Damir Jelić
41cfbaf520 device: Store the device keys with the algorithm and device id.
This will ensure that we can check the signature of the device later on.
2020-07-14 12:00:29 +02:00
Damir Jelić
18b444aac5 crypto: Move the uploaded key count handing into the account. 2020-07-13 16:46:51 +02:00
Damir Jelić
a7a9ac24ed crypto: Move the key count field into the account. 2020-07-13 15:49:16 +02:00
Damir Jelić
b2ccb61864 crypto: Add the device id and identity keys to the megolm session.
This way we don't need to pass in the account to encrypt events.
2020-07-13 14:32:59 +02:00
Damir Jelić
c2f1e4de64 crypto: Disable a clippy warning. 2020-07-11 23:15:10 +02:00
Damir Jelić
df2bcf6f1f crypto: Style fix for a doc comment. 2020-07-11 09:45:52 +02:00
Damir Jelić
58d79ca9c6 crypto: Put the user id and device id into the account. 2020-07-10 15:43:32 +02:00
Damir Jelić
676d547161 matrix-sdk: Disable the tarpaulin skip lines since it fails to run with them. 2020-06-24 11:25:31 +02:00
Marcel
d4087a1aae Fix cargo fmt issues that the local version didn't auto fix 2020-06-17 19:16:04 +02:00
Marcel
8b77b4171a Do wasm sepcific changes:
- Only use send+sync when not using wasm
- Use wasm capabale async_trait wrapper macro
- Make room and room_member specific structs always clonable
2020-06-17 18:57:39 +02:00
Damir Jelić
5175cd8ddb crypto: Remove some unnecessary mem::replace calls. 2020-06-02 10:36:51 +02:00
Damir Jelić
ba66ee214f matrix-sdk: Move most of the configuration to the base client. 2020-05-25 14:21:04 +02:00
Damir Jelić
1d9fccdc9f crypto: Move the users for key query map into the store. 2020-05-15 15:33:30 +02:00
Damir Jelić
b2e48d8eae sqlite: Store the tracked users in the database. 2020-05-14 17:25:46 +02:00
Damir Jelić
2a411bf5df matrix-sdk: Use the instant crate so Instant works on wasm as well. 2020-05-12 15:48:17 +02:00
stoically
ef6104bc53 matrix-sdk: Support compiling to wasm32-unknown-unknown 2020-05-12 15:48:09 +02:00
Damir Jelić
6cbdbdcd2f matrix-sdk: Rename the types subproject to matrix-sdk-common. 2020-05-07 08:51:59 +02:00
Damir Jelić
7b6e030823 matrix-sdk: Fix the last Ruma incompatibilities. 2020-05-05 15:29:25 +02:00
Damir Jelić
addb455d16 crypto: Add all the missing docs and deny missing docs from now on. 2020-04-30 17:10:12 +02:00
Damir Jelić
5dc0842f49 crypto: Implmement device deletion for the sqlite store. 2020-04-30 14:33:41 +02:00
Damir Jelić
3bcce962e3 matirx_sdk: Fix a bunch of clippy warnings. 2020-04-30 14:07:49 +02:00
Damir Jelić
5de32c025f crypto: Allow session to be saved in a batched way. 2020-04-30 12:08:38 +02:00
Damir Jelić
e33fd098bc crypto: Make the save device method of the store accept a slice of devices. 2020-04-30 11:51:20 +02:00
Damir Jelić
5fef444d61 matrix-sdk: Split out the crypto part of the sdk into a separate crate. 2020-04-29 09:48:00 +02:00