| 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 // This file includes code SSLClientSocketNSS::DoVerifyCertComplete() derived | 5 // This file includes code SSLClientSocketNSS::DoVerifyCertComplete() derived |
| 6 // from AuthCertificateCallback() in | 6 // from AuthCertificateCallback() in |
| 7 // mozilla/security/manager/ssl/src/nsNSSCallbacks.cpp. | 7 // mozilla/security/manager/ssl/src/nsNSSCallbacks.cpp. |
| 8 | 8 |
| 9 /* ***** BEGIN LICENSE BLOCK ***** | 9 /* ***** BEGIN LICENSE BLOCK ***** |
| 10 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 | 10 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 |
| (...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 252 EnterFunction(""); | 252 EnterFunction(""); |
| 253 Disconnect(); | 253 Disconnect(); |
| 254 LeaveFunction(""); | 254 LeaveFunction(""); |
| 255 } | 255 } |
| 256 | 256 |
| 257 int SSLClientSocketNSS::Init() { | 257 int SSLClientSocketNSS::Init() { |
| 258 EnterFunction(""); | 258 EnterFunction(""); |
| 259 // Initialize the NSS SSL library in a threadsafe way. This also | 259 // Initialize the NSS SSL library in a threadsafe way. This also |
| 260 // initializes the NSS base library. | 260 // initializes the NSS base library. |
| 261 EnsureNSSSSLInit(); | 261 EnsureNSSSSLInit(); |
| 262 if (!NSS_IsInitialized()) |
| 263 return ERR_UNEXPECTED; |
| 262 #if !defined(OS_WIN) | 264 #if !defined(OS_WIN) |
| 263 // We must call EnsureOCSPInit() here, on the IO thread, to get the IO loop | 265 // We must call EnsureOCSPInit() here, on the IO thread, to get the IO loop |
| 264 // by MessageLoopForIO::current(). | 266 // by MessageLoopForIO::current(). |
| 265 // X509Certificate::Verify() runs on a worker thread of CertVerifier. | 267 // X509Certificate::Verify() runs on a worker thread of CertVerifier. |
| 266 EnsureOCSPInit(); | 268 EnsureOCSPInit(); |
| 267 #endif | 269 #endif |
| 268 | 270 |
| 269 LeaveFunction(""); | 271 LeaveFunction(""); |
| 270 return OK; | 272 return OK; |
| 271 } | 273 } |
| 272 | 274 |
| 273 int SSLClientSocketNSS::Connect(CompletionCallback* callback, | 275 int SSLClientSocketNSS::Connect(CompletionCallback* callback, |
| 274 const BoundNetLog& net_log) { | 276 const BoundNetLog& net_log) { |
| 275 EnterFunction(""); | 277 EnterFunction(""); |
| 276 DCHECK(transport_.get()); | 278 DCHECK(transport_.get()); |
| 277 DCHECK(next_handshake_state_ == STATE_NONE); | 279 DCHECK(next_handshake_state_ == STATE_NONE); |
| 278 DCHECK(!user_read_callback_); | 280 DCHECK(!user_read_callback_); |
| 279 DCHECK(!user_write_callback_); | 281 DCHECK(!user_write_callback_); |
| 280 DCHECK(!user_connect_callback_); | 282 DCHECK(!user_connect_callback_); |
| 281 DCHECK(!user_read_buf_); | 283 DCHECK(!user_read_buf_); |
| 282 DCHECK(!user_write_buf_); | 284 DCHECK(!user_write_buf_); |
| 283 | 285 |
| 284 net_log.BeginEvent(NetLog::TYPE_SSL_CONNECT); | 286 net_log.BeginEvent(NetLog::TYPE_SSL_CONNECT); |
| 285 | 287 |
| 286 if (Init() != OK) { | 288 int rv = Init(); |
| 287 NOTREACHED() << "Couldn't initialize nss"; | |
| 288 } | |
| 289 | |
| 290 int rv = InitializeSSLOptions(); | |
| 291 if (rv != OK) { | 289 if (rv != OK) { |
| 292 net_log.EndEvent(NetLog::TYPE_SSL_CONNECT); | 290 net_log.EndEvent(NetLog::TYPE_SSL_CONNECT); |
| 293 return rv; | 291 return rv; |
| 292 } |
| 293 |
| 294 rv = InitializeSSLOptions(); |
| 295 if (rv != OK) { |
| 296 net_log.EndEvent(NetLog::TYPE_SSL_CONNECT); |
| 297 return rv; |
| 294 } | 298 } |
| 295 | 299 |
| 296 GotoState(STATE_HANDSHAKE); | 300 GotoState(STATE_HANDSHAKE); |
| 297 rv = DoHandshakeLoop(OK); | 301 rv = DoHandshakeLoop(OK); |
| 298 if (rv == ERR_IO_PENDING) { | 302 if (rv == ERR_IO_PENDING) { |
| 299 user_connect_callback_ = callback; | 303 user_connect_callback_ = callback; |
| 300 net_log_ = net_log; | 304 net_log_ = net_log; |
| 301 } else { | 305 } else { |
| 302 net_log.EndEvent(NetLog::TYPE_SSL_CONNECT); | 306 net_log.EndEvent(NetLog::TYPE_SSL_CONNECT); |
| 303 } | 307 } |
| (...skipping 1118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1422 } | 1426 } |
| 1423 PRErrorCode prerr = PR_GetError(); | 1427 PRErrorCode prerr = PR_GetError(); |
| 1424 if (prerr == PR_WOULD_BLOCK_ERROR) { | 1428 if (prerr == PR_WOULD_BLOCK_ERROR) { |
| 1425 return ERR_IO_PENDING; | 1429 return ERR_IO_PENDING; |
| 1426 } | 1430 } |
| 1427 LeaveFunction(""); | 1431 LeaveFunction(""); |
| 1428 return MapNSPRError(prerr); | 1432 return MapNSPRError(prerr); |
| 1429 } | 1433 } |
| 1430 | 1434 |
| 1431 } // namespace net | 1435 } // namespace net |
| OLD | NEW |