Add a config flag to enable the rust crypto-sdk (#9759)
This PR adds an option to `config.json` which will make the js-sdk use the rust crypto sdk, instead of the libolm implementation. To use it, you need to add something like this to `config.json`: ``` "features": { "feature_rust_crypto": true }, ``` We don't (yet) have any way to migrate a device between implementations, so the setting that was in use when you log in is persisted to the device; it is *visible* via the labs section but cannot currently be changed. This is part of https://github.com/vector-im/element-web/issues/21972, and enables the functionality added to the js-sdk in https://github.com/matrix-org/matrix-js-sdk/pull/2969.
This commit is contained in:
parent
bfaced2172
commit
6ec6d44c96
6 changed files with 157 additions and 19 deletions
|
@ -44,6 +44,7 @@ import SdkConfig from "../SdkConfig";
|
|||
import SlidingSyncController from "./controllers/SlidingSyncController";
|
||||
import ThreadBetaController from "./controllers/ThreadBetaController";
|
||||
import { FontWatcher } from "./watchers/FontWatcher";
|
||||
import RustCryptoSdkController from "./controllers/RustCryptoSdkController";
|
||||
|
||||
// These are just a bunch of helper arrays to avoid copy/pasting a bunch of times
|
||||
const LEVELS_ROOM_SETTINGS = [
|
||||
|
@ -491,6 +492,17 @@ export const SETTINGS: { [setting: string]: ISetting } = {
|
|||
),
|
||||
default: false,
|
||||
},
|
||||
"feature_rust_crypto": {
|
||||
// use the rust matrix-sdk-crypto-js for crypto.
|
||||
isFeature: true,
|
||||
labsGroup: LabGroup.Developer,
|
||||
supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,
|
||||
displayName: _td("Rust cryptography implementation"),
|
||||
description: _td("Under active development. Can currently only be enabled via config.json"),
|
||||
// shouldWarn: true,
|
||||
default: false,
|
||||
controller: new RustCryptoSdkController(),
|
||||
},
|
||||
"baseFontSize": {
|
||||
displayName: _td("Font size"),
|
||||
supportedLevels: LEVELS_ACCOUNT_SETTINGS,
|
||||
|
|
25
src/settings/controllers/RustCryptoSdkController.ts
Normal file
25
src/settings/controllers/RustCryptoSdkController.ts
Normal file
|
@ -0,0 +1,25 @@
|
|||
/*
|
||||
Copyright 2022 The Matrix.org Foundation C.I.C.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
import SettingController from "./SettingController";
|
||||
|
||||
export default class RustCryptoSdkController extends SettingController {
|
||||
public get settingDisabled(): boolean {
|
||||
// Currently this can only be changed via config.json. In future, we'll allow the user to *enable* this setting
|
||||
// via labs, which will migrate their existing device to the rust-sdk implementation.
|
||||
return true;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue