@veraanchor/verifier 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/CONTRIBUTING.md +33 -0
- package/LICENSE +21 -0
- package/NOTICE +4 -0
- package/README.md +263 -2
- package/SECURITY.md +21 -0
- package/dist/cli/commandV1.d.ts +5 -0
- package/dist/cli/commandV1.d.ts.map +1 -0
- package/dist/cli/commandV1.js +440 -0
- package/dist/cli/commandV1.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +5 -0
- package/dist/cli.js.map +1 -0
- package/dist/contracts/verification.d.ts +77 -0
- package/dist/contracts/verification.d.ts.map +1 -0
- package/dist/contracts/verification.js +6 -0
- package/dist/contracts/verification.js.map +1 -0
- package/dist/crypto/sha3.d.ts +15 -0
- package/dist/crypto/sha3.d.ts.map +1 -0
- package/dist/crypto/sha3.js +27 -0
- package/dist/crypto/sha3.js.map +1 -0
- package/dist/crypto/streamSha3.d.ts +26 -0
- package/dist/crypto/streamSha3.d.ts.map +1 -0
- package/dist/crypto/streamSha3.js +52 -0
- package/dist/crypto/streamSha3.js.map +1 -0
- package/dist/hf/hashContractV1.d.ts +48 -0
- package/dist/hf/hashContractV1.d.ts.map +1 -0
- package/dist/hf/hashContractV1.js +185 -0
- package/dist/hf/hashContractV1.js.map +1 -0
- package/dist/index.d.ts +80 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -0
- package/dist/merkle/membership.d.ts +30 -0
- package/dist/merkle/membership.d.ts.map +1 -0
- package/dist/merkle/membership.js +105 -0
- package/dist/merkle/membership.js.map +1 -0
- package/dist/policy/contractV1.d.ts +37 -0
- package/dist/policy/contractV1.d.ts.map +1 -0
- package/dist/policy/contractV1.js +2 -0
- package/dist/policy/contractV1.js.map +1 -0
- package/dist/policy/evaluateV1.d.ts +24 -0
- package/dist/policy/evaluateV1.d.ts.map +1 -0
- package/dist/policy/evaluateV1.js +320 -0
- package/dist/policy/evaluateV1.js.map +1 -0
- package/dist/profiles/dataset/sourceV1.d.ts +22 -0
- package/dist/profiles/dataset/sourceV1.d.ts.map +1 -0
- package/dist/profiles/dataset/sourceV1.js +73 -0
- package/dist/profiles/dataset/sourceV1.js.map +1 -0
- package/dist/profiles/dataset/v1.d.ts +39 -0
- package/dist/profiles/dataset/v1.d.ts.map +1 -0
- package/dist/profiles/dataset/v1.js +362 -0
- package/dist/profiles/dataset/v1.js.map +1 -0
- package/dist/profiles/execution/contractV1.d.ts +279 -0
- package/dist/profiles/execution/contractV1.d.ts.map +1 -0
- package/dist/profiles/execution/contractV1.js +364 -0
- package/dist/profiles/execution/contractV1.js.map +1 -0
- package/dist/profiles/execution/independentStandardsV1.d.ts +44 -0
- package/dist/profiles/execution/independentStandardsV1.d.ts.map +1 -0
- package/dist/profiles/execution/independentStandardsV1.js +336 -0
- package/dist/profiles/execution/independentStandardsV1.js.map +1 -0
- package/dist/profiles/execution/reasonCodesV1.d.ts +30 -0
- package/dist/profiles/execution/reasonCodesV1.d.ts.map +1 -0
- package/dist/profiles/execution/reasonCodesV1.js +20 -0
- package/dist/profiles/execution/reasonCodesV1.js.map +1 -0
- package/dist/profiles/execution/recomputationV1.d.ts +11 -0
- package/dist/profiles/execution/recomputationV1.d.ts.map +1 -0
- package/dist/profiles/execution/recomputationV1.js +144 -0
- package/dist/profiles/execution/recomputationV1.js.map +1 -0
- package/dist/profiles/execution/rulesV1.d.ts +6 -0
- package/dist/profiles/execution/rulesV1.d.ts.map +1 -0
- package/dist/profiles/execution/rulesV1.js +855 -0
- package/dist/profiles/execution/rulesV1.js.map +1 -0
- package/dist/profiles/execution/standardsPlanV1.d.ts +18 -0
- package/dist/profiles/execution/standardsPlanV1.d.ts.map +1 -0
- package/dist/profiles/execution/standardsPlanV1.js +16 -0
- package/dist/profiles/execution/standardsPlanV1.js.map +1 -0
- package/dist/profiles/execution/verificationV1.d.ts +28 -0
- package/dist/profiles/execution/verificationV1.d.ts.map +1 -0
- package/dist/profiles/execution/verificationV1.js +188 -0
- package/dist/profiles/execution/verificationV1.js.map +1 -0
- package/dist/profiles/ingest/sourceV1.d.ts +36 -0
- package/dist/profiles/ingest/sourceV1.d.ts.map +1 -0
- package/dist/profiles/ingest/sourceV1.js +99 -0
- package/dist/profiles/ingest/sourceV1.js.map +1 -0
- package/dist/profiles/ingest/v1.d.ts +65 -0
- package/dist/profiles/ingest/v1.d.ts.map +1 -0
- package/dist/profiles/ingest/v1.js +477 -0
- package/dist/profiles/ingest/v1.js.map +1 -0
- package/dist/profiles/sourceV1Helpers.d.ts +48 -0
- package/dist/profiles/sourceV1Helpers.d.ts.map +1 -0
- package/dist/profiles/sourceV1Helpers.js +141 -0
- package/dist/profiles/sourceV1Helpers.js.map +1 -0
- package/dist/reports/coreV1.d.ts +7 -0
- package/dist/reports/coreV1.d.ts.map +1 -0
- package/dist/reports/coreV1.js +195 -0
- package/dist/reports/coreV1.js.map +1 -0
- package/dist/reports/portableV1.d.ts +48 -0
- package/dist/reports/portableV1.d.ts.map +1 -0
- package/dist/reports/portableV1.js +279 -0
- package/dist/reports/portableV1.js.map +1 -0
- package/dist/reports/validationV1.d.ts +19 -0
- package/dist/reports/validationV1.d.ts.map +1 -0
- package/dist/reports/validationV1.js +441 -0
- package/dist/reports/validationV1.js.map +1 -0
- package/dist/resolvers/executionMirrorV1.d.ts +15 -0
- package/dist/resolvers/executionMirrorV1.d.ts.map +1 -0
- package/dist/resolvers/executionMirrorV1.js +206 -0
- package/dist/resolvers/executionMirrorV1.js.map +1 -0
- package/dist/resolvers/explorerExecutionV1.d.ts +17 -0
- package/dist/resolvers/explorerExecutionV1.d.ts.map +1 -0
- package/dist/resolvers/explorerExecutionV1.js +61 -0
- package/dist/resolvers/explorerExecutionV1.js.map +1 -0
- package/dist/resolvers/explorerPublicV1.d.ts +37 -0
- package/dist/resolvers/explorerPublicV1.d.ts.map +1 -0
- package/dist/resolvers/explorerPublicV1.js +210 -0
- package/dist/resolvers/explorerPublicV1.js.map +1 -0
- package/dist/resolvers/explorerPublicationV1.d.ts +20 -0
- package/dist/resolvers/explorerPublicationV1.d.ts.map +1 -0
- package/dist/resolvers/explorerPublicationV1.js +195 -0
- package/dist/resolvers/explorerPublicationV1.js.map +1 -0
- package/dist/resolvers/explorerTransportV1.d.ts +17 -0
- package/dist/resolvers/explorerTransportV1.d.ts.map +1 -0
- package/dist/resolvers/explorerTransportV1.js +112 -0
- package/dist/resolvers/explorerTransportV1.js.map +1 -0
- package/dist/resolvers/hcs11MirrorV1.d.ts +49 -0
- package/dist/resolvers/hcs11MirrorV1.d.ts.map +1 -0
- package/dist/resolvers/hcs11MirrorV1.js +293 -0
- package/dist/resolvers/hcs11MirrorV1.js.map +1 -0
- package/dist/resolvers/hcs13MirrorV1.d.ts +35 -0
- package/dist/resolvers/hcs13MirrorV1.d.ts.map +1 -0
- package/dist/resolvers/hcs13MirrorV1.js +72 -0
- package/dist/resolvers/hcs13MirrorV1.js.map +1 -0
- package/dist/resolvers/hcs1MirrorV1.d.ts +28 -0
- package/dist/resolvers/hcs1MirrorV1.d.ts.map +1 -0
- package/dist/resolvers/hcs1MirrorV1.js +220 -0
- package/dist/resolvers/hcs1MirrorV1.js.map +1 -0
- package/dist/resolvers/hcs26MirrorV1.d.ts +67 -0
- package/dist/resolvers/hcs26MirrorV1.d.ts.map +1 -0
- package/dist/resolvers/hcs26MirrorV1.js +218 -0
- package/dist/resolvers/hcs26MirrorV1.js.map +1 -0
- package/dist/resolvers/hcs26RegistryMirrorV1.d.ts +26 -0
- package/dist/resolvers/hcs26RegistryMirrorV1.d.ts.map +1 -0
- package/dist/resolvers/hcs26RegistryMirrorV1.js +200 -0
- package/dist/resolvers/hcs26RegistryMirrorV1.js.map +1 -0
- package/dist/resolvers/hcs2MirrorV1.d.ts +26 -0
- package/dist/resolvers/hcs2MirrorV1.d.ts.map +1 -0
- package/dist/resolvers/hcs2MirrorV1.js +196 -0
- package/dist/resolvers/hcs2MirrorV1.js.map +1 -0
- package/dist/resolvers/hederaMirrorV1.d.ts +22 -0
- package/dist/resolvers/hederaMirrorV1.d.ts.map +1 -0
- package/dist/resolvers/hederaMirrorV1.js +338 -0
- package/dist/resolvers/hederaMirrorV1.js.map +1 -0
- package/dist/standards/hcs/hcs11V1.d.ts +51 -0
- package/dist/standards/hcs/hcs11V1.d.ts.map +1 -0
- package/dist/standards/hcs/hcs11V1.js +289 -0
- package/dist/standards/hcs/hcs11V1.js.map +1 -0
- package/dist/standards/hcs/hcs13V1.d.ts +39 -0
- package/dist/standards/hcs/hcs13V1.d.ts.map +1 -0
- package/dist/standards/hcs/hcs13V1.js +114 -0
- package/dist/standards/hcs/hcs13V1.js.map +1 -0
- package/dist/standards/hcs/hcs14V1.d.ts +35 -0
- package/dist/standards/hcs/hcs14V1.d.ts.map +1 -0
- package/dist/standards/hcs/hcs14V1.js +168 -0
- package/dist/standards/hcs/hcs14V1.js.map +1 -0
- package/dist/standards/hcs/hcs1V1.d.ts +30 -0
- package/dist/standards/hcs/hcs1V1.d.ts.map +1 -0
- package/dist/standards/hcs/hcs1V1.js +140 -0
- package/dist/standards/hcs/hcs1V1.js.map +1 -0
- package/dist/standards/hcs/hcs26V1.d.ts +58 -0
- package/dist/standards/hcs/hcs26V1.d.ts.map +1 -0
- package/dist/standards/hcs/hcs26V1.js +339 -0
- package/dist/standards/hcs/hcs26V1.js.map +1 -0
- package/dist/standards/hcs/hcs2V1.d.ts +36 -0
- package/dist/standards/hcs/hcs2V1.d.ts.map +1 -0
- package/dist/standards/hcs/hcs2V1.js +181 -0
- package/dist/standards/hcs/hcs2V1.js.map +1 -0
- package/dist/standards/hcs/jsonCanonicalV1.d.ts +15 -0
- package/dist/standards/hcs/jsonCanonicalV1.d.ts.map +1 -0
- package/dist/standards/hcs/jsonCanonicalV1.js +160 -0
- package/dist/standards/hcs/jsonCanonicalV1.js.map +1 -0
- package/dist/triangulation/compareV1.d.ts +50 -0
- package/dist/triangulation/compareV1.d.ts.map +1 -0
- package/dist/triangulation/compareV1.js +236 -0
- package/dist/triangulation/compareV1.js.map +1 -0
- package/dist/triangulation/executionPlanV1.d.ts +39 -0
- package/dist/triangulation/executionPlanV1.d.ts.map +1 -0
- package/dist/triangulation/executionPlanV1.js +208 -0
- package/dist/triangulation/executionPlanV1.js.map +1 -0
- package/dist/triangulation/executionPublicV1.d.ts +22 -0
- package/dist/triangulation/executionPublicV1.d.ts.map +1 -0
- package/dist/triangulation/executionPublicV1.js +39 -0
- package/dist/triangulation/executionPublicV1.js.map +1 -0
- package/dist/triangulation/messageObservationV1.d.ts +26 -0
- package/dist/triangulation/messageObservationV1.d.ts.map +1 -0
- package/dist/triangulation/messageObservationV1.js +69 -0
- package/dist/triangulation/messageObservationV1.js.map +1 -0
- package/dist/triangulation/publicV1.d.ts +29 -0
- package/dist/triangulation/publicV1.d.ts.map +1 -0
- package/dist/triangulation/publicV1.js +170 -0
- package/dist/triangulation/publicV1.js.map +1 -0
- package/dist/verification/sourceIntentV1.d.ts +15 -0
- package/dist/verification/sourceIntentV1.d.ts.map +1 -0
- package/dist/verification/sourceIntentV1.js +206 -0
- package/dist/verification/sourceIntentV1.js.map +1 -0
- package/docs/cli-v0.1.md +237 -0
- package/docs/conformance.md +38 -0
- package/docs/threat-model.md +37 -0
- package/docs/verification-semantics.md +65 -0
- package/examples/README.md +35 -0
- package/examples/dataset-offline.mjs +58 -0
- package/examples/dataset-policy.mjs +59 -0
- package/package.json +65 -4
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
import { sha3_512Hex } from "../crypto/sha3.js";
|
|
2
|
+
import { canonicalizeVerificationCoreV1, computeVerificationCoreDigestV1 } from "./coreV1.js";
|
|
3
|
+
import { PORTABLE_VERIFICATION_REPORT_SCHEMA_VERSION } from "./portableV1.js";
|
|
4
|
+
const DOMAIN = "va:portable-verification-report:v1";
|
|
5
|
+
const MAX_BYTES = 1024 * 1024;
|
|
6
|
+
const TOPIC = /^0\.0\.[0-9]+$/;
|
|
7
|
+
const TRANSACTION = /^0\.0\.[0-9]+@[0-9]{1,12}\.[0-9]{9}$/;
|
|
8
|
+
const MAX_DEPTH = 32;
|
|
9
|
+
const MAX_NODES = 65_536;
|
|
10
|
+
const DIGEST = /^[0-9a-f]{128}$/;
|
|
11
|
+
const SHA256 = /^[0-9a-f]{64}$/;
|
|
12
|
+
const ID = /^[a-z][a-z0-9._:-]{0,159}$/;
|
|
13
|
+
const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
14
|
+
const OUTCOMES = ["pass", "fail", "indeterminate", "unsupported", "skipped"];
|
|
15
|
+
const KINDS = ["verification", "execution", "independent_standards", "public_triangulation", "execution_triangulation"];
|
|
16
|
+
const RESOLUTION = ["resolved", "not_found", "unavailable", "invalid", "conflict", "verification_material_unavailable", "unsupported"];
|
|
17
|
+
const RELATIONSHIPS = ["provided_public_record", "public_record_hedera", "provided_hedera"];
|
|
18
|
+
function object(value, name) {
|
|
19
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
20
|
+
throw new TypeError(`Invalid ${name}`);
|
|
21
|
+
}
|
|
22
|
+
return value;
|
|
23
|
+
}
|
|
24
|
+
function shape(value, name, keys) {
|
|
25
|
+
const row = object(value, name);
|
|
26
|
+
const actual = Object.keys(row);
|
|
27
|
+
if (actual.length !== keys.length || actual.some((key) => !keys.includes(key))) {
|
|
28
|
+
throw new TypeError(`Invalid ${name} fields`);
|
|
29
|
+
}
|
|
30
|
+
return row;
|
|
31
|
+
}
|
|
32
|
+
function array(value, name, limit) {
|
|
33
|
+
if (!Array.isArray(value) || value.length > limit)
|
|
34
|
+
throw new TypeError(`Invalid ${name}`);
|
|
35
|
+
return value;
|
|
36
|
+
}
|
|
37
|
+
function string(value, name, max = 256) {
|
|
38
|
+
if (typeof value !== "string" || !value || value.length > max || value.trim() !== value) {
|
|
39
|
+
throw new TypeError(`Invalid ${name}`);
|
|
40
|
+
}
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
function maybeString(value, name, max = 256) {
|
|
44
|
+
if (value !== null)
|
|
45
|
+
string(value, name, max);
|
|
46
|
+
}
|
|
47
|
+
function oneOf(value, name, allowed) {
|
|
48
|
+
if (typeof value !== "string" || !allowed.includes(value))
|
|
49
|
+
throw new TypeError(`Invalid ${name}`);
|
|
50
|
+
return value;
|
|
51
|
+
}
|
|
52
|
+
function identifier(value, name) {
|
|
53
|
+
const result = string(value, name, 160);
|
|
54
|
+
if (!ID.test(result))
|
|
55
|
+
throw new TypeError(`Invalid ${name}`);
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
function hash(value, name, re = DIGEST) {
|
|
59
|
+
if (typeof value !== "string" || !re.test(value))
|
|
60
|
+
throw new TypeError(`Invalid ${name}`);
|
|
61
|
+
return value;
|
|
62
|
+
}
|
|
63
|
+
function cloneJson(value) {
|
|
64
|
+
let nodes = 0;
|
|
65
|
+
const ancestors = new Set();
|
|
66
|
+
const visit = (entry, depth) => {
|
|
67
|
+
if (++nodes > MAX_NODES || depth > MAX_DEPTH)
|
|
68
|
+
throw new RangeError("Portable report exceeds resource limit");
|
|
69
|
+
if (entry === null || typeof entry === "boolean")
|
|
70
|
+
return entry;
|
|
71
|
+
if (typeof entry === "number") {
|
|
72
|
+
if (!Number.isFinite(entry) || Object.is(entry, -0))
|
|
73
|
+
throw new TypeError("Invalid portable report number");
|
|
74
|
+
return entry;
|
|
75
|
+
}
|
|
76
|
+
if (typeof entry === "string") {
|
|
77
|
+
if (entry.length > MAX_BYTES || /[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/u.test(entry)) {
|
|
78
|
+
throw new TypeError("Invalid portable report string");
|
|
79
|
+
}
|
|
80
|
+
return entry;
|
|
81
|
+
}
|
|
82
|
+
if (!entry || typeof entry !== "object")
|
|
83
|
+
throw new TypeError("Invalid portable report JSON value");
|
|
84
|
+
if (ancestors.has(entry))
|
|
85
|
+
throw new TypeError("Cyclic portable report");
|
|
86
|
+
ancestors.add(entry);
|
|
87
|
+
try {
|
|
88
|
+
if (Array.isArray(entry)) {
|
|
89
|
+
if (entry.length > 512)
|
|
90
|
+
throw new RangeError("Portable report array exceeds limit");
|
|
91
|
+
return Array.from({ length: entry.length }, (_, i) => {
|
|
92
|
+
if (!Object.hasOwn(entry, i))
|
|
93
|
+
throw new TypeError("Sparse portable report array");
|
|
94
|
+
const descriptor = Object.getOwnPropertyDescriptor(entry, String(i));
|
|
95
|
+
if (!descriptor || !("value" in descriptor))
|
|
96
|
+
throw new TypeError("Accessor in portable report");
|
|
97
|
+
return visit(descriptor.value, depth + 1);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
const proto = Object.getPrototypeOf(entry);
|
|
101
|
+
if (proto !== Object.prototype && proto !== null)
|
|
102
|
+
throw new TypeError("Invalid portable report object");
|
|
103
|
+
const keys = Object.keys(entry).sort();
|
|
104
|
+
if (keys.length > 512)
|
|
105
|
+
throw new RangeError("Portable report object exceeds limit");
|
|
106
|
+
const pairs = [];
|
|
107
|
+
for (const key of keys) {
|
|
108
|
+
if (!key || key.length > 160 || /[\u0000-\u001f\u007f]/.test(key))
|
|
109
|
+
throw new TypeError("Invalid portable report field");
|
|
110
|
+
const descriptor = Object.getOwnPropertyDescriptor(entry, key);
|
|
111
|
+
if (!descriptor || !("value" in descriptor))
|
|
112
|
+
throw new TypeError("Accessor in portable report");
|
|
113
|
+
pairs.push([key, visit(descriptor.value, depth + 1)]);
|
|
114
|
+
}
|
|
115
|
+
return Object.fromEntries(pairs);
|
|
116
|
+
}
|
|
117
|
+
finally {
|
|
118
|
+
ancestors.delete(entry);
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
const copy = visit(value, 0);
|
|
122
|
+
// The on-disk envelope adds one digest field to the bounded canonical base.
|
|
123
|
+
if (Buffer.byteLength(JSON.stringify(copy), "utf8") > MAX_BYTES + 256) {
|
|
124
|
+
throw new RangeError("Portable report exceeds size limit");
|
|
125
|
+
}
|
|
126
|
+
return copy;
|
|
127
|
+
}
|
|
128
|
+
function finding(report, id, outcome, reason) {
|
|
129
|
+
const match = report.findings.find((f) => f.check_id === id);
|
|
130
|
+
if (!match || match.outcome !== outcome || (reason !== undefined && match.reason_code !== reason)) {
|
|
131
|
+
throw new TypeError(`Inconsistent portable finding: ${id}`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function scope(value, report) {
|
|
135
|
+
const row = shape(value, "execution scope", ["profile", "expected_program", "requested_result_id"]);
|
|
136
|
+
if (report.intent.subject.kind !== "execution" || !report.intent.subject.hedera_network) {
|
|
137
|
+
throw new TypeError("Invalid execution report subject");
|
|
138
|
+
}
|
|
139
|
+
const profile = oneOf(row.profile, "execution profile", ["execution-v1", "sage-standards-v1"]);
|
|
140
|
+
maybeString(row.expected_program, "expected program", 128);
|
|
141
|
+
if (row.requested_result_id !== null) {
|
|
142
|
+
if (!UUID.test(string(row.requested_result_id, "result ID", 64)))
|
|
143
|
+
throw new TypeError("Invalid result ID");
|
|
144
|
+
const selected = report.findings.some((f) => f.check_id === "intent.result");
|
|
145
|
+
if (!selected)
|
|
146
|
+
throw new TypeError("Missing result-scope finding");
|
|
147
|
+
}
|
|
148
|
+
if (profile === "execution-v1" && row.expected_program === null) {
|
|
149
|
+
throw new TypeError("Generic execution requires an expected program");
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
function standards(value, report) {
|
|
153
|
+
const row = shape(value, "independent standards", ["network", "status", "assurance", "items"]);
|
|
154
|
+
if (row.network !== report.intent.subject.hedera_network)
|
|
155
|
+
throw new TypeError("Standards network mismatch");
|
|
156
|
+
const state = oneOf(row.status, "standards status", ["verified", "failed", "unavailable", "not_performed"]);
|
|
157
|
+
const assurance = oneOf(row.assurance, "standards assurance", ["mirror_corroborated", "not_established"]);
|
|
158
|
+
const items = array(row.items, "standards items", 16);
|
|
159
|
+
const seen = new Set();
|
|
160
|
+
let anyFailed = false;
|
|
161
|
+
let allResolved = items.length > 0;
|
|
162
|
+
items.forEach((item, index) => {
|
|
163
|
+
const part = shape(item, "standards item", ["key", "standard", "reference", "status", "reason_code",
|
|
164
|
+
"resolver_id", "historical_consensus_timestamps_exact", "current_topic_or_account_memo_observed",
|
|
165
|
+
"content_sha256", "assurance"]);
|
|
166
|
+
const key = string(part.key, "standards key");
|
|
167
|
+
if (seen.has(key))
|
|
168
|
+
throw new TypeError("Duplicate standards key");
|
|
169
|
+
seen.add(key);
|
|
170
|
+
string(part.standard, "standard", 128);
|
|
171
|
+
string(part.reference, "standards reference", 256);
|
|
172
|
+
maybeString(part.reason_code, "standards reason", 160);
|
|
173
|
+
maybeString(part.resolver_id, "resolver ID", 256);
|
|
174
|
+
if (typeof part.current_topic_or_account_memo_observed !== "boolean")
|
|
175
|
+
throw new TypeError("Invalid memo observation");
|
|
176
|
+
if (part.content_sha256 !== null)
|
|
177
|
+
hash(part.content_sha256, "standards content digest", SHA256);
|
|
178
|
+
const status = oneOf(part.status, "standards item status", ["resolved", "conflict", "invalid", "unavailable", "unsupported"]);
|
|
179
|
+
const times = array(part.historical_consensus_timestamps_exact, "historical timestamps", 16);
|
|
180
|
+
times.forEach((time) => string(time, "historical timestamp", 128));
|
|
181
|
+
if (part.assurance !== (status === "resolved" ? "mirror_corroborated" : "not_established")) {
|
|
182
|
+
throw new TypeError("Inconsistent standards assurance");
|
|
183
|
+
}
|
|
184
|
+
anyFailed ||= status === "conflict" || status === "invalid";
|
|
185
|
+
allResolved &&= status === "resolved";
|
|
186
|
+
const expected = status === "resolved" ? "pass" :
|
|
187
|
+
status === "conflict" || status === "invalid" ? "fail" :
|
|
188
|
+
status === "unsupported" ? "unsupported" : "indeterminate";
|
|
189
|
+
finding(report, `standards.reference.${index}`, expected);
|
|
190
|
+
});
|
|
191
|
+
const expected = anyFailed ? "failed" : allResolved ? "verified" : items.length === 0 ? "not_performed" : "unavailable";
|
|
192
|
+
if (state !== expected || assurance !== (state === "verified" ? "mirror_corroborated" : "not_established")) {
|
|
193
|
+
throw new TypeError("Inconsistent standards summary");
|
|
194
|
+
}
|
|
195
|
+
finding(report, "standards.references_resolved", state === "verified" ? "pass" : state === "failed" ? "fail" : "indeterminate");
|
|
196
|
+
}
|
|
197
|
+
function relationships(value, report) {
|
|
198
|
+
const entries = array(value, "triangulation relationships", 3);
|
|
199
|
+
const seen = new Set();
|
|
200
|
+
for (const item of entries) {
|
|
201
|
+
const rel = shape(item, "triangulation relationship", ["id", "status", "fact_comparisons"]);
|
|
202
|
+
const id = oneOf(rel.id, "triangulation relationship ID", RELATIONSHIPS);
|
|
203
|
+
if (seen.has(id))
|
|
204
|
+
throw new TypeError("Duplicate triangulation relationship");
|
|
205
|
+
seen.add(id);
|
|
206
|
+
const state = oneOf(rel.status, "relationship status", ["consistent", "conflict", "incomplete", "not_applicable"]);
|
|
207
|
+
const facts = array(rel.fact_comparisons, "fact comparisons", 64);
|
|
208
|
+
const keys = new Set();
|
|
209
|
+
const outcomes = [];
|
|
210
|
+
for (const comparison of facts) {
|
|
211
|
+
const row = shape(comparison, "fact comparison", ["key", "outcome", "reason_code"]);
|
|
212
|
+
const key = identifier(row.key, "comparison key");
|
|
213
|
+
if (keys.has(key))
|
|
214
|
+
throw new TypeError("Duplicate comparison key");
|
|
215
|
+
keys.add(key);
|
|
216
|
+
const outcome = oneOf(row.outcome, "comparison outcome", OUTCOMES);
|
|
217
|
+
if (row.reason_code !== null)
|
|
218
|
+
string(row.reason_code, "comparison reason", 160);
|
|
219
|
+
outcomes.push(outcome);
|
|
220
|
+
finding(report, `triangulation.${id}.${key}`, outcome, row.reason_code);
|
|
221
|
+
}
|
|
222
|
+
const aggregate = outcomes.length === 0 || outcomes.every((o) => o === "skipped") ? "not_applicable" :
|
|
223
|
+
outcomes.includes("fail") ? "conflict" :
|
|
224
|
+
outcomes.some((o) => o === "indeterminate" || o === "unsupported") ? "incomplete" : "consistent";
|
|
225
|
+
if (state !== aggregate)
|
|
226
|
+
throw new TypeError("Inconsistent triangulation relationship");
|
|
227
|
+
}
|
|
228
|
+
return entries;
|
|
229
|
+
}
|
|
230
|
+
function consistency(value, rels) {
|
|
231
|
+
const state = oneOf(value, "triangulation consistency", ["consistent", "conflict", "incomplete"]);
|
|
232
|
+
if (state === "consistent" && (rels.length === 0 || rels.some((rel) => object(rel, "relationship").status !== "consistent"))) {
|
|
233
|
+
throw new TypeError("Incomplete triangulation cannot be consistent");
|
|
234
|
+
}
|
|
235
|
+
return state;
|
|
236
|
+
}
|
|
237
|
+
function publicExecution(value, resolved) {
|
|
238
|
+
const keys = ["status", "reason_code", "public_record_acquisition", "hedera_resolution"];
|
|
239
|
+
if (resolved)
|
|
240
|
+
keys.push("mirror_status", "mirror_reason_code");
|
|
241
|
+
const row = shape(value, "public execution", keys);
|
|
242
|
+
const status = oneOf(row.status, "execution resolution status", RESOLUTION);
|
|
243
|
+
oneOf(row.public_record_acquisition, "public record acquisition", RESOLUTION);
|
|
244
|
+
if (row.reason_code !== null)
|
|
245
|
+
string(row.reason_code, "execution reason", 160);
|
|
246
|
+
if (resolved) {
|
|
247
|
+
if (row.public_record_acquisition !== "resolved")
|
|
248
|
+
throw new TypeError("Unresolved execution acquisition");
|
|
249
|
+
const mirror = oneOf(row.mirror_status, "Mirror status", RESOLUTION);
|
|
250
|
+
if (row.hedera_resolution !== mirror)
|
|
251
|
+
throw new TypeError("Mirror status mismatch");
|
|
252
|
+
if (row.mirror_reason_code !== null)
|
|
253
|
+
string(row.mirror_reason_code, "Mirror reason", 160);
|
|
254
|
+
if (status === "not_found" && mirror === "resolved")
|
|
255
|
+
throw new TypeError("Inconsistent execution status");
|
|
256
|
+
}
|
|
257
|
+
else if (row.public_record_acquisition === "resolved" || row.hedera_resolution !== "not_checked" ||
|
|
258
|
+
status !== row.public_record_acquisition) {
|
|
259
|
+
throw new TypeError("Invalid unresolved execution status");
|
|
260
|
+
}
|
|
261
|
+
return row;
|
|
262
|
+
}
|
|
263
|
+
function planRelationships(value) {
|
|
264
|
+
const rows = array(value, "triangulation plan relationships", 3);
|
|
265
|
+
const ids = new Set();
|
|
266
|
+
for (const value of rows) {
|
|
267
|
+
const item = shape(value, "relationship plan", ["id", "left_observation_id", "right_observation_id", "comparisons"]);
|
|
268
|
+
const id = oneOf(item.id, "plan relationship ID", RELATIONSHIPS);
|
|
269
|
+
if (ids.has(id))
|
|
270
|
+
throw new TypeError("Duplicate plan relationship");
|
|
271
|
+
ids.add(id);
|
|
272
|
+
const leftId = identifier(item.left_observation_id, "left observation ID");
|
|
273
|
+
const rightId = identifier(item.right_observation_id, "right observation ID");
|
|
274
|
+
if (leftId === rightId)
|
|
275
|
+
throw new TypeError("Self-referential plan relationship");
|
|
276
|
+
const keys = new Set();
|
|
277
|
+
for (const part of array(item.comparisons, "planned comparisons", 64)) {
|
|
278
|
+
const comparison = shape(part, "comparison plan", ["key", "left_key", "right_key"]);
|
|
279
|
+
const key = identifier(comparison.key, "plan comparison key");
|
|
280
|
+
if (keys.has(key))
|
|
281
|
+
throw new TypeError("Duplicate planned comparison");
|
|
282
|
+
keys.add(key);
|
|
283
|
+
identifier(comparison.left_key, "planned left key");
|
|
284
|
+
identifier(comparison.right_key, "planned right key");
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
function executionTargets(value, report) {
|
|
289
|
+
for (const targetValue of array(value, "Hedera targets", 64)) {
|
|
290
|
+
const target = shape(targetValue, "Hedera target", ["source", "role", "network", "transaction_id", "topic_id", "sequence_number", "observation_fact_prefix"]);
|
|
291
|
+
oneOf(target.source, "target source", ["provided_evidence", "public_record"]);
|
|
292
|
+
oneOf(target.role, "target role", ["acceptance_anchor", "result_evidence_anchor"]);
|
|
293
|
+
if (target.network !== report.intent.subject.hedera_network)
|
|
294
|
+
throw new TypeError("Target network mismatch");
|
|
295
|
+
maybeString(target.transaction_id, "target transaction", 128);
|
|
296
|
+
maybeString(target.topic_id, "target topic", 64);
|
|
297
|
+
if (target.transaction_id !== null && !TRANSACTION.test(target.transaction_id)) {
|
|
298
|
+
throw new TypeError("Invalid Hedera transaction locator");
|
|
299
|
+
}
|
|
300
|
+
if (target.topic_id !== null && !TOPIC.test(target.topic_id)) {
|
|
301
|
+
throw new TypeError("Invalid Hedera topic locator");
|
|
302
|
+
}
|
|
303
|
+
if ((target.topic_id === null) !== (target.sequence_number === null) ||
|
|
304
|
+
(target.topic_id === null && target.transaction_id === null)) {
|
|
305
|
+
throw new TypeError("Incomplete Hedera target locator");
|
|
306
|
+
}
|
|
307
|
+
if (target.sequence_number !== null && (!Number.isSafeInteger(target.sequence_number) ||
|
|
308
|
+
target.sequence_number < 1))
|
|
309
|
+
throw new TypeError("Invalid target sequence");
|
|
310
|
+
const prefix = identifier(target.observation_fact_prefix, "target observation prefix");
|
|
311
|
+
if (prefix !== `ledger.${target.source}.${target.role}`) {
|
|
312
|
+
throw new TypeError("Invalid target observation prefix");
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
function context(kind, value, report) {
|
|
317
|
+
const row = object(value, "portable report context");
|
|
318
|
+
if (kind === "verification") {
|
|
319
|
+
shape(value, "verification context", []);
|
|
320
|
+
if (report.intent.subject.kind === "execution")
|
|
321
|
+
throw new TypeError("Execution requires scoped report");
|
|
322
|
+
}
|
|
323
|
+
else if (kind === "execution") {
|
|
324
|
+
shape(value, "execution context", ["verification_scope"]);
|
|
325
|
+
scope(row.verification_scope, report);
|
|
326
|
+
}
|
|
327
|
+
else if (kind === "independent_standards") {
|
|
328
|
+
shape(value, "standards context", ["verification_scope", "independent_standards"]);
|
|
329
|
+
scope(row.verification_scope, report);
|
|
330
|
+
standards(row.independent_standards, report);
|
|
331
|
+
}
|
|
332
|
+
else if (kind === "public_triangulation") {
|
|
333
|
+
shape(value, "public triangulation context", ["consistency", "relationships", "resolution"]);
|
|
334
|
+
if (report.intent.subject.kind !== "dataset" && report.intent.subject.kind !== "ingest") {
|
|
335
|
+
throw new TypeError("Invalid public triangulation subject");
|
|
336
|
+
}
|
|
337
|
+
const rels = relationships(row.relationships, report);
|
|
338
|
+
consistency(row.consistency, rels);
|
|
339
|
+
const resolution = shape(row.resolution, "public resolution", ["public_record", "publication_disclosure", "hedera_mirror"]);
|
|
340
|
+
oneOf(resolution.public_record, "public record status", RESOLUTION);
|
|
341
|
+
oneOf(resolution.publication_disclosure, "publication disclosure status", RESOLUTION);
|
|
342
|
+
oneOf(resolution.hedera_mirror, "Hedera Mirror status", [...RESOLUTION, "not_requested"]);
|
|
343
|
+
}
|
|
344
|
+
else if (kind === "execution_triangulation") {
|
|
345
|
+
if (report.intent.subject.kind !== "execution")
|
|
346
|
+
throw new TypeError("Invalid execution triangulation subject");
|
|
347
|
+
const resolved = Object.hasOwn(row, "triangulation");
|
|
348
|
+
const keys = resolved ? ["verification_scope", "source_core_sha3_512", "public_execution", "triangulation"] :
|
|
349
|
+
["verification_scope", "public_execution"];
|
|
350
|
+
shape(value, "execution triangulation context", keys);
|
|
351
|
+
scope(row.verification_scope, report);
|
|
352
|
+
const pub = publicExecution(row.public_execution, resolved);
|
|
353
|
+
if (resolved) {
|
|
354
|
+
hash(row.source_core_sha3_512, "source core digest");
|
|
355
|
+
const tri = shape(row.triangulation, "execution triangulation", ["consistency", "relationships", "targets", "plan_relationships"]);
|
|
356
|
+
const rels = relationships(tri.relationships, report);
|
|
357
|
+
consistency(tri.consistency, rels);
|
|
358
|
+
executionTargets(tri.targets, report);
|
|
359
|
+
planRelationships(tri.plan_relationships);
|
|
360
|
+
const resolvedStatus = tri.consistency === "conflict" || pub.mirror_status === "conflict" ? "conflict" : pub.mirror_status;
|
|
361
|
+
if (pub.status !== resolvedStatus)
|
|
362
|
+
throw new TypeError("Inconsistent resolved execution status");
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
else {
|
|
366
|
+
throw new TypeError("Unsupported portable report kind");
|
|
367
|
+
}
|
|
368
|
+
return row;
|
|
369
|
+
}
|
|
370
|
+
function checked(value) {
|
|
371
|
+
const clone = object(cloneJson(value), "portable report");
|
|
372
|
+
shape(clone, "portable report", ["schema_version", "kind", "core_sha3_512", "report_sha3_512", "core", "context"]);
|
|
373
|
+
if (clone.schema_version !== PORTABLE_VERIFICATION_REPORT_SCHEMA_VERSION)
|
|
374
|
+
throw new TypeError("Unsupported portable report version");
|
|
375
|
+
const kind = oneOf(clone.kind, "portable report kind", KINDS);
|
|
376
|
+
const coreHash = hash(clone.core_sha3_512, "core digest");
|
|
377
|
+
const reportHash = hash(clone.report_sha3_512, "report digest");
|
|
378
|
+
const core = shape(clone.core, "portable core", ["schema_version", "intent", "findings", "observations"]);
|
|
379
|
+
const expectedCore = JSON.parse(canonicalizeVerificationCoreV1(core));
|
|
380
|
+
if (JSON.stringify(core) !== JSON.stringify(cloneJson(expectedCore))) {
|
|
381
|
+
throw new TypeError("Noncanonical portable core");
|
|
382
|
+
}
|
|
383
|
+
const computedCore = computeVerificationCoreDigestV1(core);
|
|
384
|
+
if (computedCore !== coreHash)
|
|
385
|
+
throw new DigestError("PORTABLE_CORE_DIGEST_MISMATCH");
|
|
386
|
+
const report = core;
|
|
387
|
+
const ctx = context(kind, clone.context, report);
|
|
388
|
+
const base = Object.fromEntries(Object.entries(clone).filter(([key]) => key !== "report_sha3_512"));
|
|
389
|
+
const serialized = JSON.stringify(base);
|
|
390
|
+
if (Buffer.byteLength(serialized, "utf8") > MAX_BYTES)
|
|
391
|
+
throw new RangeError("Portable report exceeds size limit");
|
|
392
|
+
const digest = sha3_512Hex(Buffer.concat([Buffer.from(DOMAIN, "utf8"), Buffer.from([0]), Buffer.from(serialized, "utf8")]));
|
|
393
|
+
if (digest !== reportHash)
|
|
394
|
+
throw new DigestError("PORTABLE_REPORT_DIGEST_MISMATCH");
|
|
395
|
+
return { kind, core, context: ctx, serialized };
|
|
396
|
+
}
|
|
397
|
+
class DigestError extends Error {
|
|
398
|
+
code;
|
|
399
|
+
constructor(code) {
|
|
400
|
+
super(code);
|
|
401
|
+
this.code = code;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
/** Checks only saved-document structure and self-consistency, never evidence authenticity. */
|
|
405
|
+
export function validatePortableVerificationReportV1(value) {
|
|
406
|
+
try {
|
|
407
|
+
checked(value);
|
|
408
|
+
return Object.freeze({ status: "valid", reason_code: null,
|
|
409
|
+
authenticity: "not_checked", evidence_recomputation: "not_performed" });
|
|
410
|
+
}
|
|
411
|
+
catch (error) {
|
|
412
|
+
if (!(error instanceof TypeError || error instanceof RangeError || error instanceof DigestError))
|
|
413
|
+
throw error;
|
|
414
|
+
return Object.freeze({ status: "invalid",
|
|
415
|
+
reason_code: error instanceof DigestError ? error.code : "PORTABLE_REPORT_INVALID",
|
|
416
|
+
authenticity: "not_checked", evidence_recomputation: "not_performed" });
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
/** Compares internally valid saved documents. Throws on invalid input; does not authenticate either report. */
|
|
420
|
+
export function comparePortableVerificationReportsV1(left, right) {
|
|
421
|
+
const a = checked(left);
|
|
422
|
+
const b = checked(right);
|
|
423
|
+
const differences = [];
|
|
424
|
+
if (a.kind !== b.kind)
|
|
425
|
+
differences.push("kind");
|
|
426
|
+
const leftIntent = object(a.core.intent, "left intent");
|
|
427
|
+
const rightIntent = object(b.core.intent, "right intent");
|
|
428
|
+
if (JSON.stringify(leftIntent.subject) !== JSON.stringify(rightIntent.subject))
|
|
429
|
+
differences.push("subject");
|
|
430
|
+
if (JSON.stringify(leftIntent) !== JSON.stringify(rightIntent))
|
|
431
|
+
differences.push("intent");
|
|
432
|
+
if (JSON.stringify(a.core.findings) !== JSON.stringify(b.core.findings))
|
|
433
|
+
differences.push("findings");
|
|
434
|
+
if (JSON.stringify(a.core.observations) !== JSON.stringify(b.core.observations))
|
|
435
|
+
differences.push("observations");
|
|
436
|
+
if (JSON.stringify(a.context) !== JSON.stringify(b.context))
|
|
437
|
+
differences.push("context");
|
|
438
|
+
return Object.freeze({ status: a.serialized === b.serialized ? "equivalent" : "different",
|
|
439
|
+
differences: Object.freeze(differences), authenticity: "not_checked", evidence_recomputation: "not_performed" });
|
|
440
|
+
}
|
|
441
|
+
//# sourceMappingURL=validationV1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validationV1.js","sourceRoot":"","sources":["../../src/reports/validationV1.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { VerificationObservation, VerificationSubject } from "../contracts/verification.js";
|
|
2
|
+
import type { HederaMirrorV1Config } from "./hederaMirrorV1.js";
|
|
3
|
+
import { type ExecutionHederaTargetV1 } from "../triangulation/executionPlanV1.js";
|
|
4
|
+
type Status = "resolved" | "unavailable" | "conflict" | "invalid";
|
|
5
|
+
export type ExecutionMirrorV1Result = Readonly<{
|
|
6
|
+
status: Status;
|
|
7
|
+
reason_code: string | null;
|
|
8
|
+
observation: VerificationObservation;
|
|
9
|
+
}>;
|
|
10
|
+
export declare function resolveExecutionHederaV1(config: HederaMirrorV1Config, input: Readonly<{
|
|
11
|
+
subject: VerificationSubject;
|
|
12
|
+
targets: readonly ExecutionHederaTargetV1[];
|
|
13
|
+
}>): Promise<ExecutionMirrorV1Result>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=executionMirrorV1.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executionMirrorV1.d.ts","sourceRoot":"","sources":["../../src/resolvers/executionMirrorV1.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAsC,KAAK,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAcvH,KAAK,MAAM,GAAG,UAAU,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC;AAClE,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,uBAAuB,CAAC;CACtC,CAAC,CAAC;AAsEH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,oBAAoB,EAC5B,KAAK,EAAE,QAAQ,CAAC;IAAE,OAAO,EAAE,mBAAmB,CAAC;IAAC,OAAO,EAAE,SAAS,uBAAuB,EAAE,CAAA;CAAE,CAAC,GAC7F,OAAO,CAAC,uBAAuB,CAAC,CAiGlC"}
|