Browse Source

update keychain function

Marino Faggiana 7 years ago
parent
commit
13c0159a7d
4 changed files with 60 additions and 56 deletions
  1. 9 8
      iOSClient/Main/CCMain.m
  2. 4 4
      iOSClient/Main/CCSplit.m
  3. 5 7
      iOSClient/Utility/CCUtility.h
  4. 42 37
      iOSClient/Utility/CCUtility.m

+ 9 - 8
iOSClient/Main/CCMain.m

@@ -1269,7 +1269,7 @@
             break;
         case 404: {
             // remove keychain
-            [CCUtility setEndToEndPublicKey:app.activeAccount publicKey:nil];
+            [CCUtility setEndToEndPublicKeySign:app.activeAccount set:NO];
             
             CCMetadataNet *metadataNet = [[CCMetadataNet alloc] initWithAccount:app.activeAccount];
             
@@ -1308,8 +1308,8 @@
     // Remove CSR
     [[NCEndToEndEncryption sharedManager] removeCSRToDisk:app.directoryUser];
     
-    // Store signed key locally keychain
-    [CCUtility setEndToEndPublicKey:app.activeAccount publicKey:metadataNet.options];
+    // OK signed key locally keychain
+    [CCUtility setEndToEndPublicKeySign:app.activeAccount set:YES];
     
     // Activity
     [[NCManageDatabase sharedInstance] addActivityClient:@"" fileID:@"" action:k_activityDebugActionEndToEndEncryption selector:metadataNet.selector note:@"EndToEndPublicKey sign on Server and stored locally" type:k_activityTypeSuccess verbose:k_activityVerboseHigh activeUrl:app.activeUrl];
@@ -1360,9 +1360,8 @@
             break;
         case 404: {
             // remove keychain
-            [CCUtility setEndToEndPrivateKeyCipher:app.activeAccount privateKeyCipher:nil];
-            
-            CCMetadataNet *metadataNet = [[CCMetadataNet alloc] initWithAccount:app.activeAccount];
+            [CCUtility setEndToEndPrivateKeyCipher:app.activeAccount set:NO];
+            [CCUtility setEndToEndMnemonic:app.activeAccount mnemonic:nil];
             
             NSString *mnemonic = [[NYMnemonic generateMnemonicString:@128 language:@"english"] stringByReplacingOccurrencesOfString:@" " withString:@""];
             mnemonic = @"moreovertelevisionfactorytendencyindependenceinternationalintellectualimpressinterestvolunteer";
@@ -1371,6 +1370,8 @@
             
             if (privateKeyCipher) {
                 
+                CCMetadataNet *metadataNet = [[CCMetadataNet alloc] initWithAccount:app.activeAccount];
+
                 metadataNet.action = actionStoreEndToEndPrivateKeyCipher;
                 metadataNet.options = privateKeyCipher;
                 metadataNet.password = mnemonic;
@@ -1403,8 +1404,8 @@
     // Remove PrivateKey
     [[NCEndToEndEncryption sharedManager] removePrivateKeyToDisk:app.directoryUser];
     
-    // Store privatekey locally keychain
-    [CCUtility setEndToEndPrivateKeyCipher:app.activeAccount privateKeyCipher:metadataNet.options];
+    // OK privatekey locally keychain
+    [CCUtility setEndToEndPrivateKeyCipher:app.activeAccount set:YES];
     // Strore mnemonic locally keychain
     [CCUtility setEndToEndMnemonic:app.activeAccount mnemonic:metadataNet.password];
     

+ 4 - 4
iOSClient/Main/CCSplit.m

@@ -101,8 +101,8 @@
     // Brand
     if ([NCBrandOptions sharedInstance].disable_intro) {
         
-        [CCUtility setIntroMessage:k_Intro view:YES];
-        [CCUtility setIntroMessage:k_Intro_no_cryptocloud view:YES];
+        [CCUtility setIntroMessage:k_Intro set:YES];
+        [CCUtility setIntroMessage:k_Intro_no_cryptocloud set:YES];
     
         [self introWillFinish:nil type:nil wasSkipped:NO];
 
@@ -136,7 +136,7 @@
     // -1-
     if ([type isEqualToString:k_Intro]) {
         
-        [CCUtility setIntroMessage:k_Intro view:YES];
+        [CCUtility setIntroMessage:k_Intro set:YES];
         // next
         _intro = [[CCIntro alloc] initWithDelegate:self delegateView:self.view type:k_Intro_no_cryptocloud];
         [_intro show];
@@ -147,7 +147,7 @@
     // -2-
     if ([type isEqualToString:k_Intro_no_cryptocloud]) {
         
-        [CCUtility setIntroMessage:k_Intro_no_cryptocloud view:YES];
+        [CCUtility setIntroMessage:k_Intro_no_cryptocloud set:YES];
     }
     
     // check account

+ 5 - 7
iOSClient/Utility/CCUtility.h

@@ -67,7 +67,7 @@
 + (void)setAscendingSettings:(BOOL)ascendente;
 + (void)setGroupBySettings:(NSString *)groupby;
 
-+ (void)setIntroMessage:(NSString *)type view:(BOOL)view;
++ (void)setIntroMessage:(NSString *)type set:(BOOL)set;
 
 + (void)setActiveAccountExt:(NSString *)activeAccount;
 + (void)setServerUrlExt:(NSString *)serverUrl;
@@ -91,10 +91,9 @@
 
 + (void)setShowHiddenFiles:(BOOL)show;
 
-+ (void)setEndToEndPublicKey:(NSString *)account publicKey:(NSString *)publicKey;
-+ (void)setEndToEndPrivateKeyCipher:(NSString *)account privateKeyCipher:(NSString *)privateKeyCipher;
++ (void)setEndToEndPublicKeySign:(NSString *)account set:(BOOL)set;
++ (void)setEndToEndPrivateKeyCipher:(NSString *)account set:(BOOL)set;
 + (void)setEndToEndMnemonic:(NSString *)account mnemonic:(NSString *)mnemonic;
-+ (void)setEndToEndServerPublicKey:(NSString *)account publicKey:(NSString *)publicKey;
 + (void)initEndToEnd:(NSString *)account;
 
 // GET
@@ -142,10 +141,9 @@
 
 + (BOOL)getShowHiddenFiles;
 
-+ (NSString *)getEndToEndPublicKey:(NSString *)account;
-+ (NSString *)getEndToEndPrivateKeyCipher:(NSString *)account;
++ (BOOL)getEndToEndPublicKeySign:(NSString *)account;
++ (BOOL)getEndToEndPrivateKeyCipher:(NSString *)account;
 + (NSString *)getEndToEndMnemonic:(NSString *)account;
-+ (NSString *)getEndToEndServerPublicKey:(NSString *)account;
 + (BOOL)isEndToEndEnabled:(NSString *)account;
 
 // ===== Varius =====

+ 42 - 37
iOSClient/Utility/CCUtility.m

@@ -31,6 +31,13 @@
 #import <openssl/err.h>
 #import <openssl/pem.h>
 
+#define INTRO_MessageType       @"MessageType_"
+
+#define E2E_PublicKeySign       @"EndToEndPublicKeySign_"
+#define E2E_PrivateKeyCipher    @"EndToEndPrivateKeyCipher_"
+#define E2E_Mnemonic            @"EndToEndMnemonic_"
+
+
 @implementation CCUtility
 
 #pragma --------------------------------------------------------------------------------------------
@@ -145,12 +152,12 @@
     [UICKeyChainStore setString:groupby forKey:@"groupby" service:k_serviceShareKeyChain];
 }
 
-+ (void)setIntroMessage:(NSString *)type view:(BOOL)view
++ (void)setIntroMessage:(NSString *)type set:(BOOL)set
 {
-    NSString *key = [@"messageType_" stringByAppendingString:type];
-    NSString *sView = (view) ? @"true" : @"false";
+    NSString *key = [INTRO_MessageType stringByAppendingString:type];
+    NSString *sSet = (set) ? @"true" : @"false";
 
-    [UICKeyChainStore setString:sView forKey:key service:k_serviceShareKeyChain];
+    [UICKeyChainStore setString:sSet forKey:key service:k_serviceShareKeyChain];
 }
 
 + (void)setActiveAccountExt:(NSString *)activeAccount
@@ -224,36 +231,33 @@
     [UICKeyChainStore setString:sShow forKey:@"showHiddenFiles" service:k_serviceShareKeyChain];
 }
 
-+ (void)setEndToEndPublicKey:(NSString *)account publicKey:(NSString *)publicKey
++ (void)setEndToEndPublicKeySign:(NSString *)account set:(BOOL)set
 {
-    NSString *key = [@"EndToEndPublicKey_" stringByAppendingString:account];
-    [UICKeyChainStore setString:publicKey forKey:key service:k_serviceShareKeyChain];
+    NSString *key = [E2E_PublicKeySign stringByAppendingString:account];
+    NSString *sSet = (set) ? @"true" : @"false";
+
+    [UICKeyChainStore setString:sSet forKey:key service:k_serviceShareKeyChain];
 }
 
-+ (void)setEndToEndPrivateKeyCipher:(NSString *)account privateKeyCipher:(NSString *)privateKeyCipher
++ (void)setEndToEndPrivateKeyCipher:(NSString *)account set:(BOOL)set
 {
-    NSString *key = [@"EndToEndPrivateKeyCipher_" stringByAppendingString:account];
-    [UICKeyChainStore setString:privateKeyCipher forKey:key service:k_serviceShareKeyChain];
+    NSString *key = [E2E_PrivateKeyCipher stringByAppendingString:account];
+    NSString *sSet = (set) ? @"true" : @"false";
+    
+    [UICKeyChainStore setString:sSet forKey:key service:k_serviceShareKeyChain];
 }
 
 + (void)setEndToEndMnemonic:(NSString *)account mnemonic:(NSString *)mnemonic
 {
-    NSString *key = [@"EndToEndMnemonic_" stringByAppendingString:account];
+    NSString *key = [E2E_Mnemonic stringByAppendingString:account];
     [UICKeyChainStore setString:mnemonic forKey:key service:k_serviceShareKeyChain];
 }
 
-+ (void)setEndToEndServerPublicKey:(NSString *)account publicKey:(NSString *)publicKey
-{
-    NSString *key = [@"EndToEndServerPublicKey_" stringByAppendingString:account];
-    [UICKeyChainStore setString:publicKey forKey:key service:k_serviceShareKeyChain];
-}
-
 + (void)initEndToEnd:(NSString *)account
 {
-    [self setEndToEndPublicKey:account publicKey:nil];
-    [self setEndToEndPrivateKeyCipher:account privateKeyCipher:nil];
+    [self setEndToEndPublicKeySign:account set:NO];
+    [self setEndToEndPrivateKeyCipher:account set:NO];
     [self setEndToEndMnemonic:account mnemonic:nil];
-    [self setEndToEndServerPublicKey:account publicKey:nil];
 }
 
 #pragma ------------------------------ GET
@@ -365,7 +369,7 @@
 
 + (BOOL)getIntroMessage:(NSString *)type
 {
-    NSString *key = [@"messageType_" stringByAppendingString:type];
+    NSString *key = [INTRO_MessageType stringByAppendingString:type];
     
     return [[UICKeyChainStore stringForKey:key service:k_serviceShareKeyChain] boolValue];
 }
@@ -452,39 +456,40 @@
     return [[UICKeyChainStore stringForKey:@"showHiddenFiles" service:k_serviceShareKeyChain] boolValue];
 }
 
-+ (NSString *)getEndToEndPublicKey:(NSString *)account
++ (BOOL)getEndToEndPublicKeySign:(NSString *)account
 {
-    NSString *key = [@"EndToEndPublicKey_" stringByAppendingString:account];
-    return [UICKeyChainStore stringForKey:key service:k_serviceShareKeyChain];
+    NSString *key = [E2E_PublicKeySign stringByAppendingString:account];
+    return [[UICKeyChainStore stringForKey:key service:k_serviceShareKeyChain] boolValue];
 }
 
-+ (NSString *)getEndToEndPrivateKeyCipher:(NSString *)account
++ (BOOL)getEndToEndPrivateKeyCipher:(NSString *)account
 {
-    NSString *key = [@"EndToEndPrivateKeyCipher_" stringByAppendingString:account];
-    return [UICKeyChainStore stringForKey:key service:k_serviceShareKeyChain];
+    NSString *key = [E2E_PrivateKeyCipher stringByAppendingString:account];
+    return [[UICKeyChainStore stringForKey:key service:k_serviceShareKeyChain] boolValue];
 }
 
 + (NSString *)getEndToEndMnemonic:(NSString *)account
 {
-    NSString *key = [@"EndToEndMnemonic_" stringByAppendingString:account];
-    return [UICKeyChainStore stringForKey:key service:k_serviceShareKeyChain];
-}
-
-+ (NSString *)getEndToEndServerPublicKey:(NSString *)account
-{
-    NSString *key = [@"EndToEndServerPublicKey_" stringByAppendingString:account];
+    NSString *key = [E2E_Mnemonic stringByAppendingString:account];
     return [UICKeyChainStore stringForKey:key service:k_serviceShareKeyChain];
 }
 
 + (BOOL)isEndToEndEnabled:(NSString *)account
 {
+    BOOL publicKeySign = [self getEndToEndPublicKeySign:account];
     NSString *mnemonic = [self getEndToEndMnemonic:account];
-    NSString *privateKey = [self getEndToEndPrivateKeyCipher:account];
+    BOOL privateKeyChiper = [self getEndToEndPrivateKeyCipher:account];
     
-    if (mnemonic.length > 0 && privateKey.length > 0)
+    if (mnemonic.length > 0 && privateKeyChiper && publicKeySign) {
+        
         return YES;
-    else
+        
+    } else {
+        
+        [self initEndToEnd:account];
+        
         return NO;
+    }
 }
 
 #pragma --------------------------------------------------------------------------------------------