Skip to content

Commit 7982c34

Browse files
committed
add more frame cryptor api.
1 parent b0ce589 commit 7982c34

File tree

4 files changed

+82
-2
lines changed

4 files changed

+82
-2
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
# Changelog
22

33
--------------------------------------------
4+
[1.1.2] - 2023-09-14
5+
6+
* Add more frame cryptor api.
7+
48
[1.1.2] - 2023-08-14
59

610
* Add async functions for get pc states.

lib/src/e2ee.worker/e2ee.worker.dart

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,18 @@ void main() async {
209209
}
210210
}
211211
break;
212+
case 'setSharedKey':
213+
{
214+
var key = Uint8List.fromList(base64Decode(msg['key'] as String));
215+
var keyIndex = msg['keyIndex'];
216+
if (keyProviderOptions.sharedKey) {
217+
for (var c in participantCryptors) {
218+
c.setKey(keyIndex, key);
219+
}
220+
return;
221+
}
222+
}
223+
break;
212224
case 'ratchetKey':
213225
{
214226
var keyIndex = msg['keyIndex'];
@@ -233,6 +245,17 @@ void main() async {
233245
}
234246
}
235247
break;
248+
case 'ratchetSharedKey':
249+
{
250+
var keyIndex = msg['keyIndex'];
251+
for (var c in participantCryptors) {
252+
var keySet = c.getKeySet(keyIndex);
253+
c.ratchetKey(keyIndex).then((_) async {
254+
await c.ratchet(keySet!.material, keyProviderOptions.ratchetSalt);
255+
});
256+
}
257+
}
258+
break;
236259
case 'setKeyIndex':
237260
{
238261
var keyIndex = msg['index'];
@@ -246,6 +269,16 @@ void main() async {
246269
}
247270
}
248271
break;
272+
case 'setSifTrailer':
273+
{
274+
var sifTrailer =
275+
Uint8List.fromList(base64Decode(msg['sifTrailer'] as String));
276+
keyProviderOptions.uncryptedMagicBytes = sifTrailer;
277+
for (var c in participantCryptors) {
278+
c.keyOptions.uncryptedMagicBytes = sifTrailer;
279+
}
280+
}
281+
break;
249282
case 'updateCodec':
250283
{
251284
var codec = msg['codec'] as String;

lib/src/frame_cryptor_impl.dart

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,49 @@ class KeyProviderImpl implements KeyProvider {
228228

229229
return _ratchetKeyCompleter!.future;
230230
}
231+
232+
@override
233+
Future<Uint8List> exportKey(
234+
{required String participantId, required int index}) {
235+
throw UnimplementedError('exportKey not supported for web');
236+
}
237+
238+
@override
239+
Future<Uint8List> exportSharedKey({int index = 0}) {
240+
throw UnimplementedError('exportSharedKey not supported for web');
241+
}
242+
243+
@override
244+
Future<Uint8List> ratchetSharedKey({int index = 0}) async {
245+
jsutil.callMethod(worker, 'postMessage', [
246+
jsutil.jsify({
247+
'msgType': 'ratchetSharedKey',
248+
'keyIndex': index,
249+
})
250+
]);
251+
return Uint8List(0);
252+
}
253+
254+
@override
255+
Future<void> setSharedKey({required Uint8List key, int index = 0}) async {
256+
jsutil.callMethod(worker, 'postMessage', [
257+
jsutil.jsify({
258+
'msgType': 'setSharedKey',
259+
'keyIndex': index,
260+
'key': base64Encode(key),
261+
})
262+
]);
263+
}
264+
265+
@override
266+
Future<void> setSifTrailer({required Uint8List trailer}) async {
267+
jsutil.callMethod(worker, 'postMessage', [
268+
jsutil.jsify({
269+
'msgType': 'setSifTrailer',
270+
'sifTrailer': base64Encode(trailer),
271+
})
272+
]);
273+
}
231274
}
232275

233276
class FrameCryptorFactoryImpl implements FrameCryptorFactory {

pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: dart_webrtc
22
description: Use the dart/js library to re-wrap the webrtc js interface of the browser, to adapted common browsers.
3-
version: 1.1.2
3+
version: 1.1.3
44
homepage: https://github.com/flutter-webrtc/dart-webrtc
55

66
environment:
@@ -10,7 +10,7 @@ dependencies:
1010
collection: ^1.17.1
1111
js: ^0.6.4
1212
platform_detect: ^2.0.7
13-
webrtc_interface: 1.1.1
13+
webrtc_interface: 1.1.2
1414

1515
dev_dependencies:
1616
build_runner: ^2.3.3

0 commit comments

Comments
 (0)