Denis Kasak
aa16a7e291
crypto: Refactor the group session rotation code some more for clarity.
2021-03-02 12:20:09 +01:00
Denis Kasak
70ecf269d0
Improve docstring of GroupSessionManager::collect_session_recipients.
2021-03-02 12:20:09 +01:00
Damir Jelić
e6f6665fa0
Merge branch 'master' into history-visiblity-session-share
2021-03-01 20:47:31 +01:00
Damir Jelić
2e659afd26
crypto: Make it clearer that the deleted flag can only be set to true
2021-03-01 20:34:29 +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ć
6e168051b6
crypto: Chunk out key query requests.
2021-02-26 16:48:42 +01:00
Damir Jelić
2a09e588f3
crypto: Log when we receive room keys
2021-02-17 16:01:51 +01:00
Damir Jelić
5ca40b9893
crypto: Be more forgiving when updating one-time key counts
2021-02-17 15:24:46 +01:00
Damir Jelić
6cc03d1c19
crypto: Improve the logging for deserialization failures
2021-02-17 15:23:26 +01:00
Damir Jelić
544881f11c
crypto: Fix a clippy warning
2021-02-16 10:52:19 +01:00
Damir Jelić
ef5d7ca579
crypto: Add missing flush calls to the sled crypto store
2021-02-16 10:29:10 +01:00
Damir Jelić
1db89741bc
matrix-sdk: Re-export the EncryptionInfo struct
2021-02-16 09:42:23 +01:00
Damir Jelić
c39fa6543f
crypto: Expose the EncryptionInfo struct publicly
2021-02-15 15:19:48 +01:00
Damir Jelić
2811c490a0
matrix-sdk: Fix some new clippy warnings
2021-02-12 12:59:53 +01:00
Damir Jelić
c34f69f8a3
crypto: Don't receive the whole sync response, only what we need.
...
This makes it clearer what the crypto layer is doing, this also makes it
clearer for people that will use the crypto layer over FFI that they
don't need to go through a serialize/deserialize cycle for the whole
sync response.
2021-02-10 15:42:55 +01:00
Damir Jelić
1799721a5f
crypto: Store the history visibility with inbound group sessions
...
This can be useful to share the room history with new room members.
2021-02-03 16:59:34 +01:00
Damir Jelić
9e83eaf2f5
crypto: Store the history visiblity with the outbound session
2021-02-03 16:01:58 +01:00
Damir Jelić
10da61c567
crypto: Answer key reshare requests only at the originally shared message index
2021-01-28 14:07:51 +01:00
Damir Jelić
bf4f32eccf
crypto: Remove the sqlite store for now
2021-01-27 15:29:42 +01:00
Damir Jelić
bc3ba3fab0
crypto: Add tests for the sled cryptostore
2021-01-27 15:19:32 +01:00
Damir Jelić
d6c5a4d8aa
crypto: Add a missing encode call in the sled store
2021-01-27 15:15:45 +01:00
Damir Jelić
71a087c379
crypto: Encode our keys in the sled cryptostore as well
2021-01-26 14:22:03 +01:00
Damir Jelić
6cb2c8b468
crypto: Store and restore outbound group sessions
2021-01-25 17:14:13 +01:00
Damir Jelić
077050efb4
crypto: Add a hack so e2ee support works under WASM again
2021-01-22 18:40:08 +01:00
Damir Jelić
c034de470b
base: Allow using the same sled database for the state and cryptostore
2021-01-22 11:33:06 +01:00
Damir Jelić
1483c22171
crypto: Don't send out empty to-device reuqests when sharing sessions
...
An empty to-device request can happen if we're trying to re-share a
session with devices that are we're missing an olm session with so don't
send them out.
2021-01-21 14:04:31 +01:00
Damir Jelić
ef2f20eb97
crypto: Rotate the megolm session if a device gets blacklisted
2021-01-21 12:19:02 +01:00
Damir Jelić
de4df4e50a
base: Re-introduce a state store trait.
2021-01-21 12:08:16 +01:00
Damir Jelić
4a06c9e82d
base: Initial support for an encrypted sled store.
2021-01-20 15:57:23 +01:00
Damir Jelić
06a973a1b8
crypto: Don't use the full PBKDF rounds when testing
2021-01-20 14:10:57 +01:00
Damir Jelić
17f3dbb0a0
crypto: Return a deserialized ToDevice struct when we receive a sync
2021-01-19 12:59:31 +01:00
Damir Jelić
4f4ba831c1
crypto: Bump the PBKDF rounds for the pickle key derivation
2021-01-19 12:05:30 +01:00
Damir Jelić
b8fcc003ea
base: Finish up the error handling for the new stores
2021-01-19 12:03:46 +01:00
Damir Jelić
ef95d9b539
crypto: Fix a misleading comment about the outbound session rotation period
2021-01-19 10:21:12 +01:00
Damir Jelić
377b8ea75a
crypto: Use consistent ordering for the group session sharing log line
2021-01-19 10:19:15 +01:00
Damir Jelić
4af9b74776
crypto: Properly clamp the rotation period of the outbound session
2021-01-18 20:46:34 +01:00
Damir Jelić
e5ba0298d0
crypto: Refactor and document the share group session method a bit better
2021-01-18 15:21:54 +01:00
Damir Jelić
4eb504d000
crypto: Improve the log line when we share group sessions
2021-01-18 14:15:31 +01:00
Damir Jelić
436530e874
crypto: Fix a couple clippy warnings
2021-01-18 13:50:59 +01:00
Damir Jelić
1746690eda
crypto: Add a sled cryptostore
2021-01-18 13:38:00 +01:00
Damir Jelić
629a8ee84f
crypto: Add getters for the sender key in our sessions
2021-01-18 13:28:09 +01:00
Damir Jelić
5418c88775
crypto: Add some more serialize/deserialize implementations
2021-01-18 13:21:30 +01:00
Damir Jelić
14575892bd
crypto: Implement serialize/deserialize for devices.
2021-01-18 13:19:13 +01:00
Damir Jelić
43a74524c5
crypto: Add a pending requests method for the outbound group session
2021-01-18 12:44:19 +01:00
Damir Jelić
bab8fde0ac
crypto: Change the way we share group sessions
...
This patch removes the need to ask if a group session needs to be shared
it also adapts the method so it re-shares sessions if new users or
devices join the group.
2021-01-15 18:04:45 +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ć
643526987f
Merge branch 'master' into new-state-store
2021-01-05 21:40:39 +01:00
Damir Jelić
b311a31c9e
matrix-sdk: Bump our tokio and reqwest versions.
2021-01-05 21:39:52 +01:00
Damir Jelić
8924865c9c
crypto: Fix a couple of new clippy warnings.
2021-01-04 17:39:40 +01:00
Damir Jelić
c6a80dc921
Merge branch 'master' into new-state-store
2021-01-04 17:34:33 +01:00
Damir Jelić
4c6c1d2107
matrix-sdk: Get rid of the common macros crate
...
This crate was used to support different trait bounds on WASM vs other
targets, since we only define async traits in a couple of places having
a whole crate to support this feels a bit excessive.
This patch defines a target specific super trait instead, this lowers
the compile time a couple of seconds.
2021-01-04 16:34:14 +01:00
Damir Jelić
2e3b6fba7d
common: Use the re-exported versions of js_int and assign
2021-01-04 15:29:49 +01:00
Damir Jelić
108d4ebffe
Merge branch 'master' into new-state-store
2021-01-04 14:16:15 +01:00
Damir Jelić
d84a852ae9
matrix-sdk: Bump ruma to a released version.
2021-01-04 14:06:07 +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ć
007e452d39
Merge branch 'master' into crypto-improvements
2020-12-22 15:53:08 +01:00
Damir Jelić
9245b2a89a
crypto: Properly canonicalize the json when verifying signatures as well.
2020-12-22 15:45:42 +01:00
Damir Jelić
d39e3141fc
crypto: Use CanonicalJsonValue for all the signature calculations.
2020-12-22 14:12:57 +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ć
5babd71341
crypto: Copy the relates to field to the unencrypted content when encrypting
2020-12-09 17:16:03 +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ć
b5c61af472
crypto: Move the base64 helpers into a common module.
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ć
4ab6ae7f30
crypto: Fix an os_target definition.
2020-12-08 13:15:19 +01:00
Damir Jelić
c8dd6bfd26
crypto: Scope the imports for the unwedging test into the test.
2020-12-08 12:56:16 +01:00
Damir Jelić
b982d36303
crypto: Run the time sensitive tests only on linux.
2020-12-08 12:34:59 +01:00
Damir Jelić
35247fac2a
crypto: Fix a lint issue.
2020-12-08 10:50:58 +01:00
Damir Jelić
aa1a64628f
crypto: Remove a bunch of unneeded whitespace in a log line.
2020-12-05 14:59:40 +01:00
Damir Jelić
0e66640b9f
crypto: Log both user id versions when the device keys mismatch.
2020-12-05 14:59:40 +01:00
Damir Jelić
3f41e5071b
crypto: Preserve the relationship info while decrypting events.
2020-12-05 14:59:40 +01:00
Damir Jelić
9eb17e757c
matrix-sdk: Update ruma.
2020-12-05 14:59:40 +01:00
Damir Jelić
804bd221b2
crypto: Improve key imports.
...
This patch changes so key imports load all existing sessions at once
instead loading a single session for each session we are importing. It
removes the need to lock the session when we check the first known index
and exposes the total number of sessions the key export contained.
2020-12-02 11:12:46 +01:00
Damir Jelić
e20b1efae9
crypto: Store private identities and accounts with the Changes struct as well.
2020-12-01 17:14:32 +01:00
Damir Jelić
5d0ff961b2
crypto: Check the Olm message hash if we fail to decrypt an Olm message.
...
Wether by accident (the next_batch token doesn't get stored properly) or
by malicious intent (the server replays a message) an Olm encrypted to-device
message may appear multiple times.
This is usually fine since nothing bad happens, we don't decrypt the message
and the message gets thrown away.
Since the introduction of Olm session unwedging an undecryptable message
leads to the creation of a new fresh Olm session. To avoid this we
remember which Olm messages we already decrypted so they don't trigger
an unwedging dance.
2020-12-01 14:50:04 +01:00
Damir Jelić
270350cd34
crypto: Save the olm message hash.
2020-12-01 14:38:03 +01:00
Damir Jelić
24592adbba
crypto: Return a higher level struct when decrypting olm messages instead of tuples
2020-12-01 12:41:11 +01:00
Damir Jelić
efe659910f
crypto: Remove some stale TODOs.
2020-12-01 11:20:55 +01:00
Damir Jelić
08babb6d6c
crypto: Document the new cross signing methods in the store.
2020-12-01 10:54:41 +01:00
Damir Jelić
7e9baf2707
crypto: Remove some dead code definitions.
2020-11-26 14:15:52 +01:00
Damir Jelić
3073883076
crypto: Fix a clippy warning.
2020-11-26 14:02:35 +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ć
dedb1eb745
Merge branch 'update-ruma'
2020-11-20 21:21:24 +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
Alejandro Domínguez
95243003c4
Update ruma
2020-11-20 20:14:18 +01:00
Damir Jelić
b27f1b0e34
crypto: Fix some clippy warnings.
2020-10-30 14:38:29 +01:00
Damir Jelić
b67cd4ddd2
crypto: Create a trusted public cross signing identity when we create a private one.
2020-10-30 13:21:14 +01:00
Damir Jelić
44cc1cef71
crypto: Let devices hold on to the private identity.
2020-10-30 11:41:48 +01:00
Damir Jelić
34bec59389
crypto: Hold on to the private identity in the store.
2020-10-30 11:34:55 +01:00
Damir Jelić
cb95f576a5
crypto: Clear out the signatures when signing a device.
...
This avoids re-uploading all the existing signatures.
2020-10-29 15:37: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ć
2077ea0ddf
crypto: Split out the device_key signing method.
2020-10-27 13:48:51 +01:00
Damir Jelić
e757d605f5
crypto: Allow users to be signed as well.
2020-10-27 13:29:19 +01:00
Damir Jelić
61a5293af5
cyrpto: Document the signing module.
2020-10-26 16:03:59 +01:00
Damir Jelić
6e83a4bbca
crypto: Split out the signing module into two files.
2020-10-26 16:03:59 +01:00
Damir Jelić
5c14910126
crypto: WIP cross signing bootstrap.
2020-10-26 16:03:59 +01:00
Damir Jelić
8ed1e37cef
crypto: Save the account if we create a new one.
2020-10-23 11:17:37 +02:00
Damir Jelić
5fd004bae5
crypto: Connect the private identity to the verification machine.
2020-10-23 11:17:13 +02:00
Damir Jelić
7de002b128
crypto: Fix some lint issues.
2020-10-22 16:40:05 +02:00
Damir Jelić
f60dc7ed78
crypto: Allow cross signing identities to be stored/restored.
2020-10-22 16:25:25 +02:00
Damir Jelić
78d7f6c10b
crypto: Fix a clippy issue.
2020-10-21 17:05:36 +02:00
Damir Jelić
fa25ca4475
crypto: Make the pickle key encryption future proof.
2020-10-21 16:52:40 +02:00
Damir Jelić
c9db63509f
crypto: Add error handling to the signing module.
2020-10-21 16:24:10 +02:00
Damir Jelić
ac0df5dea9
crypto: Properly handle errors in the pickle key decryption.
2020-10-21 15:28:43 +02:00
Damir Jelić
d175c47a05
crypto: Use a random pickle key in the sqlite store.
2020-10-21 15:13:21 +02:00
Damir Jelić
959e8450af
crypto: Use a transaction to create sqlite tables.
2020-10-21 14:01:27 +02:00
Damir Jelić
dd0642cd59
crypto: Add a pickle key struct.
2020-10-21 13:21:22 +02:00
Damir Jelić
6a7da5a8b6
crypto: Correctly generate a random nonce for pickling of the signing objects.
2020-10-21 12:55:45 +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ć
728d80ed06
crypto: Connect the cross signing to the main state machine.
2020-10-19 16:03:01 +02:00
Damir Jelić
404cc410cc
crypto: Fix the docs and return value of the import_keys method.
2020-10-17 14:39:19 +02:00
Damir Jelić
425a07d670
crypto: Don't load all the devices in the sqlite store.
2020-10-16 16:57:26 +02:00
Damir Jelić
4262f1d3b0
crypto: Don't cache inbound group sessions in the sqlite store.
2020-10-16 15:54:50 +02:00
Damir Jelić
b5560d3cb6
crypto: More transactions in the sqlite store.
2020-10-16 15:23:34 +02:00
Damir Jelić
fc54c63a4c
crypto: Upgrade sqlx to the beta release.
...
This change is much needed to enable transactions in our sqlite store,
before this release creating a transaction would take ownership of the
connection, now it just mutably borrows it.
2020-10-16 15:05:53 +02:00
Damir Jelić
e7a24d5e68
crypto: Move the session managers under a common module.
2020-10-16 11:09:55 +02:00
Damir Jelić
b5c9473424
crypto: Test the session unwedging logic.
2020-10-15 15:03:22 +02:00
Damir Jelić
59d7b53242
crypto: Add an user for a key request if the device was marked as wedged.
2020-10-15 15:02:02 +02:00
Damir Jelić
59a7199202
crypto: Initial test for the session manager.
2020-10-15 13:58:35 +02:00
Damir Jelić
d1313b8614
crypto: Fix another clippy warning.
2020-10-14 16:15:26 +02:00
Damir Jelić
4e8ce4cb5d
crypto: Fix clippy warnings and don't use the PickleMode for signing pickling.
2020-10-14 16:01:52 +02:00
Damir Jelić
c85fe6bc21
crypto: Initial support for private cross signing identities.
2020-10-14 15:35:06 +02:00
Damir Jelić
3338ecf62a
Merge branch 'master' into crypto-improvements
2020-10-13 13:02:02 +02:00
Damir Jelić
1cabc0cac9
crypto: Correctly store the uploaded key count when saving the account.
...
This fixes : #101 .
2020-10-13 09:47:49 +02:00
Damir Jelić
bd0ac703a0
crypto: Initial logic for session unwedging.
2020-10-09 15:39:35 +02:00
Damir Jelić
6d2e9cfc02
crypto: Share the users_for_key_claim map between modules.
2020-10-09 11:36:31 +02:00
Damir Jelić
473e49252e
crytpo: Get the session from the list of sessions in a safe manner.
2020-10-08 15:56:17 +02:00
Damir Jelić
d96c9f85a1
crypto: Add doces for the get_missing_sessions method.
2020-10-08 14:50:35 +02:00
Damir Jelić
279ce0bba0
crypto: Split out the Olm session handling logic into a separate module.
2020-10-08 14:41:34 +02:00