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