39 lines
1.4 KiB
JavaScript
39 lines
1.4 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
import assert from "node:assert/strict";
|
|
import { constants } from "node:buffer";
|
|
import { createHash } from "node:crypto";
|
|
|
|
import { canonicalDigest } from "../dist/domain/comparisonSemantics.js";
|
|
import { createEvidence, parseEvidence } from "../dist/domain/evidence.js";
|
|
|
|
// This opt-in check crosses the actual engine string limit; keep it outside
|
|
// routine source tests. Build first, then run this script with the local Node.
|
|
const leaf = "x".repeat(1024 * 1024);
|
|
const encodedLeaf = JSON.stringify(leaf);
|
|
const count = Math.ceil(constants.MAX_STRING_LENGTH / encodedLeaf.length) + 1;
|
|
const value = { payload: Array.from({ length: count }, () => leaf) };
|
|
const expected = createHash("sha256");
|
|
expected.update('{"payload":[');
|
|
for (let index = 0; index < count; index += 1) {
|
|
if (index > 0) expected.update(",");
|
|
expected.update(encodedLeaf);
|
|
}
|
|
expected.update("]}");
|
|
assert.equal(canonicalDigest(value), expected.digest("hex"));
|
|
|
|
const evidence = createEvidence(
|
|
undefined,
|
|
{ id: "large-json-fixture", name: "Large JSON fixture", version: "1" },
|
|
{ operation: "inspect_fixture", parameters: {}, result: value },
|
|
);
|
|
assert.equal(parseEvidence(evidence).evidence_id, evidence.evidence_id);
|
|
process.stdout.write(
|
|
`${JSON.stringify({
|
|
verified: true,
|
|
serialized_value_bytes: count * encodedLeaf.length + count - 1 + 14,
|
|
engine_string_limit: constants.MAX_STRING_LENGTH,
|
|
evidence_id: evidence.evidence_id,
|
|
})}\n`,
|
|
);
|