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

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

Issue 5004001: Fix openssl build: convert hostname_ and port_ to HostPortPair (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 10 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « net/socket/ssl_client_socket_openssl.h ('k') | no next file » | 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 // OpenSSL binding for SSLClientSocket. The class layout and general principle 5 // OpenSSL binding for SSLClientSocket. The class layout and general principle
6 // of operation is derived from SSLClientSocketNSS. 6 // of operation is derived from SSLClientSocketNSS.
7 7
8 #include "net/socket/ssl_client_socket_openssl.h" 8 #include "net/socket/ssl_client_socket_openssl.h"
9 9
10 #include <openssl/ssl.h> 10 #include <openssl/ssl.h>
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 LOG(WARNING) << "Unknown OpenSSL error " << err; 55 LOG(WARNING) << "Unknown OpenSSL error " << err;
56 MaybeLogSSLError(); 56 MaybeLogSSLError();
57 return ERR_SSL_PROTOCOL_ERROR; 57 return ERR_SSL_PROTOCOL_ERROR;
58 } 58 }
59 } 59 }
60 60
61 } // namespace 61 } // namespace
62 62
63 SSLClientSocketOpenSSL::SSLClientSocketOpenSSL( 63 SSLClientSocketOpenSSL::SSLClientSocketOpenSSL(
64 ClientSocketHandle* transport_socket, 64 ClientSocketHandle* transport_socket,
65 const std::string& hostname, 65 const HostPortPair& host_and_port,
66 uint16 port,
67 const SSLConfig& ssl_config) 66 const SSLConfig& ssl_config)
68 : ALLOW_THIS_IN_INITIALIZER_LIST(buffer_send_callback_( 67 : ALLOW_THIS_IN_INITIALIZER_LIST(buffer_send_callback_(
69 this, &SSLClientSocketOpenSSL::BufferSendComplete)), 68 this, &SSLClientSocketOpenSSL::BufferSendComplete)),
70 ALLOW_THIS_IN_INITIALIZER_LIST(buffer_recv_callback_( 69 ALLOW_THIS_IN_INITIALIZER_LIST(buffer_recv_callback_(
71 this, &SSLClientSocketOpenSSL::BufferRecvComplete)), 70 this, &SSLClientSocketOpenSSL::BufferRecvComplete)),
72 transport_send_busy_(false), 71 transport_send_busy_(false),
73 transport_recv_busy_(false), 72 transport_recv_busy_(false),
74 user_connect_callback_(NULL), 73 user_connect_callback_(NULL),
75 user_read_callback_(NULL), 74 user_read_callback_(NULL),
76 user_write_callback_(NULL), 75 user_write_callback_(NULL),
77 client_auth_cert_needed_(false), 76 client_auth_cert_needed_(false),
78 ALLOW_THIS_IN_INITIALIZER_LIST(handshake_io_callback_( 77 ALLOW_THIS_IN_INITIALIZER_LIST(handshake_io_callback_(
79 this, &SSLClientSocketOpenSSL::OnHandshakeIOComplete)), 78 this, &SSLClientSocketOpenSSL::OnHandshakeIOComplete)),
80 ssl_(NULL), 79 ssl_(NULL),
81 transport_bio_(NULL), 80 transport_bio_(NULL),
82 transport_(transport_socket), 81 transport_(transport_socket),
83 hostname_(hostname), 82 host_and_port_(host_and_port),
84 port_(port),
85 ssl_config_(ssl_config), 83 ssl_config_(ssl_config),
86 completed_handshake_(false), 84 completed_handshake_(false),
87 net_log_(transport_socket->socket()->NetLog()) { 85 net_log_(transport_socket->socket()->NetLog()) {
88 } 86 }
89 87
90 SSLClientSocketOpenSSL::~SSLClientSocketOpenSSL() { 88 SSLClientSocketOpenSSL::~SSLClientSocketOpenSSL() {
91 Disconnect(); 89 Disconnect();
92 } 90 }
93 91
94 bool SSLClientSocketOpenSSL::Init() { 92 bool SSLClientSocketOpenSSL::Init() {
95 DCHECK(!ssl_); 93 DCHECK(!ssl_);
96 DCHECK(!transport_bio_); 94 DCHECK(!transport_bio_);
97 95
98 ssl_ = SSL_new(GetOpenSSLInitSingleton()->ssl_ctx()); 96 ssl_ = SSL_new(GetOpenSSLInitSingleton()->ssl_ctx());
99 if (!ssl_) { 97 if (!ssl_) {
100 MaybeLogSSLError(); 98 MaybeLogSSLError();
101 return false; 99 return false;
102 } 100 }
103 101
104 if (!SSL_set_tlsext_host_name(ssl_, hostname_.c_str())) { 102 if (!SSL_set_tlsext_host_name(ssl_, host_and_port_.host().c_str())) {
105 MaybeLogSSLError(); 103 MaybeLogSSLError();
106 return false; 104 return false;
107 } 105 }
108 106
109 BIO* ssl_bio = NULL; 107 BIO* ssl_bio = NULL;
110 // TODO(joth): Provide explicit write buffer sizes, rather than use defaults? 108 // TODO(joth): Provide explicit write buffer sizes, rather than use defaults?
111 if (!BIO_new_bio_pair(&ssl_bio, 0, &transport_bio_, 0)) { 109 if (!BIO_new_bio_pair(&ssl_bio, 0, &transport_bio_, 0)) {
112 MaybeLogSSLError(); 110 MaybeLogSSLError();
113 return false; 111 return false;
114 } 112 }
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 int SSLClientSocketOpenSSL::DoVerifyCert(int result) { 341 int SSLClientSocketOpenSSL::DoVerifyCert(int result) {
344 DCHECK(server_cert_); 342 DCHECK(server_cert_);
345 GotoState(STATE_VERIFY_CERT_COMPLETE); 343 GotoState(STATE_VERIFY_CERT_COMPLETE);
346 int flags = 0; 344 int flags = 0;
347 345
348 if (ssl_config_.rev_checking_enabled) 346 if (ssl_config_.rev_checking_enabled)
349 flags |= X509Certificate::VERIFY_REV_CHECKING_ENABLED; 347 flags |= X509Certificate::VERIFY_REV_CHECKING_ENABLED;
350 if (ssl_config_.verify_ev_cert) 348 if (ssl_config_.verify_ev_cert)
351 flags |= X509Certificate::VERIFY_EV_CERT; 349 flags |= X509Certificate::VERIFY_EV_CERT;
352 verifier_.reset(new CertVerifier); 350 verifier_.reset(new CertVerifier);
353 return verifier_->Verify(server_cert_, hostname_, flags, 351 return verifier_->Verify(server_cert_, host_and_port_.host(), flags,
354 &server_cert_verify_result_, 352 &server_cert_verify_result_,
355 &handshake_io_callback_); 353 &handshake_io_callback_);
356 } 354 }
357 355
358 int SSLClientSocketOpenSSL::DoVerifyCertComplete(int result) { 356 int SSLClientSocketOpenSSL::DoVerifyCertComplete(int result) {
359 verifier_.reset(); 357 verifier_.reset();
360 358
361 if (result == OK) { 359 if (result == OK) {
362 // TODO(joth): Work out if we need to remember the intermediate CA certs 360 // TODO(joth): Work out if we need to remember the intermediate CA certs
363 // when the server sends them to us, and do so here. 361 // when the server sends them to us, and do so here.
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after
733 int rv = SSL_write(ssl_, user_write_buf_->data(), user_write_buf_len_); 731 int rv = SSL_write(ssl_, user_write_buf_->data(), user_write_buf_len_);
734 732
735 if (rv >= 0) 733 if (rv >= 0)
736 return rv; 734 return rv;
737 735
738 int err = SSL_get_error(ssl_, rv); 736 int err = SSL_get_error(ssl_, rv);
739 return MapOpenSSLError(err); 737 return MapOpenSSLError(err);
740 } 738 }
741 739
742 } // namespace net 740 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/ssl_client_socket_openssl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698