File size: 1,112 Bytes
01b0979
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/usr/bin/env python3
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()