Marino Faggiana 7 жил өмнө
parent
commit
45bbc16737

+ 11 - 4
iOSClient/Security/NCEndToEndEncryption.m

@@ -564,14 +564,21 @@ cleanup:
     NSData *cipherData = [encrypted dataUsingEncoding:NSUTF8StringEncoding];
     NSData *keyData = [privateKey dataUsingEncoding:NSUTF8StringEncoding];
     NSData *ivData = [initializationVector dataUsingEncoding:NSUTF8StringEncoding];
-    NSData *tagData = [authenticationTag dataUsingEncoding:NSUTF8StringEncoding];
+    
 
+    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];
+    
+    
     BOOL result = [self decryptData:cipherData plainData:&plainData keyData:keyData keyLen:AES_KEY_128_LENGTH ivData:ivData tagData:tagData];
     
-    if (plainData != nil && result)
-        return [[NSString alloc] initWithData:plainData encoding:NSUTF8StringEncoding];
-    else
+    if (plainData != nil && result) {
+        NSString *plain = [plainData base64EncodedStringWithOptions:0];
+        return plain; //[[NSString alloc] initWithData:plainData encoding:NSUTF8StringEncoding];
+    } else {
         return nil;
+    }
 }
 
 #

+ 3 - 2
iOSClient/Security/NCEntoToEndInterface.swift

@@ -515,10 +515,12 @@ class NCEntoToEndInterface : NSObject, OCNetworkingDelegate  {
             for metadataKeys in metadata.metadataKeys {
                 
                 guard let metadataKeysData : NSData = NSData(base64Encoded: metadataKeys.value, options: NSData.Base64DecodingOptions(rawValue: 0)) else {
+                    appDelegate.messageNotification("E2E decode metadata", description: "Serious internal error in decoding metadata", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: 0)
                     return nil
                 }
 
                 guard let metadataKey = NCEndToEndEncryption.sharedManager().decryptAsymmetricData(metadataKeysData as Data!, privateKey: privateKey) else {
+                    appDelegate.messageNotification("E2E decode metadata", description: "Serious internal error in decoding metadata", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: 0)
                     return nil
                 }
                 
@@ -538,7 +540,7 @@ class NCEntoToEndInterface : NSObject, OCNetworkingDelegate  {
                 
                 
                 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)
                     return nil
                 }
             
@@ -556,7 +558,6 @@ class NCEntoToEndInterface : NSObject, OCNetworkingDelegate  {
         
         return e2eMetaDataJSON
     }
-    
 }