Index: webrtc/base/opensslstreamadapter.cc |
diff --git a/webrtc/base/opensslstreamadapter.cc b/webrtc/base/opensslstreamadapter.cc |
index 44f1b718f552b8b00e30b3a320fa595500c50189..831136c8396896fb476a25010bebbfcb8e84d33b 100644 |
--- a/webrtc/base/opensslstreamadapter.cc |
+++ b/webrtc/base/opensslstreamadapter.cc |
@@ -38,11 +38,6 @@ |
namespace rtc { |
-#if (OPENSSL_VERSION_NUMBER >= 0x10001000L) |
-#define HAVE_DTLS_SRTP |
-#endif |
- |
-#ifdef HAVE_DTLS_SRTP |
// SRTP cipher suite table. |internal_name| is used to construct a |
// colon-separated profile strings which is needed by |
// SSL_CTX_set_tlsext_use_srtp(). |
@@ -56,90 +51,6 @@ static SrtpCipherMapEntry SrtpCipherMap[] = { |
{"SRTP_AES128_CM_SHA1_80", SRTP_AES128_CM_SHA1_80}, |
{"SRTP_AES128_CM_SHA1_32", SRTP_AES128_CM_SHA1_32}, |
{nullptr, 0}}; |
-#endif |
- |
-#ifndef OPENSSL_IS_BORINGSSL |
- |
-// Cipher name table. Maps internal OpenSSL cipher ids to the RFC name. |
-struct SslCipherMapEntry { |
- uint32_t openssl_id; |
- const char* rfc_name; |
-}; |
- |
-#define DEFINE_CIPHER_ENTRY_SSL3(name) {SSL3_CK_##name, "TLS_"#name} |
-#define DEFINE_CIPHER_ENTRY_TLS1(name) {TLS1_CK_##name, "TLS_"#name} |
- |
-// There currently is no method available to get a RFC-compliant name for a |
-// cipher suite from BoringSSL, so we need to define the mapping manually here. |
-// This should go away once BoringSSL supports "SSL_CIPHER_standard_name" |
-// (as available in OpenSSL if compiled with tracing enabled) or a similar |
-// method. |
-static const SslCipherMapEntry kSslCipherMap[] = { |
- // TLS v1.0 ciphersuites from RFC2246. |
- DEFINE_CIPHER_ENTRY_SSL3(RSA_RC4_128_SHA), |
- {SSL3_CK_RSA_DES_192_CBC3_SHA, |
- "TLS_RSA_WITH_3DES_EDE_CBC_SHA"}, |
- |
- // AES ciphersuites from RFC3268. |
- {TLS1_CK_RSA_WITH_AES_128_SHA, |
- "TLS_RSA_WITH_AES_128_CBC_SHA"}, |
- {TLS1_CK_DHE_RSA_WITH_AES_128_SHA, |
- "TLS_DHE_RSA_WITH_AES_128_CBC_SHA"}, |
- {TLS1_CK_RSA_WITH_AES_256_SHA, |
- "TLS_RSA_WITH_AES_256_CBC_SHA"}, |
- {TLS1_CK_DHE_RSA_WITH_AES_256_SHA, |
- "TLS_DHE_RSA_WITH_AES_256_CBC_SHA"}, |
- |
- // ECC ciphersuites from RFC4492. |
- DEFINE_CIPHER_ENTRY_TLS1(ECDHE_ECDSA_WITH_RC4_128_SHA), |
- {TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA, |
- "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA"}, |
- DEFINE_CIPHER_ENTRY_TLS1(ECDHE_ECDSA_WITH_AES_128_CBC_SHA), |
- DEFINE_CIPHER_ENTRY_TLS1(ECDHE_ECDSA_WITH_AES_256_CBC_SHA), |
- |
- DEFINE_CIPHER_ENTRY_TLS1(ECDHE_RSA_WITH_RC4_128_SHA), |
- {TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA, |
- "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA"}, |
- DEFINE_CIPHER_ENTRY_TLS1(ECDHE_RSA_WITH_AES_128_CBC_SHA), |
- DEFINE_CIPHER_ENTRY_TLS1(ECDHE_RSA_WITH_AES_256_CBC_SHA), |
- |
- // TLS v1.2 ciphersuites. |
- {TLS1_CK_RSA_WITH_AES_128_SHA256, |
- "TLS_RSA_WITH_AES_128_CBC_SHA256"}, |
- {TLS1_CK_RSA_WITH_AES_256_SHA256, |
- "TLS_RSA_WITH_AES_256_CBC_SHA256"}, |
- {TLS1_CK_DHE_RSA_WITH_AES_128_SHA256, |
- "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256"}, |
- {TLS1_CK_DHE_RSA_WITH_AES_256_SHA256, |
- "TLS_DHE_RSA_WITH_AES_256_CBC_SHA256"}, |
- |
- // TLS v1.2 GCM ciphersuites from RFC5288. |
- DEFINE_CIPHER_ENTRY_TLS1(RSA_WITH_AES_128_GCM_SHA256), |
- DEFINE_CIPHER_ENTRY_TLS1(RSA_WITH_AES_256_GCM_SHA384), |
- DEFINE_CIPHER_ENTRY_TLS1(DHE_RSA_WITH_AES_128_GCM_SHA256), |
- DEFINE_CIPHER_ENTRY_TLS1(DHE_RSA_WITH_AES_256_GCM_SHA384), |
- DEFINE_CIPHER_ENTRY_TLS1(DH_RSA_WITH_AES_128_GCM_SHA256), |
- DEFINE_CIPHER_ENTRY_TLS1(DH_RSA_WITH_AES_256_GCM_SHA384), |
- |
- // ECDH HMAC based ciphersuites from RFC5289. |
- {TLS1_CK_ECDHE_ECDSA_WITH_AES_128_SHA256, |
- "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256"}, |
- {TLS1_CK_ECDHE_ECDSA_WITH_AES_256_SHA384, |
- "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384"}, |
- {TLS1_CK_ECDHE_RSA_WITH_AES_128_SHA256, |
- "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"}, |
- {TLS1_CK_ECDHE_RSA_WITH_AES_256_SHA384, |
- "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384"}, |
- |
- // ECDH GCM based ciphersuites from RFC5289. |
- DEFINE_CIPHER_ENTRY_TLS1(ECDHE_ECDSA_WITH_AES_128_GCM_SHA256), |
- DEFINE_CIPHER_ENTRY_TLS1(ECDHE_ECDSA_WITH_AES_256_GCM_SHA384), |
- DEFINE_CIPHER_ENTRY_TLS1(ECDHE_RSA_WITH_AES_128_GCM_SHA256), |
- DEFINE_CIPHER_ENTRY_TLS1(ECDHE_RSA_WITH_AES_256_GCM_SHA384), |
- |
- {0, NULL} |
-}; |
-#endif // #ifndef OPENSSL_IS_BORINGSSL |
#if defined(_MSC_VER) |
#pragma warning(push) |
@@ -326,7 +237,6 @@ bool OpenSSLStreamAdapter::SetPeerCertificateDigest(const std::string |
} |
std::string OpenSSLStreamAdapter::SslCipherSuiteToName(int cipher_suite) { |
-#ifdef OPENSSL_IS_BORINGSSL |
const SSL_CIPHER* ssl_cipher = SSL_get_cipher_by_value(cipher_suite); |
if (!ssl_cipher) { |
return std::string(); |
@@ -335,15 +245,6 @@ std::string OpenSSLStreamAdapter::SslCipherSuiteToName(int cipher_suite) { |
std::string rfc_name = std::string(cipher_name); |
OPENSSL_free(cipher_name); |
return rfc_name; |
-#else |
- for (const SslCipherMapEntry* entry = kSslCipherMap; entry->rfc_name; |
- ++entry) { |
- if (cipher_suite == static_cast<int>(entry->openssl_id)) { |
- return entry->rfc_name; |
- } |
- } |
- return std::string(); |
-#endif |
} |
bool OpenSSLStreamAdapter::GetSslCipherSuite(int* cipher_suite) { |
@@ -388,7 +289,6 @@ bool OpenSSLStreamAdapter::ExportKeyingMaterial(const std::string& label, |
bool use_context, |
uint8_t* result, |
size_t result_len) { |
-#ifdef HAVE_DTLS_SRTP |
int i; |
i = SSL_export_keying_material(ssl_, result, result_len, label.c_str(), |
@@ -399,14 +299,10 @@ bool OpenSSLStreamAdapter::ExportKeyingMaterial(const std::string& label, |
return false; |
return true; |
-#else |
- return false; |
-#endif |
} |
bool OpenSSLStreamAdapter::SetDtlsSrtpCryptoSuites( |
const std::vector<int>& ciphers) { |
-#ifdef HAVE_DTLS_SRTP |
std::string internal_ciphers; |
if (state_ != SSL_NONE) |
@@ -437,13 +333,9 @@ bool OpenSSLStreamAdapter::SetDtlsSrtpCryptoSuites( |
srtp_ciphers_ = internal_ciphers; |
return true; |
-#else |
- return false; |
-#endif |
} |
bool OpenSSLStreamAdapter::GetDtlsSrtpCryptoSuite(int* crypto_suite) { |
-#ifdef HAVE_DTLS_SRTP |
ASSERT(state_ == SSL_CONNECTED); |
if (state_ != SSL_CONNECTED) |
return false; |
@@ -457,9 +349,6 @@ bool OpenSSLStreamAdapter::GetDtlsSrtpCryptoSuite(int* crypto_suite) { |
*crypto_suite = srtp_profile->id; |
ASSERT(!SrtpCryptoSuiteToName(*crypto_suite).empty()); |
return true; |
-#else |
- return false; |
-#endif |
} |
int OpenSSLStreamAdapter::StartSSLWithServer(const char* server_name) { |
@@ -772,13 +661,6 @@ int OpenSSLStreamAdapter::BeginSSL() { |
SSL_set_app_data(ssl_, this); |
SSL_set_bio(ssl_, bio, bio); // the SSL object owns the bio now. |
-#ifndef OPENSSL_IS_BORINGSSL |
- if (ssl_mode_ == SSL_MODE_DTLS) { |
- // Enable read-ahead for DTLS so whole packets are read from internal BIO |
- // before parsing. This is done internally by BoringSSL for DTLS. |
- SSL_set_read_ahead(ssl_, 1); |
- } |
-#endif |
SSL_set_mode(ssl_, SSL_MODE_ENABLE_PARTIAL_WRITE | |
SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER); |
@@ -898,73 +780,13 @@ void OpenSSLStreamAdapter::OnMessage(Message* msg) { |
SSL_CTX* OpenSSLStreamAdapter::SetupSSLContext() { |
SSL_CTX *ctx = NULL; |
-#ifdef OPENSSL_IS_BORINGSSL |
ctx = SSL_CTX_new(ssl_mode_ == SSL_MODE_DTLS ? |
DTLS_method() : TLS_method()); |
// Version limiting for BoringSSL will be done below. |
-#else |
- const SSL_METHOD* method; |
- switch (ssl_max_version_) { |
- case SSL_PROTOCOL_TLS_10: |
- case SSL_PROTOCOL_TLS_11: |
- // OpenSSL doesn't support setting min/max versions, so we always use |
- // (D)TLS 1.0 if a max. version below the max. available is requested. |
- if (ssl_mode_ == SSL_MODE_DTLS) { |
- if (role_ == SSL_CLIENT) { |
- method = DTLSv1_client_method(); |
- } else { |
- method = DTLSv1_server_method(); |
- } |
- } else { |
- if (role_ == SSL_CLIENT) { |
- method = TLSv1_client_method(); |
- } else { |
- method = TLSv1_server_method(); |
- } |
- } |
- break; |
- case SSL_PROTOCOL_TLS_12: |
- default: |
- if (ssl_mode_ == SSL_MODE_DTLS) { |
-#if (OPENSSL_VERSION_NUMBER >= 0x10002000L) |
- // DTLS 1.2 only available starting from OpenSSL 1.0.2 |
- if (role_ == SSL_CLIENT) { |
- method = DTLS_client_method(); |
- } else { |
- method = DTLS_server_method(); |
- } |
-#else |
- if (role_ == SSL_CLIENT) { |
- method = DTLSv1_client_method(); |
- } else { |
- method = DTLSv1_server_method(); |
- } |
-#endif |
- } else { |
-#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) |
- // New API only available starting from OpenSSL 1.1.0 |
- if (role_ == SSL_CLIENT) { |
- method = TLS_client_method(); |
- } else { |
- method = TLS_server_method(); |
- } |
-#else |
- if (role_ == SSL_CLIENT) { |
- method = SSLv23_client_method(); |
- } else { |
- method = SSLv23_server_method(); |
- } |
-#endif |
- } |
- break; |
- } |
- ctx = SSL_CTX_new(method); |
-#endif // OPENSSL_IS_BORINGSSL |
if (ctx == NULL) |
return NULL; |
-#ifdef OPENSSL_IS_BORINGSSL |
SSL_CTX_set_min_version(ctx, ssl_mode_ == SSL_MODE_DTLS ? |
DTLS1_VERSION : TLS1_VERSION); |
switch (ssl_max_version_) { |
@@ -982,7 +804,6 @@ SSL_CTX* OpenSSLStreamAdapter::SetupSSLContext() { |
DTLS1_2_VERSION : TLS1_2_VERSION); |
break; |
} |
-#endif |
if (identity_ && !identity_->ConfigureIdentity(ctx)) { |
SSL_CTX_free(ctx); |
@@ -1010,14 +831,12 @@ SSL_CTX* OpenSSLStreamAdapter::SetupSSLContext() { |
SSL_CTX_set_cipher_list(ctx, |
"DEFAULT:!NULL:!aNULL:!SHA256:!SHA384:!aECDH:!AESGCM+AES256:!aPSK"); |
-#ifdef HAVE_DTLS_SRTP |
if (!srtp_ciphers_.empty()) { |
if (SSL_CTX_set_tlsext_use_srtp(ctx, srtp_ciphers_.c_str())) { |
SSL_CTX_free(ctx); |
return NULL; |
} |
} |
-#endif |
return ctx; |
} |
@@ -1109,19 +928,11 @@ bool OpenSSLStreamAdapter::HaveDtls() { |
} |
bool OpenSSLStreamAdapter::HaveDtlsSrtp() { |
-#ifdef HAVE_DTLS_SRTP |
return true; |
-#else |
- return false; |
-#endif |
} |
bool OpenSSLStreamAdapter::HaveExporter() { |
-#ifdef HAVE_DTLS_SRTP |
return true; |
-#else |
- return false; |
-#endif |
} |
#define CDEF(X) \ |