From eb4f82a7ed8fb5fb73cdacd78aacda56e9e9b197 Mon Sep 17 00:00:00 2001 From: Florian Geyer Date: Mon, 16 Apr 2012 21:03:35 +0200 Subject: [PATCH] Add hasKey property to database and also make it accessible via the DatabaseWidget. --- src/core/Database.cpp | 7 +++++++ src/core/Database.h | 3 +++ src/gui/DatabaseWidget.cpp | 7 ++++++- src/gui/DatabaseWidget.h | 1 + 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/core/Database.cpp b/src/core/Database.cpp index 353376df..eece78f7 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 5b33f244..d886a856 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 fb97abcd..ef263270 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 ca564917..64e54f9b 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();