OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "components/cronet/android/cert/cert_verifier_cache_serializer.h" | 5 #include "components/cronet/android/cert/cert_verifier_cache_serializer.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/android/path_utils.h" | 10 #include "base/android/path_utils.h" |
(...skipping 29 matching lines...) Expand all Loading... |
40 net::ImportCertFromFile(net::GetTestCertsDirectory(), cert_name)); | 40 net::ImportCertFromFile(net::GetTestCertsDirectory(), cert_name)); |
41 ASSERT_TRUE(cert); | 41 ASSERT_TRUE(cert); |
42 | 42 |
43 net::TestCompletionCallback callback; | 43 net::TestCompletionCallback callback; |
44 std::unique_ptr<net::CertVerifier::Request> request; | 44 std::unique_ptr<net::CertVerifier::Request> request; |
45 | 45 |
46 ignore_result(callback.GetResult(verifier->Verify( | 46 ignore_result(callback.GetResult(verifier->Verify( |
47 net::CertVerifier::RequestParams(cert.get(), hostname, 0, std::string(), | 47 net::CertVerifier::RequestParams(cert.get(), hostname, 0, std::string(), |
48 net::CertificateList()), | 48 net::CertificateList()), |
49 nullptr, verify_result, callback.callback(), &request, | 49 nullptr, verify_result, callback.callback(), &request, |
50 net::BoundNetLog()))); | 50 net::NetLogWithSource()))); |
51 } | 51 } |
52 | 52 |
53 } // namespace | 53 } // namespace |
54 | 54 |
55 TEST(CertVerifierCacheSerializerTest, RestoreEmptyData) { | 55 TEST(CertVerifierCacheSerializerTest, RestoreEmptyData) { |
56 // Restoring empty data should fail. | 56 // Restoring empty data should fail. |
57 cronet_pb::CertVerificationCache cert_cache; | 57 cronet_pb::CertVerificationCache cert_cache; |
58 net::CachingCertVerifier verifier(base::MakeUnique<net::MockCertVerifier>()); | 58 net::CachingCertVerifier verifier(base::MakeUnique<net::MockCertVerifier>()); |
59 EXPECT_FALSE(DeserializeCertVerifierCache(cert_cache, &verifier)); | 59 EXPECT_FALSE(DeserializeCertVerifierCache(cert_cache, &verifier)); |
60 } | 60 } |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 net::X509Certificate::OSCertHandles chain; | 100 net::X509Certificate::OSCertHandles chain; |
101 chain.push_back(root_cert->os_cert_handle()); | 101 chain.push_back(root_cert->os_cert_handle()); |
102 const scoped_refptr<net::X509Certificate> combined_cert = | 102 const scoped_refptr<net::X509Certificate> combined_cert = |
103 net::X509Certificate::CreateFromHandle(ok_cert->os_cert_handle(), chain); | 103 net::X509Certificate::CreateFromHandle(ok_cert->os_cert_handle(), chain); |
104 ASSERT_TRUE(combined_cert); | 104 ASSERT_TRUE(combined_cert); |
105 | 105 |
106 ignore_result(callback.GetResult(verifier.Verify( | 106 ignore_result(callback.GetResult(verifier.Verify( |
107 net::CertVerifier::RequestParams(combined_cert, example2_hostname, 0, | 107 net::CertVerifier::RequestParams(combined_cert, example2_hostname, 0, |
108 std::string(), net::CertificateList()), | 108 std::string(), net::CertificateList()), |
109 nullptr, &verifier1_result2, callback.callback(), &request, | 109 nullptr, &verifier1_result2, callback.callback(), &request, |
110 net::BoundNetLog()))); | 110 net::NetLogWithSource()))); |
111 | 111 |
112 cronet_pb::CertVerificationCache cert_cache = | 112 cronet_pb::CertVerificationCache cert_cache = |
113 SerializeCertVerifierCache(verifier); | 113 SerializeCertVerifierCache(verifier); |
114 // Verify two certificates are serialized. | 114 // Verify two certificates are serialized. |
115 DCHECK_EQ(2, cert_cache.cert_entry_size()); | 115 DCHECK_EQ(2, cert_cache.cert_entry_size()); |
116 DCHECK_EQ(2, cert_cache.cache_entry_size()); | 116 DCHECK_EQ(2, cert_cache.cache_entry_size()); |
117 | 117 |
118 net::CachingCertVerifier verifier2(base::MakeUnique<net::MockCertVerifier>()); | 118 net::CachingCertVerifier verifier2(base::MakeUnique<net::MockCertVerifier>()); |
119 | 119 |
120 // Populate |verifier2|'s cache. | 120 // Populate |verifier2|'s cache. |
121 EXPECT_TRUE(DeserializeCertVerifierCache(cert_cache, &verifier2)); | 121 EXPECT_TRUE(DeserializeCertVerifierCache(cert_cache, &verifier2)); |
122 | 122 |
123 // Verify the cert for www.example.com with |verifier2|. | 123 // Verify the cert for www.example.com with |verifier2|. |
124 net::CertVerifyResult verifier2_result1; | 124 net::CertVerifyResult verifier2_result1; |
125 ASSERT_NO_FATAL_FAILURE(VerifyCert("ok_cert.pem", example_hostname, | 125 ASSERT_NO_FATAL_FAILURE(VerifyCert("ok_cert.pem", example_hostname, |
126 &verifier2, &verifier2_result1)); | 126 &verifier2, &verifier2_result1)); |
127 | 127 |
128 // CertVerifyResult for www.example.com with |verifier2| should match | 128 // CertVerifyResult for www.example.com with |verifier2| should match |
129 // what was serialized with |verifier|. | 129 // what was serialized with |verifier|. |
130 EXPECT_EQ(verifier2_result1, verifier1_result1); | 130 EXPECT_EQ(verifier2_result1, verifier1_result1); |
131 | 131 |
132 // Verify the cert for www2.example.com with |verifier2|. | 132 // Verify the cert for www2.example.com with |verifier2|. |
133 net::CertVerifyResult verifier2_result2; | 133 net::CertVerifyResult verifier2_result2; |
134 ignore_result(callback.GetResult(verifier2.Verify( | 134 ignore_result(callback.GetResult(verifier2.Verify( |
135 net::CertVerifier::RequestParams(combined_cert, example2_hostname, 0, | 135 net::CertVerifier::RequestParams(combined_cert, example2_hostname, 0, |
136 std::string(), net::CertificateList()), | 136 std::string(), net::CertificateList()), |
137 nullptr, &verifier2_result2, callback.callback(), &request, | 137 nullptr, &verifier2_result2, callback.callback(), &request, |
138 net::BoundNetLog()))); | 138 net::NetLogWithSource()))); |
139 | 139 |
140 // CertVerifyResult for www2.example.com with |verifier2| should match | 140 // CertVerifyResult for www2.example.com with |verifier2| should match |
141 // what was serialized with |verifier|. | 141 // what was serialized with |verifier|. |
142 EXPECT_EQ(verifier2_result2, verifier1_result2); | 142 EXPECT_EQ(verifier2_result2, verifier1_result2); |
143 } | 143 } |
144 | 144 |
145 // A corrupted cert_entry in the serialized data should fail to be deserialized. | 145 // A corrupted cert_entry in the serialized data should fail to be deserialized. |
146 // Should not deserialize a corrupted cert_entry. | 146 // Should not deserialize a corrupted cert_entry. |
147 TEST(CertVerifierCacheSerializerTest, DeserializeCorruptedCerts) { | 147 TEST(CertVerifierCacheSerializerTest, DeserializeCorruptedCerts) { |
148 net::CertVerifyResult verify_result; | 148 net::CertVerifyResult verify_result; |
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
408 net::CertVerifyResult verify_result; | 408 net::CertVerifyResult verify_result; |
409 net::TestCompletionCallback callback; | 409 net::TestCompletionCallback callback; |
410 std::unique_ptr<net::CertVerifier::Request> request; | 410 std::unique_ptr<net::CertVerifier::Request> request; |
411 | 411 |
412 net::CachingCertVerifier verifier(base::MakeUnique<net::MockCertVerifier>()); | 412 net::CachingCertVerifier verifier(base::MakeUnique<net::MockCertVerifier>()); |
413 // Verify the |cert| with |trust_anchors|. | 413 // Verify the |cert| with |trust_anchors|. |
414 ignore_result(callback.GetResult(verifier.Verify( | 414 ignore_result(callback.GetResult(verifier.Verify( |
415 net::CertVerifier::RequestParams(cert, "www.example.com", 0, | 415 net::CertVerifier::RequestParams(cert, "www.example.com", 0, |
416 std::string(), trust_anchors), | 416 std::string(), trust_anchors), |
417 nullptr, &verify_result, callback.callback(), &request, | 417 nullptr, &verify_result, callback.callback(), &request, |
418 net::BoundNetLog()))); | 418 net::NetLogWithSource()))); |
419 | 419 |
420 cronet_pb::CertVerificationCache cert_cache = | 420 cronet_pb::CertVerificationCache cert_cache = |
421 SerializeCertVerifierCache(verifier); | 421 SerializeCertVerifierCache(verifier); |
422 DCHECK_EQ(2, cert_cache.cert_entry_size()); | 422 DCHECK_EQ(2, cert_cache.cert_entry_size()); |
423 DCHECK_EQ(1, cert_cache.cache_entry_size()); | 423 DCHECK_EQ(1, cert_cache.cache_entry_size()); |
424 | 424 |
425 for (int i = 0; i < cert_cache.cache_entry_size(); ++i) { | 425 for (int i = 0; i < cert_cache.cache_entry_size(); ++i) { |
426 cronet_pb::CertVerificationCacheEntry* cache_entry = | 426 cronet_pb::CertVerificationCacheEntry* cache_entry = |
427 cert_cache.mutable_cache_entry(i); | 427 cert_cache.mutable_cache_entry(i); |
428 cronet_pb::CertVerificationRequestParams* request_params = | 428 cronet_pb::CertVerificationRequestParams* request_params = |
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
668 cert_cache.mutable_cache_entry(i); | 668 cert_cache.mutable_cache_entry(i); |
669 // Corrupt |verification_time|. | 669 // Corrupt |verification_time|. |
670 cache_entry->clear_verification_time(); | 670 cache_entry->clear_verification_time(); |
671 } | 671 } |
672 | 672 |
673 net::CachingCertVerifier verifier2(base::MakeUnique<net::MockCertVerifier>()); | 673 net::CachingCertVerifier verifier2(base::MakeUnique<net::MockCertVerifier>()); |
674 EXPECT_FALSE(DeserializeCertVerifierCache(cert_cache, &verifier2)); | 674 EXPECT_FALSE(DeserializeCertVerifierCache(cert_cache, &verifier2)); |
675 } | 675 } |
676 | 676 |
677 } // namespace cronet | 677 } // namespace cronet |
OLD | NEW |