OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/socket/ssl_client_socket_impl.h" | 5 #include "net/socket/ssl_client_socket_impl.h" |
6 | 6 |
7 #include <errno.h> | 7 #include <errno.h> |
8 #include <openssl/bio.h> | 8 #include <openssl/bio.h> |
9 #include <openssl/bytestring.h> | 9 #include <openssl/bytestring.h> |
10 #include <openssl/err.h> | 10 #include <openssl/err.h> |
(...skipping 970 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
981 | 981 |
982 SSL_set_mode(ssl_, mode.set_mask); | 982 SSL_set_mode(ssl_, mode.set_mask); |
983 SSL_clear_mode(ssl_, mode.clear_mask); | 983 SSL_clear_mode(ssl_, mode.clear_mask); |
984 | 984 |
985 // Use BoringSSL defaults, but disable HMAC-SHA256 and HMAC-SHA384 ciphers | 985 // Use BoringSSL defaults, but disable HMAC-SHA256 and HMAC-SHA384 ciphers |
986 // (note that SHA256 and SHA384 only select legacy CBC ciphers). Also disable | 986 // (note that SHA256 and SHA384 only select legacy CBC ciphers). Also disable |
987 // DHE_RSA_WITH_AES_256_GCM_SHA384. Historically, AES_256_GCM was not | 987 // DHE_RSA_WITH_AES_256_GCM_SHA384. Historically, AES_256_GCM was not |
988 // supported. As DHE is being deprecated, don't add a cipher only to remove it | 988 // supported. As DHE is being deprecated, don't add a cipher only to remove it |
989 // immediately. | 989 // immediately. |
990 std::string command( | 990 std::string command( |
991 "DEFAULT:!SHA256:!SHA384:!DHE-RSA-AES256-GCM-SHA384:!aPSK"); | 991 "DEFAULT:!SHA256:!SHA384:!DHE-RSA-AES256-GCM-SHA384:!aPSK:!RC4"); |
992 | 992 |
993 if (ssl_config_.require_ecdhe) | 993 if (ssl_config_.require_ecdhe) |
994 command.append(":!kRSA:!kDHE"); | 994 command.append(":!kRSA:!kDHE"); |
995 | 995 |
996 if (!(ssl_config_.rc4_enabled && | |
997 ssl_config_.deprecated_cipher_suites_enabled)) { | |
998 command.append(":!RC4"); | |
999 } | |
1000 | |
1001 if (!ssl_config_.deprecated_cipher_suites_enabled) { | 996 if (!ssl_config_.deprecated_cipher_suites_enabled) { |
1002 // Only offer DHE on the second handshake. https://crbug.com/538690 | 997 // Only offer DHE on the second handshake. https://crbug.com/538690 |
1003 command.append(":!kDHE"); | 998 command.append(":!kDHE"); |
1004 } | 999 } |
1005 | 1000 |
1006 // Remove any disabled ciphers. | 1001 // Remove any disabled ciphers. |
1007 for (uint16_t id : ssl_config_.disabled_cipher_suites) { | 1002 for (uint16_t id : ssl_config_.disabled_cipher_suites) { |
1008 const SSL_CIPHER* cipher = SSL_get_cipher_by_value(id); | 1003 const SSL_CIPHER* cipher = SSL_get_cipher_by_value(id); |
1009 if (cipher) { | 1004 if (cipher) { |
1010 command.append(":!"); | 1005 command.append(":!"); |
(...skipping 1325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2336 if (rv != OK) { | 2331 if (rv != OK) { |
2337 net_log_.EndEventWithNetErrorCode(NetLog::TYPE_SSL_CONNECT, rv); | 2332 net_log_.EndEventWithNetErrorCode(NetLog::TYPE_SSL_CONNECT, rv); |
2338 return; | 2333 return; |
2339 } | 2334 } |
2340 | 2335 |
2341 net_log_.EndEvent(NetLog::TYPE_SSL_CONNECT, | 2336 net_log_.EndEvent(NetLog::TYPE_SSL_CONNECT, |
2342 base::Bind(&NetLogSSLInfoCallback, base::Unretained(this))); | 2337 base::Bind(&NetLogSSLInfoCallback, base::Unretained(this))); |
2343 } | 2338 } |
2344 | 2339 |
2345 } // namespace net | 2340 } // namespace net |
OLD | NEW |