diff options
Diffstat (limited to 'platform/ios/src/MGLAPIClient.m')
-rw-r--r-- | platform/ios/src/MGLAPIClient.m | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/platform/ios/src/MGLAPIClient.m b/platform/ios/src/MGLAPIClient.m index 5e8ee5fe1d..22ee5c55f5 100644 --- a/platform/ios/src/MGLAPIClient.m +++ b/platform/ios/src/MGLAPIClient.m @@ -75,22 +75,22 @@ static NSString * const MGLAPIClientHTTPMethodPost = @"POST"; [request setValue:self.userAgent forHTTPHeaderField:MGLAPIClientHeaderFieldUserAgentKey]; [request setValue:MGLAPIClientHeaderFieldContentTypeValue forHTTPHeaderField:MGLAPIClientHeaderFieldContentTypeKey]; [request setHTTPMethod:MGLAPIClientHTTPMethodPost]; - + NSData *jsonData = [self serializedDataForEvents:events]; - + // Compressing less than 3 events can have a negative impact on the size. if (events.count > 2) { NSData *compressedData = [jsonData mgl_compressedData]; [request setValue:@"deflate" forHTTPHeaderField:MGLAPIClientHeaderFieldContentEncodingKey]; [request setHTTPBody:compressedData]; } - + // Set JSON data if events.count were less than 3 or something went wrong with compressing HTTP body data. if (!request.HTTPBody) { [request setValue:nil forHTTPHeaderField:MGLAPIClientHeaderFieldContentEncodingKey]; [request setHTTPBody:jsonData]; } - + return [request copy]; } @@ -143,10 +143,10 @@ static NSString * const MGLAPIClientHTTPMethodPost = @"POST"; - (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^) (NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler { if([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) { - + SecTrustRef serverTrust = [[challenge protectionSpace] serverTrust]; SecTrustResultType trustResult; - + // Validate the certificate chain with the device's trust store anyway // This *might* give use revocation checking SecTrustEvaluate(serverTrust, &trustResult); @@ -154,13 +154,13 @@ static NSString * const MGLAPIClientHTTPMethodPost = @"POST"; { // Look for a pinned certificate in the server's certificate chain long numKeys = SecTrustGetCertificateCount(serverTrust); - + BOOL found = NO; // Try GeoTrust Cert First 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:_geoTrustCert]) { // Found the certificate; continue connecting @@ -169,13 +169,13 @@ static NSString * const MGLAPIClientHTTPMethodPost = @"POST"; break; } } - + if (!found) { // 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 @@ -184,13 +184,13 @@ static NSString * const MGLAPIClientHTTPMethodPost = @"POST"; break; } } - + if (!found && _usesTestServer) { // See if this is test server 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:_testServerCert]) { // Found the certificate; continue connecting @@ -200,7 +200,7 @@ static NSString * const MGLAPIClientHTTPMethodPost = @"POST"; } } } - + if (!found) { // The certificate wasn't found in GeoTrust nor Digicert. Cancel the connection. completionHandler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]); |