From 2c7247713a846258210f8904937cd78ce6d682a0 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 22 Oct 2024 14:58:20 +0100 Subject: [PATCH] Enable key backup by default When we set up cross signing, so the key backup key will be stored locally along with the cross signing keys until the user sets up recovery (4s). This will mean that a user can restore their backup if they log in on a new device as long as they verify with the one they registered on. --- src/components/structures/auth/E2eSetup.tsx | 4 ++-- ...gningDialog.tsx => InitialCryptoSetup.tsx} | 24 ++++++++++++------- 2 files changed, 17 insertions(+), 11 deletions(-) rename src/components/views/dialogs/security/{CreateCrossSigningDialog.tsx => InitialCryptoSetup.tsx} (79%) diff --git a/src/components/structures/auth/E2eSetup.tsx b/src/components/structures/auth/E2eSetup.tsx index 80a135fe19..d2fb046fe7 100644 --- a/src/components/structures/auth/E2eSetup.tsx +++ b/src/components/structures/auth/E2eSetup.tsx @@ -11,7 +11,7 @@ import { MatrixClient } from "matrix-js-sdk/src/matrix"; import AuthPage from "../../views/auth/AuthPage"; import CompleteSecurityBody from "../../views/auth/CompleteSecurityBody"; -import CreateCrossSigningDialog from "../../views/dialogs/security/CreateCrossSigningDialog"; +import InitialCryptoSetup from "../../views/dialogs/security/InitialCryptoSetup"; interface IProps { matrixClient: MatrixClient; @@ -25,7 +25,7 @@ export default class E2eSetup extends React.Component { return ( - = ({ matrixClient, accountPassword, tokenLogin, onFinished }) => { +const InitialCryptoSetup: React.FC = ({ matrixClient, accountPassword, tokenLogin, onFinished }) => { const [error, setError] = useState(false); - const bootstrapCrossSigning = useCallback(async () => { + const doSetup = useCallback(async () => { const cryptoApi = matrixClient.getCrypto(); if (!cryptoApi) return; @@ -40,6 +40,12 @@ const CreateCrossSigningDialog: React.FC = ({ matrixClient, accountPasswo try { await createCrossSigning(matrixClient, tokenLogin, accountPassword); + + const backupInfo = await matrixClient.getKeyBackupVersion(); + if (backupInfo === null) { + await cryptoApi.resetKeyBackup(); + } + onFinished(true); } catch (e) { if (tokenLogin) { @@ -58,8 +64,8 @@ const CreateCrossSigningDialog: React.FC = ({ matrixClient, accountPasswo }, [onFinished]); useEffect(() => { - bootstrapCrossSigning(); - }, [bootstrapCrossSigning]); + doSetup(); + }, [doSetup]); let content; if (error) { @@ -69,7 +75,7 @@ const CreateCrossSigningDialog: React.FC = ({ matrixClient, accountPasswo
@@ -96,4 +102,4 @@ const CreateCrossSigningDialog: React.FC = ({ matrixClient, accountPasswo ); }; -export default CreateCrossSigningDialog; +export default InitialCryptoSetup;