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

Side by Side Diff: remoting/protocol/ssl_hmac_channel_authenticator.cc

Issue 15782010: Update remoting/ and jingle/ to use scoped_refptr<T>::get() rather than implicit "operator T*" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 6 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 | Annotate | Revision Log
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 "remoting/protocol/ssl_hmac_channel_authenticator.h" 5 #include "remoting/protocol/ssl_hmac_channel_authenticator.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "crypto/secure_util.h" 9 #include "crypto/secure_util.h"
10 #include "net/base/host_port_pair.h" 10 #include "net/base/host_port_pair.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 DCHECK(CalledOnValidThread()); 58 DCHECK(CalledOnValidThread());
59 DCHECK(socket->IsConnected()); 59 DCHECK(socket->IsConnected());
60 60
61 done_callback_ = done_callback; 61 done_callback_ = done_callback;
62 62
63 int result; 63 int result;
64 if (is_ssl_server()) { 64 if (is_ssl_server()) {
65 scoped_refptr<net::X509Certificate> cert = 65 scoped_refptr<net::X509Certificate> cert =
66 net::X509Certificate::CreateFromBytes( 66 net::X509Certificate::CreateFromBytes(
67 local_cert_.data(), local_cert_.length()); 67 local_cert_.data(), local_cert_.length());
68 if (!cert) { 68 if (!cert.get()) {
69 LOG(ERROR) << "Failed to parse X509Certificate"; 69 LOG(ERROR) << "Failed to parse X509Certificate";
70 NotifyError(net::ERR_FAILED); 70 NotifyError(net::ERR_FAILED);
71 return; 71 return;
72 } 72 }
73 73
74 net::SSLConfig ssl_config; 74 net::SSLConfig ssl_config;
75 net::SSLServerSocket* server_socket = net::CreateSSLServerSocket( 75 net::SSLServerSocket* server_socket =
76 socket.release(), cert, local_key_pair_->private_key(), ssl_config); 76 net::CreateSSLServerSocket(socket.release(),
77 cert.get(),
78 local_key_pair_->private_key(),
79 ssl_config);
77 socket_.reset(server_socket); 80 socket_.reset(server_socket);
78 81
79 result = server_socket->Handshake(base::Bind( 82 result = server_socket->Handshake(base::Bind(
80 &SslHmacChannelAuthenticator::OnConnected, base::Unretained(this))); 83 &SslHmacChannelAuthenticator::OnConnected, base::Unretained(this)));
81 } else { 84 } else {
82 cert_verifier_.reset(net::CertVerifier::CreateDefault()); 85 cert_verifier_.reset(net::CertVerifier::CreateDefault());
83 86
84 net::SSLConfig::CertAndStatus cert_and_status; 87 net::SSLConfig::CertAndStatus cert_and_status;
85 cert_and_status.cert_status = net::CERT_STATUS_AUTHORITY_INVALID; 88 cert_and_status.cert_status = net::CERT_STATUS_AUTHORITY_INVALID;
86 cert_and_status.der_cert = remote_cert_; 89 cert_and_status.der_cert = remote_cert_;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 bool callback_called = false; 149 bool callback_called = false;
147 WriteAuthenticationBytes(&callback_called); 150 WriteAuthenticationBytes(&callback_called);
148 if (!callback_called) 151 if (!callback_called)
149 ReadAuthenticationBytes(); 152 ReadAuthenticationBytes();
150 } 153 }
151 154
152 void SslHmacChannelAuthenticator::WriteAuthenticationBytes( 155 void SslHmacChannelAuthenticator::WriteAuthenticationBytes(
153 bool* callback_called) { 156 bool* callback_called) {
154 while (true) { 157 while (true) {
155 int result = socket_->Write( 158 int result = socket_->Write(
156 auth_write_buf_, auth_write_buf_->BytesRemaining(), 159 auth_write_buf_.get(),
160 auth_write_buf_->BytesRemaining(),
157 base::Bind(&SslHmacChannelAuthenticator::OnAuthBytesWritten, 161 base::Bind(&SslHmacChannelAuthenticator::OnAuthBytesWritten,
158 base::Unretained(this))); 162 base::Unretained(this)));
159 if (result == net::ERR_IO_PENDING) 163 if (result == net::ERR_IO_PENDING)
160 break; 164 break;
161 if (!HandleAuthBytesWritten(result, callback_called)) 165 if (!HandleAuthBytesWritten(result, callback_called))
162 break; 166 break;
163 } 167 }
164 } 168 }
165 169
166 void SslHmacChannelAuthenticator::OnAuthBytesWritten(int result) { 170 void SslHmacChannelAuthenticator::OnAuthBytesWritten(int result) {
(...skipping 17 matching lines...) Expand all
184 if (auth_write_buf_->BytesRemaining() > 0) 188 if (auth_write_buf_->BytesRemaining() > 0)
185 return true; 189 return true;
186 190
187 auth_write_buf_ = NULL; 191 auth_write_buf_ = NULL;
188 CheckDone(callback_called); 192 CheckDone(callback_called);
189 return false; 193 return false;
190 } 194 }
191 195
192 void SslHmacChannelAuthenticator::ReadAuthenticationBytes() { 196 void SslHmacChannelAuthenticator::ReadAuthenticationBytes() {
193 while (true) { 197 while (true) {
194 int result = socket_->Read( 198 int result =
195 auth_read_buf_, 199 socket_->Read(auth_read_buf_.get(),
196 auth_read_buf_->RemainingCapacity(), 200 auth_read_buf_->RemainingCapacity(),
197 base::Bind(&SslHmacChannelAuthenticator::OnAuthBytesRead, 201 base::Bind(&SslHmacChannelAuthenticator::OnAuthBytesRead,
198 base::Unretained(this))); 202 base::Unretained(this)));
199 if (result == net::ERR_IO_PENDING) 203 if (result == net::ERR_IO_PENDING)
200 break; 204 break;
201 if (!HandleAuthBytesRead(result)) 205 if (!HandleAuthBytesRead(result))
202 break; 206 break;
203 } 207 }
204 } 208 }
205 209
206 void SslHmacChannelAuthenticator::OnAuthBytesRead(int result) { 210 void SslHmacChannelAuthenticator::OnAuthBytesRead(int result) {
207 DCHECK(CalledOnValidThread()); 211 DCHECK(CalledOnValidThread());
208 212
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 socket_.get(), is_ssl_server() ? 246 socket_.get(), is_ssl_server() ?
243 kClientAuthSslExporterLabel : kHostAuthSslExporterLabel, auth_key_); 247 kClientAuthSslExporterLabel : kHostAuthSslExporterLabel, auth_key_);
244 if (auth_bytes.empty()) 248 if (auth_bytes.empty())
245 return false; 249 return false;
246 250
247 return crypto::SecureMemEqual(received_auth_bytes.data(), 251 return crypto::SecureMemEqual(received_auth_bytes.data(),
248 &(auth_bytes[0]), kAuthDigestLength); 252 &(auth_bytes[0]), kAuthDigestLength);
249 } 253 }
250 254
251 void SslHmacChannelAuthenticator::CheckDone(bool* callback_called) { 255 void SslHmacChannelAuthenticator::CheckDone(bool* callback_called) {
252 if (auth_write_buf_ == NULL && auth_read_buf_ == NULL) { 256 if (auth_write_buf_.get() == NULL && auth_read_buf_.get() == NULL) {
253 DCHECK(socket_.get() != NULL); 257 DCHECK(socket_.get() != NULL);
254 if (callback_called) 258 if (callback_called)
255 *callback_called = true; 259 *callback_called = true;
256 done_callback_.Run(net::OK, socket_.PassAs<net::StreamSocket>()); 260 done_callback_.Run(net::OK, socket_.PassAs<net::StreamSocket>());
257 } 261 }
258 } 262 }
259 263
260 void SslHmacChannelAuthenticator::NotifyError(int error) { 264 void SslHmacChannelAuthenticator::NotifyError(int error) {
261 done_callback_.Run(static_cast<net::Error>(error), 265 done_callback_.Run(static_cast<net::Error>(error),
262 scoped_ptr<net::StreamSocket>(NULL)); 266 scoped_ptr<net::StreamSocket>(NULL));
263 } 267 }
264 268
265 } // namespace protocol 269 } // namespace protocol
266 } // namespace remoting 270 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/protocol/negotiating_host_authenticator.cc ('k') | remoting/protocol/ssl_hmac_channel_authenticator_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698