Add support of hashes

This commit is contained in:
Beu
2025-01-13 22:48:36 +01:00
parent f2cfefda0f
commit 1ae76e7674
4 changed files with 38 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
class LayerConfig {
string Name;
string Path;
string Hash;
CGameUILayer::EUILayerType LayerType = CGameUILayer::EUILayerType::Normal;
string AttachId = '';
@@ -9,6 +10,7 @@ class LayerConfig {
LayerConfig(const string &in _ParentPath, const Json::Value &in _Data) {
Path = Path::Join(_ParentPath, _Data['Path']);
Hash = _Data['Hash'];
const string Manialink = GetManialink();
Name = PacksManager::GetLayerName(Manialink);
@@ -33,6 +35,22 @@ class LayerConfig {
IO::File File(Path, IO::FileMode::Read);
const string Manialink = File.ReadToEnd();
const string FileHash = Crypto::Sha256(Manialink);
if (Hash != FileHash) {
print('Cannot load layer "'+ Path +'": Invalid hash');
trace('info.json Layer hash: '+ Hash);
trace('file hash: '+ FileHash);
if (S_DisplayHashWarning) {
RenderManager::NotifyWarning('Cannot load layer "'+ Path +'": Invalid hash');
}
if (!Meta::IsDeveloperMode()) {
throw('Cannot load layer "'+ Path +'": Invalid hash');
}
}
return Manialink;
}