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

Side by Side Diff: net/cert/nss_cert_database_unittest.cc

Issue 405973003: Remove the deprecated NSSCertDatabase::GetInstance() . (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <cert.h> 5 #include <cert.h>
6 #include <certdb.h> 6 #include <certdb.h>
7 #include <pk11pub.h> 7 #include <pk11pub.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 ASSERT_TRUE(destination); 51 ASSERT_TRUE(destination);
52 destination->swap(*source); 52 destination->swap(*source);
53 } 53 }
54 54
55 } // namespace 55 } // namespace
56 56
57 class CertDatabaseNSSTest : public testing::Test { 57 class CertDatabaseNSSTest : public testing::Test {
58 public: 58 public:
59 virtual void SetUp() { 59 virtual void SetUp() {
60 ASSERT_TRUE(test_nssdb_.is_open()); 60 ASSERT_TRUE(test_nssdb_.is_open());
61 cert_db_ = NSSCertDatabase::GetInstance(); 61 cert_db_.reset(new NSSCertDatabase(
62 slot_ = cert_db_->GetPublicModule(); 62 crypto::ScopedPK11Slot(crypto::GetPersistentNSSKeySlot())));
pneubeck (no reviews) 2014/07/21 14:43:29 as with the KeygenHandler unit test, this will be
63 63
64 // Test db should be empty at start of test. 64 // Test db should be empty at start of test.
65 EXPECT_EQ(0U, ListCertsInSlot(slot_->os_module_handle()).size()); 65 EXPECT_EQ(0U, ListCertsInSlot().size());
66 } 66 }
67 67
68 virtual void TearDown() { 68 virtual void TearDown() {
69 // Don't try to cleanup if the setup failed.
70 ASSERT_TRUE(slot_->os_module_handle());
71
72 EXPECT_TRUE(CleanupSlotContents());
73
74 // Run the message loop to process any observer callbacks (e.g. for the 69 // Run the message loop to process any observer callbacks (e.g. for the
75 // ClientSocketFactory singleton) so that the scoped ref ptrs created in 70 // ClientSocketFactory singleton) so that the scoped ref ptrs created in
76 // NSSCertDatabase::NotifyObservers* get released. 71 // NSSCertDatabase::NotifyObservers* get released.
77 base::MessageLoop::current()->RunUntilIdle(); 72 base::MessageLoop::current()->RunUntilIdle();
78
79 EXPECT_EQ(0U, ListCertsInSlot(slot_->os_module_handle()).size());
80 } 73 }
81 74
82 protected: 75 protected:
76 net::CryptoModule* GetPublicModule() {
77 return cert_db_->GetPublicModule();
78 }
79
83 static std::string ReadTestFile(const std::string& name) { 80 static std::string ReadTestFile(const std::string& name) {
84 std::string result; 81 std::string result;
85 base::FilePath cert_path = GetTestCertsDirectory().AppendASCII(name); 82 base::FilePath cert_path = GetTestCertsDirectory().AppendASCII(name);
86 EXPECT_TRUE(base::ReadFileToString(cert_path, &result)); 83 EXPECT_TRUE(base::ReadFileToString(cert_path, &result));
87 return result; 84 return result;
88 } 85 }
89 86
90 static bool ReadCertIntoList(const std::string& name, 87 static bool ReadCertIntoList(const std::string& name,
91 CertificateList* certs) { 88 CertificateList* certs) {
92 scoped_refptr<X509Certificate> cert( 89 scoped_refptr<X509Certificate> cert(
93 ImportCertFromFile(GetTestCertsDirectory(), name)); 90 ImportCertFromFile(GetTestCertsDirectory(), name));
94 if (!cert.get()) 91 if (!cert.get())
95 return false; 92 return false;
96 93
97 certs->push_back(cert); 94 certs->push_back(cert);
98 return true; 95 return true;
99 } 96 }
100 97
101 static CertificateList ListCertsInSlot(PK11SlotInfo* slot) { 98 CertificateList ListCertsInSlot() {
Ryan Sleevi 2014/07/22 01:18:32 Should this just be ListCerts? The concept of Slot
pneubeck (no reviews) 2014/07/22 08:23:56 Done.
102 CertificateList result; 99 CertificateList result;
103 CERTCertList* cert_list = PK11_ListCertsInSlot(slot); 100 CERTCertList* cert_list =
101 PK11_ListCertsInSlot(cert_db_->GetPublicSlot().get());
104 for (CERTCertListNode* node = CERT_LIST_HEAD(cert_list); 102 for (CERTCertListNode* node = CERT_LIST_HEAD(cert_list);
105 !CERT_LIST_END(node, cert_list); 103 !CERT_LIST_END(node, cert_list);
106 node = CERT_LIST_NEXT(node)) { 104 node = CERT_LIST_NEXT(node)) {
107 result.push_back(X509Certificate::CreateFromHandle( 105 result.push_back(X509Certificate::CreateFromHandle(
108 node->cert, X509Certificate::OSCertHandles())); 106 node->cert, X509Certificate::OSCertHandles()));
109 } 107 }
110 CERT_DestroyCertList(cert_list); 108 CERT_DestroyCertList(cert_list);
111 109
112 // Sort the result so that test comparisons can be deterministic. 110 // Sort the result so that test comparisons can be deterministic.
113 std::sort(result.begin(), result.end(), X509Certificate::LessThan()); 111 std::sort(result.begin(), result.end(), X509Certificate::LessThan());
114 return result; 112 return result;
115 } 113 }
116 114
117 scoped_refptr<CryptoModule> slot_; 115 scoped_ptr<NSSCertDatabase> cert_db_;
118 NSSCertDatabase* cert_db_;
119 const CertificateList empty_cert_list_; 116 const CertificateList empty_cert_list_;
120
121 private:
122 bool CleanupSlotContents() {
123 bool ok = true;
124 CertificateList certs = ListCertsInSlot(slot_->os_module_handle());
125 CERTCertTrust default_trust = {0};
126 for (size_t i = 0; i < certs.size(); ++i) {
127 // Reset cert trust values to defaults before deleting. Otherwise NSS
128 // somehow seems to remember the trust which can break following tests.
129 SECStatus srv = CERT_ChangeCertTrust(
130 CERT_GetDefaultCertDB(), certs[i]->os_cert_handle(), &default_trust);
131 if (srv != SECSuccess)
132 ok = false;
133
134 if (!cert_db_->DeleteCertAndKey(certs[i].get()))
135 ok = false;
136 }
137 return ok;
138 }
139
140 crypto::ScopedTestNSSDB test_nssdb_; 117 crypto::ScopedTestNSSDB test_nssdb_;
141 }; 118 };
142 119
143 TEST_F(CertDatabaseNSSTest, ListCertsSync) { 120 TEST_F(CertDatabaseNSSTest, ListCertsSync) {
144 // This test isn't terribly useful, though it will at least let valgrind test 121 // This test isn't terribly useful, though it will at least let valgrind test
145 // for leaks. 122 // for leaks.
146 CertificateList certs; 123 CertificateList certs;
147 cert_db_->ListCertsSync(&certs); 124 cert_db_->ListCertsSync(&certs);
148 // The test DB is empty, but let's assume there will always be something in 125 // The test DB is empty, but let's assume there will always be something in
149 // the other slots. 126 // the other slots.
(...skipping 12 matching lines...) Expand all
162 139
163 // The test DB is empty, but let's assume there will always be something in 140 // The test DB is empty, but let's assume there will always be something in
164 // the other slots. 141 // the other slots.
165 EXPECT_LT(0U, certs.size()); 142 EXPECT_LT(0U, certs.size());
166 } 143 }
167 144
168 TEST_F(CertDatabaseNSSTest, ImportFromPKCS12WrongPassword) { 145 TEST_F(CertDatabaseNSSTest, ImportFromPKCS12WrongPassword) {
169 std::string pkcs12_data = ReadTestFile("client.p12"); 146 std::string pkcs12_data = ReadTestFile("client.p12");
170 147
171 EXPECT_EQ(ERR_PKCS12_IMPORT_BAD_PASSWORD, 148 EXPECT_EQ(ERR_PKCS12_IMPORT_BAD_PASSWORD,
172 cert_db_->ImportFromPKCS12(slot_.get(), 149 cert_db_->ImportFromPKCS12(GetPublicModule(),
173 pkcs12_data, 150 pkcs12_data,
174 base::string16(), 151 base::string16(),
175 true, // is_extractable 152 true, // is_extractable
176 NULL)); 153 NULL));
177 154
178 // Test db should still be empty. 155 // Test db should still be empty.
179 EXPECT_EQ(0U, ListCertsInSlot(slot_->os_module_handle()).size()); 156 EXPECT_EQ(0U, ListCertsInSlot().size());
180 } 157 }
181 158
182 TEST_F(CertDatabaseNSSTest, ImportFromPKCS12AsExtractableAndExportAgain) { 159 TEST_F(CertDatabaseNSSTest, ImportFromPKCS12AsExtractableAndExportAgain) {
183 std::string pkcs12_data = ReadTestFile("client.p12"); 160 std::string pkcs12_data = ReadTestFile("client.p12");
184 161
185 EXPECT_EQ(OK, 162 EXPECT_EQ(OK,
186 cert_db_->ImportFromPKCS12(slot_.get(), 163 cert_db_->ImportFromPKCS12(GetPublicModule(),
187 pkcs12_data, 164 pkcs12_data,
188 ASCIIToUTF16("12345"), 165 ASCIIToUTF16("12345"),
189 true, // is_extractable 166 true, // is_extractable
190 NULL)); 167 NULL));
191 168
192 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 169 CertificateList cert_list = ListCertsInSlot();
193 ASSERT_EQ(1U, cert_list.size()); 170 ASSERT_EQ(1U, cert_list.size());
194 scoped_refptr<X509Certificate> cert(cert_list[0]); 171 scoped_refptr<X509Certificate> cert(cert_list[0]);
195 172
196 EXPECT_EQ("testusercert", 173 EXPECT_EQ("testusercert",
197 cert->subject().common_name); 174 cert->subject().common_name);
198 175
199 // TODO(mattm): move export test to separate test case? 176 // TODO(mattm): move export test to separate test case?
200 std::string exported_data; 177 std::string exported_data;
201 EXPECT_EQ(1, cert_db_->ExportToPKCS12(cert_list, ASCIIToUTF16("exportpw"), 178 EXPECT_EQ(1, cert_db_->ExportToPKCS12(cert_list, ASCIIToUTF16("exportpw"),
202 &exported_data)); 179 &exported_data));
203 ASSERT_LT(0U, exported_data.size()); 180 ASSERT_LT(0U, exported_data.size());
204 // TODO(mattm): further verification of exported data? 181 // TODO(mattm): further verification of exported data?
205 } 182 }
206 183
207 TEST_F(CertDatabaseNSSTest, ImportFromPKCS12Twice) { 184 TEST_F(CertDatabaseNSSTest, ImportFromPKCS12Twice) {
208 std::string pkcs12_data = ReadTestFile("client.p12"); 185 std::string pkcs12_data = ReadTestFile("client.p12");
209 186
210 EXPECT_EQ(OK, 187 EXPECT_EQ(OK,
211 cert_db_->ImportFromPKCS12(slot_.get(), 188 cert_db_->ImportFromPKCS12(GetPublicModule(),
212 pkcs12_data, 189 pkcs12_data,
213 ASCIIToUTF16("12345"), 190 ASCIIToUTF16("12345"),
214 true, // is_extractable 191 true, // is_extractable
215 NULL)); 192 NULL));
216 EXPECT_EQ(1U, ListCertsInSlot(slot_->os_module_handle()).size()); 193 EXPECT_EQ(1U, ListCertsInSlot().size());
217 194
218 // NSS has a SEC_ERROR_PKCS12_DUPLICATE_DATA error, but it doesn't look like 195 // NSS has a SEC_ERROR_PKCS12_DUPLICATE_DATA error, but it doesn't look like
219 // it's ever used. This test verifies that. 196 // it's ever used. This test verifies that.
220 EXPECT_EQ(OK, 197 EXPECT_EQ(OK,
221 cert_db_->ImportFromPKCS12(slot_.get(), 198 cert_db_->ImportFromPKCS12(GetPublicModule(),
222 pkcs12_data, 199 pkcs12_data,
223 ASCIIToUTF16("12345"), 200 ASCIIToUTF16("12345"),
224 true, // is_extractable 201 true, // is_extractable
225 NULL)); 202 NULL));
226 EXPECT_EQ(1U, ListCertsInSlot(slot_->os_module_handle()).size()); 203 EXPECT_EQ(1U, ListCertsInSlot().size());
227 } 204 }
228 205
229 TEST_F(CertDatabaseNSSTest, ImportFromPKCS12AsUnextractableAndExportAgain) { 206 TEST_F(CertDatabaseNSSTest, ImportFromPKCS12AsUnextractableAndExportAgain) {
230 std::string pkcs12_data = ReadTestFile("client.p12"); 207 std::string pkcs12_data = ReadTestFile("client.p12");
231 208
232 EXPECT_EQ(OK, 209 EXPECT_EQ(OK,
233 cert_db_->ImportFromPKCS12(slot_.get(), 210 cert_db_->ImportFromPKCS12(GetPublicModule(),
234 pkcs12_data, 211 pkcs12_data,
235 ASCIIToUTF16("12345"), 212 ASCIIToUTF16("12345"),
236 false, // is_extractable 213 false, // is_extractable
237 NULL)); 214 NULL));
238 215
239 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 216 CertificateList cert_list = ListCertsInSlot();
240 ASSERT_EQ(1U, cert_list.size()); 217 ASSERT_EQ(1U, cert_list.size());
241 scoped_refptr<X509Certificate> cert(cert_list[0]); 218 scoped_refptr<X509Certificate> cert(cert_list[0]);
242 219
243 EXPECT_EQ("testusercert", 220 EXPECT_EQ("testusercert",
244 cert->subject().common_name); 221 cert->subject().common_name);
245 222
246 std::string exported_data; 223 std::string exported_data;
247 EXPECT_EQ(0, cert_db_->ExportToPKCS12(cert_list, ASCIIToUTF16("exportpw"), 224 EXPECT_EQ(0, cert_db_->ExportToPKCS12(cert_list, ASCIIToUTF16("exportpw"),
248 &exported_data)); 225 &exported_data));
249 } 226 }
250 227
251 // Importing a PKCS#12 file with a certificate but no corresponding 228 // Importing a PKCS#12 file with a certificate but no corresponding
252 // private key should not mark an existing private key as unextractable. 229 // private key should not mark an existing private key as unextractable.
253 TEST_F(CertDatabaseNSSTest, ImportFromPKCS12OnlyMarkIncludedKey) { 230 TEST_F(CertDatabaseNSSTest, ImportFromPKCS12OnlyMarkIncludedKey) {
254 std::string pkcs12_data = ReadTestFile("client.p12"); 231 std::string pkcs12_data = ReadTestFile("client.p12");
255 EXPECT_EQ(OK, 232 EXPECT_EQ(OK,
256 cert_db_->ImportFromPKCS12(slot_.get(), 233 cert_db_->ImportFromPKCS12(GetPublicModule(),
257 pkcs12_data, 234 pkcs12_data,
258 ASCIIToUTF16("12345"), 235 ASCIIToUTF16("12345"),
259 true, // is_extractable 236 true, // is_extractable
260 NULL)); 237 NULL));
261 238
262 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 239 CertificateList cert_list = ListCertsInSlot();
263 ASSERT_EQ(1U, cert_list.size()); 240 ASSERT_EQ(1U, cert_list.size());
264 241
265 // Now import a PKCS#12 file with just a certificate but no private key. 242 // Now import a PKCS#12 file with just a certificate but no private key.
266 pkcs12_data = ReadTestFile("client-nokey.p12"); 243 pkcs12_data = ReadTestFile("client-nokey.p12");
267 EXPECT_EQ(OK, 244 EXPECT_EQ(OK,
268 cert_db_->ImportFromPKCS12(slot_.get(), 245 cert_db_->ImportFromPKCS12(GetPublicModule(),
269 pkcs12_data, 246 pkcs12_data,
270 ASCIIToUTF16("12345"), 247 ASCIIToUTF16("12345"),
271 false, // is_extractable 248 false, // is_extractable
272 NULL)); 249 NULL));
273 250
274 cert_list = ListCertsInSlot(slot_->os_module_handle()); 251 cert_list = ListCertsInSlot();
275 ASSERT_EQ(1U, cert_list.size()); 252 ASSERT_EQ(1U, cert_list.size());
276 253
277 // Make sure the imported private key is still extractable. 254 // Make sure the imported private key is still extractable.
278 std::string exported_data; 255 std::string exported_data;
279 EXPECT_EQ(1, cert_db_->ExportToPKCS12(cert_list, ASCIIToUTF16("exportpw"), 256 EXPECT_EQ(1, cert_db_->ExportToPKCS12(cert_list, ASCIIToUTF16("exportpw"),
280 &exported_data)); 257 &exported_data));
281 ASSERT_LT(0U, exported_data.size()); 258 ASSERT_LT(0U, exported_data.size());
282 } 259 }
283 260
284 TEST_F(CertDatabaseNSSTest, ImportFromPKCS12InvalidFile) { 261 TEST_F(CertDatabaseNSSTest, ImportFromPKCS12InvalidFile) {
285 std::string pkcs12_data = "Foobarbaz"; 262 std::string pkcs12_data = "Foobarbaz";
286 263
287 EXPECT_EQ(ERR_PKCS12_IMPORT_INVALID_FILE, 264 EXPECT_EQ(ERR_PKCS12_IMPORT_INVALID_FILE,
288 cert_db_->ImportFromPKCS12(slot_.get(), 265 cert_db_->ImportFromPKCS12(GetPublicModule(),
289 pkcs12_data, 266 pkcs12_data,
290 base::string16(), 267 base::string16(),
291 true, // is_extractable 268 true, // is_extractable
292 NULL)); 269 NULL));
293 270
294 // Test db should still be empty. 271 // Test db should still be empty.
295 EXPECT_EQ(0U, ListCertsInSlot(slot_->os_module_handle()).size()); 272 EXPECT_EQ(0U, ListCertsInSlot().size());
296 } 273 }
297 274
298 TEST_F(CertDatabaseNSSTest, ImportCACert_SSLTrust) { 275 TEST_F(CertDatabaseNSSTest, ImportCACert_SSLTrust) {
299 CertificateList certs = CreateCertificateListFromFile( 276 CertificateList certs = CreateCertificateListFromFile(
300 GetTestCertsDirectory(), "root_ca_cert.pem", 277 GetTestCertsDirectory(), "root_ca_cert.pem",
301 X509Certificate::FORMAT_AUTO); 278 X509Certificate::FORMAT_AUTO);
302 ASSERT_EQ(1U, certs.size()); 279 ASSERT_EQ(1U, certs.size());
303 EXPECT_FALSE(certs[0]->os_cert_handle()->isperm); 280 EXPECT_FALSE(certs[0]->os_cert_handle()->isperm);
304 281
305 // Import it. 282 // Import it.
306 NSSCertDatabase::ImportCertFailureList failed; 283 NSSCertDatabase::ImportCertFailureList failed;
307 EXPECT_TRUE(cert_db_->ImportCACerts(certs, NSSCertDatabase::TRUSTED_SSL, 284 EXPECT_TRUE(cert_db_->ImportCACerts(certs, NSSCertDatabase::TRUSTED_SSL,
308 &failed)); 285 &failed));
309 286
310 EXPECT_EQ(0U, failed.size()); 287 EXPECT_EQ(0U, failed.size());
311 288
312 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 289 CertificateList cert_list = ListCertsInSlot();
313 ASSERT_EQ(1U, cert_list.size()); 290 ASSERT_EQ(1U, cert_list.size());
314 scoped_refptr<X509Certificate> cert(cert_list[0]); 291 scoped_refptr<X509Certificate> cert(cert_list[0]);
315 EXPECT_EQ("Test Root CA", cert->subject().common_name); 292 EXPECT_EQ("Test Root CA", cert->subject().common_name);
316 293
317 EXPECT_EQ(NSSCertDatabase::TRUSTED_SSL, 294 EXPECT_EQ(NSSCertDatabase::TRUSTED_SSL,
318 cert_db_->GetCertTrust(cert.get(), CA_CERT)); 295 cert_db_->GetCertTrust(cert.get(), CA_CERT));
319 296
320 EXPECT_EQ(unsigned(CERTDB_VALID_CA | CERTDB_TRUSTED_CA | 297 EXPECT_EQ(unsigned(CERTDB_VALID_CA | CERTDB_TRUSTED_CA |
321 CERTDB_TRUSTED_CLIENT_CA), 298 CERTDB_TRUSTED_CLIENT_CA),
322 cert->os_cert_handle()->trust->sslFlags); 299 cert->os_cert_handle()->trust->sslFlags);
(...skipping 10 matching lines...) Expand all
333 ASSERT_EQ(1U, certs.size()); 310 ASSERT_EQ(1U, certs.size());
334 EXPECT_FALSE(certs[0]->os_cert_handle()->isperm); 311 EXPECT_FALSE(certs[0]->os_cert_handle()->isperm);
335 312
336 // Import it. 313 // Import it.
337 NSSCertDatabase::ImportCertFailureList failed; 314 NSSCertDatabase::ImportCertFailureList failed;
338 EXPECT_TRUE(cert_db_->ImportCACerts(certs, NSSCertDatabase::TRUSTED_EMAIL, 315 EXPECT_TRUE(cert_db_->ImportCACerts(certs, NSSCertDatabase::TRUSTED_EMAIL,
339 &failed)); 316 &failed));
340 317
341 EXPECT_EQ(0U, failed.size()); 318 EXPECT_EQ(0U, failed.size());
342 319
343 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 320 CertificateList cert_list = ListCertsInSlot();
344 ASSERT_EQ(1U, cert_list.size()); 321 ASSERT_EQ(1U, cert_list.size());
345 scoped_refptr<X509Certificate> cert(cert_list[0]); 322 scoped_refptr<X509Certificate> cert(cert_list[0]);
346 EXPECT_EQ("Test Root CA", cert->subject().common_name); 323 EXPECT_EQ("Test Root CA", cert->subject().common_name);
347 324
348 EXPECT_EQ(NSSCertDatabase::TRUSTED_EMAIL, 325 EXPECT_EQ(NSSCertDatabase::TRUSTED_EMAIL,
349 cert_db_->GetCertTrust(cert.get(), CA_CERT)); 326 cert_db_->GetCertTrust(cert.get(), CA_CERT));
350 327
351 EXPECT_EQ(unsigned(CERTDB_VALID_CA), 328 EXPECT_EQ(unsigned(CERTDB_VALID_CA),
352 cert->os_cert_handle()->trust->sslFlags); 329 cert->os_cert_handle()->trust->sslFlags);
353 EXPECT_EQ(unsigned(CERTDB_VALID_CA | CERTDB_TRUSTED_CA | 330 EXPECT_EQ(unsigned(CERTDB_VALID_CA | CERTDB_TRUSTED_CA |
(...skipping 10 matching lines...) Expand all
364 ASSERT_EQ(1U, certs.size()); 341 ASSERT_EQ(1U, certs.size());
365 EXPECT_FALSE(certs[0]->os_cert_handle()->isperm); 342 EXPECT_FALSE(certs[0]->os_cert_handle()->isperm);
366 343
367 // Import it. 344 // Import it.
368 NSSCertDatabase::ImportCertFailureList failed; 345 NSSCertDatabase::ImportCertFailureList failed;
369 EXPECT_TRUE(cert_db_->ImportCACerts(certs, NSSCertDatabase::TRUSTED_OBJ_SIGN, 346 EXPECT_TRUE(cert_db_->ImportCACerts(certs, NSSCertDatabase::TRUSTED_OBJ_SIGN,
370 &failed)); 347 &failed));
371 348
372 EXPECT_EQ(0U, failed.size()); 349 EXPECT_EQ(0U, failed.size());
373 350
374 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 351 CertificateList cert_list = ListCertsInSlot();
375 ASSERT_EQ(1U, cert_list.size()); 352 ASSERT_EQ(1U, cert_list.size());
376 scoped_refptr<X509Certificate> cert(cert_list[0]); 353 scoped_refptr<X509Certificate> cert(cert_list[0]);
377 EXPECT_EQ("Test Root CA", cert->subject().common_name); 354 EXPECT_EQ("Test Root CA", cert->subject().common_name);
378 355
379 EXPECT_EQ(NSSCertDatabase::TRUSTED_OBJ_SIGN, 356 EXPECT_EQ(NSSCertDatabase::TRUSTED_OBJ_SIGN,
380 cert_db_->GetCertTrust(cert.get(), CA_CERT)); 357 cert_db_->GetCertTrust(cert.get(), CA_CERT));
381 358
382 EXPECT_EQ(unsigned(CERTDB_VALID_CA), 359 EXPECT_EQ(unsigned(CERTDB_VALID_CA),
383 cert->os_cert_handle()->trust->sslFlags); 360 cert->os_cert_handle()->trust->sslFlags);
384 EXPECT_EQ(unsigned(CERTDB_VALID_CA), 361 EXPECT_EQ(unsigned(CERTDB_VALID_CA),
(...skipping 14 matching lines...) Expand all
399 NSSCertDatabase::ImportCertFailureList failed; 376 NSSCertDatabase::ImportCertFailureList failed;
400 EXPECT_TRUE(cert_db_->ImportCACerts(certs, NSSCertDatabase::TRUSTED_SSL, 377 EXPECT_TRUE(cert_db_->ImportCACerts(certs, NSSCertDatabase::TRUSTED_SSL,
401 &failed)); 378 &failed));
402 ASSERT_EQ(1U, failed.size()); 379 ASSERT_EQ(1U, failed.size());
403 // Note: this compares pointers directly. It's okay in this case because 380 // Note: this compares pointers directly. It's okay in this case because
404 // ImportCACerts returns the same pointers that were passed in. In the 381 // ImportCACerts returns the same pointers that were passed in. In the
405 // general case IsSameOSCert should be used. 382 // general case IsSameOSCert should be used.
406 EXPECT_EQ(certs[0], failed[0].certificate); 383 EXPECT_EQ(certs[0], failed[0].certificate);
407 EXPECT_EQ(ERR_IMPORT_CA_CERT_NOT_CA, failed[0].net_error); 384 EXPECT_EQ(ERR_IMPORT_CA_CERT_NOT_CA, failed[0].net_error);
408 385
409 EXPECT_EQ(0U, ListCertsInSlot(slot_->os_module_handle()).size()); 386 EXPECT_EQ(0U, ListCertsInSlot().size());
410 } 387 }
411 388
412 TEST_F(CertDatabaseNSSTest, ImportCACertHierarchy) { 389 TEST_F(CertDatabaseNSSTest, ImportCACertHierarchy) {
413 CertificateList certs; 390 CertificateList certs;
414 ASSERT_TRUE(ReadCertIntoList("dod_root_ca_2_cert.der", &certs)); 391 ASSERT_TRUE(ReadCertIntoList("dod_root_ca_2_cert.der", &certs));
415 ASSERT_TRUE(ReadCertIntoList("dod_ca_17_cert.der", &certs)); 392 ASSERT_TRUE(ReadCertIntoList("dod_ca_17_cert.der", &certs));
416 ASSERT_TRUE(ReadCertIntoList("www_us_army_mil_cert.der", &certs)); 393 ASSERT_TRUE(ReadCertIntoList("www_us_army_mil_cert.der", &certs));
417 394
418 // Import it. 395 // Import it.
419 NSSCertDatabase::ImportCertFailureList failed; 396 NSSCertDatabase::ImportCertFailureList failed;
420 // Have to specify email trust for the cert verification of the child cert to 397 // Have to specify email trust for the cert verification of the child cert to
421 // work (see 398 // work (see
422 // http://mxr.mozilla.org/mozilla/source/security/nss/lib/certhigh/certvfy.c#7 52 399 // http://mxr.mozilla.org/mozilla/source/security/nss/lib/certhigh/certvfy.c#7 52
423 // "XXX This choice of trustType seems arbitrary.") 400 // "XXX This choice of trustType seems arbitrary.")
424 EXPECT_TRUE(cert_db_->ImportCACerts( 401 EXPECT_TRUE(cert_db_->ImportCACerts(
425 certs, NSSCertDatabase::TRUSTED_SSL | NSSCertDatabase::TRUSTED_EMAIL, 402 certs, NSSCertDatabase::TRUSTED_SSL | NSSCertDatabase::TRUSTED_EMAIL,
426 &failed)); 403 &failed));
427 404
428 ASSERT_EQ(2U, failed.size()); 405 ASSERT_EQ(2U, failed.size());
429 EXPECT_EQ("DOD CA-17", failed[0].certificate->subject().common_name); 406 EXPECT_EQ("DOD CA-17", failed[0].certificate->subject().common_name);
430 EXPECT_EQ(ERR_FAILED, failed[0].net_error); // The certificate expired. 407 EXPECT_EQ(ERR_FAILED, failed[0].net_error); // The certificate expired.
431 EXPECT_EQ("www.us.army.mil", failed[1].certificate->subject().common_name); 408 EXPECT_EQ("www.us.army.mil", failed[1].certificate->subject().common_name);
432 EXPECT_EQ(ERR_IMPORT_CA_CERT_NOT_CA, failed[1].net_error); 409 EXPECT_EQ(ERR_IMPORT_CA_CERT_NOT_CA, failed[1].net_error);
433 410
434 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 411 CertificateList cert_list = ListCertsInSlot();
435 ASSERT_EQ(1U, cert_list.size()); 412 ASSERT_EQ(1U, cert_list.size());
436 EXPECT_EQ("DoD Root CA 2", cert_list[0]->subject().common_name); 413 EXPECT_EQ("DoD Root CA 2", cert_list[0]->subject().common_name);
437 } 414 }
438 415
439 TEST_F(CertDatabaseNSSTest, ImportCACertHierarchyDupeRoot) { 416 TEST_F(CertDatabaseNSSTest, ImportCACertHierarchyDupeRoot) {
440 CertificateList certs; 417 CertificateList certs;
441 ASSERT_TRUE(ReadCertIntoList("dod_root_ca_2_cert.der", &certs)); 418 ASSERT_TRUE(ReadCertIntoList("dod_root_ca_2_cert.der", &certs));
442 419
443 // First import just the root. 420 // First import just the root.
444 NSSCertDatabase::ImportCertFailureList failed; 421 NSSCertDatabase::ImportCertFailureList failed;
445 EXPECT_TRUE(cert_db_->ImportCACerts( 422 EXPECT_TRUE(cert_db_->ImportCACerts(
446 certs, NSSCertDatabase::TRUSTED_SSL | NSSCertDatabase::TRUSTED_EMAIL, 423 certs, NSSCertDatabase::TRUSTED_SSL | NSSCertDatabase::TRUSTED_EMAIL,
447 &failed)); 424 &failed));
448 425
449 EXPECT_EQ(0U, failed.size()); 426 EXPECT_EQ(0U, failed.size());
450 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 427 CertificateList cert_list = ListCertsInSlot();
451 ASSERT_EQ(1U, cert_list.size()); 428 ASSERT_EQ(1U, cert_list.size());
452 EXPECT_EQ("DoD Root CA 2", cert_list[0]->subject().common_name); 429 EXPECT_EQ("DoD Root CA 2", cert_list[0]->subject().common_name);
453 430
454 ASSERT_TRUE(ReadCertIntoList("dod_ca_17_cert.der", &certs)); 431 ASSERT_TRUE(ReadCertIntoList("dod_ca_17_cert.der", &certs));
455 ASSERT_TRUE(ReadCertIntoList("www_us_army_mil_cert.der", &certs)); 432 ASSERT_TRUE(ReadCertIntoList("www_us_army_mil_cert.der", &certs));
456 433
457 // Now import with the other certs in the list too. Even though the root is 434 // Now import with the other certs in the list too. Even though the root is
458 // already present, we should still import the rest. 435 // already present, we should still import the rest.
459 failed.clear(); 436 failed.clear();
460 EXPECT_TRUE(cert_db_->ImportCACerts( 437 EXPECT_TRUE(cert_db_->ImportCACerts(
461 certs, NSSCertDatabase::TRUSTED_SSL | NSSCertDatabase::TRUSTED_EMAIL, 438 certs, NSSCertDatabase::TRUSTED_SSL | NSSCertDatabase::TRUSTED_EMAIL,
462 &failed)); 439 &failed));
463 440
464 ASSERT_EQ(3U, failed.size()); 441 ASSERT_EQ(3U, failed.size());
465 EXPECT_EQ("DoD Root CA 2", failed[0].certificate->subject().common_name); 442 EXPECT_EQ("DoD Root CA 2", failed[0].certificate->subject().common_name);
466 EXPECT_EQ(ERR_IMPORT_CERT_ALREADY_EXISTS, failed[0].net_error); 443 EXPECT_EQ(ERR_IMPORT_CERT_ALREADY_EXISTS, failed[0].net_error);
467 EXPECT_EQ("DOD CA-17", failed[1].certificate->subject().common_name); 444 EXPECT_EQ("DOD CA-17", failed[1].certificate->subject().common_name);
468 EXPECT_EQ(ERR_FAILED, failed[1].net_error); // The certificate expired. 445 EXPECT_EQ(ERR_FAILED, failed[1].net_error); // The certificate expired.
469 EXPECT_EQ("www.us.army.mil", failed[2].certificate->subject().common_name); 446 EXPECT_EQ("www.us.army.mil", failed[2].certificate->subject().common_name);
470 EXPECT_EQ(ERR_IMPORT_CA_CERT_NOT_CA, failed[2].net_error); 447 EXPECT_EQ(ERR_IMPORT_CA_CERT_NOT_CA, failed[2].net_error);
471 448
472 cert_list = ListCertsInSlot(slot_->os_module_handle()); 449 cert_list = ListCertsInSlot();
473 ASSERT_EQ(1U, cert_list.size()); 450 ASSERT_EQ(1U, cert_list.size());
474 EXPECT_EQ("DoD Root CA 2", cert_list[0]->subject().common_name); 451 EXPECT_EQ("DoD Root CA 2", cert_list[0]->subject().common_name);
475 } 452 }
476 453
477 TEST_F(CertDatabaseNSSTest, ImportCACertHierarchyUntrusted) { 454 TEST_F(CertDatabaseNSSTest, ImportCACertHierarchyUntrusted) {
478 CertificateList certs; 455 CertificateList certs;
479 ASSERT_TRUE(ReadCertIntoList("dod_root_ca_2_cert.der", &certs)); 456 ASSERT_TRUE(ReadCertIntoList("dod_root_ca_2_cert.der", &certs));
480 ASSERT_TRUE(ReadCertIntoList("dod_ca_17_cert.der", &certs)); 457 ASSERT_TRUE(ReadCertIntoList("dod_ca_17_cert.der", &certs));
481 458
482 // Import it. 459 // Import it.
483 NSSCertDatabase::ImportCertFailureList failed; 460 NSSCertDatabase::ImportCertFailureList failed;
484 EXPECT_TRUE(cert_db_->ImportCACerts(certs, NSSCertDatabase::TRUST_DEFAULT, 461 EXPECT_TRUE(cert_db_->ImportCACerts(certs, NSSCertDatabase::TRUST_DEFAULT,
485 &failed)); 462 &failed));
486 463
487 ASSERT_EQ(1U, failed.size()); 464 ASSERT_EQ(1U, failed.size());
488 EXPECT_EQ("DOD CA-17", failed[0].certificate->subject().common_name); 465 EXPECT_EQ("DOD CA-17", failed[0].certificate->subject().common_name);
489 // TODO(mattm): should check for net error equivalent of 466 // TODO(mattm): should check for net error equivalent of
490 // SEC_ERROR_UNTRUSTED_ISSUER 467 // SEC_ERROR_UNTRUSTED_ISSUER
491 EXPECT_EQ(ERR_FAILED, failed[0].net_error); 468 EXPECT_EQ(ERR_FAILED, failed[0].net_error);
492 469
493 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 470 CertificateList cert_list = ListCertsInSlot();
494 ASSERT_EQ(1U, cert_list.size()); 471 ASSERT_EQ(1U, cert_list.size());
495 EXPECT_EQ("DoD Root CA 2", cert_list[0]->subject().common_name); 472 EXPECT_EQ("DoD Root CA 2", cert_list[0]->subject().common_name);
496 } 473 }
497 474
498 TEST_F(CertDatabaseNSSTest, ImportCACertHierarchyTree) { 475 TEST_F(CertDatabaseNSSTest, ImportCACertHierarchyTree) {
499 CertificateList certs; 476 CertificateList certs;
500 ASSERT_TRUE(ReadCertIntoList("dod_root_ca_2_cert.der", &certs)); 477 ASSERT_TRUE(ReadCertIntoList("dod_root_ca_2_cert.der", &certs));
501 ASSERT_TRUE(ReadCertIntoList("dod_ca_13_cert.der", &certs)); 478 ASSERT_TRUE(ReadCertIntoList("dod_ca_13_cert.der", &certs));
502 ASSERT_TRUE(ReadCertIntoList("dod_ca_17_cert.der", &certs)); 479 ASSERT_TRUE(ReadCertIntoList("dod_ca_17_cert.der", &certs));
503 480
504 // Import it. 481 // Import it.
505 NSSCertDatabase::ImportCertFailureList failed; 482 NSSCertDatabase::ImportCertFailureList failed;
506 EXPECT_TRUE(cert_db_->ImportCACerts( 483 EXPECT_TRUE(cert_db_->ImportCACerts(
507 certs, NSSCertDatabase::TRUSTED_SSL | NSSCertDatabase::TRUSTED_EMAIL, 484 certs, NSSCertDatabase::TRUSTED_SSL | NSSCertDatabase::TRUSTED_EMAIL,
508 &failed)); 485 &failed));
509 486
510 EXPECT_EQ(2U, failed.size()); 487 EXPECT_EQ(2U, failed.size());
511 EXPECT_EQ("DOD CA-13", failed[0].certificate->subject().common_name); 488 EXPECT_EQ("DOD CA-13", failed[0].certificate->subject().common_name);
512 EXPECT_EQ(ERR_FAILED, failed[0].net_error); // The certificate expired. 489 EXPECT_EQ(ERR_FAILED, failed[0].net_error); // The certificate expired.
513 EXPECT_EQ("DOD CA-17", failed[1].certificate->subject().common_name); 490 EXPECT_EQ("DOD CA-17", failed[1].certificate->subject().common_name);
514 EXPECT_EQ(ERR_FAILED, failed[1].net_error); // The certificate expired. 491 EXPECT_EQ(ERR_FAILED, failed[1].net_error); // The certificate expired.
515 492
516 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 493 CertificateList cert_list = ListCertsInSlot();
517 ASSERT_EQ(1U, cert_list.size()); 494 ASSERT_EQ(1U, cert_list.size());
518 EXPECT_EQ("DoD Root CA 2", cert_list[0]->subject().common_name); 495 EXPECT_EQ("DoD Root CA 2", cert_list[0]->subject().common_name);
519 } 496 }
520 497
521 TEST_F(CertDatabaseNSSTest, ImportCACertNotHierarchy) { 498 TEST_F(CertDatabaseNSSTest, ImportCACertNotHierarchy) {
522 CertificateList certs = CreateCertificateListFromFile( 499 CertificateList certs = CreateCertificateListFromFile(
523 GetTestCertsDirectory(), "root_ca_cert.pem", 500 GetTestCertsDirectory(), "root_ca_cert.pem",
524 X509Certificate::FORMAT_AUTO); 501 X509Certificate::FORMAT_AUTO);
525 ASSERT_EQ(1U, certs.size()); 502 ASSERT_EQ(1U, certs.size());
526 ASSERT_TRUE(ReadCertIntoList("dod_ca_13_cert.der", &certs)); 503 ASSERT_TRUE(ReadCertIntoList("dod_ca_13_cert.der", &certs));
527 ASSERT_TRUE(ReadCertIntoList("dod_ca_17_cert.der", &certs)); 504 ASSERT_TRUE(ReadCertIntoList("dod_ca_17_cert.der", &certs));
528 505
529 // Import it. 506 // Import it.
530 NSSCertDatabase::ImportCertFailureList failed; 507 NSSCertDatabase::ImportCertFailureList failed;
531 EXPECT_TRUE(cert_db_->ImportCACerts( 508 EXPECT_TRUE(cert_db_->ImportCACerts(
532 certs, NSSCertDatabase::TRUSTED_SSL | NSSCertDatabase::TRUSTED_EMAIL | 509 certs, NSSCertDatabase::TRUSTED_SSL | NSSCertDatabase::TRUSTED_EMAIL |
533 NSSCertDatabase::TRUSTED_OBJ_SIGN, &failed)); 510 NSSCertDatabase::TRUSTED_OBJ_SIGN, &failed));
534 511
535 ASSERT_EQ(2U, failed.size()); 512 ASSERT_EQ(2U, failed.size());
536 // TODO(mattm): should check for net error equivalent of 513 // TODO(mattm): should check for net error equivalent of
537 // SEC_ERROR_UNKNOWN_ISSUER 514 // SEC_ERROR_UNKNOWN_ISSUER
538 EXPECT_EQ("DOD CA-13", failed[0].certificate->subject().common_name); 515 EXPECT_EQ("DOD CA-13", failed[0].certificate->subject().common_name);
539 EXPECT_EQ(ERR_FAILED, failed[0].net_error); 516 EXPECT_EQ(ERR_FAILED, failed[0].net_error);
540 EXPECT_EQ("DOD CA-17", failed[1].certificate->subject().common_name); 517 EXPECT_EQ("DOD CA-17", failed[1].certificate->subject().common_name);
541 EXPECT_EQ(ERR_FAILED, failed[1].net_error); 518 EXPECT_EQ(ERR_FAILED, failed[1].net_error);
542 519
543 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 520 CertificateList cert_list = ListCertsInSlot();
544 ASSERT_EQ(1U, cert_list.size()); 521 ASSERT_EQ(1U, cert_list.size());
545 EXPECT_EQ("Test Root CA", cert_list[0]->subject().common_name); 522 EXPECT_EQ("Test Root CA", cert_list[0]->subject().common_name);
546 } 523 }
547 524
548 // http://crbug.com/108009 - Disabled, as google.chain.pem is an expired 525 // http://crbug.com/108009 - Disabled, as google.chain.pem is an expired
549 // certificate. 526 // certificate.
550 TEST_F(CertDatabaseNSSTest, DISABLED_ImportServerCert) { 527 TEST_F(CertDatabaseNSSTest, DISABLED_ImportServerCert) {
551 // Need to import intermediate cert for the verify of google cert, otherwise 528 // Need to import intermediate cert for the verify of google cert, otherwise
552 // it will try to fetch it automatically with cert_pi_useAIACertFetch, which 529 // it will try to fetch it automatically with cert_pi_useAIACertFetch, which
553 // will cause OCSPCreateSession on the main thread, which is not allowed. 530 // will cause OCSPCreateSession on the main thread, which is not allowed.
554 CertificateList certs = CreateCertificateListFromFile( 531 CertificateList certs = CreateCertificateListFromFile(
555 GetTestCertsDirectory(), "google.chain.pem", 532 GetTestCertsDirectory(), "google.chain.pem",
556 X509Certificate::FORMAT_AUTO); 533 X509Certificate::FORMAT_AUTO);
557 ASSERT_EQ(2U, certs.size()); 534 ASSERT_EQ(2U, certs.size());
558 535
559 NSSCertDatabase::ImportCertFailureList failed; 536 NSSCertDatabase::ImportCertFailureList failed;
560 EXPECT_TRUE(cert_db_->ImportServerCert(certs, NSSCertDatabase::TRUST_DEFAULT, 537 EXPECT_TRUE(cert_db_->ImportServerCert(certs, NSSCertDatabase::TRUST_DEFAULT,
561 &failed)); 538 &failed));
562 539
563 EXPECT_EQ(0U, failed.size()); 540 EXPECT_EQ(0U, failed.size());
564 541
565 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 542 CertificateList cert_list = ListCertsInSlot();
566 ASSERT_EQ(2U, cert_list.size()); 543 ASSERT_EQ(2U, cert_list.size());
567 scoped_refptr<X509Certificate> goog_cert(cert_list[0]); 544 scoped_refptr<X509Certificate> goog_cert(cert_list[0]);
568 scoped_refptr<X509Certificate> thawte_cert(cert_list[1]); 545 scoped_refptr<X509Certificate> thawte_cert(cert_list[1]);
569 EXPECT_EQ("www.google.com", goog_cert->subject().common_name); 546 EXPECT_EQ("www.google.com", goog_cert->subject().common_name);
570 EXPECT_EQ("Thawte SGC CA", thawte_cert->subject().common_name); 547 EXPECT_EQ("Thawte SGC CA", thawte_cert->subject().common_name);
571 548
572 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, 549 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT,
573 cert_db_->GetCertTrust(goog_cert.get(), SERVER_CERT)); 550 cert_db_->GetCertTrust(goog_cert.get(), SERVER_CERT));
574 551
575 EXPECT_EQ(0U, goog_cert->os_cert_handle()->trust->sslFlags); 552 EXPECT_EQ(0U, goog_cert->os_cert_handle()->trust->sslFlags);
(...skipping 14 matching lines...) Expand all
590 TEST_F(CertDatabaseNSSTest, ImportServerCert_SelfSigned) { 567 TEST_F(CertDatabaseNSSTest, ImportServerCert_SelfSigned) {
591 CertificateList certs; 568 CertificateList certs;
592 ASSERT_TRUE(ReadCertIntoList("punycodetest.der", &certs)); 569 ASSERT_TRUE(ReadCertIntoList("punycodetest.der", &certs));
593 570
594 NSSCertDatabase::ImportCertFailureList failed; 571 NSSCertDatabase::ImportCertFailureList failed;
595 EXPECT_TRUE(cert_db_->ImportServerCert(certs, NSSCertDatabase::TRUST_DEFAULT, 572 EXPECT_TRUE(cert_db_->ImportServerCert(certs, NSSCertDatabase::TRUST_DEFAULT,
596 &failed)); 573 &failed));
597 574
598 EXPECT_EQ(0U, failed.size()); 575 EXPECT_EQ(0U, failed.size());
599 576
600 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 577 CertificateList cert_list = ListCertsInSlot();
601 ASSERT_EQ(1U, cert_list.size()); 578 ASSERT_EQ(1U, cert_list.size());
602 scoped_refptr<X509Certificate> puny_cert(cert_list[0]); 579 scoped_refptr<X509Certificate> puny_cert(cert_list[0]);
603 580
604 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, 581 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT,
605 cert_db_->GetCertTrust(puny_cert.get(), SERVER_CERT)); 582 cert_db_->GetCertTrust(puny_cert.get(), SERVER_CERT));
606 EXPECT_EQ(0U, puny_cert->os_cert_handle()->trust->sslFlags); 583 EXPECT_EQ(0U, puny_cert->os_cert_handle()->trust->sslFlags);
607 584
608 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); 585 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS());
609 int flags = 0; 586 int flags = 0;
610 CertVerifyResult verify_result; 587 CertVerifyResult verify_result;
(...skipping 10 matching lines...) Expand all
621 TEST_F(CertDatabaseNSSTest, ImportServerCert_SelfSigned_Trusted) { 598 TEST_F(CertDatabaseNSSTest, ImportServerCert_SelfSigned_Trusted) {
622 CertificateList certs; 599 CertificateList certs;
623 ASSERT_TRUE(ReadCertIntoList("punycodetest.der", &certs)); 600 ASSERT_TRUE(ReadCertIntoList("punycodetest.der", &certs));
624 601
625 NSSCertDatabase::ImportCertFailureList failed; 602 NSSCertDatabase::ImportCertFailureList failed;
626 EXPECT_TRUE(cert_db_->ImportServerCert(certs, NSSCertDatabase::TRUSTED_SSL, 603 EXPECT_TRUE(cert_db_->ImportServerCert(certs, NSSCertDatabase::TRUSTED_SSL,
627 &failed)); 604 &failed));
628 605
629 EXPECT_EQ(0U, failed.size()); 606 EXPECT_EQ(0U, failed.size());
630 607
631 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 608 CertificateList cert_list = ListCertsInSlot();
632 ASSERT_EQ(1U, cert_list.size()); 609 ASSERT_EQ(1U, cert_list.size());
633 scoped_refptr<X509Certificate> puny_cert(cert_list[0]); 610 scoped_refptr<X509Certificate> puny_cert(cert_list[0]);
634 611
635 EXPECT_EQ(NSSCertDatabase::TRUSTED_SSL, 612 EXPECT_EQ(NSSCertDatabase::TRUSTED_SSL,
636 cert_db_->GetCertTrust(puny_cert.get(), SERVER_CERT)); 613 cert_db_->GetCertTrust(puny_cert.get(), SERVER_CERT));
637 EXPECT_EQ(unsigned(CERTDB_TRUSTED | CERTDB_TERMINAL_RECORD), 614 EXPECT_EQ(unsigned(CERTDB_TRUSTED | CERTDB_TERMINAL_RECORD),
638 puny_cert->os_cert_handle()->trust->sslFlags); 615 puny_cert->os_cert_handle()->trust->sslFlags);
639 616
640 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); 617 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS());
641 int flags = 0; 618 int flags = 0;
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after
1004 // Importing two certificates with the same issuer and subject common name, 981 // Importing two certificates with the same issuer and subject common name,
1005 // but overall distinct subject names, should succeed and generate a unique 982 // but overall distinct subject names, should succeed and generate a unique
1006 // nickname for the second certificate. 983 // nickname for the second certificate.
1007 TEST_F(CertDatabaseNSSTest, ImportDuplicateCommonName) { 984 TEST_F(CertDatabaseNSSTest, ImportDuplicateCommonName) {
1008 CertificateList certs = 985 CertificateList certs =
1009 CreateCertificateListFromFile(GetTestCertsDirectory(), 986 CreateCertificateListFromFile(GetTestCertsDirectory(),
1010 "duplicate_cn_1.pem", 987 "duplicate_cn_1.pem",
1011 X509Certificate::FORMAT_AUTO); 988 X509Certificate::FORMAT_AUTO);
1012 ASSERT_EQ(1U, certs.size()); 989 ASSERT_EQ(1U, certs.size());
1013 990
1014 EXPECT_EQ(0U, ListCertsInSlot(slot_->os_module_handle()).size()); 991 EXPECT_EQ(0U, ListCertsInSlot().size());
1015 992
1016 // Import server cert with default trust. 993 // Import server cert with default trust.
1017 NSSCertDatabase::ImportCertFailureList failed; 994 NSSCertDatabase::ImportCertFailureList failed;
1018 EXPECT_TRUE(cert_db_->ImportServerCert( 995 EXPECT_TRUE(cert_db_->ImportServerCert(
1019 certs, NSSCertDatabase::TRUST_DEFAULT, &failed)); 996 certs, NSSCertDatabase::TRUST_DEFAULT, &failed));
1020 EXPECT_EQ(0U, failed.size()); 997 EXPECT_EQ(0U, failed.size());
1021 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, 998 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT,
1022 cert_db_->GetCertTrust(certs[0].get(), SERVER_CERT)); 999 cert_db_->GetCertTrust(certs[0].get(), SERVER_CERT));
1023 1000
1024 CertificateList new_certs = ListCertsInSlot(slot_->os_module_handle()); 1001 CertificateList new_certs = ListCertsInSlot();
1025 ASSERT_EQ(1U, new_certs.size()); 1002 ASSERT_EQ(1U, new_certs.size());
1026 1003
1027 // Now attempt to import a different certificate with the same common name. 1004 // Now attempt to import a different certificate with the same common name.
1028 CertificateList certs2 = 1005 CertificateList certs2 =
1029 CreateCertificateListFromFile(GetTestCertsDirectory(), 1006 CreateCertificateListFromFile(GetTestCertsDirectory(),
1030 "duplicate_cn_2.pem", 1007 "duplicate_cn_2.pem",
1031 X509Certificate::FORMAT_AUTO); 1008 X509Certificate::FORMAT_AUTO);
1032 ASSERT_EQ(1U, certs2.size()); 1009 ASSERT_EQ(1U, certs2.size());
1033 1010
1034 // Import server cert with default trust. 1011 // Import server cert with default trust.
1035 EXPECT_TRUE(cert_db_->ImportServerCert( 1012 EXPECT_TRUE(cert_db_->ImportServerCert(
1036 certs2, NSSCertDatabase::TRUST_DEFAULT, &failed)); 1013 certs2, NSSCertDatabase::TRUST_DEFAULT, &failed));
1037 EXPECT_EQ(0U, failed.size()); 1014 EXPECT_EQ(0U, failed.size());
1038 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, 1015 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT,
1039 cert_db_->GetCertTrust(certs2[0].get(), SERVER_CERT)); 1016 cert_db_->GetCertTrust(certs2[0].get(), SERVER_CERT));
1040 1017
1041 new_certs = ListCertsInSlot(slot_->os_module_handle()); 1018 new_certs = ListCertsInSlot();
1042 ASSERT_EQ(2U, new_certs.size()); 1019 ASSERT_EQ(2U, new_certs.size());
1043 EXPECT_STRNE(new_certs[0]->os_cert_handle()->nickname, 1020 EXPECT_STRNE(new_certs[0]->os_cert_handle()->nickname,
1044 new_certs[1]->os_cert_handle()->nickname); 1021 new_certs[1]->os_cert_handle()->nickname);
1045 } 1022 }
1046 1023
1047 } // namespace net 1024 } // namespace net
OLDNEW
« net/cert/nss_cert_database.cc ('K') | « net/cert/nss_cert_database_chromeos.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698