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ć
798656dac5
crypto: Allow the key request machine to access the outbound group sessions.
2020-09-29 10:09:47 +02:00
Damir Jelić
721c459577
crypto: Collapse an if tree.
2020-09-28 15:07:57 +02:00
Damir Jelić
23173c4a1e
crypto: Test our key sharing decision logic.
2020-09-28 14:51:57 +02:00
Damir Jelić
4a8c5ebab0
crypto: Return an enum that describes why we won't serve a key share request.
2020-09-28 14:12:08 +02:00
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