Marino Faggiana 7 years ago
parent
commit
0bdc7f61ed

+ 29 - 1
iOSClient/Database/NCManageDatabase.swift

@@ -1013,7 +1013,7 @@ class NCManageDatabase: NSObject {
         }
     }
 
-    @objc func setDirectoryTokenLock(serverUrl: String, token: String) {
+    @objc func setDirectoryE2ETokenLock(serverUrl: String, token: String) {
         
         guard let tableAccount = self.getAccountActive() else {
             return
@@ -1037,6 +1037,34 @@ class NCManageDatabase: NSObject {
             return
         }
     }
+    
+    @objc func setDirectoryE2EMetadataJSON(serverUrl: String, metadata: String) -> Bool {
+        
+        guard let tableAccount = self.getAccountActive() else {
+            return false
+        }
+        
+        let realm = try! Realm()
+        
+        realm.beginWrite()
+        
+        guard let result = realm.objects(tableDirectory.self).filter("account = %@ AND serverUrl = %@", tableAccount.account, serverUrl).first else {
+            realm.cancelWrite()
+            return false
+        }
+        
+        result.e2eMetadataJSON = metadata
+        
+        do {
+            try realm.commitWrite()
+        } catch let error {
+            print("[LOG] Could not write to database: ", error)
+            return false
+        }
+        
+        return true
+    }
+    
     //MARK: -
     //MARK: Table e2e Encryption
     

+ 11 - 4
iOSClient/Security/NCEntoToEndInterface.swift

@@ -362,7 +362,7 @@ class NCEntoToEndInterface : NSObject, OCNetworkingDelegate  {
             return false
         }
         
-        NCManageDatabase.sharedInstance.setDirectoryTokenLock(serverUrl: serverUrl, token: token! as String)
+        NCManageDatabase.sharedInstance.setDirectoryE2ETokenLock(serverUrl: serverUrl, token: token! as String)
         
         if let error = NCNetworkingSync.sharedManager().markEnd(toEndFolderEncrypted: appDelegate.activeUser, userID: appDelegate.activeUserID, password: appDelegate.activePassword, url: url, fileID: fileID) as NSError? {
             
@@ -378,7 +378,7 @@ class NCEntoToEndInterface : NSObject, OCNetworkingDelegate  {
             return false
         }
         
-        NCManageDatabase.sharedInstance.setDirectoryTokenLock(serverUrl: serverUrl, token: "")
+        NCManageDatabase.sharedInstance.setDirectoryE2ETokenLock(serverUrl: serverUrl, token: "")
         
         return true
     }
@@ -394,7 +394,7 @@ class NCEntoToEndInterface : NSObject, OCNetworkingDelegate  {
             return false
         }
         
-        NCManageDatabase.sharedInstance.setDirectoryTokenLock(serverUrl: serverUrl, token: token! as String)
+        NCManageDatabase.sharedInstance.setDirectoryE2ETokenLock(serverUrl: serverUrl, token: token! as String)
         
         if let error = NCNetworkingSync.sharedManager().deletemarkEnd(toEndFolderEncrypted: appDelegate.activeUser, userID: appDelegate.activeUserID, password: appDelegate.activePassword, url: url, fileID: fileID) as NSError? {
             
@@ -410,7 +410,7 @@ class NCEntoToEndInterface : NSObject, OCNetworkingDelegate  {
             return false
         }
         
-        NCManageDatabase.sharedInstance.setDirectoryTokenLock(serverUrl: serverUrl, token: "")
+        NCManageDatabase.sharedInstance.setDirectoryE2ETokenLock(serverUrl: serverUrl, token: "")
         
         return true
     }
@@ -585,11 +585,18 @@ class NCEntoToEndInterface : NSObject, OCNetworkingDelegate  {
                     object.serverUrl = serverUrl
                     object.version = decode.version
                     
+                    // Write file parameter for decrypted on DB
                     if NCManageDatabase.sharedInstance.addE2eEncryption(object) == false {
                         appDelegate.messageNotification("E2E decode metadata", description: "Serious internal write DB", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: 0)
                         return false
                     }
                     
+                    // Write e2eMetaDataJSON on DB
+                    if NCManageDatabase.sharedInstance.setDirectoryE2EMetadataJSON(serverUrl: serverUrl, metadata: e2eMetaDataJSON) == false {
+                        appDelegate.messageNotification("E2E decode metadata", description: "Serious internal write DB", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: 0)
+                        return false
+                    }
+                    
                 } catch let error {
                     
                     appDelegate.messageNotification("E2E decode metadata", description: "Serious internal error in decoding metadata ("+error.localizedDescription+")", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: 0)