Explicitly support AES-KDF in KDBX4 and don't convert KDBX4 files with AES-KDF back to KDBX3 when saving

This commit is contained in:
Janek Bevendorff
2018-01-10 21:24:53 +01:00
committed by Jonathan White
parent d327c16904
commit b04c8c2b6e
9 changed files with 59 additions and 26 deletions

View File

@@ -23,7 +23,15 @@
#include "crypto/CryptoHash.h"
AesKdf::AesKdf()
: Kdf::Kdf(KeePass2::KDF_AES)
: Kdf::Kdf(KeePass2::KDF_AES_KDBX4)
{
}
/**
* @param legacyKdbx3 initialize as legacy KDBX3 KDF
*/
AesKdf::AesKdf(bool legacyKdbx3)
: Kdf::Kdf(legacyKdbx3 ? KeePass2::KDF_AES_KDBX3 : KeePass2::KDF_AES_KDBX4)
{
}
@@ -36,17 +44,16 @@ bool AesKdf::processParameters(const QVariantMap &p)
}
QByteArray seed = p.value(KeePass2::KDFPARAM_AES_SEED).toByteArray();
if (!setSeed(seed)) {
return false;
}
return true;
return setSeed(seed);
}
QVariantMap AesKdf::writeParameters()
{
QVariantMap p;
p.insert(KeePass2::KDFPARAM_UUID, KeePass2::KDF_AES.toByteArray());
// always write old KDBX3 AES-KDF UUID for compatibility with other applications
p.insert(KeePass2::KDFPARAM_UUID, KeePass2::KDF_AES_KDBX3.toByteArray());
p.insert(KeePass2::KDFPARAM_AES_ROUNDS, rounds());
p.insert(KeePass2::KDFPARAM_AES_SEED, seed());
return p;

View File

@@ -24,6 +24,7 @@ class AesKdf: public Kdf
{
public:
AesKdf();
explicit AesKdf(bool legacyKdbx3);
bool processParameters(const QVariantMap& p) override;
QVariantMap writeParameters() override;