Merge pull request #1348 from mapbox/1307-digicert
Importing Digicert Cert
This commit is contained in:
@@ -75,6 +75,7 @@ NSString *const MGLEventGestureRotateStart = @"Rotation";
|
|||||||
@property (atomic) NSDateFormatter *rfc3339DateFormatter;
|
@property (atomic) NSDateFormatter *rfc3339DateFormatter;
|
||||||
@property (atomic) CGFloat scale;
|
@property (atomic) CGFloat scale;
|
||||||
@property (atomic) NSURLSession *session;
|
@property (atomic) NSURLSession *session;
|
||||||
|
@property (atomic) NSData *digicertCert;
|
||||||
@property (atomic) NSData *geoTrustCert;
|
@property (atomic) NSData *geoTrustCert;
|
||||||
|
|
||||||
|
|
||||||
@@ -146,6 +147,12 @@ NSString *const MGLEventGestureRotateStart = @"Rotation";
|
|||||||
_geoTrustCert = [NSData dataWithContentsOfFile:cerPath];
|
_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
|
// Events Control
|
||||||
_eventQueue = [[NSMutableArray alloc] init];
|
_eventQueue = [[NSMutableArray alloc] init];
|
||||||
_flushAt = 20;
|
_flushAt = 20;
|
||||||
@@ -687,6 +694,7 @@ NSString *const MGLEventGestureRotateStart = @"Rotation";
|
|||||||
long numKeys = SecTrustGetCertificateCount(serverTrust);
|
long numKeys = SecTrustGetCertificateCount(serverTrust);
|
||||||
|
|
||||||
BOOL found = false;
|
BOOL found = false;
|
||||||
|
// Try GeoTrust Cert First
|
||||||
for (int lc = 0; lc < numKeys; lc++) {
|
for (int lc = 0; lc < numKeys; lc++) {
|
||||||
SecCertificateRef certificate = SecTrustGetCertificateAtIndex(serverTrust, lc);
|
SecCertificateRef certificate = SecTrustGetCertificateAtIndex(serverTrust, lc);
|
||||||
NSData *remoteCertificateData = CFBridgingRelease(SecCertificateCopyData(certificate));
|
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) {
|
if (!found) {
|
||||||
// The certificate wasn't found in the certificate chain; cancel the connection
|
// The certificate wasn't found in the certificate chain; cancel the connection
|
||||||
completionHandler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]);
|
completionHandler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]);
|
||||||
|
|||||||
BIN
platform/ios/resources/api_mapbox_com-digicert.der
Normal file
BIN
platform/ios/resources/api_mapbox_com-digicert.der
Normal file
Binary file not shown.
Reference in New Issue
Block a user