|
@@ -1234,40 +1234,50 @@
|
|
|
#pragma mark ==== End-to-End Encryption ====
|
|
|
#pragma --------------------------------------------------------------------------------------------
|
|
|
|
|
|
-- (void)getEndToEndPrivateKeySuccess:(CCMetadataNet *)metadataNet
|
|
|
+// ++++++++++++++++++++++ PUBLIC KEY ++++++++++++++++++++++
|
|
|
+
|
|
|
+- (void)getEndToEndPublicKeySuccess:(CCMetadataNet *)metadataNet
|
|
|
{
|
|
|
// Activity
|
|
|
- [[NCManageDatabase sharedInstance] addActivityClient:@"" fileID:@"" action:k_activityDebugActionEndToEndEncryption selector:metadataNet.selector note:@"EndToEndPrivateKey present on Server" type:k_activityTypeSuccess verbose:k_activityVerboseHigh activeUrl:app.activeUrl];
|
|
|
+ [[NCManageDatabase sharedInstance] addActivityClient:@"" fileID:@"" action:k_activityDebugActionEndToEndEncryption selector:metadataNet.selector note:@"EndToEndPublicKey present on Server" type:k_activityTypeSuccess verbose:k_activityVerboseHigh activeUrl:app.activeUrl];
|
|
|
}
|
|
|
|
|
|
-- (void)getEndToEndPrivateKeyFailure:(CCMetadataNet *)metadataNet message:(NSString *)message errorCode:(NSInteger)errorCode
|
|
|
+- (void)getEndToEndPublicKeyFailure:(CCMetadataNet *)metadataNet message:(NSString *)message errorCode:(NSInteger)errorCode
|
|
|
{
|
|
|
switch (errorCode) {
|
|
|
case 400:
|
|
|
message = @"bad request: unpredictable internal error";
|
|
|
- [app messageNotification:@"E2E private key" description:message visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:errorCode];
|
|
|
+ [app messageNotification:@"E2E public key" description:message visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:errorCode];
|
|
|
break;
|
|
|
case 404: {
|
|
|
// remove keychain
|
|
|
- [CCUtility setEndToEndPrivateKey:app.activeUser privateKey:nil];
|
|
|
+ [CCUtility setEndToEndPublicKey:app.activeUser publicKey:metadataNet.options];
|
|
|
|
|
|
- //CCMetadataNet *metadataNet = [[CCMetadataNet alloc] initWithAccount:app.activeAccount];
|
|
|
+ CCMetadataNet *metadataNet = [[CCMetadataNet alloc] initWithAccount:app.activeAccount];
|
|
|
|
|
|
- NSString *mnemonic = [[NYMnemonic generateMnemonicString:@128 language:@"english"] stringByReplacingOccurrencesOfString:@" " withString:@""];
|
|
|
-
|
|
|
- mnemonic = @"moreovertelevisionfactorytendencyindependenceinternationalintellectualimpressinterestvolunteer";
|
|
|
+ NSString *publicKeyEncoded = [[NCEndToEndEncryption sharedManager] createEndToEndPublicKey:app.activeUserID directoryUser:app.directoryUser];
|
|
|
|
|
|
- NSString *privateKeyEncoded = [[NCEndToEndEncryption sharedManager] createEndToEndPrivateKey:app.activeUserID directoryUser:app.directoryUser mnemonic:mnemonic];
|
|
|
+ if (publicKeyEncoded) {
|
|
|
+
|
|
|
+ metadataNet.action = actionStoreEndToEndPublicKey;
|
|
|
+ metadataNet.options = publicKeyEncoded;
|
|
|
+
|
|
|
+ [app addNetworkingOperationQueue:app.netQueue delegate:self metadataNet:metadataNet];
|
|
|
+
|
|
|
+ } else {
|
|
|
+ // Activity
|
|
|
+ [[NCManageDatabase sharedInstance] addActivityClient:@"" fileID:@"" action:k_activityDebugActionEndToEndEncryption selector:metadataNet.selector note:@"Error to create PublicKeyEncoded" type:k_activityTypeFailure verbose:k_activityVerboseHigh activeUrl:app.activeUrl];
|
|
|
+ }
|
|
|
|
|
|
- message = @"private key doesn't exists";
|
|
|
+ message = @"public keys couldn't be found";
|
|
|
}
|
|
|
break;
|
|
|
case 409:
|
|
|
- message = @"forbidden: the user can't access the private key";
|
|
|
- [app messageNotification:@"E2E private key" description:message visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:errorCode];
|
|
|
+ message = @"forbidden: the user can't access the public key";
|
|
|
+ [app messageNotification:@"E2E public key" description:message visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:errorCode];
|
|
|
break;
|
|
|
default:
|
|
|
- [app messageNotification:@"E2E private key" description:message visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:errorCode];
|
|
|
+ [app messageNotification:@"E2E public key" description:message visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:errorCode];
|
|
|
break;
|
|
|
}
|
|
|
|
|
@@ -1275,48 +1285,70 @@
|
|
|
[[NCManageDatabase sharedInstance] addActivityClient:@"" fileID:@"" action:k_activityDebugActionEndToEndEncryption selector:metadataNet.selector note:message type:k_activityTypeFailure verbose:k_activityVerboseHigh activeUrl:app.activeUrl];
|
|
|
}
|
|
|
|
|
|
-- (void)getEndToEndPublicKeySuccess:(CCMetadataNet *)metadataNet
|
|
|
+- (void)storeEndToEndPublicKeySuccess:(CCMetadataNet *)metadataNet
|
|
|
{
|
|
|
+ // Store signed key locally keychain
|
|
|
+ [CCUtility setEndToEndPublicKey:app.activeUser publicKey:metadataNet.options];
|
|
|
+
|
|
|
// Activity
|
|
|
- [[NCManageDatabase sharedInstance] addActivityClient:@"" fileID:@"" action:k_activityDebugActionEndToEndEncryption selector:metadataNet.selector note:@"EndToEndPublicKey present on Server" type:k_activityTypeSuccess verbose:k_activityVerboseHigh activeUrl:app.activeUrl];
|
|
|
+ [[NCManageDatabase sharedInstance] addActivityClient:@"" fileID:@"" action:k_activityDebugActionEndToEndEncryption selector:metadataNet.selector note:@"EndToEndPublicKey stored on Server and stored locally" type:k_activityTypeSuccess verbose:k_activityVerboseHigh activeUrl:app.activeUrl];
|
|
|
}
|
|
|
|
|
|
-- (void)getEndToEndPublicKeyFailure:(CCMetadataNet *)metadataNet message:(NSString *)message errorCode:(NSInteger)errorCode
|
|
|
+- (void)storeEndToEndPublicKeyFailure:(CCMetadataNet *)metadataNet message:(NSString *)message errorCode:(NSInteger)errorCode
|
|
|
{
|
|
|
+ [app messageNotification:@"E2E sign public key" description:message visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:errorCode];
|
|
|
+
|
|
|
+ // Activity
|
|
|
+ [[NCManageDatabase sharedInstance] addActivityClient:@"" fileID:@"" action:k_activityDebugActionEndToEndEncryption selector:metadataNet.selector note:message type:k_activityTypeFailure verbose:k_activityVerboseHigh activeUrl:app.activeUrl];
|
|
|
+}
|
|
|
+
|
|
|
+// ++++++++++++++++++++++ PRIVATE KEY ++++++++++++++++++++++
|
|
|
+
|
|
|
+- (void)getEndToEndPrivateKeySuccess:(CCMetadataNet *)metadataNet
|
|
|
+{
|
|
|
+ // Activity
|
|
|
+ [[NCManageDatabase sharedInstance] addActivityClient:@"" fileID:@"" action:k_activityDebugActionEndToEndEncryption selector:metadataNet.selector note:@"EndToEndPrivateKey present on Server" type:k_activityTypeSuccess verbose:k_activityVerboseHigh activeUrl:app.activeUrl];
|
|
|
+}
|
|
|
|
|
|
+- (void)getEndToEndPrivateKeyFailure:(CCMetadataNet *)metadataNet message:(NSString *)message errorCode:(NSInteger)errorCode
|
|
|
+{
|
|
|
switch (errorCode) {
|
|
|
case 400:
|
|
|
message = @"bad request: unpredictable internal error";
|
|
|
- [app messageNotification:@"E2E public key" description:message visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:errorCode];
|
|
|
+ [app messageNotification:@"E2E private key" description:message visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:errorCode];
|
|
|
break;
|
|
|
case 404: {
|
|
|
// remove keychain
|
|
|
- [CCUtility setEndToEndPublicKey:app.activeUser publicKey:metadataNet.options];
|
|
|
+ [CCUtility setEndToEndPrivateKey:app.activeUser privateKey:nil];
|
|
|
|
|
|
CCMetadataNet *metadataNet = [[CCMetadataNet alloc] initWithAccount:app.activeAccount];
|
|
|
- NSString *publicKeyEncoded = [[NCEndToEndEncryption sharedManager] createEndToEndPublicKey:app.activeUserID directoryUser:app.directoryUser];
|
|
|
|
|
|
- if (publicKeyEncoded) {
|
|
|
-
|
|
|
- metadataNet.action = actionStoreEndToEndPublicKey;
|
|
|
- metadataNet.options = publicKeyEncoded;
|
|
|
+ NSString *mnemonic = [[NYMnemonic generateMnemonicString:@128 language:@"english"] stringByReplacingOccurrencesOfString:@" " withString:@""];
|
|
|
+ mnemonic = @"moreovertelevisionfactorytendencyindependenceinternationalintellectualimpressinterestvolunteer";
|
|
|
+
|
|
|
+ NSString *privateKeyEncoded = [[NCEndToEndEncryption sharedManager] createEndToEndPrivateKey:app.activeUserID directoryUser:app.directoryUser mnemonic:mnemonic];
|
|
|
|
|
|
+ if (privateKeyEncoded) {
|
|
|
+
|
|
|
+ metadataNet.action = actionStoreEndToEndPrivateKey;
|
|
|
+ metadataNet.options = privateKeyEncoded;
|
|
|
+
|
|
|
[app addNetworkingOperationQueue:app.netQueue delegate:self metadataNet:metadataNet];
|
|
|
-
|
|
|
+
|
|
|
} else {
|
|
|
// Activity
|
|
|
- [[NCManageDatabase sharedInstance] addActivityClient:@"" fileID:@"" action:k_activityDebugActionEndToEndEncryption selector:metadataNet.selector note:@"Error to create PublicKeyEncoded" type:k_activityTypeFailure verbose:k_activityVerboseHigh activeUrl:app.activeUrl];
|
|
|
+ [[NCManageDatabase sharedInstance] addActivityClient:@"" fileID:@"" action:k_activityDebugActionEndToEndEncryption selector:metadataNet.selector note:@"Error to create PrivateKeyEncoded" type:k_activityTypeFailure verbose:k_activityVerboseHigh activeUrl:app.activeUrl];
|
|
|
}
|
|
|
|
|
|
- message = @"one or more public keys couldn't be found";
|
|
|
+ message = @"private key doesn't exists";
|
|
|
}
|
|
|
break;
|
|
|
case 409:
|
|
|
- message = @"forbidden: the user can't access the public key";
|
|
|
- [app messageNotification:@"E2E public key" description:message visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:errorCode];
|
|
|
+ message = @"forbidden: the user can't access the private key";
|
|
|
+ [app messageNotification:@"E2E private key" description:message visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:errorCode];
|
|
|
break;
|
|
|
default:
|
|
|
- [app messageNotification:@"E2E public key" description:message visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:errorCode];
|
|
|
+ [app messageNotification:@"E2E private key" description:message visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:errorCode];
|
|
|
break;
|
|
|
}
|
|
|
|
|
@@ -1324,18 +1356,18 @@
|
|
|
[[NCManageDatabase sharedInstance] addActivityClient:@"" fileID:@"" action:k_activityDebugActionEndToEndEncryption selector:metadataNet.selector note:message type:k_activityTypeFailure verbose:k_activityVerboseHigh activeUrl:app.activeUrl];
|
|
|
}
|
|
|
|
|
|
-- (void)storeEndToEndPublicKeySuccess:(CCMetadataNet *)metadataNet
|
|
|
+- (void)storeEndToEndPrivateKeySuccess:(CCMetadataNet *)metadataNet
|
|
|
{
|
|
|
- // Store signed key locally keychain
|
|
|
- [CCUtility setEndToEndPublicKey:app.activeUser publicKey:metadataNet.options];
|
|
|
+ // Store key locally keychain
|
|
|
+ [CCUtility setEndToEndPrivateKey:app.activeUser privateKey:metadataNet.options];
|
|
|
|
|
|
// Activity
|
|
|
- [[NCManageDatabase sharedInstance] addActivityClient:@"" fileID:@"" action:k_activityDebugActionEndToEndEncryption selector:metadataNet.selector note:@"EndToEndPublicKey present on Server and stored locally" type:k_activityTypeSuccess verbose:k_activityVerboseHigh activeUrl:app.activeUrl];
|
|
|
+ [[NCManageDatabase sharedInstance] addActivityClient:@"" fileID:@"" action:k_activityDebugActionEndToEndEncryption selector:metadataNet.selector note:@"EndToEndPrivateKey stored on Server and stored locally" type:k_activityTypeSuccess verbose:k_activityVerboseHigh activeUrl:app.activeUrl];
|
|
|
}
|
|
|
|
|
|
-- (void)storeEndToEndPublicKeyFailure:(CCMetadataNet *)metadataNet message:(NSString *)message errorCode:(NSInteger)errorCode
|
|
|
+- (void)storeEndToEndPrivateKeyFailure:(CCMetadataNet *)metadataNet message:(NSString *)message errorCode:(NSInteger)errorCode
|
|
|
{
|
|
|
- [app messageNotification:@"E2E sign public key" description:message visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:errorCode];
|
|
|
+ [app messageNotification:@"E2E sign private key" description:message visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:errorCode];
|
|
|
|
|
|
// Activity
|
|
|
[[NCManageDatabase sharedInstance] addActivityClient:@"" fileID:@"" action:k_activityDebugActionEndToEndEncryption selector:metadataNet.selector note:message type:k_activityTypeFailure verbose:k_activityVerboseHigh activeUrl:app.activeUrl];
|