Chromium Code Reviews| Index: webrtc/base/opensslstreamadapter.cc | 
| diff --git a/webrtc/base/opensslstreamadapter.cc b/webrtc/base/opensslstreamadapter.cc | 
| index 270faa0809f42013c01aeb35854d7c98b3b9cc1f..b6792523d9fd99fcf9ee96ee6315769890ad36dd 100644 | 
| --- a/webrtc/base/opensslstreamadapter.cc | 
| +++ b/webrtc/base/opensslstreamadapter.cc | 
| @@ -25,6 +25,7 @@ | 
| #include <vector> | 
| +#include "webrtc/base/checks.h" | 
| #include "webrtc/base/common.h" | 
| #include "webrtc/base/logging.h" | 
| #include "webrtc/base/safe_conversions.h" | 
| @@ -162,10 +163,14 @@ static int kDefaultSslEcCipher12 = | 
| // Fallback cipher for DTLS 1.2 if hardware-accelerated AES-GCM is unavailable. | 
| // TODO(davidben): Switch to the standardized CHACHA20_POLY1305 variant when | 
| // available. | 
| -static int kDefaultSslCipher12NoAesGcm = | 
| +static int kDefaultSslCipher12NoAesGcmNonStandard = | 
| static_cast<uint16_t>(TLS1_CK_ECDHE_RSA_CHACHA20_POLY1305_OLD); | 
| -static int kDefaultSslEcCipher12NoAesGcm = | 
| +static int kDefaultSslEcCipher12NoAesGcmNonStandard = | 
| static_cast<uint16_t>(TLS1_CK_ECDHE_ECDSA_CHACHA20_POLY1305_OLD); | 
| +static int kDefaultSslCipher12NoAesGcm = | 
| + static_cast<uint16_t>(TLS1_CK_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256); | 
| +static int kDefaultSslEcCipher12NoAesGcm = | 
| + static_cast<uint16_t>(TLS1_CK_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256); | 
| #else // !OPENSSL_IS_BORINGSSL | 
| // OpenSSL sorts differently than BoringSSL, so the default cipher doesn't | 
| // change between TLS 1.0 and TLS 1.2 with the current setup. | 
| @@ -301,12 +306,13 @@ OpenSSLStreamAdapter::OpenSSLStreamAdapter(StreamInterface* stream) | 
| : SSLStreamAdapter(stream), | 
| state_(SSL_NONE), | 
| role_(SSL_CLIENT), | 
| - ssl_read_needs_write_(false), ssl_write_needs_read_(false), | 
| - ssl_(NULL), ssl_ctx_(NULL), | 
| + ssl_read_needs_write_(false), | 
| + ssl_write_needs_read_(false), | 
| + ssl_(NULL), | 
| + ssl_ctx_(NULL), | 
| custom_verification_succeeded_(false), | 
| ssl_mode_(SSL_MODE_TLS), | 
| - ssl_max_version_(SSL_PROTOCOL_TLS_11) { | 
| -} | 
| + ssl_max_version_(SSL_PROTOCOL_TLS_12) {} | 
| OpenSSLStreamAdapter::~OpenSSLStreamAdapter() { | 
| Cleanup(); | 
| @@ -1138,7 +1144,12 @@ int OpenSSLStreamAdapter::GetDefaultSslCipherForTest(SSLProtocolVersion version, | 
| if (EVP_has_aes_hardware()) { | 
| return kDefaultSslCipher12; | 
| } else { | 
| - return kDefaultSslCipher12NoAesGcm; | 
| + if (EVP_aead_chacha20_poly1305()) { | 
| + return kDefaultSslCipher12NoAesGcm; | 
| + } else { | 
| + RTC_CHECK(EVP_aead_chacha20_poly1305_old()); | 
| + return kDefaultSslCipher12NoAesGcmNonStandard; | 
| + } | 
| 
 
davidben_webrtc
2016/01/11 21:10:55
Eh? Both of these functions will only ever return
 
 | 
| } | 
| #else // !OPENSSL_IS_BORINGSSL | 
| return kDefaultSslCipher12; | 
| @@ -1155,7 +1166,12 @@ int OpenSSLStreamAdapter::GetDefaultSslCipherForTest(SSLProtocolVersion version, | 
| if (EVP_has_aes_hardware()) { | 
| return kDefaultSslEcCipher12; | 
| } else { | 
| - return kDefaultSslEcCipher12NoAesGcm; | 
| + if (EVP_aead_chacha20_poly1305()) { | 
| + return kDefaultSslEcCipher12NoAesGcm; | 
| + } else { | 
| + RTC_CHECK(EVP_aead_chacha20_poly1305_old()); | 
| + return kDefaultSslEcCipher12NoAesGcmNonStandard; | 
| + } | 
| } | 
| #else // !OPENSSL_IS_BORINGSSL | 
| return kDefaultSslEcCipher12; |