usertrust-verify 1.5.0 → 2.0.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/README.md +44 -0
- package/dist/anchor-verify.d.ts +229 -0
- package/dist/anchor-verify.d.ts.map +1 -0
- package/dist/anchor-verify.js +809 -0
- package/dist/anchor-verify.js.map +1 -0
- package/dist/cli.js +334 -20
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +93 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +300 -16
- package/dist/index.js.map +1 -1
- package/dist/receipt.d.ts +7 -0
- package/dist/receipt.d.ts.map +1 -1
- package/dist/receipt.js +4 -1
- package/dist/receipt.js.map +1 -1
- package/dist/rekor-verify.d.ts +116 -0
- package/dist/rekor-verify.d.ts.map +1 -0
- package/dist/rekor-verify.js +533 -0
- package/dist/rekor-verify.js.map +1 -0
- package/package.json +12 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anchor-verify.js","sourceRoot":"","sources":["../src/anchor-verify.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -1,55 +1,369 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
// Copyright 2026 Usertools, Inc.
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* usertrust-verify CLI.
|
|
6
|
+
*
|
|
7
|
+
* Anchor contract (spec §7.5): the CALLER fetches anchor artifacts (aws s3
|
|
8
|
+
* cp, git show, SIEM export) and passes them as files/stdin; trust material
|
|
9
|
+
* (--pubkey = THE pinned genesis root, --successor-pin = rotation pins) is
|
|
10
|
+
* pinned out-of-band and NEVER read from the vault under audit. --anchor-url
|
|
11
|
+
* is an opt-in convenience (bare node:https GET); offline is the primary path.
|
|
12
|
+
*/
|
|
13
|
+
import { readFileSync } from "node:fs";
|
|
14
|
+
import { parseAnchorsContent } from "./anchor-verify.js";
|
|
15
|
+
import { exitCodeFor, exitCodeForAnchored, verifyTransaction, verifyVault, verifyVaultWithAnchors, } from "./index.js";
|
|
5
16
|
const args = process.argv.slice(2);
|
|
6
|
-
|
|
17
|
+
function usage() {
|
|
18
|
+
console.log(`Usage: npx usertrust-verify <path-to-.usertrust> [options]
|
|
19
|
+
|
|
20
|
+
Options:
|
|
21
|
+
--tx <transferId> Verify a single transaction (receipt)
|
|
22
|
+
--anchor <file|-> Caller-fetched anchor artifact (repeatable; - = stdin)
|
|
23
|
+
--anchors <file> Anchor history file (JSONL; repeatable)
|
|
24
|
+
--anchor-url <url> Opt-in: fetch one anchor artifact over HTTPS
|
|
25
|
+
--bundle <file|-> Auditor bundle {v,records,rekorReceipts} (usertrust anchor export-bundle)
|
|
26
|
+
--rekor-receipts <file|-> Transparency-log receipt(s), JSON or JSONL (repeatable)
|
|
27
|
+
--rekor-pubkey <pem-file> PINNED transparency-log public key (repeatable)
|
|
28
|
+
--pubkey <pem-file> PINNED genesis root public key (out-of-band)
|
|
29
|
+
--successor-pin <pem-file> Pinned rotation-successor key (repeatable)
|
|
30
|
+
--vault-id <uuid> Expected vaultId
|
|
31
|
+
--require-anchor Strict: UNANCHORED/UNVERIFIABLE/STALE exit 1
|
|
32
|
+
--require-external-anchor Strict: exit 0 only for externally anchored
|
|
33
|
+
--max-anchor-age <dur> Freshness policy, e.g. 1h, 30m (operator-claimed time)
|
|
34
|
+
--max-unanchored-events <n> Freshness policy (clock-independent; preferred)`);
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
function parseDurationMs(raw) {
|
|
38
|
+
const m = /^(\d+)(ms|s|m|h|d)?$/.exec(raw);
|
|
39
|
+
if (m === null) {
|
|
40
|
+
console.error(`Invalid duration: ${raw} (use e.g. 500ms, 30s, 15m, 1h, 7d)`);
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
const n = Number.parseInt(m[1], 10);
|
|
44
|
+
const mult = { ms: 1, s: 1000, m: 60_000, h: 3_600_000, d: 86_400_000 }[m[2] ?? "ms"];
|
|
45
|
+
return n * mult;
|
|
46
|
+
}
|
|
47
|
+
function readArtifact(pathOrDash) {
|
|
48
|
+
if (pathOrDash === "-")
|
|
49
|
+
return readFileSync(0, "utf-8");
|
|
50
|
+
return readFileSync(pathOrDash, "utf-8");
|
|
51
|
+
}
|
|
52
|
+
const MAX_PEM_BYTES = 16 * 1024;
|
|
53
|
+
const MAX_BUNDLE_ITEMS = 10_000;
|
|
54
|
+
const BUNDLE_KEYS = new Set(["v", "records", "rekorReceipts"]);
|
|
55
|
+
/**
|
|
56
|
+
* Read one pinned log key. A file that carries no usable PEM is a usage error,
|
|
57
|
+
* not an empty pin: the verifier discards unusable entries, so accepting one
|
|
58
|
+
* here would leave the caller believing they pinned a key while the receipt was
|
|
59
|
+
* checked against something else entirely.
|
|
60
|
+
*/
|
|
61
|
+
function readPinnedPem(path) {
|
|
62
|
+
const pem = readFileSync(path, "utf-8");
|
|
63
|
+
if (Buffer.byteLength(pem, "utf8") > MAX_PEM_BYTES) {
|
|
64
|
+
console.error(`--rekor-pubkey ${path}: PEM exceeds 16 KiB`);
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
if (pem.trim().length === 0 || !pem.includes("-----BEGIN PUBLIC KEY-----")) {
|
|
68
|
+
console.error(`--rekor-pubkey ${path}: not a PEM public key (-----BEGIN PUBLIC KEY----- missing)`);
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
return pem;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Strict parse of an auditor bundle: `{v:1, records, rekorReceipts?}`. A bundle
|
|
75
|
+
* is untrusted transport, so unknown top-level fields are rejected rather than
|
|
76
|
+
* ignored — a field the CLI silently drops is one an exporter can use to carry
|
|
77
|
+
* evidence the verifier never looks at. Element shapes are NOT validated here:
|
|
78
|
+
* records and receipts are re-serialized and go through the same strict parsers
|
|
79
|
+
* every other input does.
|
|
80
|
+
*/
|
|
81
|
+
function parseBundle(raw) {
|
|
82
|
+
let parsed;
|
|
83
|
+
try {
|
|
84
|
+
parsed = JSON.parse(raw);
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
throw new Error("--bundle: not valid JSON");
|
|
88
|
+
}
|
|
89
|
+
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
90
|
+
throw new Error("--bundle: not an object");
|
|
91
|
+
}
|
|
92
|
+
const obj = parsed;
|
|
93
|
+
for (const key of Object.keys(obj)) {
|
|
94
|
+
if (!BUNDLE_KEYS.has(key))
|
|
95
|
+
throw new Error(`--bundle: unknown field "${key.slice(0, 80)}"`);
|
|
96
|
+
}
|
|
97
|
+
if (obj.v !== 1)
|
|
98
|
+
throw new Error("--bundle: unsupported version (expected 1)");
|
|
99
|
+
if (!Array.isArray(obj.records))
|
|
100
|
+
throw new Error("--bundle: records must be an array");
|
|
101
|
+
if (obj.records.length > MAX_BUNDLE_ITEMS) {
|
|
102
|
+
throw new Error(`--bundle: records exceeds the ${MAX_BUNDLE_ITEMS} cap`);
|
|
103
|
+
}
|
|
104
|
+
const receipts = obj.rekorReceipts ?? [];
|
|
105
|
+
if (!Array.isArray(receipts))
|
|
106
|
+
throw new Error("--bundle: rekorReceipts must be an array");
|
|
107
|
+
if (receipts.length > MAX_BUNDLE_ITEMS) {
|
|
108
|
+
throw new Error(`--bundle: rekorReceipts exceeds the ${MAX_BUNDLE_ITEMS} cap`);
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
anchorsRaw: obj.records.map((record) => JSON.stringify(record)).join("\n"),
|
|
112
|
+
receiptsRaw: receipts.map((receipt) => JSON.stringify(receipt)),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function fetchAnchorUrl(url) {
|
|
116
|
+
return new Promise((resolve) => {
|
|
117
|
+
import("node:https")
|
|
118
|
+
.then((https) => {
|
|
119
|
+
const req = https.get(url, { timeout: 15_000 }, (res) => {
|
|
120
|
+
const code = res.statusCode ?? 0;
|
|
121
|
+
if (code < 200 || code >= 300) {
|
|
122
|
+
res.resume();
|
|
123
|
+
resolve({ ok: false, error: `HTTP ${code}` });
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const chunks = [];
|
|
127
|
+
res.on("data", (c) => chunks.push(c));
|
|
128
|
+
res.on("end", () => resolve({ ok: true, body: Buffer.concat(chunks).toString("utf-8") }));
|
|
129
|
+
});
|
|
130
|
+
req.on("timeout", () => req.destroy(new Error("timeout")));
|
|
131
|
+
req.on("error", (err) => resolve({ ok: false, error: err.message }));
|
|
132
|
+
})
|
|
133
|
+
.catch((err) => resolve({ ok: false, error: err.message }));
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
// ── Parse flags ──
|
|
7
137
|
let vaultPath;
|
|
8
138
|
let txId;
|
|
139
|
+
const anchorFiles = [];
|
|
140
|
+
const rekorReceiptFiles = [];
|
|
141
|
+
const rekorPubkeyFiles = [];
|
|
142
|
+
let bundleFile;
|
|
143
|
+
let anchorUrl;
|
|
144
|
+
let pubkeyFile;
|
|
145
|
+
const successorPinFiles = [];
|
|
146
|
+
let vaultId;
|
|
147
|
+
let requireAnchor = false;
|
|
148
|
+
let requireExternalAnchor = false;
|
|
149
|
+
let maxAnchorAgeMs;
|
|
150
|
+
let maxUnanchoredEvents;
|
|
9
151
|
for (let i = 0; i < args.length; i++) {
|
|
10
152
|
const arg = args[i];
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
153
|
+
const next = () => {
|
|
154
|
+
const v = args[i + 1];
|
|
155
|
+
if (v === undefined)
|
|
156
|
+
usage();
|
|
157
|
+
i++;
|
|
158
|
+
return v;
|
|
159
|
+
};
|
|
160
|
+
if (arg === "--tx")
|
|
161
|
+
txId = next();
|
|
162
|
+
else if (arg === "--anchor" || arg === "--anchors")
|
|
163
|
+
anchorFiles.push(next());
|
|
164
|
+
else if (arg === "--anchor-url")
|
|
165
|
+
anchorUrl = next();
|
|
166
|
+
else if (arg === "--rekor-receipts")
|
|
167
|
+
rekorReceiptFiles.push(next());
|
|
168
|
+
else if (arg === "--rekor-pubkey")
|
|
169
|
+
rekorPubkeyFiles.push(next());
|
|
170
|
+
else if (arg === "--bundle")
|
|
171
|
+
bundleFile = next();
|
|
172
|
+
else if (arg === "--pubkey")
|
|
173
|
+
pubkeyFile = next();
|
|
174
|
+
else if (arg === "--successor-pin")
|
|
175
|
+
successorPinFiles.push(next());
|
|
176
|
+
else if (arg === "--vault-id")
|
|
177
|
+
vaultId = next();
|
|
178
|
+
else if (arg === "--require-anchor")
|
|
179
|
+
requireAnchor = true;
|
|
180
|
+
else if (arg === "--require-external-anchor")
|
|
181
|
+
requireExternalAnchor = true;
|
|
182
|
+
else if (arg === "--max-anchor-age")
|
|
183
|
+
maxAnchorAgeMs = parseDurationMs(next());
|
|
184
|
+
else if (arg === "--max-unanchored-events") {
|
|
185
|
+
const rawEvents = next();
|
|
186
|
+
maxUnanchoredEvents = Number.parseInt(rawEvents, 10);
|
|
187
|
+
// parseInt("1O0") === 1 (partial parse) and NaN comparisons are always
|
|
188
|
+
// false — either typo would silently weaken the staleness gate.
|
|
189
|
+
if (!/^\d+$/.test(rawEvents) ||
|
|
190
|
+
!Number.isSafeInteger(maxUnanchoredEvents) ||
|
|
191
|
+
maxUnanchoredEvents < 0) {
|
|
192
|
+
console.error("Invalid --max-unanchored-events: must be a non-negative integer");
|
|
193
|
+
process.exit(1);
|
|
194
|
+
}
|
|
14
195
|
}
|
|
15
|
-
else if (
|
|
196
|
+
else if (arg === "--help" || arg === "-h")
|
|
197
|
+
usage();
|
|
198
|
+
else if (!arg.startsWith("--"))
|
|
16
199
|
vaultPath = arg;
|
|
200
|
+
else
|
|
201
|
+
usage();
|
|
202
|
+
}
|
|
203
|
+
if (!vaultPath)
|
|
204
|
+
usage();
|
|
205
|
+
const anchorMode = anchorFiles.length > 0 ||
|
|
206
|
+
anchorUrl !== undefined ||
|
|
207
|
+
pubkeyFile !== undefined ||
|
|
208
|
+
bundleFile !== undefined ||
|
|
209
|
+
rekorReceiptFiles.length > 0 ||
|
|
210
|
+
requireAnchor ||
|
|
211
|
+
requireExternalAnchor;
|
|
212
|
+
async function buildAnchorParams() {
|
|
213
|
+
const externalAnchorsRaw = anchorFiles.map(readArtifact);
|
|
214
|
+
const rekorReceiptsRaw = rekorReceiptFiles.map(readArtifact);
|
|
215
|
+
if (bundleFile !== undefined) {
|
|
216
|
+
try {
|
|
217
|
+
const bundle = parseBundle(readArtifact(bundleFile));
|
|
218
|
+
externalAnchorsRaw.push(bundle.anchorsRaw);
|
|
219
|
+
rekorReceiptsRaw.push(...bundle.receiptsRaw);
|
|
220
|
+
}
|
|
221
|
+
catch (err) {
|
|
222
|
+
console.error(err instanceof Error ? err.message : String(err));
|
|
223
|
+
process.exit(1);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
let witness = { requested: false };
|
|
227
|
+
if (anchorUrl !== undefined) {
|
|
228
|
+
const fetched = await fetchAnchorUrl(anchorUrl);
|
|
229
|
+
// AC-2.4: a 2xx with an empty or fully-unparseable body is NOT a
|
|
230
|
+
// consulted witness — treat it as unreachable (inconclusive) and never
|
|
231
|
+
// let it launder mirror-only evidence into anchorSource "external".
|
|
232
|
+
// But a body with ANY cleanly parsed records IS evidence: keep the
|
|
233
|
+
// whole body (embedded parse errors fail closed downstream) — throwing
|
|
234
|
+
// away 50 valid records over one truncated line would discard the very
|
|
235
|
+
// rollback proof the witness exists to provide.
|
|
236
|
+
const parsed = fetched.ok && fetched.body !== undefined ? parseAnchorsContent(fetched.body) : null;
|
|
237
|
+
if (parsed !== null && parsed.records.length > 0) {
|
|
238
|
+
externalAnchorsRaw.push(fetched.body);
|
|
239
|
+
witness = { requested: true, ok: true };
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
witness = {
|
|
243
|
+
requested: true,
|
|
244
|
+
ok: false,
|
|
245
|
+
error: fetched.ok
|
|
246
|
+
? "witness returned an empty or unparseable body"
|
|
247
|
+
: (fetched.error ?? "fetch failed"),
|
|
248
|
+
};
|
|
249
|
+
}
|
|
17
250
|
}
|
|
251
|
+
const trust = pubkeyFile !== undefined
|
|
252
|
+
? {
|
|
253
|
+
rootPem: readFileSync(pubkeyFile, "utf-8"),
|
|
254
|
+
...(successorPinFiles.length > 0
|
|
255
|
+
? { successorPinsPem: successorPinFiles.map((f) => readFileSync(f, "utf-8")) }
|
|
256
|
+
: {}),
|
|
257
|
+
}
|
|
258
|
+
: undefined;
|
|
259
|
+
return {
|
|
260
|
+
externalAnchorsRaw,
|
|
261
|
+
rekorReceiptsRaw,
|
|
262
|
+
rekorLogPubkeysPem: rekorPubkeyFiles.map(readPinnedPem),
|
|
263
|
+
...(trust !== undefined ? { trust } : {}),
|
|
264
|
+
witness,
|
|
265
|
+
...(maxAnchorAgeMs !== undefined ? { maxAnchorAgeMs } : {}),
|
|
266
|
+
...(maxUnanchoredEvents !== undefined ? { maxUnanchoredEvents } : {}),
|
|
267
|
+
...(vaultId !== undefined ? { expectedVaultId: vaultId } : {}),
|
|
268
|
+
};
|
|
18
269
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
270
|
+
/**
|
|
271
|
+
* A witness-attested time on its way to a terminal. The receipt parser bounds
|
|
272
|
+
* integratedTime, but this value also arrives from library callers, and
|
|
273
|
+
* `toISOString()` throws RangeError outside ±8.64e15 ms — printing raw
|
|
274
|
+
* milliseconds beats crashing the verifier over a number it already distrusts.
|
|
275
|
+
*/
|
|
276
|
+
function formatAttestedMs(ms) {
|
|
277
|
+
return Number.isFinite(ms) && Math.abs(ms) <= 8.64e15 ? new Date(ms).toISOString() : `${ms} ms`;
|
|
278
|
+
}
|
|
279
|
+
function printAnchorSection(result) {
|
|
280
|
+
const a = result.anchoring;
|
|
281
|
+
if (result.anchorState === "UNANCHORED") {
|
|
282
|
+
console.log("Anchor state: UNANCHORED — internal consistency only; supply --anchor + --pubkey for independent verification");
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
console.log(`Anchor state: ${result.anchorState} (source: ${a.anchorSource})`);
|
|
286
|
+
if (a.latestAnchor) {
|
|
287
|
+
console.log(`Latest anchor: #${a.latestAnchor.anchorSeq} treeSize ${a.latestAnchor.treeSize} keyId ${a.latestAnchor.keyId.slice(0, 19)}… (${a.latestAnchor.timestamp})`);
|
|
288
|
+
}
|
|
289
|
+
console.log(`Unanchored tail: ${a.unanchoredTail.events} event(s)`);
|
|
290
|
+
if (a.rekor !== undefined) {
|
|
291
|
+
const attested = a.rekor.latestAttestedTimeMs === null
|
|
292
|
+
? ""
|
|
293
|
+
: `, attested ${formatAttestedMs(a.rekor.latestAttestedTimeMs)}`;
|
|
294
|
+
const failed = a.rekor.receiptsFailed > 0 ? `, ${a.rekor.receiptsFailed} FAILED` : "";
|
|
295
|
+
console.log(`Rekor: ${a.rekor.receiptsVerified} receipt(s) verified${failed}${attested}`);
|
|
296
|
+
}
|
|
297
|
+
if (a.witness.requested) {
|
|
298
|
+
console.log(`Witness: ${a.witness.status}${a.witness.error ? ` (${a.witness.error})` : ""}`);
|
|
299
|
+
}
|
|
300
|
+
if (a.anchorSource === "vault-mirror") {
|
|
301
|
+
console.log("WARNING: anchors verified from the VAULT-LOCAL mirror only — a vault-writing attacker can truncate mirror and events together. Supply an externally fetched copy.");
|
|
302
|
+
}
|
|
303
|
+
for (const w of a.warnings) {
|
|
304
|
+
console.log(`WARNING: ${w}`);
|
|
305
|
+
}
|
|
22
306
|
}
|
|
23
307
|
// ── Single transaction mode ──
|
|
24
308
|
if (txId !== undefined) {
|
|
25
|
-
const
|
|
309
|
+
const params = anchorMode ? await buildAnchorParams() : undefined;
|
|
310
|
+
const result = verifyTransaction(vaultPath, txId, params);
|
|
26
311
|
console.log(result.receipt);
|
|
27
312
|
// Exit 0: verified, 1: tampered/corrupted, 2: not found
|
|
28
313
|
if (!result.found)
|
|
29
314
|
process.exit(2);
|
|
30
|
-
|
|
315
|
+
if (!result.valid)
|
|
316
|
+
process.exit(1);
|
|
317
|
+
// Strict gates apply in --tx mode too — the flags turned anchorMode on,
|
|
318
|
+
// so silently ignoring them here would let an UNANCHORED receipt pass a
|
|
319
|
+
// --require-external-anchor pipeline.
|
|
320
|
+
if (result.anchorState !== undefined && result.anchoring !== undefined) {
|
|
321
|
+
process.exit(exitCodeForAnchored({ valid: true, anchorState: result.anchorState, anchoring: result.anchoring }, { requireAnchor, requireExternalAnchor }));
|
|
322
|
+
}
|
|
323
|
+
process.exit(0);
|
|
31
324
|
}
|
|
32
325
|
// ── Full vault verification ──
|
|
33
|
-
|
|
326
|
+
if (!anchorMode) {
|
|
327
|
+
const result = verifyVault(vaultPath);
|
|
328
|
+
if (result.valid) {
|
|
329
|
+
console.log("Vault integrity: VERIFIED (UNANCHORED — internal consistency only)");
|
|
330
|
+
}
|
|
331
|
+
else {
|
|
332
|
+
console.log("Vault integrity: FAILED");
|
|
333
|
+
for (const error of result.errors) {
|
|
334
|
+
console.log(` - ${error}`);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
console.log(`Chain length: ${result.chainLength} events`);
|
|
338
|
+
console.log(`Merkle root: ${result.merkleRoot ?? "N/A"}`);
|
|
339
|
+
console.log("Hash algorithm: SHA-256");
|
|
340
|
+
if (result.firstEvent)
|
|
341
|
+
console.log(`First event: ${result.firstEvent}`);
|
|
342
|
+
if (result.lastEvent)
|
|
343
|
+
console.log(`Last event: ${result.lastEvent}`);
|
|
344
|
+
if (result.chainLength > 0) {
|
|
345
|
+
console.log(`All hashes: valid (${result.validHashes}/${result.chainLength})`);
|
|
346
|
+
}
|
|
347
|
+
process.exit(exitCodeFor(result));
|
|
348
|
+
}
|
|
349
|
+
const result = verifyVaultWithAnchors(vaultPath, await buildAnchorParams());
|
|
34
350
|
if (result.valid) {
|
|
35
|
-
console.log(
|
|
351
|
+
console.log(result.anchorState === "ANCHORED_VERIFIED"
|
|
352
|
+
? `Vault integrity: VERIFIED (${result.anchoring.anchorSource === "external" ? "externally anchored" : "vault-mirror anchors only"})`
|
|
353
|
+
: `Vault integrity: VERIFIED (${result.anchorState})`);
|
|
36
354
|
}
|
|
37
355
|
else {
|
|
38
|
-
console.log(
|
|
356
|
+
console.log(`Vault integrity: FAILED (${result.anchorState})`);
|
|
39
357
|
for (const error of result.errors) {
|
|
40
358
|
console.log(` - ${error}`);
|
|
41
359
|
}
|
|
42
360
|
}
|
|
361
|
+
printAnchorSection(result);
|
|
43
362
|
console.log(`Chain length: ${result.chainLength} events`);
|
|
44
363
|
console.log(`Merkle root: ${result.merkleRoot ?? "N/A"}`);
|
|
45
364
|
console.log("Hash algorithm: SHA-256");
|
|
46
|
-
if (result.firstEvent)
|
|
47
|
-
console.log(`First event: ${result.firstEvent}`);
|
|
48
|
-
if (result.lastEvent)
|
|
49
|
-
console.log(`Last event: ${result.lastEvent}`);
|
|
50
365
|
if (result.chainLength > 0) {
|
|
51
366
|
console.log(`All hashes: valid (${result.validHashes}/${result.chainLength})`);
|
|
52
367
|
}
|
|
53
|
-
|
|
54
|
-
process.exit(exitCodeFor(result));
|
|
368
|
+
process.exit(exitCodeForAnchored(result, { requireAnchor, requireExternalAnchor }));
|
|
55
369
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,sCAAsC;AACtC,iCAAiC;AAEjC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,kBAAkB;AAClB,IAAI,SAA6B,CAAC;AAClC,IAAI,IAAwB,CAAC;AAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAW,CAAC;IAC9B,IAAI,GAAG,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3C,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC;QAC7B,CAAC,EAAE,CAAC,CAAC,gBAAgB;IACtB,CAAC;SAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,SAAS,GAAG,GAAG,CAAC;IACjB,CAAC;AACF,CAAC;AAED,IAAI,CAAC,SAAS,EAAE,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;IACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,gCAAgC;AAChC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;IACxB,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5B,wDAAwD;IACxD,IAAI,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,gCAAgC;AAChC,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;AAEtC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAC1C,CAAC;KAAM,CAAC;IACP,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACvC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC;IAC7B,CAAC;AACF,CAAC;AACD,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,WAAW,SAAS,CAAC,CAAC;AAC1D,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,UAAU,IAAI,KAAK,EAAE,CAAC,CAAC;AAC1D,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACvC,IAAI,MAAM,CAAC,UAAU;IAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AACxE,IAAI,MAAM,CAAC,SAAS;IAAE,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;AACrE,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;AAChF,CAAC;AAED,yEAAyE;AACzE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { type AnchorSource, type AnchorState, type AnchorTrust, type WitnessInput, type WitnessStatus } from "./anchor-verify.js";
|
|
2
|
+
export { type AnchorChainResult, type AnchorEvaluation, type AnchorEvaluationInput, type AnchorEvaluationOptions, type AnchorRecord, type AnchorRotation, type AnchorSource, type AnchorState, type AnchorTrust, anchorPayloadHash, anchorSigningPreimage, committedFieldsEqual, dedupeAnchorSet, evaluateAnchoredVault, gatherOrderedEventHashes, keyIdFromKeyObject, keyIdFromSpkiDer, parseAnchorRecord, parseAnchorsContent, publicKeyFromPem, publicKeyFromSpkiBase64, readAnchorMirror, verifyAnchorChain, verifyAnchorSignature, verifyInclusionAgainstAnchor, verifySignatureRaw, type WitnessInput, type WitnessStatus, worseAnchorState, } from "./anchor-verify.js";
|
|
1
3
|
export { canonicalize } from "./canonical.js";
|
|
2
4
|
export { GENESIS_HASH } from "./constants.js";
|
|
3
|
-
export { type ReceiptData,
|
|
4
|
-
export {
|
|
5
|
+
export { type ReceiptData, renderNotFound, renderReceipt, type TransactionEvent, } from "./receipt.js";
|
|
6
|
+
export { parseRekorReceipt, parseSignedNote, REKOR_PROD_PUBKEY_PEM, type RekorReceipt, type RekorVerification, type SignedNote, verifyIndexInclusion, verifyRekorReceipt, } from "./rekor-verify.js";
|
|
7
|
+
export { buildMerkleTree, type ChainVerificationResult, generateConsistencyProof, generateInclusionProof, hashInternal, hashLeaf, type MerkleConsistencyProof, type MerkleInclusionProof, type MerkleSibling, verifyChain, verifyConsistencyProof, verifyInclusionProof, } from "./verify.js";
|
|
5
8
|
export interface VaultVerificationResult {
|
|
6
9
|
valid: boolean;
|
|
7
10
|
errors: string[];
|
|
@@ -30,18 +33,102 @@ export declare function verifyVault(vaultPath: string): VaultVerificationResult;
|
|
|
30
33
|
export declare function exitCodeFor(result: {
|
|
31
34
|
valid: boolean;
|
|
32
35
|
}): number;
|
|
36
|
+
export interface AnchorVerifyParams {
|
|
37
|
+
/** Raw contents of caller-fetched anchor artifacts (single JSON or JSONL). */
|
|
38
|
+
readonly externalAnchorsRaw?: readonly string[] | undefined;
|
|
39
|
+
/** Raw transparency-log receipts: one receipt JSON, or JSONL of receipts. */
|
|
40
|
+
readonly rekorReceiptsRaw?: readonly string[] | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* Caller-pinned transparency-log keys. Supplying none is only meaningful for
|
|
43
|
+
* the one log whose key ships with the verifier (rekor.sigstore.dev); any
|
|
44
|
+
* other log without a pin is refused rather than trusted.
|
|
45
|
+
*/
|
|
46
|
+
readonly rekorLogPubkeysPem?: readonly string[] | undefined;
|
|
47
|
+
/** Caller-pinned trust material — NEVER read from the vault under audit. */
|
|
48
|
+
readonly trust?: AnchorTrust | undefined;
|
|
49
|
+
readonly witness?: WitnessInput | undefined;
|
|
50
|
+
readonly maxAnchorAgeMs?: number | undefined;
|
|
51
|
+
readonly maxUnanchoredEvents?: number | undefined;
|
|
52
|
+
readonly expectedVaultId?: string | undefined;
|
|
53
|
+
readonly nowMs?: number | undefined;
|
|
54
|
+
}
|
|
55
|
+
export interface RekorReport {
|
|
56
|
+
receiptsVerified: number;
|
|
57
|
+
receiptsFailed: number;
|
|
58
|
+
/** Max attested time among verified receipts of the NEWEST anchor (ms). */
|
|
59
|
+
latestAttestedTimeMs: number | null;
|
|
60
|
+
errors: string[];
|
|
61
|
+
}
|
|
62
|
+
export interface AnchoringReport {
|
|
63
|
+
anchorSource: AnchorSource;
|
|
64
|
+
anchorCount: number;
|
|
65
|
+
latestAnchor: {
|
|
66
|
+
anchorSeq: number;
|
|
67
|
+
treeSize: number;
|
|
68
|
+
lastHash: string;
|
|
69
|
+
keyId: string;
|
|
70
|
+
timestamp: string;
|
|
71
|
+
} | null;
|
|
72
|
+
unanchoredTail: {
|
|
73
|
+
events: number;
|
|
74
|
+
sinceTimestampMs: number | null;
|
|
75
|
+
};
|
|
76
|
+
witness: {
|
|
77
|
+
requested: boolean;
|
|
78
|
+
status: WitnessStatus;
|
|
79
|
+
error?: string;
|
|
80
|
+
};
|
|
81
|
+
reasons: string[];
|
|
82
|
+
warnings: string[];
|
|
83
|
+
/** Present only when transparency-log receipts were supplied. */
|
|
84
|
+
rekor?: RekorReport;
|
|
85
|
+
}
|
|
86
|
+
export interface AnchoredVaultVerificationResult extends VaultVerificationResult {
|
|
87
|
+
anchorState: AnchorState;
|
|
88
|
+
anchoring: AnchoringReport;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* verifyVault + the spec §7.2 anchor state machine. Existing chain semantics
|
|
92
|
+
* are UNCHANGED (verifyVault runs as-is); anchor evaluation is layered on
|
|
93
|
+
* top additively. IDENTICAL function body in packages/core/src/audit/verify.ts
|
|
94
|
+
* — the anchor differential test pins the two.
|
|
95
|
+
*/
|
|
96
|
+
export declare function verifyVaultWithAnchors(vaultPath: string, params?: AnchorVerifyParams): AnchoredVaultVerificationResult;
|
|
97
|
+
/**
|
|
98
|
+
* Exit-code policy for anchored verification. Exit codes stay 0/1
|
|
99
|
+
* (constraints §4.3); `--require-anchor` and `--require-external-anchor` are
|
|
100
|
+
* new INPUTS, not changed defaults.
|
|
101
|
+
*/
|
|
102
|
+
export declare function exitCodeForAnchored(result: {
|
|
103
|
+
valid: boolean;
|
|
104
|
+
anchorState: AnchorState;
|
|
105
|
+
anchoring: {
|
|
106
|
+
anchorSource: AnchorSource;
|
|
107
|
+
};
|
|
108
|
+
}, opts?: {
|
|
109
|
+
requireAnchor?: boolean;
|
|
110
|
+
requireExternalAnchor?: boolean;
|
|
111
|
+
}): number;
|
|
33
112
|
export interface TransactionVerificationResult {
|
|
34
113
|
readonly found: boolean;
|
|
35
114
|
readonly valid: boolean;
|
|
36
115
|
readonly receipt: string;
|
|
37
116
|
readonly errors: string[];
|
|
117
|
+
/** Present when anchor inputs were supplied: the §7.2 vault-level state,
|
|
118
|
+
* so CLI strict gates (--require-anchor / --require-external-anchor) can
|
|
119
|
+
* be enforced in --tx mode too. */
|
|
120
|
+
readonly anchorState?: AnchorState | undefined;
|
|
121
|
+
readonly anchoring?: AnchoringReport | undefined;
|
|
38
122
|
}
|
|
39
123
|
/**
|
|
40
124
|
* Verify a single transaction and return a formatted receipt.
|
|
41
125
|
*
|
|
42
|
-
* Finds the event matching `txId` (by `data.transferId`)
|
|
43
|
-
* hash chain
|
|
44
|
-
*
|
|
126
|
+
* Finds the event matching `txId` (by `data.transferId`) and verifies the
|
|
127
|
+
* hash chain. WITHOUT anchor inputs the receipt claims chain consistency
|
|
128
|
+
* only — the historical self-referential inclusion check (proof verified
|
|
129
|
+
* against a root recomputed from the same events, F1) is retired (AC-5.2).
|
|
130
|
+
* WITH anchor inputs the §7.2 state machine runs over the whole vault first
|
|
131
|
+
* (AC-5.4) and inclusion is proven against the SIGNED EXTERNAL anchor root.
|
|
45
132
|
*/
|
|
46
|
-
export declare function verifyTransaction(vaultPath: string, txId: string): TransactionVerificationResult;
|
|
133
|
+
export declare function verifyTransaction(vaultPath: string, txId: string, anchorParams?: AnchorVerifyParams): TransactionVerificationResult;
|
|
47
134
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|