8000 feat: add keyRingSize/discardFrameWhenCryptorNotReady to KeyProviderO… · baihua666/flutter-webrtc@66646b5 · GitHub
[go: up one dir, main page]

Skip to content

Commit 66646b5

Browse files
authored
feat: add keyRingSize/discardFrameWhenCryptorNotReady to KeyProviderOptions. (flutter-webrtc#1559)
* feat: add keyRingSize/discardFrameWhenCryptorNotReady to KeyProviderOptions. * win/linux. * release log
1 parent 17c2863 commit 66646b5

File tree

12 files changed

+37
-10
lines changed

12 files changed

+37
-10
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+
[0.10.2] - 2024-04-08
5+
6+
* [Native/Web] feat: add keyRingSize/discardFrameWhenCryptorNotReady to KeyProviderOptions.
7+
48
[0.10.1] - 2024-04-08
59

610
* [Web] fix renderer issue for web.

android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ android {
5252
}
5353

5454
dependencies {
55-
implementation 'io.github.webrtc-sdk:android:114.5735.08.1'
55+
implementation 'io.github.webrtc-sdk:android:114.5735.10'
5656
implementation 'com.github.davidliu:audioswitch:89582c47c9a04c62f90aa5e57251af4800a62c9a'
5757
implementation 'androidx.annotation:annotation:1.1.0'
5858
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

android/src/main/java/com/cloudwebrtc/webrtc/FlutterRTCFrameCryptor.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,9 @@ private void frameCryptorFactoryCreateKeyProvider(Map<String, Object> params, @N
297297
if(keyProviderOptions.containsKey("uncryptedMagicBytes")) {
298298
uncryptedMagicBytes = ( byte[]) keyProviderOptions.get("uncryptedMagicBytes");
299299
}
300-
FrameCryptorKeyProvider keyProvider = FrameCryptorFactory.createFrameCryptorKeyProvider(sharedKey, ratchetSalt, ratchetWindowSize, uncryptedMagicBytes, failureTolerance);
300+
int keyRingSize = (int) keyProviderOptions.get("keyRingSize");
301+
boolean discardFrameWhenCryptorNotReady = (boolean) keyProviderOptions.get("discardFrameWhenCryptorNotReady");
302+
FrameCryptorKeyProvider keyProvider = FrameCryptorFactory.createFrameCryptorKeyProvider(sharedKey, ratchetSalt, ratchetWindowSize, uncryptedMagicBytes, failureTolerance, keyRingSize, discardFrameWhenCryptorNotReady);
301303
ConstraintsMap paramsResult = new ConstraintsMap();
302304
keyProviders.put(keyProviderId, keyProvider);
303305
paramsResult.putString("keyProviderId", keyProviderId);

common/cpp/src/flutter_frame_cryptor.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,12 @@ void FlutterFrameCryptor::FrameCryptorFactoryCreateKeyProvider(
345345
auto failureTolerance = findInt(keyProviderOptions, "failureTolerance");
346346
options.failure_tolerance = failureTolerance;
347347

348+
auto keyRingSize = findInt(keyProviderOptions, "keyRingSize");
349+
options.key_ring_size = keyRingSize;
350+
351+
auto discardFrameWhenCryptorNotReady = findBoolean(keyProviderOptions, "discardFrameWhenCryptorNotReady");
352+
options.discard_frame_when_cryptor_not_ready = discardFrameWhenCryptorNotReady;
353+
348354
auto keyProvider = libwebrtc::KeyProvider::Create(&options);
349355
if (nullptr == keyProvider.get()) {
350356
result->Error("FrameCryptorFactoryCreateKeyProviderFailed",

common/darwin/Classes/FlutterRTCFrameCryptor.m

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -349,13 +349,19 @@ - (void)frameCryptorFactoryCreateKeyProvider:(nonnull NSDictionary*)constraints
349349
NSNumber* failureTolerance = keyProviderOptions[@"failureTolerance"];
350350

351351
FlutterStandardTypedData* uncryptedMagicBytes = keyProviderOptions[@"uncryptedMagicBytes"];
352+
353+
NSNumber* keyRingSize = keyProviderOptions[@"keyRingSize"];
354+
355+
NSNumber* discardFrameWhenCryptorNotReady = keyProviderOptions[@"discardFrameWhenCryptorNotReady"];
352356

353357
RTCFrameCryptorKeyProvider* keyProvider =
354358
[[RTCFrameCryptorKeyProvider alloc] initWithRatchetSalt:ratchetSalt.data
355359
ratchetWindowSize:[ratchetWindowSize intValue]
356360
sharedKeyMode:[sharedKey boolValue]
357361
uncryptedMagicBytes: uncryptedMagicBytes != nil ? uncryptedMagicBytes.data : nil
358-
failureTolerance:failureTolerance != nil ? [failureTolerance intValue] : -1];
362+
failureTolerance:failureTolerance != nil ? [failureTolerance intValue] : -1
363+
keyRingSize:keyRingSize != nil ? [keyRingSize intValue] : 0
364+
discardFrameWhenCryptorNotReady:discardFrameWhenCryptorNotReady != nil ? [discardFrameWhenCryptorNotReady boolValue] : NO];
359365
self.keyProviders[keyProviderId] = keyProvider;
360366
result(@{@"keyProviderId" : keyProviderId});
361367
}

ios/flutter_webrtc.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ A new flutter plugin project.
1515
s.source_files = 'Classes/**/*'
1616
s.public_header_files = 'Classes/**/*.h'
1717
s.dependency 'Flutter'
18-
s.dependency 'WebRTC-SDK', '114.5735.08'
18+
s.dependency 'WebRTC-SDK', '114.5735.09'
1919
s.ios.deployment_target = '12.0'
2020
s.static_framework = true
2121
end

macos/flutter_webrtc.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@ A new flutter plugin project.
1515
s.source_files = ['Classes/**/*']
1616

1717
s.dependency 'FlutterMacOS'
18-
s.dependency 'WebRTC-SDK', '114.5735.08'
18+
s.dependency 'WebRTC-SDK', '114.5735.09'
1919
s.osx.deployment_target = '10.13'
2020
end

pubspec.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
name: flutter_webrtc
22
description: Flutter WebRTC plugin for iOS/Android/Destkop/Web, based on GoogleWebRTC.
3-
version: 0.10.1
3+
version: 0.10.2
44
homepage: https://github.com/cloudwebrtc/flutter-webrtc
55
environment:
66
sdk: '>=3.3.0 <4.0.0'
77
flutter: '>=1.22.0'
88

99
dependencies:
1010
collection: ^1.17.0
11-
dart_webrtc: ^1.3.0
11+
dart_webrtc: ^1.3.1
1212
flutter:
1313
sdk: flutter
1414
path_provider: ^2.0.2
1515
web: ^0.5.1
16-
webrtc_interface: ^1.1.2
16+
webrtc_interface: ^1.2.0
1717

1818
dev_dependencies:
1919
flutter_test:

third_party/libwebrtc/include/rtc_frame_cryptor.h

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,31 @@ enum class Algorithm {
1414
kAesCbc,
1515
};
1616

17+
#define DEFAULT_KEYRING_SIZE 16
18+
#define MAX_KEYRING_SIZE 255
19+
1720
struct KeyProviderOptions {
1821
bool shared_key;
1922
vector<uint8_t> ratchet_salt;
2023
vector<uint8_t> uncrypted_magic_bytes;
2124
int ratchet_window_size;
2225
int failure_tolerance;
26+
// The size of the key ring. between 1 and 255.
27+
int key_ring_size;
28+
bool discard_frame_when_cryptor_not_ready;
2329
KeyProviderOptions()
2430
: shared_key(false),
2531
ratchet_salt(vector<uint8_t>()),
2632
ratchet_window_size(0),
27-
failure_tolerance(-1) {}
33+
failure_tolerance(-1),
34+
key_ring_size(DEFAULT_KEYRING_SIZE),
35+
discard_frame_when_cryptor_not_ready(false) {}
2836
KeyProviderOptions(KeyProviderOptions& copy)
2937
: shared_key(copy.shared_key),
3038
ratchet_salt(copy.ratchet_salt),
3139
ratchet_window_size(copy.ratchet_window_size),
32-
failure_tolerance(copy.failure_tolerance) {}
40+
failure_tolerance(copy.failure_tolerance),
41+
key_ring_size(copy.key_ring_size) {}
3342
};
3443

3544
/// Shared secret key for frame encryption.
Binary file not shown.
-1.02 KB
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)
0