Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(99)

Side by Side Diff: chrome/browser/chromeos/net/client_cert_store_chromeos_unittest.cc

Issue 2848313003: Revert of Remove client_certs from SSLCertRequestInfo. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "chrome/browser/chromeos/net/client_cert_store_chromeos.h" 5 #include "chrome/browser/chromeos/net/client_cert_store_chromeos.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <string> 8 #include <string>
9 9
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 not_allowed_cert_ = cert; 66 not_allowed_cert_ = cert;
67 } 67 }
68 68
69 private: 69 private:
70 bool init_finished_; 70 bool init_finished_;
71 bool init_called_ = false; 71 bool init_called_ = false;
72 base::Closure pending_callback_; 72 base::Closure pending_callback_;
73 scoped_refptr<net::X509Certificate> not_allowed_cert_; 73 scoped_refptr<net::X509Certificate> not_allowed_cert_;
74 }; 74 };
75 75
76 void SaveCertsAndQuitCallback(net::CertificateList* out_certs,
77 base::Closure quit_closure,
78 net::CertificateList in_certs) {
79 *out_certs = std::move(in_certs);
80 quit_closure.Run();
81 }
82
83 } // namespace 76 } // namespace
84 77
85 class ClientCertStoreChromeOSTest : public ::testing::Test { 78 class ClientCertStoreChromeOSTest : public ::testing::Test {
86 public: 79 public:
87 ClientCertStoreChromeOSTest() : message_loop_(new base::MessageLoopForIO()) {} 80 ClientCertStoreChromeOSTest() : message_loop_(new base::MessageLoopForIO()) {}
88 81
89 scoped_refptr<net::X509Certificate> ImportCertToSlot( 82 scoped_refptr<net::X509Certificate> ImportCertToSlot(
90 const std::string& cert_filename, 83 const std::string& cert_filename,
91 const std::string& key_filename, 84 const std::string& key_filename,
92 PK11SlotInfo* slot) { 85 PK11SlotInfo* slot) {
(...skipping 18 matching lines...) Expand all
111 ClientCertStoreChromeOS::PasswordDelegateFactory()); 104 ClientCertStoreChromeOS::PasswordDelegateFactory());
112 105
113 scoped_refptr<net::X509Certificate> cert_1( 106 scoped_refptr<net::X509Certificate> cert_1(
114 ImportCertToSlot("client_1.pem", "client_1.pk8", test_db.slot())); 107 ImportCertToSlot("client_1.pem", "client_1.pk8", test_db.slot()));
115 ASSERT_TRUE(cert_1.get()); 108 ASSERT_TRUE(cert_1.get());
116 109
117 // Request any client certificate, which is expected to match client_1. 110 // Request any client certificate, which is expected to match client_1.
118 scoped_refptr<net::SSLCertRequestInfo> request_all( 111 scoped_refptr<net::SSLCertRequestInfo> request_all(
119 new net::SSLCertRequestInfo()); 112 new net::SSLCertRequestInfo());
120 113
121 net::CertificateList selected_certs;
122 base::RunLoop run_loop; 114 base::RunLoop run_loop;
123 store.GetClientCerts(*request_all, 115 store.GetClientCerts(*request_all, &request_all->client_certs,
124 base::Bind(SaveCertsAndQuitCallback, &selected_certs, 116 run_loop.QuitClosure());
125 run_loop.QuitClosure()));
126 117
127 { 118 {
128 base::RunLoop run_loop_inner; 119 base::RunLoop run_loop_inner;
129 run_loop_inner.RunUntilIdle(); 120 run_loop_inner.RunUntilIdle();
130 // GetClientCerts should wait for the initialization of the filter to 121 // GetClientCerts should wait for the initialization of the filter to
131 // finish. 122 // finish.
132 ASSERT_EQ(0u, selected_certs.size()); 123 ASSERT_EQ(0u, request_all->client_certs.size());
133 EXPECT_TRUE(cert_filter->init_called()); 124 EXPECT_TRUE(cert_filter->init_called());
134 } 125 }
135 cert_filter->FinishInit(); 126 cert_filter->FinishInit();
136 run_loop.Run(); 127 run_loop.Run();
137 128
138 ASSERT_EQ(1u, selected_certs.size()); 129 ASSERT_EQ(1u, request_all->client_certs.size());
139 } 130 }
140 131
141 // Ensure that cert requests, that are started after the filter was initialized, 132 // Ensure that cert requests, that are started after the filter was initialized,
142 // will succeed. 133 // will succeed.
143 TEST_F(ClientCertStoreChromeOSTest, RequestsAfterNSSInitSucceed) { 134 TEST_F(ClientCertStoreChromeOSTest, RequestsAfterNSSInitSucceed) {
144 crypto::ScopedTestNSSDB test_db; 135 crypto::ScopedTestNSSDB test_db;
145 ASSERT_TRUE(test_db.is_open()); 136 ASSERT_TRUE(test_db.is_open());
146 137
147 ClientCertStoreChromeOS store( 138 ClientCertStoreChromeOS store(
148 nullptr, // no additional provider 139 nullptr, // no additional provider
149 base::WrapUnique(new TestCertFilter(true /* init synchronously */)), 140 base::WrapUnique(new TestCertFilter(true /* init synchronously */)),
150 ClientCertStoreChromeOS::PasswordDelegateFactory()); 141 ClientCertStoreChromeOS::PasswordDelegateFactory());
151 142
152 scoped_refptr<net::X509Certificate> cert_1( 143 scoped_refptr<net::X509Certificate> cert_1(
153 ImportCertToSlot("client_1.pem", "client_1.pk8", test_db.slot())); 144 ImportCertToSlot("client_1.pem", "client_1.pk8", test_db.slot()));
154 ASSERT_TRUE(cert_1.get()); 145 ASSERT_TRUE(cert_1.get());
155 146
156 scoped_refptr<net::SSLCertRequestInfo> request_all( 147 scoped_refptr<net::SSLCertRequestInfo> request_all(
157 new net::SSLCertRequestInfo()); 148 new net::SSLCertRequestInfo());
158 149
159 base::RunLoop run_loop; 150 base::RunLoop run_loop;
160 net::CertificateList selected_certs; 151 store.GetClientCerts(*request_all, &request_all->client_certs,
161 store.GetClientCerts(*request_all, 152 run_loop.QuitClosure());
162 base::Bind(SaveCertsAndQuitCallback, &selected_certs,
163 run_loop.QuitClosure()));
164 run_loop.Run(); 153 run_loop.Run();
165 154
166 ASSERT_EQ(1u, selected_certs.size()); 155 ASSERT_EQ(1u, request_all->client_certs.size());
167 } 156 }
168 157
169 TEST_F(ClientCertStoreChromeOSTest, Filter) { 158 TEST_F(ClientCertStoreChromeOSTest, Filter) {
170 crypto::ScopedTestNSSDB test_db; 159 crypto::ScopedTestNSSDB test_db;
171 ASSERT_TRUE(test_db.is_open()); 160 ASSERT_TRUE(test_db.is_open());
172 161
173 TestCertFilter* cert_filter = 162 TestCertFilter* cert_filter =
174 new TestCertFilter(true /* init synchronously */); 163 new TestCertFilter(true /* init synchronously */);
175 ClientCertStoreChromeOS store( 164 ClientCertStoreChromeOS store(
176 nullptr /* no additional provider */, base::WrapUnique(cert_filter), 165 nullptr /* no additional provider */, base::WrapUnique(cert_filter),
177 ClientCertStoreChromeOS::PasswordDelegateFactory()); 166 ClientCertStoreChromeOS::PasswordDelegateFactory());
178 167
179 scoped_refptr<net::X509Certificate> cert_1( 168 scoped_refptr<net::X509Certificate> cert_1(
180 ImportCertToSlot("client_1.pem", "client_1.pk8", test_db.slot())); 169 ImportCertToSlot("client_1.pem", "client_1.pk8", test_db.slot()));
181 ASSERT_TRUE(cert_1.get()); 170 ASSERT_TRUE(cert_1.get());
182 scoped_refptr<net::X509Certificate> cert_2( 171 scoped_refptr<net::X509Certificate> cert_2(
183 ImportCertToSlot("client_2.pem", "client_2.pk8", test_db.slot())); 172 ImportCertToSlot("client_2.pem", "client_2.pk8", test_db.slot()));
184 ASSERT_TRUE(cert_2.get()); 173 ASSERT_TRUE(cert_2.get());
185 174
186 scoped_refptr<net::SSLCertRequestInfo> request_all( 175 scoped_refptr<net::SSLCertRequestInfo> request_all(
187 new net::SSLCertRequestInfo()); 176 new net::SSLCertRequestInfo());
188 177
189 { 178 {
190 base::RunLoop run_loop; 179 base::RunLoop run_loop;
191 cert_filter->SetNotAllowedCert(cert_2); 180 cert_filter->SetNotAllowedCert(cert_2);
192 net::CertificateList selected_certs; 181 net::CertificateList selected_certs;
193 store.GetClientCerts(*request_all, 182 store.GetClientCerts(*request_all, &selected_certs, run_loop.QuitClosure());
194 base::Bind(SaveCertsAndQuitCallback, &selected_certs,
195 run_loop.QuitClosure()));
196 run_loop.Run(); 183 run_loop.Run();
197 184
198 ASSERT_EQ(1u, selected_certs.size()); 185 ASSERT_EQ(1u, selected_certs.size());
199 EXPECT_TRUE(cert_1->Equals(selected_certs[0].get())); 186 EXPECT_TRUE(cert_1->Equals(selected_certs[0].get()));
200 } 187 }
201 188
202 { 189 {
203 base::RunLoop run_loop; 190 base::RunLoop run_loop;
204 cert_filter->SetNotAllowedCert(cert_1); 191 cert_filter->SetNotAllowedCert(cert_1);
205 net::CertificateList selected_certs; 192 net::CertificateList selected_certs;
206 store.GetClientCerts(*request_all, 193 store.GetClientCerts(*request_all, &selected_certs, run_loop.QuitClosure());
207 base::Bind(SaveCertsAndQuitCallback, &selected_certs,
208 run_loop.QuitClosure()));
209 run_loop.Run(); 194 run_loop.Run();
210 195
211 ASSERT_EQ(1u, selected_certs.size()); 196 ASSERT_EQ(1u, selected_certs.size());
212 EXPECT_TRUE(cert_2->Equals(selected_certs[0].get())); 197 EXPECT_TRUE(cert_2->Equals(selected_certs[0].get()));
213 } 198 }
214 } 199 }
215 200
216 // Ensure that the delegation of the request matching to the base class is 201 // Ensure that the delegation of the request matching to the base class is
217 // functional. 202 // functional.
218 TEST_F(ClientCertStoreChromeOSTest, CertRequestMatching) { 203 TEST_F(ClientCertStoreChromeOSTest, CertRequestMatching) {
(...skipping 15 matching lines...) Expand all
234 ASSERT_TRUE(cert_2.get()); 219 ASSERT_TRUE(cert_2.get());
235 220
236 std::vector<std::string> authority_1( 221 std::vector<std::string> authority_1(
237 1, std::string(reinterpret_cast<const char*>(kAuthority1DN), 222 1, std::string(reinterpret_cast<const char*>(kAuthority1DN),
238 sizeof(kAuthority1DN))); 223 sizeof(kAuthority1DN)));
239 scoped_refptr<net::SSLCertRequestInfo> request(new net::SSLCertRequestInfo()); 224 scoped_refptr<net::SSLCertRequestInfo> request(new net::SSLCertRequestInfo());
240 request->cert_authorities = authority_1; 225 request->cert_authorities = authority_1;
241 226
242 base::RunLoop run_loop; 227 base::RunLoop run_loop;
243 net::CertificateList selected_certs; 228 net::CertificateList selected_certs;
244 store.GetClientCerts(*request, 229 store.GetClientCerts(*request, &selected_certs, run_loop.QuitClosure());
245 base::Bind(SaveCertsAndQuitCallback, &selected_certs,
246 run_loop.QuitClosure()));
247 run_loop.Run(); 230 run_loop.Run();
248 231
249 ASSERT_EQ(1u, selected_certs.size()); 232 ASSERT_EQ(1u, selected_certs.size());
250 EXPECT_TRUE(cert_1->Equals(selected_certs[0].get())); 233 EXPECT_TRUE(cert_1->Equals(selected_certs[0].get()));
251 } 234 }
252 235
253 } // namespace chromeos 236 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/net/client_cert_store_chromeos.cc ('k') | chrome/browser/chromeos/platform_keys/platform_keys_nss.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698