Add hidden button for bootstrapping SSSS
This adds an testing button to the key backup panel which bootstraps the Secure Secret Storage system (and also cross-signing keys). Fixes https://github.com/vector-im/riot-web/issues/11212
This commit is contained in:
parent
c568c15186
commit
e6dea37693
2 changed files with 45 additions and 3 deletions
|
@ -20,6 +20,7 @@ import sdk from '../../../index';
|
||||||
import MatrixClientPeg from '../../../MatrixClientPeg';
|
import MatrixClientPeg from '../../../MatrixClientPeg';
|
||||||
import { _t } from '../../../languageHandler';
|
import { _t } from '../../../languageHandler';
|
||||||
import Modal from '../../../Modal';
|
import Modal from '../../../Modal';
|
||||||
|
import SettingsStore from '../../../../lib/settings/SettingsStore';
|
||||||
|
|
||||||
export default class KeyBackupPanel extends React.PureComponent {
|
export default class KeyBackupPanel extends React.PureComponent {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
|
@ -124,6 +125,27 @@ export default class KeyBackupPanel extends React.PureComponent {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_bootstrapSecureSecretStorage = async () => {
|
||||||
|
try {
|
||||||
|
const InteractiveAuthDialog = sdk.getComponent("dialogs.InteractiveAuthDialog");
|
||||||
|
await MatrixClientPeg.get().bootstrapSecretStorage({
|
||||||
|
doInteractiveAuthFlow: async (makeRequest) => {
|
||||||
|
const { finished } = Modal.createTrackedDialog(
|
||||||
|
'Cross-signing keys dialog', '', InteractiveAuthDialog,
|
||||||
|
{
|
||||||
|
title: _t("Send cross-signing keys to homeserver"),
|
||||||
|
matrixClient: MatrixClientPeg.get(),
|
||||||
|
makeRequest,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
await finished;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_deleteBackup = () => {
|
_deleteBackup = () => {
|
||||||
const QuestionDialog = sdk.getComponent('dialogs.QuestionDialog');
|
const QuestionDialog = sdk.getComponent('dialogs.QuestionDialog');
|
||||||
Modal.createTrackedDialog('Delete Backup', '', QuestionDialog, {
|
Modal.createTrackedDialog('Delete Backup', '', QuestionDialog, {
|
||||||
|
@ -298,6 +320,21 @@ export default class KeyBackupPanel extends React.PureComponent {
|
||||||
</div>
|
</div>
|
||||||
</div>;
|
</div>;
|
||||||
} else {
|
} else {
|
||||||
|
// This is a temporary button for testing SSSS. Initialising SSSS
|
||||||
|
// depends on cross-signing and is part of the same project, so we
|
||||||
|
// only show this mode when the cross-signing feature is enabled.
|
||||||
|
// TODO: Clean this up when removing the feature flag.
|
||||||
|
let bootstrapSecureSecretStorage;
|
||||||
|
if (SettingsStore.isFeatureEnabled("feature_cross_signing")) {
|
||||||
|
bootstrapSecureSecretStorage = (
|
||||||
|
<div className="mx_KeyBackupPanel_buttonRow">
|
||||||
|
<AccessibleButton kind="primary" onClick={this._bootstrapSecureSecretStorage}>
|
||||||
|
{_t("Bootstrap Secure Secret Storage (MSC1946)")}
|
||||||
|
</AccessibleButton>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return <div>
|
return <div>
|
||||||
<div>
|
<div>
|
||||||
<p>{_t(
|
<p>{_t(
|
||||||
|
@ -307,9 +344,12 @@ export default class KeyBackupPanel extends React.PureComponent {
|
||||||
<p>{encryptedMessageAreEncrypted}</p>
|
<p>{encryptedMessageAreEncrypted}</p>
|
||||||
<p>{_t("Back up your keys before signing out to avoid losing them.")}</p>
|
<p>{_t("Back up your keys before signing out to avoid losing them.")}</p>
|
||||||
</div>
|
</div>
|
||||||
|
<div className="mx_KeyBackupPanel_buttonRow">
|
||||||
<AccessibleButton kind="primary" onClick={this._startNewBackup}>
|
<AccessibleButton kind="primary" onClick={this._startNewBackup}>
|
||||||
{ _t("Start using Key Backup") }
|
{_t("Start using Key Backup")}
|
||||||
</AccessibleButton>
|
</AccessibleButton>
|
||||||
|
</div>
|
||||||
|
{bootstrapSecureSecretStorage}
|
||||||
</div>;
|
</div>;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -511,6 +511,7 @@
|
||||||
"Connecting to integrations server...": "Connecting to integrations server...",
|
"Connecting to integrations server...": "Connecting to integrations server...",
|
||||||
"Cannot connect to integrations server": "Cannot connect to integrations server",
|
"Cannot connect to integrations server": "Cannot connect to integrations server",
|
||||||
"The integrations server is offline or it cannot reach your homeserver.": "The integrations server is offline or it cannot reach your homeserver.",
|
"The integrations server is offline or it cannot reach your homeserver.": "The integrations server is offline or it cannot reach your homeserver.",
|
||||||
|
"Send cross-signing keys to homeserver": "Send cross-signing keys to homeserver",
|
||||||
"Delete Backup": "Delete Backup",
|
"Delete Backup": "Delete Backup",
|
||||||
"Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.",
|
"Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.",
|
||||||
"Encrypted messages are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.": "Encrypted messages are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.",
|
"Encrypted messages are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.": "Encrypted messages are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.",
|
||||||
|
@ -533,6 +534,7 @@
|
||||||
"This backup is trusted because it has been restored on this device": "This backup is trusted because it has been restored on this device",
|
"This backup is trusted because it has been restored on this device": "This backup is trusted because it has been restored on this device",
|
||||||
"Backup version: ": "Backup version: ",
|
"Backup version: ": "Backup version: ",
|
||||||
"Algorithm: ": "Algorithm: ",
|
"Algorithm: ": "Algorithm: ",
|
||||||
|
"Bootstrap Secure Secret Storage (MSC1946)": "Bootstrap Secure Secret Storage (MSC1946)",
|
||||||
"Your keys are <b>not being backed up from this device</b>.": "Your keys are <b>not being backed up from this device</b>.",
|
"Your keys are <b>not being backed up from this device</b>.": "Your keys are <b>not being backed up from this device</b>.",
|
||||||
"Back up your keys before signing out to avoid losing them.": "Back up your keys before signing out to avoid losing them.",
|
"Back up your keys before signing out to avoid losing them.": "Back up your keys before signing out to avoid losing them.",
|
||||||
"Start using Key Backup": "Start using Key Backup",
|
"Start using Key Backup": "Start using Key Backup",
|
||||||
|
|
Loading…
Reference in a new issue