OLD | NEW |
1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2009 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_win.h" | 5 #include "net/socket/ssl_client_socket_win.h" |
6 | 6 |
7 #include <schnlsp.h> | 7 #include <schnlsp.h> |
8 | 8 |
9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
10 #include "base/lock.h" | 10 #include "base/lock.h" |
11 #include "base/singleton.h" | 11 #include "base/singleton.h" |
12 #include "base/stl_util-inl.h" | 12 #include "base/stl_util-inl.h" |
13 #include "base/string_util.h" | 13 #include "base/string_util.h" |
14 #include "net/base/cert_verifier.h" | 14 #include "net/base/cert_verifier.h" |
15 #include "net/base/connection_type_histograms.h" | 15 #include "net/base/connection_type_histograms.h" |
16 #include "net/base/io_buffer.h" | 16 #include "net/base/io_buffer.h" |
17 #include "net/base/load_log.h" | 17 #include "net/base/net_log.h" |
18 #include "net/base/net_errors.h" | 18 #include "net/base/net_errors.h" |
19 #include "net/base/ssl_cert_request_info.h" | 19 #include "net/base/ssl_cert_request_info.h" |
20 #include "net/base/ssl_info.h" | 20 #include "net/base/ssl_info.h" |
21 | 21 |
22 #pragma comment(lib, "secur32.lib") | 22 #pragma comment(lib, "secur32.lib") |
23 | 23 |
24 namespace net { | 24 namespace net { |
25 | 25 |
26 //----------------------------------------------------------------------------- | 26 //----------------------------------------------------------------------------- |
27 | 27 |
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
424 DCHECK(ok); | 424 DCHECK(ok); |
425 } | 425 } |
426 | 426 |
427 SSLClientSocket::NextProtoStatus | 427 SSLClientSocket::NextProtoStatus |
428 SSLClientSocketWin::GetNextProto(std::string* proto) { | 428 SSLClientSocketWin::GetNextProto(std::string* proto) { |
429 proto->clear(); | 429 proto->clear(); |
430 return kNextProtoUnsupported; | 430 return kNextProtoUnsupported; |
431 } | 431 } |
432 | 432 |
433 int SSLClientSocketWin::Connect(CompletionCallback* callback, | 433 int SSLClientSocketWin::Connect(CompletionCallback* callback, |
434 LoadLog* load_log) { | 434 const BoundNetLog& net_log) { |
435 DCHECK(transport_.get()); | 435 DCHECK(transport_.get()); |
436 DCHECK(next_state_ == STATE_NONE); | 436 DCHECK(next_state_ == STATE_NONE); |
437 DCHECK(!user_connect_callback_); | 437 DCHECK(!user_connect_callback_); |
438 | 438 |
439 LoadLog::BeginEvent(load_log, LoadLog::TYPE_SSL_CONNECT); | 439 net_log.BeginEvent(NetLog::TYPE_SSL_CONNECT); |
440 | 440 |
441 int rv = InitializeSSLContext(); | 441 int rv = InitializeSSLContext(); |
442 if (rv != OK) { | 442 if (rv != OK) { |
443 LoadLog::EndEvent(load_log, LoadLog::TYPE_SSL_CONNECT); | 443 net_log.EndEvent(NetLog::TYPE_SSL_CONNECT); |
444 return rv; | 444 return rv; |
445 } | 445 } |
446 | 446 |
447 writing_first_token_ = true; | 447 writing_first_token_ = true; |
448 next_state_ = STATE_HANDSHAKE_WRITE; | 448 next_state_ = STATE_HANDSHAKE_WRITE; |
449 rv = DoLoop(OK); | 449 rv = DoLoop(OK); |
450 if (rv == ERR_IO_PENDING) { | 450 if (rv == ERR_IO_PENDING) { |
451 user_connect_callback_ = callback; | 451 user_connect_callback_ = callback; |
452 load_log_ = load_log; | 452 net_log_ = net_log; |
453 } else { | 453 } else { |
454 LoadLog::EndEvent(load_log, LoadLog::TYPE_SSL_CONNECT); | 454 net_log.EndEvent(NetLog::TYPE_SSL_CONNECT); |
455 } | 455 } |
456 return rv; | 456 return rv; |
457 } | 457 } |
458 | 458 |
459 int SSLClientSocketWin::InitializeSSLContext() { | 459 int SSLClientSocketWin::InitializeSSLContext() { |
460 int ssl_version_mask = 0; | 460 int ssl_version_mask = 0; |
461 if (ssl_config_.ssl2_enabled) | 461 if (ssl_config_.ssl2_enabled) |
462 ssl_version_mask |= SSL2; | 462 ssl_version_mask |= SSL2; |
463 if (ssl_config_.ssl3_enabled) | 463 if (ssl_config_.ssl3_enabled) |
464 ssl_version_mask |= SSL3; | 464 ssl_version_mask |= SSL3; |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
648 // (which occurs because we are in the middle of a Read when the | 648 // (which occurs because we are in the middle of a Read when the |
649 // renegotiation process starts). So we complete the Read here. | 649 // renegotiation process starts). So we complete the Read here. |
650 if (!user_connect_callback_) { | 650 if (!user_connect_callback_) { |
651 CompletionCallback* c = user_read_callback_; | 651 CompletionCallback* c = user_read_callback_; |
652 user_read_callback_ = NULL; | 652 user_read_callback_ = NULL; |
653 user_read_buf_ = NULL; | 653 user_read_buf_ = NULL; |
654 user_read_buf_len_ = 0; | 654 user_read_buf_len_ = 0; |
655 c->Run(rv); | 655 c->Run(rv); |
656 return; | 656 return; |
657 } | 657 } |
658 LoadLog::EndEvent(load_log_, LoadLog::TYPE_SSL_CONNECT); | 658 net_log_.EndEvent(NetLog::TYPE_SSL_CONNECT); |
659 load_log_ = NULL; | 659 net_log_ = BoundNetLog(); |
660 CompletionCallback* c = user_connect_callback_; | 660 CompletionCallback* c = user_connect_callback_; |
661 user_connect_callback_ = NULL; | 661 user_connect_callback_ = NULL; |
662 c->Run(rv); | 662 c->Run(rv); |
663 } | 663 } |
664 } | 664 } |
665 | 665 |
666 void SSLClientSocketWin::OnReadComplete(int result) { | 666 void SSLClientSocketWin::OnReadComplete(int result) { |
667 DCHECK(completed_handshake()); | 667 DCHECK(completed_handshake()); |
668 | 668 |
669 result = DoPayloadReadComplete(result); | 669 result = DoPayloadReadComplete(result); |
(...skipping 668 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1338 UpdateConnectionTypeHistograms(CONNECTION_SSL_MD2_CA); | 1338 UpdateConnectionTypeHistograms(CONNECTION_SSL_MD2_CA); |
1339 } | 1339 } |
1340 | 1340 |
1341 void SSLClientSocketWin::FreeSendBuffer() { | 1341 void SSLClientSocketWin::FreeSendBuffer() { |
1342 SECURITY_STATUS status = FreeContextBuffer(send_buffer_.pvBuffer); | 1342 SECURITY_STATUS status = FreeContextBuffer(send_buffer_.pvBuffer); |
1343 DCHECK(status == SEC_E_OK); | 1343 DCHECK(status == SEC_E_OK); |
1344 memset(&send_buffer_, 0, sizeof(send_buffer_)); | 1344 memset(&send_buffer_, 0, sizeof(send_buffer_)); |
1345 } | 1345 } |
1346 | 1346 |
1347 } // namespace net | 1347 } // namespace net |
OLD | NEW |