| 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 21 matching lines...) Expand all Loading... |
| 32 } | 32 } |
| 33 | 33 |
| 34 class MockCertVerifyProc : public CertVerifyProc { | 34 class MockCertVerifyProc : public CertVerifyProc { |
| 35 public: | 35 public: |
| 36 MockCertVerifyProc() {} | 36 MockCertVerifyProc() {} |
| 37 | 37 |
| 38 private: | 38 private: |
| 39 virtual ~MockCertVerifyProc() {} | 39 virtual ~MockCertVerifyProc() {} |
| 40 | 40 |
| 41 // CertVerifyProc implementation | 41 // CertVerifyProc implementation |
| 42 virtual bool SupportsAdditionalTrustAnchors() const OVERRIDE { | 42 virtual bool SupportsAdditionalTrustAnchors() const OVERRIDE { return false; } |
| 43 return false; | |
| 44 } | |
| 45 | 43 |
| 46 virtual int VerifyInternal(X509Certificate* cert, | 44 virtual int VerifyInternal(X509Certificate* cert, |
| 47 const std::string& hostname, | 45 const std::string& hostname, |
| 48 int flags, | 46 int flags, |
| 49 CRLSet* crl_set, | 47 CRLSet* crl_set, |
| 50 const CertificateList& additional_trust_anchors, | 48 const CertificateList& additional_trust_anchors, |
| 51 CertVerifyResult* verify_result) OVERRIDE { | 49 CertVerifyResult* verify_result) OVERRIDE { |
| 52 verify_result->Reset(); | 50 verify_result->Reset(); |
| 53 verify_result->verified_cert = cert; | 51 verify_result->verified_cert = cert; |
| 54 verify_result->cert_status = CERT_STATUS_COMMON_NAME_INVALID; | 52 verify_result->cert_status = CERT_STATUS_COMMON_NAME_INVALID; |
| (...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 326 // Keys to test | 324 // Keys to test |
| 327 MultiThreadedCertVerifier::RequestParams key1; | 325 MultiThreadedCertVerifier::RequestParams key1; |
| 328 MultiThreadedCertVerifier::RequestParams key2; | 326 MultiThreadedCertVerifier::RequestParams key2; |
| 329 | 327 |
| 330 // Expectation: | 328 // Expectation: |
| 331 // -1 means key1 is less than key2 | 329 // -1 means key1 is less than key2 |
| 332 // 0 means key1 equals key2 | 330 // 0 means key1 equals key2 |
| 333 // 1 means key1 is greater than key2 | 331 // 1 means key1 is greater than key2 |
| 334 int expected_result; | 332 int expected_result; |
| 335 } tests[] = { | 333 } tests[] = { |
| 336 { // Test for basic equivalence. | 334 {// Test for basic equivalence. |
| 337 MultiThreadedCertVerifier::RequestParams(a_key, a_key, "www.example.test", | 335 MultiThreadedCertVerifier::RequestParams( |
| 338 0, test_list), | 336 a_key, a_key, "www.example.test", 0, test_list), |
| 339 MultiThreadedCertVerifier::RequestParams(a_key, a_key, "www.example.test", | 337 MultiThreadedCertVerifier::RequestParams( |
| 340 0, test_list), | 338 a_key, a_key, "www.example.test", 0, test_list), |
| 341 0, | 339 0, |
| 342 }, | 340 }, |
| 343 { // Test that different certificates but with the same CA and for | 341 {// Test that different certificates but with the same CA and for |
| 344 // the same host are different validation keys. | 342 // the same host are different validation keys. |
| 345 MultiThreadedCertVerifier::RequestParams(a_key, a_key, "www.example.test", | 343 MultiThreadedCertVerifier::RequestParams( |
| 346 0, test_list), | 344 a_key, a_key, "www.example.test", 0, test_list), |
| 347 MultiThreadedCertVerifier::RequestParams(z_key, a_key, "www.example.test", | 345 MultiThreadedCertVerifier::RequestParams( |
| 348 0, test_list), | 346 z_key, a_key, "www.example.test", 0, test_list), |
| 349 -1, | 347 -1, |
| 350 }, | 348 }, |
| 351 { // Test that the same EE certificate for the same host, but with | 349 {// Test that the same EE certificate for the same host, but with |
| 352 // different chains are different validation keys. | 350 // different chains are different validation keys. |
| 353 MultiThreadedCertVerifier::RequestParams(a_key, z_key, "www.example.test", | 351 MultiThreadedCertVerifier::RequestParams( |
| 354 0, test_list), | 352 a_key, z_key, "www.example.test", 0, test_list), |
| 355 MultiThreadedCertVerifier::RequestParams(a_key, a_key, "www.example.test", | 353 MultiThreadedCertVerifier::RequestParams( |
| 356 0, test_list), | 354 a_key, a_key, "www.example.test", 0, test_list), |
| 357 1, | 355 1, |
| 358 }, | 356 }, |
| 359 { // The same certificate, with the same chain, but for different | 357 {// The same certificate, with the same chain, but for different |
| 360 // hosts are different validation keys. | 358 // hosts are different validation keys. |
| 361 MultiThreadedCertVerifier::RequestParams(a_key, a_key, | 359 MultiThreadedCertVerifier::RequestParams( |
| 362 "www1.example.test", 0, | 360 a_key, a_key, "www1.example.test", 0, test_list), |
| 363 test_list), | 361 MultiThreadedCertVerifier::RequestParams( |
| 364 MultiThreadedCertVerifier::RequestParams(a_key, a_key, | 362 a_key, a_key, "www2.example.test", 0, test_list), |
| 365 "www2.example.test", 0, | 363 -1, |
| 366 test_list), | 364 }, |
| 367 -1, | 365 {// The same certificate, chain, and host, but with different flags |
| 368 }, | 366 // are different validation keys. |
| 369 { // The same certificate, chain, and host, but with different flags | 367 MultiThreadedCertVerifier::RequestParams(a_key, |
| 370 // are different validation keys. | 368 a_key, |
| 371 MultiThreadedCertVerifier::RequestParams(a_key, a_key, "www.example.test", | 369 "www.example.test", |
| 372 CertVerifier::VERIFY_EV_CERT, | 370 CertVerifier::VERIFY_EV_CERT, |
| 373 test_list), | 371 test_list), |
| 374 MultiThreadedCertVerifier::RequestParams(a_key, a_key, "www.example.test", | 372 MultiThreadedCertVerifier::RequestParams( |
| 375 0, test_list), | 373 a_key, a_key, "www.example.test", 0, test_list), |
| 376 1, | 374 1, |
| 377 }, | 375 }, |
| 378 { // Different additional_trust_anchors. | 376 {// Different additional_trust_anchors. |
| 379 MultiThreadedCertVerifier::RequestParams(a_key, a_key, "www.example.test", | 377 MultiThreadedCertVerifier::RequestParams( |
| 380 0, empty_list), | 378 a_key, a_key, "www.example.test", 0, empty_list), |
| 381 MultiThreadedCertVerifier::RequestParams(a_key, a_key, "www.example.test", | 379 MultiThreadedCertVerifier::RequestParams( |
| 382 0, test_list), | 380 a_key, a_key, "www.example.test", 0, test_list), |
| 383 -1, | 381 -1, |
| 384 }, | 382 }, |
| 385 }; | 383 }; |
| 386 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { | 384 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { |
| 387 SCOPED_TRACE(base::StringPrintf("Test[%" PRIuS "]", i)); | 385 SCOPED_TRACE(base::StringPrintf("Test[%" PRIuS "]", i)); |
| 388 | 386 |
| 389 const MultiThreadedCertVerifier::RequestParams& key1 = tests[i].key1; | 387 const MultiThreadedCertVerifier::RequestParams& key1 = tests[i].key1; |
| 390 const MultiThreadedCertVerifier::RequestParams& key2 = tests[i].key2; | 388 const MultiThreadedCertVerifier::RequestParams& key2 = tests[i].key2; |
| 391 | 389 |
| 392 switch (tests[i].expected_result) { | 390 switch (tests[i].expected_result) { |
| 393 case -1: | 391 case -1: |
| 394 EXPECT_TRUE(key1 < key2); | 392 EXPECT_TRUE(key1 < key2); |
| 395 EXPECT_FALSE(key2 < key1); | 393 EXPECT_FALSE(key2 < key1); |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 476 Mock::VerifyAndClearExpectations(&trust_provider); | 474 Mock::VerifyAndClearExpectations(&trust_provider); |
| 477 ASSERT_EQ(ERR_IO_PENDING, error); | 475 ASSERT_EQ(ERR_IO_PENDING, error); |
| 478 EXPECT_TRUE(request_handle); | 476 EXPECT_TRUE(request_handle); |
| 479 error = callback.WaitForResult(); | 477 error = callback.WaitForResult(); |
| 480 EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, error); | 478 EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, error); |
| 481 ASSERT_EQ(3u, verifier_.requests()); | 479 ASSERT_EQ(3u, verifier_.requests()); |
| 482 ASSERT_EQ(1u, verifier_.cache_hits()); | 480 ASSERT_EQ(1u, verifier_.cache_hits()); |
| 483 } | 481 } |
| 484 | 482 |
| 485 } // namespace net | 483 } // namespace net |
| OLD | NEW |