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 573 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
584 "xn--wgv71a119e.com", | 584 "xn--wgv71a119e.com", |
585 flags, | 585 flags, |
586 NULL, | 586 NULL, |
587 empty_cert_list_, | 587 empty_cert_list_, |
588 &verify_result); | 588 &verify_result); |
589 EXPECT_EQ(ERR_CERT_AUTHORITY_INVALID, error); | 589 EXPECT_EQ(ERR_CERT_AUTHORITY_INVALID, error); |
590 EXPECT_EQ(CERT_STATUS_AUTHORITY_INVALID, verify_result.cert_status); | 590 EXPECT_EQ(CERT_STATUS_AUTHORITY_INVALID, verify_result.cert_status); |
591 } | 591 } |
592 | 592 |
593 TEST_F(CertDatabaseNSSTest, ImportServerCert_SelfSigned_Trusted) { | 593 TEST_F(CertDatabaseNSSTest, ImportServerCert_SelfSigned_Trusted) { |
594 // When using CERT_PKIXVerifyCert (which we do), server trust only works from | |
595 // 3.13.4 onwards. See https://bugzilla.mozilla.org/show_bug.cgi?id=647364. | |
596 if (!NSS_VersionCheck("3.13.4")) { | |
597 LOG(INFO) << "test skipped on NSS < 3.13.4"; | |
598 return; | |
599 } | |
600 | |
601 CertificateList certs; | 594 CertificateList certs; |
602 ASSERT_TRUE(ReadCertIntoList("punycodetest.der", &certs)); | 595 ASSERT_TRUE(ReadCertIntoList("punycodetest.der", &certs)); |
603 | 596 |
604 NSSCertDatabase::ImportCertFailureList failed; | 597 NSSCertDatabase::ImportCertFailureList failed; |
605 EXPECT_TRUE(cert_db_->ImportServerCert(certs, NSSCertDatabase::TRUSTED_SSL, | 598 EXPECT_TRUE(cert_db_->ImportServerCert(certs, NSSCertDatabase::TRUSTED_SSL, |
606 &failed)); | 599 &failed)); |
607 | 600 |
608 EXPECT_EQ(0U, failed.size()); | 601 EXPECT_EQ(0U, failed.size()); |
609 | 602 |
610 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); | 603 CertificateList cert_list = ListCertsInSlot(slot_->os_module_handle()); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
659 "127.0.0.1", | 652 "127.0.0.1", |
660 flags, | 653 flags, |
661 NULL, | 654 NULL, |
662 empty_cert_list_, | 655 empty_cert_list_, |
663 &verify_result); | 656 &verify_result); |
664 EXPECT_EQ(OK, error); | 657 EXPECT_EQ(OK, error); |
665 EXPECT_EQ(0U, verify_result.cert_status); | 658 EXPECT_EQ(0U, verify_result.cert_status); |
666 } | 659 } |
667 | 660 |
668 TEST_F(CertDatabaseNSSTest, ImportCaAndServerCert_DistrustServer) { | 661 TEST_F(CertDatabaseNSSTest, ImportCaAndServerCert_DistrustServer) { |
669 // Explicit distrust only works starting in NSS 3.13. | |
670 if (!NSS_VersionCheck("3.13")) { | |
671 LOG(INFO) << "test skipped on NSS < 3.13"; | |
672 return; | |
673 } | |
674 | |
675 CertificateList ca_certs = CreateCertificateListFromFile( | 662 CertificateList ca_certs = CreateCertificateListFromFile( |
676 GetTestCertsDirectory(), "root_ca_cert.pem", | 663 GetTestCertsDirectory(), "root_ca_cert.pem", |
677 X509Certificate::FORMAT_AUTO); | 664 X509Certificate::FORMAT_AUTO); |
678 ASSERT_EQ(1U, ca_certs.size()); | 665 ASSERT_EQ(1U, ca_certs.size()); |
679 | 666 |
680 // Import CA cert and trust it. | 667 // Import CA cert and trust it. |
681 NSSCertDatabase::ImportCertFailureList failed; | 668 NSSCertDatabase::ImportCertFailureList failed; |
682 EXPECT_TRUE(cert_db_->ImportCACerts(ca_certs, NSSCertDatabase::TRUSTED_SSL, | 669 EXPECT_TRUE(cert_db_->ImportCACerts(ca_certs, NSSCertDatabase::TRUSTED_SSL, |
683 &failed)); | 670 &failed)); |
684 EXPECT_EQ(0U, failed.size()); | 671 EXPECT_EQ(0U, failed.size()); |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
753 CertVerifyResult verify_result; | 740 CertVerifyResult verify_result; |
754 int error = verify_proc->Verify(certs[0].get(), | 741 int error = verify_proc->Verify(certs[0].get(), |
755 "127.0.0.1", | 742 "127.0.0.1", |
756 flags, | 743 flags, |
757 NULL, | 744 NULL, |
758 empty_cert_list_, | 745 empty_cert_list_, |
759 &verify_result); | 746 &verify_result); |
760 EXPECT_EQ(OK, error); | 747 EXPECT_EQ(OK, error); |
761 EXPECT_EQ(0U, verify_result.cert_status); | 748 EXPECT_EQ(0U, verify_result.cert_status); |
762 | 749 |
763 // Explicit distrust only works starting in NSS 3.13. | |
764 if (!NSS_VersionCheck("3.13")) { | |
765 LOG(INFO) << "test partially skipped on NSS < 3.13"; | |
766 return; | |
767 } | |
768 | |
769 // Trust the root cert and distrust the intermediate. | 750 // Trust the root cert and distrust the intermediate. |
770 EXPECT_TRUE(cert_db_->SetCertTrust( | 751 EXPECT_TRUE(cert_db_->SetCertTrust( |
771 ca_certs[0].get(), CA_CERT, NSSCertDatabase::TRUSTED_SSL)); | 752 ca_certs[0].get(), CA_CERT, NSSCertDatabase::TRUSTED_SSL)); |
772 EXPECT_TRUE(cert_db_->SetCertTrust( | 753 EXPECT_TRUE(cert_db_->SetCertTrust( |
773 intermediate_certs[0].get(), CA_CERT, NSSCertDatabase::DISTRUSTED_SSL)); | 754 intermediate_certs[0].get(), CA_CERT, NSSCertDatabase::DISTRUSTED_SSL)); |
774 EXPECT_EQ( | 755 EXPECT_EQ( |
775 unsigned(CERTDB_VALID_CA | CERTDB_TRUSTED_CA | CERTDB_TRUSTED_CLIENT_CA), | 756 unsigned(CERTDB_VALID_CA | CERTDB_TRUSTED_CA | CERTDB_TRUSTED_CLIENT_CA), |
776 ca_certs[0]->os_cert_handle()->trust->sslFlags); | 757 ca_certs[0]->os_cert_handle()->trust->sslFlags); |
777 EXPECT_EQ(unsigned(CERTDB_VALID_CA), | 758 EXPECT_EQ(unsigned(CERTDB_VALID_CA), |
778 ca_certs[0]->os_cert_handle()->trust->emailFlags); | 759 ca_certs[0]->os_cert_handle()->trust->emailFlags); |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
922 "127.0.0.1", | 903 "127.0.0.1", |
923 flags, | 904 flags, |
924 NULL, | 905 NULL, |
925 empty_cert_list_, | 906 empty_cert_list_, |
926 &verify_result2); | 907 &verify_result2); |
927 EXPECT_EQ(ERR_CERT_AUTHORITY_INVALID, error); | 908 EXPECT_EQ(ERR_CERT_AUTHORITY_INVALID, error); |
928 EXPECT_EQ(CERT_STATUS_AUTHORITY_INVALID, verify_result2.cert_status); | 909 EXPECT_EQ(CERT_STATUS_AUTHORITY_INVALID, verify_result2.cert_status); |
929 } | 910 } |
930 | 911 |
931 TEST_F(CertDatabaseNSSTest, TrustIntermediateCa4) { | 912 TEST_F(CertDatabaseNSSTest, TrustIntermediateCa4) { |
932 // Explicit distrust only works starting in NSS 3.13. | |
933 if (!NSS_VersionCheck("3.13")) { | |
934 LOG(INFO) << "test skipped on NSS < 3.13"; | |
935 return; | |
936 } | |
937 | |
938 NSSCertDatabase::ImportCertFailureList failed; | 913 NSSCertDatabase::ImportCertFailureList failed; |
939 | 914 |
940 CertificateList ca_certs = CreateCertificateListFromFile( | 915 CertificateList ca_certs = CreateCertificateListFromFile( |
941 GetTestCertsDirectory(), "2048-rsa-root.pem", | 916 GetTestCertsDirectory(), "2048-rsa-root.pem", |
942 X509Certificate::FORMAT_AUTO); | 917 X509Certificate::FORMAT_AUTO); |
943 ASSERT_EQ(1U, ca_certs.size()); | 918 ASSERT_EQ(1U, ca_certs.size()); |
944 | 919 |
945 // Import Root CA cert and trust it. | 920 // Import Root CA cert and trust it. |
946 EXPECT_TRUE(cert_db_->ImportCACerts(ca_certs, NSSCertDatabase::TRUSTED_SSL, | 921 EXPECT_TRUE(cert_db_->ImportCACerts(ca_certs, NSSCertDatabase::TRUSTED_SSL, |
947 &failed)); | 922 &failed)); |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1035 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, | 1010 EXPECT_EQ(NSSCertDatabase::TRUST_DEFAULT, |
1036 cert_db_->GetCertTrust(certs2[0].get(), SERVER_CERT)); | 1011 cert_db_->GetCertTrust(certs2[0].get(), SERVER_CERT)); |
1037 | 1012 |
1038 new_certs = ListCertsInSlot(slot_->os_module_handle()); | 1013 new_certs = ListCertsInSlot(slot_->os_module_handle()); |
1039 ASSERT_EQ(2U, new_certs.size()); | 1014 ASSERT_EQ(2U, new_certs.size()); |
1040 EXPECT_STRNE(new_certs[0]->os_cert_handle()->nickname, | 1015 EXPECT_STRNE(new_certs[0]->os_cert_handle()->nickname, |
1041 new_certs[1]->os_cert_handle()->nickname); | 1016 new_certs[1]->os_cert_handle()->nickname); |
1042 } | 1017 } |
1043 | 1018 |
1044 } // namespace net | 1019 } // namespace net |
OLD | NEW |