mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-07-24 15:25:31 -04:00
parent
8117809901
commit
e166722026
15 changed files with 297 additions and 54 deletions
|
@ -94,31 +94,11 @@ void DatabaseOpenWidget::enterKey(const QString& pw, const QString& keyFile)
|
|||
void DatabaseOpenWidget::openDatabase()
|
||||
{
|
||||
KeePass2Reader reader;
|
||||
CompositeKey masterKey;
|
||||
|
||||
if (m_ui->checkPassword->isChecked()) {
|
||||
masterKey.addKey(PasswordKey(m_ui->editPassword->text()));
|
||||
CompositeKey masterKey = databaseKey();
|
||||
if (masterKey.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
QHash<QString, QVariant> lastKeyFiles = config()->get("LastKeyFiles").toHash();
|
||||
|
||||
if (m_ui->checkKeyFile->isChecked()) {
|
||||
FileKey key;
|
||||
QString keyFilename = m_ui->comboKeyFile->currentText();
|
||||
QString errorMsg;
|
||||
if (!key.load(keyFilename, &errorMsg)) {
|
||||
QMessageBox::warning(this, tr("Error"), tr("Can't open key file:\n%1").arg(errorMsg));
|
||||
return;
|
||||
}
|
||||
masterKey.addKey(key);
|
||||
lastKeyFiles[m_filename] = keyFilename;
|
||||
}
|
||||
else {
|
||||
lastKeyFiles.remove(m_filename);
|
||||
}
|
||||
|
||||
config()->set("LastKeyFiles", lastKeyFiles);
|
||||
|
||||
QFile file(m_filename);
|
||||
if (!file.open(QIODevice::ReadOnly)) {
|
||||
// TODO: error message
|
||||
|
@ -141,6 +121,36 @@ void DatabaseOpenWidget::openDatabase()
|
|||
}
|
||||
}
|
||||
|
||||
CompositeKey DatabaseOpenWidget::databaseKey()
|
||||
{
|
||||
CompositeKey masterKey;
|
||||
|
||||
if (m_ui->checkPassword->isChecked()) {
|
||||
masterKey.addKey(PasswordKey(m_ui->editPassword->text()));
|
||||
}
|
||||
|
||||
QHash<QString, QVariant> lastKeyFiles = config()->get("LastKeyFiles").toHash();
|
||||
|
||||
if (m_ui->checkKeyFile->isChecked()) {
|
||||
FileKey key;
|
||||
QString keyFilename = m_ui->comboKeyFile->currentText();
|
||||
QString errorMsg;
|
||||
if (!key.load(keyFilename, &errorMsg)) {
|
||||
QMessageBox::warning(this, tr("Error"), tr("Can't open key file:\n%1").arg(errorMsg));
|
||||
return CompositeKey();
|
||||
}
|
||||
masterKey.addKey(key);
|
||||
lastKeyFiles[m_filename] = keyFilename;
|
||||
}
|
||||
else {
|
||||
lastKeyFiles.remove(m_filename);
|
||||
}
|
||||
|
||||
config()->set("LastKeyFiles", lastKeyFiles);
|
||||
|
||||
return masterKey;
|
||||
}
|
||||
|
||||
void DatabaseOpenWidget::reject()
|
||||
{
|
||||
Q_EMIT editFinished(false);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue