diff --git a/Cartfile b/Cartfile index 9e81b225..bbf934ea 100644 --- a/Cartfile +++ b/Cartfile @@ -1,4 +1,4 @@ github "sparkle-project/Sparkle" ~> 1.22 github "MacPass/TransformerKit" "a8b5bb73cc327ec6798569b865c32fec5eb2289f" -github "MacPass/KeePassKit" "2e4c2de06e704b2cf3670a6868e1dd7f938ab859" +github "MacPass/KeePassKit" ~> 3.0 github "mstarke/HNHUi" ~> 4.0 diff --git a/Cartfile.resolved b/Cartfile.resolved index 154fb376..cda0156a 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1,5 +1,5 @@ -github "MacPass/KeePassKit" "2e4c2de06e704b2cf3670a6868e1dd7f938ab859" +github "MacPass/KeePassKit" "3.0.0" +github "MacPass/KissXML" "933f04fe5ad95c2be07ec0c2f801e140007f20fa" github "MacPass/TransformerKit" "a8b5bb73cc327ec6798569b865c32fec5eb2289f" github "mstarke/HNHUi" "4.0.4" -github "robbiehanson/KissXML" "5.3.3" github "sparkle-project/Sparkle" "1.24.0" diff --git a/MacPass/MPDatabaseSettingsWindowController.m b/MacPass/MPDatabaseSettingsWindowController.m index 86351d48..b3b5f90f 100644 --- a/MacPass/MPDatabaseSettingsWindowController.m +++ b/MacPass/MPDatabaseSettingsWindowController.m @@ -107,7 +107,6 @@ /* General */ KPKMetaData *metaData = ((MPDocument *)self.document).tree.metaData; /* TODO move settingsChanged updates to KeePassKit as it's the models responsibility */ - metaData.settingsChanged = NSDate.date; metaData.databaseDescription = self.databaseDescriptionTextView.string; metaData.databaseName = self.databaseNameTextField.stringValue; diff --git a/MacPass/MPPasswordEditWindowController.m b/MacPass/MPPasswordEditWindowController.m index a8776d3e..100ea6c1 100644 --- a/MacPass/MPPasswordEditWindowController.m +++ b/MacPass/MPPasswordEditWindowController.m @@ -150,10 +150,39 @@ typedef NS_ENUM(NSUInteger, MPPasswordEditKeyError) { - (IBAction)generateKey:(id)sender { MPDocument *document = self.document; - NSData *data = [NSData kpk_generateKeyfileDataForFormat:document.tree.minimumVersion.format]; + KPKFileVersion fileVersion = document.tree.minimumVersion; + NSArray *fileTypes = @[]; + KPKKeyFileType keyFileType; + + if(fileVersion.format == KPKDatabaseFormatUnknown) { + return; + } + else if(fileVersion.format == KPKDatabaseFormatKdb) { + fileTypes = @[@"key"]; + keyFileType = KPKKeyFileTypeBinary; + } + else { + if(fileVersion.version <= kKPKKdbxFileVersion3) { + keyFileType = KPKKeyFileTypeXMLVersion1; + fileTypes = @[@"key"]; + } + else if(fileVersion.version <=kKPKKdbxFileVersion4) { + keyFileType = KPKKeyFileTypeXMLVersion1; + fileTypes = @[@"key"]; + } + else if(fileVersion.version <= kKPKKdbxFileVersion4_1) { + keyFileType = KPKKeyFileTypeXMLVersion2; + fileTypes = @[@"keyx"]; + } + else { + return; + } + } + + NSData *data = [NSData kpk_generateKeyfileDataOfType:keyFileType]; if(data) { NSSavePanel *savePanel = [NSSavePanel savePanel]; - savePanel.allowedFileTypes = @[@"key", @"xml"]; + savePanel.allowedFileTypes = fileTypes; savePanel.canCreateDirectories = YES; savePanel.title = NSLocalizedString(@"SAVE_KEYFILE", "Button title to save the generated key file"); [savePanel beginWithCompletionHandler:^(NSInteger result) { diff --git a/MacPass/MPTOTPSetupViewController.m b/MacPass/MPTOTPSetupViewController.m index e863ec8c..fe580494 100644 --- a/MacPass/MPTOTPSetupViewController.m +++ b/MacPass/MPTOTPSetupViewController.m @@ -185,7 +185,7 @@ typedef NS_ENUM(NSUInteger, MPOTPType) { } /* secret */ - NSString *secret = [generator.key base32EncodedString]; + NSString *secret = [generator.key base32EncodedStringWithOptions:0]; self.secretTextField.stringValue = secret ? secret : @""; [self.algorithmPopUpButton selectItemWithTag:generator.hashAlgorithm];