Damir Jelić
999f0899f8
crypto: Move the outgoing requests to the VerificationCache
2021-06-04 15:16:38 +02:00
Damir Jelić
681f32b0a7
crypto: Fix a couple of typos
2021-06-04 15:16:38 +02:00
Damir Jelić
0e514b755f
crypto: Move the CancelContent generation out of the sas module
2021-06-04 15:16:38 +02:00
Damir Jelić
300189bb37
crypto: Use the verification cache in verification requests
2021-05-24 16:41:27 +02:00
Damir Jelić
d928f39f68
crypto: Add a VerificationCache struct
2021-05-24 16:41:27 +02:00
Damir Jelić
98c259dc1e
crypto: Refactor the VerificationReqest struct a bit
2021-05-24 16:41:27 +02:00
Damir Jelić
110b8eb8dd
Merge branch 'master' into sas-longer-flow
2021-05-18 09:07:50 +02:00
Jonas Platte
cd77441d1b
Upgrade ruma to 0.1.0 (crates.io release)
2021-05-17 02:57:36 +02:00
Jonas Platte
15540e84e3
Upgrade ruma
2021-05-15 17:22:32 +02:00
Damir Jelić
3f57a2a9f2
Merge branch 'master' into sas-longer-flow
2021-05-13 11:26:40 +02:00
Damir Jelić
09a7858702
crypto: Initial support for the longer to-device verification flow
2021-05-13 11:15:56 +02:00
Devin Ragotzy
2ef0c2959c
Add use_small_heuristics option and run fmt
2021-05-12 15:37:29 -04:00
Devin Ragotzy
c85f4d4f0c
Add rustfmt config file and run over workspace
2021-05-12 15:36:52 -04:00
Damir Jelić
4f7902d6f0
crypto: Add a method to check it the SAS flow supports emoji
2021-05-12 20:09:02 +02:00
Damir Jelić
1bda3659ce
sas: Allow to just get the emoji index instead of the emoji and descryption
2021-05-07 17:04:27 +02:00
Damir Jelić
80d01b23c4
sas: Return an array of seven emojis instead of a vector
2021-05-07 17:01:53 +02:00
Damir Jelić
43b7072609
matrix-sdk: Fix some newly introduced clippy warnings
2021-05-06 20:42:27 +02:00
Jan Veen
42c8c42150
crypto: Improve doc of SAS accept settings
...
Document arguments explicitly.
Adapt to changed implementation.
Provide example call.
2021-03-12 15:45:58 +01:00
Jan Veen
587c09e700
crypto: Prohibit extending verification methods
...
Intersect the allowed methods passed from the user with the methods
supported by the other party. If the user added new methods to the
request, the remote party would cancel the verification.
2021-03-12 14:43:59 +01:00
Jan Veen
e9be23f853
crypto: Add settings to customize SAS accepting
...
Offer specifying settings to SAS accept() requests to limit the allowed
verification methods.
2021-03-11 21:10:26 +01:00
Damir Jelić
9893ddba74
crypto: Use Default to create some test data
2021-03-01 19:41:39 +01:00
Damir Jelić
1f5cad136e
matrix-sdk: Bump Ruma
2021-03-01 19:20:07 +01:00
Damir Jelić
2811c490a0
matrix-sdk: Fix some new clippy warnings
2021-02-12 12:59:53 +01:00
Damir Jelić
43ea9a16a0
crypto: Use the chain method to get the sha hash of the content
2021-01-14 13:34:12 +01:00
Damir Jelić
3f3ae794a4
crypto: Don't log an error for the commitment calculation since it isn't one
2021-01-14 13:32:39 +01:00
Damir Jelić
bafe9a0f61
crypto: Fix a couple of clippy warnings.
2021-01-02 13:47:53 +01:00
Damir Jelić
0d99d8cc23
crypto: Test verification request starting up to SAS.
2020-12-24 15:22:51 +01:00
Damir Jelić
b119b30939
crypto: Clippy warnings.
2020-12-18 19:26:51 +01:00
Damir Jelić
55436c6514
crypto: Add a test for verification request flows.
2020-12-18 18:23:42 +01:00
Damir Jelić
ec863a928d
crypto: More clippy warnings.
2020-12-18 13:57:57 +01:00
Damir Jelić
1fd8c2052e
crypto: Fix a bunch of clippy warnings.
2020-12-18 13:50:02 +01:00
Damir Jelić
897c6abe92
crypto: Fix our tests now that we support in-room verifications.
2020-12-18 12:55:06 +01:00
Damir Jelić
f735107caf
crypto: Remove an unused argument.
2020-12-17 17:03:42 +01:00
Damir Jelić
48f43a4af1
crypto: Remove some unused imports.
2020-12-17 16:28:12 +01:00
Damir Jelić
4ad4ad1e94
crypto: Send out done events for in-room verifications.
2020-12-17 15:50:13 +01:00
Damir Jelić
79102b3390
crypto: Make the cancelations output only CancelContents.
2020-12-17 12:15:11 +01:00
Damir Jelić
b6e28e2280
crypto: WIP more work on in-room verifications now up to accepting them.
2020-12-15 16:35:54 +01:00
Damir Jelić
5105629c08
crypto: WIP handle in-room start events.
2020-12-11 16:13:58 +01:00
Damir Jelić
7570cf5ac2
crypto: WIP genrealize the sas so it can handle in-room and to-device events.
2020-12-11 15:42:49 +01:00
Damir Jelić
b0ac9d3320
crypto: WIP change the types of the sas sturcts to allow in-room verifications.
2020-12-10 17:49:28 +01:00
Damir Jelić
1bb5b42b1d
crypto: Prepare the sas structs to handle in-room verifications.
2020-12-10 15:18:28 +01:00
Damir Jelić
b9ddbb11af
crypto: Move the inner sas struct into a separate module.
2020-12-10 14:07:47 +01:00
Damir Jelić
7198b0daba
crypto: WIP key verification request handling.
2020-12-09 17:18:23 +01:00
Damir Jelić
d9e5a17ab0
crypto: Use a native Rust sha2 implementation to calculate the commitment
2020-12-08 16:21:29 +01:00
Damir Jelić
fd705b7d5e
crypto: Canonicalize the start event content before calculating the commitment
...
This fixes : #117 .
2020-12-08 16:02:51 +01:00
Damir Jelić
8e53982bcd
Merge branch 'master' into crypto-improvements
2020-12-08 15:06:14 +01:00
Damir Jelić
40d13d9b59
cyrpto: Another timing based test that only works on Linux.
2020-12-08 13:37:55 +01:00
Damir Jelić
9eb17e757c
matrix-sdk: Update ruma.
2020-12-05 14:59:40 +01:00
Damir Jelić
efe659910f
crypto: Remove some stale TODOs.
2020-12-01 11:20:55 +01:00
Damir Jelić
7ec5a5ad1a
Merge branch 'master' into crypto-improvements
2020-11-26 13:24:57 +01:00
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