mirror of https://github.com/vector-im/riot-web
Remove `MatrixClient.getDehydratedDevice` call (#28254)
parent
3c8ac6fc49
commit
4a1f86f273
|
@ -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
|
||||||
|
|
|
@ -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 });
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue