Эх сурвалжийг харах

E2EE review

Signed-off-by: Marino Faggiana <marino@marinofaggiana.com>
Marino Faggiana 2 жил өмнө
parent
commit
1aa4ed6a6b

+ 0 - 126
iOSClient/Networking/E2EE/NCNetworkingE2EE.swift

@@ -31,132 +31,6 @@ import Alamofire
         return instance
     }()
 
-    // MARK: - WebDav Create Folder
-
-    func createFolder(fileName: String, serverUrl: String, account: String, urlBase: String, userId: String, completion: @escaping (_ error: NKError) -> Void) {
-
-        var fileNameFolder = CCUtility.removeForbiddenCharactersServer(fileName)!
-        var fileNameFolderUrl = ""
-        var fileNameIdentifier = ""
-        var key: NSString?
-        var initializationVector: NSString?
-
-        fileNameFolder = NCUtilityFileSystem.shared.createFileName(fileNameFolder, serverUrl: serverUrl, account: account)
-        if fileNameFolder.count == 0 {
-            return completion(NKError())
-        }
-        fileNameIdentifier = CCUtility.generateRandomIdentifier()
-        fileNameFolderUrl = serverUrl + "/" + fileNameIdentifier
-
-        self.lock(account: account, serverUrl: serverUrl) { directory, e2eToken, error in
-            if error == .success && e2eToken != nil && directory != nil {
-
-                let options = NKRequestOptions(customHeader: ["e2e-token": e2eToken!])
-
-                NextcloudKit.shared.createFolder(fileNameFolderUrl, options: options) { account, ocId, _, error in
-                    if error == .success {
-                        guard let fileId = NCUtility.shared.ocIdToFileId(ocId: ocId) else {
-                            // unlock
-                            if let tableLock = NCManageDatabase.shared.getE2ETokenLock(account: account, serverUrl: serverUrl) {
-                                NextcloudKit.shared.lockE2EEFolder(fileId: tableLock.fileId, e2eToken: tableLock.e2eToken, method: "DELETE") { _, _, _, _ in }
-                            }
-                            return completion(NKError(errorCode: NCGlobal.shared.errorInternalError, errorDescription: "Error convert ocId"))
-                        }
-                        NextcloudKit.shared.markE2EEFolder(fileId: fileId, delete: false) { account, error in
-                            if error == .success {
-
-                                let object = tableE2eEncryption()
-
-                                NCEndToEndEncryption.sharedManager()?.encryptkey(&key, initializationVector: &initializationVector)
-
-                                object.account = account
-                                object.authenticationTag = nil
-                                object.fileName = fileNameFolder
-                                object.fileNameIdentifier = fileNameIdentifier
-                                object.fileNamePath = ""
-                                object.key = key! as String
-                                object.initializationVector = initializationVector! as String
-
-                                if let result = NCManageDatabase.shared.getE2eEncryption(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", account, serverUrl)) {
-                                    object.metadataKey = result.metadataKey
-                                    object.metadataKeyIndex = result.metadataKeyIndex
-                                } else {
-                                    object.metadataKey = (NCEndToEndEncryption.sharedManager()?.generateKey(16)?.base64EncodedString(options: []))! as String // AES_KEY_128_LENGTH
-                                    object.metadataKeyIndex = 0
-                                }
-                                object.mimeType = "httpd/unix-directory"
-                                object.serverUrl = serverUrl
-                                object.version = 1
-
-                                NCManageDatabase.shared.addE2eEncryption(object)
-
-                                self.sendE2EMetadata(account: account, serverUrl: serverUrl, fileNameRename: nil, fileNameNewRename: nil, deleteE2eEncryption: nil, urlBase: urlBase, userId: userId) { e2eToken, error in
-                                    // unlock
-                                    if let tableLock = NCManageDatabase.shared.getE2ETokenLock(account: account, serverUrl: serverUrl) {
-                                        NextcloudKit.shared.lockE2EEFolder(fileId: tableLock.fileId, e2eToken: tableLock.e2eToken, method: "DELETE") { _, _, _, _ in }
-                                    }
-                                    if error == .success, let ocId = ocId {
-                                        NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterCreateFolder, userInfo: ["ocId": ocId, "serverUrl": serverUrl, "account": account, "e2ee": true])
-                                    }
-                                    completion(error)
-                                }
-
-                            } else {
-                                // unlock
-                                if let tableLock = NCManageDatabase.shared.getE2ETokenLock(account: account, serverUrl: serverUrl) {
-                                    NextcloudKit.shared.lockE2EEFolder(fileId: tableLock.fileId, e2eToken: tableLock.e2eToken, method: "DELETE") { _, _, _, _ in }
-                                }
-                                completion(error)
-                            }
-                        }
-
-                    } else {
-                        // unlock
-                        if let tableLock = NCManageDatabase.shared.getE2ETokenLock(account: account, serverUrl: serverUrl) {
-                            NextcloudKit.shared.lockE2EEFolder(fileId: tableLock.fileId, e2eToken: tableLock.e2eToken, method: "DELETE") { _, _, _, _ in }
-                        }
-                        completion(error)
-                    }
-                }
-            } else {
-                completion(error)
-            }
-        }
-    }
-
-    // MARK: - WebDav Delete
-
-    func deleteMetadata(_ metadata: tableMetadata, completion: @escaping (_ error: NKError) -> Void) {
-
-        self.lock(account: metadata.account, serverUrl: metadata.serverUrl) { directory, e2eToken, error in
-            if error == .success && e2eToken != nil && directory != nil {
-                
-                let deleteE2eEncryption = NSPredicate(format: "account == %@ AND serverUrl == %@ AND fileNameIdentifier == %@", metadata.account, metadata.serverUrl, metadata.fileName)
-                NCNetworking.shared.deleteMetadataPlain(metadata, customHeader: ["e2e-token": e2eToken!]) { error in
-
-                    let home = NCUtilityFileSystem.shared.getHomeServer(urlBase: metadata.urlBase, userId: metadata.userId)
-                    if metadata.serverUrl != home {
-                        self.sendE2EMetadata(account: metadata.account, serverUrl: metadata.serverUrl, fileNameRename: nil, fileNameNewRename: nil, deleteE2eEncryption: deleteE2eEncryption, urlBase: metadata.urlBase, userId: metadata.userId) { e2eToken, error in
-                            // unlock
-                            if let tableLock = NCManageDatabase.shared.getE2ETokenLock(account: metadata.account, serverUrl: metadata.serverUrl) {
-                                NextcloudKit.shared.lockE2EEFolder(fileId: tableLock.fileId, e2eToken: tableLock.e2eToken, method: "DELETE") { _, _, _, _ in }
-                            }
-                            completion(error)
-                        }
-                    } else {
-                        // unlock
-                        if let tableLock = NCManageDatabase.shared.getE2ETokenLock(account: metadata.account, serverUrl: metadata.serverUrl) {
-                            NextcloudKit.shared.lockE2EEFolder(fileId: tableLock.fileId, e2eToken: tableLock.e2eToken, method: "DELETE") { _, _, _, _ in }
-                        }
-                        completion(error)
-                    }
-                }
-            } else {
-                completion(error)
-            }
-        }
-    }
-
     // MARK: - WebDav Rename
 
     func renameMetadata(_ metadata: tableMetadata, fileNameNew: String, completion: @escaping (_ error: NKError) -> Void) {

+ 8 - 5
iOSClient/Networking/NCNetworking.swift

@@ -1090,15 +1090,18 @@ import Photos
 
         if isDirectoryEncrypted {
             #if !EXTENSION
-            if metadataLive == nil {
-                NCNetworkingE2EE.shared.deleteMetadata(metadata, completion: completion)
-            } else {
-                NCNetworkingE2EE.shared.deleteMetadata(metadataLive!) { error in
+            Task {
+                if let metadataLive = metadataLive {
+                    let error = await NCNetworkingE2EEDelete.shared.delete(metadata: metadataLive)
                     if error == .success {
-                        NCNetworkingE2EE.shared.deleteMetadata(metadata, completion: completion)
+                        let error = await NCNetworkingE2EEDelete.shared.delete(metadata: metadata)
+                        completion(error)
                     } else {
                         completion(error)
                     }
+                } else {
+                    let error = await NCNetworkingE2EEDelete.shared.delete(metadata: metadata)
+                    completion(error)
                 }
             }
             #endif