Jonas Platte
0422bae924
Fix clippy lint rc_buffer
2020-11-25 19:01:28 +01:00
Damir Jelić
c40edcf2fc
matrix-sdk: Try to lower our compile times, at least in the crypto part for now.
2020-11-20 20:35:48 +01:00
Damir Jelić
b27f1b0e34
crypto: Fix some clippy warnings.
2020-10-30 14:38:29 +01:00
Damir Jelić
5c530cf9ee
crypto: Upload signatures after verification is done.
2020-10-27 16:39:23 +01:00
Damir Jelić
30a78bb1d6
crypto: Add the private identity to the Sas object.
2020-10-27 14:21:22 +01:00
Damir Jelić
6e83a4bbca
crypto: Split out the signing module into two files.
2020-10-26 16:03:59 +01:00
Damir Jelić
5fd004bae5
crypto: Connect the private identity to the verification machine.
2020-10-23 11:17:13 +02:00
Damir Jelić
7cab7cadc9
crypto: Rework the cryptostore.
...
This modifies the cryptostore and storage logic in two ways:
* The cryptostore trait has only one main save method.
* The receive_sync method tries to save all the objects in one
`save_changes()` call.
This means that all the changes a sync makes get commited to the store
in one transaction, leaving us in a consistent state.
This also means that we can pass the Changes struct the receive sync
method collects to our caller if the caller wishes to store the room
state and crypto state changes in a single transaction.
2020-10-20 17:19:37 +02:00
Damir Jelić
c8ca93c924
crytpo: Let the verification machine hold on to a raw CryptoStore.
...
This will later be useful when our higher level store wrapper holds on
to a verification machine to return higher level Device objects.
2020-10-01 11:17:27 +02:00
Damir Jelić
84066d4a76
crypto: Split out the Account into a read only portion and one with effects.
2020-09-29 12:03:41 +02:00
Damir Jelić
a357536ade
crypto: Initial scaffolding for incoming key share handling.
2020-09-28 09:27:16 +02:00
Damir Jelić
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ć
22daf0d81e
Merge branch 'to-device-txn-uuid' into crypto-improvements
2020-09-04 12:54:40 +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ć
95c8708995
crypto: Document and rename the mark_requests_as_sent() method.
2020-08-24 14:49:57 +02: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ć
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ć
7f23cbbeb5
crypto: Add a TODO about cross signing signatures.
2020-08-19 14:49:40 +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ć
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ć
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ć
6db7eb0694
crypto: Add a method to directly verify a device.
2020-08-17 17:36:07 +02:00
Damir Jelić
43aea6e482
crypto: Rename Device to ReadOnlyDevice.
2020-08-17 16:17:28 +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ć
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ć
d706140a8f
crypto: Fix a SAS docstring.
2020-08-12 12:49:29 +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ć
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ć
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
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
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
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ć
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ć
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ć
8c9c843bfc
crypto: Fix a comment in the sas file.
2020-07-25 10:59:20 +02:00
Damir Jelić
2cbdca1f58
crypto: Make it easier to create canceled SasState.
2020-07-25 10:24:44 +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ć
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
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ć
e612326714
Merge branch 'master' into sas-verification
2020-07-22 11:30:58 +02:00
Damir Jelić
1691a26163
crypto: Add initial Sas scaffolding.
2020-07-14 17:04:08 +02:00