/* * This file is part of smolbote. It's copyrighted by the contributors recorded * in the version control history of the file, available from its original * location: https://neueland.iserlohn-fortress.net/gitea/aqua/smolbote * * SPDX-License-Identifier: GPL-3.0 */ #include class PluginLoader : public QPluginLoader { Q_OBJECT public: enum VerifyState { // uninitialized state SignatureUnverified = -1, // signature is optional, match is optional SignatureCheckIfAvailable = 1, 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 }; PluginLoader(const QString &fileName, const VerifyState sigLevel = SignatureMissing, QObject *parent = nullptr); ~PluginLoader() = default; QString errorString() const { if(signature < requiredSignatureLevel) return QString("Required signature level: %2; Signature level: %3").arg(QString::number((int) requiredSignatureLevel), QString::number((int) signature)); else return QPluginLoader::errorString(); } VerifyState verify(const char *hashName = "SHA256") const; //bool load(); private: const VerifyState requiredSignatureLevel; VerifyState signature = SignatureUnverified; };