34 lines
1.0 KiB
C++
34 lines
1.0 KiB
C++
|
|
#pragma once
|
||
|
|
#include <QString>
|
||
|
|
#include <QJsonObject>
|
||
|
|
|
||
|
|
class PolicyHelper
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
explicit PolicyHelper(const QString& baseDir);
|
||
|
|
|
||
|
|
bool loadPolicy(const QString& relativePath = "config/version_policy.dat");
|
||
|
|
bool loadPolicyObject(const QJsonObject& policy, const QString& signedText = QString());
|
||
|
|
bool savePolicy(const QString& relativePath = "config/version_policy.dat") const;
|
||
|
|
bool isValid() const;
|
||
|
|
QString errorString() const;
|
||
|
|
bool isVersionAllowed(const QString& currentVersion) const;
|
||
|
|
bool allowRun() const;
|
||
|
|
bool forceUpdate() const;
|
||
|
|
bool allowRollback() const;
|
||
|
|
bool isOfflineAllowed() const;
|
||
|
|
bool isExpired() const;
|
||
|
|
qint64 policySeq() const;
|
||
|
|
QString message() const;
|
||
|
|
|
||
|
|
private:
|
||
|
|
QByteArray canonicalPolicyBytes(const QJsonObject& obj) const;
|
||
|
|
bool verifySignature(const QByteArray& payload, const QString& signatureBase64) const;
|
||
|
|
|
||
|
|
QString m_baseDir;
|
||
|
|
QJsonObject m_policy;
|
||
|
|
QString m_signedText;
|
||
|
|
mutable QString m_error;
|
||
|
|
bool m_loaded = false;
|
||
|
|
};
|