Sfoglia il codice sorgente

clear code

Signed-off-by: Marino Faggiana <marino@marinofaggiana.com>
Marino Faggiana 2 anni fa
parent
commit
3a667a4e14

+ 14 - 5
iOSClient/Networking/E2EE/NCEndToEndEncryption.h

@@ -33,23 +33,32 @@
 @property (nonatomic, strong) NSString *generatedPublicKey;
 @property (nonatomic, strong) NSString *generatedPrivateKey;
 
+// Certificate
+
 - (NSString *)createCSR:(NSString *)userId directory:(NSString *)directory;
 - (NSString *)encryptPrivateKey:(NSString *)userId directory: (NSString *)directory passphrase:(NSString *)passphrase privateKey:(NSString **)privateKey;
 - (NSData *)decryptPrivateKey:(NSString *)privateKeyCipher passphrase:(NSString *)passphrase publicKey:(NSString *)publicKey;
 
+// Encrypt / Decrypt file material
+
+- (NSString *)encryptPayloadFile:(NSString *)encrypted key:(NSString *)key;
+- (NSData *)decryptPayloadFile:(NSString *)encrypted key:(NSString *)key;
+
+// Encrypt/Decrypt asymmetric
+
 - (NSData *)encryptAsymmetricString:(NSString *)plain publicKey:(NSString *)publicKey privateKey:(NSString *)privateKey;
 - (NSData *)decryptAsymmetricData:(NSData *)cipherData privateKey:(NSString *)privateKey;
 
-- (NSString *)encryptEncryptedJson:(NSString *)encrypted key:(NSString *)key;
-- (NSData *)decryptEncryptedJson:(NSString *)encrypted key:(NSString *)key;
+// Encrypt / Decrypt file
 
-- (void)encryptkey:(NSString **)key initializationVector:(NSString **)initializationVector;
 - (BOOL)encryptFile:(NSString *)fileName fileNameIdentifier:(NSString *)fileNameIdentifier directory:(NSString *)directory key:(NSString **)key initializationVector:(NSString **)initializationVector authenticationTag:(NSString **)authenticationTag;
 - (BOOL)decryptFile:(NSString *)fileName fileNameView:(NSString *)fileNameView ocId:(NSString *)ocId key:(NSString *)key initializationVector:(NSString *)initializationVector authenticationTag:(NSString *)authenticationTag;
 
-- (NSData *)generateKey:(int)length;
-- (NSString *)createSHA512:(NSString *)string;
+// Utility
 
+- (void)Encodedkey:(NSString **)key initializationVector:(NSString **)initializationVector;
+- (NSData *)generateKey;
+- (NSString *)createSHA512:(NSString *)string;
 - (NSString *)extractPublicKeyFromCertificate:(NSString *)pemCertificate;
 
 @end

+ 25 - 16
iOSClient/Networking/E2EE/NCEndToEndEncryption.m

@@ -411,10 +411,10 @@
 }
 
 #
-#pragma mark - Encrypt / Decrypt Encrypted Json
+#pragma mark - Encrypt / Decrypt file material
 #
 
-- (NSString *)encryptEncryptedJson:(NSString *)encrypted key:(NSString *)key
+- (NSString *)encryptPayloadFile:(NSString *)encrypted key:(NSString *)key
 {
     NSMutableData *cipherData;
     NSData *tagData = [NSData new];
@@ -444,7 +444,7 @@
 }
 
 
-- (NSData *)decryptEncryptedJson:(NSString *)encrypted key:(NSString *)key
+- (NSData *)decryptPayloadFile:(NSString *)encrypted key:(NSString *)key
 {
     NSMutableData *plainData;
     NSRange range = [encrypted rangeOfString:IV_DELIMITER_ENCODED];
@@ -486,16 +486,6 @@
 #pragma mark - Encrypt / Decrypt file
 #
 
-- (void)encryptkey:(NSString **)key initializationVector:(NSString **)initializationVector
-{
-    NSData *keyData = [self generateKey:AES_KEY_128_LENGTH];
-    NSData *ivData = [self generateIV:AES_IVEC_LENGTH];
-    
-    *key = [keyData base64EncodedStringWithOptions:0];
-    *initializationVector = [ivData base64EncodedStringWithOptions:0];
-}
-
-
 - (BOOL)encryptFile:(NSString *)fileName fileNameIdentifier:(NSString *)fileNameIdentifier directory:(NSString *)directory key:(NSString **)key initializationVector:(NSString **)initializationVector authenticationTag:(NSString **)authenticationTag
 {
     NSMutableData *cipherData;
@@ -558,7 +548,7 @@
 
 
 #
-#pragma mark - Asymmetric Encrypt/Decrypt String
+#pragma mark - Encrypt/Decrypt asymmetric
 #
 
 - (NSData *)encryptAsymmetricString:(NSString *)plain publicKey:(NSString *)publicKey privateKey:(NSString *)privateKey
@@ -840,6 +830,15 @@
 #pragma mark - Utility
 #
 
+- (void)Encodedkey:(NSString **)key initializationVector:(NSString **)initializationVector
+{
+    NSData *keyData = [self generateKey:AES_KEY_128_LENGTH];
+    NSData *ivData = [self generateIV:AES_IVEC_LENGTH];
+
+    *key = [keyData base64EncodedStringWithOptions:0];
+    *initializationVector = [ivData base64EncodedStringWithOptions:0];
+}
+
 - (NSString *)createSHA512:(NSString *)string
 {
     const char *cstr = [string cStringUsingEncoding:NSUTF8StringEncoding];
@@ -857,7 +856,7 @@
 {
     NSMutableData *ivData = [NSMutableData dataWithLength:length];
     (void)SecRandomCopyBytes(kSecRandomDefault, length, ivData.mutableBytes);
-    
+
     return ivData;
 }
 
@@ -875,7 +874,17 @@
     unsigned char *pKeyData = [keyData mutableBytes];
 
     RAND_bytes(pKeyData, length);
-    
+
+    return keyData;
+}
+
+- (NSData *)generateKey
+{
+    NSMutableData *keyData = [NSMutableData dataWithLength:AES_KEY_128_LENGTH];
+    unsigned char *pKeyData = [keyData mutableBytes];
+
+    RAND_bytes(pKeyData, AES_KEY_128_LENGTH);
+
     return keyData;
 }
 

+ 3 - 3
iOSClient/Networking/E2EE/NCEndToEndMetadata.swift

@@ -114,7 +114,7 @@ class NCEndToEndMetadata: NSObject {
                     // Create "encrypted"
                     let json = try encoder.encode(encrypted)
                     let encryptedString = String(data: json, encoding: .utf8)
-                    if let encrypted = NCEndToEndEncryption.sharedManager().encryptEncryptedJson(encryptedString, key: item.metadataKey) {
+                    if let encrypted = NCEndToEndEncryption.sharedManager().encryptPayloadFile(encryptedString, key: item.metadataKey) {
                         let record = E2eeV12.Files(initializationVector: item.initializationVector, authenticationTag: item.authenticationTag, encrypted: encrypted)
                         files.updateValue(record, forKey: item.fileNameIdentifier)
                     }
@@ -229,7 +229,7 @@ class NCEndToEndMetadata: NSObject {
                     let metadataKeyIndex = files.metadataKey
                     let initializationVector = files.initializationVector
 
-                    if let decrypted = NCEndToEndEncryption.sharedManager().decryptEncryptedJson(encrypted, key: metadataKey),
+                    if let decrypted = NCEndToEndEncryption.sharedManager().decryptPayloadFile(encrypted, key: metadataKey),
                        let decryptedData = Data(base64Encoded: decrypted) {
                         do {
                             let encrypted = try decoder.decode(E2eeV1.Encrypted.self, from: decryptedData)
@@ -331,7 +331,7 @@ class NCEndToEndMetadata: NSObject {
                     let authenticationTag = files.authenticationTag
                     let initializationVector = files.initializationVector
 
-                    if let decrypted = NCEndToEndEncryption.sharedManager().decryptEncryptedJson(encrypted, key: metadataKey),
+                    if let decrypted = NCEndToEndEncryption.sharedManager().decryptPayloadFile(encrypted, key: metadataKey),
                        let decryptedData = Data(base64Encoded: decrypted) {
                         do {
                             decryptedData.printJson()

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

@@ -127,7 +127,7 @@ class NCNetworkingE2EECreateFolder: NSObject {
         }
 
         // Add new metadata
-        NCEndToEndEncryption.sharedManager()?.encryptkey(&key, initializationVector: &initializationVector)
+        NCEndToEndEncryption.sharedManager()?.encodedkey(&key, initializationVector: &initializationVector)
         object.account = account
         object.authenticationTag = ""
         object.fileName = fileNameFolder
@@ -139,7 +139,7 @@ class NCNetworkingE2EECreateFolder: NSObject {
             object.metadataKey = result.metadataKey
             object.metadataKeyIndex = result.metadataKeyIndex
         } else {
-            object.metadataKey = (NCEndToEndEncryption.sharedManager()?.generateKey(16)?.base64EncodedString(options: []))! as String // AES_KEY_128_LENGTH
+            object.metadataKey = (NCEndToEndEncryption.sharedManager()?.generateKey()?.base64EncodedString(options: []))! as String // AES_KEY_128_LENGTH
             object.metadataKeyIndex = 0
         }
         object.mimeType = "httpd/unix-directory"

+ 1 - 1
iOSClient/Networking/E2EE/NCNetworkingE2EEUpload.swift

@@ -160,7 +160,7 @@ class NCNetworkingE2EEUpload: NSObject {
             objectE2eEncryption.metadataKey = result.metadataKey
             objectE2eEncryption.metadataKeyIndex = result.metadataKeyIndex
         } else {
-            let key = NCEndToEndEncryption.sharedManager()?.generateKey(16) as NSData?
+            let key = NCEndToEndEncryption.sharedManager()?.generateKey() as NSData?
             objectE2eEncryption.metadataKey = key!.base64EncodedString()
             objectE2eEncryption.metadataKeyIndex = 0
         }