Skip to content

Commit 5e000bc

Browse files
BillCarsonFrtoger5
authored andcommitted
refact: Call key transport, pass the target recipients to sendKey
1 parent f12cd97 commit 5e000bc

File tree

3 files changed

+9
-4
lines changed

3 files changed

+9
-4
lines changed

src/matrixrtc/EncryptionManager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ export class EncryptionManager implements IEncryptionManager {
287287

288288
try {
289289
this.statistics.counters.roomEventEncryptionKeysSent += 1;
290-
await this.transport.sendKey(encodeUnpaddedBase64(keyToSend), keyIndexToSend);
290+
await this.transport.sendKey(encodeUnpaddedBase64(keyToSend), keyIndexToSend, this.getMemberships());
291291
logger.debug(
292292
`Embedded-E2EE-LOG updateEncryptionKeyEvent participantId=${this.userId}:${this.deviceId} numKeys=${myKeys.length} currentKeyIndex=${this.currentEncryptionKeyIndex} keyIndexToSend=${keyIndexToSend}`,
293293
this.encryptionKeys,

src/matrixrtc/IKeyTransport.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,20 @@ limitations under the License.
1616

1717
import { type MatrixEvent } from "../models/event.ts";
1818
import { type Statistics } from "./EncryptionManager.ts";
19+
import { type CallMembership } from "./CallMembership.ts";
1920

2021
/**
2122
* Generic interface for the transport used to share room keys.
2223
* Keys can be shared using different transports, e.g. to-device messages or room messages.
2324
*/
2425
export interface IKeyTransport {
2526
/**
26-
* Sends the current user media key.
27+
* Sends the current user media key to the given members.
2728
* @param keyBase64Encoded
2829
* @param index
30+
* @param members - The participants that should get they key
2931
*/
30-
sendKey(keyBase64Encoded: string, index: number): Promise<void>;
32+
sendKey(keyBase64Encoded: string, index: number, members: CallMembership[]): Promise<void>;
3133

3234
/**
3335
* Takes an incoming event from the transport and extracts the key information.

src/matrixrtc/RoomKeyTransport.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import { logger, type Logger } from "../logger.ts";
2222
import { type IKeyTransport } from "./IKeyTransport.ts";
2323
import { type MatrixEvent } from "../models/event.ts";
2424
import { type Statistics } from "./EncryptionManager.ts";
25+
import { type CallMembership } from "./CallMembership.ts";
2526

2627
export class RoomKeyTransport implements IKeyTransport {
2728
private readonly prefixedLogger: Logger;
@@ -33,7 +34,9 @@ export class RoomKeyTransport implements IKeyTransport {
3334
this.prefixedLogger = logger.getChild(`[RTC: ${roomId} RoomKeyTransport]`);
3435
}
3536

36-
public async sendKey(keyBase64Encoded: string, index: number): Promise<void> {
37+
/** implements {@link IKeyTransport#sendKey} */
38+
public async sendKey(keyBase64Encoded: string, index: number, members: CallMembership[]): Promise<void> {
39+
// members not used in room transports as the keys are sent to all room members
3740
const content: EncryptionKeysEventContent = {
3841
keys: [
3942
{

0 commit comments

Comments
 (0)