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 |