Marino Faggiana 7 жил өмнө
parent
commit
e3a0c97fdd

+ 18 - 9
iOSClient/Security/NCEndToEndMetadata.swift

@@ -73,23 +73,25 @@ class NCEndToEndMetadata : NSObject  {
         let jsonEncoder = JSONEncoder.init()
         let jsonEncoder = JSONEncoder.init()
         var files = [String: e2eMetadata.filesCodable]()
         var files = [String: e2eMetadata.filesCodable]()
         var version = 1
         var version = 1
-        var e2eMetadataKey: e2eMetadata.metadataKeyCodable?
+        //var e2eMetadataKey: e2eMetadata.metadataKeyCodable?
+        var metadataKeysDictionary = [String:String]()
         
         
-        // Create "files"
         for recordE2eEncryption in recordsE2eEncryption {
         for recordE2eEncryption in recordsE2eEncryption {
             
             
-            //
+            // *** metadataKey ***
+            
             // Double Encode64 for Android compatibility
             // Double Encode64 for Android compatibility
             let metadatakey = (recordE2eEncryption.metadataKey.data(using: .utf8)?.base64EncodedString())!
             let metadatakey = (recordE2eEncryption.metadataKey.data(using: .utf8)?.base64EncodedString())!
+            
             guard let metadataKeyEncryptedData = NCEndToEndEncryption.sharedManager().encryptAsymmetricString(metadatakey, publicKey: nil, privateKey: privateKey) else {
             guard let metadataKeyEncryptedData = NCEndToEndEncryption.sharedManager().encryptAsymmetricString(metadatakey, publicKey: nil, privateKey: privateKey) else {
                 return nil
                 return nil
             }
             }
+            
             let metadataKeyEncryptedBase64 = metadataKeyEncryptedData.base64EncodedString()
             let metadataKeyEncryptedBase64 = metadataKeyEncryptedData.base64EncodedString()
-
-            // Create "metadataKey" with encrypted maetadatakey
-            // Required a Modify
-            e2eMetadataKey = e2eMetadata.metadataKeyCodable(metadataKeys: ["0":metadataKeyEncryptedBase64], version: version)
             
             
+            metadataKeysDictionary["\(recordE2eEncryption.metadataKeyIndex)"] = metadataKeyEncryptedBase64
+            
+            // *** File ***
             let encrypted = e2eMetadata.encryptedFileAttributes(key: recordE2eEncryption.key, filename: recordE2eEncryption.fileName, mimetype: recordE2eEncryption.mimeType, version: recordE2eEncryption.version)
             let encrypted = e2eMetadata.encryptedFileAttributes(key: recordE2eEncryption.key, filename: recordE2eEncryption.fileName, mimetype: recordE2eEncryption.mimeType, version: recordE2eEncryption.version)
             
             
             do {
             do {
@@ -114,9 +116,13 @@ class NCEndToEndMetadata : NSObject  {
             
             
             version = recordE2eEncryption.version
             version = recordE2eEncryption.version
         }
         }
+
+        // Create Json metadataKeys
+        //e2eMetadataKey = e2eMetadata.metadataKeyCodable(metadataKeys: ["0":metadataKeyEncryptedBase64], version: version)
+        let e2eMetadataKey = e2eMetadata.metadataKeyCodable(metadataKeys: metadataKeysDictionary, version: version)
         
         
         // Create final Json e2emetadata
         // Create final Json e2emetadata
-        let e2emetadata = e2eMetadata(files: files, metadata: e2eMetadataKey!, sharing: nil)
+        let e2emetadata = e2eMetadata(files: files, metadata: e2eMetadataKey, sharing: nil)
         
         
         do {
         do {
             
             
@@ -142,12 +148,13 @@ class NCEndToEndMetadata : NSObject  {
         
         
         do {
         do {
             
             
+            // *** metadataKey ***
+            
             let decode = try jsonDecoder.decode(e2eMetadata.self, from: data!)
             let decode = try jsonDecoder.decode(e2eMetadata.self, from: data!)
             
             
             let files = decode.files
             let files = decode.files
             let metadata = decode.metadata
             let metadata = decode.metadata
             //let sharing = decode.sharing ---> V 2.0
             //let sharing = decode.sharing ---> V 2.0
-            
             var metadataKeysDictionary = [String:String]()
             var metadataKeysDictionary = [String:String]()
             
             
             for metadataKeyDictionaryEncrypted in metadata.metadataKeys {
             for metadataKeyDictionaryEncrypted in metadata.metadataKeys {
@@ -167,6 +174,8 @@ class NCEndToEndMetadata : NSObject  {
                 metadataKeysDictionary[metadataKeyDictionaryEncrypted.key] = metadataKey
                 metadataKeysDictionary[metadataKeyDictionaryEncrypted.key] = metadataKey
             }
             }
             
             
+            // *** File ***
+            
             for file in files {
             for file in files {
                 
                 
                 let fileNameIdentifier = file.key
                 let fileNameIdentifier = file.key