Skip to content

Commit

Permalink
Remove MatrixClient.getDehydratedDevice call (#28254)
Browse files Browse the repository at this point in the history
  • Loading branch information
florianduros authored Oct 22, 2024
1 parent 3c8ac6f commit 4a1f86f
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 30 deletions.
10 changes: 3 additions & 7 deletions src/stores/SetupEncryptionStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,18 +101,14 @@ export class SetupEncryptionStore extends EventEmitter {
this.keyInfo = keys[this.keyId];
}

// do we have any other verified devices which are E2EE which we can verify against?
const dehydratedDevice = await cli.getDehydratedDevice();
const ownUserId = cli.getUserId()!;
const crypto = cli.getCrypto()!;
// do we have any other verified devices which are E2EE which we can verify against?
const userDevices: Iterable<Device> =
(await crypto.getUserDeviceInfo([ownUserId])).get(ownUserId)?.values() ?? [];
this.hasDevicesToVerifyAgainst = await asyncSome(userDevices, async (device) => {
// Ignore dehydrated devices. `dehydratedDevice` is set by the
// implementation of MSC2697, whereas MSC3814 proposes that devices
// should set a `dehydrated` flag in the device key. We ignore
// both types of dehydrated devices.
if (dehydratedDevice && device.deviceId == dehydratedDevice?.device_id) return false;
// Ignore dehydrated devices. MSC3814 proposes that devices
// should set a `dehydrated` flag in the device key.
if (device.dehydrated) return false;

// ignore devices without an identity key
Expand Down
23 changes: 0 additions & 23 deletions test/unit-tests/stores/SetupEncryptionStore-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import { mocked, Mocked } from "jest-mock";
import { IBootstrapCrossSigningOpts } from "matrix-js-sdk/src/crypto";
import { MatrixClient, Device } from "matrix-js-sdk/src/matrix";
import { SecretStorageKeyDescriptionAesV1, ServerSideSecretStorage } from "matrix-js-sdk/src/secret-storage";
import { IDehydratedDevice } from "matrix-js-sdk/src/crypto/dehydration";
import { CryptoApi, DeviceVerificationStatus } from "matrix-js-sdk/src/crypto-api";

import { SdkContextClass } from "../../../src/contexts/SDKContext";
Expand Down Expand Up @@ -97,28 +96,6 @@ describe("SetupEncryptionStore", () => {
expect(setupEncryptionStore.hasDevicesToVerifyAgainst).toBe(true);
});

it("should ignore the MSC2697 dehydrated device", async () => {
mockSecretStorage.isStored.mockResolvedValue({ sskeyid: {} as SecretStorageKeyDescriptionAesV1 });

client.getDehydratedDevice.mockResolvedValue({ device_id: "dehydrated" } as IDehydratedDevice);

const fakeDevice = new Device({
deviceId: "dehydrated",
userId: "",
algorithms: [],
keys: new Map([["curve25519:dehydrated", "identityKey"]]),
});
mockCrypto.getUserDeviceInfo.mockResolvedValue(
new Map([[client.getSafeUserId(), new Map([[fakeDevice.deviceId, fakeDevice]])]]),
);

setupEncryptionStore.start();
await emitPromise(setupEncryptionStore, "update");

expect(setupEncryptionStore.hasDevicesToVerifyAgainst).toBe(false);
expect(mockCrypto.getDeviceVerificationStatus).not.toHaveBeenCalled();
});

it("should ignore the MSC3812 dehydrated device", async () => {
mockSecretStorage.isStored.mockResolvedValue({ sskeyid: {} as SecretStorageKeyDescriptionAesV1 });

Expand Down

0 comments on commit 4a1f86f

Please sign in to comment.