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ć
ac6dad3f35
matrix-sdk: Bump our deps
2021-01-25 15:47:51 +01:00
Damir Jelić
c1f9d3bc39
crypto: Add a bench for our key query response handling
2021-01-25 10:13:08 +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ć
6a30514d40
base: Move the deserialized responses types into the common crate
2021-01-19 12:30:58 +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ć
ccd8a4d602
Merge branch 'master' into new-state-store
2021-01-05 17:03:24 +01:00
Damir Jelić
4f2cad8f62
matrix-sdk: Bump our versions
2021-01-05 11:23:18 +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ć
60950044f2
matrix-sdk: Bump our deps.
2021-01-04 17:22:09 +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ć
807c58649d
Merge branch 'crypto-improvements' into new-state-store
2021-01-02 13:49:20 +01:00
Damir Jelić
bafe9a0f61
crypto: Fix a couple of clippy warnings.
2021-01-02 13:47:53 +01:00
Damir Jelić
f1140fec8b
Merge branch 'crypto-improvements' into new-state-store
2021-01-02 13:17:25 +01:00
Damir Jelić
0d99d8cc23
crypto: Test verification request starting up to SAS.
2020-12-24 15:22:51 +01:00
Damir Jelić
8857335a7d
Merge branch 'crypto-improvements' into new-state-store
2020-12-22 16:18:46 +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ć
e25441babc
base: Create a store wrapp and move store methods under it.
2020-12-20 16:27:29 +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ć
ae2391791d
crypto: Use a released sqlx version.
2020-12-01 13:25:51 +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