Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(85)

Side by Side Diff: webrtc/pc/channelmanager.cc

Issue 1528843005: Add support for GCM cipher suites from RFC 7714. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Disable GCM if ENABLE_EXTERNAL_AUTH is defined. Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/pc/channelmanager.h ('k') | webrtc/pc/mediasession.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2004 The WebRTC project authors. All Rights Reserved. 2 * Copyright 2004 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 rtc::Thread* worker_thread, 57 rtc::Thread* worker_thread,
58 rtc::Thread* network_thread) { 58 rtc::Thread* network_thread) {
59 media_engine_.reset(me); 59 media_engine_.reset(me);
60 data_media_engine_.reset(dme); 60 data_media_engine_.reset(dme);
61 initialized_ = false; 61 initialized_ = false;
62 main_thread_ = rtc::Thread::Current(); 62 main_thread_ = rtc::Thread::Current();
63 worker_thread_ = worker_thread; 63 worker_thread_ = worker_thread;
64 network_thread_ = network_thread; 64 network_thread_ = network_thread;
65 capturing_ = false; 65 capturing_ = false;
66 enable_rtx_ = false; 66 enable_rtx_ = false;
67 crypto_options_ = rtc::CryptoOptions::NoGcm();
67 } 68 }
68 69
69 ChannelManager::~ChannelManager() { 70 ChannelManager::~ChannelManager() {
70 if (initialized_) { 71 if (initialized_) {
71 Terminate(); 72 Terminate();
72 // If srtp is initialized (done by the Channel) then we must call 73 // If srtp is initialized (done by the Channel) then we must call
73 // srtp_shutdown to free all crypto kernel lists. But we need to make sure 74 // srtp_shutdown to free all crypto kernel lists. But we need to make sure
74 // shutdown always called at the end, after channels are destroyed. 75 // shutdown always called at the end, after channels are destroyed.
75 // ChannelManager d'tor is always called last, it's safe place to call 76 // ChannelManager d'tor is always called last, it's safe place to call
76 // shutdown. 77 // shutdown.
(...skipping 13 matching lines...) Expand all
90 // app. 91 // app.
91 if (!initialized_) { 92 if (!initialized_) {
92 enable_rtx_ = enable; 93 enable_rtx_ = enable;
93 return true; 94 return true;
94 } else { 95 } else {
95 LOG(LS_WARNING) << "Cannot toggle rtx after initialization!"; 96 LOG(LS_WARNING) << "Cannot toggle rtx after initialization!";
96 return false; 97 return false;
97 } 98 }
98 } 99 }
99 100
101 bool ChannelManager::SetCryptoOptions(
102 const rtc::CryptoOptions& crypto_options) {
103 return worker_thread_->Invoke<bool>(RTC_FROM_HERE, Bind(
104 &ChannelManager::SetCryptoOptions_w, this, crypto_options));
105 }
106
107 bool ChannelManager::SetCryptoOptions_w(
108 const rtc::CryptoOptions& crypto_options) {
109 if (!video_channels_.empty() || !voice_channels_.empty() ||
110 !data_channels_.empty()) {
111 LOG(LS_WARNING) << "Not changing crypto options in existing channels.";
112 }
113 crypto_options_ = crypto_options;
114 #if defined(ENABLE_EXTERNAL_AUTH)
115 if (crypto_options_.enable_gcm_crypto_suites) {
116 // TODO(jbauch): Re-enable once https://crbug.com/628400 is resolved.
117 crypto_options_.enable_gcm_crypto_suites = false;
118 LOG(LS_WARNING) << "GCM ciphers are not supported with " <<
119 "ENABLE_EXTERNAL_AUTH and will be disabled.";
120 }
121 #endif
122 return true;
123 }
124
100 void ChannelManager::GetSupportedAudioSendCodecs( 125 void ChannelManager::GetSupportedAudioSendCodecs(
101 std::vector<AudioCodec>* codecs) const { 126 std::vector<AudioCodec>* codecs) const {
102 *codecs = media_engine_->audio_send_codecs(); 127 *codecs = media_engine_->audio_send_codecs();
103 } 128 }
104 129
105 void ChannelManager::GetSupportedAudioReceiveCodecs( 130 void ChannelManager::GetSupportedAudioReceiveCodecs(
106 std::vector<AudioCodec>* codecs) const { 131 std::vector<AudioCodec>* codecs) const {
107 *codecs = media_engine_->audio_recv_codecs(); 132 *codecs = media_engine_->audio_recv_codecs();
108 } 133 }
109 134
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 ASSERT(worker_thread_ == rtc::Thread::Current()); 236 ASSERT(worker_thread_ == rtc::Thread::Current());
212 ASSERT(nullptr != media_controller); 237 ASSERT(nullptr != media_controller);
213 VoiceMediaChannel* media_channel = media_engine_->CreateChannel( 238 VoiceMediaChannel* media_channel = media_engine_->CreateChannel(
214 media_controller->call_w(), media_controller->config(), options); 239 media_controller->call_w(), media_controller->config(), options);
215 if (!media_channel) 240 if (!media_channel)
216 return nullptr; 241 return nullptr;
217 242
218 VoiceChannel* voice_channel = 243 VoiceChannel* voice_channel =
219 new VoiceChannel(worker_thread_, network_thread_, media_engine_.get(), 244 new VoiceChannel(worker_thread_, network_thread_, media_engine_.get(),
220 media_channel, transport_controller, content_name, rtcp); 245 media_channel, transport_controller, content_name, rtcp);
246 voice_channel->SetCryptoOptions(crypto_options_);
221 if (!voice_channel->Init_w(bundle_transport_name)) { 247 if (!voice_channel->Init_w(bundle_transport_name)) {
222 delete voice_channel; 248 delete voice_channel;
223 return nullptr; 249 return nullptr;
224 } 250 }
225 voice_channels_.push_back(voice_channel); 251 voice_channels_.push_back(voice_channel);
226 return voice_channel; 252 return voice_channel;
227 } 253 }
228 254
229 void ChannelManager::DestroyVoiceChannel(VoiceChannel* voice_channel) { 255 void ChannelManager::DestroyVoiceChannel(VoiceChannel* voice_channel) {
230 TRACE_EVENT0("webrtc", "ChannelManager::DestroyVoiceChannel"); 256 TRACE_EVENT0("webrtc", "ChannelManager::DestroyVoiceChannel");
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 ASSERT(nullptr != media_controller); 300 ASSERT(nullptr != media_controller);
275 VideoMediaChannel* media_channel = media_engine_->CreateVideoChannel( 301 VideoMediaChannel* media_channel = media_engine_->CreateVideoChannel(
276 media_controller->call_w(), media_controller->config(), options); 302 media_controller->call_w(), media_controller->config(), options);
277 if (media_channel == NULL) { 303 if (media_channel == NULL) {
278 return NULL; 304 return NULL;
279 } 305 }
280 306
281 VideoChannel* video_channel = 307 VideoChannel* video_channel =
282 new VideoChannel(worker_thread_, network_thread_, media_channel, 308 new VideoChannel(worker_thread_, network_thread_, media_channel,
283 transport_controller, content_name, rtcp); 309 transport_controller, content_name, rtcp);
310 video_channel->SetCryptoOptions(crypto_options_);
284 if (!video_channel->Init_w(bundle_transport_name)) { 311 if (!video_channel->Init_w(bundle_transport_name)) {
285 delete video_channel; 312 delete video_channel;
286 return NULL; 313 return NULL;
287 } 314 }
288 video_channels_.push_back(video_channel); 315 video_channels_.push_back(video_channel);
289 return video_channel; 316 return video_channel;
290 } 317 }
291 318
292 void ChannelManager::DestroyVideoChannel(VideoChannel* video_channel) { 319 void ChannelManager::DestroyVideoChannel(VideoChannel* video_channel) {
293 TRACE_EVENT0("webrtc", "ChannelManager::DestroyVideoChannel"); 320 TRACE_EVENT0("webrtc", "ChannelManager::DestroyVideoChannel");
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 data_channel_type); 364 data_channel_type);
338 if (!media_channel) { 365 if (!media_channel) {
339 LOG(LS_WARNING) << "Failed to create data channel of type " 366 LOG(LS_WARNING) << "Failed to create data channel of type "
340 << data_channel_type; 367 << data_channel_type;
341 return NULL; 368 return NULL;
342 } 369 }
343 370
344 DataChannel* data_channel = 371 DataChannel* data_channel =
345 new DataChannel(worker_thread_, network_thread_, media_channel, 372 new DataChannel(worker_thread_, network_thread_, media_channel,
346 transport_controller, content_name, rtcp); 373 transport_controller, content_name, rtcp);
374 data_channel->SetCryptoOptions(crypto_options_);
347 if (!data_channel->Init_w(bundle_transport_name)) { 375 if (!data_channel->Init_w(bundle_transport_name)) {
348 LOG(LS_WARNING) << "Failed to init data channel."; 376 LOG(LS_WARNING) << "Failed to init data channel.";
349 delete data_channel; 377 delete data_channel;
350 return NULL; 378 return NULL;
351 } 379 }
352 data_channels_.push_back(data_channel); 380 data_channels_.push_back(data_channel);
353 return data_channel; 381 return data_channel;
354 } 382 }
355 383
356 void ChannelManager::DestroyDataChannel(DataChannel* data_channel) { 384 void ChannelManager::DestroyDataChannel(DataChannel* data_channel) {
(...skipping 26 matching lines...) Expand all
383 media_engine_.get(), file, max_size_bytes)); 411 media_engine_.get(), file, max_size_bytes));
384 } 412 }
385 413
386 void ChannelManager::StopAecDump() { 414 void ChannelManager::StopAecDump() {
387 worker_thread_->Invoke<void>( 415 worker_thread_->Invoke<void>(
388 RTC_FROM_HERE, 416 RTC_FROM_HERE,
389 Bind(&MediaEngineInterface::StopAecDump, media_engine_.get())); 417 Bind(&MediaEngineInterface::StopAecDump, media_engine_.get()));
390 } 418 }
391 419
392 } // namespace cricket 420 } // namespace cricket
OLDNEW
« no previous file with comments | « webrtc/pc/channelmanager.h ('k') | webrtc/pc/mediasession.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698