New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 9681 link

Starred by 6 users

Issue metadata

Status: Fixed
Owner:
Closed: Oct 22
Cc:
NextAction: ----
OS: ----
Pri: 2
Type: Bug



Sign in to add a comment

Integrate Per Frame Encryption Interface Into WebRTC

Project Member Reported by benwri...@webrtc.org, Aug 28

Issue description

Integrate an interface that allows users to provide per frame encryption into WebRTC.
 
Project Member

Comment 1 by bugdroid1@chromium.org, Aug 29

The following revision refers to this bug:
  https://webrtc.googlesource.com/src.git/+/ea0869145ed5ccc743908c51e882c747bbefa25e

commit ea0869145ed5ccc743908c51e882c747bbefa25e
Author: Benjamin Wright <benwright@webrtc.org>
Date: Wed Aug 29 21:15:19 2018

This change integrates the FrameEncryptorInterface and the
FrameDecryptorInterface into the public WebRTC API surface.

This change just addresses the headers and not the internal changes.

Bug:  webrtc:9681 
Change-Id: I1db0172fe55ba378f62e7781c2b7dcdb93d63239
Reviewed-on: https://webrtc-review.googlesource.com/96622
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24488}
[modify] https://crrev.com/ea0869145ed5ccc743908c51e882c747bbefa25e/api/BUILD.gn
[add] https://crrev.com/ea0869145ed5ccc743908c51e882c747bbefa25e/api/crypto/framedecryptorinterface.h
[add] https://crrev.com/ea0869145ed5ccc743908c51e882c747bbefa25e/api/crypto/frameencryptorinterface.h

Project Member

Comment 2 by bugdroid1@chromium.org, Aug 30

The following revision refers to this bug:
  https://webrtc.googlesource.com/src.git/+/d81ac953aa2529c6a7e01351be15a021132c3561

commit d81ac953aa2529c6a7e01351be15a021132c3561
Author: Benjamin Wright <benwright@webrtc.org>
Date: Thu Aug 30 00:33:54 2018

Injects FrameEncryptorInterface into RtpSender.

This change injects the FrameEncryptorInterface and the FrameDecryptorInterface
into the RtpSenderInterface and RtpReceiverInterface respectively. This is the
second stage of the injection. In a follow up CL non owning pointers to these
values will be passed down into the media channel.

This change also updates the corresponding mock files.

Bug:  webrtc:9681 
Change-Id: I964084fc270e10af9d1127979e713493e6fbba7d
Reviewed-on: https://webrtc-review.googlesource.com/96625
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24489}
[modify] https://crrev.com/d81ac953aa2529c6a7e01351be15a021132c3561/api/BUILD.gn
[modify] https://crrev.com/d81ac953aa2529c6a7e01351be15a021132c3561/api/crypto/framedecryptorinterface.h
[modify] https://crrev.com/d81ac953aa2529c6a7e01351be15a021132c3561/api/crypto/frameencryptorinterface.h
[modify] https://crrev.com/d81ac953aa2529c6a7e01351be15a021132c3561/api/rtpreceiverinterface.cc
[modify] https://crrev.com/d81ac953aa2529c6a7e01351be15a021132c3561/api/rtpreceiverinterface.h
[add] https://crrev.com/d81ac953aa2529c6a7e01351be15a021132c3561/api/rtpsenderinterface.cc
[modify] https://crrev.com/d81ac953aa2529c6a7e01351be15a021132c3561/api/rtpsenderinterface.h
[modify] https://crrev.com/d81ac953aa2529c6a7e01351be15a021132c3561/pc/rtpreceiver.cc
[modify] https://crrev.com/d81ac953aa2529c6a7e01351be15a021132c3561/pc/rtpreceiver.h
[modify] https://crrev.com/d81ac953aa2529c6a7e01351be15a021132c3561/pc/rtpsender.cc
[modify] https://crrev.com/d81ac953aa2529c6a7e01351be15a021132c3561/pc/rtpsender.h
[modify] https://crrev.com/d81ac953aa2529c6a7e01351be15a021132c3561/pc/test/mock_rtpreceiverinternal.h
[modify] https://crrev.com/d81ac953aa2529c6a7e01351be15a021132c3561/pc/test/mock_rtpsenderinternal.h

Project Member

Comment 3 by bugdroid1@chromium.org, Sep 6

The following revision refers to this bug:
  https://webrtc.googlesource.com/src.git/+/ea8b6f95c7636a28c45c24420aa6d9e7255a0011

commit ea8b6f95c7636a28c45c24420aa6d9e7255a0011
Author: Benjamin Wright <benwright@webrtc.org>
Date: Thu Sep 06 19:41:21 2018

Adds the Java interface points for FrameEncryptor/FrameDecryptor.

This changes adds the API surface for injecting the FrameEncryptor and FrameDecryptor from Java.
This assumes that the API User will be able to provide native implementations of both the Encryptor
and Decryptor. Optional Java implementations may come later but due to the significant performance
issues around copying every frame across the JNI boundary it doesn't seem like a good idea to support
a non native backed implementation for now.

Bug:  webrtc:9681 
Change-Id: Ib4471e69fdf0a99705f824de652c621637b92326
Reviewed-on: https://webrtc-review.googlesource.com/96865
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Emad Omara <emadomara@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24610}
[modify] https://crrev.com/ea8b6f95c7636a28c45c24420aa6d9e7255a0011/sdk/android/BUILD.gn
[add] https://crrev.com/ea8b6f95c7636a28c45c24420aa6d9e7255a0011/sdk/android/api/org/webrtc/FrameDecryptor.java
[add] https://crrev.com/ea8b6f95c7636a28c45c24420aa6d9e7255a0011/sdk/android/api/org/webrtc/FrameEncryptor.java
[modify] https://crrev.com/ea8b6f95c7636a28c45c24420aa6d9e7255a0011/sdk/android/api/org/webrtc/RtpReceiver.java
[modify] https://crrev.com/ea8b6f95c7636a28c45c24420aa6d9e7255a0011/sdk/android/api/org/webrtc/RtpSender.java
[modify] https://crrev.com/ea8b6f95c7636a28c45c24420aa6d9e7255a0011/sdk/android/src/jni/pc/rtpreceiver.cc
[modify] https://crrev.com/ea8b6f95c7636a28c45c24420aa6d9e7255a0011/sdk/android/src/jni/pc/rtpsender.cc

Project Member

Comment 4 by bugdroid1@chromium.org, Sep 6

The following revision refers to this bug:
  https://webrtc.googlesource.com/src.git/+/88e3e3f570fd6fde550cf1e74c28cf086dc6bf1e

commit 88e3e3f570fd6fde550cf1e74c28cf086dc6bf1e
Author: Benjamin Wright <benwright@webrtc.org>
Date: Thu Sep 06 21:08:59 2018

Updated FrameEncryptorInterface and FrameDecryptorInterface with status code.

This change allows an implementer to provide a custom error code to be returned
on failure with 0 being reserved for success. It also modifies the output size
APIs to be more specific and requests the number of bytes written to be returned
so we can determine how many bytes we need to send.

Bug:  webrtc:9681 
Change-Id: I13d34861bf851527fcbb350d0cfb480c0f95a6b3
Reviewed-on: https://webrtc-review.googlesource.com/98720
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24613}
[modify] https://crrev.com/88e3e3f570fd6fde550cf1e74c28cf086dc6bf1e/api/crypto/framedecryptorinterface.h
[modify] https://crrev.com/88e3e3f570fd6fde550cf1e74c28cf086dc6bf1e/api/crypto/frameencryptorinterface.h

Project Member

Comment 5 by bugdroid1@chromium.org, Sep 11

The following revision refers to this bug:
  https://webrtc.googlesource.com/src.git/+/bfd412ef716c7865ad137ee0875ab8054b00166a

commit bfd412ef716c7865ad137ee0875ab8054b00166a
Author: Benjamin Wright <benwright@webrtc.org>
Date: Tue Sep 11 20:10:44 2018

Adds integration of the FrameEncryptor/FrameDecryptor into the MediaChannel.

This change passes a pointer (non-owning) down to the MediaChannel when set
in the RtpSender / RtpReceiver. This currently is not used to encrypt frames.

Bug:  webrtc:9681 
Change-Id: I385fa8b948427803cd3f9cef918c31d7754d1b4f
Reviewed-on: https://webrtc-review.googlesource.com/97000
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Emad Omara <emadomara@webrtc.org>
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24694}
[modify] https://crrev.com/bfd412ef716c7865ad137ee0875ab8054b00166a/media/base/mediachannel.cc
[modify] https://crrev.com/bfd412ef716c7865ad137ee0875ab8054b00166a/media/base/mediachannel.h
[modify] https://crrev.com/bfd412ef716c7865ad137ee0875ab8054b00166a/pc/rtpreceiver.cc
[modify] https://crrev.com/bfd412ef716c7865ad137ee0875ab8054b00166a/pc/rtpreceiver.h
[modify] https://crrev.com/bfd412ef716c7865ad137ee0875ab8054b00166a/pc/rtpsender.cc
[modify] https://crrev.com/bfd412ef716c7865ad137ee0875ab8054b00166a/pc/rtpsender.h

Project Member

Comment 6 by bugdroid1@chromium.org, Sep 12

The following revision refers to this bug:
  https://webrtc.googlesource.com/src.git/+/1f87ec681346e9bc30faeb25fda9a86b66eeb22f

commit 1f87ec681346e9bc30faeb25fda9a86b66eeb22f
Author: Benjamin Wright <benwright@webrtc.org>
Date: Wed Sep 12 21:09:30 2018

Add AEAD support to Frame Encryption API. Add Contribuitng Source To Decryptor.

This change allows supporting additional data for authentication and adds a
requirement for the contributing source to be provided during decryption.

Change-Id: Ifc19cb2d8a7d6c3715c83c95cf12f64df0bca454
Bug:  webrtc:9681 
Reviewed-on: https://webrtc-review.googlesource.com/100001
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24712}
[modify] https://crrev.com/1f87ec681346e9bc30faeb25fda9a86b66eeb22f/api/crypto/framedecryptorinterface.h
[modify] https://crrev.com/1f87ec681346e9bc30faeb25fda9a86b66eeb22f/api/crypto/frameencryptorinterface.h

Project Member

Comment 7 by bugdroid1@chromium.org, Oct 2

The following revision refers to this bug:
  https://webrtc.googlesource.com/src.git/+/ddf1a3e209ec27c8b7ca3d9821d6fc42146e6e19

commit ddf1a3e209ec27c8b7ca3d9821d6fc42146e6e19
Author: Benjamin Wright <benwright@webrtc.org>
Date: Tue Oct 02 18:34:32 2018

Add FrameEncryptor/FrameDecryptor support to Objective C API for WebRTC.

This change adds bindings so that native FrameEncryptor and native FrameDecryptor
objects can be set on the objective C RTCRtpSender and RTCRtpReceiver objects.

Bug:  webrtc:9681 
Change-Id: Iec4006ea020d6ab6adcc0ad068dcd8fb2738063d
Reviewed-on: https://webrtc-review.googlesource.com/c/103020
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Anders Carlsson <andersc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24936}
[modify] https://crrev.com/ddf1a3e209ec27c8b7ca3d9821d6fc42146e6e19/sdk/BUILD.gn
[add] https://crrev.com/ddf1a3e209ec27c8b7ca3d9821d6fc42146e6e19/sdk/objc/api/peerconnection/RTCRtpReceiver+Native.h
[modify] https://crrev.com/ddf1a3e209ec27c8b7ca3d9821d6fc42146e6e19/sdk/objc/api/peerconnection/RTCRtpReceiver.mm
[add] https://crrev.com/ddf1a3e209ec27c8b7ca3d9821d6fc42146e6e19/sdk/objc/api/peerconnection/RTCRtpSender+Native.h
[modify] https://crrev.com/ddf1a3e209ec27c8b7ca3d9821d6fc42146e6e19/sdk/objc/api/peerconnection/RTCRtpSender.mm

Project Member

Comment 8 by bugdroid1@chromium.org, Oct 3

The following revision refers to this bug:
  https://webrtc.googlesource.com/src.git/+/7988589e4858fd9b5844dada64d5c1be8812fe9e

commit 7988589e4858fd9b5844dada64d5c1be8812fe9e
Author: Benjamin Wright <benwright@webrtc.org>
Date: Wed Oct 03 15:56:36 2018

Add missing headers to new objective-c API.

I missed adding these headers in my inital check-in. This change simply adds
these headers.

Bug:  webrtc:9681 
Change-Id: Ic2265105cd401d59fac124c2dc1963f0163c5af6
Reviewed-on: https://webrtc-review.googlesource.com/c/103304
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Anders Carlsson <andersc@webrtc.org>
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24956}
[modify] https://crrev.com/7988589e4858fd9b5844dada64d5c1be8812fe9e/sdk/objc/api/peerconnection/RTCRtpReceiver+Native.h
[modify] https://crrev.com/7988589e4858fd9b5844dada64d5c1be8812fe9e/sdk/objc/api/peerconnection/RTCRtpSender+Native.h

Project Member

Comment 9 by bugdroid1@chromium.org, Oct 4

The following revision refers to this bug:
  https://webrtc.googlesource.com/src.git/+/84583f618399f30b2c484ea06eadfa13e3961b3f

commit 84583f618399f30b2c484ea06eadfa13e3961b3f
Author: Benjamin Wright <benwright@webrtc.org>
Date: Thu Oct 04 22:08:34 2018

Enable End-to-End Encrypted Audio Payloads.

This change integrates the FrameDecryptorInterface and the FrameEncryptorInterface into
the audio media path. If a FrameEncryptorInterface is set on an outgoing audio RTPSender
then each outgoing audio payload will first pass through the provided FrameEncryptor which
will have a chance to modify the payload contents for the purposes of encryption.

If a FrameDecryptorInterface is set on an incoming audio RtpReceiver then each incoming
audio payload will first pass through the provided FrameDecryptor which have a chance to
modify the payload contents for the purpose of decryption.

While AEAD is supported by the FrameDecryptor/FrameEncryptor interfaces this CL does not
use it and so it is left as null.

Bug:  webrtc:9681 
Change-Id: Ic383a9dce280528739f9d271357c2220e0a0dccf
Reviewed-on: https://webrtc-review.googlesource.com/c/101702
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Emad Omara <emadomara@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25001}
[modify] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/api/BUILD.gn
[add] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/api/test/fake_frame_decryptor.cc
[add] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/api/test/fake_frame_decryptor.h
[add] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/api/test/fake_frame_encryptor.cc
[add] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/api/test/fake_frame_encryptor.h
[modify] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/audio/audio_receive_stream.cc
[modify] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/audio/audio_send_stream.cc
[modify] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/audio/audio_send_stream_unittest.cc
[modify] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/audio/channel_receive.cc
[modify] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/audio/channel_receive.h
[modify] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/audio/channel_send.cc
[modify] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/audio/channel_send.h
[modify] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/audio/channel_send_proxy.cc
[modify] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/audio/channel_send_proxy.h
[modify] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/audio/mock_voe_channel_proxy.h
[modify] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/call/audio_receive_stream.h
[modify] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/call/audio_send_stream.h
[modify] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/media/base/mediachannel.cc
[modify] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/media/base/mediachannel.h
[modify] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/media/engine/webrtcvoiceengine.cc
[modify] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/media/engine/webrtcvoiceengine.h
[modify] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/pc/BUILD.gn
[modify] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/pc/rtpreceiver.cc
[modify] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/pc/rtpsender.cc
[modify] https://crrev.com/84583f618399f30b2c484ea06eadfa13e3961b3f/pc/rtpsenderreceiver_unittest.cc

Project Member

Comment 10 by anatolid@chromium.org, Oct 8

[bulk-edit: ignore if N/A]

This bug has no component but has an owner. Can the owner please assign the right component?
Project Member

Comment 11 by bugdroid1@chromium.org, Oct 11

The following revision refers to this bug:
  https://webrtc.googlesource.com/src.git/+/ac2f3d14e45398930bc35ff05ed7a3b9b617d328

commit ac2f3d14e45398930bc35ff05ed7a3b9b617d328
Author: Benjamin Wright <benwright@webrtc.org>
Date: Thu Oct 11 19:14:42 2018

Move CryptoOptions to api/crypto from rtc_base/sslstreamadapter.h

Promotes rtc::CryptoOptions to webrtc::CryptoOptions converting it from class
that only handles SRTP configuration to a more generic structure that can be
used and extended for all per peer connection CryptoOptions that can be on a
given PeerConnection.

Now all SRTP related options are under webrtc::CryptoOptions::Srtp and can be
accessed as crypto_options.srtp.whatever_option_name. This is more inline with
other structures we have in WebRTC such as VideoConfig. As additional features
are added over time this will allow the structure to remain compartmentalized
and concerned components can only request a subset of the overall configuration
structure e.g:

void MySrtpFunction(const webrtc::CryptoOptions::Srtp& srtp_config);

In addition to this it made little sense for sslstreamadapter.h to hold all
Srtp related configuration options. The header has become loo large and takes on
too many responsibilities and spilting this up will lead to more maintainable
code going forward.

This will be used in a future CL to enable configuration options for the newly
supported Frame Crypto.

Change-Id: I99d1be36740c59548c8e62db52d68d738649707f
Bug:  webrtc:9681 
Reviewed-on: https://webrtc-review.googlesource.com/c/105180
Reviewed-by: Emad Omara <emadomara@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25130}
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/api/BUILD.gn
[add] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/api/crypto/cryptooptions.cc
[add] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/api/crypto/cryptooptions.h
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/api/cryptoparams.h
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/api/peerconnectioninterface.h
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/p2p/base/dtlstransport.cc
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/p2p/base/dtlstransport.h
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/p2p/base/dtlstransport_unittest.cc
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/p2p/base/dtlstransportinternal.h
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/p2p/base/fakedtlstransport.h
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/p2p/base/transportfactoryinterface.h
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/pc/channel.cc
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/pc/channel.h
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/pc/channel_unittest.cc
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/pc/channelmanager.cc
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/pc/channelmanager.h
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/pc/channelmanager_unittest.cc
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/pc/jseptransportcontroller.cc
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/pc/jseptransportcontroller.h
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/pc/jseptransportcontroller_unittest.cc
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/pc/mediasession.cc
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/pc/mediasession.h
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/pc/mediasession_unittest.cc
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/pc/peerconnection.cc
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/pc/peerconnection_crypto_unittest.cc
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/pc/peerconnection_integrationtest.cc
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/pc/peerconnectionfactory.cc
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/pc/rtpsenderreceiver_unittest.cc
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/pc/test/fakepeerconnectionforstats.h
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/rtc_base/sslstreamadapter.cc
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/rtc_base/sslstreamadapter.h
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/sdk/android/src/jni/pc/peerconnectionfactory.cc
[modify] https://crrev.com/ac2f3d14e45398930bc35ff05ed7a3b9b617d328/sdk/objc/api/peerconnection/RTCPeerConnectionFactoryOptions.mm

Project Member

Comment 12 by bugdroid1@chromium.org, Oct 11

The following revision refers to this bug:
  https://webrtc.googlesource.com/src.git/+/8f4bc41c42318534a564e75e48b01f065f2cbc57

commit 8f4bc41c42318534a564e75e48b01f065f2cbc57
Author: Oleh Prypin <oprypin@webrtc.org>
Date: Thu Oct 11 21:59:05 2018

Revert "Move CryptoOptions to api/crypto from rtc_base/sslstreamadapter.h"

This reverts commit ac2f3d14e45398930bc35ff05ed7a3b9b617d328.

Reason for revert: Breaks downstream project

Original change's description:
> Move CryptoOptions to api/crypto from rtc_base/sslstreamadapter.h
> 
> Promotes rtc::CryptoOptions to webrtc::CryptoOptions converting it from class
> that only handles SRTP configuration to a more generic structure that can be
> used and extended for all per peer connection CryptoOptions that can be on a
> given PeerConnection.
> 
> Now all SRTP related options are under webrtc::CryptoOptions::Srtp and can be
> accessed as crypto_options.srtp.whatever_option_name. This is more inline with
> other structures we have in WebRTC such as VideoConfig. As additional features
> are added over time this will allow the structure to remain compartmentalized
> and concerned components can only request a subset of the overall configuration
> structure e.g:
> 
> void MySrtpFunction(const webrtc::CryptoOptions::Srtp& srtp_config);
> 
> In addition to this it made little sense for sslstreamadapter.h to hold all
> Srtp related configuration options. The header has become loo large and takes on
> too many responsibilities and spilting this up will lead to more maintainable
> code going forward.
> 
> This will be used in a future CL to enable configuration options for the newly
> supported Frame Crypto.
> 
> Change-Id: I99d1be36740c59548c8e62db52d68d738649707f
> Bug:  webrtc:9681 
> Reviewed-on: https://webrtc-review.googlesource.com/c/105180
> Reviewed-by: Emad Omara <emadomara@webrtc.org>
> Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
> Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
> Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
> Reviewed-by: Steve Anton <steveanton@webrtc.org>
> Commit-Queue: Benjamin Wright <benwright@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#25130}

TBR=steveanton@webrtc.org,sakal@webrtc.org,kthelgason@webrtc.org,emadomara@webrtc.org,qingsi@webrtc.org,benwright@webrtc.org

Bug:  webrtc:9681 
Change-Id: Ib0075c477c951b540d4deecb3b0cf8cf86ba0fff
Reviewed-on: https://webrtc-review.googlesource.com/c/105541
Reviewed-by: Oleh Prypin <oprypin@webrtc.org>
Commit-Queue: Oleh Prypin <oprypin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25133}
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/api/BUILD.gn
[delete] https://crrev.com/1cd39fa9ea0c29acd67008919f5b524cf071a3ae/api/crypto/cryptooptions.cc
[delete] https://crrev.com/1cd39fa9ea0c29acd67008919f5b524cf071a3ae/api/crypto/cryptooptions.h
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/api/cryptoparams.h
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/api/peerconnectioninterface.h
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/p2p/base/dtlstransport.cc
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/p2p/base/dtlstransport.h
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/p2p/base/dtlstransport_unittest.cc
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/p2p/base/dtlstransportinternal.h
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/p2p/base/fakedtlstransport.h
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/p2p/base/transportfactoryinterface.h
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/pc/channel.cc
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/pc/channel.h
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/pc/channel_unittest.cc
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/pc/channelmanager.cc
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/pc/channelmanager.h
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/pc/channelmanager_unittest.cc
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/pc/jseptransportcontroller.cc
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/pc/jseptransportcontroller.h
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/pc/jseptransportcontroller_unittest.cc
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/pc/mediasession.cc
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/pc/mediasession.h
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/pc/mediasession_unittest.cc
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/pc/peerconnection.cc
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/pc/peerconnection_crypto_unittest.cc
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/pc/peerconnection_integrationtest.cc
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/pc/peerconnectionfactory.cc
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/pc/rtpsenderreceiver_unittest.cc
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/pc/test/fakepeerconnectionforstats.h
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/rtc_base/sslstreamadapter.cc
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/rtc_base/sslstreamadapter.h
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/sdk/android/src/jni/pc/peerconnectionfactory.cc
[modify] https://crrev.com/8f4bc41c42318534a564e75e48b01f065f2cbc57/sdk/objc/api/peerconnection/RTCPeerConnectionFactoryOptions.mm

Project Member

Comment 13 by bugdroid1@chromium.org, Oct 11

The following revision refers to this bug:
  https://webrtc.googlesource.com/src.git/+/a54daf162facb9fe30bcc3e05bd21c1597076157

commit a54daf162facb9fe30bcc3e05bd21c1597076157
Author: Benjamin Wright <benwright@webrtc.org>
Date: Thu Oct 11 23:09:07 2018

Reland "Move CryptoOptions to api/crypto from rtc_base/sslstreamadapter.h"

Promotes rtc::CryptoOptions to webrtc::CryptoOptions converting it from class
that only handles SRTP configuration to a more generic structure that can be
used and extended for all per peer connection CryptoOptions that can be on a
given PeerConnection.

Now all SRTP related options are under webrtc::CryptoOptions::Srtp and can be
accessed as crypto_options.srtp.whatever_option_name. This is more inline with
other structures we have in WebRTC such as VideoConfig. As additional features
are added over time this will allow the structure to remain compartmentalized
and concerned components can only request a subset of the overall configuration
structure e.g:

void MySrtpFunction(const webrtc::CryptoOptions::Srtp& srtp_config);

In addition to this it made little sense for sslstreamadapter.h to hold all
Srtp related configuration options. The header has become loo large and takes on
too many responsibilities and spilting this up will lead to more maintainable
code going forward.

This will be used in a future CL to enable configuration options for the newly
supported Frame Crypto.

Reland Fix:
- cryptooptions.h - now has enable_aes128_sha1_32_crypto_cipher as an optional
                    root level configuration.
- peerconnectionfactory - If this optional is set will now overwrite the
                          underyling value.

This along with the other field will be deprecated once dependent projects
are updated.

TBR=sakal@webrtc.org,kthelgason@webrtc.org,emadomara@webrtc.org,qingsi@webrtc.org

Bug:  webrtc:9681 
Change-Id: Iaa6b741baafb85d352e42f54226119f19d97151d
Reviewed-on: https://webrtc-review.googlesource.com/c/105560
Reviewed-by: Benjamin Wright <benwright@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Emad Omara <emadomara@webrtc.org>
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25135}
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/api/BUILD.gn
[add] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/api/crypto/cryptooptions.cc
[add] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/api/crypto/cryptooptions.h
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/api/cryptoparams.h
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/api/peerconnectioninterface.h
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/p2p/base/dtlstransport.cc
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/p2p/base/dtlstransport.h
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/p2p/base/dtlstransport_unittest.cc
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/p2p/base/dtlstransportinternal.h
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/p2p/base/fakedtlstransport.h
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/p2p/base/transportfactoryinterface.h
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/pc/channel.cc
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/pc/channel.h
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/pc/channel_unittest.cc
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/pc/channelmanager.cc
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/pc/channelmanager.h
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/pc/channelmanager_unittest.cc
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/pc/jseptransportcontroller.cc
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/pc/jseptransportcontroller.h
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/pc/jseptransportcontroller_unittest.cc
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/pc/mediasession.cc
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/pc/mediasession.h
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/pc/mediasession_unittest.cc
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/pc/peerconnection.cc
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/pc/peerconnection_crypto_unittest.cc
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/pc/peerconnection_integrationtest.cc
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/pc/peerconnectionfactory.cc
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/pc/rtpsenderreceiver_unittest.cc
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/pc/test/fakepeerconnectionforstats.h
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/rtc_base/sslstreamadapter.cc
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/rtc_base/sslstreamadapter.h
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/sdk/android/src/jni/pc/peerconnectionfactory.cc
[modify] https://crrev.com/a54daf162facb9fe30bcc3e05bd21c1597076157/sdk/objc/api/peerconnection/RTCPeerConnectionFactoryOptions.mm

Project Member

Comment 14 by bugdroid1@chromium.org, Oct 17

The following revision refers to this bug:
  https://webrtc.googlesource.com/src.git/+/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16

commit bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16
Author: Benjamin Wright <benwright@webrtc.org>
Date: Wed Oct 17 17:44:19 2018

Adds new CryptoOption crypto_options.frame.require_frame_encryption.

This change adds a new subcategory to the public native webrtc::CryptoOptions
structure: webrtc::CryptoOptions::Frame.

This new structure has a single off by default property:
crypto_options.frame.require_frame_encryption.

This new flag if set prevents RtpSenders from sending outgoing payloads unless
a frame_encryptor_ is attached and prevents RtpReceivers from receiving
incoming payloads unless a frame_decryptor_ is attached.

This option is important to enforce no unencrypted data can ever leave the
device or be received.

I have also attached bindings for Java and Objective-C.

I have implemented this functionality for E2EE audio but not E2EE video
since the changes are still in review.

Bug:  webrtc:9681 
Change-Id: Ie184711190e0cdf5ac781f69e9489ceec904736f
Reviewed-on: https://webrtc-review.googlesource.com/c/105540
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25238}
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/api/crypto/cryptooptions.cc
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/api/crypto/cryptooptions.h
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/audio/audio_receive_stream.cc
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/audio/audio_send_stream.cc
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/audio/channel_receive.cc
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/audio/channel_receive.h
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/audio/channel_send.cc
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/audio/channel_send.h
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/call/audio_receive_stream.h
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/call/audio_send_stream.h
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/media/base/fakemediaengine.h
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/media/base/mediaengine.h
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/media/engine/nullwebrtcvideoengine.h
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/media/engine/webrtcvideoengine.cc
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/media/engine/webrtcvideoengine.h
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/media/engine/webrtcvideoengine_unittest.cc
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/media/engine/webrtcvoiceengine.cc
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/media/engine/webrtcvoiceengine.h
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/media/engine/webrtcvoiceengine_unittest.cc
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/pc/channelmanager.cc
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/sdk/android/api/org/webrtc/PeerConnectionFactory.java
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/sdk/android/src/jni/pc/peerconnectionfactory.cc
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/sdk/objc/api/peerconnection/RTCPeerConnectionFactoryOptions.h
[modify] https://crrev.com/bfb444ce2c18b5a1d1dd2bd6fae55c520dff4f16/sdk/objc/api/peerconnection/RTCPeerConnectionFactoryOptions.mm

Project Member

Comment 15 by benwri...@webrtc.org, Oct 22

Status: Fixed (was: Assigned)
Shouldn't this issue remain open until the video part goes in?

Sign in to add a comment