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

Side by Side Diff: net/cert/cert_verifier.cc

Issue 1987113002: Introduce CertVerifier::RequestParams (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move tests Created 4 years, 7 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
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 "net/cert/cert_verifier.h" 5 #include "net/cert/cert_verifier.h"
6 6
7 #include <algorithm>
7 #include <memory> 8 #include <memory>
8 9
9 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
11 #include "base/sha1.h"
10 #include "build/build_config.h" 12 #include "build/build_config.h"
11 #include "net/cert/cert_verify_proc.h" 13 #include "net/cert/cert_verify_proc.h"
12 14
13 #if defined(OS_NACL) 15 #if defined(OS_NACL)
14 #include "base/logging.h" 16 #include "base/logging.h"
15 #else 17 #else
16 #include "net/cert/multi_threaded_cert_verifier.h" 18 #include "net/cert/multi_threaded_cert_verifier.h"
17 #endif 19 #endif
18 20
19 namespace net { 21 namespace net {
20 22
23 CertVerifier::RequestParams::RequestParams(
24 X509Certificate* certificate,
25 const std::string& hostname,
26 int flags,
27 const std::string& ocsp_response,
28 const CertificateList& additional_trust_anchors)
29 : hostname_(hostname), flags_(flags) {
30 // Rather than store all of the original data, create a fingerprint based
31 // on the hash of the request data.
32 SHA1HashValue ocsp_hash;
33 base::SHA1HashBytes(
34 reinterpret_cast<const unsigned char*>(ocsp_response.data()),
35 ocsp_response.size(), ocsp_hash.data);
36
37 request_data_.reserve(additional_trust_anchors.size() + 3);
38 request_data_.push_back(ocsp_hash);
39 request_data_.push_back(certificate->fingerprint());
40 request_data_.push_back(certificate->ca_fingerprint());
41 for (const auto& trust_anchor : additional_trust_anchors)
42 request_data_.push_back(trust_anchor->fingerprint());
43 }
44
45 CertVerifier::RequestParams::RequestParams(const RequestParams& other) =
46 default;
47 CertVerifier::RequestParams::~RequestParams() {}
48
49 bool CertVerifier::RequestParams::operator<(
50 const CertVerifier::RequestParams& other) const {
51 if (flags_ != other.flags_)
52 return flags_ < other.flags_;
53 if (hostname_ != other.hostname_)
54 return hostname_ < other.hostname_;
55 return std::lexicographical_compare(
56 request_data_.begin(), request_data_.end(), other.request_data_.begin(),
57 other.request_data_.end(), SHA1HashValueLessThan());
58 }
59
21 bool CertVerifier::SupportsOCSPStapling() { 60 bool CertVerifier::SupportsOCSPStapling() {
22 return false; 61 return false;
23 } 62 }
24 63
25 std::unique_ptr<CertVerifier> CertVerifier::CreateDefault() { 64 std::unique_ptr<CertVerifier> CertVerifier::CreateDefault() {
26 #if defined(OS_NACL) 65 #if defined(OS_NACL)
27 NOTIMPLEMENTED(); 66 NOTIMPLEMENTED();
28 return std::unique_ptr<CertVerifier>(); 67 return std::unique_ptr<CertVerifier>();
29 #else 68 #else
30 return base::WrapUnique( 69 return base::WrapUnique(
31 new MultiThreadedCertVerifier(CertVerifyProc::CreateDefault())); 70 new MultiThreadedCertVerifier(CertVerifyProc::CreateDefault()));
32 #endif 71 #endif
33 } 72 }
34 73
35 } // namespace net 74 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698