Ivan Enderlin
7fa89f76aa
chore(crypto-js): Update vodozemac's version to match matrix-sdk-crypto's.
2022-05-31 08:40:16 +02:00
Ivan Enderlin
0335fdd07f
doc(crypto): Add missing module documentation.
2022-05-31 08:40:16 +02:00
Ivan Enderlin
3f8e3b61ff
test(xtask) Replace WasmFeatureSet::MatrixSdkCrypto by *Js.
2022-05-31 08:40:16 +02:00
Ivan Enderlin
efe5ea6a9c
test(ci): Exclude matrix-sdk-crypto-(js|nodejs) from code coverage.
2022-05-31 08:40:16 +02:00
Ivan Enderlin
6afeeea56c
test(ci): Do not compile matrix-sdk-crypto to Wasm, but -crypto-js instead.
2022-05-31 08:40:16 +02:00
Ivan Enderlin
bef1dfbf79
chore(crypto-js): Fix typos.
2022-05-31 08:40:16 +02:00
Ivan Enderlin
51488b40d0
doc(crypto-js) Add missing documentation.
2022-05-31 08:40:16 +02:00
Ivan Enderlin
b6a637893e
chore(crypto-js): Fix cargo fmt.
2022-05-31 08:40:16 +02:00
Ivan Enderlin
2a4dce30b2
Merge branch 'main' into feat-crypto-wasm
2022-05-31 08:40:11 +02:00
Ivan Enderlin
3194ad1f9a
feat(crypto-js): Implement OlmMachine.get_verification.
2022-05-31 08:39:34 +02:00
Ivan Enderlin
ee648144a2
feat(crypto-nodejs): Split into a new crate: matrix-sdk-crypto-nodejs.
...
Why? Because `napi` and `wasm-bindgen` are too different. At this
step, the most notable bugs are the way `napi` is handling its proc
macros. There is too much conflicts when used with `#[cfg_attr]`. It
makes the code repetitive and harder to read and to understand (and
also to compile, we must be very careful). But on the short-term,
quickly, we will see more notable differences between `wasm-bindgen`
and `napi`, e.g. with array (in `wasm-bindgen`, we can downcast array
items into particular types, with `napi` it's going to be a very
different code).
Instead of fighting the proc macros bugs now, and having to split the
code later inside the same crate, we believe it's a good idea to split
the code now into 2 crates. At first we will see obvious code
duplications, but on the short-term, the code is likely to be more and
more different.
2022-05-31 08:39:34 +02:00
Ivan Enderlin
afef9103a3
feat(crypto-js): Continue to port the API to NodeJS.
2022-05-31 08:39:34 +02:00
Ivan Enderlin
4df5ee6087
chore(crypto-js): Improve the Makefile for NodeJS support.
2022-05-31 08:39:34 +02:00
Ivan Enderlin
1a731ec385
feat(crypto-js): Rename OlmMachine.encrypt to .encrypt_room_event.
2022-05-31 08:39:34 +02:00
Ivan Enderlin
84fe78bab3
Merge branch 'main' into feat-crypto-wasm
2022-05-31 08:39:29 +02:00
Ivan Enderlin
bce11b209e
feat(crypto-js): Implement OlmMachine.update_tracked_users.
2022-05-31 08:38:24 +02:00
Ivan Enderlin
6c472f873f
feat(crypto-js): Start adding support for NodeJS.
2022-05-31 08:38:24 +02:00
Ivan Enderlin
250b85dc79
feat(crypto): Extract js module to its own crate: matrix-sdk-crypto-js.
2022-05-31 08:38:13 +02:00
Ivan Enderlin
f3ab1ae276
chore(crypto): Fix a typo.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
6b2df7afdd
feat(crypto): Implement `OlmMachine.get_missing_sessions.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
cdb252be5e
chore(crypto): Move everything inside crates/matrix-sdk-crypto/.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
db30ef6ee4
test(crypto): Add tests for the Wasm API.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
da8699fe40
feat(crypto): DeviceLists.new expects Array<UserId>s now.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
16b5eebe23
feat(crypto): Implement a hacky downcast function.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
8161360852
feat(crypto): Add toString methods on identifier objects.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
f01cfe42b4
feat(crypto): Implement EncryptionSettings.new with default values.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
a024c9b268
docs(crypto): Add missing documentation.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
c20349f46f
feat(crypto): Implement OlmMachine.share_group_session.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
e9d37d7c4e
docs(crypto): Add missing docs.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
8b94aed27f
fix(crypto): Use txn_id for transaction_id.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
dc5b15e799
fix(crypto): OutgoingRequest::ToDeviceRequest was not correctly mapped.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
30e9189f7b
fix(crypto): Use JavaScript naming convention for OlmMachine.invalidate_group_session.
2022-05-31 08:36:37 +02:00
Ivan Enderlin
b6a5d4962b
Merge branch 'main' into feat-crypto-wasm
2022-05-31 08:36:30 +02:00
Ivan Enderlin
ee713f928f
feat(crypto): Implement OlmMachine.encrypt and .invalidate_group_session.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
444ff9936b
feat(crypto): Implement RoomId.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
2451815226
feat(crypto): Implement *PublicKey.to_base64 and .length.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
86c6e601bd
chore(crypto): Refactor the code with TryFrom on a tuple.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
9f159ff5a4
feat(crypto): Implement OlmMachine.mark_request_as_sent.
...
To implement this method, a new `responses::OwnedResponse`
intermediate type was needed. In addition to that, the `http` crate is
now required when the `js` feature is enabled.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
056f34883f
feat(crypto): Implement OlmMachine.trackedUsers.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
2d15f758da
feat(crypto): Use JavaScript naming style for methods.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
acd5de3cf3
feat(crypto): Implement ServerName, and add UserId.serverName.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
f0bb35a96c
feat(crypto): Add changed and left to the constructor of DeviceLists.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
1d38e54739
feat(crypto): Return a JsError rather than a String.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
08665dcd1c
feat(crypto): Implement our own future_to_promise helper to simplify code.
...
`wasm_bindgen_future::future_to_promise` expects a `Future<Output =
Result<JsValue, JsValue>>`. We reimplement this function by expecting
a `Future<Output = Result<T, anyhow::Error>>` where `T:
Into<JsValue>`. That way, we apply the type conversions to `JsValue`
inside this helper rather than in the call site. Additionally, all
errors are managed automatically without having to deal with `JsError`
or `JsValue`. It makes the code simpler to read and easier to write
from my point of view.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
569adb7ceb
feat(crypto) Implement OlmMachine.identity_keys.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
fd4dff79d4
feat(crypto) Implement OlmMachine.user_id, .device_id and .display_name.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
fdb9fe21c6
feat(crypto) Remove existing unwrap code.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
7e5eec82c5
feat(crypto) Implement OlmMachine.outgoing_requests.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
901715bcf3
chore(crypto) Generate a smaller Wasm module.
2022-05-31 08:35:09 +02:00
Ivan Enderlin
3aa46fa746
feat(crypto) Implement OlmMachine.receive_sync_changes & friends.
2022-05-31 08:35:09 +02:00