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

Side by Side Diff: webrtc/pc/channel.h

Issue 2815513012: Negotiate the same SRTP crypto suites for every DTLS association formed. (Closed)
Patch Set: Merge with master Created 3 years, 8 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/p2p/base/transportcontroller.cc ('k') | webrtc/pc/channel.cc » ('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 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 196
197 // Only public for unit tests. Otherwise, consider protected. 197 // Only public for unit tests. Otherwise, consider protected.
198 int SetOption(SocketType type, rtc::Socket::Option o, int val) 198 int SetOption(SocketType type, rtc::Socket::Option o, int val)
199 override; 199 override;
200 int SetOption_n(SocketType type, rtc::Socket::Option o, int val); 200 int SetOption_n(SocketType type, rtc::Socket::Option o, int val);
201 201
202 SrtpFilter* srtp_filter() { return &srtp_filter_; } 202 SrtpFilter* srtp_filter() { return &srtp_filter_; }
203 203
204 virtual cricket::MediaType media_type() = 0; 204 virtual cricket::MediaType media_type() = 0;
205 205
206 bool SetCryptoOptions(const rtc::CryptoOptions& crypto_options);
207
208 // This function returns true if we require SRTP for call setup. 206 // This function returns true if we require SRTP for call setup.
209 bool srtp_required_for_testing() const { return srtp_required_; } 207 bool srtp_required_for_testing() const { return srtp_required_; }
210 208
211 protected: 209 protected:
212 virtual MediaChannel* media_channel() const { return media_channel_; } 210 virtual MediaChannel* media_channel() const { return media_channel_; }
213 211
214 void SetTransports_n(DtlsTransportInternal* rtp_dtls_transport, 212 void SetTransports_n(DtlsTransportInternal* rtp_dtls_transport,
215 DtlsTransportInternal* rtcp_dtls_transport, 213 DtlsTransportInternal* rtcp_dtls_transport,
216 rtc::PacketTransportInternal* rtp_packet_transport, 214 rtc::PacketTransportInternal* rtp_packet_transport,
217 rtc::PacketTransportInternal* rtcp_packet_transport); 215 rtc::PacketTransportInternal* rtcp_packet_transport);
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 297
300 bool AddRecvStream_w(const StreamParams& sp); 298 bool AddRecvStream_w(const StreamParams& sp);
301 bool RemoveRecvStream_w(uint32_t ssrc); 299 bool RemoveRecvStream_w(uint32_t ssrc);
302 bool AddSendStream_w(const StreamParams& sp); 300 bool AddSendStream_w(const StreamParams& sp);
303 bool RemoveSendStream_w(uint32_t ssrc); 301 bool RemoveSendStream_w(uint32_t ssrc);
304 bool ShouldSetupDtlsSrtp_n() const; 302 bool ShouldSetupDtlsSrtp_n() const;
305 // Do the DTLS key expansion and impose it on the SRTP/SRTCP filters. 303 // Do the DTLS key expansion and impose it on the SRTP/SRTCP filters.
306 // |rtcp_channel| indicates whether to set up the RTP or RTCP filter. 304 // |rtcp_channel| indicates whether to set up the RTP or RTCP filter.
307 bool SetupDtlsSrtp_n(bool rtcp); 305 bool SetupDtlsSrtp_n(bool rtcp);
308 void MaybeSetupDtlsSrtp_n(); 306 void MaybeSetupDtlsSrtp_n();
309 // Set the DTLS-SRTP cipher policy on this channel as appropriate.
310 bool SetDtlsSrtpCryptoSuites_n(DtlsTransportInternal* transport, bool rtcp);
311 307
312 // Should be called whenever the conditions for 308 // Should be called whenever the conditions for
313 // IsReadyToReceiveMedia/IsReadyToSendMedia are satisfied (or unsatisfied). 309 // IsReadyToReceiveMedia/IsReadyToSendMedia are satisfied (or unsatisfied).
314 // Updates the send/recv state of the media channel. 310 // Updates the send/recv state of the media channel.
315 void UpdateMediaSendRecvState(); 311 void UpdateMediaSendRecvState();
316 virtual void UpdateMediaSendRecvState_w() = 0; 312 virtual void UpdateMediaSendRecvState_w() = 0;
317 313
318 // Gets the content info appropriate to the channel (audio or video). 314 // Gets the content info appropriate to the channel (audio or video).
319 virtual const ContentInfo* GetFirstContent( 315 virtual const ContentInfo* GetFirstContent(
320 const SessionDescription* sdesc) = 0; 316 const SessionDescription* sdesc) = 0;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 ContentSource src, 348 ContentSource src,
353 std::string* error_desc); 349 std::string* error_desc);
354 bool SetRtcpMux_n(bool enable, 350 bool SetRtcpMux_n(bool enable,
355 ContentAction action, 351 ContentAction action,
356 ContentSource src, 352 ContentSource src,
357 std::string* error_desc); 353 std::string* error_desc);
358 354
359 // From MessageHandler 355 // From MessageHandler
360 void OnMessage(rtc::Message* pmsg) override; 356 void OnMessage(rtc::Message* pmsg) override;
361 357
362 const rtc::CryptoOptions& crypto_options() const {
363 return crypto_options_;
364 }
365
366 // Handled in derived classes 358 // Handled in derived classes
367 // Get the SRTP crypto suites to use for RTP media
368 virtual void GetSrtpCryptoSuites_n(std::vector<int>* crypto_suites) const = 0;
369 virtual void OnConnectionMonitorUpdate(ConnectionMonitor* monitor, 359 virtual void OnConnectionMonitorUpdate(ConnectionMonitor* monitor,
370 const std::vector<ConnectionInfo>& infos) = 0; 360 const std::vector<ConnectionInfo>& infos) = 0;
371 361
372 // Helper function for invoking bool-returning methods on the worker thread. 362 // Helper function for invoking bool-returning methods on the worker thread.
373 template <class FunctorT> 363 template <class FunctorT>
374 bool InvokeOnWorker(const rtc::Location& posted_from, 364 bool InvokeOnWorker(const rtc::Location& posted_from,
375 const FunctorT& functor) { 365 const FunctorT& functor) {
376 return worker_thread_->Invoke<bool>(posted_from, functor); 366 return worker_thread_->Invoke<bool>(posted_from, functor);
377 } 367 }
378 368
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 SrtpFilter srtp_filter_; 402 SrtpFilter srtp_filter_;
413 RtcpMuxFilter rtcp_mux_filter_; 403 RtcpMuxFilter rtcp_mux_filter_;
414 BundleFilter bundle_filter_; 404 BundleFilter bundle_filter_;
415 bool rtp_ready_to_send_ = false; 405 bool rtp_ready_to_send_ = false;
416 bool rtcp_ready_to_send_ = false; 406 bool rtcp_ready_to_send_ = false;
417 bool writable_ = false; 407 bool writable_ = false;
418 bool was_ever_writable_ = false; 408 bool was_ever_writable_ = false;
419 bool has_received_packet_ = false; 409 bool has_received_packet_ = false;
420 bool dtls_keyed_ = false; 410 bool dtls_keyed_ = false;
421 const bool srtp_required_ = true; 411 const bool srtp_required_ = true;
422 rtc::CryptoOptions crypto_options_;
423 int rtp_abs_sendtime_extn_id_ = -1; 412 int rtp_abs_sendtime_extn_id_ = -1;
424 413
425 // MediaChannel related members that should be accessed from the worker 414 // MediaChannel related members that should be accessed from the worker
426 // thread. 415 // thread.
427 MediaChannel* const media_channel_; 416 MediaChannel* const media_channel_;
428 // Currently the |enabled_| flag is accessed from the signaling thread as 417 // Currently the |enabled_| flag is accessed from the signaling thread as
429 // well, but it can be changed only when signaling thread does a synchronous 418 // well, but it can be changed only when signaling thread does a synchronous
430 // call to the worker thread, so it should be safe. 419 // call to the worker thread, so it should be safe.
431 bool enabled_ = false; 420 bool enabled_ = false;
432 std::vector<StreamParams> local_streams_; 421 std::vector<StreamParams> local_streams_;
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 ContentAction action, 516 ContentAction action,
528 std::string* error_desc) override; 517 std::string* error_desc) override;
529 bool SetRemoteContent_w(const MediaContentDescription* content, 518 bool SetRemoteContent_w(const MediaContentDescription* content,
530 ContentAction action, 519 ContentAction action,
531 std::string* error_desc) override; 520 std::string* error_desc) override;
532 void HandleEarlyMediaTimeout(); 521 void HandleEarlyMediaTimeout();
533 bool InsertDtmf_w(uint32_t ssrc, int event, int duration); 522 bool InsertDtmf_w(uint32_t ssrc, int event, int duration);
534 bool SetOutputVolume_w(uint32_t ssrc, double volume); 523 bool SetOutputVolume_w(uint32_t ssrc, double volume);
535 524
536 void OnMessage(rtc::Message* pmsg) override; 525 void OnMessage(rtc::Message* pmsg) override;
537 void GetSrtpCryptoSuites_n(std::vector<int>* crypto_suites) const override;
538 void OnConnectionMonitorUpdate( 526 void OnConnectionMonitorUpdate(
539 ConnectionMonitor* monitor, 527 ConnectionMonitor* monitor,
540 const std::vector<ConnectionInfo>& infos) override; 528 const std::vector<ConnectionInfo>& infos) override;
541 void OnMediaMonitorUpdate(VoiceMediaChannel* media_channel, 529 void OnMediaMonitorUpdate(VoiceMediaChannel* media_channel,
542 const VoiceMediaInfo& info); 530 const VoiceMediaInfo& info);
543 void OnAudioMonitorUpdate(AudioMonitor* monitor, const AudioInfo& info); 531 void OnAudioMonitorUpdate(AudioMonitor* monitor, const AudioInfo& info);
544 532
545 static const int kEarlyMediaTimeout = 1000; 533 static const int kEarlyMediaTimeout = 1000;
546 MediaEngineInterface* media_engine_; 534 MediaEngineInterface* media_engine_;
547 bool received_media_; 535 bool received_media_;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 ContentAction action, 598 ContentAction action,
611 std::string* error_desc) override; 599 std::string* error_desc) override;
612 bool GetStats_w(VideoMediaInfo* stats); 600 bool GetStats_w(VideoMediaInfo* stats);
613 webrtc::RtpParameters GetRtpSendParameters_w(uint32_t ssrc) const; 601 webrtc::RtpParameters GetRtpSendParameters_w(uint32_t ssrc) const;
614 bool SetRtpSendParameters_w(uint32_t ssrc, webrtc::RtpParameters parameters); 602 bool SetRtpSendParameters_w(uint32_t ssrc, webrtc::RtpParameters parameters);
615 webrtc::RtpParameters GetRtpReceiveParameters_w(uint32_t ssrc) const; 603 webrtc::RtpParameters GetRtpReceiveParameters_w(uint32_t ssrc) const;
616 bool SetRtpReceiveParameters_w(uint32_t ssrc, 604 bool SetRtpReceiveParameters_w(uint32_t ssrc,
617 webrtc::RtpParameters parameters); 605 webrtc::RtpParameters parameters);
618 606
619 void OnMessage(rtc::Message* pmsg) override; 607 void OnMessage(rtc::Message* pmsg) override;
620 void GetSrtpCryptoSuites_n(std::vector<int>* crypto_suites) const override;
621 void OnConnectionMonitorUpdate( 608 void OnConnectionMonitorUpdate(
622 ConnectionMonitor* monitor, 609 ConnectionMonitor* monitor,
623 const std::vector<ConnectionInfo>& infos) override; 610 const std::vector<ConnectionInfo>& infos) override;
624 void OnMediaMonitorUpdate(VideoMediaChannel* media_channel, 611 void OnMediaMonitorUpdate(VideoMediaChannel* media_channel,
625 const VideoMediaInfo& info); 612 const VideoMediaInfo& info);
626 613
627 std::unique_ptr<VideoMediaMonitor> media_monitor_; 614 std::unique_ptr<VideoMediaMonitor> media_monitor_;
628 615
629 // Last VideoSendParameters sent down to the media_channel() via 616 // Last VideoSendParameters sent down to the media_channel() via
630 // SetSendParameters. 617 // SetSendParameters.
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 std::string* error_desc); 706 std::string* error_desc);
720 bool SetLocalContent_w(const MediaContentDescription* content, 707 bool SetLocalContent_w(const MediaContentDescription* content,
721 ContentAction action, 708 ContentAction action,
722 std::string* error_desc) override; 709 std::string* error_desc) override;
723 bool SetRemoteContent_w(const MediaContentDescription* content, 710 bool SetRemoteContent_w(const MediaContentDescription* content,
724 ContentAction action, 711 ContentAction action,
725 std::string* error_desc) override; 712 std::string* error_desc) override;
726 void UpdateMediaSendRecvState_w() override; 713 void UpdateMediaSendRecvState_w() override;
727 714
728 void OnMessage(rtc::Message* pmsg) override; 715 void OnMessage(rtc::Message* pmsg) override;
729 void GetSrtpCryptoSuites_n(std::vector<int>* crypto_suites) const override;
730 void OnConnectionMonitorUpdate( 716 void OnConnectionMonitorUpdate(
731 ConnectionMonitor* monitor, 717 ConnectionMonitor* monitor,
732 const std::vector<ConnectionInfo>& infos) override; 718 const std::vector<ConnectionInfo>& infos) override;
733 void OnMediaMonitorUpdate(DataMediaChannel* media_channel, 719 void OnMediaMonitorUpdate(DataMediaChannel* media_channel,
734 const DataMediaInfo& info); 720 const DataMediaInfo& info);
735 void OnDataReceived( 721 void OnDataReceived(
736 const ReceiveDataParams& params, const char* data, size_t len); 722 const ReceiveDataParams& params, const char* data, size_t len);
737 void OnDataChannelError(uint32_t ssrc, DataMediaChannel::Error error); 723 void OnDataChannelError(uint32_t ssrc, DataMediaChannel::Error error);
738 void OnDataChannelReadyToSend(bool writable); 724 void OnDataChannelReadyToSend(bool writable);
739 725
740 std::unique_ptr<DataMediaMonitor> media_monitor_; 726 std::unique_ptr<DataMediaMonitor> media_monitor_;
741 bool ready_to_send_data_ = false; 727 bool ready_to_send_data_ = false;
742 728
743 // Last DataSendParameters sent down to the media_channel() via 729 // Last DataSendParameters sent down to the media_channel() via
744 // SetSendParameters. 730 // SetSendParameters.
745 DataSendParameters last_send_params_; 731 DataSendParameters last_send_params_;
746 // Last DataRecvParameters sent down to the media_channel() via 732 // Last DataRecvParameters sent down to the media_channel() via
747 // SetRecvParameters. 733 // SetRecvParameters.
748 DataRecvParameters last_recv_params_; 734 DataRecvParameters last_recv_params_;
749 }; 735 };
750 736
751 } // namespace cricket 737 } // namespace cricket
752 738
753 #endif // WEBRTC_PC_CHANNEL_H_ 739 #endif // WEBRTC_PC_CHANNEL_H_
OLDNEW
« no previous file with comments | « webrtc/p2p/base/transportcontroller.cc ('k') | webrtc/pc/channel.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698