Make ECDSA default for RTCPeerConnection
BUG=
Review URL: https://codereview.webrtc.org/1649533002
Cr-Commit-Position: refs/heads/master@{#11409}
diff --git a/webrtc/api/api_tests.gyp b/webrtc/api/api_tests.gyp
index 2c0d684..cdb23fb 100644
--- a/webrtc/api/api_tests.gyp
+++ b/webrtc/api/api_tests.gyp
@@ -12,7 +12,7 @@
['OS=="ios"', {
'targets': [
{
- 'target_name': 'rtc_api_objc_test',
+ 'target_name': 'rtc_api_objc_tests',
'type': 'executable',
'dependencies': [
'<(webrtc_root)/api/api.gyp:rtc_api_objc',
diff --git a/webrtc/api/objc/RTCConfiguration+Private.h b/webrtc/api/objc/RTCConfiguration+Private.h
index 5936ee2..e14f92b 100644
--- a/webrtc/api/objc/RTCConfiguration+Private.h
+++ b/webrtc/api/objc/RTCConfiguration+Private.h
@@ -23,9 +23,6 @@
@property(nonatomic, readonly)
webrtc::PeerConnectionInterface::RTCConfiguration nativeConfiguration;
-- (instancetype)initWithNativeConfiguration:
- (webrtc::PeerConnectionInterface::RTCConfiguration)nativeConfiguration;
-
+ (webrtc::PeerConnectionInterface::IceTransportsType)
nativeTransportsTypeForTransportPolicy:(RTCIceTransportPolicy)policy;
diff --git a/webrtc/api/objc/RTCConfiguration.h b/webrtc/api/objc/RTCConfiguration.h
index f97daf6..144c8d3 100644
--- a/webrtc/api/objc/RTCConfiguration.h
+++ b/webrtc/api/objc/RTCConfiguration.h
@@ -42,6 +42,12 @@
RTCTcpCandidatePolicyDisabled
};
+/** Represents the encryption key type. */
+typedef NS_ENUM(NSInteger, RTCEncryptionKeyType) {
+ RTCEncryptionKeyTypeRSA,
+ RTCEncryptionKeyTypeECDSA,
+};
+
NS_ASSUME_NONNULL_BEGIN
@interface RTCConfiguration : NSObject
@@ -63,17 +69,10 @@
@property(nonatomic, assign) int iceConnectionReceivingTimeout;
@property(nonatomic, assign) int iceBackupCandidatePairPingInterval;
-- (instancetype)init NS_DESIGNATED_INITIALIZER;
+/** Key type used to generate SSL identity. Default is ECDSA. */
+@property(nonatomic, assign) RTCEncryptionKeyType keyType;
-- (instancetype)initWithIceServers:
- (nullable NSArray<RTCIceServer *> *)iceServers
- iceTransportPolicy:(RTCIceTransportPolicy)iceTransportPolicy
- bundlePolicy:(RTCBundlePolicy)bundlePolicy
- rtcpMuxPolicy:(RTCRtcpMuxPolicy)rtcpMuxPolicy
- tcpCandidatePolicy:(RTCTcpCandidatePolicy)tcpCandidatePolicy
- audioJitterBufferMaxPackets:(int)audioJitterBufferMaxPackets
- iceConnectionReceivingTimeout:(int)iceConnectionReceivingTimeout
-iceBackupCandidatePairPingInterval:(int)iceBackupCandidatePairPingInterval;
+- (instancetype)init NS_DESIGNATED_INITIALIZER;
@end
diff --git a/webrtc/api/objc/RTCConfiguration.mm b/webrtc/api/objc/RTCConfiguration.mm
index ec59ca2..2c39118 100644
--- a/webrtc/api/objc/RTCConfiguration.mm
+++ b/webrtc/api/objc/RTCConfiguration.mm
@@ -10,8 +10,11 @@
#import "RTCConfiguration.h"
+#include "webrtc/base/sslidentity.h"
+
#import "webrtc/api/objc/RTCConfiguration+Private.h"
#import "webrtc/api/objc/RTCIceServer+Private.h"
+#import "webrtc/base/objc/RTCLogging.h"
@implementation RTCConfiguration
@@ -24,6 +27,7 @@
@synthesize iceConnectionReceivingTimeout = _iceConnectionReceivingTimeout;
@synthesize iceBackupCandidatePairPingInterval =
_iceBackupCandidatePairPingInterval;
+@synthesize keyType = _keyType;
- (instancetype)init {
if (self = [super init]) {
@@ -42,29 +46,7 @@
_iceConnectionReceivingTimeout = config.ice_connection_receiving_timeout;
_iceBackupCandidatePairPingInterval =
config.ice_backup_candidate_pair_ping_interval;
- }
- return self;
-}
-
-- (instancetype)initWithIceServers:(NSArray<RTCIceServer *> *)iceServers
- iceTransportPolicy:(RTCIceTransportPolicy)iceTransportPolicy
- bundlePolicy:(RTCBundlePolicy)bundlePolicy
- rtcpMuxPolicy:(RTCRtcpMuxPolicy)rtcpMuxPolicy
- tcpCandidatePolicy:(RTCTcpCandidatePolicy)tcpCandidatePolicy
- audioJitterBufferMaxPackets:(int)audioJitterBufferMaxPackets
- iceConnectionReceivingTimeout:(int)iceConnectionReceivingTimeout
- iceBackupCandidatePairPingInterval:(int)iceBackupCandidatePairPingInterval {
- if (self = [self init]) {
- if (iceServers) {
- _iceServers = [iceServers copy];
- }
- _iceTransportPolicy = iceTransportPolicy;
- _bundlePolicy = bundlePolicy;
- _rtcpMuxPolicy = rtcpMuxPolicy;
- _tcpCandidatePolicy = tcpCandidatePolicy;
- _audioJitterBufferMaxPackets = audioJitterBufferMaxPackets;
- _iceConnectionReceivingTimeout = iceConnectionReceivingTimeout;
- _iceBackupCandidatePairPingInterval = iceBackupCandidatePairPingInterval;
+ _keyType = RTCEncryptionKeyTypeECDSA;
}
return self;
}
@@ -103,42 +85,20 @@
_iceConnectionReceivingTimeout;
nativeConfig.ice_backup_candidate_pair_ping_interval =
_iceBackupCandidatePairPingInterval;
+ if (_keyType == RTCEncryptionKeyTypeECDSA) {
+ rtc::scoped_ptr<rtc::SSLIdentity> identity(
+ rtc::SSLIdentity::Generate(webrtc::kIdentityName, rtc::KT_ECDSA));
+ if (identity) {
+ nativeConfig.certificates.push_back(
+ rtc::RTCCertificate::Create(std::move(identity)));
+ } else {
+ RTCLogWarning(@"Failed to generate ECDSA identity. RSA will be used.");
+ }
+ }
return nativeConfig;
}
-- (instancetype)initWithNativeConfiguration:
- (webrtc::PeerConnectionInterface::RTCConfiguration)nativeConfig {
- NSMutableArray *iceServers =
- [NSMutableArray arrayWithCapacity:nativeConfig.servers.size()];
- for (auto const &server : nativeConfig.servers) {
- RTCIceServer *iceServer =
- [[RTCIceServer alloc] initWithNativeServer:server];
- [iceServers addObject:iceServer];
- }
-
- if (self = [self init]) {
- if (iceServers) {
- _iceServers = [iceServers copy];
- }
- _iceTransportPolicy =
- [[self class] transportPolicyForTransportsType:nativeConfig.type];
- _bundlePolicy =
- [[self class] bundlePolicyForNativePolicy:nativeConfig.bundle_policy];
- _rtcpMuxPolicy = [[self class] rtcpMuxPolicyForNativePolicy:
- nativeConfig.rtcp_mux_policy];
- _tcpCandidatePolicy = [[self class] tcpCandidatePolicyForNativePolicy:
- nativeConfig.tcp_candidate_policy];
- _audioJitterBufferMaxPackets = nativeConfig.audio_jitter_buffer_max_packets;
- _iceConnectionReceivingTimeout =
- nativeConfig.ice_connection_receiving_timeout;
- _iceBackupCandidatePairPingInterval =
- nativeConfig.ice_backup_candidate_pair_ping_interval;
- }
-
- return self;
-}
-
+ (webrtc::PeerConnectionInterface::IceTransportsType)
nativeTransportsTypeForTransportPolicy:(RTCIceTransportPolicy)policy {
switch (policy) {
diff --git a/webrtc/api/objc/RTCSessionDescription.mm b/webrtc/api/objc/RTCSessionDescription.mm
index 7ed0760..5066301 100644
--- a/webrtc/api/objc/RTCSessionDescription.mm
+++ b/webrtc/api/objc/RTCSessionDescription.mm
@@ -86,6 +86,7 @@
return RTCSdpTypeAnswer;
} else {
RTC_NOTREACHED();
+ return RTCSdpTypeOffer;
}
}
diff --git a/webrtc/api/objctests/RTCConfigurationTest.mm b/webrtc/api/objctests/RTCConfigurationTest.mm
index 429ce11..8cfa04d 100644
--- a/webrtc/api/objctests/RTCConfigurationTest.mm
+++ b/webrtc/api/objctests/RTCConfigurationTest.mm
@@ -21,7 +21,6 @@
@interface RTCConfigurationTest : NSObject
- (void)testConversionToNativeConfiguration;
-- (void)testInitFromNativeConfiguration;
@end
@implementation RTCConfigurationTest
@@ -30,15 +29,18 @@
NSArray *urlStrings = @[ @"stun:stun1.example.net" ];
RTCIceServer *server = [[RTCIceServer alloc] initWithURLStrings:urlStrings];
- RTCConfiguration *config =
- [[RTCConfiguration alloc] initWithIceServers:@[ server ]
- iceTransportPolicy:RTCIceTransportPolicyRelay
- bundlePolicy:RTCBundlePolicyMaxBundle
- rtcpMuxPolicy:RTCRtcpMuxPolicyNegotiate
- tcpCandidatePolicy:RTCTcpCandidatePolicyDisabled
- audioJitterBufferMaxPackets:60
- iceConnectionReceivingTimeout:1
- iceBackupCandidatePairPingInterval:2];
+ RTCConfiguration *config = [[RTCConfiguration alloc] init];
+ config.iceServers = @[ server ];
+ config.iceTransportPolicy = RTCIceTransportPolicyRelay;
+ config.bundlePolicy = RTCBundlePolicyMaxBundle;
+ config.rtcpMuxPolicy = RTCRtcpMuxPolicyNegotiate;
+ config.tcpCandidatePolicy = RTCTcpCandidatePolicyDisabled;
+ const int maxPackets = 60;
+ const int timeout = 1;
+ const int interval = 2;
+ config.audioJitterBufferMaxPackets = maxPackets;
+ config.iceConnectionReceivingTimeout = timeout;
+ config.iceBackupCandidatePairPingInterval = interval;
webrtc::PeerConnectionInterface::RTCConfiguration nativeConfig =
config.nativeConfiguration;
@@ -55,50 +57,9 @@
nativeConfig.rtcp_mux_policy);
EXPECT_EQ(webrtc::PeerConnectionInterface::kTcpCandidatePolicyDisabled,
nativeConfig.tcp_candidate_policy);
- EXPECT_EQ(60, nativeConfig.audio_jitter_buffer_max_packets);
- EXPECT_EQ(1, nativeConfig.ice_connection_receiving_timeout);
- EXPECT_EQ(2, nativeConfig.ice_backup_candidate_pair_ping_interval);
-}
-
-- (void)testInitFromNativeConfiguration {
- webrtc::PeerConnectionInterface::RTCConfiguration nativeConfig;
-
- webrtc::PeerConnectionInterface::IceServer nativeServer;
- nativeServer.username = "username";
- nativeServer.password = "password";
- nativeServer.urls.push_back("stun:stun.example.net");
- webrtc::PeerConnectionInterface::IceServers servers { nativeServer };
-
- nativeConfig.servers = servers;
- nativeConfig.type = webrtc::PeerConnectionInterface::kNoHost;
- nativeConfig.bundle_policy =
- webrtc::PeerConnectionInterface::kBundlePolicyMaxCompat;
- nativeConfig.rtcp_mux_policy =
- webrtc::PeerConnectionInterface::kRtcpMuxPolicyRequire;
- nativeConfig.tcp_candidate_policy =
- webrtc::PeerConnectionInterface::kTcpCandidatePolicyEnabled;
- nativeConfig.audio_jitter_buffer_max_packets = 40;
- nativeConfig.ice_connection_receiving_timeout =
- webrtc::PeerConnectionInterface::RTCConfiguration::kUndefined;
- nativeConfig.ice_backup_candidate_pair_ping_interval =
- webrtc::PeerConnectionInterface::RTCConfiguration::kUndefined;
-
- RTCConfiguration *config =
- [[RTCConfiguration alloc] initWithNativeConfiguration:nativeConfig];
-
- EXPECT_EQ(1u, config.iceServers.count);
- RTCIceServer *server = config.iceServers.firstObject;
- EXPECT_EQ(1u, server.urlStrings.count);
- EXPECT_TRUE([@"stun:stun.example.net" isEqualToString:
- server.urlStrings.firstObject]);
-
- EXPECT_EQ(RTCIceTransportPolicyNoHost, config.iceTransportPolicy);
- EXPECT_EQ(RTCBundlePolicyMaxCompat, config.bundlePolicy);
- EXPECT_EQ(RTCRtcpMuxPolicyRequire, config.rtcpMuxPolicy);
- EXPECT_EQ(RTCTcpCandidatePolicyEnabled, config.tcpCandidatePolicy);
- EXPECT_EQ(40, config.audioJitterBufferMaxPackets);
- EXPECT_EQ(-1, config.iceConnectionReceivingTimeout);
- EXPECT_EQ(-1, config.iceBackupCandidatePairPingInterval);
+ EXPECT_EQ(maxPackets, nativeConfig.audio_jitter_buffer_max_packets);
+ EXPECT_EQ(timeout, nativeConfig.ice_connection_receiving_timeout);
+ EXPECT_EQ(interval, nativeConfig.ice_backup_candidate_pair_ping_interval);
}
@end
@@ -110,9 +71,3 @@
}
}
-TEST(RTCConfigurationTest, InitFromConfigurationTest) {
- @autoreleasepool {
- RTCConfigurationTest *test = [[RTCConfigurationTest alloc] init];
- [test testInitFromNativeConfiguration];
- }
-}