Remove enable_dtls_srtp option
This is part of the removal of support for SDES.
Bug: webrtc:11066
Change-Id: I448d0e0032672c04c87b00550ab4b9d792071a0b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/234864
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35262}
diff --git a/api/peer_connection_interface.h b/api/peer_connection_interface.h
index b1700ce..9dca8f5 100644
--- a/api/peer_connection_interface.h
+++ b/api/peer_connection_interface.h
@@ -427,12 +427,6 @@
// Use new combined audio/video bandwidth estimation?
absl::optional<bool> combined_audio_video_bwe;
- // TODO(bugs.webrtc.org/9891) - Move to crypto_options
- // Can be used to disable DTLS-SRTP. This should never be done, but can be
- // useful for testing purposes, for example in setting up a loopback call
- // with a single PeerConnection.
- absl::optional<bool> enable_dtls_srtp;
-
/////////////////////////////////////////////////
// The below fields are not part of the standard.
/////////////////////////////////////////////////
diff --git a/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java b/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java
index 2872d0b..2bc75ff 100644
--- a/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java
+++ b/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java
@@ -442,6 +442,10 @@
decoderFactory = new SoftwareVideoDecoderFactory();
}
+ // Disable encryption for loopback calls.
+ if (peerConnectionParameters.loopback) {
+ options.disableEncryption = true;
+ }
factory = PeerConnectionFactory.builder()
.setOptions(options)
.setAudioDeviceModule(adm)
@@ -600,8 +604,6 @@
rtcConfig.continualGatheringPolicy = PeerConnection.ContinualGatheringPolicy.GATHER_CONTINUALLY;
// Use ECDSA encryption.
rtcConfig.keyType = PeerConnection.KeyType.ECDSA;
- // Enable DTLS for normal calls and disable for loopback calls.
- rtcConfig.enableDtlsSrtp = !peerConnectionParameters.loopback;
rtcConfig.sdpSemantics = PeerConnection.SdpSemantics.UNIFIED_PLAN;
peerConnection = factory.createPeerConnection(rtcConfig, pcObserver);
diff --git a/examples/androidnativeapi/jni/android_call_client.cc b/examples/androidnativeapi/jni/android_call_client.cc
index f38de24..8178273 100644
--- a/examples/androidnativeapi/jni/android_call_client.cc
+++ b/examples/androidnativeapi/jni/android_call_client.cc
@@ -177,8 +177,10 @@
webrtc::MutexLock lock(&pc_mutex_);
webrtc::PeerConnectionInterface::RTCConfiguration config;
config.sdp_semantics = webrtc::SdpSemantics::kUnifiedPlan;
- // DTLS SRTP has to be disabled for loopback to work.
- config.enable_dtls_srtp = false;
+ // Encryption has to be disabled for loopback to work.
+ webrtc::PeerConnectionFactoryInterface::Options options;
+ options.disable_encryption = true;
+ pcf_->SetOptions(options);
webrtc::PeerConnectionDependencies deps(pc_observer_.get());
pc_ = pcf_->CreatePeerConnectionOrError(config, std::move(deps)).MoveValue();
diff --git a/examples/objcnativeapi/objc/objc_call_client.mm b/examples/objcnativeapi/objc/objc_call_client.mm
index 419203e..09d3d4a 100644
--- a/examples/objcnativeapi/objc/objc_call_client.mm
+++ b/examples/objcnativeapi/objc/objc_call_client.mm
@@ -141,8 +141,10 @@
webrtc::MutexLock lock(&pc_mutex_);
webrtc::PeerConnectionInterface::RTCConfiguration config;
config.sdp_semantics = webrtc::SdpSemantics::kUnifiedPlan;
- // DTLS SRTP has to be disabled for loopback to work.
- config.enable_dtls_srtp = false;
+ // Encryption has to be disabled for loopback to work.
+ webrtc::PeerConnectionFactoryInterface::Options options;
+ options.disable_encryption = true;
+ pcf_->SetOptions(options);
webrtc::PeerConnectionDependencies pc_dependencies(pc_observer_.get());
pc_ = pcf_->CreatePeerConnectionOrError(config, std::move(pc_dependencies)).MoveValue();
RTC_LOG(LS_INFO) << "PeerConnection created: " << pc_;
diff --git a/examples/peerconnection/client/conductor.cc b/examples/peerconnection/client/conductor.cc
index 744c6b1..d3b1d21 100644
--- a/examples/peerconnection/client/conductor.cc
+++ b/examples/peerconnection/client/conductor.cc
@@ -150,7 +150,7 @@
return false;
}
- if (!CreatePeerConnection(/*dtls=*/true)) {
+ if (!CreatePeerConnection()) {
main_wnd_->MessageBox("Error", "CreatePeerConnection failed", true);
DeletePeerConnection();
}
@@ -165,23 +165,28 @@
std::vector<rtc::scoped_refptr<webrtc::RtpSenderInterface>> senders =
peer_connection_->GetSenders();
peer_connection_ = nullptr;
- if (CreatePeerConnection(/*dtls=*/false)) {
+ // Loopback is only possible if encryption is disabled.
+ webrtc::PeerConnectionFactoryInterface::Options options;
+ options.disable_encryption = true;
+ peer_connection_factory_->SetOptions(options);
+ if (CreatePeerConnection()) {
for (const auto& sender : senders) {
peer_connection_->AddTrack(sender->track(), sender->stream_ids());
}
peer_connection_->CreateOffer(
this, webrtc::PeerConnectionInterface::RTCOfferAnswerOptions());
}
+ options.disable_encryption = false;
+ peer_connection_factory_->SetOptions(options);
return peer_connection_ != nullptr;
}
-bool Conductor::CreatePeerConnection(bool dtls) {
+bool Conductor::CreatePeerConnection() {
RTC_DCHECK(peer_connection_factory_);
RTC_DCHECK(!peer_connection_);
webrtc::PeerConnectionInterface::RTCConfiguration config;
config.sdp_semantics = webrtc::SdpSemantics::kUnifiedPlan;
- config.enable_dtls_srtp = dtls;
webrtc::PeerConnectionInterface::IceServer server;
server.uri = GetPeerConnectionString();
config.servers.push_back(server);
diff --git a/examples/peerconnection/client/conductor.h b/examples/peerconnection/client/conductor.h
index 332cd43..80617d3 100644
--- a/examples/peerconnection/client/conductor.h
+++ b/examples/peerconnection/client/conductor.h
@@ -54,7 +54,7 @@
~Conductor();
bool InitializePeerConnection();
bool ReinitializePeerConnectionForLoopback();
- bool CreatePeerConnection(bool dtls);
+ bool CreatePeerConnection();
void DeletePeerConnection();
void EnsureStreamingUI();
void AddTracks();
diff --git a/examples/unityplugin/simple_peer_connection.cc b/examples/unityplugin/simple_peer_connection.cc
index c7e5185..e1c9c40 100644
--- a/examples/unityplugin/simple_peer_connection.cc
+++ b/examples/unityplugin/simple_peer_connection.cc
@@ -190,7 +190,6 @@
webrtc::PeerConnectionInterface::IceServer stun_server;
stun_server.uri = GetPeerConnectionString();
config_.servers.push_back(stun_server);
- config_.enable_dtls_srtp = false;
auto result = g_peer_connection_factory->CreatePeerConnectionOrError(
config_, webrtc::PeerConnectionDependencies(this));
diff --git a/pc/peer_connection.cc b/pc/peer_connection.cc
index 0ca18aa..1cb05a2 100644
--- a/pc/peer_connection.cc
+++ b/pc/peer_connection.cc
@@ -276,8 +276,8 @@
bool default_enabled =
(dependencies.cert_generator || !configuration.certificates.empty());
- // The `configuration` can override the default value.
- return configuration.enable_dtls_srtp.value_or(default_enabled);
+ RTC_DCHECK(default_enabled) << "Configuration error: No certs for DTLS";
+ return default_enabled;
}
} // namespace
@@ -300,7 +300,6 @@
bool enable_rtp_data_channel;
absl::optional<int> screencast_min_bitrate;
absl::optional<bool> combined_audio_video_bwe;
- absl::optional<bool> enable_dtls_srtp;
TcpCandidatePolicy tcp_candidate_policy;
CandidateNetworkPolicy candidate_network_policy;
int audio_jitter_buffer_max_packets;
@@ -368,7 +367,6 @@
disable_link_local_networks == o.disable_link_local_networks &&
screencast_min_bitrate == o.screencast_min_bitrate &&
combined_audio_video_bwe == o.combined_audio_video_bwe &&
- enable_dtls_srtp == o.enable_dtls_srtp &&
ice_candidate_pool_size == o.ice_candidate_pool_size &&
prune_turn_ports == o.prune_turn_ports &&
turn_port_prune_policy == o.turn_port_prune_policy &&
diff --git a/pc/peer_connection_crypto_unittest.cc b/pc/peer_connection_crypto_unittest.cc
index 394203c..c0c3281 100644
--- a/pc/peer_connection_crypto_unittest.cc
+++ b/pc/peer_connection_crypto_unittest.cc
@@ -181,7 +181,6 @@
// no SDES cryptos.
TEST_P(PeerConnectionCryptoTest, CorrectCryptoInOfferWhenDtlsEnabled) {
RTCConfiguration config;
- config.enable_dtls_srtp.emplace(true);
auto caller = CreatePeerConnectionWithAudioVideo(config);
auto offer = caller->CreateOffer();
@@ -195,7 +194,6 @@
}
TEST_P(PeerConnectionCryptoTest, CorrectCryptoInAnswerWhenDtlsEnabled) {
RTCConfiguration config;
- config.enable_dtls_srtp.emplace(true);
auto caller = CreatePeerConnectionWithAudioVideo(config);
auto callee = CreatePeerConnectionWithAudioVideo(config);
@@ -210,39 +208,6 @@
answer->description()));
}
-// When DTLS is disabled, the SDP offer/answer should include SDES cryptos and
-// should not have a DTLS fingerprint.
-TEST_P(PeerConnectionCryptoTest, CorrectCryptoInOfferWhenDtlsDisabled) {
- RTCConfiguration config;
- config.enable_dtls_srtp.emplace(false);
- auto caller = CreatePeerConnectionWithAudioVideo(config);
-
- auto offer = caller->CreateOffer();
- ASSERT_TRUE(offer);
-
- ASSERT_FALSE(offer->description()->contents().empty());
- EXPECT_TRUE(SdpContentsAll(HaveSdesCryptos(), offer->description()));
- EXPECT_TRUE(SdpContentsNone(HaveDtlsFingerprint(), offer->description()));
- EXPECT_TRUE(SdpContentsAll(HaveProtocol(cricket::kMediaProtocolSavpf),
- offer->description()));
-}
-TEST_P(PeerConnectionCryptoTest, CorrectCryptoInAnswerWhenDtlsDisabled) {
- RTCConfiguration config;
- config.enable_dtls_srtp.emplace(false);
- auto caller = CreatePeerConnectionWithAudioVideo(config);
- auto callee = CreatePeerConnectionWithAudioVideo(config);
-
- callee->SetRemoteDescription(caller->CreateOffer());
- auto answer = callee->CreateAnswer();
- ASSERT_TRUE(answer);
-
- ASSERT_FALSE(answer->description()->contents().empty());
- EXPECT_TRUE(SdpContentsAll(HaveSdesCryptos(), answer->description()));
- EXPECT_TRUE(SdpContentsNone(HaveDtlsFingerprint(), answer->description()));
- EXPECT_TRUE(SdpContentsAll(HaveProtocol(cricket::kMediaProtocolSavpf),
- answer->description()));
-}
-
// When encryption is disabled, the SDP offer/answer should have neither a DTLS
// fingerprint nor any SDES crypto options.
TEST_P(PeerConnectionCryptoTest, CorrectCryptoInOfferWhenEncryptionDisabled) {
@@ -251,7 +216,6 @@
pc_factory_->SetOptions(options);
RTCConfiguration config;
- config.enable_dtls_srtp.emplace(false);
auto caller = CreatePeerConnectionWithAudioVideo(config);
auto offer = caller->CreateOffer();
@@ -269,7 +233,6 @@
pc_factory_->SetOptions(options);
RTCConfiguration config;
- config.enable_dtls_srtp.emplace(false);
auto caller = CreatePeerConnectionWithAudioVideo(config);
auto callee = CreatePeerConnectionWithAudioVideo(config);
@@ -284,80 +247,12 @@
answer->description()));
}
-// CryptoOptions has been promoted to RTCConfiguration. As such if it is ever
-// set in the configuration it should overrite the settings set in the factory.
-TEST_P(PeerConnectionCryptoTest, RTCConfigurationCryptoOptionOverridesFactory) {
- PeerConnectionFactoryInterface::Options options;
- options.crypto_options.srtp.enable_gcm_crypto_suites = true;
- pc_factory_->SetOptions(options);
-
- RTCConfiguration config;
- config.enable_dtls_srtp.emplace(false);
- CryptoOptions crypto_options;
- crypto_options.srtp.enable_gcm_crypto_suites = false;
- config.crypto_options = crypto_options;
- auto caller = CreatePeerConnectionWithAudioVideo(config);
-
- auto offer = caller->CreateOffer();
- ASSERT_TRUE(offer);
-
- ASSERT_FALSE(offer->description()->contents().empty());
- // This should exist if GCM is enabled see CorrectCryptoInOfferWithSdesAndGcm
- EXPECT_FALSE(SdpContentsAll(HaveSdesGcmCryptos(3), offer->description()));
-}
-
-// When DTLS is disabled and GCM cipher suites are enabled, the SDP offer/answer
-// should have the correct ciphers in the SDES crypto options.
-// With GCM cipher suites enabled, there will be 3 cryptos in the offer and 1
-// in the answer.
-TEST_P(PeerConnectionCryptoTest, CorrectCryptoInOfferWithSdesAndGcm) {
- PeerConnectionFactoryInterface::Options options;
- options.crypto_options.srtp.enable_gcm_crypto_suites = true;
- pc_factory_->SetOptions(options);
-
- RTCConfiguration config;
- config.enable_dtls_srtp.emplace(false);
- auto caller = CreatePeerConnectionWithAudioVideo(config);
-
- auto offer = caller->CreateOffer();
- ASSERT_TRUE(offer);
-
- ASSERT_FALSE(offer->description()->contents().empty());
- EXPECT_TRUE(SdpContentsAll(HaveSdesGcmCryptos(3), offer->description()));
-}
-
-TEST_P(PeerConnectionCryptoTest, CorrectCryptoInAnswerWithSdesAndGcm) {
- PeerConnectionFactoryInterface::Options options;
- options.crypto_options.srtp.enable_gcm_crypto_suites = true;
- pc_factory_->SetOptions(options);
-
- RTCConfiguration config;
- config.enable_dtls_srtp.emplace(false);
- auto caller = CreatePeerConnectionWithAudioVideo(config);
- auto callee = CreatePeerConnectionWithAudioVideo(config);
-
- auto offer = caller->CreateOffer();
- for (cricket::ContentInfo& content : offer->description()->contents()) {
- auto cryptos = content.media_description()->cryptos();
- cryptos.erase(cryptos.begin()); // Assumes that non-GCM is the default.
- content.media_description()->set_cryptos(cryptos);
- }
-
- callee->SetRemoteDescription(std::move(offer));
- auto answer = callee->CreateAnswer();
- ASSERT_TRUE(answer);
-
- ASSERT_FALSE(answer->description()->contents().empty());
- EXPECT_TRUE(SdpContentsAll(HaveSdesGcmCryptos(1), answer->description()));
-}
-
TEST_P(PeerConnectionCryptoTest, CanSetSdesGcmRemoteOfferAndLocalAnswer) {
PeerConnectionFactoryInterface::Options options;
options.crypto_options.srtp.enable_gcm_crypto_suites = true;
pc_factory_->SetOptions(options);
RTCConfiguration config;
- config.enable_dtls_srtp.emplace(false);
auto caller = CreatePeerConnectionWithAudioVideo(config);
auto callee = CreatePeerConnectionWithAudioVideo(config);
@@ -368,69 +263,8 @@
auto answer = callee->CreateAnswer();
ASSERT_TRUE(answer);
ASSERT_TRUE(callee->SetLocalDescription(std::move(answer)));
-}
-
-// The following group tests that two PeerConnections can successfully exchange
-// an offer/answer when DTLS is off and that they will refuse any offer/answer
-// applied locally/remotely if it does not include SDES cryptos.
-TEST_P(PeerConnectionCryptoTest, ExchangeOfferAnswerWhenSdesOn) {
- RTCConfiguration config;
- config.enable_dtls_srtp.emplace(false);
- auto caller = CreatePeerConnectionWithAudioVideo(config);
- auto callee = CreatePeerConnectionWithAudioVideo(config);
-
- auto offer = caller->CreateOfferAndSetAsLocal();
- ASSERT_TRUE(offer);
- ASSERT_TRUE(callee->SetRemoteDescription(std::move(offer)));
-
- auto answer = callee->CreateAnswerAndSetAsLocal();
- ASSERT_TRUE(answer);
- ASSERT_TRUE(caller->SetRemoteDescription(std::move(answer)));
-}
-TEST_P(PeerConnectionCryptoTest, FailToSetLocalOfferWithNoCryptosWhenSdesOn) {
- RTCConfiguration config;
- config.enable_dtls_srtp.emplace(false);
- auto caller = CreatePeerConnectionWithAudioVideo(config);
-
- auto offer = caller->CreateOffer();
- SdpContentsForEach(RemoveSdesCryptos(), offer->description());
-
- EXPECT_FALSE(caller->SetLocalDescription(std::move(offer)));
-}
-TEST_P(PeerConnectionCryptoTest, FailToSetRemoteOfferWithNoCryptosWhenSdesOn) {
- RTCConfiguration config;
- config.enable_dtls_srtp.emplace(false);
- auto caller = CreatePeerConnectionWithAudioVideo(config);
- auto callee = CreatePeerConnectionWithAudioVideo(config);
-
- auto offer = caller->CreateOffer();
- SdpContentsForEach(RemoveSdesCryptos(), offer->description());
-
- EXPECT_FALSE(callee->SetRemoteDescription(std::move(offer)));
-}
-TEST_P(PeerConnectionCryptoTest, FailToSetLocalAnswerWithNoCryptosWhenSdesOn) {
- RTCConfiguration config;
- config.enable_dtls_srtp.emplace(false);
- auto caller = CreatePeerConnectionWithAudioVideo(config);
- auto callee = CreatePeerConnectionWithAudioVideo(config);
-
- callee->SetRemoteDescription(caller->CreateOfferAndSetAsLocal());
- auto answer = callee->CreateAnswer();
- SdpContentsForEach(RemoveSdesCryptos(), answer->description());
-
- EXPECT_FALSE(callee->SetLocalDescription(std::move(answer)));
-}
-TEST_P(PeerConnectionCryptoTest, FailToSetRemoteAnswerWithNoCryptosWhenSdesOn) {
- RTCConfiguration config;
- config.enable_dtls_srtp.emplace(false);
- auto caller = CreatePeerConnectionWithAudioVideo(config);
- auto callee = CreatePeerConnectionWithAudioVideo(config);
-
- callee->SetRemoteDescription(caller->CreateOfferAndSetAsLocal());
- auto answer = callee->CreateAnswerAndSetAsLocal();
- SdpContentsForEach(RemoveSdesCryptos(), answer->description());
-
- EXPECT_FALSE(caller->SetRemoteDescription(std::move(answer)));
+ // Note - this test doesn't verify that Gcm is present, just that it
+ // does not caue a failure.
}
// The following group tests that two PeerConnections can successfully exchange
@@ -438,7 +272,6 @@
// applied locally/remotely if it does not include a DTLS fingerprint.
TEST_P(PeerConnectionCryptoTest, ExchangeOfferAnswerWhenDtlsOn) {
RTCConfiguration config;
- config.enable_dtls_srtp.emplace(true);
auto caller = CreatePeerConnectionWithAudioVideo(config);
auto callee = CreatePeerConnectionWithAudioVideo(config);
@@ -453,7 +286,6 @@
TEST_P(PeerConnectionCryptoTest,
FailToSetLocalOfferWithNoFingerprintWhenDtlsOn) {
RTCConfiguration config;
- config.enable_dtls_srtp.emplace(true);
auto caller = CreatePeerConnectionWithAudioVideo(config);
auto offer = caller->CreateOffer();
@@ -464,7 +296,6 @@
TEST_P(PeerConnectionCryptoTest,
FailToSetRemoteOfferWithNoFingerprintWhenDtlsOn) {
RTCConfiguration config;
- config.enable_dtls_srtp.emplace(true);
auto caller = CreatePeerConnectionWithAudioVideo(config);
auto callee = CreatePeerConnectionWithAudioVideo(config);
@@ -476,7 +307,6 @@
TEST_P(PeerConnectionCryptoTest,
FailToSetLocalAnswerWithNoFingerprintWhenDtlsOn) {
RTCConfiguration config;
- config.enable_dtls_srtp.emplace(true);
auto caller = CreatePeerConnectionWithAudioVideo(config);
auto callee = CreatePeerConnectionWithAudioVideo(config);
@@ -487,7 +317,6 @@
TEST_P(PeerConnectionCryptoTest,
FailToSetRemoteAnswerWithNoFingerprintWhenDtlsOn) {
RTCConfiguration config;
- config.enable_dtls_srtp.emplace(true);
auto caller = CreatePeerConnectionWithAudioVideo(config);
auto callee = CreatePeerConnectionWithAudioVideo(config);
@@ -505,7 +334,6 @@
pc_factory_->SetOptions(options);
RTCConfiguration config;
- config.enable_dtls_srtp.emplace(false);
auto caller = CreatePeerConnectionWithAudioVideo(config);
auto callee = CreatePeerConnectionWithAudioVideo(config);
@@ -523,13 +351,11 @@
TEST_P(PeerConnectionCryptoTest,
ExchangeOfferAnswerWhenDtlsCertificateInConfig) {
RTCConfiguration caller_config;
- caller_config.enable_dtls_srtp.emplace(true);
caller_config.certificates.push_back(
FakeRTCCertificateGenerator::GenerateCertificate());
auto caller = CreatePeerConnectionWithAudioVideo(caller_config);
RTCConfiguration callee_config;
- callee_config.enable_dtls_srtp.emplace(true);
callee_config.certificates.push_back(
FakeRTCCertificateGenerator::GenerateCertificate());
auto callee = CreatePeerConnectionWithAudioVideo(callee_config);
@@ -600,7 +426,6 @@
TEST_P(PeerConnectionCryptoDtlsCertGenTest, TestCertificateGeneration) {
RTCConfiguration config;
- config.enable_dtls_srtp.emplace(true);
auto owned_fake_certificate_generator =
std::make_unique<FakeRTCCertificateGenerator>();
auto* fake_certificate_generator = owned_fake_certificate_generator.get();
@@ -724,7 +549,6 @@
auto caller = CreatePeerConnectionWithAudioVideo();
RTCConfiguration callee_config;
- callee_config.enable_dtls_srtp.emplace(true);
callee_config.certificates.push_back(callee_certificate);
auto callee = CreatePeerConnectionWithAudioVideo(callee_config);
diff --git a/pc/peer_connection_data_channel_unittest.cc b/pc/peer_connection_data_channel_unittest.cc
index 2544473..5a6377b 100644
--- a/pc/peer_connection_data_channel_unittest.cc
+++ b/pc/peer_connection_data_channel_unittest.cc
@@ -280,15 +280,6 @@
answer->description()->GetTransportInfoByName(data_content->name));
}
-TEST_P(PeerConnectionDataChannelTest,
- CreateDataChannelWithDtlsDisabledSucceeds) {
- RTCConfiguration config;
- config.enable_dtls_srtp.emplace(false);
- auto caller = CreatePeerConnection();
-
- EXPECT_TRUE(caller->pc()->CreateDataChannel("dc", nullptr));
-}
-
TEST_P(PeerConnectionDataChannelTest, SctpPortPropagatedFromSdpToTransport) {
constexpr int kNewSendPort = 9998;
constexpr int kNewRecvPort = 7775;
diff --git a/pc/peer_connection_end_to_end_unittest.cc b/pc/peer_connection_end_to_end_unittest.cc
index 4ef4c83..19e4be3 100644
--- a/pc/peer_connection_end_to_end_unittest.cc
+++ b/pc/peer_connection_end_to_end_unittest.cc
@@ -366,15 +366,6 @@
WaitForCallEstablished();
}
-TEST_P(PeerConnectionEndToEndTest, CallWithSdesKeyNegotiation) {
- config_.enable_dtls_srtp = false;
- CreatePcs(webrtc::CreateOpusAudioEncoderFactory(),
- webrtc::CreateOpusAudioDecoderFactory());
- GetAndAddUserMedia();
- Negotiate();
- WaitForCallEstablished();
-}
-
TEST_P(PeerConnectionEndToEndTest, CallWithCustomCodec) {
class IdLoggingAudioEncoderFactory : public webrtc::AudioEncoderFactory {
public:
diff --git a/pc/peer_connection_integrationtest.cc b/pc/peer_connection_integrationtest.cc
index fc09416..53aa63e 100644
--- a/pc/peer_connection_integrationtest.cc
+++ b/pc/peer_connection_integrationtest.cc
@@ -264,30 +264,6 @@
webrtc::kEnumCounterKeyProtocolSdes));
}
-// Uses SDES instead of DTLS for key agreement.
-TEST_P(PeerConnectionIntegrationTest, EndToEndCallWithSdes) {
- PeerConnectionInterface::RTCConfiguration sdes_config;
- sdes_config.enable_dtls_srtp.emplace(false);
- ASSERT_TRUE(CreatePeerConnectionWrappersWithConfig(sdes_config, sdes_config));
- ConnectFakeSignaling();
-
- // Do normal offer/answer and wait for some frames to be received in each
- // direction.
- caller()->AddAudioVideoTracks();
- callee()->AddAudioVideoTracks();
- caller()->CreateAndSetAndSignalOffer();
- ASSERT_TRUE_WAIT(SignalingStateStable(), kDefaultTimeout);
- MediaExpectations media_expectations;
- media_expectations.ExpectBidirectionalAudioAndVideo();
- ASSERT_TRUE(ExpectNewFrames(media_expectations));
- EXPECT_METRIC_LE(
- 2, webrtc::metrics::NumEvents("WebRTC.PeerConnection.KeyProtocol",
- webrtc::kEnumCounterKeyProtocolSdes));
- EXPECT_METRIC_EQ(
- 0, webrtc::metrics::NumEvents("WebRTC.PeerConnection.KeyProtocol",
- webrtc::kEnumCounterKeyProtocolDtls));
-}
-
// Basic end-to-end test specifying the `enable_encrypted_rtp_header_extensions`
// option to offer encrypted versions of all header extensions alongside the
// unencrypted versions.
diff --git a/pc/peer_connection_interface_unittest.cc b/pc/peer_connection_interface_unittest.cc
index 2105c78..5452238 100644
--- a/pc/peer_connection_interface_unittest.cc
+++ b/pc/peer_connection_interface_unittest.cc
@@ -710,13 +710,16 @@
CreatePeerConnection(PeerConnectionInterface::RTCConfiguration());
}
- // DTLS does not work in a loopback call, so is disabled for most of the
+ // DTLS does not work in a loopback call, so is disabled for many
// tests in this file.
void CreatePeerConnectionWithoutDtls() {
RTCConfiguration config;
- config.enable_dtls_srtp = false;
-
+ PeerConnectionFactoryInterface::Options options;
+ options.disable_encryption = true;
+ pc_factory_->SetOptions(options);
CreatePeerConnection(config);
+ options.disable_encryption = false;
+ pc_factory_->SetOptions(options);
}
void CreatePeerConnectionWithIceTransportsType(
@@ -751,10 +754,10 @@
// false.
std::unique_ptr<rtc::RTCCertificateGeneratorInterface> cert_generator;
- if (config.enable_dtls_srtp.value_or(true)) {
- fake_certificate_generator_ = new FakeRTCCertificateGenerator();
- cert_generator.reset(fake_certificate_generator_);
- }
+ // These won't be used if encryption is turned off, but that's harmless.
+ fake_certificate_generator_ = new FakeRTCCertificateGenerator();
+ cert_generator.reset(fake_certificate_generator_);
+
RTCConfiguration modified_config = config;
modified_config.sdp_semantics = sdp_semantics_;
pc_ = pc_factory_->CreatePeerConnection(
@@ -1903,7 +1906,6 @@
// DataChannelInit configurations.
TEST_P(PeerConnectionInterfaceTest, CreateSctpDataChannel) {
RTCConfiguration rtc_config;
- rtc_config.enable_dtls_srtp = true;
CreatePeerConnection(rtc_config);
webrtc::DataChannelInit config;
@@ -1939,7 +1941,6 @@
// and maxRetransmitTime by setting them to -1 to get what they want.
TEST_P(PeerConnectionInterfaceTest, CreateSctpDataChannelWithMinusOne) {
RTCConfiguration rtc_config;
- rtc_config.enable_dtls_srtp = true;
CreatePeerConnection(rtc_config);
webrtc::DataChannelInit config;
@@ -1955,7 +1956,6 @@
TEST_P(PeerConnectionInterfaceTest,
CreateSctpDataChannelShouldFailForInvalidConfig) {
RTCConfiguration rtc_config;
- rtc_config.enable_dtls_srtp = true;
CreatePeerConnection(rtc_config);
std::string label = "test";
@@ -1973,7 +1973,6 @@
TEST_P(PeerConnectionInterfaceTest,
CreateSctpDataChannelWithInvalidIdShouldFail) {
RTCConfiguration rtc_config;
- rtc_config.enable_dtls_srtp = true;
CreatePeerConnection(rtc_config);
webrtc::DataChannelInit config;
@@ -2003,7 +2002,6 @@
// Verifies that duplicated label is allowed for SCTP data channel.
TEST_P(PeerConnectionInterfaceTest, SctpDuplicatedLabelAllowed) {
RTCConfiguration rtc_config;
- rtc_config.enable_dtls_srtp = true;
CreatePeerConnection(rtc_config);
std::string label = "test";
@@ -2051,7 +2049,6 @@
// the answer as a local description.
TEST_P(PeerConnectionInterfaceTest, ReceiveFireFoxOffer) {
RTCConfiguration rtc_config;
- rtc_config.enable_dtls_srtp = true;
CreatePeerConnection(rtc_config);
AddAudioTrack("audio_label");
AddVideoTrack("video_label");
@@ -2085,7 +2082,6 @@
// and because it's non-standard.
TEST_P(PeerConnectionInterfaceTest, DtlsSdesFallbackNotSupported) {
RTCConfiguration rtc_config;
- rtc_config.enable_dtls_srtp = true;
CreatePeerConnection(rtc_config);
// Wait for fake certificate to be generated. Previously, this is what caused
// the "a=crypto" lines to be rejected.
@@ -2129,7 +2125,6 @@
// will have m-lines with a=recvonly.
TEST_P(PeerConnectionInterfaceTest, CreateSubsequentRecvOnlyOffer) {
RTCConfiguration rtc_config;
- rtc_config.enable_dtls_srtp = true;
CreatePeerConnection(rtc_config);
CreateAndSetRemoteOffer(GetSdpStringWithStream1());
CreateAnswerAsLocalDescription();
@@ -2155,7 +2150,6 @@
// false, the generated m-lines will be a=inactive.
TEST_P(PeerConnectionInterfaceTest, CreateSubsequentInactiveOffer) {
RTCConfiguration rtc_config;
- rtc_config.enable_dtls_srtp = true;
CreatePeerConnection(rtc_config);
CreateAndSetRemoteOffer(GetSdpStringWithStream1());
CreateAnswerAsLocalDescription();
@@ -2508,7 +2502,6 @@
// signaled.
TEST_P(PeerConnectionInterfaceTest, UpdateRemoteStreams) {
RTCConfiguration config;
- config.enable_dtls_srtp = true;
CreatePeerConnection(config);
CreateAndSetRemoteOffer(GetSdpStringWithStream1());
@@ -2534,7 +2527,6 @@
TEST_F(PeerConnectionInterfaceTestPlanB,
AddRemoveTrackFromExistingRemoteMediaStream) {
RTCConfiguration config;
- config.enable_dtls_srtp = true;
CreatePeerConnection(config);
std::unique_ptr<SessionDescriptionInterface> desc_ms1 =
CreateSessionDescriptionAndReference(1, 1);
@@ -2577,7 +2569,6 @@
// that rejects the media content type.
TEST_P(PeerConnectionInterfaceTest, RejectMediaContent) {
RTCConfiguration config;
- config.enable_dtls_srtp = true;
CreatePeerConnection(config);
// First create and set a remote offer, then reject its video content in our
// answer.
@@ -2626,7 +2617,6 @@
// Don't run under Unified Plan since the stream API is not available.
TEST_F(PeerConnectionInterfaceTestPlanB, RemoveTrackThenRejectMediaContent) {
RTCConfiguration config;
- config.enable_dtls_srtp = true;
CreatePeerConnection(config);
CreateAndSetRemoteOffer(GetSdpStringWithStream1());
MediaStreamInterface* remote_stream = observer_.remote_streams()->at(0);
@@ -2652,7 +2642,6 @@
// See: https://code.google.com/p/webrtc/issues/detail?id=5054
TEST_P(PeerConnectionInterfaceTest, RecvonlyDescriptionDoesntCreateStream) {
RTCConfiguration config;
- config.enable_dtls_srtp = true;
CreatePeerConnection(config);
std::string recvonly_offer = GetSdpStringWithStream1();
@@ -2669,7 +2658,6 @@
// Don't run under Unified Plan since this behavior is Plan B specific.
TEST_F(PeerConnectionInterfaceTestPlanB, SdpWithoutMsidCreatesDefaultStream) {
RTCConfiguration config;
- config.enable_dtls_srtp = true;
CreatePeerConnection(config);
CreateAndSetRemoteOffer(kSdpStringWithoutStreamsAudioOnly);
@@ -2698,7 +2686,6 @@
TEST_F(PeerConnectionInterfaceTestPlanB,
SendOnlySdpWithoutMsidCreatesDefaultStream) {
RTCConfiguration config;
- config.enable_dtls_srtp = true;
CreatePeerConnection(config);
CreateAndSetRemoteOffer(kSdpStringSendOnlyWithoutStreams);
@@ -2715,7 +2702,6 @@
// Don't run under Unified Plan since this behavior is Plan B specific.
TEST_F(PeerConnectionInterfaceTestPlanB, RemoveAlreadyGoneRemoteStream) {
RTCConfiguration config;
- config.enable_dtls_srtp = true;
CreatePeerConnection(config);
CreateAndSetRemoteOffer(GetSdpStringWithStream1());
MediaStreamInterface* remote_stream = observer_.remote_streams()->at(0);
@@ -2734,7 +2720,6 @@
TEST_F(PeerConnectionInterfaceTestPlanB,
SdpWithoutMsidAndStreamsCreatesDefaultStream) {
RTCConfiguration config;
- config.enable_dtls_srtp = true;
CreatePeerConnection(config);
CreateAndSetRemoteOffer(kSdpStringWithoutStreams);
@@ -2749,7 +2734,6 @@
// Don't run under Unified Plan since this behavior is Plan B specific.
TEST_F(PeerConnectionInterfaceTestPlanB, SdpWithMsidDontCreatesDefaultStream) {
RTCConfiguration config;
- config.enable_dtls_srtp = true;
CreatePeerConnection(config);
CreateAndSetRemoteOffer(kSdpStringWithMsidWithoutStreams);
EXPECT_EQ(0u, observer_.remote_streams()->count());
@@ -2762,7 +2746,6 @@
TEST_F(PeerConnectionInterfaceTestPlanB,
DefaultTracksNotDestroyedAndRecreated) {
RTCConfiguration config;
- config.enable_dtls_srtp = true;
CreatePeerConnection(config);
CreateAndSetRemoteOffer(kSdpStringWithoutStreamsAudioOnly);
@@ -2783,7 +2766,6 @@
// Don't run under Unified Plan since this behavior is Plan B specific.
TEST_F(PeerConnectionInterfaceTestPlanB, VerifyDefaultStreamIsNotCreated) {
RTCConfiguration config;
- config.enable_dtls_srtp = true;
CreatePeerConnection(config);
CreateAndSetRemoteOffer(GetSdpStringWithStream1());
rtc::scoped_refptr<StreamCollection> reference(CreateStreamCollection(1, 1));
@@ -2799,7 +2781,6 @@
TEST_F(PeerConnectionInterfaceTestPlanB,
SdpWithMsidWithoutSsrcCreatesDefaultStream) {
RTCConfiguration config;
- config.enable_dtls_srtp = true;
CreatePeerConnection(config);
std::string sdp_string = kSdpStringWithoutStreamsAudioOnly;
// Add a=msid lines to simulate a Unified Plan endpoint that only
@@ -2822,7 +2803,6 @@
TEST_F(PeerConnectionInterfaceTestPlanB,
SdpWithEmptyMsidAndSsrcCreatesDefaultStreamId) {
RTCConfiguration config;
- config.enable_dtls_srtp = true;
CreatePeerConnection(config);
// Add a a=msid line to the SDP. This is prioritized when parsing the SDP, so
// the sender's stream ID will be interpreted as no stream IDs.
@@ -2860,7 +2840,6 @@
// Don't run under Unified Plan since this behavior is Plan B specific.
TEST_F(PeerConnectionInterfaceTestPlanB, LocalDescriptionChanged) {
RTCConfiguration config;
- config.enable_dtls_srtp = true;
CreatePeerConnection(config);
// Create an offer with 1 stream with 2 tracks of each type.
@@ -2899,7 +2878,6 @@
TEST_F(PeerConnectionInterfaceTestPlanB,
AddLocalStreamAfterLocalDescriptionChanged) {
RTCConfiguration config;
- config.enable_dtls_srtp = true;
CreatePeerConnection(config);
rtc::scoped_refptr<StreamCollection> stream_collection =
@@ -2928,7 +2906,6 @@
TEST_P(PeerConnectionInterfaceTest,
ChangeSsrcOnTrackInLocalSessionDescription) {
RTCConfiguration config;
- config.enable_dtls_srtp = true;
CreatePeerConnection(config);
AddAudioTrack(kAudioTracks[0]);
@@ -2981,7 +2958,6 @@
TEST_F(PeerConnectionInterfaceTestPlanB,
SignalSameTracksInSeparateMediaStream) {
RTCConfiguration config;
- config.enable_dtls_srtp = true;
CreatePeerConnection(config);
rtc::scoped_refptr<StreamCollection> stream_collection =
@@ -3018,7 +2994,6 @@
// This tests that PeerConnectionObserver::OnAddTrack is correctly called.
TEST_P(PeerConnectionInterfaceTest, OnAddTrackCallback) {
RTCConfiguration config;
- config.enable_dtls_srtp = true;
CreatePeerConnection(config);
CreateAndSetRemoteOffer(kSdpStringWithStream1AudioTrackOnly);
EXPECT_EQ(observer_.num_added_tracks_, 1);
diff --git a/sdk/android/api/org/webrtc/PeerConnection.java b/sdk/android/api/org/webrtc/PeerConnection.java
index 67b551c..7ad72c4 100644
--- a/sdk/android/api/org/webrtc/PeerConnection.java
+++ b/sdk/android/api/org/webrtc/PeerConnection.java
@@ -527,7 +527,6 @@
public boolean suspendBelowMinBitrate;
@Nullable public Integer screencastMinBitrate;
@Nullable public Boolean combinedAudioVideoBwe;
- @Nullable public Boolean enableDtlsSrtp;
// Use "Unknown" to represent no preference of adapter types, not the
// preference of adapters of unknown types.
public AdapterType networkPreference;
@@ -608,7 +607,6 @@
suspendBelowMinBitrate = false;
screencastMinBitrate = null;
combinedAudioVideoBwe = null;
- enableDtlsSrtp = null;
networkPreference = AdapterType.UNKNOWN;
sdpSemantics = SdpSemantics.PLAN_B;
activeResetSrtpParams = false;
@@ -800,12 +798,6 @@
return combinedAudioVideoBwe;
}
- @Nullable
- @CalledByNative("RTCConfiguration")
- Boolean getEnableDtlsSrtp() {
- return enableDtlsSrtp;
- }
-
@CalledByNative("RTCConfiguration")
AdapterType getNetworkPreference() {
return networkPreference;
diff --git a/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionEndToEndTest.java b/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionEndToEndTest.java
index cc09322..1281cbe 100644
--- a/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionEndToEndTest.java
+++ b/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionEndToEndTest.java
@@ -677,7 +677,6 @@
.createIceServer());
PeerConnection.RTCConfiguration rtcConfig = new PeerConnection.RTCConfiguration(iceServers);
- rtcConfig.enableDtlsSrtp = true;
ObserverExpectations offeringExpectations = new ObserverExpectations("PCTest:offerer");
PeerConnection offeringPC = factory.createPeerConnection(rtcConfig, offeringExpectations);
@@ -944,7 +943,6 @@
.createIceServer());
PeerConnection.RTCConfiguration rtcConfig = new PeerConnection.RTCConfiguration(iceServers);
- rtcConfig.enableDtlsSrtp = true;
ObserverExpectations offeringExpectations = new ObserverExpectations("PCTest:offerer");
PeerConnection offeringPC = factory.createPeerConnection(rtcConfig, offeringExpectations);
@@ -1172,7 +1170,6 @@
PeerConnection.IceServer.builder("stun:stun.l.google.com:19302").createIceServer());
PeerConnection.RTCConfiguration rtcConfig = new PeerConnection.RTCConfiguration(iceServers);
- rtcConfig.enableDtlsSrtp = true;
ObserverExpectations offeringExpectations = new ObserverExpectations("PCTest:offerer");
PeerConnection offeringPC = factory.createPeerConnection(rtcConfig, offeringExpectations);
diff --git a/sdk/android/src/jni/pc/peer_connection.cc b/sdk/android/src/jni/pc/peer_connection.cc
index 0b0d408..abd7ac7 100644
--- a/sdk/android/src/jni/pc/peer_connection.cc
+++ b/sdk/android/src/jni/pc/peer_connection.cc
@@ -263,8 +263,6 @@
jni, Java_RTCConfiguration_getScreencastMinBitrate(jni, j_rtc_config));
rtc_config->combined_audio_video_bwe = JavaToNativeOptionalBool(
jni, Java_RTCConfiguration_getCombinedAudioVideoBwe(jni, j_rtc_config));
- rtc_config->enable_dtls_srtp = JavaToNativeOptionalBool(
- jni, Java_RTCConfiguration_getEnableDtlsSrtp(jni, j_rtc_config));
rtc_config->network_preference =
JavaToNativeNetworkPreference(jni, j_network_preference);
rtc_config->sdp_semantics = JavaToNativeSdpSemantics(jni, j_sdp_semantics);
diff --git a/sdk/media_constraints.cc b/sdk/media_constraints.cc
index 2236f50..08bd9dc 100644
--- a/sdk/media_constraints.cc
+++ b/sdk/media_constraints.cc
@@ -117,7 +117,6 @@
const char MediaConstraints::kUseRtpMux[] = "googUseRtpMUX";
// Below constraints should be used during PeerConnection construction.
-const char MediaConstraints::kEnableDtlsSrtp[] = "DtlsSrtpKeyAgreement";
// Google-specific constraint keys.
const char MediaConstraints::kEnableDscp[] = "googDscp";
const char MediaConstraints::kEnableIPv6[] = "googIPv6";
@@ -176,8 +175,6 @@
ConstraintToOptional<bool>(constraints,
MediaConstraints::kCombinedAudioVideoBwe,
&configuration->combined_audio_video_bwe);
- ConstraintToOptional<bool>(constraints, MediaConstraints::kEnableDtlsSrtp,
- &configuration->enable_dtls_srtp);
}
void CopyConstraintsIntoAudioOptions(const MediaConstraints* constraints,
diff --git a/sdk/media_constraints.h b/sdk/media_constraints.h
index 15cb363..fd95a60 100644
--- a/sdk/media_constraints.h
+++ b/sdk/media_constraints.h
@@ -83,8 +83,6 @@
static const char kValueFalse[]; // false
// PeerConnection constraint keys.
- // Temporary pseudo-constraints used to enable DTLS-SRTP
- static const char kEnableDtlsSrtp[]; // Enable DTLS-SRTP
// Google-specific constraint keys.
// Temporary pseudo-constraint for enabling DSCP through JS.
static const char kEnableDscp[]; // googDscp
diff --git a/sdk/media_constraints_unittest.cc b/sdk/media_constraints_unittest.cc
index dab85eb..478ba98 100644
--- a/sdk/media_constraints_unittest.cc
+++ b/sdk/media_constraints_unittest.cc
@@ -25,7 +25,6 @@
b.audio_jitter_buffer_max_packets &&
a.screencast_min_bitrate == b.screencast_min_bitrate &&
a.combined_audio_video_bwe == b.combined_audio_video_bwe &&
- a.enable_dtls_srtp == b.enable_dtls_srtp &&
a.media_config == b.media_config;
}
@@ -60,12 +59,9 @@
// An empty set of constraints will not overwrite
// values that are already present.
configuration = old_configuration;
- configuration.enable_dtls_srtp = true;
configuration.audio_jitter_buffer_max_packets = 34;
CopyConstraintsIntoRtcConfiguration(&constraints_empty, &configuration);
EXPECT_EQ(34, configuration.audio_jitter_buffer_max_packets);
- ASSERT_TRUE(configuration.enable_dtls_srtp);
- EXPECT_TRUE(*(configuration.enable_dtls_srtp));
}
} // namespace