Marino Faggiana 7 жил өмнө
parent
commit
14b7898274

+ 14 - 7
iOSClient/Security/NCEntoToEndInterface.swift

@@ -508,16 +508,21 @@ class NCEntoToEndInterface : NSObject, OCNetworkingDelegate  {
             
             let files = response.files
             let metadata = response.metadata
-            let sharing = response.sharing
+            //let sharing = response.sharing
+            
+            var planMetadataKeys = [String:String]()
             
             for metadataKeys in metadata.metadataKeys {
                 
-                let metadataKeysKey = metadataKeys.key
-                let metadataKeysValue = metadataKeys.value
-                
-                let metadataKeysValueDecoded : NSData = NSData(base64Encoded: metadataKeysValue, options: NSData.Base64DecodingOptions(rawValue: 0))!
+                guard let metadataKeysData : NSData = NSData(base64Encoded: metadataKeys.value, options: NSData.Base64DecodingOptions(rawValue: 0)) else {
+                    return nil
+                }
 
-                let metadataKey = NCEndToEndEncryption.sharedManager().decryptAsymmetricData(metadataKeysValueDecoded as Data!, privateKey: privateKey)
+                guard let metadataKey = NCEndToEndEncryption.sharedManager().decryptAsymmetricData(metadataKeysData as Data!, privateKey: privateKey) else {
+                    return nil
+                }
+                
+                planMetadataKeys[metadataKeys.key] = metadataKey
             }
             
             for file in files {
@@ -528,9 +533,11 @@ class NCEntoToEndInterface : NSObject, OCNetworkingDelegate  {
                 let iv = element.initializationVector
                 let tag = element.authenticationTag
                 let encrypted = element.encrypted
+                let metadataKeysKey = element.metadataKey
+                let key = planMetadataKeys["\(metadataKeysKey)"]
                 
                 
-                guard let decyptedMetadata = NCEndToEndEncryption.sharedManager().decryptMetadata(encrypted, privateKey: privateKey, initializationVector: iv, authenticationTag: tag) else {
+                guard let decyptedMetadata = NCEndToEndEncryption.sharedManager().decryptMetadata(encrypted, privateKey: key, initializationVector: iv, authenticationTag: tag) else {
                     
                     return nil
                 }