You've already forked matrix-js-sdk
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:
@@ -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,
|
||||
|
@@ -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.
|
||||
|
@@ -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: [
|
||||
{
|
||||
|
Reference in New Issue
Block a user