Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(227)

Side by Side Diff: net/socket/ssl_client_socket_impl.cc

Issue 2315613002: Extracted NetLog class's inner enum types into their own enum classes and (Closed)
Patch Set: Ran "git cl format" on code. Much formatting ensued. Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/socket/socks_client_socket_unittest.cc ('k') | net/socket/ssl_client_socket_pool.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 26 matching lines...) Expand all
37 #include "net/base/ip_address.h" 37 #include "net/base/ip_address.h"
38 #include "net/base/net_errors.h" 38 #include "net/base/net_errors.h"
39 #include "net/cert/cert_verifier.h" 39 #include "net/cert/cert_verifier.h"
40 #include "net/cert/ct_ev_whitelist.h" 40 #include "net/cert/ct_ev_whitelist.h"
41 #include "net/cert/ct_policy_enforcer.h" 41 #include "net/cert/ct_policy_enforcer.h"
42 #include "net/cert/ct_policy_status.h" 42 #include "net/cert/ct_policy_status.h"
43 #include "net/cert/ct_verifier.h" 43 #include "net/cert/ct_verifier.h"
44 #include "net/cert/x509_certificate_net_log_param.h" 44 #include "net/cert/x509_certificate_net_log_param.h"
45 #include "net/cert/x509_util_openssl.h" 45 #include "net/cert/x509_util_openssl.h"
46 #include "net/http/transport_security_state.h" 46 #include "net/http/transport_security_state.h"
47 #include "net/log/net_log_event_type.h"
47 #include "net/ssl/scoped_openssl_types.h" 48 #include "net/ssl/scoped_openssl_types.h"
48 #include "net/ssl/ssl_cert_request_info.h" 49 #include "net/ssl/ssl_cert_request_info.h"
49 #include "net/ssl/ssl_cipher_suite_names.h" 50 #include "net/ssl/ssl_cipher_suite_names.h"
50 #include "net/ssl/ssl_client_session_cache.h" 51 #include "net/ssl/ssl_client_session_cache.h"
51 #include "net/ssl/ssl_connection_status_flags.h" 52 #include "net/ssl/ssl_connection_status_flags.h"
52 #include "net/ssl/ssl_info.h" 53 #include "net/ssl/ssl_info.h"
53 #include "net/ssl/ssl_private_key.h" 54 #include "net/ssl/ssl_private_key.h"
54 #include "net/ssl/token_binding.h" 55 #include "net/ssl/token_binding.h"
55 56
56 #if !defined(OS_NACL) 57 #if !defined(OS_NACL)
(...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after
612 613
613 int SSLClientSocketImpl::Connect(const CompletionCallback& callback) { 614 int SSLClientSocketImpl::Connect(const CompletionCallback& callback) {
614 // Although StreamSocket does allow calling Connect() after Disconnect(), 615 // Although StreamSocket does allow calling Connect() after Disconnect(),
615 // this has never worked for layered sockets. CHECK to detect any consumers 616 // this has never worked for layered sockets. CHECK to detect any consumers
616 // reconnecting an SSL socket. 617 // reconnecting an SSL socket.
617 // 618 //
618 // TODO(davidben,mmenke): Remove this API feature. See 619 // TODO(davidben,mmenke): Remove this API feature. See
619 // https://crbug.com/499289. 620 // https://crbug.com/499289.
620 CHECK(!disconnected_); 621 CHECK(!disconnected_);
621 622
622 net_log_.BeginEvent(NetLog::TYPE_SSL_CONNECT); 623 net_log_.BeginEvent(NetLogEventType::SSL_CONNECT);
623 624
624 // Set up new ssl object. 625 // Set up new ssl object.
625 int rv = Init(); 626 int rv = Init();
626 if (rv != OK) { 627 if (rv != OK) {
627 LogConnectEndEvent(rv); 628 LogConnectEndEvent(rv);
628 return rv; 629 return rv;
629 } 630 }
630 631
631 // Set SSL to client mode. Handshake happens in the loop below. 632 // Set SSL to client mode. Handshake happens in the loop below.
632 SSL_set_connect_state(ssl_); 633 SSL_set_connect_state(ssl_);
(...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after
1161 net_error = MapOpenSSLErrorWithDetails(ssl_error, err_tracer, &error_info); 1162 net_error = MapOpenSSLErrorWithDetails(ssl_error, err_tracer, &error_info);
1162 if (net_error == ERR_IO_PENDING) { 1163 if (net_error == ERR_IO_PENDING) {
1163 // If not done, stay in this state 1164 // If not done, stay in this state
1164 next_handshake_state_ = STATE_HANDSHAKE; 1165 next_handshake_state_ = STATE_HANDSHAKE;
1165 return ERR_IO_PENDING; 1166 return ERR_IO_PENDING;
1166 } 1167 }
1167 1168
1168 LOG(ERROR) << "handshake failed; returned " << rv << ", SSL error code " 1169 LOG(ERROR) << "handshake failed; returned " << rv << ", SSL error code "
1169 << ssl_error << ", net_error " << net_error; 1170 << ssl_error << ", net_error " << net_error;
1170 net_log_.AddEvent( 1171 net_log_.AddEvent(
1171 NetLog::TYPE_SSL_HANDSHAKE_ERROR, 1172 NetLogEventType::SSL_HANDSHAKE_ERROR,
1172 CreateNetLogOpenSSLErrorCallback(net_error, ssl_error, error_info)); 1173 CreateNetLogOpenSSLErrorCallback(net_error, ssl_error, error_info));
1173 } 1174 }
1174 1175
1175 next_handshake_state_ = STATE_HANDSHAKE_COMPLETE; 1176 next_handshake_state_ = STATE_HANDSHAKE_COMPLETE;
1176 return net_error; 1177 return net_error;
1177 } 1178 }
1178 1179
1179 int SSLClientSocketImpl::DoHandshakeComplete(int result) { 1180 int SSLClientSocketImpl::DoHandshakeComplete(int result) {
1180 if (result < 0) 1181 if (result < 0)
1181 return result; 1182 return result;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1244 1245
1245 // Verify the certificate. 1246 // Verify the certificate.
1246 UpdateServerCert(); 1247 UpdateServerCert();
1247 next_handshake_state_ = STATE_VERIFY_CERT; 1248 next_handshake_state_ = STATE_VERIFY_CERT;
1248 return OK; 1249 return OK;
1249 } 1250 }
1250 1251
1251 int SSLClientSocketImpl::DoChannelIDLookup() { 1252 int SSLClientSocketImpl::DoChannelIDLookup() {
1252 NetLog::ParametersCallback callback = base::Bind( 1253 NetLog::ParametersCallback callback = base::Bind(
1253 &NetLogChannelIDLookupCallback, base::Unretained(channel_id_service_)); 1254 &NetLogChannelIDLookupCallback, base::Unretained(channel_id_service_));
1254 net_log_.BeginEvent(NetLog::TYPE_SSL_GET_CHANNEL_ID, callback); 1255 net_log_.BeginEvent(NetLogEventType::SSL_GET_CHANNEL_ID, callback);
1255 next_handshake_state_ = STATE_CHANNEL_ID_LOOKUP_COMPLETE; 1256 next_handshake_state_ = STATE_CHANNEL_ID_LOOKUP_COMPLETE;
1256 return channel_id_service_->GetOrCreateChannelID( 1257 return channel_id_service_->GetOrCreateChannelID(
1257 host_and_port_.host(), &channel_id_key_, 1258 host_and_port_.host(), &channel_id_key_,
1258 base::Bind(&SSLClientSocketImpl::OnHandshakeIOComplete, 1259 base::Bind(&SSLClientSocketImpl::OnHandshakeIOComplete,
1259 base::Unretained(this)), 1260 base::Unretained(this)),
1260 &channel_id_request_); 1261 &channel_id_request_);
1261 } 1262 }
1262 1263
1263 int SSLClientSocketImpl::DoChannelIDLookupComplete(int result) { 1264 int SSLClientSocketImpl::DoChannelIDLookupComplete(int result) {
1264 net_log_.EndEvent(NetLog::TYPE_SSL_GET_CHANNEL_ID, 1265 net_log_.EndEvent(NetLogEventType::SSL_GET_CHANNEL_ID,
1265 base::Bind(&NetLogChannelIDLookupCompleteCallback, 1266 base::Bind(&NetLogChannelIDLookupCompleteCallback,
1266 channel_id_key_.get(), result)); 1267 channel_id_key_.get(), result));
1267 if (result < 0) 1268 if (result < 0)
1268 return result; 1269 return result;
1269 1270
1270 // Hand the key to OpenSSL. Check for error in case OpenSSL rejects the key 1271 // Hand the key to OpenSSL. Check for error in case OpenSSL rejects the key
1271 // type. 1272 // type.
1272 DCHECK(channel_id_key_); 1273 DCHECK(channel_id_key_);
1273 crypto::OpenSSLErrStackTracer err_tracer(FROM_HERE); 1274 crypto::OpenSSLErrStackTracer err_tracer(FROM_HERE);
1274 int rv = SSL_set1_tls_channel_id(ssl_, channel_id_key_->key()); 1275 int rv = SSL_set1_tls_channel_id(ssl_, channel_id_key_->key());
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
1389 CompletionCallback c = user_connect_callback_; 1390 CompletionCallback c = user_connect_callback_;
1390 user_connect_callback_.Reset(); 1391 user_connect_callback_.Reset();
1391 c.Run(rv > OK ? OK : rv); 1392 c.Run(rv > OK ? OK : rv);
1392 } 1393 }
1393 } 1394 }
1394 1395
1395 void SSLClientSocketImpl::UpdateServerCert() { 1396 void SSLClientSocketImpl::UpdateServerCert() {
1396 server_cert_chain_->Reset(SSL_get_peer_cert_chain(ssl_)); 1397 server_cert_chain_->Reset(SSL_get_peer_cert_chain(ssl_));
1397 server_cert_ = server_cert_chain_->AsOSChain(); 1398 server_cert_ = server_cert_chain_->AsOSChain();
1398 if (server_cert_.get()) { 1399 if (server_cert_.get()) {
1399 net_log_.AddEvent(NetLog::TYPE_SSL_CERTIFICATES_RECEIVED, 1400 net_log_.AddEvent(NetLogEventType::SSL_CERTIFICATES_RECEIVED,
1400 base::Bind(&NetLogX509CertificateCallback, 1401 base::Bind(&NetLogX509CertificateCallback,
1401 base::Unretained(server_cert_.get()))); 1402 base::Unretained(server_cert_.get())));
1402 } 1403 }
1403 } 1404 }
1404 1405
1405 void SSLClientSocketImpl::OnHandshakeIOComplete(int result) { 1406 void SSLClientSocketImpl::OnHandshakeIOComplete(int result) {
1406 int rv = DoHandshakeLoop(result); 1407 int rv = DoHandshakeLoop(result);
1407 if (rv != ERR_IO_PENDING) { 1408 if (rv != ERR_IO_PENDING) {
1408 LogConnectEndEvent(rv); 1409 LogConnectEndEvent(rv);
1409 DoConnectCallback(rv); 1410 DoConnectCallback(rv);
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
1516 crypto::OpenSSLErrStackTracer err_tracer(FROM_HERE); 1517 crypto::OpenSSLErrStackTracer err_tracer(FROM_HERE);
1517 1518
1518 DCHECK_LT(0, user_read_buf_len_); 1519 DCHECK_LT(0, user_read_buf_len_);
1519 DCHECK(user_read_buf_.get()); 1520 DCHECK(user_read_buf_.get());
1520 1521
1521 int rv; 1522 int rv;
1522 if (pending_read_error_ != kNoPendingResult) { 1523 if (pending_read_error_ != kNoPendingResult) {
1523 rv = pending_read_error_; 1524 rv = pending_read_error_;
1524 pending_read_error_ = kNoPendingResult; 1525 pending_read_error_ = kNoPendingResult;
1525 if (rv == 0) { 1526 if (rv == 0) {
1526 net_log_.AddByteTransferEvent(NetLog::TYPE_SSL_SOCKET_BYTES_RECEIVED, rv, 1527 net_log_.AddByteTransferEvent(NetLogEventType::SSL_SOCKET_BYTES_RECEIVED,
1527 user_read_buf_->data()); 1528 rv, user_read_buf_->data());
1528 } else { 1529 } else {
1529 net_log_.AddEvent( 1530 net_log_.AddEvent(
1530 NetLog::TYPE_SSL_READ_ERROR, 1531 NetLogEventType::SSL_READ_ERROR,
1531 CreateNetLogOpenSSLErrorCallback(rv, pending_read_ssl_error_, 1532 CreateNetLogOpenSSLErrorCallback(rv, pending_read_ssl_error_,
1532 pending_read_error_info_)); 1533 pending_read_error_info_));
1533 } 1534 }
1534 pending_read_ssl_error_ = SSL_ERROR_NONE; 1535 pending_read_ssl_error_ = SSL_ERROR_NONE;
1535 pending_read_error_info_ = OpenSSLErrorInfo(); 1536 pending_read_error_info_ = OpenSSLErrorInfo();
1536 return rv; 1537 return rv;
1537 } 1538 }
1538 1539
1539 int total_bytes_read = 0; 1540 int total_bytes_read = 0;
1540 int ssl_ret; 1541 int ssl_ret;
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1594 if (pending_read_error_ == ERR_IO_PENDING) 1595 if (pending_read_error_ == ERR_IO_PENDING)
1595 pending_read_error_ = kNoPendingResult; 1596 pending_read_error_ = kNoPendingResult;
1596 } else { 1597 } else {
1597 // No bytes were returned. Return the pending read error immediately. 1598 // No bytes were returned. Return the pending read error immediately.
1598 DCHECK_NE(kNoPendingResult, pending_read_error_); 1599 DCHECK_NE(kNoPendingResult, pending_read_error_);
1599 rv = pending_read_error_; 1600 rv = pending_read_error_;
1600 pending_read_error_ = kNoPendingResult; 1601 pending_read_error_ = kNoPendingResult;
1601 } 1602 }
1602 1603
1603 if (rv >= 0) { 1604 if (rv >= 0) {
1604 net_log_.AddByteTransferEvent(NetLog::TYPE_SSL_SOCKET_BYTES_RECEIVED, rv, 1605 net_log_.AddByteTransferEvent(NetLogEventType::SSL_SOCKET_BYTES_RECEIVED,
1605 user_read_buf_->data()); 1606 rv, user_read_buf_->data());
1606 } else if (rv != ERR_IO_PENDING) { 1607 } else if (rv != ERR_IO_PENDING) {
1607 net_log_.AddEvent( 1608 net_log_.AddEvent(
1608 NetLog::TYPE_SSL_READ_ERROR, 1609 NetLogEventType::SSL_READ_ERROR,
1609 CreateNetLogOpenSSLErrorCallback(rv, pending_read_ssl_error_, 1610 CreateNetLogOpenSSLErrorCallback(rv, pending_read_ssl_error_,
1610 pending_read_error_info_)); 1611 pending_read_error_info_));
1611 pending_read_ssl_error_ = SSL_ERROR_NONE; 1612 pending_read_ssl_error_ = SSL_ERROR_NONE;
1612 pending_read_error_info_ = OpenSSLErrorInfo(); 1613 pending_read_error_info_ = OpenSSLErrorInfo();
1613 } 1614 }
1614 return rv; 1615 return rv;
1615 } 1616 }
1616 1617
1617 int SSLClientSocketImpl::DoPayloadWrite() { 1618 int SSLClientSocketImpl::DoPayloadWrite() {
1618 crypto::OpenSSLErrStackTracer err_tracer(FROM_HERE); 1619 crypto::OpenSSLErrStackTracer err_tracer(FROM_HERE);
1619 int rv = SSL_write(ssl_, user_write_buf_->data(), user_write_buf_len_); 1620 int rv = SSL_write(ssl_, user_write_buf_->data(), user_write_buf_len_);
1620 1621
1621 if (rv >= 0) { 1622 if (rv >= 0) {
1622 net_log_.AddByteTransferEvent(NetLog::TYPE_SSL_SOCKET_BYTES_SENT, rv, 1623 net_log_.AddByteTransferEvent(NetLogEventType::SSL_SOCKET_BYTES_SENT, rv,
1623 user_write_buf_->data()); 1624 user_write_buf_->data());
1624 return rv; 1625 return rv;
1625 } 1626 }
1626 1627
1627 int ssl_error = SSL_get_error(ssl_, rv); 1628 int ssl_error = SSL_get_error(ssl_, rv);
1628 if (ssl_error == SSL_ERROR_WANT_PRIVATE_KEY_OPERATION) 1629 if (ssl_error == SSL_ERROR_WANT_PRIVATE_KEY_OPERATION)
1629 return ERR_IO_PENDING; 1630 return ERR_IO_PENDING;
1630 OpenSSLErrorInfo error_info; 1631 OpenSSLErrorInfo error_info;
1631 int net_error = 1632 int net_error =
1632 MapOpenSSLErrorWithDetails(ssl_error, err_tracer, &error_info); 1633 MapOpenSSLErrorWithDetails(ssl_error, err_tracer, &error_info);
1633 1634
1634 if (net_error != ERR_IO_PENDING) { 1635 if (net_error != ERR_IO_PENDING) {
1635 net_log_.AddEvent( 1636 net_log_.AddEvent(
1636 NetLog::TYPE_SSL_WRITE_ERROR, 1637 NetLogEventType::SSL_WRITE_ERROR,
1637 CreateNetLogOpenSSLErrorCallback(net_error, ssl_error, error_info)); 1638 CreateNetLogOpenSSLErrorCallback(net_error, ssl_error, error_info));
1638 } 1639 }
1639 return net_error; 1640 return net_error;
1640 } 1641 }
1641 1642
1642 void SSLClientSocketImpl::PumpReadWriteEvents() { 1643 void SSLClientSocketImpl::PumpReadWriteEvents() {
1643 int rv_read = ERR_IO_PENDING; 1644 int rv_read = ERR_IO_PENDING;
1644 int rv_write = ERR_IO_PENDING; 1645 int rv_write = ERR_IO_PENDING;
1645 bool network_moved; 1646 bool network_moved;
1646 do { 1647 do {
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
1845 CERT_STATUS_CERTIFICATE_TRANSPARENCY_REQUIRED; 1846 CERT_STATUS_CERTIFICATE_TRANSPARENCY_REQUIRED;
1846 return ERR_CERTIFICATE_TRANSPARENCY_REQUIRED; 1847 return ERR_CERTIFICATE_TRANSPARENCY_REQUIRED;
1847 } 1848 }
1848 1849
1849 return OK; 1850 return OK;
1850 } 1851 }
1851 1852
1852 int SSLClientSocketImpl::ClientCertRequestCallback(SSL* ssl) { 1853 int SSLClientSocketImpl::ClientCertRequestCallback(SSL* ssl) {
1853 DCHECK(ssl == ssl_); 1854 DCHECK(ssl == ssl_);
1854 1855
1855 net_log_.AddEvent(NetLog::TYPE_SSL_CLIENT_CERT_REQUESTED); 1856 net_log_.AddEvent(NetLogEventType::SSL_CLIENT_CERT_REQUESTED);
1856 1857
1857 // Clear any currently configured certificates. 1858 // Clear any currently configured certificates.
1858 SSL_certs_clear(ssl_); 1859 SSL_certs_clear(ssl_);
1859 1860
1860 #if defined(OS_IOS) 1861 #if defined(OS_IOS)
1861 // TODO(droger): Support client auth on iOS. See http://crbug.com/145954). 1862 // TODO(droger): Support client auth on iOS. See http://crbug.com/145954).
1862 LOG(WARNING) << "Client auth is not supported"; 1863 LOG(WARNING) << "Client auth is not supported";
1863 #else // !defined(OS_IOS) 1864 #else // !defined(OS_IOS)
1864 if (!ssl_config_.send_client_cert) { 1865 if (!ssl_config_.send_client_cert) {
1865 // First pass: we know that a client certificate is needed, but we do not 1866 // First pass: we know that a client certificate is needed, but we do not
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
1941 break; 1942 break;
1942 case SSLPrivateKey::Hash::MD5_SHA1: 1943 case SSLPrivateKey::Hash::MD5_SHA1:
1943 // MD5-SHA1 is not used in TLS 1.2. 1944 // MD5-SHA1 is not used in TLS 1.2.
1944 break; 1945 break;
1945 } 1946 }
1946 } 1947 }
1947 1948
1948 SSL_set_private_key_digest_prefs(ssl_, digests.data(), digests.size()); 1949 SSL_set_private_key_digest_prefs(ssl_, digests.data(), digests.size());
1949 1950
1950 int cert_count = 1 + sk_X509_num(chain.get()); 1951 int cert_count = 1 + sk_X509_num(chain.get());
1951 net_log_.AddEvent(NetLog::TYPE_SSL_CLIENT_CERT_PROVIDED, 1952 net_log_.AddEvent(NetLogEventType::SSL_CLIENT_CERT_PROVIDED,
1952 NetLog::IntCallback("cert_count", cert_count)); 1953 NetLog::IntCallback("cert_count", cert_count));
1953 return 1; 1954 return 1;
1954 } 1955 }
1955 #endif // defined(OS_IOS) 1956 #endif // defined(OS_IOS)
1956 1957
1957 // Send no client certificate. 1958 // Send no client certificate.
1958 net_log_.AddEvent(NetLog::TYPE_SSL_CLIENT_CERT_PROVIDED, 1959 net_log_.AddEvent(NetLogEventType::SSL_CLIENT_CERT_PROVIDED,
1959 NetLog::IntCallback("cert_count", 0)); 1960 NetLog::IntCallback("cert_count", 0));
1960 return 1; 1961 return 1;
1961 } 1962 }
1962 1963
1963 int SSLClientSocketImpl::CertVerifyCallback(X509_STORE_CTX* store_ctx) { 1964 int SSLClientSocketImpl::CertVerifyCallback(X509_STORE_CTX* store_ctx) {
1964 if (!completed_connect_) { 1965 if (!completed_connect_) {
1965 // If the first handshake hasn't completed then we accept any certificates 1966 // If the first handshake hasn't completed then we accept any certificates
1966 // because we verify after the handshake. 1967 // because we verify after the handshake.
1967 return 1; 1968 return 1;
1968 } 1969 }
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
2183 DCHECK(signature_.empty()); 2184 DCHECK(signature_.empty());
2184 DCHECK(ssl_config_.client_private_key); 2185 DCHECK(ssl_config_.client_private_key);
2185 2186
2186 SSLPrivateKey::Hash hash; 2187 SSLPrivateKey::Hash hash;
2187 if (!EVP_MDToPrivateKeyHash(md, &hash)) { 2188 if (!EVP_MDToPrivateKeyHash(md, &hash)) {
2188 OpenSSLPutNetError(FROM_HERE, ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED); 2189 OpenSSLPutNetError(FROM_HERE, ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED);
2189 return ssl_private_key_failure; 2190 return ssl_private_key_failure;
2190 } 2191 }
2191 2192
2192 net_log_.BeginEvent( 2193 net_log_.BeginEvent(
2193 NetLog::TYPE_SSL_PRIVATE_KEY_OPERATION, 2194 NetLogEventType::SSL_PRIVATE_KEY_OP,
2194 base::Bind(&NetLogPrivateKeyOperationCallback, 2195 base::Bind(&NetLogPrivateKeyOperationCallback,
2195 ssl_config_.client_private_key->GetType(), hash)); 2196 ssl_config_.client_private_key->GetType(), hash));
2196 2197
2197 signature_result_ = ERR_IO_PENDING; 2198 signature_result_ = ERR_IO_PENDING;
2198 ssl_config_.client_private_key->SignDigest( 2199 ssl_config_.client_private_key->SignDigest(
2199 hash, base::StringPiece(reinterpret_cast<const char*>(in), in_len), 2200 hash, base::StringPiece(reinterpret_cast<const char*>(in), in_len),
2200 base::Bind(&SSLClientSocketImpl::OnPrivateKeyComplete, 2201 base::Bind(&SSLClientSocketImpl::OnPrivateKeyComplete,
2201 weak_factory_.GetWeakPtr())); 2202 weak_factory_.GetWeakPtr()));
2202 return ssl_private_key_retry; 2203 return ssl_private_key_retry;
2203 } 2204 }
(...skipping 21 matching lines...) Expand all
2225 return ssl_private_key_success; 2226 return ssl_private_key_success;
2226 } 2227 }
2227 2228
2228 void SSLClientSocketImpl::OnPrivateKeyComplete( 2229 void SSLClientSocketImpl::OnPrivateKeyComplete(
2229 Error error, 2230 Error error,
2230 const std::vector<uint8_t>& signature) { 2231 const std::vector<uint8_t>& signature) {
2231 DCHECK_EQ(ERR_IO_PENDING, signature_result_); 2232 DCHECK_EQ(ERR_IO_PENDING, signature_result_);
2232 DCHECK(signature_.empty()); 2233 DCHECK(signature_.empty());
2233 DCHECK(ssl_config_.client_private_key); 2234 DCHECK(ssl_config_.client_private_key);
2234 2235
2235 net_log_.EndEventWithNetErrorCode(NetLog::TYPE_SSL_PRIVATE_KEY_OPERATION, 2236 net_log_.EndEventWithNetErrorCode(NetLogEventType::SSL_PRIVATE_KEY_OP, error);
2236 error);
2237 2237
2238 signature_result_ = error; 2238 signature_result_ = error;
2239 if (signature_result_ == OK) 2239 if (signature_result_ == OK)
2240 signature_ = signature; 2240 signature_ = signature;
2241 2241
2242 if (next_handshake_state_ == STATE_HANDSHAKE) { 2242 if (next_handshake_state_ == STATE_HANDSHAKE) {
2243 OnHandshakeIOComplete(signature_result_); 2243 OnHandshakeIOComplete(signature_result_);
2244 return; 2244 return;
2245 } 2245 }
2246 2246
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
2323 return 1; 2323 return 1;
2324 } 2324 }
2325 } 2325 }
2326 2326
2327 *out_alert_value = SSL_AD_ILLEGAL_PARAMETER; 2327 *out_alert_value = SSL_AD_ILLEGAL_PARAMETER;
2328 return 0; 2328 return 0;
2329 } 2329 }
2330 2330
2331 void SSLClientSocketImpl::LogConnectEndEvent(int rv) { 2331 void SSLClientSocketImpl::LogConnectEndEvent(int rv) {
2332 if (rv != OK) { 2332 if (rv != OK) {
2333 net_log_.EndEventWithNetErrorCode(NetLog::TYPE_SSL_CONNECT, rv); 2333 net_log_.EndEventWithNetErrorCode(NetLogEventType::SSL_CONNECT, rv);
2334 return; 2334 return;
2335 } 2335 }
2336 2336
2337 net_log_.EndEvent(NetLog::TYPE_SSL_CONNECT, 2337 net_log_.EndEvent(NetLogEventType::SSL_CONNECT,
2338 base::Bind(&NetLogSSLInfoCallback, base::Unretained(this))); 2338 base::Bind(&NetLogSSLInfoCallback, base::Unretained(this)));
2339 } 2339 }
2340 2340
2341 void SSLClientSocketImpl::RecordNegotiationExtension() const { 2341 void SSLClientSocketImpl::RecordNegotiationExtension() const {
2342 if (negotiation_extension_ == kExtensionUnknown) 2342 if (negotiation_extension_ == kExtensionUnknown)
2343 return; 2343 return;
2344 if (npn_status_ == kNextProtoUnsupported) 2344 if (npn_status_ == kNextProtoUnsupported)
2345 return; 2345 return;
2346 base::HistogramBase::Sample sample = 2346 base::HistogramBase::Sample sample =
2347 static_cast<base::HistogramBase::Sample>(negotiated_protocol_); 2347 static_cast<base::HistogramBase::Sample>(negotiated_protocol_);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
2382 } 2382 }
2383 UMA_HISTOGRAM_ENUMERATION("DomainBoundCerts.Support", supported, 2383 UMA_HISTOGRAM_ENUMERATION("DomainBoundCerts.Support", supported,
2384 CHANNEL_ID_USAGE_MAX); 2384 CHANNEL_ID_USAGE_MAX);
2385 } 2385 }
2386 2386
2387 bool SSLClientSocketImpl::IsChannelIDEnabled() const { 2387 bool SSLClientSocketImpl::IsChannelIDEnabled() const {
2388 return ssl_config_.channel_id_enabled && channel_id_service_; 2388 return ssl_config_.channel_id_enabled && channel_id_service_;
2389 } 2389 }
2390 2390
2391 } // namespace net 2391 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/socks_client_socket_unittest.cc ('k') | net/socket/ssl_client_socket_pool.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698