diff options
author | Brad Leege <bleege@gmail.com> | 2015-04-27 15:42:07 -0400 |
---|---|---|
committer | Brad Leege <bleege@gmail.com> | 2015-04-27 15:42:07 -0400 |
commit | 353e5661de9fbe14f5ceb15ede416d7769a7dff0 (patch) | |
tree | 0bcfb5c172f4aa4647fd521f4ca0892b55dfd1f0 | |
parent | e4ebee4a8abc0b082dc7aeec53d02540c8ae7a48 (diff) | |
parent | cde989093baaf8fac2c4287fd462cf419abf1052 (diff) | |
download | qtlocation-mapboxgl-353e5661de9fbe14f5ceb15ede416d7769a7dff0.tar.gz |
Merge pull request #1348 from mapbox/1307-digicert
Importing Digicert Cert
-rw-r--r-- | platform/ios/MGLMapboxEvents.m | 22 | ||||
-rw-r--r-- | platform/ios/resources/api_mapbox_com-digicert.der | bin | 0 -> 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 Binary files differnew file mode 100644 index 0000000000..d84cee3908 --- /dev/null +++ b/platform/ios/resources/api_mapbox_com-digicert.der |