Parcourir la source

fix : encryptAsymmetricString

Marino Faggiana il y a 7 ans
Parent
commit
d43f905314
1 fichiers modifiés avec 13 ajouts et 5 suppressions
  1. 13 5
      iOSClient/Security/NCEndToEndEncryption.m

+ 13 - 5
iOSClient/Security/NCEndToEndEncryption.m

@@ -426,7 +426,6 @@ cleanup:
     
         if (privateKey) {
         
-            /*
             NSData *encryptData = [self encryptAsymmetricString:ASYMMETRIC_STRING_TEST publicKey:publicKey];
             if (!encryptData)
                 return nil;
@@ -437,7 +436,6 @@ cleanup:
                 return privateKey;
             else
                 return nil;
-            */
             
             return privateKey;
             
@@ -482,6 +480,14 @@ cleanup:
     if (status <= 0)
         return nil;
     
+    status = EVP_PKEY_CTX_set_rsa_oaep_md(ctx, EVP_sha256());
+    if (status <= 0)
+        return nil;
+    
+    status = EVP_PKEY_CTX_set_rsa_mgf1_md(ctx, EVP_sha256());
+    if (status <= 0)
+        return nil;
+    
     unsigned long outLen = 0;
     NSData *plainData = [plain dataUsingEncoding:NSUTF8StringEncoding];
     status = EVP_PKEY_encrypt(ctx, NULL, &outLen, [plainData bytes], (int)[plainData length]);
@@ -561,21 +567,23 @@ cleanup:
 {
     NSMutableData *plainData;
     
-    NSData *cipherData = [encrypted dataUsingEncoding:NSUTF8StringEncoding];
     NSData *keyData = [privateKey dataUsingEncoding:NSUTF8StringEncoding];
     NSData *ivData = [initializationVector dataUsingEncoding:NSUTF8StringEncoding];
     
-
+    // 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];
     
+    // Cipher
+    NSString *cipher = [encrypted substringToIndex:(range.location)];
+    NSData *cipherData = [cipher dataUsingEncoding:NSUTF8StringEncoding];
     
     BOOL result = [self decryptData:cipherData plainData:&plainData keyData:keyData keyLen:AES_KEY_128_LENGTH ivData:ivData tagData:tagData];
     
     if (plainData != nil && result) {
         NSString *plain = [plainData base64EncodedStringWithOptions:0];
-        return plain; //[[NSString alloc] initWithData:plainData encoding:NSUTF8StringEncoding];
+        return plain;
     } else {
         return nil;
     }