Index: net/base/multi_threaded_cert_verifier.cc |
diff --git a/net/base/multi_threaded_cert_verifier.cc b/net/base/multi_threaded_cert_verifier.cc |
index 6a3037bd073e7dbdceb42be1c1c7352f3d1506f8..ea13aa8449b2bdd62261a40b083bed1586219cdc 100644 |
--- a/net/base/multi_threaded_cert_verifier.cc |
+++ b/net/base/multi_threaded_cert_verifier.cc |
@@ -13,6 +13,7 @@ |
#include "base/synchronization/lock.h" |
#include "base/time.h" |
#include "base/threading/worker_pool.h" |
+#include "net/base/cert_verify_proc.h" |
#include "net/base/crl_set.h" |
#include "net/base/net_errors.h" |
#include "net/base/net_log.h" |
@@ -130,12 +131,14 @@ class CertVerifierRequest { |
// eventually if Start() succeeds. |
class CertVerifierWorker { |
public: |
- CertVerifierWorker(X509Certificate* cert, |
+ CertVerifierWorker(CertVerifyProc* verify_proc, |
+ X509Certificate* cert, |
const std::string& hostname, |
int flags, |
CRLSet* crl_set, |
MultiThreadedCertVerifier* cert_verifier) |
- : cert_(cert), |
+ : verify_proc_(verify_proc), |
+ cert_(cert), |
hostname_(hostname), |
flags_(flags), |
crl_set_(crl_set), |
@@ -168,7 +171,8 @@ class CertVerifierWorker { |
private: |
void Run() { |
// Runs on a worker thread. |
- error_ = cert_->Verify(hostname_, flags_, crl_set_, &verify_result_); |
+ error_ = verify_proc_->Verify(cert_, hostname_, flags_, crl_set_, |
+ &verify_result_); |
#if defined(USE_NSS) |
// Detach the thread from NSPR. |
// Calling NSS functions attaches the thread to NSPR, which stores |
@@ -226,6 +230,7 @@ class CertVerifierWorker { |
delete this; |
} |
+ scoped_refptr<CertVerifyProc> verify_proc_; |
scoped_refptr<X509Certificate> cert_; |
const std::string hostname_; |
const int flags_; |
@@ -324,7 +329,8 @@ MultiThreadedCertVerifier::MultiThreadedCertVerifier() |
: cache_(kMaxCacheEntries), |
requests_(0), |
cache_hits_(0), |
- inflight_joins_(0) { |
+ inflight_joins_(0), |
+ verify_proc_(CertVerifyProc::CreateDefault()) { |
CertDatabase::AddObserver(this); |
} |
@@ -373,7 +379,8 @@ int MultiThreadedCertVerifier::Verify(X509Certificate* cert, |
job = j->second; |
} else { |
// Need to make a new request. |
- CertVerifierWorker* worker = new CertVerifierWorker(cert, hostname, flags, |
+ CertVerifierWorker* worker = new CertVerifierWorker(verify_proc_, cert, |
+ hostname, flags, |
crl_set, this); |
job = new CertVerifierJob( |
worker, |
@@ -441,4 +448,8 @@ void MultiThreadedCertVerifier::OnCertTrustChanged( |
ClearCache(); |
} |
+void MultiThreadedCertVerifier::SetCertVerifyProc(CertVerifyProc* verify_proc) { |
+ verify_proc_ = verify_proc; |
+} |
+ |
} // namespace net |