From 4563a11854fef1e032dbc479ea4f7ca4bdd4dd74 Mon Sep 17 00:00:00 2001 From: cloudwebrtc Date: Tue, 9 Sep 2025 15:39:03 +0800 Subject: [PATCH] feat: Add data packet cryptor interface. --- CHANGELOG.md | 4 ++++ lib/src/data_packet_cryptor.dart | 37 ++++++++++++++++++++++++++++++++ lib/webrtc_interface.dart | 1 + pubspec.yaml | 2 +- 4 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 lib/src/data_packet_cryptor.dart diff --git a/CHANGELOG.md b/CHANGELOG.md index f3a5a8f..70b1e33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ # Changelog -------------------------------------------- +[1.3.0] - 2025-09-09 + +* Data packet cryptor interface. + [1.2.3] - 2025-04-29 * Media recording changes (#31). diff --git a/lib/src/data_packet_cryptor.dart b/lib/src/data_packet_cryptor.dart new file mode 100644 index 0000000..95b6cbf --- /dev/null +++ b/lib/src/data_packet_cryptor.dart @@ -0,0 +1,37 @@ +import 'dart:typed_data'; + +import 'frame_cryptor.dart' show Algorithm, KeyProvider; + +class EncryptedPacket { + EncryptedPacket({ + required this.data, + required this.keyIndex, + required this.iv, + }); + + Uint8List data; + int keyIndex; + Uint8List iv; +} + +abstract class DataPacketCryptor { + Future encrypt({ + required String participantId, + required int keyIndex, + required Uint8List data, + }); + + Future decrypt({ + required String participantId, + required EncryptedPacket encryptedPacket, + }); + + Future dispose(); +} + +abstract class DataPacketCryptorFactory { + Future createDataPacketCryptor({ + required Algorithm algorithm, + required KeyProvider keyProvider, + }); +} diff --git a/lib/webrtc_interface.dart b/lib/webrtc_interface.dart index 0f90fca..91985cd 100644 --- a/lib/webrtc_interface.dart +++ b/lib/webrtc_interface.dart @@ -1,5 +1,6 @@ library webrtc_interface; +export 'src/data_packet_cryptor.dart'; export 'src/enums.dart'; export 'src/factory.dart'; export 'src/frame_cryptor.dart'; diff --git a/pubspec.yaml b/pubspec.yaml index ced39c5..9de4454 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: webrtc_interface description: WebRTC Interface for Dart-Web/Flutter. -version: 1.2.3 +version: 1.3.0 homepage: https://flutter-webrtc.org environment: