From 67dd929951ee4c60052d949b421f6fa54d060528 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Tue, 26 Oct 2021 11:14:46 +0200 Subject: [PATCH] put key session check in method --- src/matrix/e2ee/megolm/Decryption.ts | 2 +- src/matrix/e2ee/megolm/decryption/RoomKey.ts | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/matrix/e2ee/megolm/Decryption.ts b/src/matrix/e2ee/megolm/Decryption.ts index cc577f3d..842d423d 100644 --- a/src/matrix/e2ee/megolm/Decryption.ts +++ b/src/matrix/e2ee/megolm/Decryption.ts @@ -109,7 +109,7 @@ export class Decryption { private async getRoomKey(roomId: string, senderKey: string, sessionId: string, newKeys: IncomingRoomKey[] | undefined, txn: Transaction): Promise { if (newKeys) { - const key = newKeys.find(k => k.roomId === roomId && k.senderKey === senderKey && k.sessionId === sessionId); + const key = newKeys.find(k => k.isForSession(roomId, senderKey, sessionId)); if (key && await key.checkBetterThanKeyInStorage(this.keyLoader, txn)) { return key; } diff --git a/src/matrix/e2ee/megolm/decryption/RoomKey.ts b/src/matrix/e2ee/megolm/decryption/RoomKey.ts index ad1cd8a0..81f1a9be 100644 --- a/src/matrix/e2ee/megolm/decryption/RoomKey.ts +++ b/src/matrix/e2ee/megolm/decryption/RoomKey.ts @@ -22,6 +22,10 @@ import type {KeyLoader, OlmInboundGroupSession} from "./KeyLoader"; export abstract class RoomKey { private _isBetter: boolean | undefined; + isForSession(roomId: string, senderKey: string, sessionId: string) { + return this.roomId === roomId && this.senderKey === senderKey && this.sessionId === sessionId; + } + abstract get roomId(): string; abstract get senderKey(): string; abstract get sessionId(): string;