зеркало из https://github.com/nextcloud/ios.git
E2E clear code
This commit is contained in:
Родитель
395234cc56
Коммит
1840af4ba4
|
@ -40,7 +40,6 @@
|
|||
#import "CCFavorites.h"
|
||||
|
||||
@class CCLoginWeb;
|
||||
@class NCEntoToEndInterface;
|
||||
|
||||
@interface AppDelegate : UIResponder <UIApplicationDelegate, BKPasscodeLockScreenManagerDelegate, BKPasscodeViewControllerDelegate, TWMessageBarStyleSheet, CCNetworkingDelegate>
|
||||
|
||||
|
@ -119,7 +118,6 @@
|
|||
@property (nonatomic, retain) CCTransfers *activeTransfers;
|
||||
@property (nonatomic, retain) CCLogin *activeLogin;
|
||||
@property (nonatomic, retain) CCLoginWeb *activeLoginWeb;
|
||||
@property (nonatomic, strong) NCEntoToEndInterface *endToEndInterface;
|
||||
|
||||
@property (nonatomic, strong) NSMutableDictionary *listMainVC;
|
||||
@property (nonatomic, strong) NSMutableDictionary *listProgressMetadata;
|
||||
|
|
|
@ -217,9 +217,6 @@
|
|||
UIUserNotificationSettings *notificationSettings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
|
||||
[application registerUserNotificationSettings:notificationSettings];
|
||||
|
||||
// E2E Encryption
|
||||
self.endToEndInterface = [NCEntoToEndInterface new];
|
||||
|
||||
// Fabric
|
||||
[Fabric with:@[[Crashlytics class]]];
|
||||
[self logUser];
|
||||
|
|
|
@ -4160,13 +4160,16 @@
|
|||
handler:^(AHKActionSheet *as) {
|
||||
|
||||
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
|
||||
|
||||
if ([appDelegate.endToEndInterface markEndToEndFolderEncrypted:appDelegate.activeUrl fileID:_metadata.fileID serverUrl:[NSString stringWithFormat:@"%@/%@", self.serverUrl, _metadata.fileName]]) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self readFolder:self.serverUrl];
|
||||
});
|
||||
}
|
||||
|
||||
NSString *token;
|
||||
NSError *error = [[NCNetworkingSync sharedManager] markEndToEndFolderEncrypted:appDelegate.activeUser userID:appDelegate.activeUserID password:appDelegate.activePassword url:appDelegate.activeUrl fileID:_metadata.fileID serverUrl:[NSString stringWithFormat:@"%@/%@", self.serverUrl, _metadata.fileName] token:&token];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
if (error) {
|
||||
[appDelegate messageNotification:@"_error_" description:[NSString stringWithFormat:@"%@ %d", error.localizedDescription, (int)error.code] visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:0];
|
||||
} else {
|
||||
[[NCManageDatabase sharedInstance] deleteE2eEncryptionWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND serverUrl = %@", appDelegate.activeAccount, [NSString stringWithFormat:@"%@/%@", self.serverUrl, _metadata.fileName]]];
|
||||
[self readFolder:self.serverUrl];
|
||||
}
|
||||
});
|
||||
});
|
||||
}];
|
||||
}
|
||||
|
@ -4181,13 +4184,16 @@
|
|||
handler:^(AHKActionSheet *as) {
|
||||
|
||||
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
|
||||
|
||||
if ([appDelegate.endToEndInterface deletemarkEndToEndFolderEncrypted:appDelegate.activeUrl fileID:_metadata.fileID serverUrl:[NSString stringWithFormat:@"%@/%@", self.serverUrl, _metadata.fileName]]) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
NSString *token;
|
||||
NSError *error = [[NCNetworkingSync sharedManager] deletemarkEndToEndFolderEncrypted:appDelegate.activeUser userID:appDelegate.activeUserID password:appDelegate.activePassword url:appDelegate.activeUrl fileID:_metadata.fileID serverUrl:[NSString stringWithFormat:@"%@/%@", self.serverUrl, _metadata.fileName] token:&token];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
if (error) {
|
||||
[appDelegate messageNotification:@"_error_" description:[NSString stringWithFormat:@"%@ %d", error.localizedDescription, (int)error.code] visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:0];
|
||||
} else {
|
||||
[[NCManageDatabase sharedInstance] deleteE2eEncryptionWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND serverUrl = %@", appDelegate.activeAccount, [NSString stringWithFormat:@"%@/%@", self.serverUrl, _metadata.fileName]]];
|
||||
[self readFolder:self.serverUrl];
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
}];
|
||||
}
|
||||
|
|
|
@ -1,361 +0,0 @@
|
|||
//
|
||||
// NCEntoToEndInterface.swift
|
||||
// Nextcloud
|
||||
//
|
||||
// Created by Marino Faggiana on 03/04/17.
|
||||
// Copyright © 2017 TWS. All rights reserved.
|
||||
//
|
||||
// Author Marino Faggiana <m.faggiana@twsweb.it>
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
class NCEntoToEndInterface : NSObject, OCNetworkingDelegate {
|
||||
|
||||
let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
||||
|
||||
override init() {
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
// MARK: Initialize
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
@objc func initEndToEndEncryption() {
|
||||
|
||||
// Clear all keys
|
||||
CCUtility.clearAllKeysEnd(toEnd: appDelegate.activeAccount)
|
||||
|
||||
let metadataNet: CCMetadataNet = CCMetadataNet.init(account: appDelegate.activeAccount)
|
||||
|
||||
metadataNet.action = actionGetEndToEndPublicKeys
|
||||
appDelegate.addNetworkingOperationQueue(appDelegate.netQueue, delegate: self, metadataNet: metadataNet)
|
||||
}
|
||||
|
||||
func getPrivateKeyCipher() {
|
||||
|
||||
let metadataNet: CCMetadataNet = CCMetadataNet.init(account: appDelegate.activeAccount)
|
||||
|
||||
metadataNet.action = actionGetEndToEndPrivateKeyCipher
|
||||
appDelegate.addNetworkingOperationQueue(appDelegate.netQueue, delegate: self, metadataNet: metadataNet)
|
||||
}
|
||||
|
||||
func getPublicKeyServer() {
|
||||
|
||||
let metadataNet: CCMetadataNet = CCMetadataNet.init(account: appDelegate.activeAccount)
|
||||
|
||||
metadataNet.action = actionGetEndToEndServerPublicKey
|
||||
appDelegate.addNetworkingOperationQueue(appDelegate.netQueue, delegate: self, metadataNet: metadataNet)
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
// MARK: Manage PublicKey
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
func getEndToEndPublicKeysSuccess(_ metadataNet: CCMetadataNet!) {
|
||||
|
||||
CCUtility.setEndToEndPublicKey(appDelegate.activeAccount, publicKey: metadataNet.key)
|
||||
|
||||
// Request PrivateKey chiper to Server
|
||||
getPrivateKeyCipher()
|
||||
}
|
||||
|
||||
func getEndToEndPublicKeysFailure(_ metadataNet: CCMetadataNet!, message: String!, errorCode: Int) {
|
||||
|
||||
switch errorCode {
|
||||
|
||||
case 400:
|
||||
appDelegate.messageNotification("E2E get publicKey", description: "bad request: unpredictable internal error", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
||||
|
||||
case 404:
|
||||
guard let csr = NCEndToEndEncryption.sharedManager().createCSR(appDelegate.activeUserID, directoryUser: appDelegate.directoryUser) else {
|
||||
|
||||
appDelegate.messageNotification("E2E Csr", description: "Error to create Csr", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
let metadataNet: CCMetadataNet = CCMetadataNet.init(account: appDelegate.activeAccount)
|
||||
|
||||
metadataNet.action = actionSignEndToEndPublicKey;
|
||||
metadataNet.key = csr;
|
||||
|
||||
appDelegate.addNetworkingOperationQueue(appDelegate.netQueue, delegate: self, metadataNet: metadataNet)
|
||||
|
||||
case 409:
|
||||
appDelegate.messageNotification("E2E get publicKey", description: "forbidden: the user can't access the public keys", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
||||
|
||||
default:
|
||||
appDelegate.messageNotification("E2E get publicKey", description: message as String!, visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
||||
}
|
||||
}
|
||||
|
||||
func signEnd(toEndPublicKeySuccess metadataNet: CCMetadataNet!) {
|
||||
|
||||
CCUtility.setEndToEndPublicKey(appDelegate.activeAccount, publicKey: metadataNet.key)
|
||||
|
||||
// Request PrivateKey chiper to Server
|
||||
getPrivateKeyCipher()
|
||||
}
|
||||
|
||||
func signEnd(toEndPublicKeyFailure metadataNet: CCMetadataNet!, message: String!, errorCode: Int) {
|
||||
|
||||
switch errorCode {
|
||||
|
||||
case 400:
|
||||
appDelegate.messageNotification("E2E sign publicKey", description: "bad request: unpredictable internal error", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
||||
|
||||
case 409:
|
||||
appDelegate.messageNotification("E2E sign publicKey", description: "conflict: a public key for the user already exists", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
||||
|
||||
default:
|
||||
appDelegate.messageNotification("E2E sign publicKey", description: message as String!, visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
||||
}
|
||||
}
|
||||
|
||||
func deleteEnd(toEndPublicKeySuccess metadataNet: CCMetadataNet!) {
|
||||
appDelegate.messageNotification("E2E delete publicKey", description: "Success", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.success, errorCode: 0)
|
||||
}
|
||||
|
||||
func deleteEnd(toEndPublicKeyFailure metadataNet: CCMetadataNet!, message: String!, errorCode: Int) {
|
||||
appDelegate.messageNotification("E2E delete publicKey", description: message, visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
// MARK: Manage PrivateKey
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
func getEndToEndPrivateKeyCipherSuccess(_ metadataNet: CCMetadataNet!) {
|
||||
|
||||
// request Passphrase
|
||||
|
||||
var passphraseTextField: UITextField?
|
||||
|
||||
let alertController = UIAlertController(title: NSLocalizedString("_e2e_passphrase_request_title_", comment: ""), message: NSLocalizedString("_e2e_passphrase_request_message_", comment: ""), preferredStyle: .alert)
|
||||
|
||||
//TEST
|
||||
/*
|
||||
if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
|
||||
|
||||
let fileURL = dir.appendingPathComponent("privatekey.txt")
|
||||
|
||||
//writing
|
||||
do {
|
||||
try metadataNet.key.write(to: fileURL, atomically: false, encoding: .utf8)
|
||||
}
|
||||
catch {/* error handling here */}
|
||||
}
|
||||
*/
|
||||
//
|
||||
|
||||
let ok = UIAlertAction(title: "OK", style: .default, handler: { (action) -> Void in
|
||||
|
||||
let passphrase = passphraseTextField?.text
|
||||
|
||||
let publicKey = CCUtility.getEndToEndPublicKey(self.appDelegate.activeAccount)
|
||||
|
||||
guard let privateKey = (NCEndToEndEncryption.sharedManager().decryptPrivateKey(metadataNet.key, passphrase: passphrase, publicKey: publicKey)) else {
|
||||
|
||||
self.appDelegate.messageNotification("E2E decrypt privateKey", description: "Serious internal error to decrypt Private Key", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: 0)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// privateKey
|
||||
print(privateKey)
|
||||
|
||||
// Save to keychain
|
||||
CCUtility.setEndToEndPrivateKey(self.appDelegate.activeAccount, privateKey: privateKey)
|
||||
CCUtility.setEndToEndPassphrase(self.appDelegate.activeAccount, passphrase:passphrase)
|
||||
|
||||
// request publicKey Server()
|
||||
self.getPublicKeyServer()
|
||||
})
|
||||
|
||||
let cancel = UIAlertAction(title: "Cancel", style: .cancel) { (action) -> Void in
|
||||
}
|
||||
|
||||
alertController.addAction(ok)
|
||||
alertController.addAction(cancel)
|
||||
alertController.addTextField { (textField) -> Void in
|
||||
passphraseTextField = textField
|
||||
passphraseTextField?.placeholder = "Enter passphrase (12 words)"
|
||||
}
|
||||
|
||||
appDelegate.activeMain.present(alertController, animated: true)
|
||||
}
|
||||
|
||||
func getEndToEndPrivateKeyCipherFailure(_ metadataNet: CCMetadataNet!, message: String!, errorCode: Int) {
|
||||
|
||||
switch errorCode {
|
||||
|
||||
case 400:
|
||||
appDelegate.messageNotification("E2E get privateKey", description: "bad request: unpredictable internal error", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
||||
|
||||
case 404:
|
||||
// message
|
||||
let e2ePassphrase = NYMnemonic.generateString(128, language: "english")
|
||||
let message = "\n" + NSLocalizedString("_e2e_settings_view_passphrase_", comment: "") + "\n\n" + e2ePassphrase!
|
||||
|
||||
let alertController = UIAlertController(title: NSLocalizedString("_e2e_settings_title_", comment: ""), message: NSLocalizedString(message, comment: ""), preferredStyle: .alert)
|
||||
|
||||
let OKAction = UIAlertAction(title: NSLocalizedString("_ok_", comment: ""), style: .default) { action in
|
||||
|
||||
var privateKey: NSString?
|
||||
|
||||
guard let privateKeyChiper = NCEndToEndEncryption.sharedManager().encryptPrivateKey(self.appDelegate.activeUserID, directoryUser: self.appDelegate.directoryUser, passphrase: e2ePassphrase, privateKey: &privateKey) else {
|
||||
|
||||
self.appDelegate.messageNotification("E2E privateKey", description: "Serious internal error to create PrivateKey chiper", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
let metadataNet: CCMetadataNet = CCMetadataNet.init(account: self.appDelegate.activeAccount)
|
||||
|
||||
metadataNet.action = actionStoreEndToEndPrivateKeyCipher
|
||||
metadataNet.key = privateKey! as String
|
||||
metadataNet.keyCipher = privateKeyChiper
|
||||
metadataNet.password = e2ePassphrase
|
||||
|
||||
self.appDelegate.addNetworkingOperationQueue(self.appDelegate.netQueue, delegate: self, metadataNet: metadataNet)
|
||||
}
|
||||
|
||||
alertController.addAction(OKAction)
|
||||
appDelegate.activeMain.present(alertController, animated: true)
|
||||
|
||||
case 409:
|
||||
appDelegate.messageNotification("E2E get privateKey", description: "forbidden: the user can't access the private key", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
||||
|
||||
default:
|
||||
appDelegate.messageNotification("E2E get privateKey", description: message as String!, visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
||||
}
|
||||
}
|
||||
|
||||
func storeEnd(toEndPrivateKeyCipherSuccess metadataNet: CCMetadataNet!) {
|
||||
|
||||
CCUtility.setEndToEndPrivateKey(appDelegate.activeAccount, privateKey: metadataNet.key)
|
||||
CCUtility.setEndToEndPassphrase(appDelegate.activeAccount, passphrase:metadataNet.password)
|
||||
|
||||
// request publicKey Server()
|
||||
self.getPublicKeyServer()
|
||||
}
|
||||
|
||||
func storeEnd(toEndPrivateKeyCipherFailure metadataNet: CCMetadataNet!, message: String!, errorCode: Int) {
|
||||
|
||||
switch errorCode {
|
||||
|
||||
case 400:
|
||||
appDelegate.messageNotification("E2E store privateKey", description: "bad request: unpredictable internal error", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
||||
|
||||
case 409:
|
||||
appDelegate.messageNotification("E2E store privateKey", description: "conflict: a private key for the user already exists", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
||||
|
||||
default:
|
||||
appDelegate.messageNotification("E2E store privateKey", description: message as String!, visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
||||
}
|
||||
}
|
||||
|
||||
func deleteEnd(toEndPrivateKeySuccess metadataNet: CCMetadataNet!) {
|
||||
appDelegate.messageNotification("E2E delete privateKey", description: "Success", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.success, errorCode: 0)
|
||||
}
|
||||
|
||||
func deleteEnd(toEndPrivateKeyFailure metadataNet: CCMetadataNet!, message: String!, errorCode: Int) {
|
||||
appDelegate.messageNotification("E2E delete privateKey", description: message, visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
// MARK: Manage Server PublicKey
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
func getEndToEndServerPublicKeySuccess(_ metadataNet: CCMetadataNet!) {
|
||||
|
||||
CCUtility.setEndToEndPublicKeyServer(appDelegate.activeAccount, publicKey: metadataNet.key)
|
||||
|
||||
// Clear Table
|
||||
NCManageDatabase.sharedInstance.clearTable(tableDirectory.self, account: appDelegate.activeAccount)
|
||||
NCManageDatabase.sharedInstance.clearTable(tableE2eEncryption.self, account: appDelegate.activeAccount)
|
||||
|
||||
// Reload All Datasource
|
||||
NotificationCenter.default.post(name: Notification.Name("clearDateReadDataSource"), object: nil)
|
||||
|
||||
// All OK Activated flsg on Manage EndToEnd Encryption
|
||||
NotificationCenter.default.post(name: Notification.Name("reloadManageEndToEndEncryption"), object: nil)
|
||||
}
|
||||
|
||||
func getEndToEndServerPublicKeyFailure(_ metadataNet: CCMetadataNet!, message: String!, errorCode: Int) {
|
||||
|
||||
switch (errorCode) {
|
||||
|
||||
case 400:
|
||||
appDelegate.messageNotification("E2E Server publicKey", description: "bad request: unpredictable internal error", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
||||
|
||||
case 404:
|
||||
appDelegate.messageNotification("E2E Server publicKey", description: "Server publickey doesn't exists", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
||||
|
||||
case 409:
|
||||
appDelegate.messageNotification("E2E Server publicKey", description: "forbidden: the user can't access the Server publickey", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
||||
|
||||
default:
|
||||
appDelegate.messageNotification("E2E Server publicKey", description: message as String!, visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
||||
}
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
// MARK: Manage Mark/Delete Encrypted Folder
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
@objc func markEndToEndFolderEncrypted(_ url: String, fileID: String, serverUrl: String) -> Bool {
|
||||
|
||||
var token: NSString?
|
||||
|
||||
// Remove all records e2eMetadata
|
||||
NCManageDatabase.sharedInstance.deleteE2eEncryption(predicate: NSPredicate(format: "account = %@ AND serverUrl = %@", appDelegate.activeAccount, serverUrl))
|
||||
|
||||
if let error = NCNetworkingSync.sharedManager().markEnd(toEndFolderEncrypted: appDelegate.activeUser, userID: appDelegate.activeUserID, password: appDelegate.activePassword, url: url, fileID: fileID, serverUrl: serverUrl,token: &token) as NSError? {
|
||||
|
||||
appDelegate.messageNotification("E2E Mark folder as encrypted", description: error.localizedDescription+" code \(error.code)", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: error.code)
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
@objc func deletemarkEndToEndFolderEncrypted(_ url: String, fileID: String, serverUrl: String) -> Bool {
|
||||
|
||||
var token: NSString?
|
||||
|
||||
// Remove all records e2eMetadata
|
||||
NCManageDatabase.sharedInstance.deleteE2eEncryption(predicate: NSPredicate(format: "account = %@ AND serverUrl = %@", appDelegate.activeAccount, serverUrl))
|
||||
|
||||
if let error = NCNetworkingSync.sharedManager().deletemarkEnd(toEndFolderEncrypted: appDelegate.activeUser, userID: appDelegate.activeUserID, password: appDelegate.activePassword, url: url, fileID: fileID, serverUrl: serverUrl, token: &token) as NSError? {
|
||||
|
||||
appDelegate.messageNotification("E2E Remove mark folder as encrypted", description: error.localizedDescription+" code \(error.code)", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: error.code)
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -314,7 +314,7 @@
|
|||
CCMetadataNet *metadataNet = [[CCMetadataNet alloc] initWithAccount:appDelegate.activeAccount];
|
||||
|
||||
metadataNet.action = actionDeleteEndToEndPublicKey;
|
||||
[appDelegate addNetworkingOperationQueue:appDelegate.netQueue delegate:appDelegate.endToEndInterface metadataNet:metadataNet];
|
||||
[appDelegate addNetworkingOperationQueue:appDelegate.netQueue delegate:self metadataNet:metadataNet];
|
||||
}
|
||||
|
||||
- (void)deletePrivateKey:(XLFormRowDescriptor *)sender
|
||||
|
@ -324,7 +324,7 @@
|
|||
CCMetadataNet *metadataNet = [[CCMetadataNet alloc] initWithAccount:appDelegate.activeAccount];
|
||||
|
||||
metadataNet.action = actionDeleteEndToEndPrivateKey;
|
||||
[appDelegate addNetworkingOperationQueue:appDelegate.netQueue delegate:appDelegate.endToEndInterface metadataNet:metadataNet];
|
||||
[appDelegate addNetworkingOperationQueue:appDelegate.netQueue delegate:self metadataNet:metadataNet];
|
||||
}
|
||||
|
||||
#pragma --------------------------------------------------------------------------------------------
|
||||
|
@ -362,7 +362,7 @@
|
|||
|
||||
if (aViewController.fromType == CCBKPasscodeFromStartEncryption) {
|
||||
|
||||
[appDelegate.endToEndInterface initEndToEndEncryption];
|
||||
//[appDelegate.endToEndInterface initEndToEndEncryption];
|
||||
}
|
||||
|
||||
if (aViewController.fromType == CCBKPasscodeFromCheckPassphrase) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче