Commit graph

781 commits

Author SHA1 Message Date
Damir Jelić
778867e3ef crypto: Test that edits get properly decrypted 2021-07-26 15:28:17 +02:00
Damir Jelić
4432be48e0 crypto: Fix a broken doc link 2021-07-26 11:47:53 +02:00
Damir Jelić
46f9c292ab crypto: Streamline how we update one-time key counts
There is no reason to use different logic when updating one-time key
counts coming from an upload response vs when coming from a sync
response.

Switch to an AtomicU64 for the count as well, the i64 is probably a
remnant of the SQLite based crypto store.
2021-07-22 16:06:10 +02:00
Damir Jelić
26310def0a crypto: Silence a couple of clippy warnings 2021-07-19 10:49:22 +02:00
Damir Jelić
5566886f20 crypto: Add public methods to request verifications with devices 2021-07-19 10:26:39 +02:00
Damir Jelić
0053d2a874 crypto: Don't send cancellations for passive verification requests 2021-07-19 09:48:22 +02:00
Damir Jelić
55a9e6836d crypto: Introduce a CancelInfo struct
This replaces the separate methods to fetch info about the cancellation.
It was a bit annoying to gather all the different info where each method
can return None.
2021-07-19 09:45:47 +02:00
Damir Jelić
cf30c42563 crypto: Correctly remember our chosen SAS methods 2021-07-19 09:43:35 +02:00
Damir Jelić
ff8089912e crypto: Only send cancellations to other devices if we're the requester 2021-07-19 09:36:21 +02:00
Damir Jelić
909cd42ac1 crypto: Cancel the verification request for to-device Sas verifications 2021-07-19 09:32:48 +02:00
Damir Jelić
ead91a1e6b crypto: Send cancellations if the other device picks up over to-device 2021-07-12 18:12:02 +02:00
Damir Jelić
b53518d1b8 crypto: Improve a log line 2021-07-09 17:13:15 +02:00
Damir Jelić
71c89c2670 crypto: Time out verification requests as well 2021-07-09 17:01:35 +02:00
Damir Jelić
cca73b2622 crypto: Update the SAS event timeout when we receive events 2021-07-09 16:13:30 +02:00
Damir Jelić
7644ceea8a crypto: Make sure we don't deadlock when we cancel the verification request 2021-07-09 14:31:54 +02:00
Damir Jelić
b0e8f12426 crypto: Cancel the verification request if the child flow gets cancelled 2021-07-09 13:53:47 +02:00
Damir Jelić
4e5cc03673 crypto: Only go into a done verification request if we're in the correct state 2021-07-09 11:50:12 +02:00
Damir Jelić
76d57baa11 crypto: Add the verification to the cache after we scan a QR code 2021-07-09 11:49:46 +02:00
Damir Jelić
5c9840daf8 crypto: Return a request when we start QR code verification instead of the content 2021-07-09 11:39:25 +02:00
Damir Jelić
ae37e6ec9d crypto: Add a state getter where we scanned the QR code 2021-07-09 11:38:10 +02:00
Damir Jelić
c5df7c5356 crypto: Add methods to request verification from users 2021-07-08 12:30:30 +02:00
Damir Jelić
db0843a47a crypto: Don't panic if we don't have the keys to generate a QR code 2021-07-01 10:27:45 +02:00
Damir Jelić
9052843acb crypto: Add another SAS state so we know when both parties accepted 2021-06-29 12:56:28 +02:00
Damir Jelić
113587247e crypto: Notify our users that a verification timed out on our end 2021-06-29 12:56:28 +02:00
Damir Jelić
ee6b804804 crypto: Allow QR code verifications to get into the cancelled state as well. 2021-06-29 12:56:28 +02:00
Damir Jelić
63659c9604 crypto: Fix verification requests getting cancelled 2021-06-29 12:56:28 +02:00
Damir Jelić
100a936f1b crypto: Add a method to check if the scanning has been confirmed 2021-06-29 12:56:28 +02:00
Damir Jelić
80a30bcdd6 crypto: Add all the common accessors to the qr code verification 2021-06-29 12:56:28 +02:00
Damir Jelić
728d298810 crypto: Add a getter for the room id for the SAS verifications 2021-06-29 12:56:28 +02:00
Damir Jelić
af084528c8 crypto: Remember who cancelled the verification
This seems to be of limited use considering that people can just see the
sender of the cancellation event or they perform the cancellation
themselves using the cancel() method but EA seems to want this.
2021-06-29 12:56:28 +02:00
Damir Jelić
d4e80883dc crypto: Propagate the we_started info to the SAS verification 2021-06-29 12:56:28 +02:00
Damir Jelić
55690ddd54 crypto: Allow canceling a SAS verification with a specific cancel code 2021-06-29 12:56:28 +02:00
Damir Jelić
9a685d685c crypto: Add a couple more getters for the SAS verification 2021-06-29 12:56:28 +02:00
Damir Jelić
c78406ceb9 crypto: Clean up the method to check if a device is verified. 2021-06-29 12:56:28 +02:00
Jonas Platte
df71de5af2
crypto: Store key::verification::start::SasV1Content
… instead of SasV1ContentInit
2021-06-25 12:04:20 +02:00
Jonas Platte
4d5768111d
Simplify ruma identifier imports 2021-06-23 16:12:23 +02:00
Jonas Platte
aabda60e9f
Fix unused import warnings for wasm 2021-06-23 16:12:22 +02:00
Damir Jelić
b95ebe444e matrix-sdk: Bump our versions 2021-06-22 14:57:46 +02:00
Damir Jelić
57b2f6ad22 matrix-sdk: Switch to a release of ruma 2021-06-21 19:53:26 +02:00
Damir Jelić
513fbd8900 crypto: Manually implement Debug for attachment encryptors/decryptors 2021-06-21 17:29:46 +02:00
Damir Jelić
17097f4d42 matrix-sdk: Upgrade our deps 2021-06-21 16:45:52 +02:00
Jonas Platte
43e213fd67 matrix-sdk: Update ruma
Co-authored-by: Damir Jelić <poljar@termina.org.uk>
2021-06-21 15:45:33 +02:00
Damir Jelić
baee5b2d11 crytpo: Couple more accessors for the verification request 2021-06-17 11:04:18 +02:00
Damir Jelić
34703bc0d6 crypto: Add a method to get all verification requests of a certain user 2021-06-17 11:04:18 +02:00
Damir Jelić
d212e7df18 crypto: Add some more accessors to the verification requests 2021-06-17 11:04:18 +02:00
Damir Jelić
f8b09d4537 crypto: Remember who started the verification request 2021-06-17 11:04:18 +02:00
Damir Jelić
5d38bc3802 crypto: Scope the verification requests behind the other user id 2021-06-17 11:04:18 +02:00
Damir Jelić
58d3b42a60 crypto: Don't allow QR code generation if we or the other can't handle it 2021-06-17 11:04:18 +02:00
Damir Jelić
b7986a5153 crypto: Add a couple more accessors for the verification request 2021-06-17 11:04:18 +02:00
Damir Jelić
c547f384bc crypto: Fix the method to transition from a request into a SAS verification 2021-06-17 11:04:18 +02:00
Damir Jelić
29bba0b2ca crypto: Allow accepting key request while specifying our supported methods 2021-06-17 11:04:18 +02:00
Damir Jelić
80fac4bfa4 cyrpto: Go into passive mode if someone else replies to a request 2021-06-17 11:04:18 +02:00
Damir Jelić
be53913a16 crypto: Remove the redundant flow id copy 2021-06-17 11:04:18 +02:00
Damir Jelić
df1fe0ebc4 crypto: Don't return a result when receiving a ready event
Ready events might be invalid but we might receive a valid one later on,
e.g. someone is trying to disrupt our verification, so just ignore
invalid ready events.
2021-06-17 11:04:18 +02:00
Damir Jelić
073b91fa62 crypto: Ignore verification requests that are sent by us 2021-06-17 11:04:18 +02:00
Damir Jelić
cc0388929a crypto: Add some more accessors for the fields in the verification types 2021-06-17 11:04:17 +02:00
Damir Jelić
b14d754aed crypto: Turn the content_to_request function into a constructor
Closes: #260
2021-06-17 11:04:17 +02:00
Damir Jelić
00c3921d2a crypto: Add initial support for QR code verification 2021-06-17 11:04:17 +02:00
Damir Jelić
71aba433da crypto: Add some more accessors to the sas structs 2021-06-17 11:04:17 +02:00
Damir Jelić
7f364fd615 crypto: Allow only a identity to be verified when the verification finishes
QR code based verification doesn't verify a device when users are
verifying each other, generalize the logic that marks stuff as verified
so we can verify either only a device or an user identity or both.
2021-06-17 11:04:17 +02:00
Damir Jelić
ada71586ac crypto: Scope the verifications per sender 2021-06-17 11:04:17 +02:00
Damir Jelić
533a5b92b0 crypto: Ignore key verification requests that have an invalid timestamp 2021-06-17 11:04:17 +02:00
Damir Jelić
5fa2b05622 matrix-sdk: Fix some more typos 2021-06-08 11:13:23 +02:00
Jonas Platte
74d0ac7c77
crypto: Depend on ruma directly
… instead of using matrix_sdk_common's re-exports
2021-06-07 18:55:56 +02:00
Jonas Platte
3bac536daf
Fix clippy lints
Automated via `cargo clippy --workspace --all-targets -Zunstable-options --fix`.
2021-06-07 15:51:18 +02:00
Jonas Platte
e18f248dbb
crypto: Add missing required-features to crypto_bench 2021-06-07 15:16:53 +02:00
Damir Jelić
6f11244017 Merge branch 'typos' 2021-06-06 21:01:30 +02:00
Jonas Platte
6b685b671d
Replace Arc<Box<dyn (Crypto|State)Store>> by Arc<dyn (Crypto|State)Store> 2021-06-06 18:16:25 +02:00
Jonas Platte
eed2b37885
Replace Arc<Box<DeviceId>> by Arc<DeviceId> 2021-06-06 18:15:18 +02:00
Jonathan de Jong
f76cb1d123 the the 2021-06-05 14:55:01 +02:00
Jonathan de Jong
f36fb55727 some more typos 2021-06-05 14:50:08 +02:00
Jonathan de Jong
74a6d39b9f various typos 2021-06-05 14:35:20 +02:00
Damir Jelić
0df782e93e crypto: Fix some clippy warnings 2021-06-04 19:26:32 +02:00
Damir Jelić
7cca358399 Merge branch 'master' into verification-improvements 2021-06-04 18:37:42 +02:00
Damir Jelić
96d4566111 crypto: Move the verification cache into a separate module 2021-06-04 18:13:52 +02:00
Damir Jelić
31e00eb434 crypto: Don't panic if we get a unknown cancel code 2021-06-04 18:13:52 +02:00
Damir Jelić
612fa46359 crypto: Replace a bunch of From implementations with macros 2021-06-04 18:13:52 +02:00
Damir Jelić
0a7fb2cbc3 crytpo: Mark verification requests as cancelled and as done 2021-06-04 18:13:52 +02:00
Damir Jelić
f9fb530480 crypto: Forward cancel events to the sas object 2021-06-04 18:13:52 +02:00
Damir Jelić
2ec8893273 crypto: Silence a clippy warning until we add QR code verifications 2021-06-04 15:39:56 +02:00
Damir Jelić
bd5dda370d crypto: Remove the sas event enums module 2021-06-04 15:16:38 +02:00
Damir Jelić
ac04b0c36e crypto: Create a enum for the verification types 2021-06-04 15:16:38 +02:00
Damir Jelić
a04afac963 crypto: Fix a clippy warning 2021-06-04 15:16:38 +02:00
Damir Jelić
cf98681f19 crypto: Remove some duplicate code 2021-06-04 15:16:38 +02:00
Damir Jelić
cbcf673d21 crypto: Make sure we send verification done events 2021-06-04 15:16:38 +02:00
Damir Jelić
9b20b00908 crypto: Log if we get a missmatch of the flow id 2021-06-04 15:16:38 +02:00
Damir Jelić
f50d0cd3a6 crypto: Test starting a to-device verification request 2021-06-04 15:16:38 +02:00
Damir Jelić
1e48b15040 crypto: Add enums so we can handle in-room and to-device verifications the same 2021-06-04 15:16:38 +02:00
Damir Jelić
b52f3fb11f crypto: Remove an allocation when calculating the SAS MAC 2021-06-04 15:16:38 +02:00
Damir Jelić
d877c1cf8c crypto: Move the Done state into the common verification module 2021-06-04 15:16:38 +02:00
Damir Jelić
327445c6a0 crypto: Move the logic for marking identities as verified out of the Sas struct 2021-06-04 15:16:38 +02:00
Damir Jelić
8a5a0e511e crypto: Don't await while holding a sync lock 2021-06-04 15:16:38 +02:00
Damir Jelić
12619ab8b3 crypto: Log a warning if we get a start event without being ready 2021-06-04 15:16:38 +02:00
Damir Jelić
069ef3a661 crypto: Move the SAS starting logic into the verification request struct 2021-06-04 15:16:38 +02:00
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
Kévin Commaille
0c8e870bff
crypto: Implement From<EncryptedFile> for EncryptionInfo 2021-05-25 21:33: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