Marino Faggiana 7 years ago
parent
commit
f4830c3abf
1 changed files with 21 additions and 9 deletions
  1. 21 9
      iOSClient/Security/NCEndToEndEncryption.m

+ 21 - 9
iOSClient/Security/NCEndToEndEncryption.m

@@ -331,12 +331,22 @@ cleanup:
     
     // mnemonic
     NSString *mnemonic = k_Mnemonic_test;
+    
+    // Get Init Vector
+    NSRange range = [privateKeyCipher rangeOfString:IV_DELIMITER_ENCODED];
+    NSInteger idx = range.location + range.length;
+    NSString *initVector = [privateKeyCipher substringFromIndex:idx];
 
-
+    // Get privateKeyCipher
+    //privateKeyCipher = [privateKeyCipher substringToIndex:range.location];
+    NSData *privateKeyCipherData = [privateKeyCipher dataUsingEncoding:NSUTF8StringEncoding];
+    NSMutableData *privateKeyData;
+    NSData *keyData = [mnemonic dataUsingEncoding:NSUTF8StringEncoding];
+    NSData *initVectorData = [initVector dataUsingEncoding:NSUTF8StringEncoding];
     
-    // Get IV
-    NSString *initVector;
+    BOOL result = [self aes256gcmDecrypt:privateKeyCipherData plainData:&privateKeyData keyData:keyData initVectorData:initVectorData tag:nil];
     
+    NSLog(@"x");
 }
 
 #
@@ -441,13 +451,15 @@ cleanup:
     //bzero(cTag, AES_GCM_TAG_LENGTH);
     //[tagData getBytes:cTag length:AES_GCM_TAG_LENGTH];
     
-    /* verify tag */
-    NSData *authenticationTagData = [cipherData subdataWithRange:NSMakeRange([cipherData length] - AES_GCM_TAG_LENGTH, AES_GCM_TAG_LENGTH)];
-    NSString *authenticationTag = [authenticationTagData base64EncodedStringWithOptions:0];
-    
-    if (![authenticationTag isEqualToString:tag])
-        return NO;
+    /* verify tag if exists*/
+    if (tag) {
+        
+        NSData *authenticationTagData = [cipherData subdataWithRange:NSMakeRange([cipherData length] - AES_GCM_TAG_LENGTH, AES_GCM_TAG_LENGTH)];
+        NSString *authenticationTag = [authenticationTagData base64EncodedStringWithOptions:0];
     
+        if (![authenticationTag isEqualToString:tag])
+            return NO;
+    }
     /* Create and initialise the context */
     EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new();