| |
| from __future__ import annotations |
|
|
| import hashlib |
| import json |
| from pathlib import Path |
|
|
| import msgspec |
|
|
|
|
| ROOT = Path(__file__).resolve().parent |
| ARTIFACTS = ROOT / "artifacts" |
| CONTROL = ARTIFACTS / "control.msgpack" |
| MALICIOUS = ARTIFACTS / "decoder_trigger.msgpack" |
|
|
|
|
| def sha256(path: Path) -> str: |
| return hashlib.sha256(path.read_bytes()).hexdigest() |
|
|
|
|
| def main() -> None: |
| manifest = { |
| "format": "MessagePack (.msgpack)", |
| "loader": "msgspec.msgpack.Decoder(type=ModelState).decode", |
| "msgspec_version": msgspec.__version__, |
| "control": { |
| "path": str(CONTROL), |
| "size": CONTROL.stat().st_size, |
| "sha256": sha256(CONTROL), |
| }, |
| "malicious": { |
| "path": str(MALICIOUS), |
| "size": MALICIOUS.stat().st_size, |
| "sha256": sha256(MALICIOUS), |
| }, |
| "trigger_vector": [4, 2, 7], |
| } |
| (ARTIFACTS / "manifest.json").write_text(json.dumps(manifest, indent=2) + "\n", encoding="utf-8") |
| print(json.dumps(manifest, indent=2)) |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|