Line data Source code
1 : import 'dart:typed_data'; 2 : 3 : import 'package:matrix/matrix.dart'; 4 : 5 : enum E2EEKeyMode { 6 : kNone, 7 : kSharedKey, 8 : kPerParticipant, 9 : } 10 : 11 : abstract class EncryptionKeyProvider { 12 : Future<void> onSetEncryptionKey( 13 : CallParticipant participant, 14 : Uint8List key, 15 : int index, 16 : ); 17 : 18 : Future<Uint8List> onRatchetKey(CallParticipant participant, int index); 19 : 20 : Future<Uint8List> onExportKey(CallParticipant participant, int index); 21 : } 22 : 23 : class EncryptionKeyEntry { 24 : final int index; 25 : final String key; 26 0 : EncryptionKeyEntry(this.index, this.key); 27 : 28 0 : factory EncryptionKeyEntry.fromJson(Map<String, dynamic> json) => 29 0 : EncryptionKeyEntry( 30 0 : json['index'] as int, 31 0 : json['key'] as String, 32 : ); 33 : 34 0 : Map<String, dynamic> toJson() => { 35 0 : 'index': index, 36 0 : 'key': key, 37 : }; 38 : } 39 : 40 : class EncryptionKeysEventContent { 41 : // Get the participant info from todevice message params 42 : final List<EncryptionKeyEntry> keys; 43 : final String callId; 44 0 : EncryptionKeysEventContent(this.keys, this.callId); 45 : 46 0 : factory EncryptionKeysEventContent.fromJson(Map<String, dynamic> json) => 47 0 : EncryptionKeysEventContent( 48 0 : (json['keys'] as List<dynamic>) 49 0 : .map( 50 0 : (e) => EncryptionKeyEntry.fromJson(e as Map<String, dynamic>), 51 : ) 52 0 : .toList(), 53 0 : json['call_id'] as String, 54 : ); 55 : 56 0 : Map<String, dynamic> toJson() => { 57 0 : 'keys': keys.map((e) => e.toJson()).toList(), 58 0 : 'call_id': callId, 59 : }; 60 : }