Files

36 lines
1.1 KiB
C++
Raw Permalink Normal View History

2026-07-09 09:17:30 +00:00
#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;
bool isApplicable(const QString& appId, const QString& channel,
const QString& currentVersion) const;
2026-07-09 09:17:30 +00:00
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;
};