Index: net/cert/multi_threaded_cert_verifier_unittest.cc |
diff --git a/net/cert/multi_threaded_cert_verifier_unittest.cc b/net/cert/multi_threaded_cert_verifier_unittest.cc |
index c7c143f3902b463b135264ed8c3c41a6560190a9..142e65a8f648156e29b12d5387c1c0657213964d 100644 |
--- a/net/cert/multi_threaded_cert_verifier_unittest.cc |
+++ b/net/cert/multi_threaded_cert_verifier_unittest.cc |
@@ -41,9 +41,11 @@ class MockCertVerifyProc : public CertVerifyProc { |
// CertVerifyProc implementation |
bool SupportsAdditionalTrustAnchors() const override { return false; } |
+ bool SupportsOCSPStapling() const override { return false; } |
int VerifyInternal(X509Certificate* cert, |
const std::string& hostname, |
+ const std::string& ocsp_response, |
int flags, |
CRLSet* crl_set, |
const CertificateList& additional_trust_anchors, |
@@ -85,14 +87,9 @@ TEST_F(MultiThreadedCertVerifierTest, CacheHit) { |
TestCompletionCallback callback; |
CertVerifier::RequestHandle request_handle; |
- error = verifier_.Verify(test_cert.get(), |
- "www.example.com", |
- 0, |
- NULL, |
- &verify_result, |
- callback.callback(), |
- &request_handle, |
- BoundNetLog()); |
+ error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0, |
+ NULL, &verify_result, callback.callback(), |
+ &request_handle, BoundNetLog()); |
ASSERT_EQ(ERR_IO_PENDING, error); |
EXPECT_TRUE(request_handle); |
error = callback.WaitForResult(); |
@@ -102,14 +99,9 @@ TEST_F(MultiThreadedCertVerifierTest, CacheHit) { |
ASSERT_EQ(0u, verifier_.inflight_joins()); |
ASSERT_EQ(1u, verifier_.GetCacheSize()); |
- error = verifier_.Verify(test_cert.get(), |
- "www.example.com", |
- 0, |
- NULL, |
- &verify_result, |
- callback.callback(), |
- &request_handle, |
- BoundNetLog()); |
+ error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0, |
+ NULL, &verify_result, callback.callback(), |
+ &request_handle, BoundNetLog()); |
// Synchronous completion. |
ASSERT_NE(ERR_IO_PENDING, error); |
ASSERT_TRUE(IsCertificateError(error)); |
@@ -155,14 +147,9 @@ TEST_F(MultiThreadedCertVerifierTest, DifferentCACerts) { |
TestCompletionCallback callback; |
CertVerifier::RequestHandle request_handle; |
- error = verifier_.Verify(cert_chain1.get(), |
- "www.example.com", |
- 0, |
- NULL, |
- &verify_result, |
- callback.callback(), |
- &request_handle, |
- BoundNetLog()); |
+ error = verifier_.Verify(cert_chain1.get(), "www.example.com", std::string(), |
+ 0, NULL, &verify_result, callback.callback(), |
+ &request_handle, BoundNetLog()); |
ASSERT_EQ(ERR_IO_PENDING, error); |
EXPECT_TRUE(request_handle); |
error = callback.WaitForResult(); |
@@ -172,14 +159,9 @@ TEST_F(MultiThreadedCertVerifierTest, DifferentCACerts) { |
ASSERT_EQ(0u, verifier_.inflight_joins()); |
ASSERT_EQ(1u, verifier_.GetCacheSize()); |
- error = verifier_.Verify(cert_chain2.get(), |
- "www.example.com", |
- 0, |
- NULL, |
- &verify_result, |
- callback.callback(), |
- &request_handle, |
- BoundNetLog()); |
+ error = verifier_.Verify(cert_chain2.get(), "www.example.com", std::string(), |
+ 0, NULL, &verify_result, callback.callback(), |
+ &request_handle, BoundNetLog()); |
ASSERT_EQ(ERR_IO_PENDING, error); |
EXPECT_TRUE(request_handle); |
error = callback.WaitForResult(); |
@@ -205,24 +187,14 @@ TEST_F(MultiThreadedCertVerifierTest, InflightJoin) { |
TestCompletionCallback callback2; |
CertVerifier::RequestHandle request_handle2; |
- error = verifier_.Verify(test_cert.get(), |
- "www.example.com", |
- 0, |
- NULL, |
- &verify_result, |
- callback.callback(), |
- &request_handle, |
- BoundNetLog()); |
+ error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0, |
+ NULL, &verify_result, callback.callback(), |
+ &request_handle, BoundNetLog()); |
ASSERT_EQ(ERR_IO_PENDING, error); |
EXPECT_TRUE(request_handle); |
- error = verifier_.Verify(test_cert.get(), |
- "www.example.com", |
- 0, |
- NULL, |
- &verify_result2, |
- callback2.callback(), |
- &request_handle2, |
- BoundNetLog()); |
+ error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0, |
+ NULL, &verify_result2, callback2.callback(), |
+ &request_handle2, BoundNetLog()); |
EXPECT_EQ(ERR_IO_PENDING, error); |
EXPECT_TRUE(request_handle2 != NULL); |
error = callback.WaitForResult(); |
@@ -245,14 +217,9 @@ TEST_F(MultiThreadedCertVerifierTest, CancelRequest) { |
CertVerifyResult verify_result; |
CertVerifier::RequestHandle request_handle; |
- error = verifier_.Verify(test_cert.get(), |
- "www.example.com", |
- 0, |
- NULL, |
- &verify_result, |
- base::Bind(&FailTest), |
- &request_handle, |
- BoundNetLog()); |
+ error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0, |
+ NULL, &verify_result, base::Bind(&FailTest), |
+ &request_handle, BoundNetLog()); |
ASSERT_EQ(ERR_IO_PENDING, error); |
ASSERT_TRUE(request_handle != NULL); |
verifier_.CancelRequest(request_handle); |
@@ -262,14 +229,9 @@ TEST_F(MultiThreadedCertVerifierTest, CancelRequest) { |
// worker thread) is likely to complete by the end of this test. |
TestCompletionCallback callback; |
for (int i = 0; i < 5; ++i) { |
- error = verifier_.Verify(test_cert.get(), |
- "www2.example.com", |
- 0, |
- NULL, |
- &verify_result, |
- callback.callback(), |
- &request_handle, |
- BoundNetLog()); |
+ error = verifier_.Verify(test_cert.get(), "www2.example.com", std::string(), |
+ 0, NULL, &verify_result, callback.callback(), |
+ &request_handle, BoundNetLog()); |
ASSERT_EQ(ERR_IO_PENDING, error); |
EXPECT_TRUE(request_handle); |
error = callback.WaitForResult(); |
@@ -294,8 +256,8 @@ TEST_F(MultiThreadedCertVerifierTest, CancelRequestThenQuit) { |
// CertVerifyWorker may be leaked if the main thread shuts down before the |
// worker thread. |
ANNOTATE_SCOPED_MEMORY_LEAK; |
- error = verifier_.Verify(test_cert.get(), "www.example.com", 0, NULL, |
- &verify_result, callback.callback(), |
+ error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), |
+ 0, NULL, &verify_result, callback.callback(), |
&request_handle, BoundNetLog()); |
} |
ASSERT_EQ(ERR_IO_PENDING, error); |
@@ -327,55 +289,67 @@ TEST_F(MultiThreadedCertVerifierTest, RequestParamsComparators) { |
// 1 means key1 is greater than key2 |
int expected_result; |
} tests[] = { |
- { // Test for basic equivalence. |
- MultiThreadedCertVerifier::RequestParams(a_key, a_key, "www.example.test", |
- 0, test_list), |
- MultiThreadedCertVerifier::RequestParams(a_key, a_key, "www.example.test", |
- 0, test_list), |
- 0, |
- }, |
- { // Test that different certificates but with the same CA and for |
+ { |
+ // Test for basic equivalence. |
+ MultiThreadedCertVerifier::RequestParams( |
+ a_key, a_key, "www.example.test", std::string(), 0, test_list), |
+ MultiThreadedCertVerifier::RequestParams( |
+ a_key, a_key, "www.example.test", std::string(), 0, test_list), |
+ 0, |
+ }, |
+ { |
+ // Test that different certificates but with the same CA and for |
// the same host are different validation keys. |
- MultiThreadedCertVerifier::RequestParams(a_key, a_key, "www.example.test", |
- 0, test_list), |
- MultiThreadedCertVerifier::RequestParams(z_key, a_key, "www.example.test", |
- 0, test_list), |
- -1, |
- }, |
- { // Test that the same EE certificate for the same host, but with |
+ MultiThreadedCertVerifier::RequestParams( |
+ a_key, a_key, "www.example.test", std::string(), 0, test_list), |
+ MultiThreadedCertVerifier::RequestParams( |
+ z_key, a_key, "www.example.test", std::string(), 0, test_list), |
+ -1, |
+ }, |
+ { |
+ // Test that the same EE certificate for the same host, but with |
// different chains are different validation keys. |
- MultiThreadedCertVerifier::RequestParams(a_key, z_key, "www.example.test", |
- 0, test_list), |
- MultiThreadedCertVerifier::RequestParams(a_key, a_key, "www.example.test", |
- 0, test_list), |
- 1, |
- }, |
- { // The same certificate, with the same chain, but for different |
+ MultiThreadedCertVerifier::RequestParams( |
+ a_key, z_key, "www.example.test", std::string(), 0, test_list), |
+ MultiThreadedCertVerifier::RequestParams( |
+ a_key, a_key, "www.example.test", std::string(), 0, test_list), |
+ 1, |
+ }, |
+ { |
+ // The same certificate, with the same chain, but for different |
// hosts are different validation keys. |
- MultiThreadedCertVerifier::RequestParams(a_key, a_key, |
- "www1.example.test", 0, |
- test_list), |
- MultiThreadedCertVerifier::RequestParams(a_key, a_key, |
- "www2.example.test", 0, |
- test_list), |
- -1, |
- }, |
- { // The same certificate, chain, and host, but with different flags |
+ MultiThreadedCertVerifier::RequestParams( |
+ a_key, a_key, "www1.example.test", std::string(), 0, test_list), |
+ MultiThreadedCertVerifier::RequestParams( |
+ a_key, a_key, "www2.example.test", std::string(), 0, test_list), |
+ -1, |
+ }, |
+ { |
+ // The same certificate, chain, and host, but with different flags |
// are different validation keys. |
- MultiThreadedCertVerifier::RequestParams(a_key, a_key, "www.example.test", |
- CertVerifier::VERIFY_EV_CERT, |
- test_list), |
- MultiThreadedCertVerifier::RequestParams(a_key, a_key, "www.example.test", |
- 0, test_list), |
- 1, |
- }, |
- { // Different additional_trust_anchors. |
- MultiThreadedCertVerifier::RequestParams(a_key, a_key, "www.example.test", |
- 0, empty_list), |
- MultiThreadedCertVerifier::RequestParams(a_key, a_key, "www.example.test", |
- 0, test_list), |
- -1, |
- }, |
+ MultiThreadedCertVerifier::RequestParams( |
+ a_key, a_key, "www.example.test", std::string(), |
+ CertVerifier::VERIFY_EV_CERT, test_list), |
+ MultiThreadedCertVerifier::RequestParams( |
+ a_key, a_key, "www.example.test", std::string(), 0, test_list), |
+ 1, |
+ }, |
+ { |
+ // Different additional_trust_anchors. |
+ MultiThreadedCertVerifier::RequestParams( |
+ a_key, a_key, "www.example.test", std::string(), 0, empty_list), |
+ MultiThreadedCertVerifier::RequestParams( |
+ a_key, a_key, "www.example.test", std::string(), 0, test_list), |
+ -1, |
+ }, |
+ { |
+ // Different OCSP responses. |
+ MultiThreadedCertVerifier::RequestParams( |
+ a_key, a_key, "www.example.test", "ocsp response", 0, test_list), |
+ MultiThreadedCertVerifier::RequestParams( |
+ a_key, a_key, "www.example.test", std::string(), 0, test_list), |
+ -1, |
+ }, |
}; |
for (size_t i = 0; i < arraysize(tests); ++i) { |
SCOPED_TRACE(base::StringPrintf("Test[%" PRIuS "]", i)); |
@@ -422,14 +396,9 @@ TEST_F(MultiThreadedCertVerifierTest, CertTrustAnchorProvider) { |
CertVerifier::RequestHandle request_handle; |
EXPECT_CALL(trust_provider, GetAdditionalTrustAnchors()) |
.WillOnce(ReturnRef(empty_cert_list)); |
- error = verifier_.Verify(test_cert.get(), |
- "www.example.com", |
- 0, |
- NULL, |
- &verify_result, |
- callback.callback(), |
- &request_handle, |
- BoundNetLog()); |
+ error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0, |
+ NULL, &verify_result, callback.callback(), |
+ &request_handle, BoundNetLog()); |
Mock::VerifyAndClearExpectations(&trust_provider); |
ASSERT_EQ(ERR_IO_PENDING, error); |
EXPECT_TRUE(request_handle); |
@@ -441,14 +410,9 @@ TEST_F(MultiThreadedCertVerifierTest, CertTrustAnchorProvider) { |
// The next Verify() uses the cached result. |
EXPECT_CALL(trust_provider, GetAdditionalTrustAnchors()) |
.WillOnce(ReturnRef(empty_cert_list)); |
- error = verifier_.Verify(test_cert.get(), |
- "www.example.com", |
- 0, |
- NULL, |
- &verify_result, |
- callback.callback(), |
- &request_handle, |
- BoundNetLog()); |
+ error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0, |
+ NULL, &verify_result, callback.callback(), |
+ &request_handle, BoundNetLog()); |
Mock::VerifyAndClearExpectations(&trust_provider); |
EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, error); |
EXPECT_FALSE(request_handle); |
@@ -459,14 +423,9 @@ TEST_F(MultiThreadedCertVerifierTest, CertTrustAnchorProvider) { |
// trust anchors will not reuse the cache. |
EXPECT_CALL(trust_provider, GetAdditionalTrustAnchors()) |
.WillOnce(ReturnRef(cert_list)); |
- error = verifier_.Verify(test_cert.get(), |
- "www.example.com", |
- 0, |
- NULL, |
- &verify_result, |
- callback.callback(), |
- &request_handle, |
- BoundNetLog()); |
+ error = verifier_.Verify(test_cert.get(), "www.example.com", std::string(), 0, |
+ NULL, &verify_result, callback.callback(), |
+ &request_handle, BoundNetLog()); |
Mock::VerifyAndClearExpectations(&trust_provider); |
ASSERT_EQ(ERR_IO_PENDING, error); |
EXPECT_TRUE(request_handle); |