diff options
author | Aqua-sama <aqua@iserlohn-fortress.net> | 2020-01-26 23:14:53 +0200 |
---|---|---|
committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2020-01-27 15:58:31 +0200 |
commit | 0bf5450365934c39ed0bb480712adaab2fa54386 (patch) | |
tree | 15b90e626ca7f29c9fa219addf17e9cf618b6496 /lib/pluginloader/pluginloader.h | |
parent | Move compiler flags to meson.build from pkgbuild (diff) | |
download | smolbote-0bf5450365934c39ed0bb480712adaab2fa54386.tar.xz |
pluginloader: add test for PluginLoader::verify
Diffstat (limited to 'lib/pluginloader/pluginloader.h')
-rw-r--r-- | lib/pluginloader/pluginloader.h | 42 |
1 files changed, 16 insertions, 26 deletions
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<int>(requiredSignatureLevel)), - QString::number(static_cast<int>(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; }; |