Commit graph

757 commits

Author SHA1 Message Date
Damir Jelić
e29508938b crypto: More work on the incoming key request handling. 2020-09-28 13:32:30 +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ć
42c4cf2a30 crypto: Test the outgoing requests method instead of accessing the field. 2020-09-24 12:00:22 +02:00
Damir Jelić
c5bece2d58 crypto: Zeroize and remove the session key copies for forwarded room keys. 2020-09-24 11:18:01 +02:00
Damir Jelić
4662ca2e32 crypto: Refactor the one-time key count update logic. 2020-09-24 11:16:15 +02:00
Damir Jelić
5a86b067e4 crypto: Add tests for the identity manager. 2020-09-23 15:45:25 +02:00
Damir Jelić
7c3e751d6e Merge branch 'crypto-improvements' into master 2020-09-23 11:07:49 +02:00
Damir Jelić
95e906e0dc crypto: Save the account if the one-time key count updates. 2020-09-18 20:50:32 +02:00
Damir Jelić
2e3d30d7b4 crypto: Move the identity/device management logic into a separate struct. 2020-09-18 20:50:32 +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ć
a183584541 crypto: Test that we correctly check the hash when decrypting attachments. 2020-09-18 17:49:44 +02:00
Damir Jelić
562bb5aee3 crypto: Remove some dead key requests code for now. 2020-09-18 17:26:56 +02:00
Damir Jelić
dea3e4adf4 crypto: Document when a key export may panic. 2020-09-18 14:04:39 +02:00
Damir Jelić
5d5d5bb141 crypto: Hook up the key requesting to the main state machine. 2020-09-18 13:50:13 +02:00
Damir Jelić
c58cf71be1 crypto: Send out key request cancellations once we receive a key. 2020-09-18 13:49:46 +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ć
300b03bd9e crypto: Add more test for the outgoing key requests. 2020-09-17 17:13:42 +02:00
Damir Jelić
a5b195efc7 crypto: Initial tests for the key requests state machine. 2020-09-17 16:55:33 +02:00
Damir Jelić
692f9baa0e crypto: Add logic to handle outgoing key requests. 2020-09-17 16:09:08 +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ć
849934b180 crypto: Use a constant for the attachment encryption version. 2020-09-16 12:39:23 +02:00
Damir Jelić
ae894e0ff6 crypto: Finish up the attachment encryption.
This adds docs and proper error handling to the attachment encryption.
Zeroing out the key buffers is added as well.
2020-09-16 12:05:44 +02:00
Damir Jelić
890e6cbc73 crypto: Turn an unwrap into a except. 2020-09-15 17:18:31 +02:00
Damir Jelić
3573614640 crypto: Add some TODOs for the key query handling. 2020-09-15 12:13:35 +02:00
Damir Jelić
a60f60bd7d Merge branch 'master' into encrypted_attachments 2020-09-15 12:04:37 +02:00
Damir Jelić
b628e6286a crypto: Remove an unused import. 2020-09-14 20:27:30 +02:00
Jonas Platte
fb47abcc17
Update ruma 2020-09-14 20:26:52 +02:00
Damir Jelić
2d6882c495 crypto: Use a Read implementation for the attachment encryption as well. 2020-09-14 20:06:44 +02:00
Damir Jelić
51f3d90224 crypto: Move the file encryption modules under a submodule. 2020-09-14 17:14:18 +02:00
Damir Jelić
1a140ecc2f crypto: Initial support for attachment encryption. 2020-09-14 16:38:52 +02:00
Damir Jelić
ffd2843b0a matrix-sdk: Expose the import/export keys methods. 2020-09-11 16:34:39 +02:00
Damir Jelić
618a58ba34 crypto: Add error handling to the key exports. 2020-09-10 17:02:36 +02:00
Damir Jelić
8af18a4df7 crypto: Test the EncryptionSettings conversion. 2020-09-10 16:21:23 +02:00
Damir Jelić
7790c3db8f crypto: Fix a bunch of clippy warnings. 2020-09-10 16:07:28 +02:00
Damir Jelić
e3f4c1849c crypto: Finish up the key export feature. 2020-09-10 15:54:41 +02:00
Damir Jelić
848156213b crypto: Add a PartialEq derive for the exported key struct. 2020-09-10 15:51:39 +02:00
Damir Jelić
23e953d9cf crypto: Hide some methods that shouldn't be public. 2020-09-10 15:49:34 +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ć
9617d9aac9 crypto: Test the import/export of group sessions. 2020-09-09 16:10:16 +02:00
Damir Jelić
e828828ace crypto: Document the exported key -> forwarded room key conversion methods. 2020-09-09 15:11:25 +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ć
aff1e1d0a8 crypto: Add key export methods for inbound group sessions. 2020-09-09 12:47:28 +02:00
Damir Jelić
98f69aed41 crypto: Remove some duplicated types after the group session split. 2020-09-09 11:52:10 +02:00
Damir Jelić
acfd0cdb07 crypto: Split out the group session module into multiple files. 2020-09-09 11:07:49 +02:00
Damir Jelić
fc60593801 crypto: Remove some unused into implementation. 2020-09-08 17:34:34 +02:00
Damir Jelić
14226c0778 crypto: Refactor some tests. 2020-09-08 16:17:17 +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ć
d35cf56dc8 crypto: Disable the real life key export test since it take a lot of time. 2020-09-07 16:59:30 +02:00
Damir Jelić
083cebe735 crypto: Initial WIP user identity storing logic. 2020-09-07 16:57:58 +02:00
Damir Jelić
faaf3f7a29 crypto: Identities add some methods to get the keys/signatures of the keys. 2020-09-07 16:57:17 +02:00
Damir Jelić
f57447527d crypto: Initial logic for encrypting key exports. 2020-09-04 17:59:56 +02:00
Damir Jelić
8dbc7c38e5 crypto: Correctly split the 2 keys in the key export logic. 2020-09-04 16:34:19 +02:00
Damir Jelić
5a069a8721 Merge branch 'master' into key_export 2020-09-04 14:48:56 +02:00
Damir Jelić
89efcee337 crypto: Move the signature verification method under an Utility struct. 2020-09-04 13:18:31 +02:00
Damir Jelić
22daf0d81e Merge branch 'to-device-txn-uuid' into crypto-improvements 2020-09-04 12:54:40 +02:00
Damir Jelić
53fec7a87e crypto: Don't ignore store errors when fetching the identities. 2020-09-04 12:44:03 +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
Jonas Platte
73c104cac1
Replace IncomingToDeviceRequest with customized request type 2020-09-03 20:02:55 +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ć
8b5bb7d8c5 crypto: Remove the deserialize implementations for our user identity.
Deriving Serialize/Deserialize for an AtomicBool doesn't seem to be
implemented under WASM. So remove the derives for now.
2020-09-02 13:54:04 +02:00
Damir Jelić
2195da1cd8 crypto: Fix some docs. 2020-09-02 12:28:18 +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ć
c652762255 crypto: Allow user identities to be seralized/deserialized. 2020-09-02 11:54:04 +02:00
Damir Jelić
4bab678e46 crypto: Allow most of the ReadOnlyDevice to be serialized. 2020-09-02 11:49:49 +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ć
0de4a21320 crypto: Expose some missing structs that are needed to implement a cryptostore. 2020-09-01 17:39:51 +02:00
Damir Jelić
a2bfa08e09 crypto: Initial decryption method for key exports. 2020-08-26 19:14:24 +02:00
Damir Jelić
39628a308b matrix-sdk: Allow any event content to be sent out with room_send(). 2020-08-26 15:41:27 +02:00
Damir Jelić
6760f81498 matrix-sdk: Update Ruma. 2020-08-26 13:40:38 +02:00
Damir Jelić
95c8708995 crypto: Document and rename the mark_requests_as_sent() method. 2020-08-24 14:49:57 +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ć
2bcbf1eca4 Merge branch 'power-ev-overflow' into master 2020-08-24 14:27:02 +02:00
Damir Jelić
298c260c5f crypto: Document the outgoing request types. 2020-08-23 17:03:04 +02:00
Devin Ragotzy
72614e4252 matrix_sdk_crypto: Appease clippy 2020-08-22 08:00:32 -04:00
Damir Jelić
edea5e1c51 crypto: Fix a clippy warning. 2020-08-21 16:46:28 +02:00
Damir Jelić
b3941ca254 crypto: Verify user identities when we're the first one to confirm as well. 2020-08-21 16:39:15 +02:00
Damir Jelić
c3c6428717 crypto: Remove some clippy warnings. 2020-08-21 16:31:02 +02:00
Damir Jelić
de90da4adc crypto: Make the verification machine compatible with how we queue up requests. 2020-08-21 16:26:34 +02:00
Damir Jelić
002531349e crypto: Decluter the main doc page a bit. 2020-08-21 15:06:54 +02:00
Damir Jelić
e38bfc64f4 crypto: Streamline the key claiming so we use the new mark request as sent method. 2020-08-21 14:40:49 +02:00
Damir Jelić
93e1967119 crypto: Initial refactor to switch to the outgoing_requests queue. 2020-08-21 13:35:01 +02:00
Damir Jelić
aee40977a3 crypto: Clamp the rotation period ms so users can't wedge E2E.
Users may set a very small rotation period this might mean that a
session might expire by the time it's shared ending up in a loop where
we constantly need to share a group session yet never manage to send a
message.
2020-08-21 12:50:16 +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ć
202c20feda crypto: Rename the method to set the local trust of a device. 2020-08-20 18:01:34 +02:00
Damir Jelić
c307690c2e crypto: Fix a clippy warning and some spelling. 2020-08-20 16:06:06 +02:00
Damir Jelić
552a12eeed crypto: More docs for the user identities. 2020-08-20 15:52:40 +02:00
Damir Jelić
c2ad298963 crypto: Check that the user ids match for the cross signing keys. 2020-08-20 15:40:49 +02:00
Damir Jelić
d908d0f817 crypto: Don't allow user identities to verify devices of other users. 2020-08-20 15:17:19 +02:00
Damir Jelić
9edc876160 crypto: Check that the master key and subkeys have the same user id. 2020-08-20 15:14:58 +02:00
Damir Jelić
398edbbe0c crypto: Reset the verification state of our identity if the master keys change. 2020-08-20 15:13:55 +02:00
Damir Jelić
89b56b5af8 crypto: Don't expose the btree map of the master key dirrectly.
This implements PartialEq for the master key so we can check if they
have changed when doing SAS.
2020-08-20 15:06:49 +02:00
Damir Jelić
a57f63d614 crypto: Document the user identities. 2020-08-20 14:44:16 +02:00
Damir Jelić
74dd0a00d3 crypto: Simplify the default hashmaps in the memory stores. 2020-08-20 12:23:18 +02:00
Damir Jelić
b97e3d7bae crypto: Fix a clippy warning. 2020-08-20 10:49:14 +02:00
Damir Jelić
c3eb4d8106 crypto: Simplify some more function definitions. 2020-08-20 10:36:58 +02:00
Damir Jelić
ea49a35b43 crypto: Simplify the function signature of share_group_session. 2020-08-20 10:25:05 +02:00
Damir Jelić
a99e47c310 crypto: Shorten some log lines. 2020-08-20 10:23:16 +02:00
Damir Jelić
69fbe65ac4 crypto: Add some docs for the cross signing keys handling method. 2020-08-20 10:21:00 +02:00
Damir Jelić
aaa15c768c crypto: Simplify the Olm message map construction. 2020-08-20 10:19:55 +02:00
Damir Jelić
58185e08e8 crypto: Move the olm_encrypt() method into the higher level Device. 2020-08-20 10:18:36 +02:00
Damir Jelić
1bd15b9fdd crypto: Remove some unneeded clones. 2020-08-19 18:04:06 +02:00
Damir Jelić
23126c4e48 crypto: Disable the sqlite store test if the feature is disabled. 2020-08-19 17:55:28 +02:00
Damir Jelić
6f5352b9a9 crypto: Test the signature checking of user identities. 2020-08-19 17:52:38 +02:00
Damir Jelić
eb16737d3b crypto: Add some comments about the order of signature checks. 2020-08-19 15:35:34 +02:00
Damir Jelić
56309ae12c matrix-sdk: Bump the versions of our deps. 2020-08-19 14:52:11 +02:00
Damir Jelić
7f23cbbeb5 crypto: Add a TODO about cross signing signatures. 2020-08-19 14:49:40 +02:00
Damir Jelić
3153a81cd2 crypto: Add support to check the cross signing verification state of a device. 2020-08-19 14:47:22 +02:00
Damir Jelić
c3e593d998 crypto: The device identity can be our own, so store the identity enum instead. 2020-08-19 14:43:49 +02:00
Damir Jelić
c2a386b889 crypto: Fix a clippy warning. 2020-08-19 14:40:04 +02:00
Damir Jelić
317a141e07 crypto: If our own identity passed a SAS flow, mark it as verified. 2020-08-19 14:34:18 +02:00
Damir Jelić
3990e50ca6 crypto: Store the verified identities in the SAS states. 2020-08-19 14:28:16 +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ć
a42af5da69 crypto: Let the device hold on to identities.
This makes it possible to check the verification state of the device
directly.
2020-08-19 10:58:14 +02:00
Damir Jelić
f63a01a85b crypto: Remove a stale TODO. 2020-08-18 15:36:04 +02:00
Damir Jelić
27e1fb9a35 crypto: Pass the user identity to the SAS object when a start event is received. 2020-08-18 15:25:00 +02:00
Damir Jelić
c21517c61e crypto: Store the changed user identities. 2020-08-18 15:23:37 +02:00
Damir Jelić
f626f2b24e crypto: Add some logging for the user identity update logic. 2020-08-18 15:22:30 +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ć
38cf771f1f crypto: Pass the identity further through the SAS layer and try to verify it. 2020-08-18 14:24:27 +02:00
Damir Jelić
6d0b73cb3d crypto: Pass the user identity to the SAS object when doing verifications. 2020-08-18 13:37:02 +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ć
6db7eb0694 crypto: Add a method to directly verify a device. 2020-08-17 17:36:07 +02:00
Damir Jelić
84c0311d80 crypto: Rename the UserDevicesWrap struct. 2020-08-17 17:12:39 +02:00
Damir Jelić
de097d3ca0 crypto: Rename UserDevices to ReadOnlyUserDevices. 2020-08-17 17:01:38 +02:00
Damir Jelić
0f26e7e3bc crypto: Fix the doc for the read-only device. 2020-08-17 16:40:37 +02:00
Damir Jelić
91db502cfe crypto: Rename DeviceWrap to Device. 2020-08-17 16:36:50 +02:00
Damir Jelić
43aea6e482 crypto: Rename Device to ReadOnlyDevice. 2020-08-17 16:17:28 +02:00
Damir Jelić
fd8377bce2 crypto: Add device wrappers so that the verification can be started with a device. 2020-08-17 15:36:45 +02:00
Damir Jelić
16a115d27e Merge branch 'up-ruma' into master 2020-08-17 11:17:02 +02:00
Damir Jelić
8167f5e9de crypto: Simplify the function signature of the share group session method. 2020-08-16 16:25:48 +02:00
Damir Jelić
5876c89858 crypto: The mark_user_as_changed method doesn't need to be public. 2020-08-15 15:51:04 +02:00
Jonas Platte
5040be042f
Update ruma 2020-08-15 15:17:27 +02:00
Damir Jelić
09f009ebd7 matrix-sdk: Bump our deps. 2020-08-14 17:11:54 +02:00
Damir Jelić
664d8c239c crypto: Don't share group sessions with blacklisted devices. 2020-08-14 16:20:49 +02:00
Damir Jelić
97ad060d4b crypto: Test that we can create other users identities. 2020-08-14 16:18:18 +02:00
Damir Jelić
f4de3580b6 crypto: Expose the device/identity verification methods through the identities. 2020-08-14 15:32:44 +02:00
Damir Jelić
0fc5134563 crypto: Add methods to check if a cross signing key signed a device. 2020-08-14 15:06:24 +02:00
Damir Jelić
b0de9d1809 crypto: Allow some test methods to be dead code since macOS can't use them. 2020-08-14 15:04:59 +02:00
Damir Jelić
75fa7e97f9 crypto: Remove some unneeded clones. 2020-08-14 14:29:53 +02:00
Damir Jelić
d21e8213b5 crypto: Don't panic if the key id can't be parsed. 2020-08-14 14:25:51 +02:00
Damir Jelić
181c2a92de crypto: Initial scaffolding for the public cross signing keys. 2020-08-14 14:10:29 +02:00
Damir Jelić
08d76f2ff4 crypto: Pass the device key id to the verify signature method. 2020-08-14 14:08:53 +02:00
Damir Jelić
5b758b8344 crypto: Don't allow dead code in the SAS layer anymore. 2020-08-14 11:09:50 +02:00
Damir Jelić
499f2796ba crypto: Add some logging to the MAC calculation for SAS. 2020-08-14 10:57:17 +02:00
Damir Jelić
df0444faa5 crypto: Test the full SAS flow from the Olm machine. 2020-08-13 16:46:11 +02:00
Damir Jelić
b4c1b26f96 crytpo: Store the SAS object in the machine if we're starting it. 2020-08-13 16:45:12 +02:00
Damir Jelić
0245782cf4 crypto: Better grammar for a panic message. 2020-08-13 15:59:17 +02:00
Damir Jelić
87d0102663 crypto: Test the Olm machine with the default store. 2020-08-13 15:57:31 +02:00
Damir Jelić
6ee8b07cfe crypto: Test that session expiration works correctly. 2020-08-13 15:03:28 +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ć
a0abffd026 crypto: Fix the link to the share group session method. 2020-08-13 11:04:37 +02:00
Damir Jelić
36ca784690 crypto: Expose a method to get all devices of an user. 2020-08-12 17:16:27 +02:00
Damir Jelić
18e597aa79 crypto: More doc fixes. 2020-08-12 15:14:16 +02:00
Damir Jelić
407f9a3da8 matrix-sdk: Make sure to not send out multiple group share requests at once. 2020-08-12 15:12:51 +02:00
Damir Jelić
82c3a795ff crypto: More doc improvements. 2020-08-12 13:28:16 +02:00
Damir Jelić
ccda5c7260 crypto: Small doc improvements to the OlmMachine. 2020-08-12 13:11:51 +02:00
Damir Jelić
d706140a8f crypto: Fix a SAS docstring. 2020-08-12 12:49:29 +02:00
Damir Jelić
8351858be7 crypto: Expose a method to get a users device. 2020-08-12 12:48:22 +02:00
Damir Jelić
7cb25361b2 matrix-sdk: Expose an API to start SAS verifications. 2020-08-12 11:39:47 +02:00
Damir Jelić
c4ed5b6cda matrix-sdk: Upgrade our deps. 2020-08-11 16:54:58 +02:00
Damir Jelić
0d2f8c6d0f crypto: Fix some clippy warnings. 2020-08-11 16:01:48 +02:00
Damir Jelić
fa1a40543c crypto: Add a missing license header to the sas helpers file. 2020-08-11 15:55:13 +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ć
db553b2040 crypto: Fix some clippy warnings. 2020-08-11 13:38:20 +02:00
Damir Jelić
eeb6a811c0 crypto: Make the in-memory stores threadsafe and cloneable. 2020-08-11 13:18:58 +02:00
Damir Jelić
528483ef0e crypto: Remove the last mutable self borrows in the Olm machine methods. 2020-08-11 12:22:14 +02:00
Damir Jelić
72168ce084 crypto: Fix the unknown method tests fot the SAS state transitions. 2020-08-11 11:51:34 +02:00
Damir Jelić
6c85d3e28f crypto: Use TryFrom to check the accepted SAS protocols. 2020-08-11 11:24:29 +02:00
Damir Jelić
d5a853f3da crypto: More SAS tests for all the unknown SAS methods. 2020-08-11 11:05:22 +02:00
Damir Jelić
c15ffb989a crypto: Remove an unused import. 2020-08-11 09:48:01 +02:00
Damir Jelić
2b78f05aad crypto: More SAS tests. 2020-08-11 09:28:28 +02:00
Damir Jelić
1f0a96e31d crypto: Disable the SAS timeout test on macOS. 2020-08-10 17:26:15 +02:00
Damir Jelić
6593cce778 crypto: Simplify the Instant substraction. 2020-08-10 16:53:15 +02:00
Damir Jelić
d7bcf42a2b crypto: False alarm with the deadlock we just didn't use the right method. 2020-08-10 16:18:20 +02:00
Damir Jelić
18b655f829 crypto: Test the cancellation of timed out verifications. 2020-08-10 15:55:08 +02:00
Damir Jelić
e2e70d6583 crypto: Cancel timed out verifications. 2020-08-10 15:24:22 +02:00
Damir Jelić
7bcdc2a3b6 Merge branch 'master' into sas-timeout 2020-08-10 14:57:32 +02:00
Damir Jelić
7eeff64059 crypto: Cancel timed out events on the state transitions. 2020-08-10 14:29:38 +02:00
Damir Jelić
6c4e2fa508 crypto: Remove mutable borrows in the tests. 2020-08-10 14:15:47 +02:00
Damir Jelić
d5cd608045 base: Remove some unnecessary mutable borrows of the olm machine. 2020-08-10 14:11:55 +02:00
Jonas Platte
d83fc971ce
Update ruma 2020-08-10 13:58:39 +02:00
Damir Jelić
87bcba3561 crypto: Add timestamps to the SAS struct so we can check if it timed out. 2020-08-10 13:30:12 +02:00
Damir Jelić
81e9a7cefc crypto: Pass a String when setting the other SAS pubkey. 2020-08-10 10:18:57 +02:00
Jonas Platte
d016ce1848
Use identifier macros in tests 2020-08-06 13:03:32 +02:00
Devin Ragotzy
a3b4cab22e matrix_sdk_crypto: Fix clippy warnings add wasm emscripten to .gitignore 2020-08-04 20:02:09 -04:00
Damir Jelić
807432b31f crypto: Calculate the correct extra info when generating emojis. 2020-08-04 13:54:00 +02:00
Damir Jelić
69d2a00759 crypto: Add a TODO about SAS timing out. 2020-08-04 12:56:55 +02:00
Damir Jelić
be01ee2de0 crypto: Cancel the verification if we find a MAC mismatch. 2020-08-04 12:31:56 +02:00
Damir Jelić
408fe5da4b crypto: Check that the other device had a valid MAC. 2020-08-04 12:14:19 +02:00
Damir Jelić
2bf8c99dfe Merge branch 'master' into sas-verification 2020-08-04 11:23:24 +02:00
Damir Jelić
26ec0c6368 crypto: Proptest the emoji/decimal calculation. 2020-08-03 17:22:44 +02:00
Damir Jelić
9f0fbcccf6 crypto: Remove verification objects that are done or canceled. 2020-08-03 16:18:35 +02:00
Damir Jelić
e431ba0bf5 crypto: Fix some clippy warnings. 2020-08-03 15:05:19 +02:00
Damir Jelić
f4517c150c crypto: Add more log lines to the SAS code. 2020-08-03 14:51:04 +02:00
Damir Jelić
e37229554b crypto: Make sure that we don't hold on to a mutex guard over an await. 2020-08-03 14:49:33 +02:00
Damir Jelić
df9da7539a crypto: Expose some more SAS info publicly. 2020-08-03 14:33:15 +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ć
1a40491c0b matrix-sdk: Fix some clippy warnings. 2020-07-31 15:18:03 +02:00
Damir Jelić
7ecd4a035f crypto: Split out the Sas logic into different files. 2020-07-31 14:54:08 +02:00
Damir Jelić
7ceda2f39c crypto: Update to the latest Ruma changes. 2020-07-31 12:05:07 +02: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ć
d9fbc18777 crypto: Update to the latest Ruma changes. 2020-07-30 15:48:13 +02:00
Damir Jelić
a58ace70a7 crypto: Fix the SAS MAC calculation KEYIDS -> KEY_IDS. 2020-07-30 15:45:19 +02:00
Damir Jelić
5a58fdff98 cyrpto: Fix a clippy warning. 2020-07-29 14:50:39 +02:00
Damir Jelić
21b0afe72c matrix-sdk: Add a Sas wrapper. 2020-07-29 14:19:47 +02:00
Damir Jelić
a726ebab39 crypto: Allow Sas objects to be canceled. 2020-07-29 13:53:33 +02:00
Damir Jelić
4634efc092 crypto: More SAS content to to-device request logic. 2020-07-29 13:23:03 +02:00
Damir Jelić
117ebeaf4b crypto: Return requests when you want to accept a verification. 2020-07-29 12:47:36 +02:00
Damir Jelić
7f2df68d62 crypto: Expose some SAS methods publicly. 2020-07-28 16:24:45 +02:00
Damir Jelić
a6fa9f99fd crypto: Hook up the verification machine. 2020-07-28 15:37:20 +02:00
Damir Jelić
7e95d85f17 crypto: Move the cryptostore behind a lock. 2020-07-28 15:03:44 +02:00
Damir Jelić
57b65ec8c4 crypto: Add a verification machine. 2020-07-28 14:45:53 +02:00
Damir Jelić
2d6fff7927 crypto: A bit of cleanup and docs. 2020-07-28 11:29:13 +02:00
Damir Jelić
792623f53d crypto: Fix a clippy warning. 2020-07-27 15:57:30 +02:00
Damir Jelić
6e67585bf6 crypto: Handle all the cancel states. 2020-07-27 15:56:28 +02:00
Damir Jelić
5471c07244 crypto: More canceling. 2020-07-27 15:34:18 +02:00
Damir Jelić
0b04f7960b crypto: Add more checks and cancels in the SAS state machine. 2020-07-27 15:28:14 +02:00
Damir Jelić
623f91733e crypto: More verification canceling. 2020-07-27 13:18:00 +02:00
Damir Jelić
da3734ffc7 crypto: Add initial SAS canceling. 2020-07-27 13:16:56 +02:00
Damir Jelić
7128505768 Merge branch 'master' into sas-verification 2020-07-26 21:20:53 +02:00
Jonas Platte
6a96368048
Upgrade ruma 2020-07-26 16:58:27 +02:00
Damir Jelić
8c9c843bfc crypto: Fix a comment in the sas file. 2020-07-25 10:59:20 +02:00
Damir Jelić
094b2f90d6 Merge branch 'master' into sas-verification 2020-07-25 10:31:20 +02:00
Damir Jelić
2cbdca1f58 crypto: Make it easier to create canceled SasState. 2020-07-25 10:24:44 +02:00
Jonas Platte
7aea6160c3
Flatten nested match for less indentation 2020-07-25 02:31:52 +02:00
Jonas Platte
ca88539ec4
Upgrade ruma 2020-07-25 02:23:10 +02:00
Damir Jelić
670755bfce crypto: Start checking and cancelling our SAS flows. 2020-07-24 17:51:20 +02:00
Damir Jelić
46c1657643 crypto: Fix some clippy warnings. 2020-07-24 16:04:47 +02:00
Damir Jelić
9ac1417292 crypto: Add a higher level simple and threadsafe SAS object. 2020-07-24 15:49:00 +02:00
Damir Jelić
de94b903d6 crypto: Rename the Sas struct. 2020-07-24 11:32:38 +02:00
Damir Jelić
2f28976694 crypto: Make the Sas struct thread safe. 2020-07-24 11:26:45 +02:00
Damir Jelić
8ff8ea1342 crypto: Add docs for the SAS structs and methods. 2020-07-23 17:25:57 +02:00
Damir Jelić
a1edef0ed5 crypto: Fix some clippy warnings. 2020-07-23 14:47:47 +02:00
Damir Jelić
ee51ed78be crypto: Allow users to check the SAS even after a mac event was received. 2020-07-23 14:35:29 +02:00
Damir Jelić
2729f01e0f crypto: Move the emoji/decimal sas calculation out of the Sas object. 2020-07-23 14:26:50 +02:00
Damir Jelić
e6730a7007 crypto: More SAS refactoring. 2020-07-23 14:14:29 +02:00
Damir Jelić
6fd852d573 crypto: Refactor out some common SAS methods. 2020-07-23 14:02:07 +02:00
Damir Jelić
7f2b268a59 Merge branch 'master' into sas-verification 2020-07-23 13:43:01 +02:00
Damir Jelić
bb9adea5de crypto: Implement the whole SAS flow. 2020-07-23 13:41:57 +02:00
Damir Jelić
b1ae5534a1 crypto: Hold a copy of the account to get the ed25519 key when doing SAS. 2020-07-23 11:19:19 +02:00
Damir Jelić
9214f01185 cyrpto: Fill out the method to get the MacEventContent. 2020-07-23 11:08:09 +02:00
Damir Jelić
c35f73473e crypto: Add a copyright header to the sas file. 2020-07-23 09:21:11 +02:00
Jonas Platte
bf54b17a2f
Upgrade ruma 2020-07-22 22:31:42 +02:00
Damir Jelić
4ce26f4fa0 crypto: Add support to get the SAS emoji out of a verification. 2020-07-22 16:41:16 +02:00
Damir Jelić
cdcbcdfab3 crypto: Add support to display the decimal SAS value. 2020-07-22 15:11:34 +02:00
Damir Jelić
7a2d5c30db crypto: More Sas states and add an initial test. 2020-07-22 13:43:11 +02:00
Damir Jelić
a7bc1a95d3 device: Add a method to create a Device from an Account. 2020-07-22 13:41:49 +02: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ć
e612326714 Merge branch 'master' into sas-verification 2020-07-22 11:30:58 +02:00
Damir Jelić
9ef784d665 crypto: Simplify the OlmMachine -> Device conversion. 2020-07-22 09:27:43 +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ć
578c927e58 crypto: Simplify the share_group_session method. 2020-07-21 14:13:10 +02:00
Damir Jelić
24baf1fe0f crypto: More doc fixes. 2020-07-21 13:04:51 +02:00
Damir Jelić
861c07d5ce cyrpto: Fix the docs for the Session encrypt method. 2020-07-21 12:59:15 +02:00
Damir Jelić
451d902604 crypto: Allow that many arguments on the from_pickle session method. 2020-07-21 12:57:31 +02:00
Damir Jelić
c3f00c96f8 crypto: Don't require the account to be passed when encrypting. 2020-07-21 12:46:06 +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ć
3d6872607e crypto: Move the m.room_key content creation into the outbound group session. 2020-07-21 11:12:20 +02:00
Damir Jelić
fe33430e9b crypto: Use DeviceId instead of str everywhere. 2020-07-21 10:48:15 +02:00
Damir Jelić
b22324b305 crypto: Split out the olm module into separate files. 2020-07-21 10:38:14 +02:00
Devin R
037d62b165 matrix-sdk-crypto: Remove map clone from user_devices 2020-07-20 08:10:42 -04:00
Devin R
8c39db002b Remove inaccurate comment about DeviceId 2020-07-18 08:52:51 -04:00
Devin R
e27b6fb51e matrix-sdk-crypto: Fix map_clone clippy warning 2020-07-18 08:52:51 -04:00
Devin R
807435c043 Updates DeviceId to be Box<DeviceId> 2020-07-18 08:51:19 -04:00
Devin R
71f2a042c2 Rename Stub -> Sync for all ruma events 2020-07-18 08:37:43 -04:00
Damir Jelić
d273786d83 matrix-sdk: Bump our dependencies. 2020-07-17 10:01:22 +02: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ć
83806b42e9 crypto: Remove a stale comment about clearing private keys from events. 2020-07-15 13:07:48 +02:00
Damir Jelić
1691a26163 crypto: Add initial Sas scaffolding. 2020-07-14 17:04:08 +02:00
Damir Jelić
51012e632e crypto: Rename the StoreError to StoreResult. 2020-07-14 13:11:44 +02:00
Damir Jelić
5d76fd9aac crypto: Refactor the key query handling logic a bit. 2020-07-14 13:08:57 +02:00
Damir Jelić
c25f4c0642 crypto: Verify one-time keys using the device. 2020-07-14 12:49:40 +02:00
Damir Jelić
68125f5de6 crypto: Refactor out the json verification method. 2020-07-14 12:23:42 +02:00
Damir Jelić
b602d3007d crypto: Remove some useless mem::replace calls. 2020-07-14 12:03:27 +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ć
8206394918 crypto: Use AlgorithmAndDeviceId to get the device signature. 2020-07-14 11:27:50 +02:00
Damir Jelić
ca85564a9f crypto: Move the device keys verificatin logic into the device. 2020-07-14 11:17:09 +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ć
ac264918b8 crypto: Move the megolm decryption logic into the session. 2020-07-13 14:00:42 +02:00
Damir Jelić
8e19c583c6 crypto: Move the megolm encryption logic into the outbound group session. 2020-07-13 13:19:25 +02:00
Damir Jelić
c2f1e4de64 crypto: Disable a clippy warning. 2020-07-11 23:15:10 +02:00
Jonas Platte
eea00301ff
Remove immediately-deref'ed double references 2020-07-11 21:20:02 +02:00
Jonas Platte
9b5f95672b
Use js_int macros to improve readability 2020-07-11 21:06:21 +02:00
Jonas Platte
1fcb68c59f
Remove unused dependencies 2020-07-11 20:55:05 +02:00
Damir Jelić
18ccd30c8c crypto: Add a bunch of TODO lines documenting how to refactor stuff further. 2020-07-11 12:05:52 +02:00
Damir Jelić
df2bcf6f1f crypto: Style fix for a doc comment. 2020-07-11 09:45:52 +02:00
Damir Jelić
27eeeb8db6 crypto: Move the one-time key signing into the accoung. 2020-07-10 17:53:04 +02:00
Damir Jelić
6ded76a5a7 crypto: Move the device_keys() method into the account. 2020-07-10 17:10:34 +02:00
Damir Jelić
58d79ca9c6 crypto: Put the user id and device id into the account. 2020-07-10 15:43:32 +02:00
Devin R
dcc3d6e755 sdk_base: Remove room_id as argument from all Room methods
Remove room_id paramater from some client methods. Make CreationContent
two methods of RoomBuilder. Add docs for MessageWrapper.
2020-07-10 08:59:02 -04:00
Devin R
eb5949dbc2 Move matrix-sdk to ruma monorepo 2020-07-10 08:59:00 -04:00
Damir Jelić
283cf0d782 matrix-sdk: Bump all our deps. 2020-07-07 15:52:08 +02:00
Damir Jelić
262a61afc9 crypto: Simplify the group session pair creation. 2020-06-25 13:31:30 +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
Devin R
9e738f45ef crypto/base: Finish moving to using static json values for test data 2020-06-22 16:18:12 -04: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ć
ea427cf366 Merge branch 'upload-keys' 2020-06-17 09:33:09 +02:00
Devin R
15191d0230 crypto: Fix overflow in should_upload_keys, bail out if uploaded keys > max uploaded 2020-06-16 18:07:13 -04:00
Damir Jelić
311e41ee0d matrix-sdk: Fix the author field in the cargo files. 2020-06-15 09:47:13 +02:00
Damir Jelić
6e5870bd2b crypto: Simplify the max keys calculation for one-time key uploads. 2020-06-04 17:36:33 +02:00
Damir Jelić
5175cd8ddb crypto: Remove some unnecessary mem::replace calls. 2020-06-02 10:36:51 +02:00
Damir Jelić
5637cdd133 matrix-sdk: Add a bunch of readmes to the crates. 2020-05-26 19:33:13 +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ć
ea5f7f1d19 matrix-sdk: Don't require the the session at client creation time.
The client objects in the sdk accepted an optional session argument at
creation time. If provided this would restore the client into a logged
in state.

Since we need to restore the client state and encryption state at some
point it makes sense to do it when the client transitions into a logged
in state. At the same time we would like to avoid the client creation to
be async.

This introduces a restore_login() method which can be called instead of
the login() method to restore a session.
2020-05-22 15:23:58 +02:00
Damir Jelić
6ecf46abf7 crypto: Mark tracked users as changed if a sync tells us so. 2020-05-21 14:30:42 +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ć
e51e89d9d5 matrix-sdk: Re-enable joins by id or alias. 2020-05-15 12:32:36 +02:00
Damir Jelić
458923d313 crypto: Add a method to mark a tracked user as dirt/changed. 2020-05-14 17:26:51 +02:00
Damir Jelić
b2e48d8eae sqlite: Store the tracked users in the database. 2020-05-14 17:25:46 +02:00
Damir Jelić
ecbd801c70 crypto: Invalidate group sessions if they fail to be shared. 2020-05-14 11:55:12 +02:00
stoically
aa42951f15 matrix-sdk: Switch to upstream crates 2020-05-12 17:32:01 +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ć
4e0bef064f matrix-sdk: More cleanup in the deps. 2020-05-08 13:54:46 +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ć
6e9e817597 crypto: Use next() instead of nth(0). 2020-05-06 15:00:16 +02:00
Damir Jelić
39e59792d2 crypto: Remove the session key in room key events again. 2020-05-06 12:15:15 +02:00
Damir Jelić
7b6e030823 matrix-sdk: Fix the last Ruma incompatibilities. 2020-05-05 15:29:25 +02:00
Damir Jelić
940332d414 crypto: Disable the failing tests now that the crypto is non-functional. 2020-05-04 14:21:48 +02:00
Damir Jelić
fed3c80466 crypto: Fix the tests now that events don't implement PartialEq. 2020-05-04 14:15:55 +02:00
Damir Jelić
86dc1ce3ca crypto: Disable the creation of encrypted event content for now.
It isn't possible to encrypted events using ruma anymore. This will need
to be re-enabled once ruma gets back support for this.
2020-05-04 14:12:42 +02:00
Damir Jelić
704d8bc0ed crypto: The algorithm specific contents don't take an algorithm anymore. 2020-05-04 14:11:06 +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ć
e109e01a28 crypto: More lint fixes. 2020-04-30 14:29:58 +02:00
Damir Jelić
3bcce962e3 matirx_sdk: Fix a bunch of clippy warnings. 2020-04-30 14:07:49 +02:00
Damir Jelić
fc0d4a7d35 crypto: Rework our errors making them more specific. 2020-04-30 13:16:10 +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