Marino Faggiana 7 жил өмнө
parent
commit
1a0ea40c74

+ 10 - 5
iOSClient/Security/NCEndToEndEncryption.m

@@ -409,8 +409,7 @@ cleanup:
     
     if (result && privateKeyData) {
         
-        NSString *privateKey = [self base64Decode:privateKeyData];
-        privateKey = [self structPEMFormat:privateKey];
+        NSString *privateKey = [self derToPem:privateKeyData];
         
         NSData *encryptData = [self encryptAsymmetricString:ASYMMETRIC_STRING_TEST publicKey:publicKey];
         if (!encryptData)
@@ -660,7 +659,7 @@ cleanup:
     *plainData = [NSMutableData dataWithLength:([cipherData length])];
     int pPlainLen = 0;
     unsigned char * pPlain = [*plainData mutableBytes];
-    status = EVP_DecryptUpdate (ctx, pPlain, &pPlainLen, [cipherData bytes], (int)([cipherData length]));
+    status = EVP_DecryptUpdate(ctx, pPlain, &pPlainLen, [cipherData bytes], (int)([cipherData length]));
     if (! status)
         return NO;
     
@@ -669,9 +668,12 @@ cleanup:
     if (! status)
         return NO;
     
+    //     if(!EVP_DecryptUpdate(ctx, ptext, &plen, ciphertext, ciphertext_length - 16)) {
+    //    int ret = EVP_DecryptFinal_ex(ctx, ptext + plen, &len);
+
     //Finalise the encryption
     len = pPlainLen;
-    int statusEND = EVP_DecryptFinal_ex (ctx, pPlain + pPlainLen, &len);
+    int statusEND = EVP_DecryptFinal_ex(ctx,(unsigned char*)pPlain + pPlainLen, (int *)&len);
     
     // Free
     EVP_CIPHER_CTX_free(ctx);
@@ -812,12 +814,15 @@ cleanup:
     return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
 }
 
-- (NSString *)structPEMFormat:(NSString *)input
+- (NSString *)derToPem:(NSData *)inputData
 {
     NSMutableArray *substringArray = [NSMutableArray array];
     NSInteger startingPoint = 0;
     NSInteger substringLength = 65;
 
+    // decode Base64
+    NSString *input = [self base64Decode:inputData];
+    
     for (NSInteger i = 0; i < input.length / substringLength; i++) {
         NSString *substring = [input substringWithRange:NSMakeRange(startingPoint, substringLength)];
         substring = [substring stringByAppendingString:@"\n"];