-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathverify.mjs
More file actions
10 lines (10 loc) · 1.33 KB
/
Copy pathverify.mjs
File metadata and controls
10 lines (10 loc) · 1.33 KB
1
2
3
4
5
6
7
8
9
10
import fs from "node:fs"; import crypto from "node:crypto"; import { verify } from "./index.js";
const repo="Riverbraid-Lite", ring=2, role="embedded-port", inv="LITE_HEADER_STATIONARY", contract="embedded-header-contract", sig="lite:HEADER_STATIONARY";
const protocol = JSON.parse(fs.readFileSync("protocol.steps", "utf8")); const result = verify(protocol.canonical_input);
const digest = crypto.createHash("sha256").update(JSON.stringify({repo, ring, role, inv, contract, input:protocol.canonical_input, result})).digest("hex");
const req = ["package.json","index.js","verify.mjs","protocol.steps","AUTHORITY.md","RING.md","CMakeLists.txt","include/riverbraid_lite.h"];
const missing = req.filter(f => !fs.existsSync(f));
const status = (missing.length === 0 && result.pass && result.stationary && result.signal === sig) ? "VERIFIED" : "FAILED";
const out = { schema:"riverbraid.infrastructure.verify.output", version:"1.0.0", repo, ring, role, invariant:inv, contract_type:contract, status, canonical_signal:result.signal, canonical_reason:result.reason, digest:"sha256:"+digest, required_files:req, missing_files:missing, failure_codes: status==="VERIFIED"?[]:["INFRASTRUCTURE_CONTRACT_NOT_VERIFIED"] };
fs.writeFileSync("verify-output.json", JSON.stringify(out, null, 2)+"\n", "utf8");
if(status!=="VERIFIED") process.exit(1); console.log("LITE_PASS");