From a3dc977e58470644f2acca77905285d44b22f2b8 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Sat, 20 Nov 2021 00:32:09 +0100 Subject: [PATCH] Correctly set KDBX envelope version Shows a warning when trying to open with a newer minor version than what is currently supported. We always try to save with the lowest KDBX version possible for maximum compatibility. --- share/demo.kdbx | Bin 79189 -> 78629 bytes share/translations/keepassxc_en.ts | 58 +++++++++++----- src/core/Database.cpp | 22 ++++++ src/core/Database.h | 5 ++ src/format/Kdbx3Reader.cpp | 4 +- src/format/Kdbx3Writer.cpp | 9 +-- src/format/Kdbx3Writer.h | 1 - src/format/Kdbx4Reader.cpp | 2 +- src/format/Kdbx4Writer.cpp | 9 +-- src/format/Kdbx4Writer.h | 1 - src/format/KdbxReader.cpp | 8 +-- src/format/KdbxReader.h | 2 - src/format/KdbxWriter.cpp | 2 +- src/format/KdbxWriter.h | 5 -- src/format/KdbxXmlWriter.cpp | 12 ++-- src/format/KeePass2.cpp | 2 +- src/format/KeePass2.h | 4 +- src/format/KeePass2Reader.cpp | 7 +- src/format/KeePass2Writer.cpp | 63 +++++++++++------- src/format/KeePass2Writer.h | 2 +- src/gui/DatabaseOpenWidget.cpp | 20 ++++++ .../DatabaseSettingsWidgetEncryption.cpp | 24 +++++-- .../DatabaseSettingsWidgetEncryption.h | 2 +- .../DatabaseSettingsWidgetEncryption.ui | 17 ++++- tests/TestKdbx2.cpp | 4 +- tests/TestKdbx3.cpp | 17 +---- tests/TestKdbx3.h | 5 -- tests/TestKdbx4.cpp | 54 ++++++--------- tests/TestKdbx4.h | 5 -- tests/TestKeePass2Format.h | 5 -- 30 files changed, 209 insertions(+), 162 deletions(-) diff --git a/share/demo.kdbx b/share/demo.kdbx index 7be77579f04e55d3facfb4acb3672418b15a6bdc..b1a37e99fc7504e8845db32fb2af83d5597ec8bc 100644 GIT binary patch literal 78629 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 NZ2#Y4F9QPu0{}hR=L`S< diff --git a/share/translations/keepassxc_en.ts b/share/translations/keepassxc_en.ts index daef0a8de..b30987eee 100644 --- a/share/translations/keepassxc_en.ts +++ b/share/translations/keepassxc_en.ts @@ -1535,6 +1535,28 @@ If you do not have a key file, please leave the field empty. Please present or touch your YubiKey to continue… + + Database Version Mismatch + + + + The database you are trying to open was most likely +created by a newer version of KeePassXC. + +You can try to open it anyway, but it may be incomplete +and saving any changes may incur data loss. + +We recommend you update your KeePassXC installation. + + + + Open database anyway + + + + Database unlock canceled. + + DatabaseSettingWidgetMetaData @@ -1808,18 +1830,6 @@ Are you sure you want to continue without a password? Database format: Database format: - - This is only important if you need to use your database with other programs. - This is only important if you need to use your database with other programs. - - - KDBX 4.0 (recommended) - KDBX 4.0 (recommended) - - - KDBX 3.1 - KDBX 3.1 - unchanged Database decryption time is unchanged @@ -1919,6 +1929,22 @@ If you keep this number, your database may take hours, days, or even longer to o If you keep this number, your database will not be protected from brute force attacks. + + Format cannot be changed: Your database uses KDBX 4 features + + + + Unless you need to open your database with other programs, always use the latest format. + + + + KDBX 4 (recommended) + KDBX 4.0 (recommended) {4 ?} + + + KDBX 3 + KDBX 3 + DatabaseSettingsWidgetFdoSecrets @@ -6523,10 +6549,6 @@ Available commands: AES-KDF (KDBX 4) AES-KDF (KDBX 4) - - AES-KDF (KDBX 3.1) - AES-KDF (KDBX 3.1) - Invalid Settings TOTP @@ -7498,6 +7520,10 @@ Please consider generating a new key file. Attachments: + + AES-KDF (KDBX 3) + AES-KDF (KDBX 3.1) {3)?} + QtIOCompressor diff --git a/src/core/Database.cpp b/src/core/Database.cpp index 5738a3b0a..6f7dd6610 100644 --- a/src/core/Database.cpp +++ b/src/core/Database.cpp @@ -163,6 +163,27 @@ bool Database::open(const QString& filePath, QSharedPointer return true; } +/** + * KDBX format version. + */ +quint32 Database::formatVersion() const +{ + return m_data.formatVersion; +} + +void Database::setFormatVersion(quint32 version) +{ + m_data.formatVersion = version; +} + +/** + * Whether the KDBX minor version is greater than the newest supported. + */ +bool Database::hasMinorVersionMismatch() const +{ + return m_data.formatVersion > KeePass2::FILE_VERSION_MAX; +} + bool Database::isSaving() { bool locked = m_saveMutex.tryLock(); @@ -935,6 +956,7 @@ void Database::setKdf(QSharedPointer kdf) { Q_ASSERT(!m_data.isReadOnly); m_data.kdf = std::move(kdf); + setFormatVersion(KeePass2Writer::kdbxVersionRequired(this, true, m_data.kdf.isNull())); } bool Database::changeKdf(const QSharedPointer& kdf) diff --git a/src/core/Database.h b/src/core/Database.h index c42025f85..31d29da7b 100644 --- a/src/core/Database.h +++ b/src/core/Database.h @@ -87,6 +87,10 @@ public: bool extract(QByteArray&, QString* error = nullptr); bool import(const QString& xmlExportPath, QString* error = nullptr); + quint32 formatVersion() const; + void setFormatVersion(quint32 version); + bool hasMinorVersionMismatch() const; + void releaseData(); bool isInitialized() const; @@ -166,6 +170,7 @@ signals: private: struct DatabaseData { + quint32 formatVersion = 0; QString filePath; bool isReadOnly = false; QUuid cipher = KeePass2::CIPHER_AES256; diff --git a/src/format/Kdbx3Reader.cpp b/src/format/Kdbx3Reader.cpp index 5c718d6a0..66935b7f7 100644 --- a/src/format/Kdbx3Reader.cpp +++ b/src/format/Kdbx3Reader.cpp @@ -34,7 +34,7 @@ bool Kdbx3Reader::readDatabaseImpl(QIODevice* device, QSharedPointer key, Database* db) { - Q_ASSERT(m_kdbxVersion <= KeePass2::FILE_VERSION_3_1); + Q_ASSERT((db->formatVersion() & KeePass2::FILE_VERSION_CRITICAL_MASK) <= KeePass2::FILE_VERSION_3); if (hasError()) { return false; @@ -120,7 +120,7 @@ bool Kdbx3Reader::readDatabaseImpl(QIODevice* device, return false; } - Q_ASSERT(!xmlReader.headerHash().isEmpty() || m_kdbxVersion < KeePass2::FILE_VERSION_3_1); + Q_ASSERT(!xmlReader.headerHash().isEmpty() || db->formatVersion() < KeePass2::FILE_VERSION_3_1); if (!xmlReader.headerHash().isEmpty()) { QByteArray headerHash = CryptoHash::hash(headerData, CryptoHash::Sha256); diff --git a/src/format/Kdbx3Writer.cpp b/src/format/Kdbx3Writer.cpp index 7ba4c3f36..2770239a7 100644 --- a/src/format/Kdbx3Writer.cpp +++ b/src/format/Kdbx3Writer.cpp @@ -68,7 +68,7 @@ bool Kdbx3Writer::writeDatabase(QIODevice* device, Database* db) QBuffer header; header.open(QIODevice::WriteOnly); - writeMagicNumbers(&header, KeePass2::SIGNATURE_1, KeePass2::SIGNATURE_2, formatVersion()); + writeMagicNumbers(&header, KeePass2::SIGNATURE_1, KeePass2::SIGNATURE_2, db->formatVersion()); CHECK_RETURN_FALSE(writeHeaderField(&header, KeePass2::HeaderFieldID::CipherID, db->cipher().toRfc4122())); CHECK_RETURN_FALSE( @@ -137,7 +137,7 @@ bool Kdbx3Writer::writeDatabase(QIODevice* device, Database* db) return false; } - KdbxXmlWriter xmlWriter(formatVersion()); + KdbxXmlWriter xmlWriter(db->formatVersion()); xmlWriter.writeDatabase(outputDevice, db, &randomStream, headerHash); // Explicitly close/reset streams so they are flushed and we can detect @@ -161,8 +161,3 @@ bool Kdbx3Writer::writeDatabase(QIODevice* device, Database* db) return true; } - -quint32 Kdbx3Writer::formatVersion() -{ - return KeePass2::FILE_VERSION_3_1; -} diff --git a/src/format/Kdbx3Writer.h b/src/format/Kdbx3Writer.h index 45b0a8b51..eb98a470d 100644 --- a/src/format/Kdbx3Writer.h +++ b/src/format/Kdbx3Writer.h @@ -29,7 +29,6 @@ class Kdbx3Writer : public KdbxWriter public: bool writeDatabase(QIODevice* device, Database* db) override; - quint32 formatVersion() override; }; #endif // KEEPASSX_KDBX3WRITER_H diff --git a/src/format/Kdbx4Reader.cpp b/src/format/Kdbx4Reader.cpp index c25c3e31b..1dc7067dd 100644 --- a/src/format/Kdbx4Reader.cpp +++ b/src/format/Kdbx4Reader.cpp @@ -36,7 +36,7 @@ bool Kdbx4Reader::readDatabaseImpl(QIODevice* device, QSharedPointer key, Database* db) { - Q_ASSERT(m_kdbxVersion == KeePass2::FILE_VERSION_4); + Q_ASSERT((db->formatVersion() & KeePass2::FILE_VERSION_CRITICAL_MASK) == KeePass2::FILE_VERSION_4); m_binaryPool.clear(); diff --git a/src/format/Kdbx4Writer.cpp b/src/format/Kdbx4Writer.cpp index cbd6f9511..08a0df013 100644 --- a/src/format/Kdbx4Writer.cpp +++ b/src/format/Kdbx4Writer.cpp @@ -66,7 +66,7 @@ bool Kdbx4Writer::writeDatabase(QIODevice* device, Database* db) QBuffer header; header.open(QIODevice::WriteOnly); - writeMagicNumbers(&header, KeePass2::SIGNATURE_1, KeePass2::SIGNATURE_2, formatVersion()); + writeMagicNumbers(&header, KeePass2::SIGNATURE_1, KeePass2::SIGNATURE_2, db->formatVersion()); CHECK_RETURN_FALSE( writeHeaderField(&header, KeePass2::HeaderFieldID::CipherID, db->cipher().toRfc4122())); @@ -166,7 +166,7 @@ bool Kdbx4Writer::writeDatabase(QIODevice* device, Database* db) return false; } - KdbxXmlWriter xmlWriter(formatVersion()); + KdbxXmlWriter xmlWriter(db->formatVersion()); xmlWriter.writeDatabase(outputDevice, db, &randomStream, headerHash); // Explicitly close/reset streams so they are flushed and we can detect @@ -306,8 +306,3 @@ bool Kdbx4Writer::serializeVariantMap(const QVariantMap& map, QByteArray& output CHECK_RETURN_FALSE(buf.write(endBytes) == 1); return true; } - -quint32 Kdbx4Writer::formatVersion() -{ - return KeePass2::FILE_VERSION_4; -} diff --git a/src/format/Kdbx4Writer.h b/src/format/Kdbx4Writer.h index 8ef82f18f..c8540245b 100644 --- a/src/format/Kdbx4Writer.h +++ b/src/format/Kdbx4Writer.h @@ -29,7 +29,6 @@ class Kdbx4Writer : public KdbxWriter public: bool writeDatabase(QIODevice* device, Database* db) override; - quint32 formatVersion() override; private: bool writeInnerHeaderField(QIODevice* device, KeePass2::InnerHeaderFieldID fieldId, const QByteArray& data); diff --git a/src/format/KdbxReader.cpp b/src/format/KdbxReader.cpp index 94ccf3342..5610897c8 100644 --- a/src/format/KdbxReader.cpp +++ b/src/format/KdbxReader.cpp @@ -74,14 +74,12 @@ bool KdbxReader::readDatabase(QIODevice* device, QSharedPointersetFormatVersion(version); // read header fields while (readHeaderField(headerStream, m_db) && !hasError()) { diff --git a/src/format/KdbxReader.h b/src/format/KdbxReader.h index cbc13b20b..a7b9fc37e 100644 --- a/src/format/KdbxReader.h +++ b/src/format/KdbxReader.h @@ -83,8 +83,6 @@ protected: void raiseError(const QString& errorMessage); - quint32 m_kdbxVersion = 0; - QByteArray m_masterSeed; QByteArray m_encryptionIV; QByteArray m_streamStartBytes; diff --git a/src/format/KdbxWriter.cpp b/src/format/KdbxWriter.cpp index b69cedbf7..b7758c751 100644 --- a/src/format/KdbxWriter.cpp +++ b/src/format/KdbxWriter.cpp @@ -71,7 +71,7 @@ void KdbxWriter::extractDatabase(QByteArray& xmlOutput, Database* db) QBuffer buffer; buffer.setBuffer(&xmlOutput); buffer.open(QIODevice::WriteOnly); - KdbxXmlWriter writer(formatVersion()); + KdbxXmlWriter writer(db->formatVersion()); writer.disableInnerStreamProtection(true); writer.writeDatabase(&buffer, db); } diff --git a/src/format/KdbxWriter.h b/src/format/KdbxWriter.h index d5e214a51..bec8fc8df 100644 --- a/src/format/KdbxWriter.h +++ b/src/format/KdbxWriter.h @@ -52,11 +52,6 @@ public: */ virtual bool writeDatabase(QIODevice* device, Database* db) = 0; - /** - * Get the database format version for the writer. - */ - virtual quint32 formatVersion() = 0; - void extractDatabase(QByteArray& xmlOutput, Database* db); bool hasError() const; diff --git a/src/format/KdbxXmlWriter.cpp b/src/format/KdbxXmlWriter.cpp index 4b49b6972..35ed5ffdb 100644 --- a/src/format/KdbxXmlWriter.cpp +++ b/src/format/KdbxXmlWriter.cpp @@ -166,7 +166,7 @@ void KdbxXmlWriter::writeIcon(const QUuid& uuid, const Metadata::CustomIconData& m_xml.writeStartElement("Icon"); writeUuid("UUID", uuid); - if (m_kdbxVersion >= KeePass2::FILE_VERSION_4) { + if (m_kdbxVersion >= KeePass2::FILE_VERSION_4_1) { if (!iconData.name.isEmpty()) { writeString("Name", iconData.name); } @@ -243,7 +243,7 @@ void KdbxXmlWriter::writeCustomDataItem(const QString& key, writeString("Key", key); writeString("Value", item.value); - if (writeLastModified && m_kdbxVersion >= KeePass2::FILE_VERSION_4 && item.lastModified.isValid()) { + if (writeLastModified && m_kdbxVersion >= KeePass2::FILE_VERSION_4_1 && item.lastModified.isValid()) { writeDateTime("LastModificationTime", item.lastModified); } @@ -291,9 +291,9 @@ void KdbxXmlWriter::writeGroup(const Group* group) if (m_kdbxVersion >= KeePass2::FILE_VERSION_4) { writeCustomData(group->customData()); - if (!group->previousParentGroupUuid().isNull()) { - writeUuid("PreviousParentGroup", group->previousParentGroupUuid()); - } + } + if (m_kdbxVersion >= KeePass2::FILE_VERSION_4_1 && !group->previousParentGroupUuid().isNull()) { + writeUuid("PreviousParentGroup", group->previousParentGroupUuid()); } const QList& entryList = group->entries(); @@ -363,7 +363,7 @@ void KdbxXmlWriter::writeEntry(const Entry* entry) writeString("Tags", entry->tags()); writeTimes(entry->timeInfo()); - if (m_kdbxVersion >= KeePass2::FILE_VERSION_4) { + if (m_kdbxVersion >= KeePass2::FILE_VERSION_4_1) { if (entry->excludeFromReports()) { writeBool("QualityCheck", false); } diff --git a/src/format/KeePass2.cpp b/src/format/KeePass2.cpp index cc57ccffa..bf991f880 100644 --- a/src/format/KeePass2.cpp +++ b/src/format/KeePass2.cpp @@ -56,7 +56,7 @@ const QList> KeePass2::KDFS{ qMakePair(KeePass2::KDF_ARGON2D, QObject::tr("Argon2d (KDBX 4 – recommended)")), qMakePair(KeePass2::KDF_ARGON2ID, QObject::tr("Argon2id (KDBX 4)")), qMakePair(KeePass2::KDF_AES_KDBX4, QObject::tr("AES-KDF (KDBX 4)")), - qMakePair(KeePass2::KDF_AES_KDBX3, QObject::tr("AES-KDF (KDBX 3.1)"))}; + qMakePair(KeePass2::KDF_AES_KDBX3, QObject::tr("AES-KDF (KDBX 3)"))}; QByteArray KeePass2::hmacKey(const QByteArray& masterSeed, const QByteArray& transformedMasterKey) { diff --git a/src/format/KeePass2.h b/src/format/KeePass2.h index c42183295..5aed903c3 100644 --- a/src/format/KeePass2.h +++ b/src/format/KeePass2.h @@ -31,16 +31,18 @@ namespace KeePass2 constexpr quint32 SIGNATURE_2 = 0xB54BFB67; constexpr quint32 FILE_VERSION_CRITICAL_MASK = 0xFFFF0000; + constexpr quint32 FILE_VERSION_4_1 = 0x00040001; constexpr quint32 FILE_VERSION_4 = 0x00040000; constexpr quint32 FILE_VERSION_3_1 = 0x00030001; constexpr quint32 FILE_VERSION_3 = 0x00030000; constexpr quint32 FILE_VERSION_2 = 0x00020000; constexpr quint32 FILE_VERSION_MIN = FILE_VERSION_2; + constexpr quint32 FILE_VERSION_MAX = FILE_VERSION_4_1; constexpr quint16 VARIANTMAP_VERSION = 0x0100; constexpr quint16 VARIANTMAP_CRITICAL_MASK = 0xFF00; - const QSysInfo::Endian BYTEORDER = QSysInfo::LittleEndian; + constexpr QSysInfo::Endian BYTEORDER = QSysInfo::LittleEndian; extern const QUuid CIPHER_AES128; extern const QUuid CIPHER_AES256; diff --git a/src/format/KeePass2Reader.cpp b/src/format/KeePass2Reader.cpp index 3c9cd23be..30ab70d79 100644 --- a/src/format/KeePass2Reader.cpp +++ b/src/format/KeePass2Reader.cpp @@ -81,11 +81,8 @@ bool KeePass2Reader::readDatabase(QIODevice* device, QSharedPointer maxVersion) { + if (m_version < KeePass2::FILE_VERSION_MIN + || (m_version & KeePass2::FILE_VERSION_CRITICAL_MASK) > KeePass2::FILE_VERSION_MAX) { raiseError(tr("Unsupported KeePass 2 database version.")); return false; } diff --git a/src/format/KeePass2Writer.cpp b/src/format/KeePass2Writer.cpp index 86480e74c..4cf0d4ad6 100644 --- a/src/format/KeePass2Writer.cpp +++ b/src/format/KeePass2Writer.cpp @@ -40,44 +40,57 @@ bool KeePass2Writer::writeDatabase(const QString& filename, Database* db) return writeDatabase(&file, db); } +#define VERSION_MAX(a, b) \ + a = qMax(a, b); \ + if (a >= KeePass2::FILE_VERSION_MAX) { \ + return a; \ + } + /** - * @return true if the database should upgrade to KDBX4. + * Get the minimum KDBX version required for writing the database. */ -bool KeePass2Writer::implicitKDBXUpgradeNeeded(Database const* db) +quint32 KeePass2Writer::kdbxVersionRequired(Database const* db, bool ignoreCurrent, bool ignoreKdf) { - if (db->kdf()->uuid() != KeePass2::KDF_AES_KDBX3) { - return false; + quint32 version = KeePass2::FILE_VERSION_3_1; + if (!ignoreCurrent) { + VERSION_MAX(version, db->formatVersion()) + } + + if (!ignoreKdf && !db->kdf().isNull() && !db->kdf()->uuid().isNull() + && db->kdf()->uuid() != KeePass2::KDF_AES_KDBX3) { + VERSION_MAX(version, KeePass2::FILE_VERSION_4) } if (!db->publicCustomData().isEmpty()) { - return true; + VERSION_MAX(version, KeePass2::FILE_VERSION_4) } - for (const auto& group : db->rootGroup()->groupsRecursive(true)) { + for (const auto* group : db->rootGroup()->groupsRecursive(true)) { if (group->customData() && !group->customData()->isEmpty()) { - return true; + VERSION_MAX(version, KeePass2::FILE_VERSION_4) } if (!group->tags().isEmpty()) { - return true; + VERSION_MAX(version, KeePass2::FILE_VERSION_4_1) } if (group->previousParentGroup()) { - return true; + VERSION_MAX(version, KeePass2::FILE_VERSION_4_1) } - for (const auto& entry : group->entries()) { + for (const auto* entry : group->entries()) { + if (entry->customData() && !entry->customData()->isEmpty()) { - return true; + VERSION_MAX(version, KeePass2::FILE_VERSION_4) } if (entry->excludeFromReports()) { - return true; + VERSION_MAX(version, KeePass2::FILE_VERSION_4_1) } if (entry->previousParentGroup()) { - return true; + VERSION_MAX(version, KeePass2::FILE_VERSION_4_1) } - for (const auto& historyItem : entry->historyItems()) { + for (const auto* historyItem : entry->historyItems()) { if (historyItem->customData() && !historyItem->customData()->isEmpty()) { - return true; + VERSION_MAX(version, KeePass2::FILE_VERSION_4) } } } @@ -87,11 +100,11 @@ bool KeePass2Writer::implicitKDBXUpgradeNeeded(Database const* db) for (const QUuid& uuid : customIconsOrder) { const auto& icon = db->metadata()->customIcon(uuid); if (!icon.name.isEmpty() || icon.lastModified.isValid()) { - return true; + VERSION_MAX(version, KeePass2::FILE_VERSION_4_1) } } - return false; + return version; } /** @@ -106,8 +119,8 @@ bool KeePass2Writer::writeDatabase(QIODevice* device, Database* db) m_error = false; m_errorStr.clear(); - bool upgradeNeeded = implicitKDBXUpgradeNeeded(db); - if (upgradeNeeded) { + m_version = kdbxVersionRequired(db); + if (db->kdf()->uuid() == KeePass2::KDF_AES_KDBX3 && m_version >= KeePass2::FILE_VERSION_4) { // We MUST re-transform the key, because challenge-response hashing has changed in KDBX 4. // If we forget to re-transform, the database will be saved WITHOUT a challenge-response key component! auto kdf = KeePass2::uuidToKdf(KeePass2::KDF_AES_KDBX4); @@ -115,12 +128,12 @@ bool KeePass2Writer::writeDatabase(QIODevice* device, Database* db) db->changeKdf(kdf); } + db->setFormatVersion(m_version); if (db->kdf()->uuid() == KeePass2::KDF_AES_KDBX3) { - Q_ASSERT(!upgradeNeeded); - m_version = KeePass2::FILE_VERSION_3_1; + Q_ASSERT(m_version <= KeePass2::FILE_VERSION_3_1); m_writer.reset(new Kdbx3Writer()); } else { - m_version = KeePass2::FILE_VERSION_4; + Q_ASSERT(m_version >= KeePass2::FILE_VERSION_4); m_writer.reset(new Kdbx4Writer()); } @@ -132,11 +145,13 @@ void KeePass2Writer::extractDatabase(Database* db, QByteArray& xmlOutput) m_error = false; m_errorStr.clear(); + m_version = kdbxVersionRequired(db); + db->setFormatVersion(m_version); if (db->kdf()->uuid() == KeePass2::KDF_AES_KDBX3) { - m_version = KeePass2::FILE_VERSION_3_1; + Q_ASSERT(m_version <= KeePass2::FILE_VERSION_3_1); m_writer.reset(new Kdbx3Writer()); } else { - m_version = KeePass2::FILE_VERSION_4; + Q_ASSERT(m_version >= KeePass2::FILE_VERSION_4); m_writer.reset(new Kdbx4Writer()); } diff --git a/src/format/KeePass2Writer.h b/src/format/KeePass2Writer.h index 049b1555c..b4d817813 100644 --- a/src/format/KeePass2Writer.h +++ b/src/format/KeePass2Writer.h @@ -33,7 +33,7 @@ public: bool writeDatabase(const QString& filename, Database* db); bool writeDatabase(QIODevice* device, Database* db); void extractDatabase(Database* db, QByteArray& xmlOutput); - static bool implicitKDBXUpgradeNeeded(Database const* db); + static quint32 kdbxVersionRequired(Database const* db, bool ignoreCurrent = false, bool ignoreKdf = false); QSharedPointer writer() const; quint32 version() const; diff --git a/src/gui/DatabaseOpenWidget.cpp b/src/gui/DatabaseOpenWidget.cpp index 43e529551..f0d494b27 100644 --- a/src/gui/DatabaseOpenWidget.cpp +++ b/src/gui/DatabaseOpenWidget.cpp @@ -206,6 +206,26 @@ void DatabaseOpenWidget::openDatabase() QApplication::restoreOverrideCursor(); m_ui->passwordFormFrame->setEnabled(true); + if (ok && m_db->hasMinorVersionMismatch()) { + QScopedPointer msgBox(new QMessageBox(this)); + msgBox->setIcon(QMessageBox::Warning); + msgBox->setWindowTitle(tr("Database Version Mismatch")); + msgBox->setText(tr("The database you are trying to open was most likely\n" + "created by a newer version of KeePassXC.\n\n" + "You can try to open it anyway, but it may be incomplete\n" + "and saving any changes may incur data loss.\n\n" + "We recommend you update your KeePassXC installation.")); + auto btn = msgBox->addButton(tr("Open database anyway"), QMessageBox::ButtonRole::AcceptRole); + msgBox->setDefaultButton(btn); + msgBox->addButton(QMessageBox::Cancel); + msgBox->exec(); + if (msgBox->clickedButton() != btn) { + m_db.reset(new Database()); + m_ui->messageWidget->showMessage(tr("Database unlock canceled."), MessageWidget::MessageType::Error); + return; + } + } + if (ok) { #ifdef WITH_XC_TOUCHID QHash useTouchID = config()->get(Config::UseTouchID).toHash(); diff --git a/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.cpp b/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.cpp index 1a967b773..67f894e44 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.cpp +++ b/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.cpp @@ -24,6 +24,7 @@ #include "core/Metadata.h" #include "crypto/kdf/Argon2Kdf.h" #include "format/KeePass2.h" +#include "format/KeePass2Writer.h" #include "gui/MessageBox.h" const char* DatabaseSettingsWidgetEncryption::CD_DECRYPTION_TIME_PREFERENCE_KEY = "KPXC_DECRYPTION_TIME_PREFERENCE"; @@ -36,12 +37,13 @@ DatabaseSettingsWidgetEncryption::DatabaseSettingsWidgetEncryption(QWidget* pare connect(m_ui->transformBenchmarkButton, SIGNAL(clicked()), SLOT(benchmarkTransformRounds())); connect(m_ui->kdfComboBox, SIGNAL(currentIndexChanged(int)), SLOT(changeKdf(int))); + m_ui->formatCannotBeChanged->setVisible(false); connect(m_ui->memorySpinBox, SIGNAL(valueChanged(int)), this, SLOT(memoryChanged(int))); connect(m_ui->parallelismSpinBox, SIGNAL(valueChanged(int)), this, SLOT(parallelismChanged(int))); - m_ui->compatibilitySelection->addItem(tr("KDBX 4.0 (recommended)"), KeePass2::KDF_ARGON2D.toByteArray()); - m_ui->compatibilitySelection->addItem(tr("KDBX 3.1"), KeePass2::KDF_AES_KDBX3.toByteArray()); + m_ui->compatibilitySelection->addItem(tr("KDBX 4 (recommended)"), KeePass2::KDF_ARGON2D.toByteArray()); + m_ui->compatibilitySelection->addItem(tr("KDBX 3"), KeePass2::KDF_AES_KDBX3.toByteArray()); m_ui->decryptionTimeSlider->setMinimum(Kdf::MIN_ENCRYPTION_TIME / 100); m_ui->decryptionTimeSlider->setMaximum(Kdf::MAX_ENCRYPTION_TIME / 100); m_ui->decryptionTimeSlider->setValue(Kdf::DEFAULT_ENCRYPTION_TIME / 100); @@ -93,6 +95,7 @@ void DatabaseSettingsWidgetEncryption::initialize() m_db->setCipher(KeePass2::CIPHER_AES256); isDirty = true; } + bool kdbx3Enabled = KeePass2Writer::kdbxVersionRequired(m_db.data(), true, true) <= KeePass2::FILE_VERSION_3_1; // check if the DB's custom data has a decryption time setting stored // and set the slider to it, otherwise just state that the time is unchanged @@ -115,9 +118,14 @@ void DatabaseSettingsWidgetEncryption::initialize() updateFormatCompatibility(m_db->kdf()->uuid() == KeePass2::KDF_AES_KDBX3 ? KDBX3 : KDBX4, isDirty); setupAlgorithmComboBox(); - setupKdfComboBox(); + setupKdfComboBox(kdbx3Enabled); loadKdfParameters(); + if (!kdbx3Enabled) { + m_ui->compatibilitySelection->setEnabled(false); + m_ui->formatCannotBeChanged->setVisible(true); + } + m_isDirty = isDirty; } @@ -143,13 +151,15 @@ void DatabaseSettingsWidgetEncryption::setupAlgorithmComboBox() } } -void DatabaseSettingsWidgetEncryption::setupKdfComboBox() +void DatabaseSettingsWidgetEncryption::setupKdfComboBox(bool enableKdbx3) { - // Setup kdf combo box + // Set up kdf combo box bool block = m_ui->kdfComboBox->blockSignals(true); m_ui->kdfComboBox->clear(); for (auto& kdf : asConst(KeePass2::KDFS)) { - m_ui->kdfComboBox->addItem(kdf.second.toUtf8(), kdf.first.toByteArray()); + if (kdf.first != KeePass2::KDF_AES_KDBX3 or enableKdbx3) { + m_ui->kdfComboBox->addItem(kdf.second.toUtf8(), kdf.first.toByteArray()); + } } m_ui->kdfComboBox->blockSignals(block); } @@ -393,8 +403,8 @@ void DatabaseSettingsWidgetEncryption::updateFormatCompatibility(int index, bool m_ui->compatibilitySelection->blockSignals(block); } + QUuid kdfUuid(m_ui->compatibilitySelection->itemData(index).toByteArray()); if (retransform) { - QUuid kdfUuid(m_ui->compatibilitySelection->itemData(index).toByteArray()); auto kdf = KeePass2::uuidToKdf(kdfUuid); m_db->setKdf(kdf); diff --git a/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.h b/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.h index 2c7b5bac9..c3d7ccf74 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.h +++ b/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.h @@ -61,7 +61,7 @@ private slots: void updateDecryptionTime(int value); void updateFormatCompatibility(int index, bool retransform = true); void setupAlgorithmComboBox(); - void setupKdfComboBox(); + void setupKdfComboBox(bool enableKdbx3); void loadKdfParameters(); void updateKdfFields(); void activateChangeDecryptionTime(); diff --git a/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.ui b/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.ui index 97da37475..2b8598862 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.ui +++ b/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.ui @@ -183,6 +183,9 @@ + + 2 + @@ -203,12 +206,24 @@ + + + + + true + + + + Format cannot be changed: Your database uses KDBX 4 features + + + - This is only important if you need to use your database with other programs. + Unless you need to open your database with other programs, always use the latest format. diff --git a/tests/TestKdbx2.cpp b/tests/TestKdbx2.cpp index bf22be375..c0da4d4a3 100644 --- a/tests/TestKdbx2.cpp +++ b/tests/TestKdbx2.cpp @@ -87,7 +87,7 @@ void TestKdbx2::testFormat200Upgrade() reader.readDatabase(filename, key, db.data()); QVERIFY2(!reader.hasError(), reader.errorString().toStdString().c_str()); QVERIFY(!db.isNull()); - QCOMPARE(reader.version(), KeePass2::FILE_VERSION_2 & KeePass2::FILE_VERSION_CRITICAL_MASK); + QCOMPARE(reader.version(), KeePass2::FILE_VERSION_2); QCOMPARE(db->kdf()->uuid(), KeePass2::KDF_AES_KDBX3); QBuffer buffer; @@ -110,6 +110,6 @@ void TestKdbx2::testFormat200Upgrade() // database should now be upgraded to KDBX 3 without data loss verifyKdbx2Db(targetDb); - QCOMPARE(reader.version(), KeePass2::FILE_VERSION_3_1 & KeePass2::FILE_VERSION_CRITICAL_MASK); + QCOMPARE(reader.version(), KeePass2::FILE_VERSION_3_1); QCOMPARE(targetDb->kdf()->uuid(), KeePass2::KDF_AES_KDBX3); } diff --git a/tests/TestKdbx3.cpp b/tests/TestKdbx3.cpp index 27fa70c11..bab8ab8dc 100644 --- a/tests/TestKdbx3.cpp +++ b/tests/TestKdbx3.cpp @@ -75,22 +75,7 @@ void TestKdbx3::readKdbx(QIODevice* device, if (hasError) { errorString = reader.errorString(); } - QCOMPARE(reader.version(), KeePass2::FILE_VERSION_3_1 & KeePass2::FILE_VERSION_CRITICAL_MASK); -} - -void TestKdbx3::readKdbx(const QString& path, - QSharedPointer key, - QSharedPointer db, - bool& hasError, - QString& errorString) -{ - KeePass2Reader reader; - reader.readDatabase(path, key, db.data()); - hasError = reader.hasError(); - if (hasError) { - errorString = reader.errorString(); - } - QCOMPARE(reader.version(), KeePass2::FILE_VERSION_3_1 & KeePass2::FILE_VERSION_CRITICAL_MASK); + QCOMPARE(reader.version(), KeePass2::FILE_VERSION_3_1); } void TestKdbx3::writeKdbx(QIODevice* device, Database* db, bool& hasError, QString& errorString) diff --git a/tests/TestKdbx3.h b/tests/TestKdbx3.h index ca571fbc8..deb965d90 100644 --- a/tests/TestKdbx3.h +++ b/tests/TestKdbx3.h @@ -44,11 +44,6 @@ protected: QSharedPointer db, bool& hasError, QString& errorString) override; - void readKdbx(const QString& path, - QSharedPointer key, - QSharedPointer db, - bool& hasError, - QString& errorString) override; void writeKdbx(QIODevice* device, Database* db, bool& hasError, QString& errorString) override; }; diff --git a/tests/TestKdbx4.cpp b/tests/TestKdbx4.cpp index 4521140dc..a40bd1cdf 100644 --- a/tests/TestKdbx4.cpp +++ b/tests/TestKdbx4.cpp @@ -92,21 +92,6 @@ void TestKdbx4Argon2::readKdbx(QIODevice* device, QCOMPARE(reader.version(), KeePass2::FILE_VERSION_4); } -void TestKdbx4Argon2::readKdbx(const QString& path, - QSharedPointer key, - QSharedPointer db, - bool& hasError, - QString& errorString) -{ - KeePass2Reader reader; - reader.readDatabase(path, key, db.data()); - hasError = reader.hasError(); - if (hasError) { - errorString = reader.errorString(); - } - QCOMPARE(reader.version(), KeePass2::FILE_VERSION_4); -} - void TestKdbx4Argon2::writeKdbx(QIODevice* device, Database* db, bool& hasError, QString& errorString) { if (db->kdf()->uuid() == KeePass2::KDF_AES_KDBX3) { @@ -218,8 +203,8 @@ void TestKdbx4Format::testFormat400Upgrade_data() QTest::addColumn("addCustomData"); QTest::addColumn("expectedVersion"); - auto constexpr kdbx3 = KeePass2::FILE_VERSION_3_1 & KeePass2::FILE_VERSION_CRITICAL_MASK; - auto constexpr kdbx4 = KeePass2::FILE_VERSION_4 & KeePass2::FILE_VERSION_CRITICAL_MASK; + auto constexpr kdbx3 = KeePass2::FILE_VERSION_3_1; + auto constexpr kdbx4 = KeePass2::FILE_VERSION_4; QTest::newRow("Argon2d + AES") << KeePass2::KDF_ARGON2D << KeePass2::CIPHER_AES256 << false << kdbx4; QTest::newRow("Argon2id + AES") << KeePass2::KDF_ARGON2ID << KeePass2::CIPHER_AES256 << false << kdbx4; @@ -255,7 +240,7 @@ void TestKdbx4Format::testFormat410Upgrade() Database db; db.changeKdf(fastKdf(db.kdf())); QCOMPARE(db.kdf()->uuid(), KeePass2::KDF_AES_KDBX3); - QVERIFY(!KeePass2Writer::implicitKDBXUpgradeNeeded(&db)); + QCOMPARE(KeePass2Writer::kdbxVersionRequired(&db), KeePass2::FILE_VERSION_3_1); auto group1 = new Group(); group1->setUuid(QUuid::createUuid()); @@ -271,44 +256,45 @@ void TestKdbx4Format::testFormat410Upgrade() // Groups with tags group1->setTags("tag"); - QVERIFY(KeePass2Writer::implicitKDBXUpgradeNeeded(&db)); + QCOMPARE(KeePass2Writer::kdbxVersionRequired(&db), KeePass2::FILE_VERSION_4_1); group1->setTags(""); - QVERIFY(!KeePass2Writer::implicitKDBXUpgradeNeeded(&db)); + QCOMPARE(KeePass2Writer::kdbxVersionRequired(&db), KeePass2::FILE_VERSION_3_1); // PasswordQuality flag set entry->setExcludeFromReports(true); - QVERIFY(KeePass2Writer::implicitKDBXUpgradeNeeded(&db)); + QCOMPARE(KeePass2Writer::kdbxVersionRequired(&db), KeePass2::FILE_VERSION_4_1); entry->setExcludeFromReports(false); - QVERIFY(!KeePass2Writer::implicitKDBXUpgradeNeeded(&db)); + QCOMPARE(KeePass2Writer::kdbxVersionRequired(&db), KeePass2::FILE_VERSION_3_1); // Previous parent group set on group group1->setPreviousParentGroup(group2); QCOMPARE(group1->previousParentGroup(), group2); - QVERIFY(KeePass2Writer::implicitKDBXUpgradeNeeded(&db)); + QCOMPARE(KeePass2Writer::kdbxVersionRequired(&db), KeePass2::FILE_VERSION_4_1); group1->setPreviousParentGroup(nullptr); - QVERIFY(!KeePass2Writer::implicitKDBXUpgradeNeeded(&db)); + QCOMPARE(KeePass2Writer::kdbxVersionRequired(&db), KeePass2::FILE_VERSION_3_1); // Previous parent group set on entry entry->setPreviousParentGroup(group2); QCOMPARE(entry->previousParentGroup(), group2); - QVERIFY(KeePass2Writer::implicitKDBXUpgradeNeeded(&db)); + QCOMPARE(KeePass2Writer::kdbxVersionRequired(&db), KeePass2::FILE_VERSION_4_1); entry->setPreviousParentGroup(nullptr); - QVERIFY(!KeePass2Writer::implicitKDBXUpgradeNeeded(&db)); + QCOMPARE(KeePass2Writer::kdbxVersionRequired(&db), KeePass2::FILE_VERSION_3_1); // Custom icons with name or modification date Metadata::CustomIconData customIcon; auto iconUuid = QUuid::createUuid(); db.metadata()->addCustomIcon(iconUuid, customIcon); - QVERIFY(!KeePass2Writer::implicitKDBXUpgradeNeeded(&db)); + QCOMPARE(KeePass2Writer::kdbxVersionRequired(&db), KeePass2::FILE_VERSION_3_1); customIcon.name = "abc"; db.metadata()->removeCustomIcon(iconUuid); db.metadata()->addCustomIcon(iconUuid, customIcon); - QVERIFY(KeePass2Writer::implicitKDBXUpgradeNeeded(&db)); + QCOMPARE(KeePass2Writer::kdbxVersionRequired(&db), KeePass2::FILE_VERSION_4_1); customIcon.name.clear(); customIcon.lastModified = Clock::currentDateTimeUtc(); db.metadata()->removeCustomIcon(iconUuid); + QCOMPARE(KeePass2Writer::kdbxVersionRequired(&db), KeePass2::FILE_VERSION_3_1); db.metadata()->addCustomIcon(iconUuid, customIcon); - QVERIFY(KeePass2Writer::implicitKDBXUpgradeNeeded(&db)); + QCOMPARE(KeePass2Writer::kdbxVersionRequired(&db), KeePass2::FILE_VERSION_4_1); } void TestKdbx4Format::testUpgradeMasterKeyIntegrity() @@ -394,8 +380,8 @@ void TestKdbx4Format::testUpgradeMasterKeyIntegrity() if (reader.hasError()) { QFAIL(qPrintable(reader.errorString())); } - QCOMPARE(reader.version(), expectedVersion & KeePass2::FILE_VERSION_CRITICAL_MASK); - if (expectedVersion != KeePass2::FILE_VERSION_3) { + QCOMPARE(reader.version(), expectedVersion); + if (expectedVersion >= KeePass2::FILE_VERSION_4) { QVERIFY(db2->kdf()->uuid() != KeePass2::KDF_AES_KDBX3); } } @@ -405,9 +391,9 @@ void TestKdbx4Format::testUpgradeMasterKeyIntegrity_data() QTest::addColumn("upgradeAction"); QTest::addColumn("expectedVersion"); - QTest::newRow("Upgrade: none") << QString("none") << KeePass2::FILE_VERSION_3; - QTest::newRow("Upgrade: none (meta-customdata)") << QString("meta-customdata") << KeePass2::FILE_VERSION_3; - QTest::newRow("Upgrade: none (explicit kdf-aes-kdbx3)") << QString("kdf-aes-kdbx3") << KeePass2::FILE_VERSION_3; + QTest::newRow("Upgrade: none") << QString("none") << KeePass2::FILE_VERSION_3_1; + QTest::newRow("Upgrade: none (meta-customdata)") << QString("meta-customdata") << KeePass2::FILE_VERSION_3_1; + QTest::newRow("Upgrade: none (explicit kdf-aes-kdbx3)") << QString("kdf-aes-kdbx3") << KeePass2::FILE_VERSION_3_1; QTest::newRow("Upgrade (explicit): kdf-argon2") << QString("kdf-argon2") << KeePass2::FILE_VERSION_4; QTest::newRow("Upgrade (explicit): kdf-aes-kdbx4") << QString("kdf-aes-kdbx4") << KeePass2::FILE_VERSION_4; QTest::newRow("Upgrade (implicit): public-customdata") << QString("public-customdata") << KeePass2::FILE_VERSION_4; diff --git a/tests/TestKdbx4.h b/tests/TestKdbx4.h index 0eddef6c0..5d7f6cc50 100644 --- a/tests/TestKdbx4.h +++ b/tests/TestKdbx4.h @@ -32,11 +32,6 @@ protected: readXml(const QString& path, bool strictMode, bool& hasError, QString& errorString) override; void writeXml(QBuffer* buf, Database* db, bool& hasError, QString& errorString) override; - void readKdbx(const QString& path, - QSharedPointer key, - QSharedPointer db, - bool& hasError, - QString& errorString) override; void readKdbx(QIODevice* device, QSharedPointer key, QSharedPointer db, diff --git a/tests/TestKeePass2Format.h b/tests/TestKeePass2Format.h index 759172ce6..140739c03 100644 --- a/tests/TestKeePass2Format.h +++ b/tests/TestKeePass2Format.h @@ -76,11 +76,6 @@ protected: QSharedPointer db, bool& hasError, QString& errorString) = 0; - virtual void readKdbx(const QString& path, - QSharedPointer key, - QSharedPointer db, - bool& hasError, - QString& errorString) = 0; virtual void writeKdbx(QIODevice* device, Database* db, bool& hasError, QString& errorString) = 0; QSharedPointer m_xmlDb;