| 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 |