Files
modernkeepass/ModernKeePass/Common/DatabaseHelper.cs
Geoffroy Bonneville 267d9f25c2 Implement add and delete entries and groups
New command bar
Some layout changes
Some refactoring
2017-11-08 14:42:37 +01:00

63 lines
1.6 KiB
C#

using System;
using Windows.Storage;
using System.Threading.Tasks;
using ModernKeePass.ViewModels;
using ModernKeePassLib;
using ModernKeePassLib.Interfaces;
using ModernKeePassLib.Keys;
using ModernKeePassLib.Serialization;
namespace ModernKeePass.Common
{
public class DatabaseHelper
{
private readonly PwDatabase _pwDatabase = new PwDatabase();
private readonly StorageFile _databaseFile;
public GroupVm RootGroup { get; set; }
public bool IsOpen => _pwDatabase.IsOpen;
public string Name => _databaseFile.Name;
public DatabaseHelper(StorageFile databaseFile)
{
_databaseFile = databaseFile;
}
public string Open(string password)
{
var key = new CompositeKey();
try
{
key.AddUserKey(new KcpPassword(password));
_pwDatabase.Open(IOConnectionInfo.FromFile(_databaseFile), key, new NullStatusLogger());
if (IsOpen) RootGroup = new GroupVm(_pwDatabase.RootGroup, null);
}
catch (ArgumentNullException)
{
return "Password cannot be empty";
}
catch (InvalidCompositeKeyException)
{
return "Wrong password";
}
catch (Exception ex)
{
return ex.Message;
}
return string.Empty;
}
public void Save()
{
_pwDatabase.Save(new NullStatusLogger());
}
public void Close()
{
_pwDatabase.Close();
}
}
}