OLD | NEW |
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 <pk11pub.h> | 6 #include <pk11pub.h> |
7 | 7 |
8 #include <algorithm> | 8 #include <algorithm> |
9 | 9 |
10 #include "base/file_path.h" | 10 #include "base/file_path.h" |
11 #include "base/file_util.h" | 11 #include "base/file_util.h" |
12 #include "base/lazy_instance.h" | 12 #include "base/lazy_instance.h" |
13 #include "base/message_loop.h" | 13 #include "base/message_loop.h" |
14 #include "base/path_service.h" | 14 #include "base/path_service.h" |
15 #include "base/string16.h" | 15 #include "base/string16.h" |
16 #include "base/string_util.h" | 16 #include "base/string_util.h" |
17 #include "base/utf_string_conversions.h" | 17 #include "base/utf_string_conversions.h" |
18 #include "crypto/nss_util.h" | 18 #include "crypto/nss_util.h" |
19 #include "crypto/nss_util_internal.h" | 19 #include "crypto/nss_util_internal.h" |
20 #include "crypto/scoped_nss_types.h" | 20 #include "crypto/scoped_nss_types.h" |
21 #include "net/base/cert_database.h" | 21 #include "net/base/cert_database.h" |
22 #include "net/base/cert_status_flags.h" | 22 #include "net/base/cert_status_flags.h" |
| 23 #include "net/base/cert_test_util.h" |
23 #include "net/base/cert_verify_proc.h" | 24 #include "net/base/cert_verify_proc.h" |
24 #include "net/base/cert_verify_result.h" | 25 #include "net/base/cert_verify_result.h" |
25 #include "net/base/crypto_module.h" | 26 #include "net/base/crypto_module.h" |
26 #include "net/base/net_errors.h" | 27 #include "net/base/net_errors.h" |
27 #include "net/base/x509_certificate.h" | 28 #include "net/base/x509_certificate.h" |
28 #include "net/third_party/mozilla_security_manager/nsNSSCertTrust.h" | 29 #include "net/third_party/mozilla_security_manager/nsNSSCertTrust.h" |
29 #include "net/third_party/mozilla_security_manager/nsNSSCertificateDB.h" | 30 #include "net/third_party/mozilla_security_manager/nsNSSCertificateDB.h" |
30 #include "testing/gtest/include/gtest/gtest.h" | 31 #include "testing/gtest/include/gtest/gtest.h" |
31 | 32 |
32 namespace psm = mozilla_security_manager; | 33 namespace psm = mozilla_security_manager; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 protected: | 71 protected: |
71 static std::string ReadTestFile(const std::string& name) { | 72 static std::string ReadTestFile(const std::string& name) { |
72 std::string result; | 73 std::string result; |
73 FilePath cert_path = GetTestCertsDirectory().AppendASCII(name); | 74 FilePath cert_path = GetTestCertsDirectory().AppendASCII(name); |
74 EXPECT_TRUE(file_util::ReadFileToString(cert_path, &result)); | 75 EXPECT_TRUE(file_util::ReadFileToString(cert_path, &result)); |
75 return result; | 76 return result; |
76 } | 77 } |
77 | 78 |
78 static bool ReadCertIntoList(const std::string& name, | 79 static bool ReadCertIntoList(const std::string& name, |
79 CertificateList* certs) { | 80 CertificateList* certs) { |
80 std::string cert_data = ReadTestFile(name); | 81 scoped_refptr<X509Certificate> cert( |
81 if (cert_data.empty()) | 82 ImportCertFromFile(GetTestCertsDirectory(), name)); |
82 return false; | 83 if (!cert.get()) |
83 | |
84 X509Certificate* cert = X509Certificate::CreateFromBytes( | |
85 cert_data.data(), cert_data.size()); | |
86 if (!cert) | |
87 return false; | 84 return false; |
88 | 85 |
89 certs->push_back(cert); | 86 certs->push_back(cert); |
90 return true; | 87 return true; |
91 } | 88 } |
92 | 89 |
93 static CertificateList ListCertsInSlot(PK11SlotInfo* slot) { | 90 static CertificateList ListCertsInSlot(PK11SlotInfo* slot) { |
94 CertificateList result; | 91 CertificateList result; |
95 CERTCertList* cert_list = PK11_ListCertsInSlot(slot); | 92 CERTCertList* cert_list = PK11_ListCertsInSlot(slot); |
96 for (CERTCertListNode* node = CERT_LIST_HEAD(cert_list); | 93 for (CERTCertListNode* node = CERT_LIST_HEAD(cert_list); |
97 !CERT_LIST_END(node, cert_list); | 94 !CERT_LIST_END(node, cert_list); |
98 node = CERT_LIST_NEXT(node)) { | 95 node = CERT_LIST_NEXT(node)) { |
99 result.push_back(X509Certificate::CreateFromHandle( | 96 result.push_back(X509Certificate::CreateFromHandle( |
100 node->cert, X509Certificate::OSCertHandles())); | 97 node->cert, X509Certificate::OSCertHandles())); |
101 } | 98 } |
102 CERT_DestroyCertList(cert_list); | 99 CERT_DestroyCertList(cert_list); |
103 | 100 |
104 // Sort the result so that test comparisons can be deterministic. | 101 // Sort the result so that test comparisons can be deterministic. |
105 std::sort(result.begin(), result.end(), X509Certificate::LessThan()); | 102 std::sort(result.begin(), result.end(), X509Certificate::LessThan()); |
106 return result; | 103 return result; |
107 } | 104 } |
108 | 105 |
109 scoped_refptr<CryptoModule> slot_; | 106 scoped_refptr<CryptoModule> slot_; |
110 CertDatabase cert_db_; | 107 CertDatabase cert_db_; |
111 | 108 |
112 private: | 109 private: |
113 // Returns a FilePath object representing the src/net/data/ssl/certificates | |
114 // directory in the source tree. | |
115 static FilePath GetTestCertsDirectory() { | |
116 FilePath certs_dir; | |
117 PathService::Get(base::DIR_SOURCE_ROOT, &certs_dir); | |
118 certs_dir = certs_dir.AppendASCII("net"); | |
119 certs_dir = certs_dir.AppendASCII("data"); | |
120 certs_dir = certs_dir.AppendASCII("ssl"); | |
121 certs_dir = certs_dir.AppendASCII("certificates"); | |
122 return certs_dir; | |
123 } | |
124 | |
125 static bool CleanupSlotContents(PK11SlotInfo* slot) { | 110 static bool CleanupSlotContents(PK11SlotInfo* slot) { |
126 CertDatabase cert_db; | 111 CertDatabase cert_db; |
127 bool ok = true; | 112 bool ok = true; |
128 CertificateList certs = ListCertsInSlot(slot); | 113 CertificateList certs = ListCertsInSlot(slot); |
129 for (size_t i = 0; i < certs.size(); ++i) { | 114 for (size_t i = 0; i < certs.size(); ++i) { |
130 if (!cert_db.DeleteCertAndKey(certs[i])) | 115 if (!cert_db.DeleteCertAndKey(certs[i])) |
131 ok = false; | 116 ok = false; |
132 } | 117 } |
133 return ok; | 118 return ok; |
134 } | 119 } |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
262 pkcs12_data, | 247 pkcs12_data, |
263 string16(), | 248 string16(), |
264 true, // is_extractable | 249 true, // is_extractable |
265 NULL)); | 250 NULL)); |
266 | 251 |
267 // Test db should still be empty. | 252 // Test db should still be empty. |
268 EXPECT_EQ(0U, ListCertsInSlot(slot_->os_module_handle()).size()); | 253 EXPECT_EQ(0U, ListCertsInSlot(slot_->os_module_handle()).size()); |
269 } | 254 } |
270 | 255 |
271 TEST_F(CertDatabaseNSSTest, ImportCACert_SSLTrust) { | 256 TEST_F(CertDatabaseNSSTest, ImportCACert_SSLTrust) { |
272 std::string cert_data = ReadTestFile("root_ca_cert.crt"); | 257 CertificateList certs = CreateCertificateListFromFile( |
273 | 258 GetTestCertsDirectory(), "root_ca_cert.crt", |
274 CertificateList certs = | 259 X509Certificate::FORMAT_AUTO); |
275 X509Certificate::CreateCertificateListFromBytes( | |
276 cert_data.data(), cert_data.size(), X509Certificate::FORMAT_AUTO); | |
277 ASSERT_EQ(1U, certs.size()); | 260 ASSERT_EQ(1U, certs.size()); |
278 EXPECT_FALSE(certs[0]->os_cert_handle()->isperm); | 261 EXPECT_FALSE(certs[0]->os_cert_handle()->isperm); |
279 | 262 |
280 // Import it. | 263 // Import it. |
281 CertDatabase::ImportCertFailureList failed; | 264 CertDatabase::ImportCertFailureList failed; |
282 EXPECT_TRUE(cert_db_.ImportCACerts(certs, CertDatabase::TRUSTED_SSL, | 265 EXPECT_TRUE(cert_db_.ImportCACerts(certs, CertDatabase::TRUSTED_SSL, |
283 &failed)); | 266 &failed)); |
284 | 267 |
285 EXPECT_EQ(0U, failed.size()); | 268 EXPECT_EQ(0U, failed.size()); |
286 | 269 |
287 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); | 270 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); |
288 ASSERT_EQ(1U, cert_list.size()); | 271 ASSERT_EQ(1U, cert_list.size()); |
289 scoped_refptr<X509Certificate> cert(cert_list[0]); | 272 scoped_refptr<X509Certificate> cert(cert_list[0]); |
290 EXPECT_EQ("Test CA", cert->subject().common_name); | 273 EXPECT_EQ("Test CA", cert->subject().common_name); |
291 | 274 |
292 EXPECT_EQ(CertDatabase::TRUSTED_SSL, | 275 EXPECT_EQ(CertDatabase::TRUSTED_SSL, |
293 cert_db_.GetCertTrust(cert.get(), CA_CERT)); | 276 cert_db_.GetCertTrust(cert.get(), CA_CERT)); |
294 | 277 |
295 psm::nsNSSCertTrust trust(cert->os_cert_handle()->trust); | 278 psm::nsNSSCertTrust trust(cert->os_cert_handle()->trust); |
296 EXPECT_TRUE(trust.HasTrustedCA(PR_TRUE, PR_FALSE, PR_FALSE)); | 279 EXPECT_TRUE(trust.HasTrustedCA(PR_TRUE, PR_FALSE, PR_FALSE)); |
297 EXPECT_FALSE(trust.HasTrustedCA(PR_FALSE, PR_TRUE, PR_FALSE)); | 280 EXPECT_FALSE(trust.HasTrustedCA(PR_FALSE, PR_TRUE, PR_FALSE)); |
298 EXPECT_FALSE(trust.HasTrustedCA(PR_FALSE, PR_FALSE, PR_TRUE)); | 281 EXPECT_FALSE(trust.HasTrustedCA(PR_FALSE, PR_FALSE, PR_TRUE)); |
299 EXPECT_FALSE(trust.HasTrustedCA(PR_TRUE, PR_TRUE, PR_TRUE)); | 282 EXPECT_FALSE(trust.HasTrustedCA(PR_TRUE, PR_TRUE, PR_TRUE)); |
300 EXPECT_TRUE(trust.HasCA(PR_TRUE, PR_TRUE, PR_TRUE)); | 283 EXPECT_TRUE(trust.HasCA(PR_TRUE, PR_TRUE, PR_TRUE)); |
301 } | 284 } |
302 | 285 |
303 TEST_F(CertDatabaseNSSTest, ImportCACert_EmailTrust) { | 286 TEST_F(CertDatabaseNSSTest, ImportCACert_EmailTrust) { |
304 std::string cert_data = ReadTestFile("root_ca_cert.crt"); | 287 CertificateList certs = CreateCertificateListFromFile( |
305 | 288 GetTestCertsDirectory(), "root_ca_cert.crt", |
306 CertificateList certs = | 289 X509Certificate::FORMAT_AUTO); |
307 X509Certificate::CreateCertificateListFromBytes( | |
308 cert_data.data(), cert_data.size(), X509Certificate::FORMAT_AUTO); | |
309 ASSERT_EQ(1U, certs.size()); | 290 ASSERT_EQ(1U, certs.size()); |
310 EXPECT_FALSE(certs[0]->os_cert_handle()->isperm); | 291 EXPECT_FALSE(certs[0]->os_cert_handle()->isperm); |
311 | 292 |
312 // Import it. | 293 // Import it. |
313 CertDatabase::ImportCertFailureList failed; | 294 CertDatabase::ImportCertFailureList failed; |
314 EXPECT_TRUE(cert_db_.ImportCACerts(certs, CertDatabase::TRUSTED_EMAIL, | 295 EXPECT_TRUE(cert_db_.ImportCACerts(certs, CertDatabase::TRUSTED_EMAIL, |
315 &failed)); | 296 &failed)); |
316 | 297 |
317 EXPECT_EQ(0U, failed.size()); | 298 EXPECT_EQ(0U, failed.size()); |
318 | 299 |
319 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); | 300 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); |
320 ASSERT_EQ(1U, cert_list.size()); | 301 ASSERT_EQ(1U, cert_list.size()); |
321 scoped_refptr<X509Certificate> cert(cert_list[0]); | 302 scoped_refptr<X509Certificate> cert(cert_list[0]); |
322 EXPECT_EQ("Test CA", cert->subject().common_name); | 303 EXPECT_EQ("Test CA", cert->subject().common_name); |
323 | 304 |
324 EXPECT_EQ(CertDatabase::TRUSTED_EMAIL, | 305 EXPECT_EQ(CertDatabase::TRUSTED_EMAIL, |
325 cert_db_.GetCertTrust(cert.get(), CA_CERT)); | 306 cert_db_.GetCertTrust(cert.get(), CA_CERT)); |
326 | 307 |
327 psm::nsNSSCertTrust trust(cert->os_cert_handle()->trust); | 308 psm::nsNSSCertTrust trust(cert->os_cert_handle()->trust); |
328 EXPECT_FALSE(trust.HasTrustedCA(PR_TRUE, PR_FALSE, PR_FALSE)); | 309 EXPECT_FALSE(trust.HasTrustedCA(PR_TRUE, PR_FALSE, PR_FALSE)); |
329 EXPECT_TRUE(trust.HasTrustedCA(PR_FALSE, PR_TRUE, PR_FALSE)); | 310 EXPECT_TRUE(trust.HasTrustedCA(PR_FALSE, PR_TRUE, PR_FALSE)); |
330 EXPECT_FALSE(trust.HasTrustedCA(PR_FALSE, PR_FALSE, PR_TRUE)); | 311 EXPECT_FALSE(trust.HasTrustedCA(PR_FALSE, PR_FALSE, PR_TRUE)); |
331 EXPECT_TRUE(trust.HasCA(PR_TRUE, PR_TRUE, PR_TRUE)); | 312 EXPECT_TRUE(trust.HasCA(PR_TRUE, PR_TRUE, PR_TRUE)); |
332 } | 313 } |
333 | 314 |
334 TEST_F(CertDatabaseNSSTest, ImportCACert_ObjSignTrust) { | 315 TEST_F(CertDatabaseNSSTest, ImportCACert_ObjSignTrust) { |
335 std::string cert_data = ReadTestFile("root_ca_cert.crt"); | 316 CertificateList certs = CreateCertificateListFromFile( |
336 | 317 GetTestCertsDirectory(), "root_ca_cert.crt", |
337 CertificateList certs = | 318 X509Certificate::FORMAT_AUTO); |
338 X509Certificate::CreateCertificateListFromBytes( | |
339 cert_data.data(), cert_data.size(), X509Certificate::FORMAT_AUTO); | |
340 ASSERT_EQ(1U, certs.size()); | 319 ASSERT_EQ(1U, certs.size()); |
341 EXPECT_FALSE(certs[0]->os_cert_handle()->isperm); | 320 EXPECT_FALSE(certs[0]->os_cert_handle()->isperm); |
342 | 321 |
343 // Import it. | 322 // Import it. |
344 CertDatabase::ImportCertFailureList failed; | 323 CertDatabase::ImportCertFailureList failed; |
345 EXPECT_TRUE(cert_db_.ImportCACerts(certs, CertDatabase::TRUSTED_OBJ_SIGN, | 324 EXPECT_TRUE(cert_db_.ImportCACerts(certs, CertDatabase::TRUSTED_OBJ_SIGN, |
346 &failed)); | 325 &failed)); |
347 | 326 |
348 EXPECT_EQ(0U, failed.size()); | 327 EXPECT_EQ(0U, failed.size()); |
349 | 328 |
350 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); | 329 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); |
351 ASSERT_EQ(1U, cert_list.size()); | 330 ASSERT_EQ(1U, cert_list.size()); |
352 scoped_refptr<X509Certificate> cert(cert_list[0]); | 331 scoped_refptr<X509Certificate> cert(cert_list[0]); |
353 EXPECT_EQ("Test CA", cert->subject().common_name); | 332 EXPECT_EQ("Test CA", cert->subject().common_name); |
354 | 333 |
355 EXPECT_EQ(CertDatabase::TRUSTED_OBJ_SIGN, | 334 EXPECT_EQ(CertDatabase::TRUSTED_OBJ_SIGN, |
356 cert_db_.GetCertTrust(cert.get(), CA_CERT)); | 335 cert_db_.GetCertTrust(cert.get(), CA_CERT)); |
357 | 336 |
358 psm::nsNSSCertTrust trust(cert->os_cert_handle()->trust); | 337 psm::nsNSSCertTrust trust(cert->os_cert_handle()->trust); |
359 EXPECT_FALSE(trust.HasTrustedCA(PR_TRUE, PR_FALSE, PR_FALSE)); | 338 EXPECT_FALSE(trust.HasTrustedCA(PR_TRUE, PR_FALSE, PR_FALSE)); |
360 EXPECT_FALSE(trust.HasTrustedCA(PR_FALSE, PR_TRUE, PR_FALSE)); | 339 EXPECT_FALSE(trust.HasTrustedCA(PR_FALSE, PR_TRUE, PR_FALSE)); |
361 EXPECT_TRUE(trust.HasTrustedCA(PR_FALSE, PR_FALSE, PR_TRUE)); | 340 EXPECT_TRUE(trust.HasTrustedCA(PR_FALSE, PR_FALSE, PR_TRUE)); |
362 EXPECT_TRUE(trust.HasCA(PR_TRUE, PR_TRUE, PR_TRUE)); | 341 EXPECT_TRUE(trust.HasCA(PR_TRUE, PR_TRUE, PR_TRUE)); |
363 } | 342 } |
364 | 343 |
365 TEST_F(CertDatabaseNSSTest, ImportCA_NotCACert) { | 344 TEST_F(CertDatabaseNSSTest, ImportCA_NotCACert) { |
366 std::string cert_data = ReadTestFile("google.single.pem"); | 345 CertificateList certs = CreateCertificateListFromFile( |
367 | 346 GetTestCertsDirectory(), "google.single.pem", |
368 CertificateList certs = | 347 X509Certificate::FORMAT_AUTO); |
369 X509Certificate::CreateCertificateListFromBytes( | |
370 cert_data.data(), cert_data.size(), X509Certificate::FORMAT_AUTO); | |
371 ASSERT_EQ(1U, certs.size()); | 348 ASSERT_EQ(1U, certs.size()); |
372 EXPECT_FALSE(certs[0]->os_cert_handle()->isperm); | 349 EXPECT_FALSE(certs[0]->os_cert_handle()->isperm); |
373 | 350 |
374 // Import it. | 351 // Import it. |
375 CertDatabase::ImportCertFailureList failed; | 352 CertDatabase::ImportCertFailureList failed; |
376 EXPECT_TRUE(cert_db_.ImportCACerts(certs, CertDatabase::TRUSTED_SSL, | 353 EXPECT_TRUE(cert_db_.ImportCACerts(certs, CertDatabase::TRUSTED_SSL, |
377 &failed)); | 354 &failed)); |
378 ASSERT_EQ(1U, failed.size()); | 355 ASSERT_EQ(1U, failed.size()); |
379 // Note: this compares pointers directly. It's okay in this case because | 356 // Note: this compares pointers directly. It's okay in this case because |
380 // ImportCACerts returns the same pointers that were passed in. In the | 357 // ImportCACerts returns the same pointers that were passed in. In the |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
488 // ASSERT_EQ(3U, cert_list.size()); | 465 // ASSERT_EQ(3U, cert_list.size()); |
489 // EXPECT_EQ("DOD CA-13", cert_list[0]->subject().common_name); | 466 // EXPECT_EQ("DOD CA-13", cert_list[0]->subject().common_name); |
490 // EXPECT_EQ("DoD Root CA 2", cert_list[1]->subject().common_name); | 467 // EXPECT_EQ("DoD Root CA 2", cert_list[1]->subject().common_name); |
491 // EXPECT_EQ("DOD CA-17", cert_list[2]->subject().common_name); | 468 // EXPECT_EQ("DOD CA-17", cert_list[2]->subject().common_name); |
492 ASSERT_EQ(2U, cert_list.size()); | 469 ASSERT_EQ(2U, cert_list.size()); |
493 EXPECT_EQ("DoD Root CA 2", cert_list[0]->subject().common_name); | 470 EXPECT_EQ("DoD Root CA 2", cert_list[0]->subject().common_name); |
494 EXPECT_EQ("DOD CA-17", cert_list[1]->subject().common_name); | 471 EXPECT_EQ("DOD CA-17", cert_list[1]->subject().common_name); |
495 } | 472 } |
496 | 473 |
497 TEST_F(CertDatabaseNSSTest, ImportCACertNotHierarchy) { | 474 TEST_F(CertDatabaseNSSTest, ImportCACertNotHierarchy) { |
498 std::string cert_data = ReadTestFile("root_ca_cert.crt"); | 475 CertificateList certs = CreateCertificateListFromFile( |
499 CertificateList certs = | 476 GetTestCertsDirectory(), "root_ca_cert.crt", |
500 X509Certificate::CreateCertificateListFromBytes( | 477 X509Certificate::FORMAT_AUTO); |
501 cert_data.data(), cert_data.size(), X509Certificate::FORMAT_AUTO); | |
502 ASSERT_EQ(1U, certs.size()); | 478 ASSERT_EQ(1U, certs.size()); |
503 ASSERT_TRUE(ReadCertIntoList("dod_ca_13_cert.der", &certs)); | 479 ASSERT_TRUE(ReadCertIntoList("dod_ca_13_cert.der", &certs)); |
504 ASSERT_TRUE(ReadCertIntoList("dod_ca_17_cert.der", &certs)); | 480 ASSERT_TRUE(ReadCertIntoList("dod_ca_17_cert.der", &certs)); |
505 | 481 |
506 // Import it. | 482 // Import it. |
507 CertDatabase::ImportCertFailureList failed; | 483 CertDatabase::ImportCertFailureList failed; |
508 EXPECT_TRUE(cert_db_.ImportCACerts( | 484 EXPECT_TRUE(cert_db_.ImportCACerts( |
509 certs, CertDatabase::TRUSTED_SSL | CertDatabase::TRUSTED_EMAIL | | 485 certs, CertDatabase::TRUSTED_SSL | CertDatabase::TRUSTED_EMAIL | |
510 CertDatabase::TRUSTED_OBJ_SIGN, &failed)); | 486 CertDatabase::TRUSTED_OBJ_SIGN, &failed)); |
511 | 487 |
512 ASSERT_EQ(2U, failed.size()); | 488 ASSERT_EQ(2U, failed.size()); |
513 // TODO(mattm): should check for net error equivalent of | 489 // TODO(mattm): should check for net error equivalent of |
514 // SEC_ERROR_UNKNOWN_ISSUER | 490 // SEC_ERROR_UNKNOWN_ISSUER |
515 EXPECT_EQ("DOD CA-13", failed[0].certificate->subject().common_name); | 491 EXPECT_EQ("DOD CA-13", failed[0].certificate->subject().common_name); |
516 EXPECT_EQ(ERR_FAILED, failed[0].net_error); | 492 EXPECT_EQ(ERR_FAILED, failed[0].net_error); |
517 EXPECT_EQ("DOD CA-17", failed[1].certificate->subject().common_name); | 493 EXPECT_EQ("DOD CA-17", failed[1].certificate->subject().common_name); |
518 EXPECT_EQ(ERR_FAILED, failed[1].net_error); | 494 EXPECT_EQ(ERR_FAILED, failed[1].net_error); |
519 | 495 |
520 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); | 496 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); |
521 ASSERT_EQ(1U, cert_list.size()); | 497 ASSERT_EQ(1U, cert_list.size()); |
522 EXPECT_EQ("Test CA", cert_list[0]->subject().common_name); | 498 EXPECT_EQ("Test CA", cert_list[0]->subject().common_name); |
523 } | 499 } |
524 | 500 |
525 // http://crbug.com/108009 - Disabled, as google.chain.pem is an expired | 501 // http://crbug.com/108009 - Disabled, as google.chain.pem is an expired |
526 // certificate. | 502 // certificate. |
527 TEST_F(CertDatabaseNSSTest, DISABLED_ImportServerCert) { | 503 TEST_F(CertDatabaseNSSTest, DISABLED_ImportServerCert) { |
528 // Need to import intermediate cert for the verify of google cert, otherwise | 504 // Need to import intermediate cert for the verify of google cert, otherwise |
529 // it will try to fetch it automatically with cert_pi_useAIACertFetch, which | 505 // it will try to fetch it automatically with cert_pi_useAIACertFetch, which |
530 // will cause OCSPCreateSession on the main thread, which is not allowed. | 506 // will cause OCSPCreateSession on the main thread, which is not allowed. |
531 std::string cert_data = ReadTestFile("google.chain.pem"); | 507 CertificateList certs = CreateCertificateListFromFile( |
532 CertificateList certs = | 508 GetTestCertsDirectory(), "google.chain.pem", |
533 X509Certificate::CreateCertificateListFromBytes( | 509 X509Certificate::FORMAT_AUTO); |
534 cert_data.data(), cert_data.size(), X509Certificate::FORMAT_AUTO); | |
535 ASSERT_EQ(2U, certs.size()); | 510 ASSERT_EQ(2U, certs.size()); |
536 | 511 |
537 CertDatabase::ImportCertFailureList failed; | 512 CertDatabase::ImportCertFailureList failed; |
538 EXPECT_TRUE(cert_db_.ImportServerCert(certs, &failed)); | 513 EXPECT_TRUE(cert_db_.ImportServerCert(certs, &failed)); |
539 | 514 |
540 EXPECT_EQ(0U, failed.size()); | 515 EXPECT_EQ(0U, failed.size()); |
541 | 516 |
542 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); | 517 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); |
543 ASSERT_EQ(2U, cert_list.size()); | 518 ASSERT_EQ(2U, cert_list.size()); |
544 scoped_refptr<X509Certificate> goog_cert(cert_list[0]); | 519 scoped_refptr<X509Certificate> goog_cert(cert_list[0]); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
593 CertDatabase::TRUSTED_SSL | CertDatabase::TRUSTED_EMAIL)); | 568 CertDatabase::TRUSTED_SSL | CertDatabase::TRUSTED_EMAIL)); |
594 | 569 |
595 verify_result.Reset(); | 570 verify_result.Reset(); |
596 error = verify_proc->Verify(puny_cert, "xn--wgv71a119e.com", flags, | 571 error = verify_proc->Verify(puny_cert, "xn--wgv71a119e.com", flags, |
597 NULL, &verify_result); | 572 NULL, &verify_result); |
598 EXPECT_EQ(OK, error); | 573 EXPECT_EQ(OK, error); |
599 EXPECT_EQ(0U, verify_result.cert_status); | 574 EXPECT_EQ(0U, verify_result.cert_status); |
600 } | 575 } |
601 | 576 |
602 } // namespace net | 577 } // namespace net |
OLD | NEW |