diff --git a/src/core/Database.cpp b/src/core/Database.cpp index 353376dff..eece78f71 100644 --- a/src/core/Database.cpp +++ b/src/core/Database.cpp @@ -27,6 +27,7 @@ Database::Database() { + m_hasKey = false; m_metadata = new Metadata(this); setRootGroup(new Group()); rootGroup()->setUuid(Uuid::random()); @@ -164,6 +165,7 @@ void Database::setKey(const CompositeKey& key, const QByteArray& transformSeed, { m_transformSeed = transformSeed; m_transformedMasterKey = key.transform(transformSeed, transformRounds()); + m_hasKey = true; if (updateChangedTime) { m_metadata->setMasterKeyChanged(QDateTime::currentDateTime()); } @@ -174,3 +176,8 @@ void Database::setKey(const CompositeKey& key) { setKey(key, Random::randomArray(32)); } + +bool Database::hasKey() +{ + return m_hasKey; +} diff --git a/src/core/Database.h b/src/core/Database.h index 5b33f2442..d886a8564 100644 --- a/src/core/Database.h +++ b/src/core/Database.h @@ -81,6 +81,7 @@ public: * Sets the database key and generates a random transform seed. */ void setKey(const CompositeKey& key); + bool hasKey(); Q_SIGNALS: void groupDataChanged(Group* group); @@ -103,6 +104,8 @@ private: QByteArray m_transformSeed; quint64 m_transformRounds; QByteArray m_transformedMasterKey; + + bool m_hasKey; }; #endif // KEEPASSX_DATABASE_H diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index fb97abcd2..ef263270e 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -161,7 +161,7 @@ void DatabaseWidget::updateMasterKey(bool accepted) m_db->setKey(m_changeMasterKeyWidget->newMasterKey()); } - else if (m_db->transformedMasterKey().isEmpty()) { // TODO other test? + else if (m_db->hasKey()) { Q_EMIT closeRequest(); return; } @@ -184,3 +184,8 @@ void DatabaseWidget::switchToMasterKeyChange() m_changeMasterKeyWidget->clearForms(); setCurrentIndex(3); } + +bool DatabaseWidget::dbHasKey() +{ + return m_db->hasKey(); +} diff --git a/src/gui/DatabaseWidget.h b/src/gui/DatabaseWidget.h index ca564917e..64e54f9b0 100644 --- a/src/gui/DatabaseWidget.h +++ b/src/gui/DatabaseWidget.h @@ -37,6 +37,7 @@ public: explicit DatabaseWidget(Database* db, QWidget* parent = 0); GroupView* groupView(); EntryView* entryView(); + bool dbHasKey(); Q_SIGNALS: void closeRequest();