| OLD | NEW |
| 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/cert_net/nss_ocsp.h" | 5 #include "net/cert_net/nss_ocsp.h" |
| 6 | 6 |
| 7 #include <certt.h> | 7 #include <certt.h> |
| 8 #include <certdb.h> | 8 #include <certdb.h> |
| 9 #include <nspr.h> | 9 #include <nspr.h> |
| 10 #include <nss.h> | 10 #include <nss.h> |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 164 friend struct base::DefaultLazyInstanceTraits<OCSPNSSInitialization>; | 164 friend struct base::DefaultLazyInstanceTraits<OCSPNSSInitialization>; |
| 165 | 165 |
| 166 OCSPNSSInitialization(); | 166 OCSPNSSInitialization(); |
| 167 ~OCSPNSSInitialization(); | 167 ~OCSPNSSInitialization(); |
| 168 | 168 |
| 169 SEC_HttpClientFcn client_fcn_; | 169 SEC_HttpClientFcn client_fcn_; |
| 170 | 170 |
| 171 DISALLOW_COPY_AND_ASSIGN(OCSPNSSInitialization); | 171 DISALLOW_COPY_AND_ASSIGN(OCSPNSSInitialization); |
| 172 }; | 172 }; |
| 173 | 173 |
| 174 base::LazyInstance<OCSPNSSInitialization> g_ocsp_nss_initialization = | 174 base::LazyInstance<OCSPNSSInitialization>::Leaky g_ocsp_nss_initialization = |
| 175 LAZY_INSTANCE_INITIALIZER; | 175 LAZY_INSTANCE_INITIALIZER; |
| 176 | 176 |
| 177 // Concrete class for SEC_HTTP_REQUEST_SESSION. | 177 // Concrete class for SEC_HTTP_REQUEST_SESSION. |
| 178 // Public methods except virtual methods of URLRequest::Delegate | 178 // Public methods except virtual methods of URLRequest::Delegate |
| 179 // (On* methods) run on certificate verifier thread (worker thread). | 179 // (On* methods) run on certificate verifier thread (worker thread). |
| 180 // Virtual methods of URLRequest::Delegate and private methods run | 180 // Virtual methods of URLRequest::Delegate and private methods run |
| 181 // on IO thread. | 181 // on IO thread. |
| 182 class OCSPRequestSession | 182 class OCSPRequestSession |
| 183 : public base::RefCountedThreadSafe<OCSPRequestSession>, | 183 : public base::RefCountedThreadSafe<OCSPRequestSession>, |
| 184 public URLRequest::Delegate { | 184 public URLRequest::Delegate { |
| (...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 587 status = CERT_RegisterAlternateOCSPAIAInfoCallBack( | 587 status = CERT_RegisterAlternateOCSPAIAInfoCallBack( |
| 588 GetAlternateOCSPAIAInfo, &old_callback); | 588 GetAlternateOCSPAIAInfo, &old_callback); |
| 589 if (status == SECSuccess) { | 589 if (status == SECSuccess) { |
| 590 DCHECK(!old_callback); | 590 DCHECK(!old_callback); |
| 591 } else { | 591 } else { |
| 592 NOTREACHED() << "Error initializing OCSP: " << PR_GetError(); | 592 NOTREACHED() << "Error initializing OCSP: " << PR_GetError(); |
| 593 } | 593 } |
| 594 } | 594 } |
| 595 | 595 |
| 596 OCSPNSSInitialization::~OCSPNSSInitialization() { | 596 OCSPNSSInitialization::~OCSPNSSInitialization() { |
| 597 SECStatus status = CERT_RegisterAlternateOCSPAIAInfoCallBack(NULL, NULL); | |
| 598 if (status != SECSuccess) { | |
| 599 LOG(ERROR) << "Error unregistering OCSP: " << PR_GetError(); | |
| 600 } | |
| 601 } | 597 } |
| 602 | 598 |
| 603 | 599 |
| 604 // OCSP Http Client functions. | 600 // OCSP Http Client functions. |
| 605 // Our Http Client functions operate in blocking mode. | 601 // Our Http Client functions operate in blocking mode. |
| 606 SECStatus OCSPCreateSession(const char* host, PRUint16 portnum, | 602 SECStatus OCSPCreateSession(const char* host, PRUint16 portnum, |
| 607 SEC_HTTP_SERVER_SESSION* pSession) { | 603 SEC_HTTP_SERVER_SESSION* pSession) { |
| 608 VLOG(1) << "OCSP create session: host=" << host << " port=" << portnum; | 604 VLOG(1) << "OCSP create session: host=" << host << " port=" << portnum; |
| 609 pthread_mutex_lock(&g_request_context_lock); | 605 pthread_mutex_lock(&g_request_context_lock); |
| 610 URLRequestContext* request_context = g_request_context; | 606 URLRequestContext* request_context = g_request_context; |
| (...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 966 void SetURLRequestContextForNSSHttpIO(URLRequestContext* request_context) { | 962 void SetURLRequestContextForNSSHttpIO(URLRequestContext* request_context) { |
| 967 pthread_mutex_lock(&g_request_context_lock); | 963 pthread_mutex_lock(&g_request_context_lock); |
| 968 if (request_context) { | 964 if (request_context) { |
| 969 DCHECK(!g_request_context); | 965 DCHECK(!g_request_context); |
| 970 } | 966 } |
| 971 g_request_context = request_context; | 967 g_request_context = request_context; |
| 972 pthread_mutex_unlock(&g_request_context_lock); | 968 pthread_mutex_unlock(&g_request_context_lock); |
| 973 } | 969 } |
| 974 | 970 |
| 975 } // namespace net | 971 } // namespace net |
| OLD | NEW |