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

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

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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 | 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 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 cert_db_->ImportFromPKCS12(slot_.get(), 186 cert_db_->ImportFromPKCS12(slot_.get(),
187 pkcs12_data, 187 pkcs12_data,
188 ASCIIToUTF16("12345"), 188 ASCIIToUTF16("12345"),
189 true, // is_extractable 189 true, // is_extractable
190 NULL)); 190 NULL));
191 191
192 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 192 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle());
193 ASSERT_EQ(1U, cert_list.size()); 193 ASSERT_EQ(1U, cert_list.size());
194 scoped_refptr<X509Certificate> cert(cert_list[0]); 194 scoped_refptr<X509Certificate> cert(cert_list[0]);
195 195
196 EXPECT_EQ("testusercert", 196 EXPECT_EQ("testusercert", cert->subject().common_name);
197 cert->subject().common_name);
198 197
199 // TODO(mattm): move export test to separate test case? 198 // TODO(mattm): move export test to separate test case?
200 std::string exported_data; 199 std::string exported_data;
201 EXPECT_EQ(1, cert_db_->ExportToPKCS12(cert_list, ASCIIToUTF16("exportpw"), 200 EXPECT_EQ(1,
202 &exported_data)); 201 cert_db_->ExportToPKCS12(
202 cert_list, ASCIIToUTF16("exportpw"), &exported_data));
203 ASSERT_LT(0U, exported_data.size()); 203 ASSERT_LT(0U, exported_data.size());
204 // TODO(mattm): further verification of exported data? 204 // TODO(mattm): further verification of exported data?
205 } 205 }
206 206
207 TEST_F(CertDatabaseNSSTest, ImportFromPKCS12Twice) { 207 TEST_F(CertDatabaseNSSTest, ImportFromPKCS12Twice) {
208 std::string pkcs12_data = ReadTestFile("client.p12"); 208 std::string pkcs12_data = ReadTestFile("client.p12");
209 209
210 EXPECT_EQ(OK, 210 EXPECT_EQ(OK,
211 cert_db_->ImportFromPKCS12(slot_.get(), 211 cert_db_->ImportFromPKCS12(slot_.get(),
212 pkcs12_data, 212 pkcs12_data,
(...skipping 20 matching lines...) Expand all
233 cert_db_->ImportFromPKCS12(slot_.get(), 233 cert_db_->ImportFromPKCS12(slot_.get(),
234 pkcs12_data, 234 pkcs12_data,
235 ASCIIToUTF16("12345"), 235 ASCIIToUTF16("12345"),
236 false, // is_extractable 236 false, // is_extractable
237 NULL)); 237 NULL));
238 238
239 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 239 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle());
240 ASSERT_EQ(1U, cert_list.size()); 240 ASSERT_EQ(1U, cert_list.size());
241 scoped_refptr<X509Certificate> cert(cert_list[0]); 241 scoped_refptr<X509Certificate> cert(cert_list[0]);
242 242
243 EXPECT_EQ("testusercert", 243 EXPECT_EQ("testusercert", cert->subject().common_name);
244 cert->subject().common_name);
245 244
246 std::string exported_data; 245 std::string exported_data;
247 EXPECT_EQ(0, cert_db_->ExportToPKCS12(cert_list, ASCIIToUTF16("exportpw"), 246 EXPECT_EQ(0,
248 &exported_data)); 247 cert_db_->ExportToPKCS12(
248 cert_list, ASCIIToUTF16("exportpw"), &exported_data));
249 } 249 }
250 250
251 // Importing a PKCS#12 file with a certificate but no corresponding 251 // Importing a PKCS#12 file with a certificate but no corresponding
252 // private key should not mark an existing private key as unextractable. 252 // private key should not mark an existing private key as unextractable.
253 TEST_F(CertDatabaseNSSTest, ImportFromPKCS12OnlyMarkIncludedKey) { 253 TEST_F(CertDatabaseNSSTest, ImportFromPKCS12OnlyMarkIncludedKey) {
254 std::string pkcs12_data = ReadTestFile("client.p12"); 254 std::string pkcs12_data = ReadTestFile("client.p12");
255 EXPECT_EQ(OK, 255 EXPECT_EQ(OK,
256 cert_db_->ImportFromPKCS12(slot_.get(), 256 cert_db_->ImportFromPKCS12(slot_.get(),
257 pkcs12_data, 257 pkcs12_data,
258 ASCIIToUTF16("12345"), 258 ASCIIToUTF16("12345"),
(...skipping 10 matching lines...) Expand all
269 pkcs12_data, 269 pkcs12_data,
270 ASCIIToUTF16("12345"), 270 ASCIIToUTF16("12345"),
271 false, // is_extractable 271 false, // is_extractable
272 NULL)); 272 NULL));
273 273
274 cert_list = ListCertsInSlot(slot_->os_module_handle()); 274 cert_list = ListCertsInSlot(slot_->os_module_handle());
275 ASSERT_EQ(1U, cert_list.size()); 275 ASSERT_EQ(1U, cert_list.size());
276 276
277 // Make sure the imported private key is still extractable. 277 // Make sure the imported private key is still extractable.
278 std::string exported_data; 278 std::string exported_data;
279 EXPECT_EQ(1, cert_db_->ExportToPKCS12(cert_list, ASCIIToUTF16("exportpw"), 279 EXPECT_EQ(1,
280 &exported_data)); 280 cert_db_->ExportToPKCS12(
281 cert_list, ASCIIToUTF16("exportpw"), &exported_data));
281 ASSERT_LT(0U, exported_data.size()); 282 ASSERT_LT(0U, exported_data.size());
282 } 283 }
283 284
284 TEST_F(CertDatabaseNSSTest, ImportFromPKCS12InvalidFile) { 285 TEST_F(CertDatabaseNSSTest, ImportFromPKCS12InvalidFile) {
285 std::string pkcs12_data = "Foobarbaz"; 286 std::string pkcs12_data = "Foobarbaz";
286 287
287 EXPECT_EQ(ERR_PKCS12_IMPORT_INVALID_FILE, 288 EXPECT_EQ(ERR_PKCS12_IMPORT_INVALID_FILE,
288 cert_db_->ImportFromPKCS12(slot_.get(), 289 cert_db_->ImportFromPKCS12(slot_.get(),
289 pkcs12_data, 290 pkcs12_data,
290 base::string16(), 291 base::string16(),
291 true, // is_extractable 292 true, // is_extractable
292 NULL)); 293 NULL));
293 294
294 // Test db should still be empty. 295 // Test db should still be empty.
295 EXPECT_EQ(0U, ListCertsInSlot(slot_->os_module_handle()).size()); 296 EXPECT_EQ(0U, ListCertsInSlot(slot_->os_module_handle()).size());
296 } 297 }
297 298
298 TEST_F(CertDatabaseNSSTest, ImportCACert_SSLTrust) { 299 TEST_F(CertDatabaseNSSTest, ImportCACert_SSLTrust) {
299 CertificateList certs = CreateCertificateListFromFile( 300 CertificateList certs =
300 GetTestCertsDirectory(), "root_ca_cert.pem", 301 CreateCertificateListFromFile(GetTestCertsDirectory(),
301 X509Certificate::FORMAT_AUTO); 302 "root_ca_cert.pem",
303 X509Certificate::FORMAT_AUTO);
302 ASSERT_EQ(1U, certs.size()); 304 ASSERT_EQ(1U, certs.size());
303 EXPECT_FALSE(certs[0]->os_cert_handle()->isperm); 305 EXPECT_FALSE(certs[0]->os_cert_handle()->isperm);
304 306
305 // Import it. 307 // Import it.
306 NSSCertDatabase::ImportCertFailureList failed; 308 NSSCertDatabase::ImportCertFailureList failed;
307 EXPECT_TRUE(cert_db_->ImportCACerts(certs, NSSCertDatabase::TRUSTED_SSL, 309 EXPECT_TRUE(
308 &failed)); 310 cert_db_->ImportCACerts(certs, NSSCertDatabase::TRUSTED_SSL, &failed));
309 311
310 EXPECT_EQ(0U, failed.size()); 312 EXPECT_EQ(0U, failed.size());
311 313
312 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 314 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle());
313 ASSERT_EQ(1U, cert_list.size()); 315 ASSERT_EQ(1U, cert_list.size());
314 scoped_refptr<X509Certificate> cert(cert_list[0]); 316 scoped_refptr<X509Certificate> cert(cert_list[0]);
315 EXPECT_EQ("Test Root CA", cert->subject().common_name); 317 EXPECT_EQ("Test Root CA", cert->subject().common_name);
316 318
317 EXPECT_EQ(NSSCertDatabase::TRUSTED_SSL, 319 EXPECT_EQ(NSSCertDatabase::TRUSTED_SSL,
318 cert_db_->GetCertTrust(cert.get(), CA_CERT)); 320 cert_db_->GetCertTrust(cert.get(), CA_CERT));
319 321
320 EXPECT_EQ(unsigned(CERTDB_VALID_CA | CERTDB_TRUSTED_CA | 322 EXPECT_EQ(
321 CERTDB_TRUSTED_CLIENT_CA), 323 unsigned(CERTDB_VALID_CA | CERTDB_TRUSTED_CA | CERTDB_TRUSTED_CLIENT_CA),
322 cert->os_cert_handle()->trust->sslFlags); 324 cert->os_cert_handle()->trust->sslFlags);
323 EXPECT_EQ(unsigned(CERTDB_VALID_CA), 325 EXPECT_EQ(unsigned(CERTDB_VALID_CA),
324 cert->os_cert_handle()->trust->emailFlags); 326 cert->os_cert_handle()->trust->emailFlags);
325 EXPECT_EQ(unsigned(CERTDB_VALID_CA), 327 EXPECT_EQ(unsigned(CERTDB_VALID_CA),
326 cert->os_cert_handle()->trust->objectSigningFlags); 328 cert->os_cert_handle()->trust->objectSigningFlags);
327 } 329 }
328 330
329 TEST_F(CertDatabaseNSSTest, ImportCACert_EmailTrust) { 331 TEST_F(CertDatabaseNSSTest, ImportCACert_EmailTrust) {
330 CertificateList certs = CreateCertificateListFromFile( 332 CertificateList certs =
331 GetTestCertsDirectory(), "root_ca_cert.pem", 333 CreateCertificateListFromFile(GetTestCertsDirectory(),
332 X509Certificate::FORMAT_AUTO); 334 "root_ca_cert.pem",
335 X509Certificate::FORMAT_AUTO);
333 ASSERT_EQ(1U, certs.size()); 336 ASSERT_EQ(1U, certs.size());
334 EXPECT_FALSE(certs[0]->os_cert_handle()->isperm); 337 EXPECT_FALSE(certs[0]->os_cert_handle()->isperm);
335 338
336 // Import it. 339 // Import it.
337 NSSCertDatabase::ImportCertFailureList failed; 340 NSSCertDatabase::ImportCertFailureList failed;
338 EXPECT_TRUE(cert_db_->ImportCACerts(certs, NSSCertDatabase::TRUSTED_EMAIL, 341 EXPECT_TRUE(
339 &failed)); 342 cert_db_->ImportCACerts(certs, NSSCertDatabase::TRUSTED_EMAIL, &failed));
340 343
341 EXPECT_EQ(0U, failed.size()); 344 EXPECT_EQ(0U, failed.size());
342 345
343 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 346 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle());
344 ASSERT_EQ(1U, cert_list.size()); 347 ASSERT_EQ(1U, cert_list.size());
345 scoped_refptr<X509Certificate> cert(cert_list[0]); 348 scoped_refptr<X509Certificate> cert(cert_list[0]);
346 EXPECT_EQ("Test Root CA", cert->subject().common_name); 349 EXPECT_EQ("Test Root CA", cert->subject().common_name);
347 350
348 EXPECT_EQ(NSSCertDatabase::TRUSTED_EMAIL, 351 EXPECT_EQ(NSSCertDatabase::TRUSTED_EMAIL,
349 cert_db_->GetCertTrust(cert.get(), CA_CERT)); 352 cert_db_->GetCertTrust(cert.get(), CA_CERT));
350 353
351 EXPECT_EQ(unsigned(CERTDB_VALID_CA), 354 EXPECT_EQ(unsigned(CERTDB_VALID_CA), cert->os_cert_handle()->trust->sslFlags);
352 cert->os_cert_handle()->trust->sslFlags); 355 EXPECT_EQ(
353 EXPECT_EQ(unsigned(CERTDB_VALID_CA | CERTDB_TRUSTED_CA | 356 unsigned(CERTDB_VALID_CA | CERTDB_TRUSTED_CA | CERTDB_TRUSTED_CLIENT_CA),
354 CERTDB_TRUSTED_CLIENT_CA), 357 cert->os_cert_handle()->trust->emailFlags);
355 cert->os_cert_handle()->trust->emailFlags);
356 EXPECT_EQ(unsigned(CERTDB_VALID_CA), 358 EXPECT_EQ(unsigned(CERTDB_VALID_CA),
357 cert->os_cert_handle()->trust->objectSigningFlags); 359 cert->os_cert_handle()->trust->objectSigningFlags);
358 } 360 }
359 361
360 TEST_F(CertDatabaseNSSTest, ImportCACert_ObjSignTrust) { 362 TEST_F(CertDatabaseNSSTest, ImportCACert_ObjSignTrust) {
361 CertificateList certs = CreateCertificateListFromFile( 363 CertificateList certs =
362 GetTestCertsDirectory(), "root_ca_cert.pem", 364 CreateCertificateListFromFile(GetTestCertsDirectory(),
363 X509Certificate::FORMAT_AUTO); 365 "root_ca_cert.pem",
366 X509Certificate::FORMAT_AUTO);
364 ASSERT_EQ(1U, certs.size()); 367 ASSERT_EQ(1U, certs.size());
365 EXPECT_FALSE(certs[0]->os_cert_handle()->isperm); 368 EXPECT_FALSE(certs[0]->os_cert_handle()->isperm);
366 369
367 // Import it. 370 // Import it.
368 NSSCertDatabase::ImportCertFailureList failed; 371 NSSCertDatabase::ImportCertFailureList failed;
369 EXPECT_TRUE(cert_db_->ImportCACerts(certs, NSSCertDatabase::TRUSTED_OBJ_SIGN, 372 EXPECT_TRUE(cert_db_->ImportCACerts(
370 &failed)); 373 certs, NSSCertDatabase::TRUSTED_OBJ_SIGN, &failed));
371 374
372 EXPECT_EQ(0U, failed.size()); 375 EXPECT_EQ(0U, failed.size());
373 376
374 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 377 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle());
375 ASSERT_EQ(1U, cert_list.size()); 378 ASSERT_EQ(1U, cert_list.size());
376 scoped_refptr<X509Certificate> cert(cert_list[0]); 379 scoped_refptr<X509Certificate> cert(cert_list[0]);
377 EXPECT_EQ("Test Root CA", cert->subject().common_name); 380 EXPECT_EQ("Test Root CA", cert->subject().common_name);
378 381
379 EXPECT_EQ(NSSCertDatabase::TRUSTED_OBJ_SIGN, 382 EXPECT_EQ(NSSCertDatabase::TRUSTED_OBJ_SIGN,
380 cert_db_->GetCertTrust(cert.get(), CA_CERT)); 383 cert_db_->GetCertTrust(cert.get(), CA_CERT));
381 384
382 EXPECT_EQ(unsigned(CERTDB_VALID_CA), 385 EXPECT_EQ(unsigned(CERTDB_VALID_CA), cert->os_cert_handle()->trust->sslFlags);
383 cert->os_cert_handle()->trust->sslFlags);
384 EXPECT_EQ(unsigned(CERTDB_VALID_CA), 386 EXPECT_EQ(unsigned(CERTDB_VALID_CA),
385 cert->os_cert_handle()->trust->emailFlags); 387 cert->os_cert_handle()->trust->emailFlags);
386 EXPECT_EQ(unsigned(CERTDB_VALID_CA | CERTDB_TRUSTED_CA | 388 EXPECT_EQ(
387 CERTDB_TRUSTED_CLIENT_CA), 389 unsigned(CERTDB_VALID_CA | CERTDB_TRUSTED_CA | CERTDB_TRUSTED_CLIENT_CA),
388 cert->os_cert_handle()->trust->objectSigningFlags); 390 cert->os_cert_handle()->trust->objectSigningFlags);
389 } 391 }
390 392
391 TEST_F(CertDatabaseNSSTest, ImportCA_NotCACert) { 393 TEST_F(CertDatabaseNSSTest, ImportCA_NotCACert) {
392 CertificateList certs = CreateCertificateListFromFile( 394 CertificateList certs = CreateCertificateListFromFile(
393 GetTestCertsDirectory(), "ok_cert.pem", 395 GetTestCertsDirectory(), "ok_cert.pem", X509Certificate::FORMAT_AUTO);
394 X509Certificate::FORMAT_AUTO);
395 ASSERT_EQ(1U, certs.size()); 396 ASSERT_EQ(1U, certs.size());
396 EXPECT_FALSE(certs[0]->os_cert_handle()->isperm); 397 EXPECT_FALSE(certs[0]->os_cert_handle()->isperm);
397 398
398 // Import it. 399 // Import it.
399 NSSCertDatabase::ImportCertFailureList failed; 400 NSSCertDatabase::ImportCertFailureList failed;
400 EXPECT_TRUE(cert_db_->ImportCACerts(certs, NSSCertDatabase::TRUSTED_SSL, 401 EXPECT_TRUE(
401 &failed)); 402 cert_db_->ImportCACerts(certs, NSSCertDatabase::TRUSTED_SSL, &failed));
402 ASSERT_EQ(1U, failed.size()); 403 ASSERT_EQ(1U, failed.size());
403 // Note: this compares pointers directly. It's okay in this case because 404 // Note: this compares pointers directly. It's okay in this case because
404 // ImportCACerts returns the same pointers that were passed in. In the 405 // ImportCACerts returns the same pointers that were passed in. In the
405 // general case IsSameOSCert should be used. 406 // general case IsSameOSCert should be used.
406 EXPECT_EQ(certs[0], failed[0].certificate); 407 EXPECT_EQ(certs[0], failed[0].certificate);
407 EXPECT_EQ(ERR_IMPORT_CA_CERT_NOT_CA, failed[0].net_error); 408 EXPECT_EQ(ERR_IMPORT_CA_CERT_NOT_CA, failed[0].net_error);
408 409
409 EXPECT_EQ(0U, ListCertsInSlot(slot_->os_module_handle()).size()); 410 EXPECT_EQ(0U, ListCertsInSlot(slot_->os_module_handle()).size());
410 } 411 }
411 412
412 TEST_F(CertDatabaseNSSTest, ImportCACertHierarchy) { 413 TEST_F(CertDatabaseNSSTest, ImportCACertHierarchy) {
413 CertificateList certs; 414 CertificateList certs;
414 ASSERT_TRUE(ReadCertIntoList("dod_root_ca_2_cert.der", &certs)); 415 ASSERT_TRUE(ReadCertIntoList("dod_root_ca_2_cert.der", &certs));
415 ASSERT_TRUE(ReadCertIntoList("dod_ca_17_cert.der", &certs)); 416 ASSERT_TRUE(ReadCertIntoList("dod_ca_17_cert.der", &certs));
416 ASSERT_TRUE(ReadCertIntoList("www_us_army_mil_cert.der", &certs)); 417 ASSERT_TRUE(ReadCertIntoList("www_us_army_mil_cert.der", &certs));
417 418
418 // Import it. 419 // Import it.
419 NSSCertDatabase::ImportCertFailureList failed; 420 NSSCertDatabase::ImportCertFailureList failed;
420 // Have to specify email trust for the cert verification of the child cert to 421 // Have to specify email trust for the cert verification of the child cert to
421 // work (see 422 // work (see
422 // http://mxr.mozilla.org/mozilla/source/security/nss/lib/certhigh/certvfy.c#7 52 423 // http://mxr.mozilla.org/mozilla/source/security/nss/lib/certhigh/certvfy.c#7 52
423 // "XXX This choice of trustType seems arbitrary.") 424 // "XXX This choice of trustType seems arbitrary.")
424 EXPECT_TRUE(cert_db_->ImportCACerts( 425 EXPECT_TRUE(cert_db_->ImportCACerts(
425 certs, NSSCertDatabase::TRUSTED_SSL | NSSCertDatabase::TRUSTED_EMAIL, 426 certs,
427 NSSCertDatabase::TRUSTED_SSL | NSSCertDatabase::TRUSTED_EMAIL,
426 &failed)); 428 &failed));
427 429
428 ASSERT_EQ(2U, failed.size()); 430 ASSERT_EQ(2U, failed.size());
429 EXPECT_EQ("DOD CA-17", failed[0].certificate->subject().common_name); 431 EXPECT_EQ("DOD CA-17", failed[0].certificate->subject().common_name);
430 EXPECT_EQ(ERR_FAILED, failed[0].net_error); // The certificate expired. 432 EXPECT_EQ(ERR_FAILED, failed[0].net_error); // The certificate expired.
431 EXPECT_EQ("www.us.army.mil", failed[1].certificate->subject().common_name); 433 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); 434 EXPECT_EQ(ERR_IMPORT_CA_CERT_NOT_CA, failed[1].net_error);
433 435
434 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 436 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle());
435 ASSERT_EQ(1U, cert_list.size()); 437 ASSERT_EQ(1U, cert_list.size());
436 EXPECT_EQ("DoD Root CA 2", cert_list[0]->subject().common_name); 438 EXPECT_EQ("DoD Root CA 2", cert_list[0]->subject().common_name);
437 } 439 }
438 440
439 TEST_F(CertDatabaseNSSTest, ImportCACertHierarchyDupeRoot) { 441 TEST_F(CertDatabaseNSSTest, ImportCACertHierarchyDupeRoot) {
440 CertificateList certs; 442 CertificateList certs;
441 ASSERT_TRUE(ReadCertIntoList("dod_root_ca_2_cert.der", &certs)); 443 ASSERT_TRUE(ReadCertIntoList("dod_root_ca_2_cert.der", &certs));
442 444
443 // First import just the root. 445 // First import just the root.
444 NSSCertDatabase::ImportCertFailureList failed; 446 NSSCertDatabase::ImportCertFailureList failed;
445 EXPECT_TRUE(cert_db_->ImportCACerts( 447 EXPECT_TRUE(cert_db_->ImportCACerts(
446 certs, NSSCertDatabase::TRUSTED_SSL | NSSCertDatabase::TRUSTED_EMAIL, 448 certs,
449 NSSCertDatabase::TRUSTED_SSL | NSSCertDatabase::TRUSTED_EMAIL,
447 &failed)); 450 &failed));
448 451
449 EXPECT_EQ(0U, failed.size()); 452 EXPECT_EQ(0U, failed.size());
450 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 453 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle());
451 ASSERT_EQ(1U, cert_list.size()); 454 ASSERT_EQ(1U, cert_list.size());
452 EXPECT_EQ("DoD Root CA 2", cert_list[0]->subject().common_name); 455 EXPECT_EQ("DoD Root CA 2", cert_list[0]->subject().common_name);
453 456
454 ASSERT_TRUE(ReadCertIntoList("dod_ca_17_cert.der", &certs)); 457 ASSERT_TRUE(ReadCertIntoList("dod_ca_17_cert.der", &certs));
455 ASSERT_TRUE(ReadCertIntoList("www_us_army_mil_cert.der", &certs)); 458 ASSERT_TRUE(ReadCertIntoList("www_us_army_mil_cert.der", &certs));
456 459
457 // Now import with the other certs in the list too. Even though the root is 460 // Now import with the other certs in the list too. Even though the root is
458 // already present, we should still import the rest. 461 // already present, we should still import the rest.
459 failed.clear(); 462 failed.clear();
460 EXPECT_TRUE(cert_db_->ImportCACerts( 463 EXPECT_TRUE(cert_db_->ImportCACerts(
461 certs, NSSCertDatabase::TRUSTED_SSL | NSSCertDatabase::TRUSTED_EMAIL, 464 certs,
465 NSSCertDatabase::TRUSTED_SSL | NSSCertDatabase::TRUSTED_EMAIL,
462 &failed)); 466 &failed));
463 467
464 ASSERT_EQ(3U, failed.size()); 468 ASSERT_EQ(3U, failed.size());
465 EXPECT_EQ("DoD Root CA 2", failed[0].certificate->subject().common_name); 469 EXPECT_EQ("DoD Root CA 2", failed[0].certificate->subject().common_name);
466 EXPECT_EQ(ERR_IMPORT_CERT_ALREADY_EXISTS, failed[0].net_error); 470 EXPECT_EQ(ERR_IMPORT_CERT_ALREADY_EXISTS, failed[0].net_error);
467 EXPECT_EQ("DOD CA-17", failed[1].certificate->subject().common_name); 471 EXPECT_EQ("DOD CA-17", failed[1].certificate->subject().common_name);
468 EXPECT_EQ(ERR_FAILED, failed[1].net_error); // The certificate expired. 472 EXPECT_EQ(ERR_FAILED, failed[1].net_error); // The certificate expired.
469 EXPECT_EQ("www.us.army.mil", failed[2].certificate->subject().common_name); 473 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); 474 EXPECT_EQ(ERR_IMPORT_CA_CERT_NOT_CA, failed[2].net_error);
471 475
472 cert_list = ListCertsInSlot(slot_->os_module_handle()); 476 cert_list = ListCertsInSlot(slot_->os_module_handle());
473 ASSERT_EQ(1U, cert_list.size()); 477 ASSERT_EQ(1U, cert_list.size());
474 EXPECT_EQ("DoD Root CA 2", cert_list[0]->subject().common_name); 478 EXPECT_EQ("DoD Root CA 2", cert_list[0]->subject().common_name);
475 } 479 }
476 480
477 TEST_F(CertDatabaseNSSTest, ImportCACertHierarchyUntrusted) { 481 TEST_F(CertDatabaseNSSTest, ImportCACertHierarchyUntrusted) {
478 CertificateList certs; 482 CertificateList certs;
479 ASSERT_TRUE(ReadCertIntoList("dod_root_ca_2_cert.der", &certs)); 483 ASSERT_TRUE(ReadCertIntoList("dod_root_ca_2_cert.der", &certs));
480 ASSERT_TRUE(ReadCertIntoList("dod_ca_17_cert.der", &certs)); 484 ASSERT_TRUE(ReadCertIntoList("dod_ca_17_cert.der", &certs));
481 485
482 // Import it. 486 // Import it.
483 NSSCertDatabase::ImportCertFailureList failed; 487 NSSCertDatabase::ImportCertFailureList failed;
484 EXPECT_TRUE(cert_db_->ImportCACerts(certs, NSSCertDatabase::TRUST_DEFAULT, 488 EXPECT_TRUE(
485 &failed)); 489 cert_db_->ImportCACerts(certs, NSSCertDatabase::TRUST_DEFAULT, &failed));
486 490
487 ASSERT_EQ(1U, failed.size()); 491 ASSERT_EQ(1U, failed.size());
488 EXPECT_EQ("DOD CA-17", failed[0].certificate->subject().common_name); 492 EXPECT_EQ("DOD CA-17", failed[0].certificate->subject().common_name);
489 // TODO(mattm): should check for net error equivalent of 493 // TODO(mattm): should check for net error equivalent of
490 // SEC_ERROR_UNTRUSTED_ISSUER 494 // SEC_ERROR_UNTRUSTED_ISSUER
491 EXPECT_EQ(ERR_FAILED, failed[0].net_error); 495 EXPECT_EQ(ERR_FAILED, failed[0].net_error);
492 496
493 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 497 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle());
494 ASSERT_EQ(1U, cert_list.size()); 498 ASSERT_EQ(1U, cert_list.size());
495 EXPECT_EQ("DoD Root CA 2", cert_list[0]->subject().common_name); 499 EXPECT_EQ("DoD Root CA 2", cert_list[0]->subject().common_name);
496 } 500 }
497 501
498 TEST_F(CertDatabaseNSSTest, ImportCACertHierarchyTree) { 502 TEST_F(CertDatabaseNSSTest, ImportCACertHierarchyTree) {
499 CertificateList certs; 503 CertificateList certs;
500 ASSERT_TRUE(ReadCertIntoList("dod_root_ca_2_cert.der", &certs)); 504 ASSERT_TRUE(ReadCertIntoList("dod_root_ca_2_cert.der", &certs));
501 ASSERT_TRUE(ReadCertIntoList("dod_ca_13_cert.der", &certs)); 505 ASSERT_TRUE(ReadCertIntoList("dod_ca_13_cert.der", &certs));
502 ASSERT_TRUE(ReadCertIntoList("dod_ca_17_cert.der", &certs)); 506 ASSERT_TRUE(ReadCertIntoList("dod_ca_17_cert.der", &certs));
503 507
504 // Import it. 508 // Import it.
505 NSSCertDatabase::ImportCertFailureList failed; 509 NSSCertDatabase::ImportCertFailureList failed;
506 EXPECT_TRUE(cert_db_->ImportCACerts( 510 EXPECT_TRUE(cert_db_->ImportCACerts(
507 certs, NSSCertDatabase::TRUSTED_SSL | NSSCertDatabase::TRUSTED_EMAIL, 511 certs,
512 NSSCertDatabase::TRUSTED_SSL | NSSCertDatabase::TRUSTED_EMAIL,
508 &failed)); 513 &failed));
509 514
510 EXPECT_EQ(2U, failed.size()); 515 EXPECT_EQ(2U, failed.size());
511 EXPECT_EQ("DOD CA-13", failed[0].certificate->subject().common_name); 516 EXPECT_EQ("DOD CA-13", failed[0].certificate->subject().common_name);
512 EXPECT_EQ(ERR_FAILED, failed[0].net_error); // The certificate expired. 517 EXPECT_EQ(ERR_FAILED, failed[0].net_error); // The certificate expired.
513 EXPECT_EQ("DOD CA-17", failed[1].certificate->subject().common_name); 518 EXPECT_EQ("DOD CA-17", failed[1].certificate->subject().common_name);
514 EXPECT_EQ(ERR_FAILED, failed[1].net_error); // The certificate expired. 519 EXPECT_EQ(ERR_FAILED, failed[1].net_error); // The certificate expired.
515 520
516 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 521 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle());
517 ASSERT_EQ(1U, cert_list.size()); 522 ASSERT_EQ(1U, cert_list.size());
518 EXPECT_EQ("DoD Root CA 2", cert_list[0]->subject().common_name); 523 EXPECT_EQ("DoD Root CA 2", cert_list[0]->subject().common_name);
519 } 524 }
520 525
521 TEST_F(CertDatabaseNSSTest, ImportCACertNotHierarchy) { 526 TEST_F(CertDatabaseNSSTest, ImportCACertNotHierarchy) {
522 CertificateList certs = CreateCertificateListFromFile( 527 CertificateList certs =
523 GetTestCertsDirectory(), "root_ca_cert.pem", 528 CreateCertificateListFromFile(GetTestCertsDirectory(),
524 X509Certificate::FORMAT_AUTO); 529 "root_ca_cert.pem",
530 X509Certificate::FORMAT_AUTO);
525 ASSERT_EQ(1U, certs.size()); 531 ASSERT_EQ(1U, certs.size());
526 ASSERT_TRUE(ReadCertIntoList("dod_ca_13_cert.der", &certs)); 532 ASSERT_TRUE(ReadCertIntoList("dod_ca_13_cert.der", &certs));
527 ASSERT_TRUE(ReadCertIntoList("dod_ca_17_cert.der", &certs)); 533 ASSERT_TRUE(ReadCertIntoList("dod_ca_17_cert.der", &certs));
528 534
529 // Import it. 535 // Import it.
530 NSSCertDatabase::ImportCertFailureList failed; 536 NSSCertDatabase::ImportCertFailureList failed;
531 EXPECT_TRUE(cert_db_->ImportCACerts( 537 EXPECT_TRUE(cert_db_->ImportCACerts(certs,
532 certs, NSSCertDatabase::TRUSTED_SSL | NSSCertDatabase::TRUSTED_EMAIL | 538 NSSCertDatabase::TRUSTED_SSL |
533 NSSCertDatabase::TRUSTED_OBJ_SIGN, &failed)); 539 NSSCertDatabase::TRUSTED_EMAIL |
540 NSSCertDatabase::TRUSTED_OBJ_SIGN,
541 &failed));
534 542
535 ASSERT_EQ(2U, failed.size()); 543 ASSERT_EQ(2U, failed.size());
536 // TODO(mattm): should check for net error equivalent of 544 // TODO(mattm): should check for net error equivalent of
537 // SEC_ERROR_UNKNOWN_ISSUER 545 // SEC_ERROR_UNKNOWN_ISSUER
538 EXPECT_EQ("DOD CA-13", failed[0].certificate->subject().common_name); 546 EXPECT_EQ("DOD CA-13", failed[0].certificate->subject().common_name);
539 EXPECT_EQ(ERR_FAILED, failed[0].net_error); 547 EXPECT_EQ(ERR_FAILED, failed[0].net_error);
540 EXPECT_EQ("DOD CA-17", failed[1].certificate->subject().common_name); 548 EXPECT_EQ("DOD CA-17", failed[1].certificate->subject().common_name);
541 EXPECT_EQ(ERR_FAILED, failed[1].net_error); 549 EXPECT_EQ(ERR_FAILED, failed[1].net_error);
542 550
543 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 551 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle());
544 ASSERT_EQ(1U, cert_list.size()); 552 ASSERT_EQ(1U, cert_list.size());
545 EXPECT_EQ("Test Root CA", cert_list[0]->subject().common_name); 553 EXPECT_EQ("Test Root CA", cert_list[0]->subject().common_name);
546 } 554 }
547 555
548 // http://crbug.com/108009 - Disabled, as google.chain.pem is an expired 556 // http://crbug.com/108009 - Disabled, as google.chain.pem is an expired
549 // certificate. 557 // certificate.
550 TEST_F(CertDatabaseNSSTest, DISABLED_ImportServerCert) { 558 TEST_F(CertDatabaseNSSTest, DISABLED_ImportServerCert) {
551 // Need to import intermediate cert for the verify of google cert, otherwise 559 // 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 560 // it will try to fetch it automatically with cert_pi_useAIACertFetch, which
553 // will cause OCSPCreateSession on the main thread, which is not allowed. 561 // will cause OCSPCreateSession on the main thread, which is not allowed.
554 CertificateList certs = CreateCertificateListFromFile( 562 CertificateList certs =
555 GetTestCertsDirectory(), "google.chain.pem", 563 CreateCertificateListFromFile(GetTestCertsDirectory(),
556 X509Certificate::FORMAT_AUTO); 564 "google.chain.pem",
565 X509Certificate::FORMAT_AUTO);
557 ASSERT_EQ(2U, certs.size()); 566 ASSERT_EQ(2U, certs.size());
558 567
559 NSSCertDatabase::ImportCertFailureList failed; 568 NSSCertDatabase::ImportCertFailureList failed;
560 EXPECT_TRUE(cert_db_->ImportServerCert(certs, NSSCertDatabase::TRUST_DEFAULT, 569 EXPECT_TRUE(cert_db_->ImportServerCert(
561 &failed)); 570 certs, NSSCertDatabase::TRUST_DEFAULT, &failed));
562 571
563 EXPECT_EQ(0U, failed.size()); 572 EXPECT_EQ(0U, failed.size());
564 573
565 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 574 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle());
566 ASSERT_EQ(2U, cert_list.size()); 575 ASSERT_EQ(2U, cert_list.size());
567 scoped_refptr<X509Certificate> goog_cert(cert_list[0]); 576 scoped_refptr<X509Certificate> goog_cert(cert_list[0]);
568 scoped_refptr<X509Certificate> thawte_cert(cert_list[1]); 577 scoped_refptr<X509Certificate> thawte_cert(cert_list[1]);
569 EXPECT_EQ("www.google.com", goog_cert->subject().common_name); 578 EXPECT_EQ("www.google.com", goog_cert->subject().common_name);
570 EXPECT_EQ("Thawte SGC CA", thawte_cert->subject().common_name); 579 EXPECT_EQ("Thawte SGC CA", thawte_cert->subject().common_name);
571 580
(...skipping 13 matching lines...) Expand all
585 &verify_result); 594 &verify_result);
586 EXPECT_EQ(OK, error); 595 EXPECT_EQ(OK, error);
587 EXPECT_EQ(0U, verify_result.cert_status); 596 EXPECT_EQ(0U, verify_result.cert_status);
588 } 597 }
589 598
590 TEST_F(CertDatabaseNSSTest, ImportServerCert_SelfSigned) { 599 TEST_F(CertDatabaseNSSTest, ImportServerCert_SelfSigned) {
591 CertificateList certs; 600 CertificateList certs;
592 ASSERT_TRUE(ReadCertIntoList("punycodetest.der", &certs)); 601 ASSERT_TRUE(ReadCertIntoList("punycodetest.der", &certs));
593 602
594 NSSCertDatabase::ImportCertFailureList failed; 603 NSSCertDatabase::ImportCertFailureList failed;
595 EXPECT_TRUE(cert_db_->ImportServerCert(certs, NSSCertDatabase::TRUST_DEFAULT, 604 EXPECT_TRUE(cert_db_->ImportServerCert(
596 &failed)); 605 certs, NSSCertDatabase::TRUST_DEFAULT, &failed));
597 606
598 EXPECT_EQ(0U, failed.size()); 607 EXPECT_EQ(0U, failed.size());
599 608
600 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 609 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle());
601 ASSERT_EQ(1U, cert_list.size()); 610 ASSERT_EQ(1U, cert_list.size());
602 scoped_refptr<X509Certificate> puny_cert(cert_list[0]); 611 scoped_refptr<X509Certificate> puny_cert(cert_list[0]);
603 612
604 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, 613 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT,
605 cert_db_->GetCertTrust(puny_cert.get(), SERVER_CERT)); 614 cert_db_->GetCertTrust(puny_cert.get(), SERVER_CERT));
606 EXPECT_EQ(0U, puny_cert->os_cert_handle()->trust->sslFlags); 615 EXPECT_EQ(0U, puny_cert->os_cert_handle()->trust->sslFlags);
607 616
608 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); 617 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS());
609 int flags = 0; 618 int flags = 0;
610 CertVerifyResult verify_result; 619 CertVerifyResult verify_result;
611 int error = verify_proc->Verify(puny_cert.get(), 620 int error = verify_proc->Verify(puny_cert.get(),
612 "xn--wgv71a119e.com", 621 "xn--wgv71a119e.com",
613 flags, 622 flags,
614 NULL, 623 NULL,
615 empty_cert_list_, 624 empty_cert_list_,
616 &verify_result); 625 &verify_result);
617 EXPECT_EQ(ERR_CERT_AUTHORITY_INVALID, error); 626 EXPECT_EQ(ERR_CERT_AUTHORITY_INVALID, error);
618 EXPECT_EQ(CERT_STATUS_AUTHORITY_INVALID, verify_result.cert_status); 627 EXPECT_EQ(CERT_STATUS_AUTHORITY_INVALID, verify_result.cert_status);
619 } 628 }
620 629
621 TEST_F(CertDatabaseNSSTest, ImportServerCert_SelfSigned_Trusted) { 630 TEST_F(CertDatabaseNSSTest, ImportServerCert_SelfSigned_Trusted) {
622 CertificateList certs; 631 CertificateList certs;
623 ASSERT_TRUE(ReadCertIntoList("punycodetest.der", &certs)); 632 ASSERT_TRUE(ReadCertIntoList("punycodetest.der", &certs));
624 633
625 NSSCertDatabase::ImportCertFailureList failed; 634 NSSCertDatabase::ImportCertFailureList failed;
626 EXPECT_TRUE(cert_db_->ImportServerCert(certs, NSSCertDatabase::TRUSTED_SSL, 635 EXPECT_TRUE(
627 &failed)); 636 cert_db_->ImportServerCert(certs, NSSCertDatabase::TRUSTED_SSL, &failed));
628 637
629 EXPECT_EQ(0U, failed.size()); 638 EXPECT_EQ(0U, failed.size());
630 639
631 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); 640 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle());
632 ASSERT_EQ(1U, cert_list.size()); 641 ASSERT_EQ(1U, cert_list.size());
633 scoped_refptr<X509Certificate> puny_cert(cert_list[0]); 642 scoped_refptr<X509Certificate> puny_cert(cert_list[0]);
634 643
635 EXPECT_EQ(NSSCertDatabase::TRUSTED_SSL, 644 EXPECT_EQ(NSSCertDatabase::TRUSTED_SSL,
636 cert_db_->GetCertTrust(puny_cert.get(), SERVER_CERT)); 645 cert_db_->GetCertTrust(puny_cert.get(), SERVER_CERT));
637 EXPECT_EQ(unsigned(CERTDB_TRUSTED | CERTDB_TERMINAL_RECORD), 646 EXPECT_EQ(unsigned(CERTDB_TRUSTED | CERTDB_TERMINAL_RECORD),
638 puny_cert->os_cert_handle()->trust->sslFlags); 647 puny_cert->os_cert_handle()->trust->sslFlags);
639 648
640 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); 649 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS());
641 int flags = 0; 650 int flags = 0;
642 CertVerifyResult verify_result; 651 CertVerifyResult verify_result;
643 int error = verify_proc->Verify(puny_cert.get(), 652 int error = verify_proc->Verify(puny_cert.get(),
644 "xn--wgv71a119e.com", 653 "xn--wgv71a119e.com",
645 flags, 654 flags,
646 NULL, 655 NULL,
647 empty_cert_list_, 656 empty_cert_list_,
648 &verify_result); 657 &verify_result);
649 EXPECT_EQ(OK, error); 658 EXPECT_EQ(OK, error);
650 EXPECT_EQ(0U, verify_result.cert_status); 659 EXPECT_EQ(0U, verify_result.cert_status);
651 } 660 }
652 661
653 TEST_F(CertDatabaseNSSTest, ImportCaAndServerCert) { 662 TEST_F(CertDatabaseNSSTest, ImportCaAndServerCert) {
654 CertificateList ca_certs = CreateCertificateListFromFile( 663 CertificateList ca_certs =
655 GetTestCertsDirectory(), "root_ca_cert.pem", 664 CreateCertificateListFromFile(GetTestCertsDirectory(),
656 X509Certificate::FORMAT_AUTO); 665 "root_ca_cert.pem",
666 X509Certificate::FORMAT_AUTO);
657 ASSERT_EQ(1U, ca_certs.size()); 667 ASSERT_EQ(1U, ca_certs.size());
658 668
659 // Import CA cert and trust it. 669 // Import CA cert and trust it.
660 NSSCertDatabase::ImportCertFailureList failed; 670 NSSCertDatabase::ImportCertFailureList failed;
661 EXPECT_TRUE(cert_db_->ImportCACerts(ca_certs, NSSCertDatabase::TRUSTED_SSL, 671 EXPECT_TRUE(
662 &failed)); 672 cert_db_->ImportCACerts(ca_certs, NSSCertDatabase::TRUSTED_SSL, &failed));
663 EXPECT_EQ(0U, failed.size()); 673 EXPECT_EQ(0U, failed.size());
664 674
665 CertificateList certs = CreateCertificateListFromFile( 675 CertificateList certs = CreateCertificateListFromFile(
666 GetTestCertsDirectory(), "ok_cert.pem", 676 GetTestCertsDirectory(), "ok_cert.pem", X509Certificate::FORMAT_AUTO);
667 X509Certificate::FORMAT_AUTO);
668 ASSERT_EQ(1U, certs.size()); 677 ASSERT_EQ(1U, certs.size());
669 678
670 // Import server cert with default trust. 679 // Import server cert with default trust.
671 EXPECT_TRUE(cert_db_->ImportServerCert(certs, NSSCertDatabase::TRUST_DEFAULT, 680 EXPECT_TRUE(cert_db_->ImportServerCert(
672 &failed)); 681 certs, NSSCertDatabase::TRUST_DEFAULT, &failed));
673 EXPECT_EQ(0U, failed.size()); 682 EXPECT_EQ(0U, failed.size());
674 683
675 // Server cert should verify. 684 // Server cert should verify.
676 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); 685 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS());
677 int flags = 0; 686 int flags = 0;
678 CertVerifyResult verify_result; 687 CertVerifyResult verify_result;
679 int error = verify_proc->Verify(certs[0].get(), 688 int error = verify_proc->Verify(certs[0].get(),
680 "127.0.0.1", 689 "127.0.0.1",
681 flags, 690 flags,
682 NULL, 691 NULL,
683 empty_cert_list_, 692 empty_cert_list_,
684 &verify_result); 693 &verify_result);
685 EXPECT_EQ(OK, error); 694 EXPECT_EQ(OK, error);
686 EXPECT_EQ(0U, verify_result.cert_status); 695 EXPECT_EQ(0U, verify_result.cert_status);
687 } 696 }
688 697
689 TEST_F(CertDatabaseNSSTest, ImportCaAndServerCert_DistrustServer) { 698 TEST_F(CertDatabaseNSSTest, ImportCaAndServerCert_DistrustServer) {
690 CertificateList ca_certs = CreateCertificateListFromFile( 699 CertificateList ca_certs =
691 GetTestCertsDirectory(), "root_ca_cert.pem", 700 CreateCertificateListFromFile(GetTestCertsDirectory(),
692 X509Certificate::FORMAT_AUTO); 701 "root_ca_cert.pem",
702 X509Certificate::FORMAT_AUTO);
693 ASSERT_EQ(1U, ca_certs.size()); 703 ASSERT_EQ(1U, ca_certs.size());
694 704
695 // Import CA cert and trust it. 705 // Import CA cert and trust it.
696 NSSCertDatabase::ImportCertFailureList failed; 706 NSSCertDatabase::ImportCertFailureList failed;
697 EXPECT_TRUE(cert_db_->ImportCACerts(ca_certs, NSSCertDatabase::TRUSTED_SSL, 707 EXPECT_TRUE(
698 &failed)); 708 cert_db_->ImportCACerts(ca_certs, NSSCertDatabase::TRUSTED_SSL, &failed));
699 EXPECT_EQ(0U, failed.size()); 709 EXPECT_EQ(0U, failed.size());
700 710
701 CertificateList certs = CreateCertificateListFromFile( 711 CertificateList certs = CreateCertificateListFromFile(
702 GetTestCertsDirectory(), "ok_cert.pem", 712 GetTestCertsDirectory(), "ok_cert.pem", X509Certificate::FORMAT_AUTO);
703 X509Certificate::FORMAT_AUTO);
704 ASSERT_EQ(1U, certs.size()); 713 ASSERT_EQ(1U, certs.size());
705 714
706 // Import server cert without inheriting trust from issuer (explicit 715 // Import server cert without inheriting trust from issuer (explicit
707 // distrust). 716 // distrust).
708 EXPECT_TRUE(cert_db_->ImportServerCert( 717 EXPECT_TRUE(cert_db_->ImportServerCert(
709 certs, NSSCertDatabase::DISTRUSTED_SSL, &failed)); 718 certs, NSSCertDatabase::DISTRUSTED_SSL, &failed));
710 EXPECT_EQ(0U, failed.size()); 719 EXPECT_EQ(0U, failed.size());
711 EXPECT_EQ(NSSCertDatabase::DISTRUSTED_SSL, 720 EXPECT_EQ(NSSCertDatabase::DISTRUSTED_SSL,
712 cert_db_->GetCertTrust(certs[0].get(), SERVER_CERT)); 721 cert_db_->GetCertTrust(certs[0].get(), SERVER_CERT));
713 722
714 EXPECT_EQ(unsigned(CERTDB_TERMINAL_RECORD), 723 EXPECT_EQ(unsigned(CERTDB_TERMINAL_RECORD),
715 certs[0]->os_cert_handle()->trust->sslFlags); 724 certs[0]->os_cert_handle()->trust->sslFlags);
716 725
717 // Server cert should fail to verify. 726 // Server cert should fail to verify.
718 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); 727 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS());
719 int flags = 0; 728 int flags = 0;
720 CertVerifyResult verify_result; 729 CertVerifyResult verify_result;
721 int error = verify_proc->Verify(certs[0].get(), 730 int error = verify_proc->Verify(certs[0].get(),
722 "127.0.0.1", 731 "127.0.0.1",
723 flags, 732 flags,
724 NULL, 733 NULL,
725 empty_cert_list_, 734 empty_cert_list_,
726 &verify_result); 735 &verify_result);
727 EXPECT_EQ(ERR_CERT_REVOKED, error); 736 EXPECT_EQ(ERR_CERT_REVOKED, error);
728 EXPECT_EQ(CERT_STATUS_REVOKED, verify_result.cert_status); 737 EXPECT_EQ(CERT_STATUS_REVOKED, verify_result.cert_status);
729 } 738 }
730 739
731 TEST_F(CertDatabaseNSSTest, TrustIntermediateCa) { 740 TEST_F(CertDatabaseNSSTest, TrustIntermediateCa) {
732 CertificateList ca_certs = CreateCertificateListFromFile( 741 CertificateList ca_certs =
733 GetTestCertsDirectory(), "2048-rsa-root.pem", 742 CreateCertificateListFromFile(GetTestCertsDirectory(),
734 X509Certificate::FORMAT_AUTO); 743 "2048-rsa-root.pem",
744 X509Certificate::FORMAT_AUTO);
735 ASSERT_EQ(1U, ca_certs.size()); 745 ASSERT_EQ(1U, ca_certs.size());
736 746
737 // Import Root CA cert and distrust it. 747 // Import Root CA cert and distrust it.
738 NSSCertDatabase::ImportCertFailureList failed; 748 NSSCertDatabase::ImportCertFailureList failed;
739 EXPECT_TRUE(cert_db_->ImportCACerts(ca_certs, NSSCertDatabase::DISTRUSTED_SSL, 749 EXPECT_TRUE(cert_db_->ImportCACerts(
740 &failed)); 750 ca_certs, NSSCertDatabase::DISTRUSTED_SSL, &failed));
741 EXPECT_EQ(0U, failed.size()); 751 EXPECT_EQ(0U, failed.size());
742 752
743 CertificateList intermediate_certs = CreateCertificateListFromFile( 753 CertificateList intermediate_certs =
744 GetTestCertsDirectory(), "2048-rsa-intermediate.pem", 754 CreateCertificateListFromFile(GetTestCertsDirectory(),
745 X509Certificate::FORMAT_AUTO); 755 "2048-rsa-intermediate.pem",
756 X509Certificate::FORMAT_AUTO);
746 ASSERT_EQ(1U, intermediate_certs.size()); 757 ASSERT_EQ(1U, intermediate_certs.size());
747 758
748 // Import Intermediate CA cert and trust it. 759 // Import Intermediate CA cert and trust it.
749 EXPECT_TRUE(cert_db_->ImportCACerts(intermediate_certs, 760 EXPECT_TRUE(cert_db_->ImportCACerts(
750 NSSCertDatabase::TRUSTED_SSL, &failed)); 761 intermediate_certs, NSSCertDatabase::TRUSTED_SSL, &failed));
751 EXPECT_EQ(0U, failed.size()); 762 EXPECT_EQ(0U, failed.size());
752 763
753 CertificateList certs = CreateCertificateListFromFile( 764 CertificateList certs =
754 GetTestCertsDirectory(), "2048-rsa-ee-by-2048-rsa-intermediate.pem", 765 CreateCertificateListFromFile(GetTestCertsDirectory(),
755 X509Certificate::FORMAT_AUTO); 766 "2048-rsa-ee-by-2048-rsa-intermediate.pem",
767 X509Certificate::FORMAT_AUTO);
756 ASSERT_EQ(1U, certs.size()); 768 ASSERT_EQ(1U, certs.size());
757 769
758 // Import server cert with default trust. 770 // Import server cert with default trust.
759 EXPECT_TRUE(cert_db_->ImportServerCert( 771 EXPECT_TRUE(cert_db_->ImportServerCert(
760 certs, NSSCertDatabase::TRUST_DEFAULT, &failed)); 772 certs, NSSCertDatabase::TRUST_DEFAULT, &failed));
761 EXPECT_EQ(0U, failed.size()); 773 EXPECT_EQ(0U, failed.size());
762 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, 774 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT,
763 cert_db_->GetCertTrust(certs[0].get(), SERVER_CERT)); 775 cert_db_->GetCertTrust(certs[0].get(), SERVER_CERT));
764 776
765 // Server cert should verify. 777 // Server cert should verify.
(...skipping 18 matching lines...) Expand all
784 unsigned(CERTDB_VALID_CA | CERTDB_TRUSTED_CA | CERTDB_TRUSTED_CLIENT_CA), 796 unsigned(CERTDB_VALID_CA | CERTDB_TRUSTED_CA | CERTDB_TRUSTED_CLIENT_CA),
785 ca_certs[0]->os_cert_handle()->trust->sslFlags); 797 ca_certs[0]->os_cert_handle()->trust->sslFlags);
786 EXPECT_EQ(unsigned(CERTDB_VALID_CA), 798 EXPECT_EQ(unsigned(CERTDB_VALID_CA),
787 ca_certs[0]->os_cert_handle()->trust->emailFlags); 799 ca_certs[0]->os_cert_handle()->trust->emailFlags);
788 EXPECT_EQ(unsigned(CERTDB_VALID_CA), 800 EXPECT_EQ(unsigned(CERTDB_VALID_CA),
789 ca_certs[0]->os_cert_handle()->trust->objectSigningFlags); 801 ca_certs[0]->os_cert_handle()->trust->objectSigningFlags);
790 EXPECT_EQ(unsigned(CERTDB_TERMINAL_RECORD), 802 EXPECT_EQ(unsigned(CERTDB_TERMINAL_RECORD),
791 intermediate_certs[0]->os_cert_handle()->trust->sslFlags); 803 intermediate_certs[0]->os_cert_handle()->trust->sslFlags);
792 EXPECT_EQ(unsigned(CERTDB_VALID_CA), 804 EXPECT_EQ(unsigned(CERTDB_VALID_CA),
793 intermediate_certs[0]->os_cert_handle()->trust->emailFlags); 805 intermediate_certs[0]->os_cert_handle()->trust->emailFlags);
794 EXPECT_EQ( 806 EXPECT_EQ(unsigned(CERTDB_VALID_CA),
795 unsigned(CERTDB_VALID_CA), 807 intermediate_certs[0]->os_cert_handle()->trust->objectSigningFlags);
796 intermediate_certs[0]->os_cert_handle()->trust->objectSigningFlags);
797 808
798 // Server cert should fail to verify. 809 // Server cert should fail to verify.
799 CertVerifyResult verify_result2; 810 CertVerifyResult verify_result2;
800 error = verify_proc->Verify(certs[0].get(), 811 error = verify_proc->Verify(certs[0].get(),
801 "127.0.0.1", 812 "127.0.0.1",
802 flags, 813 flags,
803 NULL, 814 NULL,
804 empty_cert_list_, 815 empty_cert_list_,
805 &verify_result2); 816 &verify_result2);
806 EXPECT_EQ(ERR_CERT_REVOKED, error); 817 EXPECT_EQ(ERR_CERT_REVOKED, error);
807 EXPECT_EQ(CERT_STATUS_REVOKED, verify_result2.cert_status); 818 EXPECT_EQ(CERT_STATUS_REVOKED, verify_result2.cert_status);
808 } 819 }
809 820
810 TEST_F(CertDatabaseNSSTest, TrustIntermediateCa2) { 821 TEST_F(CertDatabaseNSSTest, TrustIntermediateCa2) {
811 if (NSS_VersionCheck("3.14.2") && !NSS_VersionCheck("3.15")) { 822 if (NSS_VersionCheck("3.14.2") && !NSS_VersionCheck("3.15")) {
812 // See http://bugzil.la/863947 for details. 823 // See http://bugzil.la/863947 for details.
813 LOG(INFO) << "Skipping test for NSS 3.14.2 - NSS 3.15"; 824 LOG(INFO) << "Skipping test for NSS 3.14.2 - NSS 3.15";
814 return; 825 return;
815 } 826 }
816 827
817 NSSCertDatabase::ImportCertFailureList failed; 828 NSSCertDatabase::ImportCertFailureList failed;
818 829
819 CertificateList intermediate_certs = CreateCertificateListFromFile( 830 CertificateList intermediate_certs =
820 GetTestCertsDirectory(), "2048-rsa-intermediate.pem", 831 CreateCertificateListFromFile(GetTestCertsDirectory(),
821 X509Certificate::FORMAT_AUTO); 832 "2048-rsa-intermediate.pem",
833 X509Certificate::FORMAT_AUTO);
822 ASSERT_EQ(1U, intermediate_certs.size()); 834 ASSERT_EQ(1U, intermediate_certs.size());
823 835
824 // Import Intermediate CA cert and trust it. 836 // Import Intermediate CA cert and trust it.
825 EXPECT_TRUE(cert_db_->ImportCACerts(intermediate_certs, 837 EXPECT_TRUE(cert_db_->ImportCACerts(
826 NSSCertDatabase::TRUSTED_SSL, &failed)); 838 intermediate_certs, NSSCertDatabase::TRUSTED_SSL, &failed));
827 EXPECT_EQ(0U, failed.size()); 839 EXPECT_EQ(0U, failed.size());
828 840
829 CertificateList certs = CreateCertificateListFromFile( 841 CertificateList certs =
830 GetTestCertsDirectory(), "2048-rsa-ee-by-2048-rsa-intermediate.pem", 842 CreateCertificateListFromFile(GetTestCertsDirectory(),
831 X509Certificate::FORMAT_AUTO); 843 "2048-rsa-ee-by-2048-rsa-intermediate.pem",
844 X509Certificate::FORMAT_AUTO);
832 ASSERT_EQ(1U, certs.size()); 845 ASSERT_EQ(1U, certs.size());
833 846
834 // Import server cert with default trust. 847 // Import server cert with default trust.
835 EXPECT_TRUE(cert_db_->ImportServerCert( 848 EXPECT_TRUE(cert_db_->ImportServerCert(
836 certs, NSSCertDatabase::TRUST_DEFAULT, &failed)); 849 certs, NSSCertDatabase::TRUST_DEFAULT, &failed));
837 EXPECT_EQ(0U, failed.size()); 850 EXPECT_EQ(0U, failed.size());
838 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, 851 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT,
839 cert_db_->GetCertTrust(certs[0].get(), SERVER_CERT)); 852 cert_db_->GetCertTrust(certs[0].get(), SERVER_CERT));
840 853
841 // Server cert should verify. 854 // Server cert should verify.
(...skipping 27 matching lines...) Expand all
869 882
870 TEST_F(CertDatabaseNSSTest, TrustIntermediateCa3) { 883 TEST_F(CertDatabaseNSSTest, TrustIntermediateCa3) {
871 if (NSS_VersionCheck("3.14.2") && !NSS_VersionCheck("3.15")) { 884 if (NSS_VersionCheck("3.14.2") && !NSS_VersionCheck("3.15")) {
872 // See http://bugzil.la/863947 for details. 885 // See http://bugzil.la/863947 for details.
873 LOG(INFO) << "Skipping test for NSS 3.14.2 - NSS 3.15"; 886 LOG(INFO) << "Skipping test for NSS 3.14.2 - NSS 3.15";
874 return; 887 return;
875 } 888 }
876 889
877 NSSCertDatabase::ImportCertFailureList failed; 890 NSSCertDatabase::ImportCertFailureList failed;
878 891
879 CertificateList ca_certs = CreateCertificateListFromFile( 892 CertificateList ca_certs =
880 GetTestCertsDirectory(), "2048-rsa-root.pem", 893 CreateCertificateListFromFile(GetTestCertsDirectory(),
881 X509Certificate::FORMAT_AUTO); 894 "2048-rsa-root.pem",
895 X509Certificate::FORMAT_AUTO);
882 ASSERT_EQ(1U, ca_certs.size()); 896 ASSERT_EQ(1U, ca_certs.size());
883 897
884 // Import Root CA cert and default trust it. 898 // Import Root CA cert and default trust it.
885 EXPECT_TRUE(cert_db_->ImportCACerts(ca_certs, NSSCertDatabase::TRUST_DEFAULT, 899 EXPECT_TRUE(cert_db_->ImportCACerts(
886 &failed)); 900 ca_certs, NSSCertDatabase::TRUST_DEFAULT, &failed));
887 EXPECT_EQ(0U, failed.size()); 901 EXPECT_EQ(0U, failed.size());
888 902
889 CertificateList intermediate_certs = CreateCertificateListFromFile( 903 CertificateList intermediate_certs =
890 GetTestCertsDirectory(), "2048-rsa-intermediate.pem", 904 CreateCertificateListFromFile(GetTestCertsDirectory(),
891 X509Certificate::FORMAT_AUTO); 905 "2048-rsa-intermediate.pem",
906 X509Certificate::FORMAT_AUTO);
892 ASSERT_EQ(1U, intermediate_certs.size()); 907 ASSERT_EQ(1U, intermediate_certs.size());
893 908
894 // Import Intermediate CA cert and trust it. 909 // Import Intermediate CA cert and trust it.
895 EXPECT_TRUE(cert_db_->ImportCACerts(intermediate_certs, 910 EXPECT_TRUE(cert_db_->ImportCACerts(
896 NSSCertDatabase::TRUSTED_SSL, &failed)); 911 intermediate_certs, NSSCertDatabase::TRUSTED_SSL, &failed));
897 EXPECT_EQ(0U, failed.size()); 912 EXPECT_EQ(0U, failed.size());
898 913
899 CertificateList certs = CreateCertificateListFromFile( 914 CertificateList certs =
900 GetTestCertsDirectory(), "2048-rsa-ee-by-2048-rsa-intermediate.pem", 915 CreateCertificateListFromFile(GetTestCertsDirectory(),
901 X509Certificate::FORMAT_AUTO); 916 "2048-rsa-ee-by-2048-rsa-intermediate.pem",
917 X509Certificate::FORMAT_AUTO);
902 ASSERT_EQ(1U, certs.size()); 918 ASSERT_EQ(1U, certs.size());
903 919
904 // Import server cert with default trust. 920 // Import server cert with default trust.
905 EXPECT_TRUE(cert_db_->ImportServerCert( 921 EXPECT_TRUE(cert_db_->ImportServerCert(
906 certs, NSSCertDatabase::TRUST_DEFAULT, &failed)); 922 certs, NSSCertDatabase::TRUST_DEFAULT, &failed));
907 EXPECT_EQ(0U, failed.size()); 923 EXPECT_EQ(0U, failed.size());
908 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, 924 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT,
909 cert_db_->GetCertTrust(certs[0].get(), SERVER_CERT)); 925 cert_db_->GetCertTrust(certs[0].get(), SERVER_CERT));
910 926
911 // Server cert should verify. 927 // Server cert should verify.
(...skipping 21 matching lines...) Expand all
933 NULL, 949 NULL,
934 empty_cert_list_, 950 empty_cert_list_,
935 &verify_result2); 951 &verify_result2);
936 EXPECT_EQ(ERR_CERT_AUTHORITY_INVALID, error); 952 EXPECT_EQ(ERR_CERT_AUTHORITY_INVALID, error);
937 EXPECT_EQ(CERT_STATUS_AUTHORITY_INVALID, verify_result2.cert_status); 953 EXPECT_EQ(CERT_STATUS_AUTHORITY_INVALID, verify_result2.cert_status);
938 } 954 }
939 955
940 TEST_F(CertDatabaseNSSTest, TrustIntermediateCa4) { 956 TEST_F(CertDatabaseNSSTest, TrustIntermediateCa4) {
941 NSSCertDatabase::ImportCertFailureList failed; 957 NSSCertDatabase::ImportCertFailureList failed;
942 958
943 CertificateList ca_certs = CreateCertificateListFromFile( 959 CertificateList ca_certs =
944 GetTestCertsDirectory(), "2048-rsa-root.pem", 960 CreateCertificateListFromFile(GetTestCertsDirectory(),
945 X509Certificate::FORMAT_AUTO); 961 "2048-rsa-root.pem",
962 X509Certificate::FORMAT_AUTO);
946 ASSERT_EQ(1U, ca_certs.size()); 963 ASSERT_EQ(1U, ca_certs.size());
947 964
948 // Import Root CA cert and trust it. 965 // Import Root CA cert and trust it.
949 EXPECT_TRUE(cert_db_->ImportCACerts(ca_certs, NSSCertDatabase::TRUSTED_SSL, 966 EXPECT_TRUE(
950 &failed)); 967 cert_db_->ImportCACerts(ca_certs, NSSCertDatabase::TRUSTED_SSL, &failed));
951 EXPECT_EQ(0U, failed.size()); 968 EXPECT_EQ(0U, failed.size());
952 969
953 CertificateList intermediate_certs = CreateCertificateListFromFile( 970 CertificateList intermediate_certs =
954 GetTestCertsDirectory(), "2048-rsa-intermediate.pem", 971 CreateCertificateListFromFile(GetTestCertsDirectory(),
955 X509Certificate::FORMAT_AUTO); 972 "2048-rsa-intermediate.pem",
973 X509Certificate::FORMAT_AUTO);
956 ASSERT_EQ(1U, intermediate_certs.size()); 974 ASSERT_EQ(1U, intermediate_certs.size());
957 975
958 // Import Intermediate CA cert and distrust it. 976 // Import Intermediate CA cert and distrust it.
959 EXPECT_TRUE(cert_db_->ImportCACerts( 977 EXPECT_TRUE(cert_db_->ImportCACerts(
960 intermediate_certs, NSSCertDatabase::DISTRUSTED_SSL, &failed)); 978 intermediate_certs, NSSCertDatabase::DISTRUSTED_SSL, &failed));
961 EXPECT_EQ(0U, failed.size()); 979 EXPECT_EQ(0U, failed.size());
962 980
963 CertificateList certs = CreateCertificateListFromFile( 981 CertificateList certs =
964 GetTestCertsDirectory(), "2048-rsa-ee-by-2048-rsa-intermediate.pem", 982 CreateCertificateListFromFile(GetTestCertsDirectory(),
965 X509Certificate::FORMAT_AUTO); 983 "2048-rsa-ee-by-2048-rsa-intermediate.pem",
984 X509Certificate::FORMAT_AUTO);
966 ASSERT_EQ(1U, certs.size()); 985 ASSERT_EQ(1U, certs.size());
967 986
968 // Import server cert with default trust. 987 // Import server cert with default trust.
969 EXPECT_TRUE(cert_db_->ImportServerCert( 988 EXPECT_TRUE(cert_db_->ImportServerCert(
970 certs, NSSCertDatabase::TRUST_DEFAULT, &failed)); 989 certs, NSSCertDatabase::TRUST_DEFAULT, &failed));
971 EXPECT_EQ(0U, failed.size()); 990 EXPECT_EQ(0U, failed.size());
972 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, 991 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT,
973 cert_db_->GetCertTrust(certs[0].get(), SERVER_CERT)); 992 cert_db_->GetCertTrust(certs[0].get(), SERVER_CERT));
974 993
975 // Server cert should not verify. 994 // Server cert should not verify.
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1038 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, 1057 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT,
1039 cert_db_->GetCertTrust(certs2[0].get(), SERVER_CERT)); 1058 cert_db_->GetCertTrust(certs2[0].get(), SERVER_CERT));
1040 1059
1041 new_certs = ListCertsInSlot(slot_->os_module_handle()); 1060 new_certs = ListCertsInSlot(slot_->os_module_handle());
1042 ASSERT_EQ(2U, new_certs.size()); 1061 ASSERT_EQ(2U, new_certs.size());
1043 EXPECT_STRNE(new_certs[0]->os_cert_handle()->nickname, 1062 EXPECT_STRNE(new_certs[0]->os_cert_handle()->nickname,
1044 new_certs[1]->os_cert_handle()->nickname); 1063 new_certs[1]->os_cert_handle()->nickname);
1045 } 1064 }
1046 1065
1047 } // namespace net 1066 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698