1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-08-09 10:22:46 +03:00

refact: Call key transport, pass the target recipients to sendKey

This commit is contained in:
Valere
2025-04-01 12:00:55 +02:00
committed by Timo
parent f12cd97e31
commit 5e000bc0f6
3 changed files with 9 additions and 4 deletions

View File

@@ -287,7 +287,7 @@ export class EncryptionManager implements IEncryptionManager {
try { try {
this.statistics.counters.roomEventEncryptionKeysSent += 1; this.statistics.counters.roomEventEncryptionKeysSent += 1;
await this.transport.sendKey(encodeUnpaddedBase64(keyToSend), keyIndexToSend); await this.transport.sendKey(encodeUnpaddedBase64(keyToSend), keyIndexToSend, this.getMemberships());
logger.debug( logger.debug(
`Embedded-E2EE-LOG updateEncryptionKeyEvent participantId=${this.userId}:${this.deviceId} numKeys=${myKeys.length} currentKeyIndex=${this.currentEncryptionKeyIndex} keyIndexToSend=${keyIndexToSend}`, `Embedded-E2EE-LOG updateEncryptionKeyEvent participantId=${this.userId}:${this.deviceId} numKeys=${myKeys.length} currentKeyIndex=${this.currentEncryptionKeyIndex} keyIndexToSend=${keyIndexToSend}`,
this.encryptionKeys, this.encryptionKeys,

View File

@@ -16,6 +16,7 @@ limitations under the License.
import { type MatrixEvent } from "../models/event.ts"; import { type MatrixEvent } from "../models/event.ts";
import { type Statistics } from "./EncryptionManager.ts"; import { type Statistics } from "./EncryptionManager.ts";
import { type CallMembership } from "./CallMembership.ts";
/** /**
* Generic interface for the transport used to share room keys. * Generic interface for the transport used to share room keys.
@@ -23,11 +24,12 @@ import { type Statistics } from "./EncryptionManager.ts";
*/ */
export interface IKeyTransport { export interface IKeyTransport {
/** /**
* Sends the current user media key. * Sends the current user media key to the given members.
* @param keyBase64Encoded * @param keyBase64Encoded
* @param index * @param index
* @param members - The participants that should get they key
*/ */
sendKey(keyBase64Encoded: string, index: number): Promise<void>; sendKey(keyBase64Encoded: string, index: number, members: CallMembership[]): Promise<void>;
/** /**
* Takes an incoming event from the transport and extracts the key information. * Takes an incoming event from the transport and extracts the key information.

View File

@@ -22,6 +22,7 @@ import { logger, type Logger } from "../logger.ts";
import { type IKeyTransport } from "./IKeyTransport.ts"; import { type IKeyTransport } from "./IKeyTransport.ts";
import { type MatrixEvent } from "../models/event.ts"; import { type MatrixEvent } from "../models/event.ts";
import { type Statistics } from "./EncryptionManager.ts"; import { type Statistics } from "./EncryptionManager.ts";
import { type CallMembership } from "./CallMembership.ts";
export class RoomKeyTransport implements IKeyTransport { export class RoomKeyTransport implements IKeyTransport {
private readonly prefixedLogger: Logger; private readonly prefixedLogger: Logger;
@@ -33,7 +34,9 @@ export class RoomKeyTransport implements IKeyTransport {
this.prefixedLogger = logger.getChild(`[RTC: ${roomId} RoomKeyTransport]`); this.prefixedLogger = logger.getChild(`[RTC: ${roomId} RoomKeyTransport]`);
} }
public async sendKey(keyBase64Encoded: string, index: number): Promise<void> { /** implements {@link IKeyTransport#sendKey} */
public async sendKey(keyBase64Encoded: string, index: number, members: CallMembership[]): Promise<void> {
// members not used in room transports as the keys are sent to all room members
const content: EncryptionKeysEventContent = { const content: EncryptionKeysEventContent = {
keys: [ keys: [
{ {