Remove `MatrixClient.getDehydratedDevice` call (#28254)

pull/28263/head
Florian Duros 2024-10-22 10:09:07 +02:00 committed by GitHub
parent 3c8ac6fc49
commit 4a1f86f273
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 3 additions and 30 deletions

View File

@ -101,18 +101,14 @@ export class SetupEncryptionStore extends EventEmitter {
this.keyInfo = keys[this.keyId]; 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 ownUserId = cli.getUserId()!;
const crypto = cli.getCrypto()!; const crypto = cli.getCrypto()!;
// do we have any other verified devices which are E2EE which we can verify against?
const userDevices: Iterable<Device> = const userDevices: Iterable<Device> =
(await crypto.getUserDeviceInfo([ownUserId])).get(ownUserId)?.values() ?? []; (await crypto.getUserDeviceInfo([ownUserId])).get(ownUserId)?.values() ?? [];
this.hasDevicesToVerifyAgainst = await asyncSome(userDevices, async (device) => { this.hasDevicesToVerifyAgainst = await asyncSome(userDevices, async (device) => {
// Ignore dehydrated devices. `dehydratedDevice` is set by the // Ignore dehydrated devices. MSC3814 proposes that devices
// implementation of MSC2697, whereas MSC3814 proposes that devices // should set a `dehydrated` flag in the device key.
// 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;
if (device.dehydrated) return false; if (device.dehydrated) return false;
// ignore devices without an identity key // ignore devices without an identity key

View File

@ -10,7 +10,6 @@ import { mocked, Mocked } from "jest-mock";
import { IBootstrapCrossSigningOpts } from "matrix-js-sdk/src/crypto"; import { IBootstrapCrossSigningOpts } from "matrix-js-sdk/src/crypto";
import { MatrixClient, Device } from "matrix-js-sdk/src/matrix"; import { MatrixClient, Device } from "matrix-js-sdk/src/matrix";
import { SecretStorageKeyDescriptionAesV1, ServerSideSecretStorage } from "matrix-js-sdk/src/secret-storage"; 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 { CryptoApi, DeviceVerificationStatus } from "matrix-js-sdk/src/crypto-api";
import { SdkContextClass } from "../../../src/contexts/SDKContext"; import { SdkContextClass } from "../../../src/contexts/SDKContext";
@ -97,28 +96,6 @@ describe("SetupEncryptionStore", () => {
expect(setupEncryptionStore.hasDevicesToVerifyAgainst).toBe(true); 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 () => { it("should ignore the MSC3812 dehydrated device", async () => {
mockSecretStorage.isStored.mockResolvedValue({ sskeyid: {} as SecretStorageKeyDescriptionAesV1 }); mockSecretStorage.isStored.mockResolvedValue({ sskeyid: {} as SecretStorageKeyDescriptionAesV1 });