Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src/keys
diff options
context:
space:
mode:
authorLouis-Bertrand Varin <louisv@unito.io>2017-01-14 21:25:30 +0300
committerLouis-Bertrand Varin <louisv@unito.io>2017-01-14 21:25:30 +0300
commit798041fe11adb7fc24f5ca413e7e88844da2b750 (patch)
treef96843c6e6078c1a45b4be866b17541549b66f2a /src/keys
parent1ca5b72073a98f47d191f9dda321e690cda9c468 (diff)
Extract readKeyFromLine.
Diffstat (limited to 'src/keys')
-rw-r--r--src/keys/CompositeKey.cpp28
-rw-r--r--src/keys/CompositeKey.h2
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,