Marino Faggiana před 7 roky
rodič
revize
9c01507242

+ 1 - 1
iOSClient/Security/NCEndToEndEncryption.h

@@ -36,7 +36,7 @@
 - (NSData *)encryptAsymmetricString:(NSString *)plain publicKey:(NSString *)publicKey;
 - (NSString *)decryptAsymmetricData:(NSData *)cipherData privateKey:(NSString *)privateKey;
 
-- (NSString *)decryptMetadata:(NSString *)encrypted Key:(NSString *)Key;
+- (NSString *)decryptMetadata:(NSString *)encrypted key:(NSString *)key;
 
 - (BOOL)encryptFileName:(NSString *)fileName fileNameIdentifier:(NSString *)fileNameIdentifier directoryUser:(NSString *)directoryUser key:(NSString **)key initializationVector:(NSString **)initializationVector authenticationTag:(NSString **)authenticationTag;
 

+ 6 - 12
iOSClient/Security/NCEndToEndEncryption.m

@@ -450,23 +450,20 @@ cleanup:
 #pragma mark - Encrypt / Decrypt Metadata
 #
 
-- (NSString *)decryptMetadata:(NSString *)encrypted Key:(NSString *)Key
+- (NSString *)decryptMetadata:(NSString *)encrypted key:(NSString *)key
 {
     NSMutableData *plainData;
     NSRange range = [encrypted rangeOfString:IV_DELIMITER_ENCODED];
-
-    // Key
-    NSData *keyData = [self base64DecodeString:Key];
     
     // Tag
     NSString *tag  = [encrypted substringWithRange:NSMakeRange(range.location + range.length, encrypted.length - (range.location + range.length))];
-    NSData *tagData = [[NSData alloc] initWithBase64EncodedString:tag options:0];
+    NSData *tagData = [self base64DecodeString:tag];
     
     // Cipher
     NSString *cipher = [encrypted substringToIndex:(range.location)];
-    NSData *cipherData = [[NSData alloc] initWithBase64EncodedString:cipher options:0];
+    NSData *cipherData = [self base64DecodeString:cipher];
     
-    BOOL result = [self decryptMetadataJ:cipherData keyData:keyData tagData:tagData];
+    BOOL result = [self decryptMetadataJ:cipherData key:key tagData:tagData];
     
     if (plainData != nil && result) {
         
@@ -561,16 +558,13 @@ cleanup:
 #pragma mark - Asymmetric Encrypt/Decrypt Metadata JSON
 #
 
-- (NSString *)decryptMetadataJ:(NSData *)metadataData keyData:(NSData *)keyData tagData:(NSData *)tagData
+- (NSString *)decryptMetadataJ:(NSData *)metadataData key:(NSString *)key tagData:(NSData *)tagData
 {
     int status = 0;
     int len = 0;
 
     // set up key
-    len = (int)keyData.length;
-    unsigned char cKey[len];
-    bzero(cKey, sizeof(cKey));
-    [keyData getBytes:cKey length:len];
+    unsigned char *cKey = (unsigned char *)[key UTF8String];
    
     // set up tag
     len = (int)[tagData length];;