Add support for GCM cipher suites from RFC 7714.

GCM cipher suites are optional (disabled by default) and can be enabled
through "PeerConnectionFactoryInterface::Options".

If compiled with Chromium (i.e. "ENABLE_EXTERNAL_AUTH" is defined), no
GCM ciphers can be used yet (see https://crbug.com/628400).

BUG=webrtc:5222, 628400

Review-Url: https://codereview.webrtc.org/1528843005
Cr-Commit-Position: refs/heads/master@{#13635}
This commit is contained in:
jbauch
2016-08-04 05:20:32 -07:00
committed by Commit bot
parent bfc7a30c66
commit cb56065c62
24 changed files with 811 additions and 123 deletions

View File

@ -597,7 +597,8 @@ class PeerConnectionFactoryInterface : public rtc::RefCountInterface {
disable_sctp_data_channels(false),
disable_network_monitor(false),
network_ignore_mask(rtc::kDefaultNetworkIgnoreMask),
ssl_max_version(rtc::SSL_PROTOCOL_DTLS_12) {}
ssl_max_version(rtc::SSL_PROTOCOL_DTLS_12),
crypto_options(rtc::CryptoOptions::NoGcm()) {}
bool disable_encryption;
bool disable_sctp_data_channels;
bool disable_network_monitor;
@ -611,6 +612,9 @@ class PeerConnectionFactoryInterface : public rtc::RefCountInterface {
// supported by both ends will be used for the connection, i.e. if one
// party supports DTLS 1.0 and the other DTLS 1.2, DTLS 1.0 will be used.
rtc::SSLProtocolVersion ssl_max_version;
// Sets crypto related options, e.g. enabled cipher suites.
rtc::CryptoOptions crypto_options;
};
virtual void SetOptions(const Options& options) = 0;