diff options
author | angelsl <angelsl@in04.sg> | 2017-11-12 21:23:01 +0300 |
---|---|---|
committer | Jonathan White <support@dmapps.us> | 2018-01-13 22:23:26 +0300 |
commit | 6a0d05e1ef6c15a77c543ecba927ad77fb2f395c (patch) | |
tree | 673989b25267da1fa16e1b0b9d7506886ed16a6c /src/format/KeePass2.cpp | |
parent | 4532108678e5b86cd064c9d234db55055a86a17c (diff) |
Add support for various algorithms for kdbx4
* Add SHA512 support to CryptoHash
* Add ChaCha20 support
* Add HMAC support
* Add new HmacBlockStream, used in KDBX 4
* Add support for ChaCha20 protected stream
Diffstat (limited to 'src/format/KeePass2.cpp')
-rw-r--r-- | src/format/KeePass2.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/format/KeePass2.cpp b/src/format/KeePass2.cpp index 01c15a871..8cf3df555 100644 --- a/src/format/KeePass2.cpp +++ b/src/format/KeePass2.cpp @@ -22,6 +22,7 @@ const Uuid KeePass2::CIPHER_AES = Uuid(QByteArray::fromHex("31c1f2e6bf714350be5805216afc5aff")); const Uuid KeePass2::CIPHER_TWOFISH = Uuid(QByteArray::fromHex("ad68f29f576f4bb9a36ad47af965346c")); +const Uuid KeePass2::CIPHER_CHACHA20 = Uuid(QByteArray::fromHex("D6038A2B8B6F4CB5A524339A31DBB59A")); const Uuid KeePass2::KDF_AES = Uuid(QByteArray::fromHex("C9D9F39A628A4460BF740D08C18A4FEA")); @@ -30,6 +31,7 @@ const QByteArray KeePass2::INNER_STREAM_SALSA20_IV("\xE8\x30\x09\x4B\x97\x20\x5D const QList<KeePass2::UuidNamePair> KeePass2::CIPHERS { KeePass2::UuidNamePair(KeePass2::CIPHER_AES, "AES: 256-bit"), KeePass2::UuidNamePair(KeePass2::CIPHER_TWOFISH, "Twofish: 256-bit"), + KeePass2::UuidNamePair(KeePass2::CIPHER_CHACHA20, "ChaCha20: 256-bit") }; const QList<KeePass2::UuidNamePair> KeePass2::KDFS { KeePass2::UuidNamePair(KeePass2::KDF_AES, "AES-KDF"), @@ -53,6 +55,20 @@ Uuid KeePass2::kdfToUuid(const Kdf& kdf) } } +KeePass2::ProtectedStreamAlgo KeePass2::idToProtectedStreamAlgo(quint32 id) +{ + switch (id) { + case static_cast<quint32>(KeePass2::ArcFourVariant): + return KeePass2::ArcFourVariant; + case static_cast<quint32>(KeePass2::Salsa20): + return KeePass2::Salsa20; + case static_cast<quint32>(KeePass2::ChaCha20): + return KeePass2::ChaCha20; + default: + return KeePass2::InvalidProtectedStreamAlgo; + } +} + KeePass2::UuidNamePair::UuidNamePair(const Uuid& uuid, const QString& name) : m_uuid(uuid) , m_name(name) |