diff --git a/src/components/views/settings/CrossSigningPanel.tsx b/src/components/views/settings/CrossSigningPanel.tsx index 21e38a762ae..3fd67d6b5d2 100644 --- a/src/components/views/settings/CrossSigningPanel.tsx +++ b/src/components/views/settings/CrossSigningPanel.tsx @@ -25,6 +25,8 @@ import InteractiveAuthDialog from '../dialogs/InteractiveAuthDialog'; import ConfirmDestroyCrossSigningDialog from '../dialogs/security/ConfirmDestroyCrossSigningDialog'; import { replaceableComponent } from "../../../utils/replaceableComponent"; import { MatrixEvent } from 'matrix-js-sdk/src'; +import SetupEncryptionDialog from '../dialogs/security/SetupEncryptionDialog'; +import { accessSecretStorage } from '../../../SecurityManager'; interface IState { error?: Error; @@ -72,7 +74,16 @@ export default class CrossSigningPanel extends React.PureComponent<{}, IState> { }; private onBootstrapClick = () => { - this.bootstrapCrossSigning({ forceReset: false }); + if (this.state.crossSigningPrivateKeysInStorage) { + Modal.createTrackedDialog( + "Verify session", "Verify session", SetupEncryptionDialog, + {}, null, /* priority = */ false, /* static = */ true, + ); + } else { + // Trigger the flow to set up secure backup, which is what this will do when in + // the appropriate state. + accessSecretStorage(); + } }; private onStatusChanged = () => { @@ -176,10 +187,14 @@ export default class CrossSigningPanel extends React.PureComponent<{}, IState> { summarisedStatus =
{ _t( "Your homeserver does not support cross-signing.", ) }
; - } else if (crossSigningReady) { + } else if (crossSigningReady && crossSigningPrivateKeysInStorage) { summarisedStatus =✅ { _t( "Cross-signing is ready for use.", ) }
; + } else if (crossSigningReady && !crossSigningPrivateKeysInStorage) { + summarisedStatus =⚠️ { _t( + "Cross-signing is ready but keys are not backed up.", + ) }
; } else if (crossSigningPrivateKeysInStorage) { summarisedStatus ={ _t(
"Your account has a cross-signing identity in secret storage, " +
@@ -210,9 +225,13 @@ export default class CrossSigningPanel extends React.PureComponent<{}, IState> {
// TODO: determine how better to expose this to users in addition to prompts at login/toast
if (!keysExistEverywhere && homeserverSupportsCrossSigning) {
+ let buttonCaption = _t("Set up Secure Backup");
+ if (crossSigningPrivateKeysInStorage) {
+ buttonCaption = _t("Verify this session");
+ }
actions.push(