From 759347a803b2df45a2f70d46f718ee6fef072732 Mon Sep 17 00:00:00 2001 From: Timothy Redaelli Date: Thu, 6 Aug 2015 15:12:37 +0200 Subject: [PATCH] Use the correct cipher for benchmark --- src/gui/DatabaseSettingsWidget.cpp | 10 +++++++++- src/keys/CompositeKey.cpp | 11 ++++++----- src/keys/CompositeKey.h | 3 ++- src/keys/CompositeKey_p.h | 4 +++- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/gui/DatabaseSettingsWidget.cpp b/src/gui/DatabaseSettingsWidget.cpp index 34c55b5c6..ee50eae3a 100644 --- a/src/gui/DatabaseSettingsWidget.cpp +++ b/src/gui/DatabaseSettingsWidget.cpp @@ -21,9 +21,11 @@ #include "core/Database.h" #include "core/Group.h" #include "core/Metadata.h" +#include "crypto/SymmetricCipher.h" #include "format/KeePass2.h" #include "keys/CompositeKey.h" + DatabaseSettingsWidget::DatabaseSettingsWidget(QWidget* parent) : DialogyWidget(parent) , m_ui(new Ui::DatabaseSettingsWidget()) @@ -143,7 +145,13 @@ void DatabaseSettingsWidget::reject() void DatabaseSettingsWidget::transformRoundsBenchmark() { QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); - int rounds = CompositeKey::transformKeyBenchmark(1000); + int rounds; + if (m_ui->AlgorithmComboBox->currentIndex() == 0) { + rounds = CompositeKey::transformKeyBenchmark(1000, SymmetricCipher::Aes256); + } + else { + rounds = CompositeKey::transformKeyBenchmark(1000, SymmetricCipher::Twofish); + } if (rounds != -1) { m_ui->transformRoundsSpinBox->setValue(rounds); } diff --git a/src/keys/CompositeKey.cpp b/src/keys/CompositeKey.cpp index 5bf9cae58..61bf4232b 100644 --- a/src/keys/CompositeKey.cpp +++ b/src/keys/CompositeKey.cpp @@ -145,10 +145,10 @@ void CompositeKey::addKey(const Key& key) m_keys.append(key.clone()); } -int CompositeKey::transformKeyBenchmark(int msec) +int CompositeKey::transformKeyBenchmark(int msec, SymmetricCipher::Algorithm algo) { - TransformKeyBenchmarkThread thread1(msec); - TransformKeyBenchmarkThread thread2(msec); + TransformKeyBenchmarkThread thread1(msec, algo); + TransformKeyBenchmarkThread thread2(msec, algo); thread1.start(); thread2.start(); @@ -160,9 +160,10 @@ int CompositeKey::transformKeyBenchmark(int msec) } -TransformKeyBenchmarkThread::TransformKeyBenchmarkThread(int msec) +TransformKeyBenchmarkThread::TransformKeyBenchmarkThread(int msec, SymmetricCipher::Algorithm algo) : m_msec(msec) , m_rounds(0) + , algo(algo) { Q_ASSERT(msec > 0); } @@ -178,7 +179,7 @@ void TransformKeyBenchmarkThread::run() QByteArray seed = QByteArray(32, '\x4B'); QByteArray iv(16, 0); - SymmetricCipher cipher(SymmetricCipher::Aes256, SymmetricCipher::Ecb, + SymmetricCipher cipher(algo, SymmetricCipher::Ecb, SymmetricCipher::Encrypt); cipher.init(seed, iv); diff --git a/src/keys/CompositeKey.h b/src/keys/CompositeKey.h index 3290d3671..0163c914b 100644 --- a/src/keys/CompositeKey.h +++ b/src/keys/CompositeKey.h @@ -20,6 +20,7 @@ #include +#include "crypto/SymmetricCipher.h" #include "keys/Key.h" class CompositeKey : public Key @@ -38,7 +39,7 @@ class CompositeKey : public Key bool* ok, QString* errorString) const; void addKey(const Key& key); - static int transformKeyBenchmark(int msec); + static int transformKeyBenchmark(int msec, SymmetricCipher::Algorithm algo); private: static QByteArray transformKeyRaw(const QByteArray& key, const QByteArray& seed, diff --git a/src/keys/CompositeKey_p.h b/src/keys/CompositeKey_p.h index 27fa7abc4..a131e3750 100644 --- a/src/keys/CompositeKey_p.h +++ b/src/keys/CompositeKey_p.h @@ -19,13 +19,14 @@ #define KEEPASSX_COMPOSITEKEY_P_H #include +#include "crypto/SymmetricCipher.h" class TransformKeyBenchmarkThread : public QThread { Q_OBJECT public: - explicit TransformKeyBenchmarkThread(int msec); + explicit TransformKeyBenchmarkThread(int msec, SymmetricCipher::Algorithm algo); int rounds(); protected: @@ -34,6 +35,7 @@ class TransformKeyBenchmarkThread : public QThread private: int m_msec; int m_rounds; + SymmetricCipher::Algorithm algo; }; #endif // KEEPASSX_COMPOSITEKEY_P_H