From 2ec0945a516df12e69085e8f431bddbf62988d31 Mon Sep 17 00:00:00 2001 From: Michael Starke Date: Tue, 23 Nov 2021 23:26:21 +0100 Subject: [PATCH] Added UI to edit Argon2id key derivation settings --- MacPass.xcodeproj/project.pbxproj | 38 ++++ MacPass/Base.lproj/DatabaseSettingsWindow.xib | 140 +++++++++++--- ...MPAdvancedDatabaseSettingsViewController.h | 17 ++ ...MPAdvancedDatabaseSettingsViewController.m | 22 +++ ...AdvancedDatabaseSettingsViewController.xib | 22 +++ MacPass/MPDatabaseSettingsWindowController.h | 15 +- MacPass/MPDatabaseSettingsWindowController.m | 85 +++++---- .../MPGeneralDatabaseSettingsViewController.h | 17 ++ .../MPGeneralDatabaseSettingsViewController.m | 22 +++ ...PGeneralDatabaseSettingsViewController.xib | 172 ++++++++++++++++++ ...MPSecurityDatabaseSettingsViewController.h | 17 ++ ...MPSecurityDatabaseSettingsViewController.m | 22 +++ ...SecurityDatabaseSettingsViewController.xib | 19 ++ 13 files changed, 547 insertions(+), 61 deletions(-) create mode 100644 MacPass/MPAdvancedDatabaseSettingsViewController.h create mode 100644 MacPass/MPAdvancedDatabaseSettingsViewController.m create mode 100644 MacPass/MPAdvancedDatabaseSettingsViewController.xib create mode 100644 MacPass/MPGeneralDatabaseSettingsViewController.h create mode 100644 MacPass/MPGeneralDatabaseSettingsViewController.m create mode 100644 MacPass/MPGeneralDatabaseSettingsViewController.xib create mode 100644 MacPass/MPSecurityDatabaseSettingsViewController.h create mode 100644 MacPass/MPSecurityDatabaseSettingsViewController.m create mode 100644 MacPass/MPSecurityDatabaseSettingsViewController.xib diff --git a/MacPass.xcodeproj/project.pbxproj b/MacPass.xcodeproj/project.pbxproj index 097b3340..ebcb22a6 100644 --- a/MacPass.xcodeproj/project.pbxproj +++ b/MacPass.xcodeproj/project.pbxproj @@ -285,6 +285,12 @@ 4CE39ABF16ECE34A000FE29D /* MPIconSelectViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE39ABE16ECE34A000FE29D /* MPIconSelectViewController.m */; }; 4CE39AC416ECE4F7000FE29D /* MPIconImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE39AC316ECE4F7000FE29D /* MPIconImageView.m */; }; 4CE3E62617AB0D2D00D9E4B4 /* MPAttachmentTableDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE3E62517AB0D2D00D9E4B4 /* MPAttachmentTableDataSource.m */; }; + 4CE4FFA22746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4FFA02746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.m */; }; + 4CE4FFA32746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CE4FFA12746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.xib */; }; + 4CE4FFA72746955E00789F75 /* MPSecurityDatabaseSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4FFA52746955E00789F75 /* MPSecurityDatabaseSettingsViewController.m */; }; + 4CE4FFA82746955E00789F75 /* MPSecurityDatabaseSettingsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CE4FFA62746955E00789F75 /* MPSecurityDatabaseSettingsViewController.xib */; }; + 4CE4FFAC2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4FFAA2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.m */; }; + 4CE4FFAD2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CE4FFAB2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.xib */; }; 4CE501341BBC47F500FB819D /* MPTagsTokenFieldDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE501331BBC47F500FB819D /* MPTagsTokenFieldDelegate.m */; }; 4CE5B54B173AFBA700207B39 /* MPDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE5B549173AFBA700207B39 /* MPDocument.m */; }; 4CE8246F16E2E93400573141 /* MPOverlayWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CE8246E16E2E93400573141 /* MPOverlayWindowController.m */; }; @@ -886,6 +892,15 @@ 4CE39AC316ECE4F7000FE29D /* MPIconImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPIconImageView.m; sourceTree = ""; }; 4CE3E62417AB0D2D00D9E4B4 /* MPAttachmentTableDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPAttachmentTableDataSource.h; sourceTree = ""; }; 4CE3E62517AB0D2D00D9E4B4 /* MPAttachmentTableDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPAttachmentTableDataSource.m; sourceTree = ""; }; + 4CE4FF9F2746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPAdvancedDatabaseSettingsViewController.h; sourceTree = ""; }; + 4CE4FFA02746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPAdvancedDatabaseSettingsViewController.m; sourceTree = ""; }; + 4CE4FFA12746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPAdvancedDatabaseSettingsViewController.xib; sourceTree = ""; }; + 4CE4FFA42746955E00789F75 /* MPSecurityDatabaseSettingsViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPSecurityDatabaseSettingsViewController.h; sourceTree = ""; }; + 4CE4FFA52746955E00789F75 /* MPSecurityDatabaseSettingsViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPSecurityDatabaseSettingsViewController.m; sourceTree = ""; }; + 4CE4FFA62746955E00789F75 /* MPSecurityDatabaseSettingsViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPSecurityDatabaseSettingsViewController.xib; sourceTree = ""; }; + 4CE4FFA92746956F00789F75 /* MPGeneralDatabaseSettingsViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPGeneralDatabaseSettingsViewController.h; sourceTree = ""; }; + 4CE4FFAA2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPGeneralDatabaseSettingsViewController.m; sourceTree = ""; }; + 4CE4FFAB2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPGeneralDatabaseSettingsViewController.xib; sourceTree = ""; }; 4CE501321BBC47F500FB819D /* MPTagsTokenFieldDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPTagsTokenFieldDelegate.h; sourceTree = ""; }; 4CE501331BBC47F500FB819D /* MPTagsTokenFieldDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPTagsTokenFieldDelegate.m; sourceTree = ""; }; 4CE5B548173AFBA700207B39 /* MPDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPDocument.h; sourceTree = ""; }; @@ -1714,6 +1729,7 @@ 4CA0B2F115BCAEE600654E32 /* View Controller */ = { isa = PBXGroup; children = ( + 4CE4FF9E2746943900789F75 /* Database Preferences */, 4C5133861FA0C32C00C94C73 /* Accessory */, 4C4B7EF517A46815000234C7 /* Inspector */, 4C47D77718B37911002755E4 /* Preferences */, @@ -1829,6 +1845,22 @@ name = Controls; sourceTree = ""; }; + 4CE4FF9E2746943900789F75 /* Database Preferences */ = { + isa = PBXGroup; + children = ( + 4CE4FF9F2746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.h */, + 4CE4FFA02746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.m */, + 4CE4FFA12746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.xib */, + 4CE4FFA42746955E00789F75 /* MPSecurityDatabaseSettingsViewController.h */, + 4CE4FFA52746955E00789F75 /* MPSecurityDatabaseSettingsViewController.m */, + 4CE4FFA62746955E00789F75 /* MPSecurityDatabaseSettingsViewController.xib */, + 4CE4FFA92746956F00789F75 /* MPGeneralDatabaseSettingsViewController.h */, + 4CE4FFAA2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.m */, + 4CE4FFAB2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.xib */, + ); + name = "Database Preferences"; + sourceTree = ""; + }; 4CE8247016E2E96500573141 /* Window Controller */ = { isa = PBXGroup; children = ( @@ -2021,6 +2053,7 @@ 4CA182751F963FF600DD4A4A /* TitlebarColorAccessoryViewController.xib in Resources */, 4C3826B71AD04D8E007D7D67 /* 42_MemoryTemplate.pdf in Resources */, 4C3826B41AD04D8E007D7D67 /* 39_HistoryTemplate.pdf in Resources */, + 4CE4FFA32746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.xib in Resources */, 4C77E37D15B84A240093A587 /* MainMenu.xib in Resources */, 4C4BE0C9257E9B91000AEA8C /* MPNotificationPreferencesController.xib in Resources */, 4C3826CD1AD04D8E007D7D67 /* 66_MoneyTemplate.pdf in Resources */, @@ -2037,6 +2070,7 @@ 4C586F9E16D07ABD00E7DB57 /* 00_PasswordTemplate.pdf in Resources */, FA13910C1F9CD9EB0033D256 /* Localizable.stringsdict in Resources */, 4C586FA016D07D7200E7DB57 /* 01_PackageNetworkTemplate.pdf in Resources */, + 4CE4FFAD2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.xib in Resources */, 4C3826CB1AD04D8E007D7D67 /* 64_AppleTemplate.pdf in Resources */, 4C3826AA1AD04D8E007D7D67 /* 27_NFSUnmountTemplate.pdf in Resources */, 4C3826C31AD04D8E007D7D67 /* 56_AddressBookTemplate.pdf in Resources */, @@ -2074,6 +2108,7 @@ 4C0F04412147FB49000B8568 /* OpenPanelAccessoryView.xib in Resources */, 4C6DCC451FA2457900C8AD3F /* ContextBar.xib in Resources */, 4C431BCF16E2BAB000700A81 /* OverlayWindow.xib in Resources */, + 4CE4FFA82746955E00789F75 /* MPSecurityDatabaseSettingsViewController.xib in Resources */, 4C3826B61AD04D8E007D7D67 /* 41_VectorTemplate.pdf in Resources */, 4C17F105184E630200E85625 /* 14_BatteryTemplate.pdf in Resources */, 4C0B5338205C1516003D277E /* PickcharsView.xib in Resources */, @@ -2197,6 +2232,7 @@ 4C4F72D118DF704400E8D378 /* DDHotKeyTextField.m in Sources */, 4C8F0C6E1FCEE9B900BE157F /* MPPluginConstants.m in Sources */, 4C83814215BF4677001AE468 /* MPDocumentWindowController.m in Sources */, + 4CE4FFA22746953A00789F75 /* MPAdvancedDatabaseSettingsViewController.m in Sources */, 4C82046A1FCDC07800EB24A4 /* MPPickfieldViewController.m in Sources */, 4C2E382316D1421B00037A9D /* MPIconHelper.m in Sources */, 4C2E382616D1470200037A9D /* MPViewController.m in Sources */, @@ -2302,6 +2338,7 @@ 4C17D8E517A1C780006C8C1E /* MPDocumentWindowDelegate.m in Sources */, 4C63B8FB17A3154D0091BD72 /* MPContextButton.m in Sources */, 4C1E9885185F71A800943563 /* MPContextBarViewController.m in Sources */, + 4CE4FFA72746955E00789F75 /* MPSecurityDatabaseSettingsViewController.m in Sources */, 4C1FA07B18231900003A3F8C /* MPDocument+Autotype.m in Sources */, 4C4B7EE917A45EC6000234C7 /* MPDatePickingViewController.m in Sources */, 4C4B7EEE17A467E1000234C7 /* MPGroupInspectorViewController.m in Sources */, @@ -2324,6 +2361,7 @@ 3C0CDECF21CFEDD200B2A10B /* NSTextView+MPTouchBarExtension.m in Sources */, 4C57AE1417BA422B00CA4F34 /* MPSegmentedContextCell.m in Sources */, 4CE2961518429AA5005F01CE /* MPAutotypeKeyPress.m in Sources */, + 4CE4FFAC2746956F00789F75 /* MPGeneralDatabaseSettingsViewController.m in Sources */, 4C32B0E71A1D4436007E12F1 /* KPKFormat+MPUTIDetection.m in Sources */, 4C5807781C64F67000E7171F /* NSString+MPHash.m in Sources */, 4CAAA8271D787B8B00CDE977 /* MPAutotypeBuilderViewController.m in Sources */, diff --git a/MacPass/Base.lproj/DatabaseSettingsWindow.xib b/MacPass/Base.lproj/DatabaseSettingsWindow.xib index 805fcf1d..bf17dd23 100644 --- a/MacPass/Base.lproj/DatabaseSettingsWindow.xib +++ b/MacPass/Base.lproj/DatabaseSettingsWindow.xib @@ -1,21 +1,22 @@ - + - + - - - - - - - + + + + + + + + @@ -51,13 +52,13 @@ - - - + + + - + @@ -236,11 +237,11 @@ Gw - + - + @@ -251,7 +252,7 @@ Gw - + @@ -259,9 +260,9 @@ Gw - + - + - + @@ -413,14 +414,103 @@ Gw - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -431,7 +521,7 @@ Gw - + @@ -755,7 +845,7 @@ Gw - + diff --git a/MacPass/MPAdvancedDatabaseSettingsViewController.h b/MacPass/MPAdvancedDatabaseSettingsViewController.h new file mode 100644 index 00000000..c8adada3 --- /dev/null +++ b/MacPass/MPAdvancedDatabaseSettingsViewController.h @@ -0,0 +1,17 @@ +// +// MPAdvancedDatabaseSettingsViewController.h +// MacPass +// +// Created by Michael Starke on 18.11.21. +// Copyright © 2021 HicknHack Software GmbH. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface MPAdvancedDatabaseSettingsViewController : NSViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/MacPass/MPAdvancedDatabaseSettingsViewController.m b/MacPass/MPAdvancedDatabaseSettingsViewController.m new file mode 100644 index 00000000..f98eb8bc --- /dev/null +++ b/MacPass/MPAdvancedDatabaseSettingsViewController.m @@ -0,0 +1,22 @@ +// +// MPAdvancedDatabaseSettingsViewController.m +// MacPass +// +// Created by Michael Starke on 18.11.21. +// Copyright © 2021 HicknHack Software GmbH. All rights reserved. +// + +#import "MPAdvancedDatabaseSettingsViewController.h" + +@interface MPAdvancedDatabaseSettingsViewController () + +@end + +@implementation MPAdvancedDatabaseSettingsViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do view setup here. +} + +@end diff --git a/MacPass/MPAdvancedDatabaseSettingsViewController.xib b/MacPass/MPAdvancedDatabaseSettingsViewController.xib new file mode 100644 index 00000000..3e8cb78c --- /dev/null +++ b/MacPass/MPAdvancedDatabaseSettingsViewController.xib @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/MacPass/MPDatabaseSettingsWindowController.h b/MacPass/MPDatabaseSettingsWindowController.h index 951175c5..77b80abe 100644 --- a/MacPass/MPDatabaseSettingsWindowController.h +++ b/MacPass/MPDatabaseSettingsWindowController.h @@ -51,11 +51,16 @@ typedef NS_ENUM(NSUInteger, MPDatabaseSettingsTab) { /* AES */ @property (weak) IBOutlet NSTextField *aesEncryptionRoundsTextField; -/* Argon2 */ -@property (weak) IBOutlet NSTextField *argon2ThreadsTextField; -@property (weak) IBOutlet NSTextField *argon2IterationsTextField; -@property (weak) IBOutlet NSTextField *argon2MemoryTextField; -@property (weak) IBOutlet NSStepper *argon2MemoryStepper; +/* Argon2d */ +@property (weak) IBOutlet NSTextField *argon2dThreadsTextField; +@property (weak) IBOutlet NSTextField *argon2dIterationsTextField; +@property (weak) IBOutlet NSTextField *argon2dMemoryTextField; +@property (weak) IBOutlet NSStepper *argon2dMemoryStepper; +/* Argon2id */ +@property (weak) IBOutlet NSTextField *argon2idThreadsTextField; +@property (weak) IBOutlet NSTextField *argon2idIterationsTextField; +@property (weak) IBOutlet NSTextField *argon2idMemoryTextField; +@property (weak) IBOutlet NSStepper *argon2idMemoryStepper; /* Advanced Tab*/ @property (weak) IBOutlet NSButton *enableHistoryCheckButton; diff --git a/MacPass/MPDatabaseSettingsWindowController.m b/MacPass/MPDatabaseSettingsWindowController.m index b3b5f90f..370da23a 100644 --- a/MacPass/MPDatabaseSettingsWindowController.m +++ b/MacPass/MPDatabaseSettingsWindowController.m @@ -39,7 +39,8 @@ NSString *_missingFeature; } -@property (assign) NSInteger argon2Memory; +@property (assign) NSInteger argon2dMemory; +@property (assign) NSInteger argon2idMemory; @property (assign) BOOL enableHistory; @property (assign) NSInteger maxiumHistoryItems; @@ -163,21 +164,28 @@ /* Security */ metaData.cipherUUID = self.cipherPopupButton.selectedItem.representedObject; - KPKAESKeyDerivation *aesKdf = [[KPKAESKeyDerivation alloc] initWithParameters:[KPKAESKeyDerivation defaultParameters]]; - KPKArgon2DKeyDerivation *argon2Kdf = [[KPKArgon2DKeyDerivation alloc] initWithParameters:[KPKArgon2DKeyDerivation defaultParameters]]; - // FIXME: add Argon2id support! - NSUUID *selectedKdfUUID = self.keyDerivationSettingsTabView.selectedTabViewItem.identifier; + KPKAESKeyDerivation *aesKdf = [[KPKAESKeyDerivation alloc] initWithParameters:[KPKAESKeyDerivation defaultParameters]]; + KPKArgon2DKeyDerivation *argon2dKdf = [[KPKArgon2DKeyDerivation alloc] initWithParameters:[KPKArgon2DKeyDerivation defaultParameters]]; + KPKArgon2IDKeyDerivation *argon2idKdf = [[KPKArgon2IDKeyDerivation alloc] initWithParameters:[KPKArgon2IDKeyDerivation defaultParameters]]; if([selectedKdfUUID isEqual:aesKdf.uuid]) { + aesKdf.rounds = self.aesEncryptionRoundsTextField.integerValue; metaData.keyDerivationParameters = aesKdf.parameters; } - else if([selectedKdfUUID isEqual:argon2Kdf.uuid]) { - argon2Kdf.iterations = self.argon2IterationsTextField.integerValue; - argon2Kdf.memory = self.argon2Memory; - argon2Kdf.threads = self.argon2ThreadsTextField.intValue; - metaData.keyDerivationParameters = argon2Kdf.parameters; + else if([selectedKdfUUID isEqual:argon2dKdf.uuid]) { + + argon2dKdf.iterations = self.argon2dIterationsTextField.integerValue; + argon2dKdf.memory = self.argon2dMemory; + argon2dKdf.threads = self.argon2dThreadsTextField.intValue; + metaData.keyDerivationParameters = argon2dKdf.parameters; + } + else if([selectedKdfUUID isEqual:argon2idKdf.uuid]) { + argon2idKdf.iterations = self.argon2idIterationsTextField.integerValue; + argon2idKdf.memory = self.argon2idMemory; + argon2idKdf.threads = self.argon2idThreadsTextField.intValue; + metaData.keyDerivationParameters = argon2idKdf.parameters; } /* Changes to metadata aren't backed by undomanager, thus we need to manually set the document dirty */ @@ -274,42 +282,57 @@ [self.keyDerivationPopupButton selectItemAtIndex:kdfIndex]; [self.keyDerivationSettingsTabView selectTabViewItemWithIdentifier:keyDerivation.uuid]; + /* fill defaults for AES */ + KPKAESKeyDerivation *aesKdf = [[KPKAESKeyDerivation alloc] initWithParameters:[KPKAESKeyDerivation defaultParameters]]; + self.aesEncryptionRoundsTextField.integerValue = aesKdf.rounds; + + /* fill defaults for Argon2d */ + KPKArgon2DKeyDerivation *argon2dKdf = [[KPKArgon2DKeyDerivation alloc] initWithParameters:[KPKArgon2DKeyDerivation defaultParameters]]; + self.argon2dIterationsTextField.integerValue = argon2dKdf.iterations; + self.argon2dMemory = argon2dKdf.memory; + self.argon2dThreadsTextField.integerValue = argon2dKdf.threads; + + /* fill defaults for Argon2id */ + KPKArgon2IDKeyDerivation *argon2idKdf = [[KPKArgon2IDKeyDerivation alloc] initWithParameters:[KPKArgon2IDKeyDerivation defaultParameters]]; + self.argon2idIterationsTextField.integerValue = argon2idKdf.iterations; + self.argon2idMemory = argon2idKdf.memory; + self.argon2idThreadsTextField.integerValue = argon2idKdf.threads; + if([keyDerivation isMemberOfClass:KPKAESKeyDerivation.class]) { /* set to database values */ KPKAESKeyDerivation *aesKdf = (KPKAESKeyDerivation *)keyDerivation; self.aesEncryptionRoundsTextField.integerValue = aesKdf.rounds; self.createKeyDerivationParametersButton.enabled = YES; - - /* fill defaults for Argon2 */ - KPKArgon2DKeyDerivation *argon2Kdf = [[KPKArgon2DKeyDerivation alloc] initWithParameters:[KPKArgon2DKeyDerivation defaultParameters]]; - self.argon2IterationsTextField.integerValue = argon2Kdf.iterations; - self.argon2Memory = argon2Kdf.memory; - self.argon2ThreadsTextField.integerValue = argon2Kdf.threads; } else if([keyDerivation isMemberOfClass:KPKArgon2DKeyDerivation.class]) { /* set to database value */ - KPKArgon2DKeyDerivation *argon2Kdf = (KPKArgon2DKeyDerivation *)keyDerivation; - self.argon2Memory = argon2Kdf.memory; - self.argon2ThreadsTextField.integerValue = argon2Kdf.threads; - self.argon2IterationsTextField.integerValue = argon2Kdf.iterations; - - /* fill defaults for AES */ - KPKAESKeyDerivation *aesKdf = [[KPKAESKeyDerivation alloc] initWithParameters:[KPKAESKeyDerivation defaultParameters]]; - self.aesEncryptionRoundsTextField.integerValue = aesKdf.rounds; + KPKArgon2DKeyDerivation *argon2dKdf = (KPKArgon2DKeyDerivation *)keyDerivation; + self.argon2dMemory = argon2dKdf.memory; + self.argon2dThreadsTextField.integerValue = argon2dKdf.threads; + self.argon2dIterationsTextField.integerValue = argon2dKdf.iterations; } else if([keyDerivation isMemberOfClass:KPKArgon2IDKeyDerivation.class]) { - // TODO: implement setup! + /* set to database value */ + KPKArgon2IDKeyDerivation *argon2idKdf = (KPKArgon2IDKeyDerivation *)keyDerivation; + self.argon2idMemory = argon2idKdf.memory; + self.argon2idThreadsTextField.integerValue = argon2idKdf.threads; + self.argon2idIterationsTextField.integerValue = argon2idKdf.iterations; } else { NSAssert(NO, @"Unkown key derivation"); } - self.argon2MemoryStepper.minValue = 8*1024; // 8KB minimum - self.argon2MemoryStepper.maxValue = NSIntegerMax; - self.argon2MemoryStepper.increment = 1024*1024; // 1 megabytes steps - [self.argon2MemoryTextField bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2Memory)) options:nil]; - [self.argon2MemoryStepper bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2Memory)) options:nil]; - + self.argon2dMemoryStepper.minValue = 8*1024; // 8KB minimum + self.argon2dMemoryStepper.maxValue = NSIntegerMax; + self.argon2dMemoryStepper.increment = 1024*1024; // 1 megabytes steps + [self.argon2dMemoryTextField bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2dMemory)) options:nil]; + [self.argon2dMemoryStepper bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2dMemory)) options:nil]; + + self.argon2idMemoryStepper.minValue = 8*1024; // 8KB minimum + self.argon2idMemoryStepper.maxValue = NSIntegerMax; + self.argon2idMemoryStepper.increment = 1024*1024; // 1 megabytes steps + [self.argon2idMemoryTextField bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2idMemory)) options:nil]; + [self.argon2idMemoryStepper bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(argon2idMemory)) options:nil]; NSUInteger cipherIndex = [self.cipherPopupButton.menu indexOfItemWithRepresentedObject:metaData.cipherUUID]; [self.cipherPopupButton selectItemAtIndex:cipherIndex]; diff --git a/MacPass/MPGeneralDatabaseSettingsViewController.h b/MacPass/MPGeneralDatabaseSettingsViewController.h new file mode 100644 index 00000000..0602074e --- /dev/null +++ b/MacPass/MPGeneralDatabaseSettingsViewController.h @@ -0,0 +1,17 @@ +// +// MPGeneralDatabaseSettingsViewController.h +// MacPass +// +// Created by Michael Starke on 18.11.21. +// Copyright © 2021 HicknHack Software GmbH. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface MPGeneralDatabaseSettingsViewController : NSViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/MacPass/MPGeneralDatabaseSettingsViewController.m b/MacPass/MPGeneralDatabaseSettingsViewController.m new file mode 100644 index 00000000..6fbbbe27 --- /dev/null +++ b/MacPass/MPGeneralDatabaseSettingsViewController.m @@ -0,0 +1,22 @@ +// +// MPGeneralDatabaseSettingsViewController.m +// MacPass +// +// Created by Michael Starke on 18.11.21. +// Copyright © 2021 HicknHack Software GmbH. All rights reserved. +// + +#import "MPGeneralDatabaseSettingsViewController.h" + +@interface MPGeneralDatabaseSettingsViewController () + +@end + +@implementation MPGeneralDatabaseSettingsViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do view setup here. +} + +@end diff --git a/MacPass/MPGeneralDatabaseSettingsViewController.xib b/MacPass/MPGeneralDatabaseSettingsViewController.xib new file mode 100644 index 00000000..2ede0ee3 --- /dev/null +++ b/MacPass/MPGeneralDatabaseSettingsViewController.xib @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MacPass/MPSecurityDatabaseSettingsViewController.h b/MacPass/MPSecurityDatabaseSettingsViewController.h new file mode 100644 index 00000000..796d1bf1 --- /dev/null +++ b/MacPass/MPSecurityDatabaseSettingsViewController.h @@ -0,0 +1,17 @@ +// +// MPSecurityDatabaseSettingsViewController.h +// MacPass +// +// Created by Michael Starke on 18.11.21. +// Copyright © 2021 HicknHack Software GmbH. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface MPSecurityDatabaseSettingsViewController : NSViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/MacPass/MPSecurityDatabaseSettingsViewController.m b/MacPass/MPSecurityDatabaseSettingsViewController.m new file mode 100644 index 00000000..24a4a1e1 --- /dev/null +++ b/MacPass/MPSecurityDatabaseSettingsViewController.m @@ -0,0 +1,22 @@ +// +// MPSecurityDatabaseSettingsViewController.m +// MacPass +// +// Created by Michael Starke on 18.11.21. +// Copyright © 2021 HicknHack Software GmbH. All rights reserved. +// + +#import "MPSecurityDatabaseSettingsViewController.h" + +@interface MPSecurityDatabaseSettingsViewController () + +@end + +@implementation MPSecurityDatabaseSettingsViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do view setup here. +} + +@end diff --git a/MacPass/MPSecurityDatabaseSettingsViewController.xib b/MacPass/MPSecurityDatabaseSettingsViewController.xib new file mode 100644 index 00000000..c7a9f080 --- /dev/null +++ b/MacPass/MPSecurityDatabaseSettingsViewController.xib @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + +