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/cert/nss_cert_database_chromeos.h" | 5 #include "net/cert/nss_cert_database_chromeos.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/callback.h" | 10 #include "base/callback.h" |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
78 CertDatabase::GetInstance()->AddObserver(this); | 78 CertDatabase::GetInstance()->AddObserver(this); |
79 observer_added_ = true; | 79 observer_added_ = true; |
80 } | 80 } |
81 | 81 |
82 void TearDown() override { | 82 void TearDown() override { |
83 if (observer_added_) | 83 if (observer_added_) |
84 CertDatabase::GetInstance()->RemoveObserver(this); | 84 CertDatabase::GetInstance()->RemoveObserver(this); |
85 } | 85 } |
86 | 86 |
87 // CertDatabase::Observer: | 87 // CertDatabase::Observer: |
88 void OnCertAdded(const X509Certificate* cert) override { | 88 void OnCertDBChanged(const X509Certificate* cert) override { |
89 added_.push_back(cert ? cert->os_cert_handle() : NULL); | |
90 } | |
91 | |
92 void OnCertRemoved(const X509Certificate* cert) override {} | |
93 | |
94 void OnCACertChanged(const X509Certificate* cert) override { | |
95 added_ca_.push_back(cert ? cert->os_cert_handle() : NULL); | 89 added_ca_.push_back(cert ? cert->os_cert_handle() : NULL); |
96 } | 90 } |
97 | 91 |
98 protected: | 92 protected: |
99 bool observer_added_; | 93 bool observer_added_; |
100 // Certificates that were passed to the CertDatabase observers. | 94 // Certificates that were passed to the CertDatabase observers. |
101 std::vector<CERTCertificate*> added_ca_; | 95 std::vector<CERTCertificate*> added_ca_; |
102 std::vector<CERTCertificate*> added_; | |
103 | 96 |
104 crypto::ScopedTestNSSChromeOSUser user_1_; | 97 crypto::ScopedTestNSSChromeOSUser user_1_; |
105 crypto::ScopedTestNSSChromeOSUser user_2_; | 98 crypto::ScopedTestNSSChromeOSUser user_2_; |
106 crypto::ScopedTestNSSDB system_db_; | 99 crypto::ScopedTestNSSDB system_db_; |
107 std::unique_ptr<NSSCertDatabaseChromeOS> db_1_; | 100 std::unique_ptr<NSSCertDatabaseChromeOS> db_1_; |
108 std::unique_ptr<NSSCertDatabaseChromeOS> db_2_; | 101 std::unique_ptr<NSSCertDatabaseChromeOS> db_2_; |
109 }; | 102 }; |
110 | 103 |
111 // Test that ListModules() on each user includes that user's NSS software slot, | 104 // Test that ListModules() on each user includes that user's NSS software slot, |
112 // and does not include the software slot of the other user. (Does not check the | 105 // and does not include the software slot of the other user. (Does not check the |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 // Check that the imported certs only shows up in the list for the user that | 166 // Check that the imported certs only shows up in the list for the user that |
174 // imported them. | 167 // imported them. |
175 EXPECT_TRUE(IsCertInCertificateList(certs_1[0].get(), user_1_certlist)); | 168 EXPECT_TRUE(IsCertInCertificateList(certs_1[0].get(), user_1_certlist)); |
176 EXPECT_FALSE(IsCertInCertificateList(certs_1[0].get(), user_2_certlist)); | 169 EXPECT_FALSE(IsCertInCertificateList(certs_1[0].get(), user_2_certlist)); |
177 | 170 |
178 EXPECT_TRUE(IsCertInCertificateList(certs_2[0].get(), user_2_certlist)); | 171 EXPECT_TRUE(IsCertInCertificateList(certs_2[0].get(), user_2_certlist)); |
179 EXPECT_FALSE(IsCertInCertificateList(certs_2[0].get(), user_1_certlist)); | 172 EXPECT_FALSE(IsCertInCertificateList(certs_2[0].get(), user_1_certlist)); |
180 | 173 |
181 // Run the message loop so the observer notifications get processed. | 174 // Run the message loop so the observer notifications get processed. |
182 base::RunLoop().RunUntilIdle(); | 175 base::RunLoop().RunUntilIdle(); |
183 // Should have gotten two OnCACertChanged notifications. | 176 // Should have gotten two OnCertDBChanged notifications. |
184 ASSERT_EQ(2U, added_ca_.size()); | 177 ASSERT_EQ(2U, added_ca_.size()); |
185 // TODO(mattm): make NSSCertDatabase actually pass the cert to the callback, | 178 // TODO(mattm): make NSSCertDatabase actually pass the cert to the callback, |
186 // and enable these checks: | 179 // and enable these checks: |
187 // EXPECT_EQ(certs_1[0]->os_cert_handle(), added_ca_[0]); | 180 // EXPECT_EQ(certs_1[0]->os_cert_handle(), added_ca_[0]); |
188 // EXPECT_EQ(certs_2[0]->os_cert_handle(), added_ca_[1]); | 181 // EXPECT_EQ(certs_2[0]->os_cert_handle(), added_ca_[1]); |
189 EXPECT_EQ(0U, added_.size()); | |
190 | 182 |
191 // Tests that the new certs are loaded by async ListCerts method. | 183 // Tests that the new certs are loaded by async ListCerts method. |
192 CertificateList user_1_certlist_async; | 184 CertificateList user_1_certlist_async; |
193 CertificateList user_2_certlist_async; | 185 CertificateList user_2_certlist_async; |
194 db_1_->ListCerts( | 186 db_1_->ListCerts( |
195 base::Bind(&SwapCertLists, base::Unretained(&user_1_certlist_async))); | 187 base::Bind(&SwapCertLists, base::Unretained(&user_1_certlist_async))); |
196 db_2_->ListCerts( | 188 db_2_->ListCerts( |
197 base::Bind(&SwapCertLists, base::Unretained(&user_2_certlist_async))); | 189 base::Bind(&SwapCertLists, base::Unretained(&user_2_certlist_async))); |
198 | 190 |
199 base::RunLoop().RunUntilIdle(); | 191 base::RunLoop().RunUntilIdle(); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
244 EXPECT_FALSE(IsCertInCertificateList(certs_1[0].get(), user_2_certlist)); | 236 EXPECT_FALSE(IsCertInCertificateList(certs_1[0].get(), user_2_certlist)); |
245 | 237 |
246 EXPECT_TRUE(IsCertInCertificateList(certs_2[0].get(), user_2_certlist)); | 238 EXPECT_TRUE(IsCertInCertificateList(certs_2[0].get(), user_2_certlist)); |
247 EXPECT_FALSE(IsCertInCertificateList(certs_2[0].get(), user_1_certlist)); | 239 EXPECT_FALSE(IsCertInCertificateList(certs_2[0].get(), user_1_certlist)); |
248 | 240 |
249 // Run the message loop so the observer notifications get processed. | 241 // Run the message loop so the observer notifications get processed. |
250 base::RunLoop().RunUntilIdle(); | 242 base::RunLoop().RunUntilIdle(); |
251 // TODO(mattm): ImportServerCert doesn't actually cause any observers to | 243 // TODO(mattm): ImportServerCert doesn't actually cause any observers to |
252 // fire. Is that correct? | 244 // fire. Is that correct? |
253 EXPECT_EQ(0U, added_ca_.size()); | 245 EXPECT_EQ(0U, added_ca_.size()); |
254 EXPECT_EQ(0U, added_.size()); | |
255 | 246 |
256 // Tests that the new certs are loaded by async ListCerts method. | 247 // Tests that the new certs are loaded by async ListCerts method. |
257 CertificateList user_1_certlist_async; | 248 CertificateList user_1_certlist_async; |
258 CertificateList user_2_certlist_async; | 249 CertificateList user_2_certlist_async; |
259 db_1_->ListCerts( | 250 db_1_->ListCerts( |
260 base::Bind(&SwapCertLists, base::Unretained(&user_1_certlist_async))); | 251 base::Bind(&SwapCertLists, base::Unretained(&user_1_certlist_async))); |
261 db_2_->ListCerts( | 252 db_2_->ListCerts( |
262 base::Bind(&SwapCertLists, base::Unretained(&user_2_certlist_async))); | 253 base::Bind(&SwapCertLists, base::Unretained(&user_2_certlist_async))); |
263 | 254 |
264 base::RunLoop().RunUntilIdle(); | 255 base::RunLoop().RunUntilIdle(); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
316 "client_2.pem", | 307 "client_2.pem", |
317 "client_2.pk8", | 308 "client_2.pk8", |
318 system_db_.slot())); | 309 system_db_.slot())); |
319 CertificateList certs; | 310 CertificateList certs; |
320 db_2_->ListCertsSync(&certs); | 311 db_2_->ListCertsSync(&certs); |
321 EXPECT_TRUE(IsCertInCertificateList(cert_1.get(), certs)); | 312 EXPECT_TRUE(IsCertInCertificateList(cert_1.get(), certs)); |
322 EXPECT_FALSE(IsCertInCertificateList(cert_2.get(), certs)); | 313 EXPECT_FALSE(IsCertInCertificateList(cert_2.get(), certs)); |
323 } | 314 } |
324 | 315 |
325 } // namespace net | 316 } // namespace net |
OLD | NEW |