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 "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
9 #include "base/format_macros.h" | 9 #include "base/format_macros.h" |
10 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 virtual ~MultiThreadedCertVerifierTest() {} | 72 virtual ~MultiThreadedCertVerifierTest() {} |
73 | 73 |
74 protected: | 74 protected: |
75 MultiThreadedCertVerifier verifier_; | 75 MultiThreadedCertVerifier verifier_; |
76 }; | 76 }; |
77 | 77 |
78 TEST_F(MultiThreadedCertVerifierTest, CacheHit) { | 78 TEST_F(MultiThreadedCertVerifierTest, CacheHit) { |
79 base::FilePath certs_dir = GetTestCertsDirectory(); | 79 base::FilePath certs_dir = GetTestCertsDirectory(); |
80 scoped_refptr<X509Certificate> test_cert( | 80 scoped_refptr<X509Certificate> test_cert( |
81 ImportCertFromFile(certs_dir, "ok_cert.pem")); | 81 ImportCertFromFile(certs_dir, "ok_cert.pem")); |
82 ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert); | 82 ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert.get()); |
83 | 83 |
84 int error; | 84 int error; |
85 CertVerifyResult verify_result; | 85 CertVerifyResult verify_result; |
86 TestCompletionCallback callback; | 86 TestCompletionCallback callback; |
87 CertVerifier::RequestHandle request_handle; | 87 CertVerifier::RequestHandle request_handle; |
88 | 88 |
89 error = verifier_.Verify(test_cert.get(), | 89 error = verifier_.Verify(test_cert.get(), |
90 "www.example.com", | 90 "www.example.com", |
91 0, | 91 0, |
92 NULL, | 92 NULL, |
(...skipping 29 matching lines...) Expand all Loading... |
122 } | 122 } |
123 | 123 |
124 // Tests the same server certificate with different intermediate CA | 124 // Tests the same server certificate with different intermediate CA |
125 // certificates. These should be treated as different certificate chains even | 125 // certificates. These should be treated as different certificate chains even |
126 // though the two X509Certificate objects contain the same server certificate. | 126 // though the two X509Certificate objects contain the same server certificate. |
127 TEST_F(MultiThreadedCertVerifierTest, DifferentCACerts) { | 127 TEST_F(MultiThreadedCertVerifierTest, DifferentCACerts) { |
128 base::FilePath certs_dir = GetTestCertsDirectory(); | 128 base::FilePath certs_dir = GetTestCertsDirectory(); |
129 | 129 |
130 scoped_refptr<X509Certificate> server_cert = | 130 scoped_refptr<X509Certificate> server_cert = |
131 ImportCertFromFile(certs_dir, "salesforce_com_test.pem"); | 131 ImportCertFromFile(certs_dir, "salesforce_com_test.pem"); |
132 ASSERT_NE(static_cast<X509Certificate*>(NULL), server_cert); | 132 ASSERT_NE(static_cast<X509Certificate*>(NULL), server_cert.get()); |
133 | 133 |
134 scoped_refptr<X509Certificate> intermediate_cert1 = | 134 scoped_refptr<X509Certificate> intermediate_cert1 = |
135 ImportCertFromFile(certs_dir, "verisign_intermediate_ca_2011.pem"); | 135 ImportCertFromFile(certs_dir, "verisign_intermediate_ca_2011.pem"); |
136 ASSERT_NE(static_cast<X509Certificate*>(NULL), intermediate_cert1); | 136 ASSERT_NE(static_cast<X509Certificate*>(NULL), intermediate_cert1.get()); |
137 | 137 |
138 scoped_refptr<X509Certificate> intermediate_cert2 = | 138 scoped_refptr<X509Certificate> intermediate_cert2 = |
139 ImportCertFromFile(certs_dir, "verisign_intermediate_ca_2016.pem"); | 139 ImportCertFromFile(certs_dir, "verisign_intermediate_ca_2016.pem"); |
140 ASSERT_NE(static_cast<X509Certificate*>(NULL), intermediate_cert2); | 140 ASSERT_NE(static_cast<X509Certificate*>(NULL), intermediate_cert2.get()); |
141 | 141 |
142 X509Certificate::OSCertHandles intermediates; | 142 X509Certificate::OSCertHandles intermediates; |
143 intermediates.push_back(intermediate_cert1->os_cert_handle()); | 143 intermediates.push_back(intermediate_cert1->os_cert_handle()); |
144 scoped_refptr<X509Certificate> cert_chain1 = | 144 scoped_refptr<X509Certificate> cert_chain1 = |
145 X509Certificate::CreateFromHandle(server_cert->os_cert_handle(), | 145 X509Certificate::CreateFromHandle(server_cert->os_cert_handle(), |
146 intermediates); | 146 intermediates); |
147 | 147 |
148 intermediates.clear(); | 148 intermediates.clear(); |
149 intermediates.push_back(intermediate_cert2->os_cert_handle()); | 149 intermediates.push_back(intermediate_cert2->os_cert_handle()); |
150 scoped_refptr<X509Certificate> cert_chain2 = | 150 scoped_refptr<X509Certificate> cert_chain2 = |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
189 ASSERT_EQ(0u, verifier_.cache_hits()); | 189 ASSERT_EQ(0u, verifier_.cache_hits()); |
190 ASSERT_EQ(0u, verifier_.inflight_joins()); | 190 ASSERT_EQ(0u, verifier_.inflight_joins()); |
191 ASSERT_EQ(2u, verifier_.GetCacheSize()); | 191 ASSERT_EQ(2u, verifier_.GetCacheSize()); |
192 } | 192 } |
193 | 193 |
194 // Tests an inflight join. | 194 // Tests an inflight join. |
195 TEST_F(MultiThreadedCertVerifierTest, InflightJoin) { | 195 TEST_F(MultiThreadedCertVerifierTest, InflightJoin) { |
196 base::FilePath certs_dir = GetTestCertsDirectory(); | 196 base::FilePath certs_dir = GetTestCertsDirectory(); |
197 scoped_refptr<X509Certificate> test_cert( | 197 scoped_refptr<X509Certificate> test_cert( |
198 ImportCertFromFile(certs_dir, "ok_cert.pem")); | 198 ImportCertFromFile(certs_dir, "ok_cert.pem")); |
199 ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert); | 199 ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert.get()); |
200 | 200 |
201 int error; | 201 int error; |
202 CertVerifyResult verify_result; | 202 CertVerifyResult verify_result; |
203 TestCompletionCallback callback; | 203 TestCompletionCallback callback; |
204 CertVerifier::RequestHandle request_handle; | 204 CertVerifier::RequestHandle request_handle; |
205 CertVerifyResult verify_result2; | 205 CertVerifyResult verify_result2; |
206 TestCompletionCallback callback2; | 206 TestCompletionCallback callback2; |
207 CertVerifier::RequestHandle request_handle2; | 207 CertVerifier::RequestHandle request_handle2; |
208 | 208 |
209 error = verifier_.Verify(test_cert.get(), | 209 error = verifier_.Verify(test_cert.get(), |
(...skipping 23 matching lines...) Expand all Loading... |
233 ASSERT_EQ(2u, verifier_.requests()); | 233 ASSERT_EQ(2u, verifier_.requests()); |
234 ASSERT_EQ(0u, verifier_.cache_hits()); | 234 ASSERT_EQ(0u, verifier_.cache_hits()); |
235 ASSERT_EQ(1u, verifier_.inflight_joins()); | 235 ASSERT_EQ(1u, verifier_.inflight_joins()); |
236 } | 236 } |
237 | 237 |
238 // Tests that the callback of a canceled request is never made. | 238 // Tests that the callback of a canceled request is never made. |
239 TEST_F(MultiThreadedCertVerifierTest, CancelRequest) { | 239 TEST_F(MultiThreadedCertVerifierTest, CancelRequest) { |
240 base::FilePath certs_dir = GetTestCertsDirectory(); | 240 base::FilePath certs_dir = GetTestCertsDirectory(); |
241 scoped_refptr<X509Certificate> test_cert( | 241 scoped_refptr<X509Certificate> test_cert( |
242 ImportCertFromFile(certs_dir, "ok_cert.pem")); | 242 ImportCertFromFile(certs_dir, "ok_cert.pem")); |
243 ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert); | 243 ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert.get()); |
244 | 244 |
245 int error; | 245 int error; |
246 CertVerifyResult verify_result; | 246 CertVerifyResult verify_result; |
247 CertVerifier::RequestHandle request_handle; | 247 CertVerifier::RequestHandle request_handle; |
248 | 248 |
249 error = verifier_.Verify(test_cert.get(), | 249 error = verifier_.Verify(test_cert.get(), |
250 "www.example.com", | 250 "www.example.com", |
251 0, | 251 0, |
252 NULL, | 252 NULL, |
253 &verify_result, | 253 &verify_result, |
(...skipping 28 matching lines...) Expand all Loading... |
282 #if !defined(LEAK_SANITIZER) | 282 #if !defined(LEAK_SANITIZER) |
283 #define MAYBE_CancelRequestThenQuit CancelRequestThenQuit | 283 #define MAYBE_CancelRequestThenQuit CancelRequestThenQuit |
284 #else | 284 #else |
285 // See PR303886. LeakSanitizer flags a leak here. | 285 // See PR303886. LeakSanitizer flags a leak here. |
286 #define MAYBE_CancelRequestThenQuit DISABLED_CancelRequestThenQuit | 286 #define MAYBE_CancelRequestThenQuit DISABLED_CancelRequestThenQuit |
287 #endif | 287 #endif |
288 TEST_F(MultiThreadedCertVerifierTest, MAYBE_CancelRequestThenQuit) { | 288 TEST_F(MultiThreadedCertVerifierTest, MAYBE_CancelRequestThenQuit) { |
289 base::FilePath certs_dir = GetTestCertsDirectory(); | 289 base::FilePath certs_dir = GetTestCertsDirectory(); |
290 scoped_refptr<X509Certificate> test_cert( | 290 scoped_refptr<X509Certificate> test_cert( |
291 ImportCertFromFile(certs_dir, "ok_cert.pem")); | 291 ImportCertFromFile(certs_dir, "ok_cert.pem")); |
292 ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert); | 292 ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert.get()); |
293 | 293 |
294 int error; | 294 int error; |
295 CertVerifyResult verify_result; | 295 CertVerifyResult verify_result; |
296 TestCompletionCallback callback; | 296 TestCompletionCallback callback; |
297 CertVerifier::RequestHandle request_handle; | 297 CertVerifier::RequestHandle request_handle; |
298 | 298 |
299 error = verifier_.Verify(test_cert.get(), | 299 error = verifier_.Verify(test_cert.get(), |
300 "www.example.com", | 300 "www.example.com", |
301 0, | 301 0, |
302 NULL, | 302 NULL, |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
476 Mock::VerifyAndClearExpectations(&trust_provider); | 476 Mock::VerifyAndClearExpectations(&trust_provider); |
477 ASSERT_EQ(ERR_IO_PENDING, error); | 477 ASSERT_EQ(ERR_IO_PENDING, error); |
478 EXPECT_TRUE(request_handle); | 478 EXPECT_TRUE(request_handle); |
479 error = callback.WaitForResult(); | 479 error = callback.WaitForResult(); |
480 EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, error); | 480 EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, error); |
481 ASSERT_EQ(3u, verifier_.requests()); | 481 ASSERT_EQ(3u, verifier_.requests()); |
482 ASSERT_EQ(1u, verifier_.cache_hits()); | 482 ASSERT_EQ(1u, verifier_.cache_hits()); |
483 } | 483 } |
484 | 484 |
485 } // namespace net | 485 } // namespace net |
OLD | NEW |