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/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) {