Browse Source

fix : The pinnning check

Marino Faggiana 6 years ago
parent
commit
563467d264

+ 1 - 1
iOSClient/Login/CCLogin.h

@@ -35,7 +35,7 @@
 
 
 @end
 @end
 
 
-@interface CCLogin : UIViewController <UITextFieldDelegate, CCCertificateDelegate, OCNetworkingDelegate>
+@interface CCLogin : UIViewController <UITextFieldDelegate, NSURLSessionTaskDelegate, NSURLSessionDelegate, CCCertificateDelegate, OCNetworkingDelegate>
 
 
 @property (nonatomic, weak) id <CCLoginDelegate> delegate;
 @property (nonatomic, weak) id <CCLoginDelegate> delegate;
 
 

+ 12 - 1
iOSClient/Login/CCLogin.m

@@ -225,7 +225,7 @@
         self.baseUrl.text = [self.baseUrl.text substringToIndex:[self.baseUrl.text length] - 1];
         self.baseUrl.text = [self.baseUrl.text substringToIndex:[self.baseUrl.text length] - 1];
     
     
     OCnetworking *ocNetworking = [[OCnetworking alloc] initWithDelegate:self metadataNet:nil withUser:@"" withUserID:@"" withPassword:@"" withUrl:nil];
     OCnetworking *ocNetworking = [[OCnetworking alloc] initWithDelegate:self metadataNet:nil withUser:@"" withUserID:@"" withPassword:@"" withUrl:nil];
-    [ocNetworking serverStatus:self.baseUrl.text success:^(NSString *serverProductName, NSInteger versionMajor, NSInteger versionMicro, NSInteger versionMinor) {
+    [ocNetworking serverStatus:self.baseUrl.text source:self success:^(NSString *serverProductName, NSInteger versionMajor, NSInteger versionMicro, NSInteger versionMinor) {
         
         
         self.loadingBaseUrl.hidden = YES;
         self.loadingBaseUrl.hidden = YES;
         self.login.enabled = YES;
         self.login.enabled = YES;
@@ -458,4 +458,15 @@
     }
     }
 }
 }
 
 
+-(void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler
+{
+    // The pinnning check
+    
+    if ([[CCCertificate sharedManager] checkTrustedChallenge:challenge]) {
+        completionHandler(NSURLSessionAuthChallengeUseCredential, [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]);
+    } else {
+        completionHandler(NSURLSessionAuthChallengePerformDefaultHandling, nil);
+    }
+}
+
 @end
 @end

+ 1 - 1
iOSClient/Networking/NCService.swift

@@ -111,7 +111,7 @@ class NCService: NSObject, OCNetworkingDelegate {
     private func requestServerStatus() {
     private func requestServerStatus() {
 
 
         let ocNetworking = OCnetworking.init(delegate: nil, metadataNet: nil, withUser: appDelegate.activeUser, withUserID: appDelegate.activeUserID, withPassword: appDelegate.activePassword, withUrl: appDelegate.activeUrl)
         let ocNetworking = OCnetworking.init(delegate: nil, metadataNet: nil, withUser: appDelegate.activeUser, withUserID: appDelegate.activeUserID, withPassword: appDelegate.activePassword, withUrl: appDelegate.activeUrl)
-        ocNetworking?.serverStatus(appDelegate.activeUrl, success: { (serverProductName, versionMajor, versionMicro, versionMinor) in
+        ocNetworking?.serverStatus(appDelegate.activeUrl, source: self, success: { (serverProductName, versionMajor, versionMicro, versionMinor) in
             
             
             if serverProductName == "owncloud" {
             if serverProductName == "owncloud" {
                 self.appDelegate.messageNotification("_warning_", description: "_warning_owncloud_", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.info, errorCode: Int(k_CCErrorInternalError))
                 self.appDelegate.messageNotification("_warning_", description: "_warning_owncloud_", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.info, errorCode: Int(k_CCErrorInternalError))

+ 2 - 2
iOSClient/Networking/OCNetworking.h

@@ -32,7 +32,7 @@
 
 
 @protocol OCNetworkingDelegate;
 @protocol OCNetworkingDelegate;
 
 
-@interface OCnetworking : NSOperation <CCNetworkingDelegate, NSURLSessionDelegate>
+@interface OCnetworking : NSOperation <CCNetworkingDelegate>
 
 
 - (id)initWithDelegate:(id <OCNetworkingDelegate>)delegate metadataNet:(CCMetadataNet *)metadataNet withUser:(NSString *)withUser withUserID:(NSString *)withUserID withPassword:(NSString *)withPassword withUrl:(NSString *)withUrl;
 - (id)initWithDelegate:(id <OCNetworkingDelegate>)delegate metadataNet:(CCMetadataNet *)metadataNet withUser:(NSString *)withUser withUserID:(NSString *)withUserID withPassword:(NSString *)withPassword withUrl:(NSString *)withUrl;
 
 
@@ -43,7 +43,7 @@
 @property (nonatomic, assign) BOOL isFinished;
 @property (nonatomic, assign) BOOL isFinished;
 
 
 - (void)checkServer:(NSString *)serverUrl success:(void (^)(void))success failure:(void (^)(NSString *message, NSInteger errorCode))failure;
 - (void)checkServer:(NSString *)serverUrl success:(void (^)(void))success failure:(void (^)(NSString *message, NSInteger errorCode))failure;
-- (void)serverStatus:(NSString *)serverUrl success:(void(^)(NSString *serverProductName, NSInteger versionMajor, NSInteger versionMicro, NSInteger versionMinor))success failure:(void (^)(NSString *message, NSInteger errorCode))failure;
+- (void)serverStatus:(NSString *)serverUrl source:(id)source success:(void(^)(NSString *serverProductName, NSInteger versionMajor, NSInteger versionMicro, NSInteger versionMinor))success failure:(void (^)(NSString *message, NSInteger errorCode))failure;
 
 
 - (NSURLSessionTask *)downloadFileNameServerUrl:(NSString *)fileNameServerUrl fileNameLocalPath:(NSString *)fileNameLocalPath communication:(OCCommunication *)communication success:(void (^)(int64_t length, NSString *etag, NSDate *date))success failure:(void (^)(NSString *message, NSInteger errorCode))failure;
 - (NSURLSessionTask *)downloadFileNameServerUrl:(NSString *)fileNameServerUrl fileNameLocalPath:(NSString *)fileNameLocalPath communication:(OCCommunication *)communication success:(void (^)(int64_t length, NSString *etag, NSDate *date))success failure:(void (^)(NSString *message, NSInteger errorCode))failure;
 
 

+ 2 - 2
iOSClient/Networking/OCNetworking.m

@@ -161,7 +161,7 @@
     }];
     }];
 }
 }
 
 
-- (void)serverStatus:(NSString *)serverUrl success:(void(^)(NSString *serverProductName, NSInteger versionMajor, NSInteger versionMicro, NSInteger versionMinor))success failure:(void (^)(NSString *message, NSInteger errorCode))failure
+- (void)serverStatus:(NSString *)serverUrl source:(id)source success:(void(^)(NSString *serverProductName, NSInteger versionMajor, NSInteger versionMicro, NSInteger versionMinor))success failure:(void (^)(NSString *message, NSInteger errorCode))failure
 {
 {
     NSString *urlTest = [serverUrl stringByAppendingString:k_serverStatus];
     NSString *urlTest = [serverUrl stringByAppendingString:k_serverStatus];
     
     
@@ -177,7 +177,7 @@
     [request addValue:@"true" forHTTPHeaderField:@"OCS-APIRequest"];
     [request addValue:@"true" forHTTPHeaderField:@"OCS-APIRequest"];
     
     
     NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
     NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
-    NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
+    NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:source delegateQueue:nil];
     
     
     NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler: ^(NSData *data, NSURLResponse *response, NSError *error) {
     NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler: ^(NSData *data, NSURLResponse *response, NSError *error) {