diff options
author | Louis-Bertrand Varin <louisv@unito.io> | 2017-01-14 21:25:30 +0300 |
---|---|---|
committer | Louis-Bertrand Varin <louisv@unito.io> | 2017-01-14 21:25:30 +0300 |
commit | 798041fe11adb7fc24f5ca413e7e88844da2b750 (patch) | |
tree | f96843c6e6078c1a45b4be866b17541549b66f2a /src | |
parent | 1ca5b72073a98f47d191f9dda321e690cda9c468 (diff) |
Extract readKeyFromLine.
Diffstat (limited to 'src')
-rw-r--r-- | src/keys/CompositeKey.cpp | 28 | ||||
-rw-r--r-- | src/keys/CompositeKey.h | 2 |
2 files changed, 29 insertions, 1 deletions
diff --git a/src/keys/CompositeKey.cpp b/src/keys/CompositeKey.cpp index 16b48592e..88116c104 100644 --- a/src/keys/CompositeKey.cpp +++ b/src/keys/CompositeKey.cpp @@ -18,12 +18,15 @@ #include "CompositeKey.h" #include "CompositeKey_p.h" -#include <QtConcurrent> #include <QElapsedTimer> +#include <QFile> +#include <QtConcurrent> #include "core/Global.h" #include "crypto/CryptoHash.h" #include "crypto/SymmetricCipher.h" +#include "keys/FileKey.h" +#include "keys/PasswordKey.h" CompositeKey::CompositeKey() { @@ -71,6 +74,29 @@ CompositeKey& CompositeKey::operator=(const CompositeKey& key) return *this; } +/* + * Read a key from a line of input. + * If the line references a valid file + * path, the key is loaded from file. + */ +CompositeKey CompositeKey::readFromLine(QString line) +{ + + CompositeKey key; + if (QFile::exists(line)) { + FileKey fileKey; + fileKey.load(line); + key.addKey(fileKey); + } + else { + PasswordKey password; + password.setPassword(line); + key.addKey(password); + } + return key; + +} + QByteArray CompositeKey::rawKey() const { CryptoHash cryptoHash(CryptoHash::Sha256); diff --git a/src/keys/CompositeKey.h b/src/keys/CompositeKey.h index 3290d3671..f8666aadc 100644 --- a/src/keys/CompositeKey.h +++ b/src/keys/CompositeKey.h @@ -19,6 +19,7 @@ #define KEEPASSX_COMPOSITEKEY_H #include <QList> +#include <QString> #include "keys/Key.h" @@ -39,6 +40,7 @@ public: void addKey(const Key& key); static int transformKeyBenchmark(int msec); + static CompositeKey readFromLine(QString line); private: static QByteArray transformKeyRaw(const QByteArray& key, const QByteArray& seed, |