Test for cross-signing homeserver support during login, toasts

This adds more checking of homeserver support for cross-signing at login and in
toasts.

Fixes https://github.com/vector-im/riot-web/issues/12228
This commit is contained in:
J. Ryan Stinnett 2020-03-12 18:03:18 +00:00
parent a808b05026
commit b5d532b8cd
3 changed files with 12 additions and 4 deletions

View file

@ -99,9 +99,13 @@ export default class DeviceListener {
} }
async _recheck() { async _recheck() {
if (!SettingsStore.isFeatureEnabled("feature_cross_signing")) return;
const cli = MatrixClientPeg.get(); const cli = MatrixClientPeg.get();
if (
!SettingsStore.isFeatureEnabled("feature_cross_signing") ||
!await cli.doesServerSupportUnstableFeature("org.matrix.e2e_cross_signing")
) return;
if (!cli.isCryptoEnabled()) return; if (!cli.isCryptoEnabled()) return;
if (!cli.getCrossSigningId()) { if (!cli.getCrossSigningId()) {
if (this._dismissedThisDeviceToast) { if (this._dismissedThisDeviceToast) {

View file

@ -1911,7 +1911,10 @@ export default createReactClass({
// secret storage. // secret storage.
SettingsStore.setFeatureEnabled("feature_cross_signing", true); SettingsStore.setFeatureEnabled("feature_cross_signing", true);
this.setStateForNewView({ view: VIEWS.COMPLETE_SECURITY }); this.setStateForNewView({ view: VIEWS.COMPLETE_SECURITY });
} else if (SettingsStore.isFeatureEnabled("feature_cross_signing")) { } else if (
SettingsStore.isFeatureEnabled("feature_cross_signing") &&
await cli.doesServerSupportUnstableFeature("org.matrix.e2e_cross_signing")
) {
// This will only work if the feature is set to 'enable' in the config, // This will only work if the feature is set to 'enable' in the config,
// since it's too early in the lifecycle for users to have turned the // since it's too early in the lifecycle for users to have turned the
// labs flag on. // labs flag on.

View file

@ -59,9 +59,10 @@ export default class CompleteSecurity extends React.Component {
phase: PHASE_BUSY, phase: PHASE_BUSY,
}); });
const cli = MatrixClientPeg.get(); const cli = MatrixClientPeg.get();
try {
const backupInfo = await cli.getKeyBackupVersion(); const backupInfo = await cli.getKeyBackupVersion();
this.setState({backupInfo}); this.setState({backupInfo});
try {
await accessSecretStorage(async () => { await accessSecretStorage(async () => {
await cli.checkOwnCrossSigningTrust(); await cli.checkOwnCrossSigningTrust();
if (backupInfo) await cli.restoreKeyBackupWithSecretStorage(backupInfo); if (backupInfo) await cli.restoreKeyBackupWithSecretStorage(backupInfo);