| 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/multi_threaded_cert_verifier.h" | 5 #include "net/cert/multi_threaded_cert_verifier.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 496 hash_values.push_back(ocsp_hash); | 496 hash_values.push_back(ocsp_hash); |
| 497 hash_values.push_back(cert_fingerprint_arg); | 497 hash_values.push_back(cert_fingerprint_arg); |
| 498 hash_values.push_back(ca_fingerprint_arg); | 498 hash_values.push_back(ca_fingerprint_arg); |
| 499 for (size_t i = 0; i < additional_trust_anchors.size(); ++i) | 499 for (size_t i = 0; i < additional_trust_anchors.size(); ++i) |
| 500 hash_values.push_back(additional_trust_anchors[i]->fingerprint()); | 500 hash_values.push_back(additional_trust_anchors[i]->fingerprint()); |
| 501 } | 501 } |
| 502 | 502 |
| 503 MultiThreadedCertVerifier::RequestParams::RequestParams( | 503 MultiThreadedCertVerifier::RequestParams::RequestParams( |
| 504 const RequestParams& other) = default; | 504 const RequestParams& other) = default; |
| 505 | 505 |
| 506 MultiThreadedCertVerifier::RequestParams::RequestParams() {} |
| 507 |
| 506 MultiThreadedCertVerifier::RequestParams::~RequestParams() {} | 508 MultiThreadedCertVerifier::RequestParams::~RequestParams() {} |
| 507 | 509 |
| 508 bool MultiThreadedCertVerifier::RequestParams::operator<( | 510 bool MultiThreadedCertVerifier::RequestParams::operator<( |
| 509 const RequestParams& other) const { | 511 const RequestParams& other) const { |
| 510 // |flags| is compared before |cert_fingerprint|, |ca_fingerprint|, | 512 // |flags| is compared before |cert_fingerprint|, |ca_fingerprint|, |
| 511 // |hostname|, and |ocsp_response|, under assumption that integer comparisons | 513 // |hostname|, and |ocsp_response|, under assumption that integer comparisons |
| 512 // are faster than memory and string comparisons. | 514 // are faster than memory and string comparisons. |
| 513 if (flags != other.flags) | 515 if (flags != other.flags) |
| 514 return flags < other.flags; | 516 return flags < other.flags; |
| 515 if (hostname != other.hostname) | 517 if (hostname != other.hostname) |
| 516 return hostname < other.hostname; | 518 return hostname < other.hostname; |
| 517 return std::lexicographical_compare( | 519 return std::lexicographical_compare( |
| 518 hash_values.begin(), hash_values.end(), other.hash_values.begin(), | 520 hash_values.begin(), hash_values.end(), other.hash_values.begin(), |
| 519 other.hash_values.end(), SHA1HashValueLessThan()); | 521 other.hash_values.end(), SHA1HashValueLessThan()); |
| 520 } | 522 } |
| 521 | 523 |
| 522 bool MultiThreadedCertVerifier::JobComparator::operator()( | 524 bool MultiThreadedCertVerifier::JobComparator::operator()( |
| 523 const CertVerifierJob* job1, | 525 const CertVerifierJob* job1, |
| 524 const CertVerifierJob* job2) const { | 526 const CertVerifierJob* job2) const { |
| 525 return job1->key() < job2->key(); | 527 return job1->key() < job2->key(); |
| 526 } | 528 } |
| 527 | 529 |
| 530 MultiThreadedCertVerifier::CertVerifierCacheIterator::CertVerifierCacheIterator( |
| 531 const MultiThreadedCertVerifier& verifier) |
| 532 : iterator_(verifier.cache_) {} |
| 533 |
| 534 MultiThreadedCertVerifier::CertVerifierCacheIterator:: |
| 535 ~CertVerifierCacheIterator() {} |
| 536 |
| 528 void MultiThreadedCertVerifier::SaveResultToCache(const RequestParams& key, | 537 void MultiThreadedCertVerifier::SaveResultToCache(const RequestParams& key, |
| 529 const CachedResult& result) { | 538 const CachedResult& result) { |
| 530 DCHECK(CalledOnValidThread()); | 539 DCHECK(CalledOnValidThread()); |
| 531 | 540 |
| 532 // When caching, this uses the time that validation started as the | 541 // When caching, this uses the time that validation started as the |
| 533 // beginning of the validity, rather than the time that it ended (aka | 542 // beginning of the validity, rather than the time that it ended (aka |
| 534 // base::Time::Now()), to account for the fact that during validation, | 543 // base::Time::Now()), to account for the fact that during validation, |
| 535 // the clock may have changed. | 544 // the clock may have changed. |
| 536 // | 545 // |
| 537 // If the clock has changed significantly, then this result will ideally | 546 // If the clock has changed significantly, then this result will ideally |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 587 // The JobSet is kept in sorted order so items can be found using binary | 596 // The JobSet is kept in sorted order so items can be found using binary |
| 588 // search. | 597 // search. |
| 589 auto it = std::lower_bound(inflight_.begin(), inflight_.end(), key, | 598 auto it = std::lower_bound(inflight_.begin(), inflight_.end(), key, |
| 590 JobToRequestParamsComparator()); | 599 JobToRequestParamsComparator()); |
| 591 if (it != inflight_.end() && !(key < (*it)->key())) | 600 if (it != inflight_.end() && !(key < (*it)->key())) |
| 592 return *it; | 601 return *it; |
| 593 return nullptr; | 602 return nullptr; |
| 594 } | 603 } |
| 595 | 604 |
| 596 } // namespace net | 605 } // namespace net |
| OLD | NEW |