Ivan Enderlin
7f07ac52ef
feat(crypto-js): Add store configuration to the OlmMachine constructor.
...
The `OlmMachine` constructor now has 2 more optional arguments:
`store_name` and `store_passphrase`, to use Indexed DB as the backend
to store the Olm machine keys, rather than having an in-memory Olm
machine.
Node.js is used to test our binding. Indexed DB is absent of
Node.js. So, firstly, we are using the `fake-indexeddb` JavaScript
library to mimic the same API inside Node.js. And, secondly, we use
our own fork of the `indexed_db_futures` Rust crate to provide add
support for Node.js too ([PR is
here](https://github.com/Alorel/rust-indexed-db/pull/11 )). It
basically looks in the Node.js global environment if the `indexedDB`
getter is present, just like it is already done for `Window` on any
browser, or `WorkerGlobalScope` for workers.
2022-08-23 15:00:33 +02:00
Jonas Platte
9462061a5a
chore: Upgrade ruma
2022-08-23 14:28:21 +02:00
Jonas Platte
dd78a8cecd
refactor(sdk)!: Make room type constructors private
...
… and avoid unnecessary clones before calling them.
2022-08-22 13:16:05 +02:00
Benjamin Kampmann
549c829000
chore: Update ruma
2022-08-18 15:52:08 +02:00
Jonas Platte
3581d83389
chore: Upgrade Ruma
2022-08-17 10:15:05 +02:00
Jonas Platte
260b604615
refactor(sdk)!: Split strongly-typed state event functions into two
...
One for empty state keys under the existing name, one for non-empty
state keys with a `_for_key` suffix.
2022-08-17 10:15:05 +02:00
Damir Jelić
180822dd18
chore(crypto): Improve the message when we think that we have been deleted
2022-08-16 18:32:14 +02:00
Damir Jelić
20477ab7da
chore(crypto): Log our identity keys when we think our device has been deleted
2022-08-16 18:31:30 +02:00
Damir Jelić
06f39696d3
chore(crypto): Improve some logs in the Olm message handling code
2022-08-16 16:18:50 +02:00
Damir Jelić
6f5443f8a0
chore(crypto): Log some info when we try to create an Olm session from a pre-key message
2022-08-16 16:18:50 +02:00
Benjamin Kampmann
7feffec9c0
fix(sled): feature-gate EncodeUnchecked::from
2022-08-16 15:18:46 +02:00
Damir Jelić
78dcff9259
chore(crypto): Fix an indentation issue
...
Co-authored-by: Jonas Platte <jplatte@matrix.org >
2022-08-15 11:39:43 +02:00
Damir Jelić
0bd58a7741
refactor(crypto): Simplify the Curve25519 check when fetching a device
...
Co-authored-by: Jonas Platte <jplatte@matrix.org >
2022-08-15 11:39:43 +02:00
Damir Jelić
405c3938b7
refactor(crypto): Use the Curve25519 key type in more places
2022-08-15 11:39:43 +02:00
Damir Jelić
bd5ea8b0f7
fix(crypto): Fix some error messages
2022-08-15 11:39:43 +02:00
Jonas Platte
24c042e974
refactor(base): Deserialize events at the expected type
...
… rather than deserializing at an enum type and taking the same branch
for getting a different enum variant¹ as failed deserialization.
¹ which should be impossible anyways
2022-08-15 11:05:22 +02:00
Jonas Platte
d236cde0c7
refactor(base): Use StateStoreExt in a few places
2022-08-15 11:05:22 +02:00
Jonas Platte
d2f39bc18f
feat(base): Add StateStoreExt for statically-typed event retrieval
2022-08-15 11:05:22 +02:00
Damir Jelić
c9c09adb38
chore: Fix some newly detected typos
2022-08-14 10:20:28 +02:00
Jonas Platte
aedbbcdde7
fix(sdk)!: Remove SyncEvent implementation for InitialStateEvent
...
Initial state events aren't actually received through sync, they're sent from
the client to the server when creating a room.
This change makes it impossible to register event handlers for initial state
events. Previously, this was allowed, but the event handler was never called.
2022-08-13 20:21:28 +02:00
Damir Jelić
0b5bfeadea
chore(crypto): Add a missing semicolon
...
Co-authored-by: Jonas Platte <jplatte@matrix.org >
2022-08-13 09:58:57 +02:00
Damir Jelić
6d60acfff4
chore(common): Fix a clippy warning
2022-08-13 09:58:57 +02:00
Damir Jelić
3d56af442d
refactor(crypto): Utilize the decrypted Olm event type more
...
This patch adds some more stronger guarantees that received room key
events and other similarly security critical event types are only
handled if they have been received over a secure Olm channel.
2022-08-13 09:58:57 +02:00
Damir Jelić
ae18b01c25
refactor(crypto): Use the SigningKeys collection for inbound group sessions
2022-08-11 16:43:42 +02:00
Damir Jelić
4692a12cd7
refactor(crypto): Create a custom collection type for signed keys
2022-08-11 16:43:42 +02:00
Jonas Platte
87094a9111
chore: Document dependency upgrade issues
2022-08-11 13:16:10 +02:00
Jonas Platte
adf3f9d434
chore(appservice): Upgrade serde_yaml
2022-08-11 13:15:57 +02:00
docweirdo
febfcf9796
feat(sdk): Make room actions return typed room objects
...
… by waiting for the corresponding event confirming the action. Affects:
* Creating a room
* (Re-)Joining a room
* Leaving a room
* Accepting an invitation
* Rejecting an invitation
2022-08-10 17:32:38 +02:00
Damir Jelić
3f0a68082a
feat(crypto): Add a setting to only send room keys to trusted devices
2022-08-10 13:31:15 +02:00
Damir Jelić
18861bb595
refactor(crypto): Add a dedicated error for inbound group session exporting
2022-08-10 13:28:54 +02:00
Damir Jelić
329d461a2f
feat(crypto): Add customized event type for the forwarded room key
2022-08-10 13:28:54 +02:00
Jonas Platte
4914c595e9
fix(sdk): Further relax event / notification handler bounds on WASM
...
This allows capturing non-`Send` / -`Sync` values in handler closures.
2022-08-10 12:54:36 +02:00
Jonas Platte
ad80839ffd
fix(sdk): Make event handler futures non-Send on wasm
2022-08-09 14:25:57 +02:00
Jonas Platte
0701561e45
feat(common): Add SendOutsideWasm, SyncOutsideWasm
2022-08-09 14:25:57 +02:00
Jonas Platte
25030780b0
test(sdk): Run event handler tests on wasm
2022-08-09 14:25:57 +02:00
Jonas Platte
327a404d60
test(sdk): Move test client creation into separate module
2022-08-09 14:25:57 +02:00
Damir Jelić
a025163dae
test(crypto): Test that we correctly preserve relations in an encryption cycle
2022-08-09 14:04:11 +02:00
Damir Jelić
19fcff56de
chore(crypto): Make the relation copying code when decrypting a bit simpler
2022-08-09 14:04:11 +02:00
Damir Jelić
edf81fb325
fix(crypto): Correctly copy over the relation when encrypting
2022-08-09 14:04:11 +02:00
Damir Jelić
08338acac2
fix(crypto): Fix the deserialization of relations
2022-08-09 14:04:11 +02:00
Kévin Commaille
52e70f1955
refactor(sdk): Don't require the whole session for sending
...
Allow to send requests when only the access token is available.
Remove the unreachable UserIdRequired error.
2022-08-09 12:26:33 +02:00
Jonas Platte
d3d108deb8
chore: Add missing copyright headers
2022-08-08 16:28:48 +02:00
Jonas Platte
bd65d9b7a6
doc(sdk): Remove usage of deprecated function in doctest
2022-08-05 16:16:41 +02:00
Jonas Platte
230bb67763
refactor(sdk): Remove Clone requirement on event handlers
2022-08-05 16:16:41 +02:00
Jonas Platte
10a37f6d51
chore(sdk): Add EventHandlerDropGuard
...
It isn't used for now, but will be soon.
2022-08-05 16:16:41 +02:00
Jonas Platte
5156fb7dd4
refactor(sdk): Move add_event_handler_impl to event_handler module
2022-08-05 16:16:41 +02:00
Jonas Platte
3b03ad804f
refactor(sdk)!: Swap the async lock around event handlers for a sync one
2022-08-05 16:16:41 +02:00
Damir Jelić
603176f521
chore(crypto): Bump vodozemac
...
Vodozemac got some new knobs to twiddle with. This patch updates
vodozemac and sets the knobs to use the olm/megolm v1 supported
encryption schemes.
2022-08-05 14:06:42 +02:00
Kévin Commaille
7623f93bb3
fix(sdk)!: Make set_homeserver private
...
A user shouldn't need to change the homeserver after creating the client.
2022-08-05 09:55:55 +02:00
Damir Jelić
593d4e6062
perf(crypto): Use an RwLock for the OutboundGroupSession
2022-08-04 17:36:03 +02:00