Damir Jelić
ba7ccb40cc
feat(crypto): Wait for a key query to be done if we're claming one-time keys
2022-06-09 11:58:23 +02:00
Benjamin Kampmann
6a853d0173
Merge pull request #744 from matrix-org/jplatte/readme
...
chore: Fix `main` docs link in readme
2022-06-09 10:51:58 +02:00
Jonas Platte
7487b24fe3
chore: Fix main docs link in readme
2022-06-09 10:21:04 +02:00
Amanda Graven
5c4f2b3430
fix(appservice): Make membership keys consistent
...
Correct the inconsistency between the keys used for reading and writing
the membership of a virtual user in the appservice's namespace
2022-06-08 10:42:35 +02:00
Stefan Ceriu
901b670a22
Use the nightly toolchain together with the newly introduced target-applies-to-host on the sdk-ffi crate debug builds to avoid cache corruption issues. Switched back to debug mode as the internal tokio crashes went away
2022-06-08 08:55:28 +02:00
Jonas Platte
28d6e2821b
chore: Replace new usage of Box<UserId>
2022-06-07 21:12:43 +02:00
Jonas Platte
7f0b74a39d
fixup! style: Remove usage of assign! macro from doctests
2022-06-07 21:07:34 +02:00
Jonas Platte
7b6869310f
style: Make assign! formatting consistent
2022-06-07 21:07:34 +02:00
Jonas Platte
445b2e627d
style: Remove usage of assign! macro from examples
2022-06-07 21:07:34 +02:00
Jonas Platte
0e206506d9
style: Remove usage of assign! macro from doctests
2022-06-07 21:07:34 +02:00
Jonas Platte
0fb1d72100
style: Use anyhow::Ok in more places
2022-06-07 21:07:34 +02:00
Jonas Platte
099db20555
Use target-applies-to-host to avoid unnecessary cache invalidation
2022-06-07 16:43:17 +02:00
Benjamin Kampmann
7f49618d35
Merge pull request #729 from gnunicorn/gnunicorn/issue609
...
Ensure all data state stores save is encrypted
2022-06-07 12:41:38 +02:00
Benjamin Kampmann
a308771a7a
fix(sled): Deserialize encrypted TimelineMetadata properly
2022-06-07 12:22:54 +02:00
Benjamin Kampmann
2c4379909c
fix(sled): Wrap [u8] encoding in an explicit type to prevent accidential misuse
2022-06-07 12:22:54 +02:00
Damir Jelić
d4f49ca334
chore: Fix some new clippy warnings
2022-06-07 11:41:29 +02:00
Damir Jelić
c97bb83af9
refactor(base): Remove a bunch of OlmMachine wrapper methods
...
The whole machine is nowadays exposed through the base Client, so no
need to re-expose individual methods that don't add more functionality.
2022-06-07 11:41:29 +02:00
Damir Jelić
7fd973c563
refactor(crypto-ffi): Make use of the BackupRecoveryKey type instead of a string
2022-06-07 10:47:19 +02:00
Benjamin Kampmann
f8dae723c3
style: Fix review remarks
2022-06-07 10:20:55 +02:00
Benjamin Kampmann
8ccf78c025
fix(indexeddb): Ensure all values are encrypted (namely filters and timeline metadata) if asked to
2022-06-07 10:20:40 +02:00
Benjamin Kampmann
47bb73cf89
fix(sled): Ensure timeline metadata is also saved encrypted
2022-06-07 10:20:27 +02:00
Benjamin Kampmann
f3d952839e
style: Clean up rustfmt and clippy
2022-06-07 10:19:43 +02:00
Benjamin Kampmann
85ea9279dc
fix(indexeddb): Use random db in plain test for consistency
2022-06-07 10:19:27 +02:00
Benjamin Kampmann
be159356cd
fix(sled): Encrypt custom key and value
2022-06-07 10:19:23 +02:00
Benjamin Kampmann
571b5e61cf
fix(sled): Encrypt media content
2022-06-07 10:19:20 +02:00
Benjamin Kampmann
77af11bcbc
fix(sled): Encrypt saved sync_token
2022-06-07 10:19:20 +02:00
Benjamin Kampmann
335251695a
fix(sled): Encrypt saved filters
2022-06-07 10:19:17 +02:00
Benjamin Kampmann
bf17012d6b
test(base): Add integration store test for saving filters
2022-06-07 10:19:13 +02:00
Benjamin Kampmann
328ebdba9c
fix(sled): Encrypt saved user_ids
2022-06-07 10:19:08 +02:00
Benjamin Kampmann
c359b011fa
refactor(sled): Rename for consistency event -> value
2022-06-07 10:19:04 +02:00
Damir Jelić
0f758a643c
refactor(crypto): Make the boolean parameter for the backup verification clearer
2022-06-03 16:29:17 +02:00
Damir Jelić
fd2ae1ed8f
docs(crypto): Improve some backup verfication docs
...
Co-authored-by: Denis Kasak <dkasak@termina.org.uk >
2022-06-03 16:29:17 +02:00
Damir Jelić
2b13c0832f
refactor(crypto): Introduce a struct for the backup info
2022-06-03 16:29:17 +02:00
Damir Jelić
b3fbd15270
feat(crypto): Improve the API to verify backups
...
This API change allows us to inspect why a backup is considered to be
trusted instead of just returning a boolean telling us if it's trusted
or not.
2022-06-03 16:29:17 +02:00
Amanda Graven
4e3e393596
refactor(appservice): Better virtual client sync
...
Store the membership state of clients in the appservice's namespace, and
construct sync events based on that information
2022-06-03 15:03:31 +02:00
Jonas Platte
7f81e7c61b
chore: Optimize quote even in debug mode
2022-06-03 14:48:48 +02:00
Damir Jelić
fb1a2f6d94
feat(appservice): Add support for appservice login
...
An appservice can log in by providing a valid appservice token and a user within the appservice’s namespace.
This allows the appservice to acquire a scoped access token for a single user. matrix-appservice-sdk can now take a persisted device id for virtual users. If e2ee is enabled, it will automatically perform an appservice login to create the an E2EE backed session for the virtual user.
2022-06-02 10:36:33 +02:00
Damir Jelić
bdee4e0547
refactor(crypto): Use a result type for invalid signatures
2022-06-02 09:31:37 +02:00
Denis Kasak
42d5eec8b7
docs(crypto): Improve Signature doc comment.
2022-06-02 09:31:37 +02:00
Damir Jelić
e50c1465ea
docs(crypto): Improve some signature verification related docs
...
Co-authored-by: Denis Kasak <dkasak@termina.org.uk >
2022-06-02 09:31:37 +02:00
Damir Jelić
5827cc9a39
refactor(crypto): Use ? instead of nesting closures when searching for a key
...
Co-authored-by: Jonas Platte <jplatte@element.io >
2022-06-02 09:31:36 +02:00
Damir Jelić
c95fd93666
fix(types): Allow Ed25519 signatures to be invalid
...
Since signatures can be uploaded by anyone, unlike one-time keys which
might only be uploaded by the given device for themselves, a Signatures
struct might fail to be deserialized because a signature was maliciously
attached to the object by someone else.
We don't want to fail to deserialize all the signatures just because
someone attached an invalid one. We still would like to have the
signature be deserialized into its proper type if possible so the Raw<T>
pattern was not used.
2022-06-02 09:31:36 +02:00
Damir Jelić
d96fcf7199
refactor(crypto): Return a Signatures struct in the sign method
2022-06-02 09:31:36 +02:00
Damir Jelić
e2348471db
fix(crypto): Make fetching of the first cross signing key more robust
2022-06-02 09:31:36 +02:00
Charlotte 🦝 Delenk
c562d91533
feat(appservice): Use appservice logins for e2ee
...
This commit also adds a virtual user builder, which allows you to
control the device id, change the client builder, perform an appservice
login, and even restore a previously created session.
https://spec.matrix.org/v1.2/client-server-api/#appservice-login
2022-06-01 15:29:04 +01:00
Ivan Enderlin
3cf4150df2
feat: Rename OlmMachine.share_group_session to OlmMachine.share_room_key
...
feat: Rename `OlmMachine.share_group_session` to `OlmMachine.share_room_key`
2022-06-01 15:08:58 +02:00
Ivan Enderlin
b3d52ca68c
feat: Rename OlmMachine.share_group_session to OlmMachine.share_room_key.
...
As discussed with @poljar, the Matrix event we are creating is
`m.room.key`, so it's preferable to rename the function
`share_room_key`. Note: Olm calls the things an inbound group session,
that's where the name comes from, but it's not aligned with the
specification.
2022-06-01 14:32:11 +02:00
Ivan Enderlin
e673954b98
chore: Add missing new lines at the end of files
...
chore: Add missing new lines at the end of files
2022-05-31 10:31:08 +02:00
Ivan Enderlin
6d7573dced
chore: Add missing new lines at the end of files.
2022-05-31 10:06:35 +02:00
Ivan Enderlin
2d14452398
Merge pull request #675 from Hywan/feat-crypto-wasm
...
feat(crypto): Port to Wasm (in a JS host) and to NodeJS
2022-05-31 10:01:57 +02:00