Add SSLConfig object to IceServer.
This is a rollforward of https://webrtc-review.googlesource.com/c/src/+/96020,
with the addition of setting the old tlsCertPolicy, tlsAlpnProtocols and
tlsEllipticCurves in the RTCIceServer initializer, for backwards compatibility.
Bug: webrtc:9662
Change-Id: I28706ed4ff5abe3f7f913f105779f0e5412aeac5
Reviewed-on: https://webrtc-review.googlesource.com/98762
Commit-Queue: Diogo Real <diogor@google.com>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24696}
diff --git a/sdk/objc/api/peerconnection/RTCIceServer.h b/sdk/objc/api/peerconnection/RTCIceServer.h
index c2def04..a9760c7 100644
--- a/sdk/objc/api/peerconnection/RTCIceServer.h
+++ b/sdk/objc/api/peerconnection/RTCIceServer.h
@@ -11,11 +11,7 @@
#import <Foundation/Foundation.h>
#import "RTCMacros.h"
-
-typedef NS_ENUM(NSUInteger, RTCTlsCertPolicy) {
- RTCTlsCertPolicySecure,
- RTCTlsCertPolicyInsecureNoCheck
-};
+#import "RTCSSLConfig.h"
NS_ASSUME_NONNULL_BEGIN
@@ -32,7 +28,8 @@
@property(nonatomic, readonly, nullable) NSString *credential;
/**
- * TLS certificate policy to use if this RTCIceServer object is a TURN server.
+ Deprecated. TODO(diogor, webrtc:9673): Remove from API.
+ TLS certificate policy to use if this RTCIceServer object is a TURN server.
*/
@property(nonatomic, readonly) RTCTlsCertPolicy tlsCertPolicy;
@@ -43,15 +40,24 @@
*/
@property(nonatomic, readonly, nullable) NSString *hostname;
-/** List of protocols to be used in the TLS ALPN extension. */
+/**
+ Deprecated. TODO(diogor, webrtc:9673): Remove from API.
+ List of protocols to be used in the TLS ALPN extension.
+ This field will be ignored if also set in RTCSSLConfig.
+ */
@property(nonatomic, readonly) NSArray<NSString *> *tlsAlpnProtocols;
/**
+ Deprecated. TODO(diogor, webrtc:9673): Remove from API.
List elliptic curves to be used in the TLS elliptic curves extension.
Only curve names supported by OpenSSL should be used (eg. "P-256","X25519").
+ This field will be ignored if also set in RTCSSLConfig.
*/
@property(nonatomic, readonly) NSArray<NSString *> *tlsEllipticCurves;
+/** SSL configuration options for any SSL/TLS connections to this IceServer. */
+@property(nonatomic, readonly) RTCSSLConfig *sslConfig;
+
- (nonnull instancetype)init NS_UNAVAILABLE;
/** Convenience initializer for a server with no authentication (e.g. STUN). */
@@ -106,8 +112,17 @@
tlsCertPolicy:(RTCTlsCertPolicy)tlsCertPolicy
hostname:(nullable NSString *)hostname
tlsAlpnProtocols:(nullable NSArray<NSString *> *)tlsAlpnProtocols
- tlsEllipticCurves:(nullable NSArray<NSString *> *)tlsEllipticCurves
- NS_DESIGNATED_INITIALIZER;
+ tlsEllipticCurves:(nullable NSArray<NSString *> *)tlsEllipticCurves;
+
+/**
+ * Initialize an RTCIceServer with its associated URLs, optional
+ * username, optional credential, hostname and SSL config.
+ */
+- (instancetype)initWithURLStrings:(NSArray<NSString *> *)urlStrings
+ username:(nullable NSString *)username
+ credential:(nullable NSString *)credential
+ hostname:(nullable NSString *)hostname
+ sslConfig:(RTCSSLConfig *)sslConfig NS_DESIGNATED_INITIALIZER;
@end