| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/ssl/client_cert_store_chromeos.h" | 5 #include "net/ssl/client_cert_store_chromeos.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/callback.h" | 9 #include "base/callback.h" |
| 10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 }; | 62 }; |
| 63 | 63 |
| 64 } // namespace | 64 } // namespace |
| 65 | 65 |
| 66 // Define a delegate to be used for instantiating the parameterized test set | 66 // Define a delegate to be used for instantiating the parameterized test set |
| 67 // ClientCertStoreTest. | 67 // ClientCertStoreTest. |
| 68 class ClientCertStoreChromeOSTestDelegate { | 68 class ClientCertStoreChromeOSTestDelegate { |
| 69 public: | 69 public: |
| 70 ClientCertStoreChromeOSTestDelegate() | 70 ClientCertStoreChromeOSTestDelegate() |
| 71 : store_( | 71 : store_( |
| 72 CertificateList(), |
| 72 make_scoped_ptr(new TestCertFilter(true /* init synchronously */)), | 73 make_scoped_ptr(new TestCertFilter(true /* init synchronously */)), |
| 73 ClientCertStoreChromeOS::PasswordDelegateFactory()) { | 74 ClientCertStoreChromeOS::PasswordDelegateFactory()) { |
| 74 // Defer futher initialization and checks to SelectClientCerts, because the | 75 // Defer futher initialization and checks to SelectClientCerts, because the |
| 75 // constructor doesn't allow us to return an initialization result. Could be | 76 // constructor doesn't allow us to return an initialization result. Could be |
| 76 // cleaned up by adding an Init() function. | 77 // cleaned up by adding an Init() function. |
| 77 } | 78 } |
| 78 | 79 |
| 79 // Called by the ClientCertStoreTest tests. | 80 // Called by the ClientCertStoreTest tests. |
| 80 // |inpurt_certs| contains certificates to select from. Because | 81 // |inpurt_certs| contains certificates to select from. Because |
| 81 // ClientCertStoreChromeOS filters also for the right slot, we have to import | 82 // ClientCertStoreChromeOS filters also for the right slot, we have to import |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 | 141 |
| 141 // Ensure that cert requests, that are started before the filter is initialized, | 142 // Ensure that cert requests, that are started before the filter is initialized, |
| 142 // will wait for the initialization and succeed afterwards. | 143 // will wait for the initialization and succeed afterwards. |
| 143 TEST_F(ClientCertStoreChromeOSTest, RequestWaitsForNSSInitAndSucceeds) { | 144 TEST_F(ClientCertStoreChromeOSTest, RequestWaitsForNSSInitAndSucceeds) { |
| 144 crypto::ScopedTestNSSDB test_db; | 145 crypto::ScopedTestNSSDB test_db; |
| 145 ASSERT_TRUE(test_db.is_open()); | 146 ASSERT_TRUE(test_db.is_open()); |
| 146 | 147 |
| 147 TestCertFilter* cert_filter = | 148 TestCertFilter* cert_filter = |
| 148 new TestCertFilter(false /* init asynchronously */); | 149 new TestCertFilter(false /* init asynchronously */); |
| 149 ClientCertStoreChromeOS store( | 150 ClientCertStoreChromeOS store( |
| 150 make_scoped_ptr(cert_filter), | 151 CertificateList(), make_scoped_ptr(cert_filter), |
| 151 ClientCertStoreChromeOS::PasswordDelegateFactory()); | 152 ClientCertStoreChromeOS::PasswordDelegateFactory()); |
| 152 | 153 |
| 153 scoped_refptr<X509Certificate> cert_1( | 154 scoped_refptr<X509Certificate> cert_1( |
| 154 ImportCertToSlot("client_1.pem", "client_1.pk8", test_db.slot())); | 155 ImportCertToSlot("client_1.pem", "client_1.pk8", test_db.slot())); |
| 155 ASSERT_TRUE(cert_1.get()); | 156 ASSERT_TRUE(cert_1.get()); |
| 156 | 157 |
| 157 // Request any client certificate, which is expected to match client_1. | 158 // Request any client certificate, which is expected to match client_1. |
| 158 scoped_refptr<SSLCertRequestInfo> request_all(new SSLCertRequestInfo()); | 159 scoped_refptr<SSLCertRequestInfo> request_all(new SSLCertRequestInfo()); |
| 159 | 160 |
| 160 base::RunLoop run_loop; | 161 base::RunLoop run_loop; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 175 ASSERT_EQ(1u, request_all->client_certs.size()); | 176 ASSERT_EQ(1u, request_all->client_certs.size()); |
| 176 } | 177 } |
| 177 | 178 |
| 178 // Ensure that cert requests, that are started after the filter was initialized, | 179 // Ensure that cert requests, that are started after the filter was initialized, |
| 179 // will succeed. | 180 // will succeed. |
| 180 TEST_F(ClientCertStoreChromeOSTest, RequestsAfterNSSInitSucceed) { | 181 TEST_F(ClientCertStoreChromeOSTest, RequestsAfterNSSInitSucceed) { |
| 181 crypto::ScopedTestNSSDB test_db; | 182 crypto::ScopedTestNSSDB test_db; |
| 182 ASSERT_TRUE(test_db.is_open()); | 183 ASSERT_TRUE(test_db.is_open()); |
| 183 | 184 |
| 184 ClientCertStoreChromeOS store( | 185 ClientCertStoreChromeOS store( |
| 186 CertificateList(), |
| 185 make_scoped_ptr(new TestCertFilter(true /* init synchronously */)), | 187 make_scoped_ptr(new TestCertFilter(true /* init synchronously */)), |
| 186 ClientCertStoreChromeOS::PasswordDelegateFactory()); | 188 ClientCertStoreChromeOS::PasswordDelegateFactory()); |
| 187 | 189 |
| 188 scoped_refptr<X509Certificate> cert_1( | 190 scoped_refptr<X509Certificate> cert_1( |
| 189 ImportCertToSlot("client_1.pem", "client_1.pk8", test_db.slot())); | 191 ImportCertToSlot("client_1.pem", "client_1.pk8", test_db.slot())); |
| 190 ASSERT_TRUE(cert_1.get()); | 192 ASSERT_TRUE(cert_1.get()); |
| 191 | 193 |
| 192 scoped_refptr<SSLCertRequestInfo> request_all(new SSLCertRequestInfo()); | 194 scoped_refptr<SSLCertRequestInfo> request_all(new SSLCertRequestInfo()); |
| 193 | 195 |
| 194 base::RunLoop run_loop; | 196 base::RunLoop run_loop; |
| 195 store.GetClientCerts( | 197 store.GetClientCerts( |
| 196 *request_all, &request_all->client_certs, run_loop.QuitClosure()); | 198 *request_all, &request_all->client_certs, run_loop.QuitClosure()); |
| 197 run_loop.Run(); | 199 run_loop.Run(); |
| 198 | 200 |
| 199 ASSERT_EQ(1u, request_all->client_certs.size()); | 201 ASSERT_EQ(1u, request_all->client_certs.size()); |
| 200 } | 202 } |
| 201 | 203 |
| 202 TEST_F(ClientCertStoreChromeOSTest, Filter) { | 204 TEST_F(ClientCertStoreChromeOSTest, Filter) { |
| 203 crypto::ScopedTestNSSDB test_db; | 205 crypto::ScopedTestNSSDB test_db; |
| 204 ASSERT_TRUE(test_db.is_open()); | 206 ASSERT_TRUE(test_db.is_open()); |
| 205 | 207 |
| 206 TestCertFilter* cert_filter = | 208 TestCertFilter* cert_filter = |
| 207 new TestCertFilter(true /* init synchronously */); | 209 new TestCertFilter(true /* init synchronously */); |
| 208 ClientCertStoreChromeOS store( | 210 ClientCertStoreChromeOS store( |
| 209 make_scoped_ptr(cert_filter), | 211 CertificateList(), make_scoped_ptr(cert_filter), |
| 210 ClientCertStoreChromeOS::PasswordDelegateFactory()); | 212 ClientCertStoreChromeOS::PasswordDelegateFactory()); |
| 211 | 213 |
| 212 scoped_refptr<X509Certificate> cert_1( | 214 scoped_refptr<X509Certificate> cert_1( |
| 213 ImportCertToSlot("client_1.pem", "client_1.pk8", test_db.slot())); | 215 ImportCertToSlot("client_1.pem", "client_1.pk8", test_db.slot())); |
| 214 ASSERT_TRUE(cert_1.get()); | 216 ASSERT_TRUE(cert_1.get()); |
| 215 scoped_refptr<X509Certificate> cert_2( | 217 scoped_refptr<X509Certificate> cert_2( |
| 216 ImportCertToSlot("client_2.pem", "client_2.pk8", test_db.slot())); | 218 ImportCertToSlot("client_2.pem", "client_2.pk8", test_db.slot())); |
| 217 ASSERT_TRUE(cert_2.get()); | 219 ASSERT_TRUE(cert_2.get()); |
| 218 | 220 |
| 219 scoped_refptr<SSLCertRequestInfo> request_all(new SSLCertRequestInfo()); | 221 scoped_refptr<SSLCertRequestInfo> request_all(new SSLCertRequestInfo()); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 235 CertificateList selected_certs; | 237 CertificateList selected_certs; |
| 236 store.GetClientCerts(*request_all, &selected_certs, run_loop.QuitClosure()); | 238 store.GetClientCerts(*request_all, &selected_certs, run_loop.QuitClosure()); |
| 237 run_loop.Run(); | 239 run_loop.Run(); |
| 238 | 240 |
| 239 ASSERT_EQ(1u, selected_certs.size()); | 241 ASSERT_EQ(1u, selected_certs.size()); |
| 240 EXPECT_TRUE(cert_2->Equals(selected_certs[0].get())); | 242 EXPECT_TRUE(cert_2->Equals(selected_certs[0].get())); |
| 241 } | 243 } |
| 242 } | 244 } |
| 243 | 245 |
| 244 } // namespace net | 246 } // namespace net |
| OLD | NEW |