Marino Faggiana 7 年之前
父节点
当前提交
df8bb6de33
共有 2 个文件被更改,包括 12 次插入10 次删除
  1. 9 6
      iOSClient/Security/NCEndToEndEncryption.m
  2. 3 4
      iOSClient/Security/NCEntoToEndInterface.swift

+ 9 - 6
iOSClient/Security/NCEndToEndEncryption.m

@@ -453,18 +453,21 @@ cleanup:
 - (NSString *)decryptMetadata:(NSString *)encrypted privateKey:(NSString *)privateKey initializationVector:(NSString *)initializationVector authenticationTag:(NSString *)authenticationTag
 {
     NSMutableData *plainData;
-    
-    NSData *keyData = [privateKey dataUsingEncoding:NSUTF8StringEncoding];
-    NSData *ivData = [initializationVector dataUsingEncoding:NSUTF8StringEncoding];
+    NSRange range = [encrypted rangeOfString:IV_DELIMITER_ENCODED];
+
+    NSData *keyData = [[NSData alloc] initWithBase64EncodedString:privateKey options:0];
+    NSData *ivData = [[NSData alloc] initWithBase64EncodedString:initializationVector options:0];
     
     // Tag
-    NSRange range = [encrypted rangeOfString:IV_DELIMITER_ENCODED];
     authenticationTag = [encrypted substringWithRange:NSMakeRange(range.location - AES_GCM_TAG_LENGTH, AES_GCM_TAG_LENGTH)];
-    NSData *tagData = [authenticationTag dataUsingEncoding:NSUTF8StringEncoding];
+    NSData *tagData = [[NSData alloc] initWithBase64EncodedString:authenticationTag options:0];
     
     // Cipher
     NSString *cipher = [encrypted substringToIndex:(range.location)];
-    NSData *cipherData = [cipher dataUsingEncoding:NSUTF8StringEncoding];
+    NSData *cipherData = [[NSData alloc] initWithBase64EncodedString:cipher options:0];
+        
+    //NSData *tagData = [[NSData alloc] initWithBase64EncodedString:authenticationTag options:0];
+    //NSData *cipherData = [[NSData alloc] initWithBase64EncodedString:encrypted options:0];
     
     BOOL result = [self decryptData:cipherData plainData:&plainData keyData:keyData keyLen:AES_KEY_128_LENGTH ivData:ivData tagData:tagData];
     

+ 3 - 4
iOSClient/Security/NCEntoToEndInterface.swift

@@ -510,7 +510,7 @@ class NCEntoToEndInterface : NSObject, OCNetworkingDelegate  {
             let metadata = response.metadata
             //let sharing = response.sharing
             
-            var planMetadataKeys = [String:String]()
+            var decodeMetadataKeys = [String:String]()
             
             for metadataKeys in metadata.metadataKeys {
                 
@@ -524,7 +524,7 @@ class NCEntoToEndInterface : NSObject, OCNetworkingDelegate  {
                     return nil
                 }
                 
-                planMetadataKeys[metadataKeys.key] = metadataKey
+                decodeMetadataKeys[metadataKeys.key] = metadataKey
             }
             
             for file in files {
@@ -536,8 +536,7 @@ class NCEntoToEndInterface : NSObject, OCNetworkingDelegate  {
                 let tag = element.authenticationTag
                 let encrypted = element.encrypted
                 let metadataKeysKey = element.metadataKey
-                let key = planMetadataKeys["\(metadataKeysKey)"]
-                
+                let key = decodeMetadataKeys["\(metadataKeysKey)"]
                 
                 guard let decyptedMetadata = NCEndToEndEncryption.sharedManager().decryptMetadata(encrypted, privateKey: key, initializationVector: iv, authenticationTag: tag) else {
                     appDelegate.messageNotification("E2E decode metadata", description: "Serious internal error in decoding metadata", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: 0)