Browse Source

fix checkTrustedChallenge [rollback] + host

Signed-off-by: marinofaggiana <marino@marinofaggiana.com>
marinofaggiana 3 years ago
parent
commit
b220d943b6

+ 21 - 23
iOSClient/Networking/NCNetworking.swift

@@ -188,32 +188,30 @@ import Queuer
             // V2
             var secresult = SecTrustResultType.invalid
             let status = SecTrustEvaluate(serverTrust, &secresult)
-            if (errSecSuccess == status) {
-                if let serverCertificate = SecTrustGetCertificateAtIndex(serverTrust, 0) {
+            if errSecSuccess == status, let serverCertificate = SecTrustGetCertificateAtIndex(serverTrust, 0) {
                     
-                    let serverCertificateData = SecCertificateCopyData(serverCertificate)
-                    let data = CFDataGetBytePtr(serverCertificateData);
-                    let size = CFDataGetLength(serverCertificateData);
-                    let certificate = NSData(bytes: data, length: size)
-                    
-                    // write certificate tmp to disk
-                    let certificatePath = directoryCertificate + "/" + NCGlobal.shared.certificateTmpV2
-                    certificate.write(toFile: certificatePath, atomically: true)
-                    
-                    let certificateSavedPath = directoryCertificate + "/" + host + ".der"
-                    if let certificateSaved = NSData(contentsOfFile: certificateSavedPath) {
-                        if certificate.isEqual(to: certificateSaved as Data) {
-                            trustedV2 = true
-                        }
+                let serverCertificateData = SecCertificateCopyData(serverCertificate)
+                let data = CFDataGetBytePtr(serverCertificateData);
+                let size = CFDataGetLength(serverCertificateData);
+                let certificate = NSData(bytes: data, length: size)
+                
+                // write certificate tmp to disk
+                let certificatePath = directoryCertificate + "/" + NCGlobal.shared.certificateTmpV2
+                certificate.write(toFile: certificatePath, atomically: true)
+                
+                let certificateSavedPath = directoryCertificate + "/" + host + ".der"
+                if let certificateSaved = NSData(contentsOfFile: certificateSavedPath) {
+                    if certificate.isEqual(to: certificateSaved as Data) {
+                        trustedV2 = true
                     }
-                    
-                    if !trusted && !trustedV2 {
-                        #if !EXTENSION
-                        DispatchQueue.main.async {
-                            CCUtility.setCertificateError((UIApplication.shared.delegate as! AppDelegate).account, host:host)
-                        }
-                        #endif
+                }
+                
+                if !trusted && !trustedV2 {
+                    #if !EXTENSION
+                    DispatchQueue.main.async {
+                        CCUtility.setCertificateError((UIApplication.shared.delegate as! AppDelegate).account, host:host)
                     }
+                    #endif
                 }
             }
         }

+ 9 - 3
iOSClient/Security/NCViewCertificateDetails.swift

@@ -38,6 +38,9 @@ class NCViewCertificateDetails: UIViewController  {
     @IBOutlet weak var scrollView: UIScrollView!
     @IBOutlet weak var textView: UITextView!
 
+    private let appDelegate = UIApplication.shared.delegate as! AppDelegate
+    private let directoryCertificate = CCUtility.getDirectoryCerificates()!
+
     public var delegate: NCViewCertificateDetailsDelegate?
     public var host: String?
 
@@ -46,14 +49,17 @@ class NCViewCertificateDetails: UIViewController  {
     override func viewDidLoad() {
         super.viewDidLoad()
         
+        var certificatePath = directoryCertificate + "/" + NCGlobal.shared.certificateTmpV2 + ".txt"
+
         self.navigationItem.title = NSLocalizedString("_certificate_details_", comment: "")
-        
         buttonCancel.title = NSLocalizedString("_close_", comment: "")
         
-        let directoryCertificate = CCUtility.getDirectoryCerificates()!
-        var certificatePath = directoryCertificate + "/" + NCGlobal.shared.certificateTmpV2 + ".txt"
         if let host = host {
             certificatePath = directoryCertificate + "/" + host + ".der"
+        } else {
+            if let host = URL(string: appDelegate.urlBase)?.host {
+                certificatePath = directoryCertificate + "/" + host + ".der"
+            }
         }
         if FileManager.default.fileExists(atPath: certificatePath) {
             do {