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