Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(234)

Side by Side Diff: net/cert/cert_verify_proc_unittest.cc

Issue 1871043003: Fixing BoringSSL on iOS (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 #endif 96 #endif
97 return true; 97 return true;
98 } 98 }
99 99
100 bool SupportsDetectingKnownRoots() { 100 bool SupportsDetectingKnownRoots() {
101 #if defined(OS_ANDROID) 101 #if defined(OS_ANDROID)
102 // Before API level 17, Android does not expose the APIs necessary to get at 102 // Before API level 17, Android does not expose the APIs necessary to get at
103 // the verified certificate chain and detect known roots. 103 // the verified certificate chain and detect known roots.
104 if (base::android::BuildInfo::GetInstance()->sdk_int() < 17) 104 if (base::android::BuildInfo::GetInstance()->sdk_int() < 17)
105 return false; 105 return false;
106 #elif defined(OS_IOS) && defined(USE_OPENSSL)
107 // iOS does not expose the APIs necessary to get the known system roots.
108 return false;
106 #endif 109 #endif
107 return true; 110 return true;
108 } 111 }
109 112
110 // Template helper to load a series of certificate files into a CertificateList. 113 // Template helper to load a series of certificate files into a CertificateList.
111 // Like CertTestUtil's CreateCertificateListFromFile, except it can load a 114 // Like CertTestUtil's CreateCertificateListFromFile, except it can load a
112 // series of individual certificates (to make the tests clearer). 115 // series of individual certificates (to make the tests clearer).
113 template <size_t N> 116 template <size_t N>
114 void LoadCertificateFiles(const char* const (&cert_files)[N], 117 void LoadCertificateFiles(const char* const (&cert_files)[N],
115 CertificateList* certs) { 118 CertificateList* certs) {
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 int flags = 0; 219 int flags = 0;
217 CertVerifyResult verify_result; 220 CertVerifyResult verify_result;
218 int error = Verify(paypal_null_cert.get(), 221 int error = Verify(paypal_null_cert.get(),
219 "www.paypal.com", 222 "www.paypal.com",
220 flags, 223 flags,
221 NULL, 224 NULL,
222 empty_cert_list_, 225 empty_cert_list_,
223 &verify_result); 226 &verify_result);
224 #if defined(USE_NSS_VERIFIER) || defined(OS_ANDROID) 227 #if defined(USE_NSS_VERIFIER) || defined(OS_ANDROID)
225 EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, error); 228 EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, error);
229 #elif defined(OS_IOS)
davidben 2016/04/11 21:46:26 defined(OS_IOS) && TARGET_IPHONE_SIMULATOR? That
svaldez 2016/04/12 14:36:31 Done.
230 // iOS returns a ERR_CERT_INVALID error on the real device, while returning
231 // a ERR_CERT_AUTHORITY_INVALID on the simulator.
232 EXPECT_NE(OK, error);
233 EXPECT_TRUE(verify_result.cert_status &
234 (CERT_STATUS_AUTHORITY_INVALID | CERT_STATUS_INVALID));
226 #else 235 #else
227 // TOOD(bulach): investigate why macosx and win aren't returning 236 // TOOD(bulach): investigate why macosx and win aren't returning
228 // ERR_CERT_INVALID or ERR_CERT_COMMON_NAME_INVALID. 237 // ERR_CERT_INVALID or ERR_CERT_COMMON_NAME_INVALID.
229 EXPECT_EQ(ERR_CERT_AUTHORITY_INVALID, error); 238 EXPECT_EQ(ERR_CERT_AUTHORITY_INVALID, error);
230 #endif 239 #endif
231 // Either the system crypto library should correctly report a certificate 240 // Either the system crypto library should correctly report a certificate
232 // name mismatch, or our certificate blacklist should cause us to report an 241 // name mismatch, or our certificate blacklist should cause us to report an
233 // invalid certificate. 242 // invalid certificate.
234 #if defined(USE_NSS_VERIFIER) || defined(OS_WIN) 243 #if defined(USE_NSS_VERIFIER) || defined(OS_WIN)
235 EXPECT_TRUE(verify_result.cert_status & 244 EXPECT_TRUE(verify_result.cert_status &
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 int error = Verify(cert.get(), 279 int error = Verify(cert.get(),
271 "policy_test.example", 280 "policy_test.example",
272 flags, 281 flags,
273 NULL, 282 NULL,
274 empty_cert_list_, 283 empty_cert_list_,
275 &verify_result); 284 &verify_result);
276 EXPECT_EQ(OK, error); 285 EXPECT_EQ(OK, error);
277 EXPECT_EQ(0u, verify_result.cert_status); 286 EXPECT_EQ(0u, verify_result.cert_status);
278 } 287 }
279 288
289 TEST_F(CertVerifyProcTest, RejectExpiredCert) {
290 base::FilePath certs_dir = GetTestCertsDirectory();
291
292 // Load root_ca_cert.pem into the test root store.
293 ScopedTestRoot test_root(
294 ImportCertFromFile(certs_dir, "root_ca_cert.pem").get());
295
296 CertificateList certs = CreateCertificateListFromFile(
297 certs_dir, "expired_cert.pem", X509Certificate::FORMAT_AUTO);
298 ASSERT_EQ(1U, certs.size());
299
300 X509Certificate::OSCertHandles intermediates;
301 scoped_refptr<X509Certificate> cert = X509Certificate::CreateFromHandle(
302 certs[0]->os_cert_handle(), intermediates);
303
304 int flags = 0;
305 CertVerifyResult verify_result;
306 int error = Verify(cert.get(), "127.0.0.1", flags, NULL, empty_cert_list_,
307 &verify_result);
308 EXPECT_EQ(ERR_CERT_DATE_INVALID, error);
309 EXPECT_TRUE(verify_result.cert_status & CERT_STATUS_DATE_INVALID);
310 }
311
280 // Test that verifying an ECDSA certificate doesn't crash on XP. (See 312 // Test that verifying an ECDSA certificate doesn't crash on XP. (See
281 // crbug.com/144466). 313 // crbug.com/144466).
282 TEST_F(CertVerifyProcTest, ECDSA_RSA) { 314 TEST_F(CertVerifyProcTest, ECDSA_RSA) {
283 base::FilePath certs_dir = GetTestCertsDirectory(); 315 base::FilePath certs_dir = GetTestCertsDirectory();
284 316
285 scoped_refptr<X509Certificate> cert = 317 scoped_refptr<X509Certificate> cert =
286 ImportCertFromFile(certs_dir, 318 ImportCertFromFile(certs_dir,
287 "prime256v1-ecdsa-ee-by-1024-rsa-intermediate.pem"); 319 "prime256v1-ecdsa-ee-by-1024-rsa-intermediate.pem");
288 320
289 CertVerifyResult verify_result; 321 CertVerifyResult verify_result;
(...skipping 806 matching lines...) Expand 10 before | Expand all | Expand 10 after
1096 int flags = 0; 1128 int flags = 0;
1097 CertVerifyResult verify_result; 1129 CertVerifyResult verify_result;
1098 int error = Verify( 1130 int error = Verify(
1099 cert.get(), "127.0.0.1", flags, NULL, empty_cert_list_, &verify_result); 1131 cert.get(), "127.0.0.1", flags, NULL, empty_cert_list_, &verify_result);
1100 EXPECT_EQ(OK, error); 1132 EXPECT_EQ(OK, error);
1101 EXPECT_EQ(0U, verify_result.cert_status); 1133 EXPECT_EQ(0U, verify_result.cert_status);
1102 // But should not be marked as a known root. 1134 // But should not be marked as a known root.
1103 EXPECT_FALSE(verify_result.is_issued_by_known_root); 1135 EXPECT_FALSE(verify_result.is_issued_by_known_root);
1104 } 1136 }
1105 1137
1106 #if defined(USE_NSS_CERTS) || defined(OS_IOS) || defined(OS_WIN) || \ 1138 #if defined(USE_NSS_VERIFIER) || defined(OS_WIN) || \
1107 defined(OS_MACOSX) 1139 (defined(OS_MACOSX) && !defined(OS_IOS))
1108 // Test that CRLSets are effective in making a certificate appear to be 1140 // Test that CRLSets are effective in making a certificate appear to be
1109 // revoked. 1141 // revoked.
1110 TEST_F(CertVerifyProcTest, CRLSet) { 1142 TEST_F(CertVerifyProcTest, CRLSet) {
1111 CertificateList ca_cert_list = 1143 CertificateList ca_cert_list =
1112 CreateCertificateListFromFile(GetTestCertsDirectory(), 1144 CreateCertificateListFromFile(GetTestCertsDirectory(),
1113 "root_ca_cert.pem", 1145 "root_ca_cert.pem",
1114 X509Certificate::FORMAT_AUTO); 1146 X509Certificate::FORMAT_AUTO);
1115 ASSERT_EQ(1U, ca_cert_list.size()); 1147 ASSERT_EQ(1U, ca_cert_list.size());
1116 ScopedTestRoot test_root(ca_cert_list[0].get()); 1148 ScopedTestRoot test_root(ca_cert_list[0].get());
1117 1149
(...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after
1672 int flags = 0; 1704 int flags = 0;
1673 CertVerifyResult verify_result; 1705 CertVerifyResult verify_result;
1674 int error = Verify(cert.get(), "127.0.0.1", flags, NULL, empty_cert_list_, 1706 int error = Verify(cert.get(), "127.0.0.1", flags, NULL, empty_cert_list_,
1675 &verify_result); 1707 &verify_result);
1676 EXPECT_EQ(ERR_CERT_INVALID, error); 1708 EXPECT_EQ(ERR_CERT_INVALID, error);
1677 EXPECT_EQ(CERT_STATUS_INVALID, verify_result.cert_status); 1709 EXPECT_EQ(CERT_STATUS_INVALID, verify_result.cert_status);
1678 } 1710 }
1679 #endif // defined(OS_MACOSX) && !defined(OS_IOS) 1711 #endif // defined(OS_MACOSX) && !defined(OS_IOS)
1680 1712
1681 } // namespace net 1713 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698