@@ -80,8 +80,8 @@ export class EncryptionManager implements IEncryptionManager {
80
80
// if it looks like a membership has been updated.
81
81
private lastMembershipFingerprints : Set < string > | undefined ;
82
82
83
- private currentEncryptionKeyIndex = - 1 ;
84
-
83
+ private mediaTrailerKeyIndexInUse = - 1 ;
84
+ private latestGeneratedKeyIndex = - 1 ;
85
85
private joinConfig : EncryptionConfig | undefined ;
86
86
87
87
public constructor (
@@ -254,28 +254,29 @@ export class EncryptionManager implements IEncryptionManager {
254
254
255
255
if ( ! this . joined ) return ;
256
256
257
- logger . info ( `Sending encryption keys event. indexToSend=${ indexToSend } ` ) ;
258
-
259
257
const myKeys = this . getKeysForParticipant ( this . userId , this . deviceId ) ;
260
258
261
259
if ( ! myKeys ) {
262
260
logger . warn ( "Tried to send encryption keys event but no keys found!" ) ;
263
261
return ;
264
262
}
265
263
266
- if ( typeof indexToSend !== "number" && this . currentEncryptionKeyIndex === - 1 ) {
264
+ if ( typeof indexToSend !== "number" && this . latestGeneratedKeyIndex === - 1 ) {
267
265
logger . warn ( "Tried to send encryption keys event but no current key index found!" ) ;
268
266
return ;
269
267
}
270
268
271
- const keyIndexToSend = indexToSend ?? this . currentEncryptionKeyIndex ;
269
+ const keyIndexToSend = indexToSend ?? this . latestGeneratedKeyIndex ;
270
+ logger . info (
271
+ `Try sending encryption keys event. keyIndexToSend=${ keyIndexToSend } (method parameter: ${ indexToSend } )` ,
272
+ ) ;
272
273
const keyToSend = myKeys [ keyIndexToSend ] ;
273
274
274
275
try {
275
276
this . statistics . counters . roomEventEncryptionKeysSent += 1 ;
276
277
await this . transport . sendKey ( encodeUnpaddedBase64 ( keyToSend ) , keyIndexToSend , this . getMemberships ( ) ) ;
277
278
logger . debug (
278
- `Embedded-E2EE-LOG updateEncryptionKeyEvent participantId=${ this . userId } :${ this . deviceId } numKeys=${ myKeys . length } currentKeyIndex=${ this . currentEncryptionKeyIndex } keyIndexToSend=${ keyIndexToSend } ` ,
279
+ `sendEncryptionKeysEvent participantId=${ this . userId } :${ this . deviceId } numKeys=${ myKeys . length } currentKeyIndex=${ this . latestGeneratedKeyIndex } keyIndexToSend=${ keyIndexToSend } ` ,
279
280
this . encryptionKeys ,
280
281
) ;
281
282
} catch ( error ) {
@@ -290,6 +291,7 @@ export class EncryptionManager implements IEncryptionManager {
290
291
} ;
291
292
292
293
public onNewKeyReceived : KeyTransportEventListener = ( userId , deviceId , keyBase64Encoded , index , timestamp ) => {
294
+ logger . debug ( `Received key over key transport ${ userId } :${ deviceId } at index ${ index } ` ) ;
293
295
this . setEncryptionKey ( userId , deviceId , index , keyBase64Encoded , timestamp ) ;
294
296
} ;
295
297
@@ -302,12 +304,12 @@ export class EncryptionManager implements IEncryptionManager {
302
304
}
303
305
304
306
private getNewEncryptionKeyIndex ( ) : number {
305
- if ( this . currentEncryptionKeyIndex === - 1 ) {
307
+ if ( this . latestGeneratedKeyIndex === - 1 ) {
306
308
return 0 ;
307
309
}
308
310
309
311
// maximum key index is 255
310
- return ( this . currentEncryptionKeyIndex + 1 ) % 256 ;
312
+ return ( this . latestGeneratedKeyIndex + 1 ) % 256 ;
311
313
}
312
314
313
315
/**
@@ -357,6 +359,7 @@ export class EncryptionManager implements IEncryptionManager {
357
359
}
358
360
}
359
361
362
+ this . latestGeneratedKeyIndex = encryptionKeyIndex ;
360
363
participantKeys [ encryptionKeyIndex ] = {
361
364
key : keyBin ,
362
365
timestamp,
@@ -365,18 +368,18 @@ export class EncryptionManager implements IEncryptionManager {
365
368
if ( delayBeforeUse ) {
366
369
const useKeyTimeout = setTimeout ( ( ) => {
367
370
this . setNewKeyTimeouts . delete ( useKeyTimeout ) ;
368
- logger . info ( `Delayed-emitting key changed event for ${ participantId } idx ${ encryptionKeyIndex } ` ) ;
371
+ logger . info ( `Delayed-emitting key changed event for ${ participantId } index ${ encryptionKeyIndex } ` ) ;
369
372
if ( userId === this . userId && deviceId === this . deviceId ) {
370
- this . currentEncryptionKeyIndex = encryptionKeyIndex ;
373
+ this . mediaTrailerKeyIndexInUse = encryptionKeyIndex ;
371
374
}
372
- this . onEncryptionKeysChanged ( keyBin , encryptionKeyIndex , participantId ) ;
375
+ this . onEncryptionKeysChanged ( keyBin , this . mediaTrailerKeyIndexInUse , participantId ) ;
373
376
} , this . useKeyDelay ) ;
374
377
this . setNewKeyTimeouts . add ( useKeyTimeout ) ;
375
378
} else {
376
379
if ( userId === this . userId && deviceId === this . deviceId ) {
377
- this . currentEncryptionKeyIndex = encryptionKeyIndex ;
380
+ this . mediaTrailerKeyIndexInUse = encryptionKeyIndex ;
378
381
}
379
- this . onEncryptionKeysChanged ( keyBin , encryptionKeyIndex , participantId ) ;
382
+ this . onEncryptionKeysChanged ( keyBin , this . mediaTrailerKeyIndexInUse , participantId ) ;
380
383
}
381
384
}
382
385
0 commit comments