Marino Faggiana 1 жил өмнө
parent
commit
1cee369197

+ 1 - 1
Brand/Database.swift

@@ -26,4 +26,4 @@ import Foundation
 // Database Realm
 //
 let databaseName                    = "nextcloud.realm"
-let databaseSchemaVersion: UInt64   = 313
+let databaseSchemaVersion: UInt64   = 305

+ 49 - 43
iOSClient/Data/NCManageDatabase+E2EE.swift

@@ -82,6 +82,7 @@ class tableE2eMetadataV2: Object {
     @Persisted var folders = Map<String, String>()
     @Persisted var keyChecksums = List<String>()
     @Persisted var ocId: String = ""
+    @Persisted var serverUrl: String = ""
     @Persisted var version: String = "2.0"
 }
 
@@ -97,6 +98,7 @@ class tableE2eUsersV2: Object {
     @Persisted var filedropKey: String?
     @Persisted var metadataKey: String?
     @Persisted var ocId: String = ""
+    @Persisted var serverUrl: String = ""
     @Persisted var userId = ""
 }
 
@@ -105,12 +107,12 @@ extension NCManageDatabase {
     // MARK: -
     // MARK: tableE2eEncryption
 
-    @objc func addE2eEncryption(_ e2e: tableE2eEncryption) {
+    @objc func addE2eEncryption(_ object: tableE2eEncryption) {
 
         do {
             let realm = try Realm()
             try realm.write {
-                realm.add(e2e, update: .all)
+                realm.add(object, update: .all)
             }
         } catch let error {
             NextcloudKit.shared.nkCommonInstance.writeLog("Could not write to database: \(error)")
@@ -218,12 +220,12 @@ extension NCManageDatabase {
         do {
             let realm = try Realm()
             try realm.write {
-                let addObject = tableE2eEncryptionLock()
-                addObject.account = account
-                addObject.fileId = fileId
-                addObject.serverUrl = serverUrl
-                addObject.e2eToken = e2eToken
-                realm.add(addObject, update: .all)
+                let object = tableE2eEncryptionLock()
+                object.account = account
+                object.fileId = fileId
+                object.serverUrl = serverUrl
+                object.e2eToken = e2eToken
+                realm.add(object, update: .all)
             }
         } catch let error {
             NextcloudKit.shared.nkCommonInstance.writeLog("Could not write to database: \(error)")
@@ -266,12 +268,12 @@ extension NCManageDatabase {
         do {
             let realm = try Realm()
             try realm.write {
-                let addObject = tableE2eMetadata()
-                addObject.account = account
-                addObject.metadataKey = metadataKey
-                addObject.serverUrl = serverUrl
-                addObject.version = version
-                realm.add(addObject, update: .all)
+                let object = tableE2eMetadata()
+                object.account = account
+                object.metadataKey = metadataKey
+                object.serverUrl = serverUrl
+                object.version = version
+                realm.add(object, update: .all)
             }
         } catch let error {
             NextcloudKit.shared.nkCommonInstance.writeLog("Could not write to database: \(error)")
@@ -282,6 +284,7 @@ extension NCManageDatabase {
     // MARK: V2
 
     func addE2EUsersV2(account: String,
+                       serverUrl: String,
                        ocId: String,
                        userId: String,
                        certificate: String,
@@ -295,19 +298,20 @@ extension NCManageDatabase {
         do {
             let realm = try Realm()
             try realm.write {
-                let addObject = tableE2eUsersV2()
-                addObject.accountOcIdUserId = account + ocId + userId
-                addObject.account = account
-                addObject.certificate = certificate
-                addObject.encryptedFiledropKey = encryptedFiledropKey
-                addObject.encryptedMetadataKey = encryptedMetadataKey
-                addObject.decryptedFiledropKey = decryptedFiledropKey
-                addObject.decryptedMetadataKey = decryptedMetadataKey
-                addObject.filedropKey = filedropKey
-                addObject.metadataKey = metadataKey
-                addObject.ocId = ocId
-                addObject.userId = userId
-                realm.add(addObject, update: .all)
+                let object = tableE2eUsersV2()
+                object.accountOcIdUserId = account + ocId + userId
+                object.account = account
+                object.certificate = certificate
+                object.encryptedFiledropKey = encryptedFiledropKey
+                object.encryptedMetadataKey = encryptedMetadataKey
+                object.decryptedFiledropKey = decryptedFiledropKey
+                object.decryptedMetadataKey = decryptedMetadataKey
+                object.filedropKey = filedropKey
+                object.metadataKey = metadataKey
+                object.ocId = ocId
+                object.serverUrl = serverUrl
+                object.userId = userId
+                realm.add(object, update: .all)
             }
         } catch let error {
             NextcloudKit.shared.nkCommonInstance.writeLog("Could not write to database: \(error)")
@@ -366,7 +370,7 @@ extension NCManageDatabase {
         return nil
     }
 
-    func incrementCounterE2eMetadataV2(account: String, ocId: String, version: String) -> tableE2eMetadataV2? {
+    func incrementCounterE2eMetadataV2(account: String, serverUrl: String, ocId: String, version: String) -> tableE2eMetadataV2? {
 
         do {
             let realm = try Realm()
@@ -374,11 +378,12 @@ extension NCManageDatabase {
                 if let result = realm.objects(tableE2eMetadataV2.self).filter("accountOcId == %@", account + ocId).first {
                     result.counter += 1
                 } else {
-                    let addObject = tableE2eMetadataV2()
-                    addObject.accountOcId = account + ocId
-                    addObject.counter = 1
-                    addObject.version = version
-                    realm.add(addObject, update: .all)
+                    let object = tableE2eMetadataV2()
+                    object.accountOcId = account + ocId
+                    object.serverUrl = serverUrl
+                    object.counter = 1
+                    object.version = version
+                    realm.add(object, update: .all)
                 }
             }
             return realm.objects(tableE2eMetadataV2.self).filter("accountOcId == %@", account + ocId).first
@@ -389,27 +394,28 @@ extension NCManageDatabase {
         return nil
     }
 
-    func addE2eMetadataV2(account: String, ocId: String, keyChecksums: [String]?, deleted: Bool, counter: Int, folders: [String: String]?, version: String) {
+    func addE2eMetadataV2(account: String, serverUrl: String, ocId: String, keyChecksums: [String]?, deleted: Bool, counter: Int, folders: [String: String]?, version: String) {
 
         do {
             let realm = try Realm()
             try realm.write {
-                let addObject = tableE2eMetadataV2()
-                addObject.accountOcId = account + ocId
+                let object = tableE2eMetadataV2()
+                object.accountOcId = account + ocId
                 if let keyChecksums {
-                    addObject.keyChecksums.append(objectsIn: keyChecksums)
+                    object.keyChecksums.append(objectsIn: keyChecksums)
                 }
-                addObject.deleted = deleted
-                addObject.counter = counter
-                let foldersDictionary = addObject.folders
+                object.deleted = deleted
+                object.counter = counter
+                let foldersDictionary = object.folders
                 if let folders {
                     for folder in folders {
                         foldersDictionary[folder.key] = folder.value
                     }
                 }
-                addObject.ocId = ocId
-                addObject.version = version
-                realm.add(addObject, update: .all)
+                object.ocId = ocId
+                object.serverUrl = serverUrl
+                object.version = version
+                realm.add(object, update: .all)
             }
         } catch let error {
             NextcloudKit.shared.nkCommonInstance.writeLog("Could not write to database: \(error)")

+ 4 - 4
iOSClient/Networking/E2EE/NCEndToEndMetadataV20.swift

@@ -59,7 +59,7 @@ extension NCEndToEndMetadata {
             guard let metadataKeyEncrypted = NCEndToEndEncryption.sharedManager().encryptAsymmetricData(keyGenerated, privateKey: privateKey) else { return (nil, nil) }
             encryptedMetadataKey = metadataKeyEncrypted.base64EncodedString()
 
-            NCManageDatabase.shared.addE2EUsersV2(account: account, ocId: ocId, userId: userId, certificate: certificate, encryptedFiledropKey: nil, encryptedMetadataKey: encryptedMetadataKey, decryptedFiledropKey: nil, decryptedMetadataKey: decryptedMetadataKey, filedropKey: nil, metadataKey: metadataKey)
+            NCManageDatabase.shared.addE2EUsersV2(account: account, serverUrl: serverUrl, ocId: ocId, userId: userId, certificate: certificate, encryptedFiledropKey: nil, encryptedMetadataKey: encryptedMetadataKey, decryptedFiledropKey: nil, decryptedMetadataKey: decryptedMetadataKey, filedropKey: nil, metadataKey: metadataKey)
         }
 
         // Create E2eeV20.Users
@@ -74,7 +74,7 @@ extension NCEndToEndMetadata {
         }
 
         // tableE2eMetadataV2
-        guard let e2eMetadataV2 = NCManageDatabase.shared.incrementCounterE2eMetadataV2(account: account, ocId: ocId, version: "2.0") else {
+        guard let e2eMetadataV2 = NCManageDatabase.shared.incrementCounterE2eMetadataV2(account: account, serverUrl: serverUrl, ocId: ocId, version: "2.0") else {
             return (nil, nil)
         }
 
@@ -226,7 +226,7 @@ extension NCEndToEndMetadata {
                     }
                 }
 
-                NCManageDatabase.shared.addE2EUsersV2(account: account, ocId: ocId, userId: user.userId, certificate: user.certificate, encryptedFiledropKey: user.encryptedFiledropKey, encryptedMetadataKey: user.encryptedMetadataKey, decryptedFiledropKey: decryptedFiledropKey, decryptedMetadataKey: decryptedMetadataKey, filedropKey: filedropKey, metadataKey: metadataKey)
+                NCManageDatabase.shared.addE2EUsersV2(account: account, serverUrl: serverUrl, ocId: ocId, userId: user.userId, certificate: user.certificate, encryptedFiledropKey: user.encryptedFiledropKey, encryptedMetadataKey: user.encryptedMetadataKey, decryptedFiledropKey: decryptedFiledropKey, decryptedMetadataKey: decryptedMetadataKey, filedropKey: filedropKey, metadataKey: metadataKey)
             }
 
             //
@@ -256,7 +256,7 @@ extension NCEndToEndMetadata {
                                 return NKError(errorCode: NCGlobal.shared.errorE2EEKeyChecksums, errorDescription: NSLocalizedString("_e2ee_checksums_error_", comment: ""))
                             }
 
-                            NCManageDatabase.shared.addE2eMetadataV2(account: account, ocId: ocId, keyChecksums: json.keyChecksums, deleted: json.deleted ?? false, counter: json.counter, folders: json.folders, version: version)
+                            NCManageDatabase.shared.addE2eMetadataV2(account: account, serverUrl: serverUrl, ocId: ocId, keyChecksums: json.keyChecksums, deleted: json.deleted ?? false, counter: json.counter, folders: json.folders, version: version)
 
                             if let files = json.files {
                                 for file in files {