| 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 <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 536 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 547 EXPECT_EQ("Thawte SGC CA", thawte_cert->subject().common_name); | 547 EXPECT_EQ("Thawte SGC CA", thawte_cert->subject().common_name); |
| 548 | 548 |
| 549 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, | 549 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, |
| 550 cert_db_->GetCertTrust(goog_cert.get(), SERVER_CERT)); | 550 cert_db_->GetCertTrust(goog_cert.get(), SERVER_CERT)); |
| 551 | 551 |
| 552 EXPECT_EQ(0U, goog_cert->os_cert_handle()->trust->sslFlags); | 552 EXPECT_EQ(0U, goog_cert->os_cert_handle()->trust->sslFlags); |
| 553 | 553 |
| 554 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); | 554 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); |
| 555 int flags = 0; | 555 int flags = 0; |
| 556 CertVerifyResult verify_result; | 556 CertVerifyResult verify_result; |
| 557 int error = verify_proc->Verify(goog_cert.get(), | 557 int error = |
| 558 "www.google.com", | 558 verify_proc->Verify(goog_cert.get(), "www.google.com", std::string(), |
| 559 flags, | 559 flags, NULL, empty_cert_list_, &verify_result); |
| 560 NULL, | |
| 561 empty_cert_list_, | |
| 562 &verify_result); | |
| 563 EXPECT_EQ(OK, error); | 560 EXPECT_EQ(OK, error); |
| 564 EXPECT_EQ(0U, verify_result.cert_status); | 561 EXPECT_EQ(0U, verify_result.cert_status); |
| 565 } | 562 } |
| 566 | 563 |
| 567 TEST_F(CertDatabaseNSSTest, ImportServerCert_SelfSigned) { | 564 TEST_F(CertDatabaseNSSTest, ImportServerCert_SelfSigned) { |
| 568 CertificateList certs; | 565 CertificateList certs; |
| 569 ASSERT_TRUE(ReadCertIntoList("punycodetest.pem", &certs)); | 566 ASSERT_TRUE(ReadCertIntoList("punycodetest.pem", &certs)); |
| 570 | 567 |
| 571 NSSCertDatabase::ImportCertFailureList failed; | 568 NSSCertDatabase::ImportCertFailureList failed; |
| 572 EXPECT_TRUE(cert_db_->ImportServerCert(certs, NSSCertDatabase::TRUST_DEFAULT, | 569 EXPECT_TRUE(cert_db_->ImportServerCert(certs, NSSCertDatabase::TRUST_DEFAULT, |
| 573 &failed)); | 570 &failed)); |
| 574 | 571 |
| 575 EXPECT_EQ(0U, failed.size()); | 572 EXPECT_EQ(0U, failed.size()); |
| 576 | 573 |
| 577 CertificateList cert_list = ListCerts(); | 574 CertificateList cert_list = ListCerts(); |
| 578 ASSERT_EQ(1U, cert_list.size()); | 575 ASSERT_EQ(1U, cert_list.size()); |
| 579 scoped_refptr<X509Certificate> puny_cert(cert_list[0]); | 576 scoped_refptr<X509Certificate> puny_cert(cert_list[0]); |
| 580 | 577 |
| 581 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, | 578 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, |
| 582 cert_db_->GetCertTrust(puny_cert.get(), SERVER_CERT)); | 579 cert_db_->GetCertTrust(puny_cert.get(), SERVER_CERT)); |
| 583 EXPECT_EQ(0U, puny_cert->os_cert_handle()->trust->sslFlags); | 580 EXPECT_EQ(0U, puny_cert->os_cert_handle()->trust->sslFlags); |
| 584 | 581 |
| 585 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); | 582 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); |
| 586 int flags = 0; | 583 int flags = 0; |
| 587 CertVerifyResult verify_result; | 584 CertVerifyResult verify_result; |
| 588 int error = verify_proc->Verify(puny_cert.get(), | 585 int error = |
| 589 "xn--wgv71a119e.com", | 586 verify_proc->Verify(puny_cert.get(), "xn--wgv71a119e.com", std::string(), |
| 590 flags, | 587 flags, NULL, empty_cert_list_, &verify_result); |
| 591 NULL, | |
| 592 empty_cert_list_, | |
| 593 &verify_result); | |
| 594 EXPECT_EQ(ERR_CERT_AUTHORITY_INVALID, error); | 588 EXPECT_EQ(ERR_CERT_AUTHORITY_INVALID, error); |
| 595 EXPECT_EQ(CERT_STATUS_AUTHORITY_INVALID, verify_result.cert_status); | 589 EXPECT_EQ(CERT_STATUS_AUTHORITY_INVALID, verify_result.cert_status); |
| 596 } | 590 } |
| 597 | 591 |
| 598 TEST_F(CertDatabaseNSSTest, ImportServerCert_SelfSigned_Trusted) { | 592 TEST_F(CertDatabaseNSSTest, ImportServerCert_SelfSigned_Trusted) { |
| 599 CertificateList certs; | 593 CertificateList certs; |
| 600 ASSERT_TRUE(ReadCertIntoList("punycodetest.pem", &certs)); | 594 ASSERT_TRUE(ReadCertIntoList("punycodetest.pem", &certs)); |
| 601 | 595 |
| 602 NSSCertDatabase::ImportCertFailureList failed; | 596 NSSCertDatabase::ImportCertFailureList failed; |
| 603 EXPECT_TRUE(cert_db_->ImportServerCert(certs, NSSCertDatabase::TRUSTED_SSL, | 597 EXPECT_TRUE(cert_db_->ImportServerCert(certs, NSSCertDatabase::TRUSTED_SSL, |
| 604 &failed)); | 598 &failed)); |
| 605 | 599 |
| 606 EXPECT_EQ(0U, failed.size()); | 600 EXPECT_EQ(0U, failed.size()); |
| 607 | 601 |
| 608 CertificateList cert_list = ListCerts(); | 602 CertificateList cert_list = ListCerts(); |
| 609 ASSERT_EQ(1U, cert_list.size()); | 603 ASSERT_EQ(1U, cert_list.size()); |
| 610 scoped_refptr<X509Certificate> puny_cert(cert_list[0]); | 604 scoped_refptr<X509Certificate> puny_cert(cert_list[0]); |
| 611 | 605 |
| 612 EXPECT_EQ(NSSCertDatabase::TRUSTED_SSL, | 606 EXPECT_EQ(NSSCertDatabase::TRUSTED_SSL, |
| 613 cert_db_->GetCertTrust(puny_cert.get(), SERVER_CERT)); | 607 cert_db_->GetCertTrust(puny_cert.get(), SERVER_CERT)); |
| 614 EXPECT_EQ(unsigned(CERTDB_TRUSTED | CERTDB_TERMINAL_RECORD), | 608 EXPECT_EQ(unsigned(CERTDB_TRUSTED | CERTDB_TERMINAL_RECORD), |
| 615 puny_cert->os_cert_handle()->trust->sslFlags); | 609 puny_cert->os_cert_handle()->trust->sslFlags); |
| 616 | 610 |
| 617 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); | 611 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); |
| 618 int flags = 0; | 612 int flags = 0; |
| 619 CertVerifyResult verify_result; | 613 CertVerifyResult verify_result; |
| 620 int error = verify_proc->Verify(puny_cert.get(), | 614 int error = |
| 621 "xn--wgv71a119e.com", | 615 verify_proc->Verify(puny_cert.get(), "xn--wgv71a119e.com", std::string(), |
| 622 flags, | 616 flags, NULL, empty_cert_list_, &verify_result); |
| 623 NULL, | |
| 624 empty_cert_list_, | |
| 625 &verify_result); | |
| 626 EXPECT_EQ(OK, error); | 617 EXPECT_EQ(OK, error); |
| 627 EXPECT_EQ(0U, verify_result.cert_status); | 618 EXPECT_EQ(0U, verify_result.cert_status); |
| 628 } | 619 } |
| 629 | 620 |
| 630 TEST_F(CertDatabaseNSSTest, ImportCaAndServerCert) { | 621 TEST_F(CertDatabaseNSSTest, ImportCaAndServerCert) { |
| 631 CertificateList ca_certs = CreateCertificateListFromFile( | 622 CertificateList ca_certs = CreateCertificateListFromFile( |
| 632 GetTestCertsDirectory(), "root_ca_cert.pem", | 623 GetTestCertsDirectory(), "root_ca_cert.pem", |
| 633 X509Certificate::FORMAT_AUTO); | 624 X509Certificate::FORMAT_AUTO); |
| 634 ASSERT_EQ(1U, ca_certs.size()); | 625 ASSERT_EQ(1U, ca_certs.size()); |
| 635 | 626 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 646 | 637 |
| 647 // Import server cert with default trust. | 638 // Import server cert with default trust. |
| 648 EXPECT_TRUE(cert_db_->ImportServerCert(certs, NSSCertDatabase::TRUST_DEFAULT, | 639 EXPECT_TRUE(cert_db_->ImportServerCert(certs, NSSCertDatabase::TRUST_DEFAULT, |
| 649 &failed)); | 640 &failed)); |
| 650 EXPECT_EQ(0U, failed.size()); | 641 EXPECT_EQ(0U, failed.size()); |
| 651 | 642 |
| 652 // Server cert should verify. | 643 // Server cert should verify. |
| 653 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); | 644 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); |
| 654 int flags = 0; | 645 int flags = 0; |
| 655 CertVerifyResult verify_result; | 646 CertVerifyResult verify_result; |
| 656 int error = verify_proc->Verify(certs[0].get(), | 647 int error = |
| 657 "127.0.0.1", | 648 verify_proc->Verify(certs[0].get(), "127.0.0.1", std::string(), flags, |
| 658 flags, | 649 NULL, empty_cert_list_, &verify_result); |
| 659 NULL, | |
| 660 empty_cert_list_, | |
| 661 &verify_result); | |
| 662 EXPECT_EQ(OK, error); | 650 EXPECT_EQ(OK, error); |
| 663 EXPECT_EQ(0U, verify_result.cert_status); | 651 EXPECT_EQ(0U, verify_result.cert_status); |
| 664 } | 652 } |
| 665 | 653 |
| 666 TEST_F(CertDatabaseNSSTest, ImportCaAndServerCert_DistrustServer) { | 654 TEST_F(CertDatabaseNSSTest, ImportCaAndServerCert_DistrustServer) { |
| 667 CertificateList ca_certs = CreateCertificateListFromFile( | 655 CertificateList ca_certs = CreateCertificateListFromFile( |
| 668 GetTestCertsDirectory(), "root_ca_cert.pem", | 656 GetTestCertsDirectory(), "root_ca_cert.pem", |
| 669 X509Certificate::FORMAT_AUTO); | 657 X509Certificate::FORMAT_AUTO); |
| 670 ASSERT_EQ(1U, ca_certs.size()); | 658 ASSERT_EQ(1U, ca_certs.size()); |
| 671 | 659 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 688 EXPECT_EQ(NSSCertDatabase::DISTRUSTED_SSL, | 676 EXPECT_EQ(NSSCertDatabase::DISTRUSTED_SSL, |
| 689 cert_db_->GetCertTrust(certs[0].get(), SERVER_CERT)); | 677 cert_db_->GetCertTrust(certs[0].get(), SERVER_CERT)); |
| 690 | 678 |
| 691 EXPECT_EQ(unsigned(CERTDB_TERMINAL_RECORD), | 679 EXPECT_EQ(unsigned(CERTDB_TERMINAL_RECORD), |
| 692 certs[0]->os_cert_handle()->trust->sslFlags); | 680 certs[0]->os_cert_handle()->trust->sslFlags); |
| 693 | 681 |
| 694 // Server cert should fail to verify. | 682 // Server cert should fail to verify. |
| 695 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); | 683 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); |
| 696 int flags = 0; | 684 int flags = 0; |
| 697 CertVerifyResult verify_result; | 685 CertVerifyResult verify_result; |
| 698 int error = verify_proc->Verify(certs[0].get(), | 686 int error = |
| 699 "127.0.0.1", | 687 verify_proc->Verify(certs[0].get(), "127.0.0.1", std::string(), flags, |
| 700 flags, | 688 NULL, empty_cert_list_, &verify_result); |
| 701 NULL, | |
| 702 empty_cert_list_, | |
| 703 &verify_result); | |
| 704 EXPECT_EQ(ERR_CERT_REVOKED, error); | 689 EXPECT_EQ(ERR_CERT_REVOKED, error); |
| 705 EXPECT_EQ(CERT_STATUS_REVOKED, verify_result.cert_status); | 690 EXPECT_EQ(CERT_STATUS_REVOKED, verify_result.cert_status); |
| 706 } | 691 } |
| 707 | 692 |
| 708 TEST_F(CertDatabaseNSSTest, TrustIntermediateCa) { | 693 TEST_F(CertDatabaseNSSTest, TrustIntermediateCa) { |
| 709 CertificateList ca_certs = CreateCertificateListFromFile( | 694 CertificateList ca_certs = CreateCertificateListFromFile( |
| 710 GetTestCertsDirectory(), "2048-rsa-root.pem", | 695 GetTestCertsDirectory(), "2048-rsa-root.pem", |
| 711 X509Certificate::FORMAT_AUTO); | 696 X509Certificate::FORMAT_AUTO); |
| 712 ASSERT_EQ(1U, ca_certs.size()); | 697 ASSERT_EQ(1U, ca_certs.size()); |
| 713 | 698 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 736 EXPECT_TRUE(cert_db_->ImportServerCert( | 721 EXPECT_TRUE(cert_db_->ImportServerCert( |
| 737 certs, NSSCertDatabase::TRUST_DEFAULT, &failed)); | 722 certs, NSSCertDatabase::TRUST_DEFAULT, &failed)); |
| 738 EXPECT_EQ(0U, failed.size()); | 723 EXPECT_EQ(0U, failed.size()); |
| 739 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, | 724 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, |
| 740 cert_db_->GetCertTrust(certs[0].get(), SERVER_CERT)); | 725 cert_db_->GetCertTrust(certs[0].get(), SERVER_CERT)); |
| 741 | 726 |
| 742 // Server cert should verify. | 727 // Server cert should verify. |
| 743 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); | 728 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); |
| 744 int flags = 0; | 729 int flags = 0; |
| 745 CertVerifyResult verify_result; | 730 CertVerifyResult verify_result; |
| 746 int error = verify_proc->Verify(certs[0].get(), | 731 int error = |
| 747 "127.0.0.1", | 732 verify_proc->Verify(certs[0].get(), "127.0.0.1", std::string(), flags, |
| 748 flags, | 733 NULL, empty_cert_list_, &verify_result); |
| 749 NULL, | |
| 750 empty_cert_list_, | |
| 751 &verify_result); | |
| 752 EXPECT_EQ(OK, error); | 734 EXPECT_EQ(OK, error); |
| 753 EXPECT_EQ(0U, verify_result.cert_status); | 735 EXPECT_EQ(0U, verify_result.cert_status); |
| 754 | 736 |
| 755 // Trust the root cert and distrust the intermediate. | 737 // Trust the root cert and distrust the intermediate. |
| 756 EXPECT_TRUE(cert_db_->SetCertTrust( | 738 EXPECT_TRUE(cert_db_->SetCertTrust( |
| 757 ca_certs[0].get(), CA_CERT, NSSCertDatabase::TRUSTED_SSL)); | 739 ca_certs[0].get(), CA_CERT, NSSCertDatabase::TRUSTED_SSL)); |
| 758 EXPECT_TRUE(cert_db_->SetCertTrust( | 740 EXPECT_TRUE(cert_db_->SetCertTrust( |
| 759 intermediate_certs[0].get(), CA_CERT, NSSCertDatabase::DISTRUSTED_SSL)); | 741 intermediate_certs[0].get(), CA_CERT, NSSCertDatabase::DISTRUSTED_SSL)); |
| 760 EXPECT_EQ( | 742 EXPECT_EQ( |
| 761 unsigned(CERTDB_VALID_CA | CERTDB_TRUSTED_CA | CERTDB_TRUSTED_CLIENT_CA), | 743 unsigned(CERTDB_VALID_CA | CERTDB_TRUSTED_CA | CERTDB_TRUSTED_CLIENT_CA), |
| 762 ca_certs[0]->os_cert_handle()->trust->sslFlags); | 744 ca_certs[0]->os_cert_handle()->trust->sslFlags); |
| 763 EXPECT_EQ(unsigned(CERTDB_VALID_CA), | 745 EXPECT_EQ(unsigned(CERTDB_VALID_CA), |
| 764 ca_certs[0]->os_cert_handle()->trust->emailFlags); | 746 ca_certs[0]->os_cert_handle()->trust->emailFlags); |
| 765 EXPECT_EQ(unsigned(CERTDB_VALID_CA), | 747 EXPECT_EQ(unsigned(CERTDB_VALID_CA), |
| 766 ca_certs[0]->os_cert_handle()->trust->objectSigningFlags); | 748 ca_certs[0]->os_cert_handle()->trust->objectSigningFlags); |
| 767 EXPECT_EQ(unsigned(CERTDB_TERMINAL_RECORD), | 749 EXPECT_EQ(unsigned(CERTDB_TERMINAL_RECORD), |
| 768 intermediate_certs[0]->os_cert_handle()->trust->sslFlags); | 750 intermediate_certs[0]->os_cert_handle()->trust->sslFlags); |
| 769 EXPECT_EQ(unsigned(CERTDB_VALID_CA), | 751 EXPECT_EQ(unsigned(CERTDB_VALID_CA), |
| 770 intermediate_certs[0]->os_cert_handle()->trust->emailFlags); | 752 intermediate_certs[0]->os_cert_handle()->trust->emailFlags); |
| 771 EXPECT_EQ( | 753 EXPECT_EQ( |
| 772 unsigned(CERTDB_VALID_CA), | 754 unsigned(CERTDB_VALID_CA), |
| 773 intermediate_certs[0]->os_cert_handle()->trust->objectSigningFlags); | 755 intermediate_certs[0]->os_cert_handle()->trust->objectSigningFlags); |
| 774 | 756 |
| 775 // Server cert should fail to verify. | 757 // Server cert should fail to verify. |
| 776 CertVerifyResult verify_result2; | 758 CertVerifyResult verify_result2; |
| 777 error = verify_proc->Verify(certs[0].get(), | 759 error = verify_proc->Verify(certs[0].get(), "127.0.0.1", std::string(), flags, |
| 778 "127.0.0.1", | 760 NULL, empty_cert_list_, &verify_result2); |
| 779 flags, | |
| 780 NULL, | |
| 781 empty_cert_list_, | |
| 782 &verify_result2); | |
| 783 EXPECT_EQ(ERR_CERT_REVOKED, error); | 761 EXPECT_EQ(ERR_CERT_REVOKED, error); |
| 784 EXPECT_EQ(CERT_STATUS_REVOKED, verify_result2.cert_status); | 762 EXPECT_EQ(CERT_STATUS_REVOKED, verify_result2.cert_status); |
| 785 } | 763 } |
| 786 | 764 |
| 787 TEST_F(CertDatabaseNSSTest, TrustIntermediateCa2) { | 765 TEST_F(CertDatabaseNSSTest, TrustIntermediateCa2) { |
| 788 if (NSS_VersionCheck("3.14.2") && !NSS_VersionCheck("3.15")) { | 766 if (NSS_VersionCheck("3.14.2") && !NSS_VersionCheck("3.15")) { |
| 789 // See http://bugzil.la/863947 for details. | 767 // See http://bugzil.la/863947 for details. |
| 790 LOG(INFO) << "Skipping test for NSS 3.14.2 - NSS 3.15"; | 768 LOG(INFO) << "Skipping test for NSS 3.14.2 - NSS 3.15"; |
| 791 return; | 769 return; |
| 792 } | 770 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 812 EXPECT_TRUE(cert_db_->ImportServerCert( | 790 EXPECT_TRUE(cert_db_->ImportServerCert( |
| 813 certs, NSSCertDatabase::TRUST_DEFAULT, &failed)); | 791 certs, NSSCertDatabase::TRUST_DEFAULT, &failed)); |
| 814 EXPECT_EQ(0U, failed.size()); | 792 EXPECT_EQ(0U, failed.size()); |
| 815 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, | 793 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, |
| 816 cert_db_->GetCertTrust(certs[0].get(), SERVER_CERT)); | 794 cert_db_->GetCertTrust(certs[0].get(), SERVER_CERT)); |
| 817 | 795 |
| 818 // Server cert should verify. | 796 // Server cert should verify. |
| 819 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); | 797 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); |
| 820 int flags = 0; | 798 int flags = 0; |
| 821 CertVerifyResult verify_result; | 799 CertVerifyResult verify_result; |
| 822 int error = verify_proc->Verify(certs[0].get(), | 800 int error = |
| 823 "127.0.0.1", | 801 verify_proc->Verify(certs[0].get(), "127.0.0.1", std::string(), flags, |
| 824 flags, | 802 NULL, empty_cert_list_, &verify_result); |
| 825 NULL, | |
| 826 empty_cert_list_, | |
| 827 &verify_result); | |
| 828 EXPECT_EQ(OK, error); | 803 EXPECT_EQ(OK, error); |
| 829 EXPECT_EQ(0U, verify_result.cert_status); | 804 EXPECT_EQ(0U, verify_result.cert_status); |
| 830 | 805 |
| 831 // Without explicit trust of the intermediate, verification should fail. | 806 // Without explicit trust of the intermediate, verification should fail. |
| 832 EXPECT_TRUE(cert_db_->SetCertTrust( | 807 EXPECT_TRUE(cert_db_->SetCertTrust( |
| 833 intermediate_certs[0].get(), CA_CERT, NSSCertDatabase::TRUST_DEFAULT)); | 808 intermediate_certs[0].get(), CA_CERT, NSSCertDatabase::TRUST_DEFAULT)); |
| 834 | 809 |
| 835 // Server cert should fail to verify. | 810 // Server cert should fail to verify. |
| 836 CertVerifyResult verify_result2; | 811 CertVerifyResult verify_result2; |
| 837 error = verify_proc->Verify(certs[0].get(), | 812 error = verify_proc->Verify(certs[0].get(), "127.0.0.1", std::string(), flags, |
| 838 "127.0.0.1", | 813 NULL, empty_cert_list_, &verify_result2); |
| 839 flags, | |
| 840 NULL, | |
| 841 empty_cert_list_, | |
| 842 &verify_result2); | |
| 843 EXPECT_EQ(ERR_CERT_AUTHORITY_INVALID, error); | 814 EXPECT_EQ(ERR_CERT_AUTHORITY_INVALID, error); |
| 844 EXPECT_EQ(CERT_STATUS_AUTHORITY_INVALID, verify_result2.cert_status); | 815 EXPECT_EQ(CERT_STATUS_AUTHORITY_INVALID, verify_result2.cert_status); |
| 845 } | 816 } |
| 846 | 817 |
| 847 TEST_F(CertDatabaseNSSTest, TrustIntermediateCa3) { | 818 TEST_F(CertDatabaseNSSTest, TrustIntermediateCa3) { |
| 848 if (NSS_VersionCheck("3.14.2") && !NSS_VersionCheck("3.15")) { | 819 if (NSS_VersionCheck("3.14.2") && !NSS_VersionCheck("3.15")) { |
| 849 // See http://bugzil.la/863947 for details. | 820 // See http://bugzil.la/863947 for details. |
| 850 LOG(INFO) << "Skipping test for NSS 3.14.2 - NSS 3.15"; | 821 LOG(INFO) << "Skipping test for NSS 3.14.2 - NSS 3.15"; |
| 851 return; | 822 return; |
| 852 } | 823 } |
| (...skipping 29 matching lines...) Expand all Loading... |
| 882 EXPECT_TRUE(cert_db_->ImportServerCert( | 853 EXPECT_TRUE(cert_db_->ImportServerCert( |
| 883 certs, NSSCertDatabase::TRUST_DEFAULT, &failed)); | 854 certs, NSSCertDatabase::TRUST_DEFAULT, &failed)); |
| 884 EXPECT_EQ(0U, failed.size()); | 855 EXPECT_EQ(0U, failed.size()); |
| 885 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, | 856 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, |
| 886 cert_db_->GetCertTrust(certs[0].get(), SERVER_CERT)); | 857 cert_db_->GetCertTrust(certs[0].get(), SERVER_CERT)); |
| 887 | 858 |
| 888 // Server cert should verify. | 859 // Server cert should verify. |
| 889 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); | 860 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); |
| 890 int flags = 0; | 861 int flags = 0; |
| 891 CertVerifyResult verify_result; | 862 CertVerifyResult verify_result; |
| 892 int error = verify_proc->Verify(certs[0].get(), | 863 int error = |
| 893 "127.0.0.1", | 864 verify_proc->Verify(certs[0].get(), "127.0.0.1", std::string(), flags, |
| 894 flags, | 865 NULL, empty_cert_list_, &verify_result); |
| 895 NULL, | |
| 896 empty_cert_list_, | |
| 897 &verify_result); | |
| 898 EXPECT_EQ(OK, error); | 866 EXPECT_EQ(OK, error); |
| 899 EXPECT_EQ(0U, verify_result.cert_status); | 867 EXPECT_EQ(0U, verify_result.cert_status); |
| 900 | 868 |
| 901 // Without explicit trust of the intermediate, verification should fail. | 869 // Without explicit trust of the intermediate, verification should fail. |
| 902 EXPECT_TRUE(cert_db_->SetCertTrust( | 870 EXPECT_TRUE(cert_db_->SetCertTrust( |
| 903 intermediate_certs[0].get(), CA_CERT, NSSCertDatabase::TRUST_DEFAULT)); | 871 intermediate_certs[0].get(), CA_CERT, NSSCertDatabase::TRUST_DEFAULT)); |
| 904 | 872 |
| 905 // Server cert should fail to verify. | 873 // Server cert should fail to verify. |
| 906 CertVerifyResult verify_result2; | 874 CertVerifyResult verify_result2; |
| 907 error = verify_proc->Verify(certs[0].get(), | 875 error = verify_proc->Verify(certs[0].get(), "127.0.0.1", std::string(), flags, |
| 908 "127.0.0.1", | 876 NULL, empty_cert_list_, &verify_result2); |
| 909 flags, | |
| 910 NULL, | |
| 911 empty_cert_list_, | |
| 912 &verify_result2); | |
| 913 EXPECT_EQ(ERR_CERT_AUTHORITY_INVALID, error); | 877 EXPECT_EQ(ERR_CERT_AUTHORITY_INVALID, error); |
| 914 EXPECT_EQ(CERT_STATUS_AUTHORITY_INVALID, verify_result2.cert_status); | 878 EXPECT_EQ(CERT_STATUS_AUTHORITY_INVALID, verify_result2.cert_status); |
| 915 } | 879 } |
| 916 | 880 |
| 917 TEST_F(CertDatabaseNSSTest, TrustIntermediateCa4) { | 881 TEST_F(CertDatabaseNSSTest, TrustIntermediateCa4) { |
| 918 NSSCertDatabase::ImportCertFailureList failed; | 882 NSSCertDatabase::ImportCertFailureList failed; |
| 919 | 883 |
| 920 CertificateList ca_certs = CreateCertificateListFromFile( | 884 CertificateList ca_certs = CreateCertificateListFromFile( |
| 921 GetTestCertsDirectory(), "2048-rsa-root.pem", | 885 GetTestCertsDirectory(), "2048-rsa-root.pem", |
| 922 X509Certificate::FORMAT_AUTO); | 886 X509Certificate::FORMAT_AUTO); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 946 EXPECT_TRUE(cert_db_->ImportServerCert( | 910 EXPECT_TRUE(cert_db_->ImportServerCert( |
| 947 certs, NSSCertDatabase::TRUST_DEFAULT, &failed)); | 911 certs, NSSCertDatabase::TRUST_DEFAULT, &failed)); |
| 948 EXPECT_EQ(0U, failed.size()); | 912 EXPECT_EQ(0U, failed.size()); |
| 949 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, | 913 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, |
| 950 cert_db_->GetCertTrust(certs[0].get(), SERVER_CERT)); | 914 cert_db_->GetCertTrust(certs[0].get(), SERVER_CERT)); |
| 951 | 915 |
| 952 // Server cert should not verify. | 916 // Server cert should not verify. |
| 953 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); | 917 scoped_refptr<CertVerifyProc> verify_proc(new CertVerifyProcNSS()); |
| 954 int flags = 0; | 918 int flags = 0; |
| 955 CertVerifyResult verify_result; | 919 CertVerifyResult verify_result; |
| 956 int error = verify_proc->Verify(certs[0].get(), | 920 int error = |
| 957 "127.0.0.1", | 921 verify_proc->Verify(certs[0].get(), "127.0.0.1", std::string(), flags, |
| 958 flags, | 922 NULL, empty_cert_list_, &verify_result); |
| 959 NULL, | |
| 960 empty_cert_list_, | |
| 961 &verify_result); | |
| 962 EXPECT_EQ(ERR_CERT_REVOKED, error); | 923 EXPECT_EQ(ERR_CERT_REVOKED, error); |
| 963 EXPECT_EQ(CERT_STATUS_REVOKED, verify_result.cert_status); | 924 EXPECT_EQ(CERT_STATUS_REVOKED, verify_result.cert_status); |
| 964 | 925 |
| 965 // Without explicit distrust of the intermediate, verification should succeed. | 926 // Without explicit distrust of the intermediate, verification should succeed. |
| 966 EXPECT_TRUE(cert_db_->SetCertTrust( | 927 EXPECT_TRUE(cert_db_->SetCertTrust( |
| 967 intermediate_certs[0].get(), CA_CERT, NSSCertDatabase::TRUST_DEFAULT)); | 928 intermediate_certs[0].get(), CA_CERT, NSSCertDatabase::TRUST_DEFAULT)); |
| 968 | 929 |
| 969 // Server cert should verify. | 930 // Server cert should verify. |
| 970 CertVerifyResult verify_result2; | 931 CertVerifyResult verify_result2; |
| 971 error = verify_proc->Verify(certs[0].get(), | 932 error = verify_proc->Verify(certs[0].get(), "127.0.0.1", std::string(), flags, |
| 972 "127.0.0.1", | 933 NULL, empty_cert_list_, &verify_result2); |
| 973 flags, | |
| 974 NULL, | |
| 975 empty_cert_list_, | |
| 976 &verify_result2); | |
| 977 EXPECT_EQ(OK, error); | 934 EXPECT_EQ(OK, error); |
| 978 EXPECT_EQ(0U, verify_result2.cert_status); | 935 EXPECT_EQ(0U, verify_result2.cert_status); |
| 979 } | 936 } |
| 980 | 937 |
| 981 // Importing two certificates with the same issuer and subject common name, | 938 // Importing two certificates with the same issuer and subject common name, |
| 982 // but overall distinct subject names, should succeed and generate a unique | 939 // but overall distinct subject names, should succeed and generate a unique |
| 983 // nickname for the second certificate. | 940 // nickname for the second certificate. |
| 984 TEST_F(CertDatabaseNSSTest, ImportDuplicateCommonName) { | 941 TEST_F(CertDatabaseNSSTest, ImportDuplicateCommonName) { |
| 985 CertificateList certs = | 942 CertificateList certs = |
| 986 CreateCertificateListFromFile(GetTestCertsDirectory(), | 943 CreateCertificateListFromFile(GetTestCertsDirectory(), |
| (...skipping 28 matching lines...) Expand all Loading... |
| 1015 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, | 972 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, |
| 1016 cert_db_->GetCertTrust(certs2[0].get(), SERVER_CERT)); | 973 cert_db_->GetCertTrust(certs2[0].get(), SERVER_CERT)); |
| 1017 | 974 |
| 1018 new_certs = ListCerts(); | 975 new_certs = ListCerts(); |
| 1019 ASSERT_EQ(2U, new_certs.size()); | 976 ASSERT_EQ(2U, new_certs.size()); |
| 1020 EXPECT_STRNE(new_certs[0]->os_cert_handle()->nickname, | 977 EXPECT_STRNE(new_certs[0]->os_cert_handle()->nickname, |
| 1021 new_certs[1]->os_cert_handle()->nickname); | 978 new_certs[1]->os_cert_handle()->nickname); |
| 1022 } | 979 } |
| 1023 | 980 |
| 1024 } // namespace net | 981 } // namespace net |
| OLD | NEW |