From 0bf5450365934c39ed0bb480712adaab2fa54386 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Sun, 26 Jan 2020 23:14:53 +0200 Subject: pluginloader: add test for PluginLoader::verify --- lib/pluginloader/pluginloader.h | 42 ++++++++++++++++------------------------- 1 file changed, 16 insertions(+), 26 deletions(-) (limited to 'lib/pluginloader/pluginloader.h') diff --git a/lib/pluginloader/pluginloader.h b/lib/pluginloader/pluginloader.h index 48be61d..b602f5b 100644 --- a/lib/pluginloader/pluginloader.h +++ b/lib/pluginloader/pluginloader.h @@ -13,45 +13,35 @@ class PluginLoader : public QPluginLoader Q_OBJECT public: - enum VerifyState { - // uninitialized state - SignatureUnverified = -1, - // signature is optional, match is optional - SignatureCheckIfAvailable = 1, + struct SignatureState { + bool ignored; // always ignore signature + bool checked; // check if available + bool enforced; // always check - SignatureComputeFailed = 2, // error computing signature - SignatureMismatched = 3, // signature does not match - - // signature is optional, match is required - SignatureMatchIfAvailable = 4, - - SignatureMissing = 5, // signature is not available - - // signature required, match is required - SignatureMatchRequired = 10, - - SignatureMatched = 20 // signature is matched + SignatureState(bool ignore, bool check, bool enforce) { + ignored = ignore; + checked = check; + enforced = enforce; + } }; - PluginLoader(const QString &fileName, const VerifyState sigLevel = SignatureMissing, QObject *parent = nullptr); + PluginLoader(const QString &fileName, SignatureState state, QObject *parent = nullptr); ~PluginLoader() = default; QString errorString() const { - if(signature < requiredSignatureLevel) - return QString("Required signature level: %2; Signature level: %3").arg( - QString::number(static_cast(requiredSignatureLevel)), - QString::number(static_cast(signature))); + if(!m_sigError.isEmpty()) + return m_sigError; else return QPluginLoader::errorString(); } - VerifyState verify(const char *hashName = "SHA256") const; - //bool load(); + bool verify(const char *hashName = "SHA256"); private: - const VerifyState requiredSignatureLevel; - VerifyState signature = SignatureUnverified; + const SignatureState m_state; + + QString m_sigError; }; -- cgit v1.2.1