diff --git a/ModernKeePass/Common/DatabaseHelper.cs b/ModernKeePass/Common/DatabaseHelper.cs index afa5d44..c4b8c19 100644 --- a/ModernKeePass/Common/DatabaseHelper.cs +++ b/ModernKeePass/Common/DatabaseHelper.cs @@ -54,10 +54,12 @@ namespace ModernKeePass.Common } } + public StorageFile KeyFile { get; set; } + public PwUuid DataCipher { get { return _pwDatabase.DataCipherUuid; } - internal set { _pwDatabase.DataCipherUuid = value; } + set { _pwDatabase.DataCipherUuid = value; } } public PwCompressionAlgorithm CompressionAlgorithm @@ -66,6 +68,12 @@ namespace ModernKeePass.Common set { _pwDatabase.Compression = value; } } + public KdfParameters KeyDerivation + { + get { return _pwDatabase.KdfParameters; } + set { _pwDatabase.KdfParameters = value; } + } + /// /// Open a KeePass database /// @@ -77,7 +85,8 @@ namespace ModernKeePass.Common var key = new CompositeKey(); try { - key.AddUserKey(new KcpPassword(password)); + if (password != null) key.AddUserKey(new KcpPassword(password)); + if (KeyFile != null) key.AddUserKey(new KcpKeyFile(IOConnectionInfo.FromFile(KeyFile))); var ioConnection = IOConnectionInfo.FromFile(DatabaseFile); if (createNew) _pwDatabase.New(ioConnection, key); else _pwDatabase.Open(ioConnection, key, new NullStatusLogger()); @@ -120,7 +129,7 @@ namespace ModernKeePass.Common public void Save() { // TODO: Save is disabled for now for Argon2Kdf because it corrupts DB (read works) - if (_pwDatabase == null || !_pwDatabase.IsOpen /*|| KdfPool.Get(_pwDatabase.KdfParameters.KdfUuid) is Argon2Kdf*/) return; + if (_pwDatabase == null || !_pwDatabase.IsOpen || KdfPool.Get(_pwDatabase.KdfParameters.KdfUuid) is Argon2Kdf) return; _pwDatabase.Save(new NullStatusLogger()); } diff --git a/ModernKeePass/Controls/OpenDatabaseUserControl.xaml b/ModernKeePass/Controls/OpenDatabaseUserControl.xaml index 3967b25..c6d2ee5 100644 --- a/ModernKeePass/Controls/OpenDatabaseUserControl.xaml +++ b/ModernKeePass/Controls/OpenDatabaseUserControl.xaml @@ -8,342 +8,32 @@ xmlns:core="using:Microsoft.Xaml.Interactions.Core" xmlns:actions="using:ModernKeePass.Actions" mc:Ignorable="d" - d:DesignHeight="60" + d:DesignHeight="120" d:DesignWidth="550" > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Visible - - - - - - - - - - - - - - - - - - - - - - -