Add challenge response to key before transformation, resolves #1060

* Re-implement KDBX4 challenge-response key assembly with transform
seed instead of master seed
This commit is contained in:
Janek Bevendorff 2018-01-07 18:46:24 +01:00 committed by Jonathan White
parent a6ddc22fb8
commit df728083cc
No known key found for this signature in database
GPG key ID: 440FC65F2E0C6E01
5 changed files with 67 additions and 18 deletions

View file

@ -20,7 +20,6 @@
#include <QBuffer>
#include "core/Group.h"
#include "core/Database.h"
#include "core/Endian.h"
#include "crypto/CryptoHash.h"
#include "format/KeePass2RandomStream.h"
@ -48,19 +47,13 @@ Database* Kdbx4Reader::readDatabaseImpl(QIODevice* device, const QByteArray& hea
return nullptr;
}
if (!m_db->setKey(key, false)) {
if (!m_db->setKey(key, false, false)) {
raiseError(tr("Unable to calculate master key"));
return nullptr;
}
if (!m_db->challengeMasterSeed(m_masterSeed)) {
raiseError(tr("Unable to issue challenge-response."));
return nullptr;
}
CryptoHash hash(CryptoHash::Sha256);
hash.addData(m_masterSeed);
hash.addData(m_db->challengeResponseKey());
hash.addData(m_db->transformedMasterKey());
QByteArray finalKey = hash.result();