Chromium Code Reviews| 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 "net/cert/cert_verify_proc.h" | 5 #include "net/cert/cert_verify_proc.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/callback_helpers.h" | 9 #include "base/callback_helpers.h" |
| 10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
| (...skipping 1644 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1655 | 1655 |
| 1656 // ... unless VERIFY_ENABLE_SHA1_LOCAL_ANCHORS was supplied. | 1656 // ... unless VERIFY_ENABLE_SHA1_LOCAL_ANCHORS was supplied. |
| 1657 flags = CertVerifier::VERIFY_ENABLE_SHA1_LOCAL_ANCHORS; | 1657 flags = CertVerifier::VERIFY_ENABLE_SHA1_LOCAL_ANCHORS; |
| 1658 verify_result.Reset(); | 1658 verify_result.Reset(); |
| 1659 error = Verify(cert.get(), "127.0.0.1", flags, nullptr /* crl_set */, | 1659 error = Verify(cert.get(), "127.0.0.1", flags, nullptr /* crl_set */, |
| 1660 empty_cert_list_, &verify_result); | 1660 empty_cert_list_, &verify_result); |
| 1661 EXPECT_THAT(error, IsOk()); | 1661 EXPECT_THAT(error, IsOk()); |
| 1662 EXPECT_TRUE(verify_result.cert_status & CERT_STATUS_SHA1_SIGNATURE_PRESENT); | 1662 EXPECT_TRUE(verify_result.cert_status & CERT_STATUS_SHA1_SIGNATURE_PRESENT); |
| 1663 } | 1663 } |
| 1664 | 1664 |
| 1665 enum ExpectedAlgorithms { | |
| 1666 EXPECT_MD2 = 1 << 0, | |
| 1667 EXPECT_MD4 = 1 << 1, | |
| 1668 EXPECT_MD5 = 1 << 2, | |
| 1669 EXPECT_SHA1 = 1 << 3, | |
| 1670 EXPECT_SHA1_LEAF = 1 << 4, | |
| 1671 }; | |
| 1672 | |
| 1673 struct WeakDigestTestData { | 1665 struct WeakDigestTestData { |
| 1674 const char* root_cert_filename; | 1666 const char* cert_filename; |
| 1675 const char* intermediate_cert_filename; | 1667 X509Certificate::SignatureHashAlgorithm expected_algorithm; |
| 1676 const char* ee_cert_filename; | |
| 1677 int expected_algorithms; | |
| 1678 }; | 1668 }; |
| 1679 | 1669 |
| 1680 // GTest 'magic' pretty-printer, so that if/when a test fails, it knows how | 1670 // GTest 'magic' pretty-printer, so that if/when a test fails, it knows how |
| 1681 // to output the parameter that was passed. Without this, it will simply | 1671 // to output the parameter that was passed. Without this, it will simply |
| 1682 // attempt to print out the first twenty bytes of the object, which depending | 1672 // attempt to print out the first twenty bytes of the object, which depending |
| 1683 // on platform and alignment, may result in an invalid read. | 1673 // on platform and alignment, may result in an invalid read. |
| 1684 void PrintTo(const WeakDigestTestData& data, std::ostream* os) { | 1674 void PrintTo(const WeakDigestTestData& data, std::ostream* os) { |
| 1685 *os << "root: " | 1675 *os << "cert: " << data.cert_filename; |
| 1686 << (data.root_cert_filename ? data.root_cert_filename : "none") | |
| 1687 << "; intermediate: " << data.intermediate_cert_filename | |
| 1688 << "; end-entity: " << data.ee_cert_filename; | |
| 1689 } | 1676 } |
| 1690 | 1677 |
| 1691 class CertVerifyProcWeakDigestTest | 1678 class CertVerifyProcWeakDigestTest |
| 1692 : public CertVerifyProcTest, | 1679 : public CertVerifyProcTest, |
| 1693 public testing::WithParamInterface<WeakDigestTestData> { | 1680 public testing::WithParamInterface<WeakDigestTestData> { |
| 1694 public: | 1681 public: |
| 1695 CertVerifyProcWeakDigestTest() {} | 1682 CertVerifyProcWeakDigestTest() {} |
| 1696 virtual ~CertVerifyProcWeakDigestTest() {} | 1683 virtual ~CertVerifyProcWeakDigestTest() {} |
| 1697 }; | 1684 }; |
| 1698 | 1685 |
| 1699 // Test that the underlying cryptographic library properly surfaces the | 1686 // Test that the underlying cryptographic library properly surfaces the |
| 1700 // algorithms used in the chain. Some libraries, like NSS, don't return | 1687 // algorithm used in a certificate. |
| 1701 // the failing chain on error, and thus not all tests can be run. | |
| 1702 TEST_P(CertVerifyProcWeakDigestTest, VerifyDetectsAlgorithm) { | 1688 TEST_P(CertVerifyProcWeakDigestTest, VerifyDetectsAlgorithm) { |
|
Ryan Sleevi
2017/01/06 02:27:14
So, a few behaviour changes worth calling out:
1)
| |
| 1703 WeakDigestTestData data = GetParam(); | 1689 WeakDigestTestData data = GetParam(); |
| 1704 base::FilePath certs_dir = GetTestCertsDirectory(); | 1690 base::FilePath certs_dir = GetTestCertsDirectory(); |
| 1705 | 1691 |
| 1706 ScopedTestRoot test_root; | 1692 scoped_refptr<X509Certificate> cert = |
| 1707 if (data.root_cert_filename) { | 1693 ImportCertFromFile(certs_dir, data.cert_filename); |
| 1708 scoped_refptr<X509Certificate> root_cert = | 1694 ASSERT_TRUE(cert); |
| 1709 ImportCertFromFile(certs_dir, data.root_cert_filename); | 1695 |
| 1710 ASSERT_TRUE(root_cert); | 1696 bool expected_has_md2 = |
| 1711 test_root.Reset(root_cert.get()); | 1697 data.expected_algorithm == X509Certificate::kSignatureHashAlgorithmMd2; |
| 1698 bool expected_has_md4 = | |
| 1699 data.expected_algorithm == X509Certificate::kSignatureHashAlgorithmMd4; | |
| 1700 bool expected_has_md5 = | |
| 1701 data.expected_algorithm == X509Certificate::kSignatureHashAlgorithmMd5; | |
| 1702 bool expected_has_sha1 = | |
| 1703 data.expected_algorithm == X509Certificate::kSignatureHashAlgorithmSha1; | |
| 1704 | |
| 1705 // Try verifying with both is_leaf=true, and is_leaf=false. | |
| 1706 for (bool is_leaf : {true, false}) { | |
| 1707 // Fill the weak hash algorithm information using a default-initialized | |
| 1708 // CertVerifyResult (each of has_XXX will be false). | |
| 1709 CertVerifyResult verify_result; | |
| 1710 X509Certificate::SignatureHashAlgorithm hash_algorithm = | |
| 1711 FillCertVerifyResultWeakSignature(cert->os_cert_handle(), is_leaf, | |
| 1712 &verify_result); | |
| 1713 | |
| 1714 EXPECT_EQ(data.expected_algorithm, hash_algorithm); | |
| 1715 | |
| 1716 EXPECT_EQ(expected_has_md2, verify_result.has_md2); | |
| 1717 EXPECT_EQ(expected_has_md4, verify_result.has_md4); | |
| 1718 EXPECT_EQ(expected_has_md5, verify_result.has_md5); | |
| 1719 EXPECT_EQ(expected_has_sha1, verify_result.has_sha1); | |
| 1720 EXPECT_EQ(expected_has_sha1 && is_leaf, verify_result.has_sha1_leaf); | |
| 1712 } | 1721 } |
| 1713 | 1722 |
| 1714 scoped_refptr<X509Certificate> intermediate_cert = | 1723 // TODO(eroman): Verify that values are not re-set to false when not |
| 1715 ImportCertFromFile(certs_dir, data.intermediate_cert_filename); | 1724 // applicable. |
|
Ryan Sleevi
2017/01/06 02:27:14
I'm not sure why this TODO?
| |
| 1716 ASSERT_TRUE(intermediate_cert); | |
| 1717 scoped_refptr<X509Certificate> ee_cert = | |
| 1718 ImportCertFromFile(certs_dir, data.ee_cert_filename); | |
| 1719 ASSERT_TRUE(ee_cert); | |
| 1720 | |
| 1721 X509Certificate::OSCertHandles intermediates; | |
| 1722 intermediates.push_back(intermediate_cert->os_cert_handle()); | |
| 1723 | |
| 1724 scoped_refptr<X509Certificate> ee_chain = | |
| 1725 X509Certificate::CreateFromHandle(ee_cert->os_cert_handle(), | |
| 1726 intermediates); | |
| 1727 ASSERT_TRUE(ee_chain); | |
| 1728 | |
| 1729 int flags = 0; | |
| 1730 CertVerifyResult verify_result; | |
| 1731 Verify(ee_chain.get(), "127.0.0.1", flags, NULL, empty_cert_list_, | |
| 1732 &verify_result); | |
| 1733 EXPECT_EQ(!!(data.expected_algorithms & EXPECT_MD2), verify_result.has_md2); | |
| 1734 EXPECT_EQ(!!(data.expected_algorithms & EXPECT_MD4), verify_result.has_md4); | |
| 1735 EXPECT_EQ(!!(data.expected_algorithms & EXPECT_MD5), verify_result.has_md5); | |
| 1736 EXPECT_EQ(!!(data.expected_algorithms & EXPECT_SHA1), verify_result.has_sha1); | |
| 1737 EXPECT_EQ(!!(data.expected_algorithms & EXPECT_SHA1_LEAF), | |
| 1738 verify_result.has_sha1_leaf); | |
| 1739 } | 1725 } |
| 1740 | 1726 |
| 1741 // Unlike TEST/TEST_F, which are macros that expand to further macros, | 1727 const WeakDigestTestData kVerifyWeakSignatureData[] = { |
| 1742 // INSTANTIATE_TEST_CASE_P is a macro that expands directly to code that | 1728 {"weak_digest_md5_intermediate.pem", |
| 1743 // stringizes the arguments. As a result, macros passed as parameters (such as | 1729 X509Certificate::kSignatureHashAlgorithmMd5}, |
| 1744 // prefix or test_case_name) will not be expanded by the preprocessor. To work | 1730 {"weak_digest_md4_intermediate.pem", |
| 1745 // around this, indirect the macro for INSTANTIATE_TEST_CASE_P, so that the | 1731 X509Certificate::kSignatureHashAlgorithmMd4}, |
| 1746 // pre-processor will expand macros such as MAYBE_test_name before | 1732 {"weak_digest_md2_intermediate.pem", |
| 1747 // instantiating the test. | 1733 X509Certificate::kSignatureHashAlgorithmMd2}, |
| 1748 #define WRAPPED_INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \ | 1734 {"weak_digest_sha1_ee.pem", X509Certificate::kSignatureHashAlgorithmSha1}, |
| 1749 INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) | 1735 }; |
| 1750 | 1736 |
| 1751 // The signature algorithm of the root CA should not matter. | 1737 INSTANTIATE_TEST_CASE_P(, |
| 1752 const WeakDigestTestData kVerifyRootCATestData[] = { | |
| 1753 {"weak_digest_md5_root.pem", "weak_digest_sha1_intermediate.pem", | |
| 1754 "weak_digest_sha1_ee.pem", EXPECT_SHA1 | EXPECT_SHA1_LEAF}, | |
| 1755 #if defined(USE_OPENSSL_CERTS) || defined(OS_WIN) | |
| 1756 // MD4 is not supported by OS X / NSS | |
| 1757 {"weak_digest_md4_root.pem", "weak_digest_sha1_intermediate.pem", | |
| 1758 "weak_digest_sha1_ee.pem", EXPECT_SHA1 | EXPECT_SHA1_LEAF}, | |
| 1759 #endif | |
| 1760 {"weak_digest_md2_root.pem", "weak_digest_sha1_intermediate.pem", | |
| 1761 "weak_digest_sha1_ee.pem", EXPECT_SHA1 | EXPECT_SHA1_LEAF}, | |
| 1762 }; | |
| 1763 INSTANTIATE_TEST_CASE_P(VerifyRoot, | |
| 1764 CertVerifyProcWeakDigestTest, | 1738 CertVerifyProcWeakDigestTest, |
| 1765 testing::ValuesIn(kVerifyRootCATestData)); | 1739 testing::ValuesIn(kVerifyWeakSignatureData)); |
| 1766 | |
| 1767 // The signature algorithm of intermediates should be properly detected. | |
| 1768 const WeakDigestTestData kVerifyIntermediateCATestData[] = { | |
| 1769 {"weak_digest_sha1_root.pem", "weak_digest_md5_intermediate.pem", | |
| 1770 "weak_digest_sha1_ee.pem", EXPECT_MD5 | EXPECT_SHA1 | EXPECT_SHA1_LEAF}, | |
| 1771 #if defined(USE_OPENSSL_CERTS) || defined(OS_WIN) | |
| 1772 // MD4 is not supported by OS X / NSS | |
| 1773 {"weak_digest_sha1_root.pem", "weak_digest_md4_intermediate.pem", | |
| 1774 "weak_digest_sha1_ee.pem", EXPECT_MD4 | EXPECT_SHA1 | EXPECT_SHA1_LEAF}, | |
| 1775 #endif | |
| 1776 {"weak_digest_sha1_root.pem", "weak_digest_md2_intermediate.pem", | |
| 1777 "weak_digest_sha1_ee.pem", EXPECT_MD2 | EXPECT_SHA1 | EXPECT_SHA1_LEAF}, | |
| 1778 }; | |
| 1779 // Disabled on NSS - MD4 is not supported, and MD2 and MD5 are disabled. | |
| 1780 #if defined(USE_NSS_CERTS) || defined(OS_IOS) | |
| 1781 #define MAYBE_VerifyIntermediate DISABLED_VerifyIntermediate | |
| 1782 #else | |
| 1783 #define MAYBE_VerifyIntermediate VerifyIntermediate | |
| 1784 #endif | |
| 1785 WRAPPED_INSTANTIATE_TEST_CASE_P( | |
| 1786 MAYBE_VerifyIntermediate, | |
| 1787 CertVerifyProcWeakDigestTest, | |
| 1788 testing::ValuesIn(kVerifyIntermediateCATestData)); | |
| 1789 | |
| 1790 // The signature algorithm of end-entity should be properly detected. | |
| 1791 const WeakDigestTestData kVerifyEndEntityTestData[] = { | |
| 1792 { "weak_digest_sha1_root.pem", "weak_digest_sha1_intermediate.pem", | |
| 1793 "weak_digest_md5_ee.pem", EXPECT_MD5 | EXPECT_SHA1 }, | |
| 1794 #if defined(USE_OPENSSL_CERTS) || defined(OS_WIN) | |
| 1795 // MD4 is not supported by OS X / NSS | |
| 1796 { "weak_digest_sha1_root.pem", "weak_digest_sha1_intermediate.pem", | |
| 1797 "weak_digest_md4_ee.pem", EXPECT_MD4 | EXPECT_SHA1 }, | |
| 1798 #endif | |
| 1799 { "weak_digest_sha1_root.pem", "weak_digest_sha1_intermediate.pem", | |
| 1800 "weak_digest_md2_ee.pem", EXPECT_MD2 | EXPECT_SHA1 }, | |
| 1801 }; | |
| 1802 // Disabled on NSS - NSS caches chains/signatures in such a way that cannot | |
| 1803 // be cleared until NSS is cleanly shutdown, which is not presently supported | |
| 1804 // in Chromium. | |
| 1805 // OSX 10.12+ stops building the chain at the first weak digest. | |
| 1806 #if defined(USE_NSS_CERTS) || defined(OS_IOS) || defined(OS_MACOSX) | |
| 1807 #define MAYBE_VerifyEndEntity DISABLED_VerifyEndEntity | |
| 1808 #else | |
| 1809 #define MAYBE_VerifyEndEntity VerifyEndEntity | |
| 1810 #endif | |
| 1811 WRAPPED_INSTANTIATE_TEST_CASE_P(MAYBE_VerifyEndEntity, | |
| 1812 CertVerifyProcWeakDigestTest, | |
| 1813 testing::ValuesIn(kVerifyEndEntityTestData)); | |
| 1814 | |
| 1815 // Incomplete chains should still report the status of the intermediate. | |
| 1816 const WeakDigestTestData kVerifyIncompleteIntermediateTestData[] = { | |
| 1817 {NULL, "weak_digest_md5_intermediate.pem", "weak_digest_sha1_ee.pem", | |
| 1818 EXPECT_MD5 | EXPECT_SHA1 | EXPECT_SHA1_LEAF}, | |
| 1819 #if defined(USE_OPENSSL_CERTS) || defined(OS_WIN) | |
| 1820 // MD4 is not supported by OS X / NSS | |
| 1821 {NULL, "weak_digest_md4_intermediate.pem", "weak_digest_sha1_ee.pem", | |
| 1822 EXPECT_MD4 | EXPECT_SHA1 | EXPECT_SHA1_LEAF}, | |
| 1823 #endif | |
| 1824 {NULL, "weak_digest_md2_intermediate.pem", "weak_digest_sha1_ee.pem", | |
| 1825 EXPECT_MD2 | EXPECT_SHA1 | EXPECT_SHA1_LEAF}, | |
| 1826 }; | |
| 1827 // Disabled on NSS - libpkix does not return constructed chains on error, | |
| 1828 // preventing us from detecting/inspecting the verified chain. | |
| 1829 #if defined(USE_NSS_CERTS) || defined(OS_IOS) | |
| 1830 #define MAYBE_VerifyIncompleteIntermediate \ | |
| 1831 DISABLED_VerifyIncompleteIntermediate | |
| 1832 #else | |
| 1833 #define MAYBE_VerifyIncompleteIntermediate VerifyIncompleteIntermediate | |
| 1834 #endif | |
| 1835 WRAPPED_INSTANTIATE_TEST_CASE_P( | |
| 1836 MAYBE_VerifyIncompleteIntermediate, | |
| 1837 CertVerifyProcWeakDigestTest, | |
| 1838 testing::ValuesIn(kVerifyIncompleteIntermediateTestData)); | |
| 1839 | |
| 1840 // Incomplete chains should still report the status of the end-entity. | |
| 1841 const WeakDigestTestData kVerifyIncompleteEETestData[] = { | |
| 1842 { NULL, "weak_digest_sha1_intermediate.pem", "weak_digest_md5_ee.pem", | |
| 1843 EXPECT_MD5 | EXPECT_SHA1 }, | |
| 1844 #if defined(USE_OPENSSL_CERTS) || defined(OS_WIN) | |
| 1845 // MD4 is not supported by OS X / NSS | |
| 1846 { NULL, "weak_digest_sha1_intermediate.pem", "weak_digest_md4_ee.pem", | |
| 1847 EXPECT_MD4 | EXPECT_SHA1 }, | |
| 1848 #endif | |
| 1849 { NULL, "weak_digest_sha1_intermediate.pem", "weak_digest_md2_ee.pem", | |
| 1850 EXPECT_MD2 | EXPECT_SHA1 }, | |
| 1851 }; | |
| 1852 // Disabled on NSS - libpkix does not return constructed chains on error, | |
| 1853 // preventing us from detecting/inspecting the verified chain. | |
| 1854 // OSX 10.12+ stops building the chain at the first weak digest. | |
| 1855 #if defined(USE_NSS_CERTS) || defined(OS_IOS) || defined(OS_MACOSX) | |
| 1856 #define MAYBE_VerifyIncompleteEndEntity DISABLED_VerifyIncompleteEndEntity | |
| 1857 #else | |
| 1858 #define MAYBE_VerifyIncompleteEndEntity VerifyIncompleteEndEntity | |
| 1859 #endif | |
| 1860 WRAPPED_INSTANTIATE_TEST_CASE_P( | |
| 1861 MAYBE_VerifyIncompleteEndEntity, | |
| 1862 CertVerifyProcWeakDigestTest, | |
| 1863 testing::ValuesIn(kVerifyIncompleteEETestData)); | |
| 1864 | |
| 1865 // Differing algorithms between the intermediate and the EE should still be | |
| 1866 // reported. | |
| 1867 const WeakDigestTestData kVerifyMixedTestData[] = { | |
| 1868 { "weak_digest_sha1_root.pem", "weak_digest_md5_intermediate.pem", | |
| 1869 "weak_digest_md2_ee.pem", EXPECT_MD2 | EXPECT_MD5 }, | |
| 1870 { "weak_digest_sha1_root.pem", "weak_digest_md2_intermediate.pem", | |
| 1871 "weak_digest_md5_ee.pem", EXPECT_MD2 | EXPECT_MD5 }, | |
| 1872 #if defined(USE_OPENSSL_CERTS) || defined(OS_WIN) | |
| 1873 // MD4 is not supported by OS X / NSS | |
| 1874 { "weak_digest_sha1_root.pem", "weak_digest_md4_intermediate.pem", | |
| 1875 "weak_digest_md2_ee.pem", EXPECT_MD2 | EXPECT_MD4 }, | |
| 1876 #endif | |
| 1877 }; | |
| 1878 // NSS does not support MD4 and does not enable MD2 by default, making all | |
| 1879 // permutations invalid. | |
| 1880 // OSX 10.12+ stops building the chain at the first weak digest. | |
| 1881 #if defined(USE_NSS_CERTS) || defined(OS_IOS) || defined(OS_MACOSX) | |
| 1882 #define MAYBE_VerifyMixed DISABLED_VerifyMixed | |
| 1883 #else | |
| 1884 #define MAYBE_VerifyMixed VerifyMixed | |
| 1885 #endif | |
| 1886 WRAPPED_INSTANTIATE_TEST_CASE_P( | |
| 1887 MAYBE_VerifyMixed, | |
| 1888 CertVerifyProcWeakDigestTest, | |
| 1889 testing::ValuesIn(kVerifyMixedTestData)); | |
| 1890 | 1740 |
| 1891 // For the list of valid hostnames, see | 1741 // For the list of valid hostnames, see |
| 1892 // net/cert/data/ssl/certificates/subjectAltName_sanity_check.pem | 1742 // net/cert/data/ssl/certificates/subjectAltName_sanity_check.pem |
| 1893 static const struct CertVerifyProcNameData { | 1743 static const struct CertVerifyProcNameData { |
| 1894 const char* hostname; | 1744 const char* hostname; |
| 1895 bool valid; // Whether or not |hostname| matches a subjectAltName. | 1745 bool valid; // Whether or not |hostname| matches a subjectAltName. |
| 1896 } kVerifyNameData[] = { | 1746 } kVerifyNameData[] = { |
| 1897 { "127.0.0.1", false }, // Don't match the common name | 1747 { "127.0.0.1", false }, // Don't match the common name |
| 1898 { "127.0.0.2", true }, // Matches the iPAddress SAN (IPv4) | 1748 { "127.0.0.2", true }, // Matches the iPAddress SAN (IPv4) |
| 1899 { "FE80:0:0:0:0:0:0:1", true }, // Matches the iPAddress SAN (IPv6) | 1749 { "FE80:0:0:0:0:0:0:1", true }, // Matches the iPAddress SAN (IPv6) |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1941 &verify_result); | 1791 &verify_result); |
| 1942 if (data.valid) { | 1792 if (data.valid) { |
| 1943 EXPECT_THAT(error, IsOk()); | 1793 EXPECT_THAT(error, IsOk()); |
| 1944 EXPECT_FALSE(verify_result.cert_status & CERT_STATUS_COMMON_NAME_INVALID); | 1794 EXPECT_FALSE(verify_result.cert_status & CERT_STATUS_COMMON_NAME_INVALID); |
| 1945 } else { | 1795 } else { |
| 1946 EXPECT_THAT(error, IsError(ERR_CERT_COMMON_NAME_INVALID)); | 1796 EXPECT_THAT(error, IsError(ERR_CERT_COMMON_NAME_INVALID)); |
| 1947 EXPECT_TRUE(verify_result.cert_status & CERT_STATUS_COMMON_NAME_INVALID); | 1797 EXPECT_TRUE(verify_result.cert_status & CERT_STATUS_COMMON_NAME_INVALID); |
| 1948 } | 1798 } |
| 1949 } | 1799 } |
| 1950 | 1800 |
| 1951 WRAPPED_INSTANTIATE_TEST_CASE_P( | 1801 INSTANTIATE_TEST_CASE_P(VerifyName, |
| 1952 VerifyName, | 1802 CertVerifyProcNameTest, |
| 1953 CertVerifyProcNameTest, | 1803 testing::ValuesIn(kVerifyNameData)); |
| 1954 testing::ValuesIn(kVerifyNameData)); | |
| 1955 | 1804 |
| 1956 #if defined(OS_MACOSX) && !defined(OS_IOS) | 1805 #if defined(OS_MACOSX) && !defined(OS_IOS) |
| 1957 // Test that CertVerifyProcMac reacts appropriately when Apple's certificate | 1806 // Test that CertVerifyProcMac reacts appropriately when Apple's certificate |
| 1958 // verifier rejects a certificate with a fatal error. This is a regression | 1807 // verifier rejects a certificate with a fatal error. This is a regression |
| 1959 // test for https://crbug.com/472291. | 1808 // test for https://crbug.com/472291. |
| 1960 // (Since 10.12, this causes a recoverable error instead of a fatal one.) | 1809 // (Since 10.12, this causes a recoverable error instead of a fatal one.) |
| 1961 // TODO(mattm): Try to find a different way to cause a fatal error that works | 1810 // TODO(mattm): Try to find a different way to cause a fatal error that works |
| 1962 // on 10.12. | 1811 // on 10.12. |
| 1963 TEST_F(CertVerifyProcTest, LargeKey) { | 1812 TEST_F(CertVerifyProcTest, LargeKey) { |
| 1964 // Load root_ca_cert.pem into the test root store. | 1813 // Load root_ca_cert.pem into the test root store. |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2075 int flags = 0; | 1924 int flags = 0; |
| 2076 CertVerifyResult verify_result; | 1925 CertVerifyResult verify_result; |
| 2077 int error = Verify(cert.get(), "127.0.0.1", flags, NULL, empty_cert_list_, | 1926 int error = Verify(cert.get(), "127.0.0.1", flags, NULL, empty_cert_list_, |
| 2078 &verify_result); | 1927 &verify_result); |
| 2079 EXPECT_EQ(OK, error); | 1928 EXPECT_EQ(OK, error); |
| 2080 histograms.ExpectTotalCount(kTLSFeatureExtensionHistogram, 0); | 1929 histograms.ExpectTotalCount(kTLSFeatureExtensionHistogram, 0); |
| 2081 histograms.ExpectTotalCount(kTLSFeatureExtensionOCSPHistogram, 0); | 1930 histograms.ExpectTotalCount(kTLSFeatureExtensionOCSPHistogram, 0); |
| 2082 } | 1931 } |
| 2083 | 1932 |
| 2084 } // namespace net | 1933 } // namespace net |
| OLD | NEW |