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 : }
|