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

+ 1 - 2
iOSClient/Networking/E2EE/NCEndToEndEncryption.h

@@ -66,8 +66,7 @@
 - (void)Encodedkey:(NSString **)key initializationVector:(NSString **)initializationVector;
 - (NSData *)generateKey;
 - (NSString *)createSHA512:(NSString *)string;
-- (NSString *)createSHA256FromString:(NSString *)string;
-- (NSString *)createSHA256FromData:(NSData *)data;
+- (NSString *)createSHA256:(NSData *)data;
 - (NSString *)extractPublicKeyFromCertificate:(NSString *)pemCertificate;
 
 @end

+ 2 - 14
iOSClient/Networking/E2EE/NCEndToEndEncryption.m

@@ -1216,20 +1216,7 @@
     *initializationVector = [ivData base64EncodedStringWithOptions:0];
 }
 
-- (NSString *)createSHA256FromString:(NSString *)string
-{
-    const char *cstr = [string cStringUsingEncoding:NSASCIIStringEncoding];
-    NSData *data = [NSData dataWithBytes:cstr length:string.length];
-    uint8_t digest[CC_SHA256_DIGEST_LENGTH];
-    CC_SHA256(data.bytes, (unsigned int)data.length, digest);
-    NSMutableString* output = [NSMutableString  stringWithCapacity:CC_SHA256_DIGEST_LENGTH * 2];
-
-    for(int i = 0; i < CC_SHA256_DIGEST_LENGTH; i++)
-        [output appendFormat:@"%02x", digest[i]];
-    return output;
-}
-
-- (NSString *)createSHA256FromData:(NSData *)data
+- (NSString *)createSHA256:(NSData *)data
 {
     uint8_t digest[CC_SHA256_DIGEST_LENGTH];
     CC_SHA256(data.bytes, (unsigned int)data.length, digest);
@@ -1244,6 +1231,7 @@
 {
     const char *cstr = [string cStringUsingEncoding:NSUTF8StringEncoding];
     NSData *data = [NSData dataWithBytes:cstr length:string.length];
+
     uint8_t digest[CC_SHA512_DIGEST_LENGTH];
     CC_SHA512(data.bytes, (unsigned int)data.length, digest);
     NSMutableString* output = [NSMutableString  stringWithCapacity:CC_SHA512_DIGEST_LENGTH * 2];

+ 4 - 2
iOSClient/Networking/E2EE/NCEndToEndMetadataV1.swift

@@ -109,7 +109,8 @@ extension NCEndToEndMetadata {
 
         // Create checksum
         let passphrase = CCUtility.getEndToEndPassphrase(account).replacingOccurrences(of: " ", with: "")
-        let checksum = NCEndToEndEncryption.sharedManager().createSHA256(from: passphrase + fileNameIdentifiers.sorted().joined() + metadataKey)
+        let dataChecksum = (passphrase + fileNameIdentifiers.sorted().joined() + metadataKey).data(using: .utf8)
+        let checksum = NCEndToEndEncryption.sharedManager().createSHA256(dataChecksum)
 
         // Create Json
         let metadata = E2eeV12.Metadata(metadataKey: metadataKey, version: metadataVersion, checksum: checksum)
@@ -294,7 +295,8 @@ extension NCEndToEndMetadata {
 
             // verify checksum
             let passphrase = CCUtility.getEndToEndPassphrase(account).replacingOccurrences(of: " ", with: "")
-            let checksum = NCEndToEndEncryption.sharedManager().createSHA256(from: passphrase + fileNameIdentifiers.sorted().joined() + metadata.metadataKey)
+            let dataChecksum = (passphrase + fileNameIdentifiers.sorted().joined() + metadata.metadataKey).data(using: .utf8)
+            let checksum = NCEndToEndEncryption.sharedManager().createSHA256(dataChecksum)
             if metadata.checksum != checksum {
                 return NKError(errorCode: NCGlobal.shared.errorE2EE, errorDescription: "Error checksum")
             }

+ 2 - 2
iOSClient/Networking/E2EE/NCEndToEndMetadataV20.swift

@@ -88,7 +88,7 @@ extension NCEndToEndMetadata {
         }
 
         var keyChecksums = Array(e2eMetadataV2.keyChecksums.map { $0 })
-        if let hash = NCEndToEndEncryption.sharedManager().createSHA256(from: encryptedMetadataKey) {
+        if let hash = NCEndToEndEncryption.sharedManager().createSHA256(encryptedMetadataKey.data(using: .utf8)) {
             keyChecksums.append(hash)
         }
 
@@ -246,7 +246,7 @@ extension NCEndToEndMetadata {
 
                             // Checksums check
                             if let keyChecksums = json.keyChecksums,
-                                let hash = NCEndToEndEncryption.sharedManager().createSHA256(from: decryptedMetadataKey),
+                                let hash = NCEndToEndEncryption.sharedManager().createSHA256(decryptedMetadataKey),
                                 !keyChecksums.contains(hash) {
                                 return NKError(errorCode: NCGlobal.shared.errorE2EEKeyChecksums, errorDescription: NSLocalizedString("_e2ee_checksums_error_", comment: ""))
                             }