Index: ios/web/web_state/wk_web_view_security_util.mm |
diff --git a/ios/web/web_state/wk_web_view_security_util.mm b/ios/web/web_state/wk_web_view_security_util.mm |
index 5b7e446655eda9646d004b66b429f06330a91e8b..fcde80cccc55d7b22adeaaeef5488fea2559bdfd 100644 |
--- a/ios/web/web_state/wk_web_view_security_util.mm |
+++ b/ios/web/web_state/wk_web_view_security_util.mm |
@@ -10,6 +10,10 @@ |
#include "net/cert/x509_util_ios.h" |
#include "net/ssl/ssl_info.h" |
+#if !defined(__has_feature) || !__has_feature(objc_arc) |
+#error "This file requires ARC support." |
+#endif |
+ |
namespace web { |
// These keys were determined by inspecting userInfo dict of an SSL error. |
@@ -50,10 +54,12 @@ scoped_refptr<net::X509Certificate> CreateCertFromChain(NSArray* certs) { |
return nullptr; |
std::vector<SecCertificateRef> intermediates; |
for (NSUInteger i = 1; i < certs.count; i++) { |
- intermediates.push_back(reinterpret_cast<SecCertificateRef>(certs[i])); |
+ SecCertificateRef cert = (__bridge SecCertificateRef)certs[i]; |
+ intermediates.push_back(cert); |
} |
+ SecCertificateRef initialCert = (__bridge SecCertificateRef)certs[0]; |
return net::x509_util::CreateX509CertificateFromSecCertificate( |
- reinterpret_cast<SecCertificateRef>(certs[0]), intermediates); |
+ reinterpret_cast<SecCertificateRef>(initialCert), intermediates); |
} |
scoped_refptr<net::X509Certificate> CreateCertFromTrust(SecTrustRef trust) { |
@@ -83,7 +89,8 @@ base::ScopedCFTypeRef<SecTrustRef> CreateServerTrustFromChain(NSArray* certs, |
base::ScopedCFTypeRef<SecPolicyRef> policy( |
SecPolicyCreateSSL(TRUE, static_cast<CFStringRef>(host))); |
SecTrustRef ref_result = nullptr; |
- if (SecTrustCreateWithCertificates(certs, policy, &ref_result) == |
+ CFArrayRef certificatesArray = (__bridge CFArrayRef)certs; |
+ if (SecTrustCreateWithCertificates(certificatesArray, policy, &ref_result) == |
errSecSuccess) { |
scoped_result.reset(ref_result); |
} |