Commit graph

214 commits

Author SHA1 Message Date
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