Add support for database format 3.01 (HeaderHash).

Add test for the format 3.00 and upgrade Compressed.kdbx, NonAscii.kdbx
and ProtectedStrings.kdbx to 3.01.

Add a test for an incorrect HeaderHash.
This commit is contained in:
Felix Geyer
2012-09-25 22:33:36 +02:00
parent 40ccd219f4
commit 18d3fe55f8
18 changed files with 185 additions and 16 deletions

View File

@@ -45,6 +45,7 @@ void KeePass2XmlReader::readDatabase(QIODevice* device, Database* db, KeePass2Ra
m_meta->setUpdateDatetime(false);
m_randomStream = randomStream;
m_headerHash.clear();
m_tmpParent = new Group();
@@ -133,6 +134,11 @@ QString KeePass2XmlReader::errorString()
.arg(m_xml.columnNumber());
}
QByteArray KeePass2XmlReader::headerHash()
{
return m_headerHash;
}
void KeePass2XmlReader::parseKeePassFile()
{
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "KeePassFile");
@@ -158,6 +164,9 @@ void KeePass2XmlReader::parseMeta()
if (m_xml.name() == "Generator") {
m_meta->setGenerator(readString());
}
else if (m_xml.name() == "HeaderHash") {
m_headerHash = readBinary();
}
else if (m_xml.name() == "DatabaseName") {
m_meta->setName(readString());
}