Commit graph

777 commits

Author SHA1 Message Date
Alexander Sieg
82a99b5267 address code review issues 2021-09-10 16:26:21 +02:00
Alexander Sieg
349e3cae06 Merge remote-tracking branch 'origin/master' into feature/qrcode-feature 2021-09-10 16:00:41 +02:00
Damir Jelić
48b3307934 chore: Bump our deps 2021-09-10 10:08:48 +02:00
Damir Jelić
018544b775 fix(crypto): Remove some dead code 2021-09-09 20:57:58 +02:00
Damir Jelić
44dcd1abdf docs(crypto): Improve the docs and use the readme for the crate docs 2021-09-09 20:57:58 +02:00
Alexander Sieg
c47ac8d6b1 Merge remote-tracking branch 'origin/master' into feature/qrcode-feature 2021-09-09 15:10:18 +02:00
Alexander Sieg
3f09a6abdd fix clippy warnings 2021-09-09 15:05:57 +02:00
Damir Jelić
b94faa3121 feat(crypto): Document our crypto benchmarks 2021-09-09 13:41:28 +02:00
Damir Jelić
56a30b3a02 chore(crypto): Bump the pprof version and remove our custom profiler 2021-09-09 13:35:43 +02:00
Damir Jelić
7c2b6ede1f feat(crypto): Expose the master pubkey struct publicly 2021-09-09 10:21:05 +02:00
Damir Jelić
c6100404e5 feat(sdk): Expose the list of tracked users publicly 2021-09-09 10:20:50 +02:00
Alexander Sieg
df65081785 run nightly rustfmt 2021-09-09 10:15:14 +02:00
Alexander Sieg
55692802c0 crypto: feature-gate dependency on matrix_qrcode 2021-09-08 17:23:10 +02:00
Jonas Platte
a5ff4fbef7
Simplify struct initializations by using Default::default 2021-08-17 00:32:23 +02:00
Damir Jelić
623408913c Merge branch 'secret-sharing' 2021-08-13 20:38:31 +02:00
Damir Jelić
9bae87b0ac crypto: Fix some clippy warnings 2021-08-13 18:28:52 +02:00
Damir Jelić
00e11d33f1 crypto: Fix user-signing signature uploads 2021-08-13 18:28:52 +02:00
Damir Jelić
680f77beb9 crypto: Add the master key to the SAS MAC if we trust it 2021-08-13 18:28:52 +02:00
Damir Jelić
356506060c crypto: Remove private cross signing keys if we detect that they changed 2021-08-13 18:28:52 +02:00
Damir Jelić
4e9fe79619 crypto: Start remembering if an inbound group session has been backed up 2021-08-13 18:28:52 +02:00
Damir Jelić
e4a9cf0bba crypto: Disallow re-sharing room keys with devices with changed curve keys 2021-08-13 18:28:52 +02:00
Damir Jelić
f9de77a75d crypto: Make sure we request secrets only if the user became trusted 2021-08-13 18:28:52 +02:00
Damir Jelić
315e77ebf2 crypto: Add the users for key claiming to the outgoing requests
This makes sure that we immediately claim one-time keys after we
receive the sync changes instead of waiting for a room message to be
sent by the user.

Users may not send a message in a long time which would mean that we'll
likely never share secrets or forward room keys if a Olm session was
missing with the requester.
2021-08-13 18:28:52 +02:00
Damir Jelić
da82fbab4f crypto: Connect the responding to secret request logic 2021-08-13 18:28:52 +02:00
Damir Jelić
4f46212d1a crypto: Add a method to manually verify our own user identity 2021-08-13 18:28:52 +02:00
Damir Jelić
d4fe6f5133 crypto: Add methods to manually verify devices and users 2021-08-13 18:28:52 +02:00
Damir Jelić
ee838087ca crypto: Add methods to export/import cross signing keys 2021-08-13 18:28:52 +02:00
Damir Jelić
b540b8df62 crypto: Add a method to check the state of our private cross signing keys 2021-08-13 18:28:52 +02:00
Damir Jelić
1157594530 crypto: Add a method to check if a user identity is verified 2021-08-13 18:28:52 +02:00
Damir Jelić
8d7fe5e575 crypto: Add a method to check if our own device has been signed by our identity 2021-08-13 18:28:52 +02:00
Damir Jelić
0598bdebc7 crypto: Store our own device we receive from the server 2021-08-13 18:28:52 +02:00
Damir Jelić
7d851a10b5 crypto: Collect common verification stuff into a VerificationStore 2021-08-13 18:28:52 +02:00
Damir Jelić
e401c87246 crypto: When we check the signature of a device use the DeviceKeys struct 2021-08-13 18:28:52 +02:00
Damir Jelić
2cf6ad21d3 crypto: Refactor and split out the gossiping logic 2021-08-13 18:28:52 +02:00
Damir Jelić
adca302dfe crypto: Fix some clippy warnings 2021-08-13 18:28:52 +02:00
Damir Jelić
68df9b6ed2 crypto: Allow secrets to be requested and imported 2021-08-13 18:28:52 +02:00
Damir Jelić
e57d70b089 crypto: Use the correct pickle key when unpickling cross signing keys 2021-08-13 18:28:52 +02:00
Damir Jelić
5f1e972b3d crypto: Properly mark verification requests as done 2021-08-13 18:28:52 +02:00
Damir Jelić
3726492cf9 crypto: Improve some log lines 2021-08-13 18:28:52 +02:00
Damir Jelić
bc8c2752e4 crypto: Store newly created Olm sessions immediately
This fixes a bug where we would try to create a new Olm session, even if
we already created one, because we didn't yet add the new one to the
store.

This would be triggered every time two or more Olm pre-key messages
arrive that don't yet have an Olm session. This leads to decryption
failures for every message that arrived in the same sync after the
first one which created the new Olm session.
2021-08-13 18:28:52 +02:00
Damir Jelić
d27a08bc91 crypto: Fix a comment in the attachment encryption logic 2021-08-13 18:28:52 +02:00
Damir Jelić
5192feb836 crypto: Add support to request secrets 2021-08-13 18:28:52 +02:00
Damir Jelić
a916288d03 crypto: Support responding to secret requests 2021-08-13 18:28:52 +02:00
Damir Jelić
96e26651bc crypto: Bump the olm-rs version 2021-08-13 14:07:37 +02:00
Jonas Platte
578ddd2698
Upgrade to ruma 0.3.0 2021-08-12 10:41:20 +02:00
stoically
0bd438e617 Fix clippy warnings 2021-08-05 22:48:05 +02:00
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