summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Leege <bleege@gmail.com>2015-04-27 15:42:07 -0400
committerBrad Leege <bleege@gmail.com>2015-04-27 15:42:07 -0400
commit353e5661de9fbe14f5ceb15ede416d7769a7dff0 (patch)
tree0bcfb5c172f4aa4647fd521f4ca0892b55dfd1f0
parente4ebee4a8abc0b082dc7aeec53d02540c8ae7a48 (diff)
parentcde989093baaf8fac2c4287fd462cf419abf1052 (diff)
downloadqtlocation-mapboxgl-353e5661de9fbe14f5ceb15ede416d7769a7dff0.tar.gz
Merge pull request #1348 from mapbox/1307-digicert
Importing Digicert Cert
-rw-r--r--platform/ios/MGLMapboxEvents.m22
-rw-r--r--platform/ios/resources/api_mapbox_com-digicert.derbin0 -> 2077 bytes
2 files changed, 22 insertions, 0 deletions
diff --git a/platform/ios/MGLMapboxEvents.m b/platform/ios/MGLMapboxEvents.m
index b714c927db..87a6ccc6a2 100644
--- a/platform/ios/MGLMapboxEvents.m
+++ b/platform/ios/MGLMapboxEvents.m
@@ -75,6 +75,7 @@ NSString *const MGLEventGestureRotateStart = @"Rotation";
@property (atomic) NSDateFormatter *rfc3339DateFormatter;
@property (atomic) CGFloat scale;
@property (atomic) NSURLSession *session;
+@property (atomic) NSData *digicertCert;
@property (atomic) NSData *geoTrustCert;
@@ -146,6 +147,12 @@ NSString *const MGLEventGestureRotateStart = @"Rotation";
_geoTrustCert = [NSData dataWithContentsOfFile:cerPath];
}
+ cerPath = nil;
+ cerPath = [[NSBundle bundleForClass:[MGLMapboxEvents class]] pathForResource:@"api_mapbox_com-digicert" ofType:@"der"];
+ if (cerPath != nil) {
+ _digicertCert = [NSData dataWithContentsOfFile:cerPath];
+ }
+
// Events Control
_eventQueue = [[NSMutableArray alloc] init];
_flushAt = 20;
@@ -687,6 +694,7 @@ NSString *const MGLEventGestureRotateStart = @"Rotation";
long numKeys = SecTrustGetCertificateCount(serverTrust);
BOOL found = false;
+ // Try GeoTrust Cert First
for (int lc = 0; lc < numKeys; lc++) {
SecCertificateRef certificate = SecTrustGetCertificateAtIndex(serverTrust, lc);
NSData *remoteCertificateData = CFBridgingRelease(SecCertificateCopyData(certificate));
@@ -700,6 +708,20 @@ NSString *const MGLEventGestureRotateStart = @"Rotation";
}
}
+ // Fallback to Digicert Cert
+ for (int lc = 0; lc < numKeys; lc++) {
+ SecCertificateRef certificate = SecTrustGetCertificateAtIndex(serverTrust, lc);
+ NSData *remoteCertificateData = CFBridgingRelease(SecCertificateCopyData(certificate));
+
+ // Compare Remote Key With Local Version
+ if ([remoteCertificateData isEqualToData:_digicertCert]) {
+ // Found the certificate; continue connecting
+ completionHandler(NSURLSessionAuthChallengeUseCredential, [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]);
+ found = true;
+ break;
+ }
+ }
+
if (!found) {
// The certificate wasn't found in the certificate chain; cancel the connection
completionHandler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]);
diff --git a/platform/ios/resources/api_mapbox_com-digicert.der b/platform/ios/resources/api_mapbox_com-digicert.der
new file mode 100644
index 0000000000..d84cee3908
--- /dev/null
+++ b/platform/ios/resources/api_mapbox_com-digicert.der
Binary files differ