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