1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-08-06 12:02:40 +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 {
this.statistics.counters.roomEventEncryptionKeysSent += 1;
await this.transport.sendKey(encodeUnpaddedBase64(keyToSend), keyIndexToSend);
await this.transport.sendKey(encodeUnpaddedBase64(keyToSend), keyIndexToSend, this.getMemberships());
logger.debug(
`Embedded-E2EE-LOG updateEncryptionKeyEvent participantId=${this.userId}:${this.deviceId} numKeys=${myKeys.length} currentKeyIndex=${this.currentEncryptionKeyIndex} keyIndexToSend=${keyIndexToSend}`,
this.encryptionKeys,

View File

@@ -16,6 +16,7 @@ limitations under the License.
import { type MatrixEvent } from "../models/event.ts";
import { type Statistics } from "./EncryptionManager.ts";
import { type CallMembership } from "./CallMembership.ts";
/**
* Generic interface for the transport used to share room keys.
@@ -23,11 +24,12 @@ import { type Statistics } from "./EncryptionManager.ts";
*/
export interface IKeyTransport {
/**
* Sends the current user media key.
* Sends the current user media key to the given members.
* @param keyBase64Encoded
* @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.

View File

@@ -22,6 +22,7 @@ import { logger, type Logger } from "../logger.ts";
import { type IKeyTransport } from "./IKeyTransport.ts";
import { type MatrixEvent } from "../models/event.ts";
import { type Statistics } from "./EncryptionManager.ts";
import { type CallMembership } from "./CallMembership.ts";
export class RoomKeyTransport implements IKeyTransport {
private readonly prefixedLogger: Logger;
@@ -33,7 +34,9 @@ export class RoomKeyTransport implements IKeyTransport {
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 = {
keys: [
{