diff --git a/src/DeviceListener.ts b/src/DeviceListener.ts index 574e321c51..4893910540 100644 --- a/src/DeviceListener.ts +++ b/src/DeviceListener.ts @@ -318,12 +318,6 @@ export default class DeviceListener { const cli = this.client; - // cross-signing support was added to Matrix in MSC1756, which landed in spec v1.1 - if (!(await cli.isVersionSupported("v1.1"))) { - logSpan.debug("cross-signing not supported"); - return; - } - const crypto = cli.getCrypto(); if (!crypto) { logSpan.debug("crypto not enabled"); diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx index 0365b4b583..cd975a7ef2 100644 --- a/src/components/structures/MatrixChat.tsx +++ b/src/components/structures/MatrixChat.tsx @@ -427,10 +427,7 @@ export default class MatrixChat extends React.PureComponent { } else { this.setStateForNewView({ view: Views.COMPLETE_SECURITY }); } - } else if ( - (await cli.doesServerSupportUnstableFeature("org.matrix.e2e_cross_signing")) && - !(await shouldSkipSetupEncryption(cli)) - ) { + } else if (!(await shouldSkipSetupEncryption(cli))) { // if cross-signing is not yet set up, do so now if possible. InitialCryptoSetupStore.sharedInstance().startInitialCryptoSetup( cli, diff --git a/src/components/viewmodels/right_panel/user_info/UserInfoHeaderVerificationViewModel.tsx b/src/components/viewmodels/right_panel/user_info/UserInfoHeaderVerificationViewModel.tsx index 401c536525..4b39d50353 100644 --- a/src/components/viewmodels/right_panel/user_info/UserInfoHeaderVerificationViewModel.tsx +++ b/src/components/viewmodels/right_panel/user_info/UserInfoHeaderVerificationViewModel.tsx @@ -29,16 +29,6 @@ export interface UserInfoVerificationSectionState { verifySelectedUser: () => Promise; } -const useHomeserverSupportsCrossSigning = (cli: MatrixClient): boolean => { - return useAsyncMemo( - async () => { - return cli.doesServerSupportUnstableFeature("org.matrix.e2e_cross_signing"); - }, - [cli], - false, - ); -}; - const useHasCrossSigningKeys = (cli: MatrixClient, member: User, canVerify: boolean): boolean | undefined => { return useAsyncMemo(async () => { if (!canVerify) return undefined; @@ -56,8 +46,6 @@ export const useUserInfoVerificationViewModel = ( ): UserInfoVerificationSectionState => { const cli = useContext(MatrixClientContext); - const homeserverSupportsCrossSigning = useHomeserverSupportsCrossSigning(cli); - const userTrust = useAsyncMemo( async () => cli.getCrypto()?.getUserVerificationStatus(member.userId), [member.userId], @@ -67,13 +55,7 @@ export const useUserInfoVerificationViewModel = ( const hasUserVerificationStatus = Boolean(userTrust); const isUserVerified = Boolean(userTrust?.isVerified()); const isMe = member.userId === cli.getUserId(); - const canVerify = - hasUserVerificationStatus && - homeserverSupportsCrossSigning && - !isUserVerified && - !isMe && - devices && - devices.length > 0; + const canVerify = hasUserVerificationStatus && !isUserVerified && !isMe && devices && devices.length > 0; const hasCrossSigningKeys = useHasCrossSigningKeys(cli, member as User, canVerify); const verifySelectedUser = (): Promise => verifyUser(cli, member as User); diff --git a/test/unit-tests/DeviceListener-test.ts b/test/unit-tests/DeviceListener-test.ts index e88c264063..d0f7a6c3d6 100644 --- a/test/unit-tests/DeviceListener-test.ts +++ b/test/unit-tests/DeviceListener-test.ts @@ -275,13 +275,6 @@ describe("DeviceListener", () => { }); describe("recheck", () => { - it("does nothing when cross signing feature is not supported", async () => { - mockClient!.isVersionSupported.mockResolvedValue(false); - await createAndStart(); - - expect(mockClient!.isVersionSupported).toHaveBeenCalledWith("v1.1"); - expect(mockCrypto!.isCrossSigningReady).not.toHaveBeenCalled(); - }); it("does nothing when crypto is not enabled", async () => { mockClient!.getCrypto.mockReturnValue(undefined); await createAndStart(); diff --git a/test/unit-tests/components/structures/MatrixChat-test.tsx b/test/unit-tests/components/structures/MatrixChat-test.tsx index c772f6b743..e7a6aea68a 100644 --- a/test/unit-tests/components/structures/MatrixChat-test.tsx +++ b/test/unit-tests/components/structures/MatrixChat-test.tsx @@ -554,8 +554,8 @@ describe("", () => { expect(defaultDispatcher.dispatch).toHaveBeenCalledWith({ action: "client_started" }), ); - // check we get to logged in view - await waitForSyncAndLoad(loginClient, true); + // set up keys screen is rendered + expect(screen.getByText("Setting up keys")).toBeInTheDocument(); }); it("should persist device language when available", async () => { @@ -1166,6 +1166,8 @@ describe("", () => { // Given force_verification is on (outer describe) // And we just logged in via OIDC (inner describe) + mocked(loginClient.getCrypto()!.userHasCrossSigningKeys).mockResolvedValue(true); + // When we load the page getComponent({ realQueryParams }); @@ -1340,22 +1342,8 @@ describe("", () => { expect(screen.getByRole("heading", { name: "Welcome Ernie" })).toBeInTheDocument(); }); - it("should go straight to logged in view when user does not have cross signing keys and server does not support cross signing", async () => { - loginClient.doesServerSupportUnstableFeature.mockResolvedValue(false); - - await getComponentAndLogin(false); - - expect(loginClient.doesServerSupportUnstableFeature).toHaveBeenCalledWith( - "org.matrix.e2e_cross_signing", - ); - - // logged in - await screen.findByLabelText("User menu"); - }); - describe("when server supports cross signing and user does not have cross signing setup", () => { beforeEach(() => { - loginClient.doesServerSupportUnstableFeature.mockResolvedValue(true); jest.spyOn(loginClient.getCrypto()!, "userHasCrossSigningKeys").mockResolvedValue(false); }); @@ -1400,8 +1388,6 @@ describe("", () => { }); it("should go to setup e2e screen", async () => { - loginClient.doesServerSupportUnstableFeature.mockResolvedValue(true); - await getComponentAndLogin(); expect(loginClient.getCrypto()!.userHasCrossSigningKeys).toHaveBeenCalled(); @@ -1424,9 +1410,7 @@ describe("", () => { expect(screen.getByText("Confirm your identity")).toBeInTheDocument(); }); - it("should setup e2e when server supports cross signing", async () => { - loginClient.doesServerSupportUnstableFeature.mockResolvedValue(true); - + it("should setup e2e", async () => { await getComponentAndLogin(); expect(loginClient.getCrypto()!.userHasCrossSigningKeys).toHaveBeenCalled(); @@ -1587,8 +1571,8 @@ describe("", () => { action: "will_start_client", }); - // logged in but waiting for sync screen - await screen.findByText("Logout"); + // set up keys screen is rendered + expect(await screen.findByText("Setting up keys")).toBeInTheDocument(); }); }); });