Marino Faggiana 7 years ago
parent
commit
f1403d36ed

+ 1 - 1
iOSClient/Database/NCDatabase.swift

@@ -100,7 +100,7 @@ class tableDirectory: Object {
     @objc dynamic var dateReadDirectory: NSDate? = nil
     @objc dynamic var directoryID = ""
     @objc dynamic var e2eEncrypted: Bool = false
-    @objc dynamic var e2eMetadataJSON = ""
+    @objc dynamic var e2eMetadataKey = ""
     @objc dynamic var etag = ""
     @objc dynamic var favorite: Bool = false
     @objc dynamic var fileID = ""

+ 2 - 2
iOSClient/Database/NCManageDatabase.swift

@@ -1041,7 +1041,7 @@ class NCManageDatabase: NSObject {
         }
     }
     
-    @objc func setDirectoryE2EMetadataJSON(serverUrl: String, metadata: String) -> Bool {
+    @objc func setDirectoryE2EMetadataKey(serverUrl: String, metadataKey: String) -> Bool {
         
         guard let tableAccount = self.getAccountActive() else {
             return false
@@ -1056,7 +1056,7 @@ class NCManageDatabase: NSObject {
             return false
         }
         
-        result.e2eMetadataJSON = metadata
+        result.e2eMetadataKey = metadataKey
         
         do {
             try realm.commitWrite()

+ 4 - 3
iOSClient/Networking/CCNetworking.m

@@ -1123,8 +1123,9 @@
         if ([CCUtility isFolderEncrypted:serverUrl account:_activeAccount]) {
             
             NSArray *tableE2eEncryption = [[NCManageDatabase sharedInstance] getE2eEncryptionsWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND serverUrl = %@", _activeAccount, serverUrl]];
-            
-            e2eMetadataJSON = [[NCEndToEndMetadata sharedInstance] encoderMetadata:tableE2eEncryption privateKey:[CCUtility getEndToEndPrivateKey:_activeAccount]];
+            tableDirectory *tableDirectory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND serverUrl = %@", _activeAccount, serverUrl]];
+
+            e2eMetadataJSON = [[NCEndToEndMetadata sharedInstance] encoderMetadata:tableE2eEncryption privateKey:[CCUtility getEndToEndPrivateKey:_activeAccount] key:tableDirectory.e2eMetadataKey];
             
             if (!e2eMetadataJSON) {
                 [[NCManageDatabase sharedInstance] addActivityClient:fileName fileID:assetLocalIdentifier action:k_activityDebugActionUpload selector:selector note:@"Serious internal error to encoding metadata" type:k_activityTypeFailure verbose:k_activityVerboseHigh activeUrl:_activeUrl];
@@ -1647,7 +1648,7 @@
     NSString *e2eTokenLock = @"";
     NSError *error;
     
-    if (directory.e2eMetadataJSON.length > 0) {
+    if (directory.e2eMetadataKey.length > 0) {
         error = [[NCNetworkingSync sharedManager] updateEndToEndMetadata:_activeUser userID:_activeUserID password:_activePassword url:_activeUrl fileID:directory.fileID metadata:metadata token:&e2eTokenLock];
     } else {
         error = [[NCNetworkingSync sharedManager] storeEndToEndMetadata:_activeUser userID:_activeUserID password:_activePassword url:_activeUrl fileID:directory.fileID metadata:metadata token:&e2eTokenLock];

+ 8 - 4
iOSClient/Security/NCEndToEndMetadata.swift

@@ -68,15 +68,19 @@ class NCEndToEndMetadata : NSObject  {
     // MARK: Encode / Decode JSON Metadata
     // --------------------------------------------------------------------------------------------
     
-    @objc func encoderMetadata(_ recordsE2eEncryption: [tableE2eEncryption], privateKey: String) -> String? {
+    @objc func encoderMetadata(_ recordsE2eEncryption: [tableE2eEncryption], privateKey: String, key: String?) -> String? {
         
         let jsonEncoder = JSONEncoder.init()
         var files = [String: e2eMetadata.filesCodable]()
         var version = 1
+        var keyGenerated = ""
         
         // Generate Key
-        //let keyGenerated = NCEndToEndEncryption.sharedManager().generateKey(16).base64EncodedString() // AES_KEY_128_LENGTH
-        let keyGenerated = "LPOJLSgnHTuI9yKQVpaqSA=="
+        if (key == nil) {
+            keyGenerated = NCEndToEndEncryption.sharedManager().generateKey(16).base64EncodedString() // AES_KEY_128_LENGTH
+        } else {
+            keyGenerated = key!
+        }
         
         // Double Encode64 for Android compatibility OMG
         let key = (keyGenerated.data(using: .utf8)?.base64EncodedString())!
@@ -201,7 +205,7 @@ class NCEndToEndMetadata : NSObject  {
                     }
                     
                     // Write e2eMetaDataJSON on DB
-                    if NCManageDatabase.sharedInstance.setDirectoryE2EMetadataJSON(serverUrl: serverUrl, metadata: e2eMetaDataJSON) == false {
+                    if NCManageDatabase.sharedInstance.setDirectoryE2EMetadataKey(serverUrl: serverUrl, metadataKey: key!) == false {
                         return false
                     }
                     

+ 0 - 2
iOSClient/Settings/NCManageEndToEndEncryption.m

@@ -143,7 +143,6 @@
         [section addFormRow:row];   
     }
     
-/*
 #ifdef DEBUG
     // Section DELETE KEYS -------------------------------------------------
     
@@ -167,7 +166,6 @@
     [section addFormRow:row];
     
 #endif
-*/
     
     self.form = form;
 }