@xfuel/verify 0.1.1 → 0.3.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 +62 -17
- package/dist/anchor-witness.d.ts +138 -0
- package/dist/anchor-witness.d.ts.map +1 -0
- package/dist/anchor-witness.js +365 -0
- package/dist/anchor-witness.js.map +1 -0
- package/dist/base-payer.d.ts +8 -1
- package/dist/base-payer.d.ts.map +1 -1
- package/dist/base-payer.js +64 -20
- package/dist/base-payer.js.map +1 -1
- package/dist/canonical-preimage.d.ts +9 -0
- package/dist/canonical-preimage.d.ts.map +1 -0
- package/dist/canonical-preimage.js +25 -0
- package/dist/canonical-preimage.js.map +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +424 -25
- package/dist/cli.js.map +1 -1
- package/dist/head-binding.d.ts +24 -0
- package/dist/head-binding.d.ts.map +1 -0
- package/dist/head-binding.js +61 -0
- package/dist/head-binding.js.map +1 -0
- package/dist/index.d.ts +263 -48
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +919 -140
- package/dist/index.js.map +1 -1
- package/dist/issuer-history.d.ts +91 -0
- package/dist/issuer-history.d.ts.map +1 -0
- package/dist/issuer-history.js +292 -0
- package/dist/issuer-history.js.map +1 -0
- package/dist/jcs.d.ts +8 -0
- package/dist/jcs.d.ts.map +1 -0
- package/dist/jcs.js +64 -0
- package/dist/jcs.js.map +1 -0
- package/dist/jws.d.ts +23 -0
- package/dist/jws.d.ts.map +1 -1
- package/dist/jws.js +71 -1
- package/dist/jws.js.map +1 -1
- package/dist/payer.d.ts +16 -5
- package/dist/payer.d.ts.map +1 -1
- package/dist/payer.js +38 -26
- package/dist/payer.js.map +1 -1
- package/dist/preimage.d.ts +49 -0
- package/dist/preimage.d.ts.map +1 -0
- package/dist/preimage.js +203 -0
- package/dist/preimage.js.map +1 -0
- package/dist/receipt-lane.d.ts +234 -0
- package/dist/receipt-lane.d.ts.map +1 -0
- package/dist/receipt-lane.js +443 -0
- package/dist/receipt-lane.js.map +1 -0
- package/dist/refusal.d.ts +90 -0
- package/dist/refusal.d.ts.map +1 -0
- package/dist/refusal.js +226 -0
- package/dist/refusal.js.map +1 -0
- package/package.json +9 -5
package/dist/cli.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* xfuel-verify receipt.json
|
|
8
8
|
* xfuel-verify receipt.json --check-nullifier
|
|
9
9
|
* xfuel-verify receipt.json --rpc https://mainnet.base.org
|
|
10
|
+
* xfuel-verify receipt.json inclusion.json head.json --rpc
|
|
10
11
|
* cat receipt.json | xfuel-verify -
|
|
11
12
|
*
|
|
12
13
|
* Exit codes:
|
|
@@ -18,44 +19,102 @@
|
|
|
18
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
20
|
const node_fs_1 = require("node:fs");
|
|
20
21
|
const index_js_1 = require("./index.js");
|
|
22
|
+
const anchor_witness_js_1 = require("./anchor-witness.js");
|
|
23
|
+
const preimage_js_1 = require("./preimage.js");
|
|
24
|
+
const issuer_history_js_1 = require("./issuer-history.js");
|
|
25
|
+
const canonical_preimage_js_1 = require("./canonical-preimage.js");
|
|
21
26
|
const HELP = `
|
|
22
27
|
xfuel-verify — Offline verification for Chit402 receipts
|
|
23
28
|
|
|
24
29
|
Usage:
|
|
25
30
|
xfuel-verify <receipt.json> Verify binding locally
|
|
31
|
+
xfuel-verify <refusal.json> Verify a chit402.refusal.v1 document
|
|
32
|
+
(issuer refused; not a payment)
|
|
26
33
|
xfuel-verify <receipt.json> --jwks-file <jwks.json>
|
|
27
|
-
Verify issuer signature with JWKS
|
|
28
|
-
xfuel-verify <receipt.json> --
|
|
29
|
-
|
|
34
|
+
Verify issuer signature with a JWKS file
|
|
35
|
+
xfuel-verify <receipt.json> --fetch-jwks
|
|
36
|
+
Fetch JWKS from an allowlisted issuer jwks_uri
|
|
37
|
+
xfuel-verify <receipt.json> --check-payer
|
|
38
|
+
Confirm payer, payee, asset, and amount on-chain
|
|
30
39
|
xfuel-verify - < receipt.json Read from stdin
|
|
31
40
|
xfuel-verify --help Show this help
|
|
32
41
|
|
|
33
42
|
Options:
|
|
34
|
-
--jwks-file <path> JWKS file
|
|
43
|
+
--jwks-file <path> JWKS file. Keys are trusted and matched by kid (no network)
|
|
44
|
+
--jwks-url <url> Fetch this https JWKS and trust it (explicit; any host)
|
|
45
|
+
--fetch-jwks Fetch receipt verification.jwks_uri when the host is allowlisted
|
|
46
|
+
(default allowlist: api.chit402.com)
|
|
47
|
+
--trusted-kid <kid> Replace the default offline pin with this RFC 7638 kid
|
|
48
|
+
(repeatable). Default pin: ${index_js_1.DEFAULT_TRUSTED_ISSUER_KIDS[0]}
|
|
49
|
+
--no-trusted-kid Do not use the default offline pin (JWKS only)
|
|
35
50
|
--check-nullifier Query Base RPC for nullifier anchor (requires network)
|
|
36
|
-
--check-payer Query Base or Solana RPC
|
|
51
|
+
--check-payer Query Base or Solana RPC. Base confirms payer, payee, asset, amount
|
|
37
52
|
--solana-rpc <url> Solana RPC URL (default: https://api.mainnet-beta.solana.com or SOLANA_RPC_URL)
|
|
38
|
-
--rpc <url>
|
|
53
|
+
--rpc <url> Base RPC URL (default: https://mainnet.base.org)
|
|
54
|
+
--rpc With a receipt, an inclusion proof, and a tree head: check the
|
|
55
|
+
leaf, then the Solana memo and the Base calldata for that root
|
|
56
|
+
--inclusion <file> Inclusion proof JSON (chit402.inclusion.v1)
|
|
57
|
+
--head <file> Signed tree head JSON (chit402.tree_head.v1)
|
|
39
58
|
--json Output JSON instead of human-readable
|
|
40
59
|
--quiet Only output errors
|
|
60
|
+
--strict-issuer-history
|
|
61
|
+
Fail if the issuer key history cannot be fetched
|
|
62
|
+
--issuer-history-file <path>
|
|
63
|
+
Read issuer history JSON instead of fetching it
|
|
64
|
+
--canonical-preimage <path>
|
|
65
|
+
SHA-256 this file and match the signed payload_hash
|
|
66
|
+
--no-issuer-history Do not check the kid's not_before / not_after window
|
|
67
|
+
--no-preimage Do not require published hash preimages
|
|
41
68
|
|
|
42
69
|
Exit codes:
|
|
43
70
|
0 = verified
|
|
44
71
|
1 = verification failed
|
|
45
|
-
2 = partial verification
|
|
72
|
+
2 = partial verification
|
|
46
73
|
3 = input error
|
|
47
74
|
|
|
75
|
+
Trust:
|
|
76
|
+
A signature counts only when the verifying key is trusted. Trust is a JWKS
|
|
77
|
+
entry matched by kid (file, --jwks-url, or --fetch-jwks), or an embedded
|
|
78
|
+
issuer_jwk whose RFC 7638 thumbprint equals a pinned trusted kid. The
|
|
79
|
+
embedded key alone is not a trust root. Untrusted keys report "key untrusted".
|
|
80
|
+
|
|
81
|
+
Amount, payer, payee, and tx are read from verified signed claims. A mismatch
|
|
82
|
+
with the unsigned outer payment / caller_binding copy is a failure.
|
|
83
|
+
|
|
48
84
|
Network behavior:
|
|
49
85
|
By default, no network requests are made. Network is only used when:
|
|
86
|
+
- --fetch-jwks or --jwks-url is passed
|
|
50
87
|
- --check-nullifier is passed (queries Base RPC for on-chain anchor)
|
|
51
88
|
- --check-payer is passed (queries Base or Solana RPC for USDC settlement)
|
|
52
|
-
|
|
53
|
-
JWKS must be provided as a local file (--jwks-file) for legacy receipts without
|
|
54
|
-
issuer_signature.issuer_jwk. The CLI does not automatically fetch JWKS from a URL.
|
|
55
|
-
Pinned receipts (issuer_jwk present) verify offline without --jwks-file.
|
|
89
|
+
- --rpc is passed with a receipt, an inclusion proof, and a tree head
|
|
56
90
|
|
|
57
91
|
Solana payer verify uses SOLANA_RPC_URL when set, else the public mainnet RPC.
|
|
58
92
|
|
|
93
|
+
Anchored root:
|
|
94
|
+
xfuel-verify receipt.json inclusion.json head.json --rpc
|
|
95
|
+
xfuel-verify receipt.json --inclusion inclusion.json --head head.json --rpc https://mainnet.base.org
|
|
96
|
+
|
|
97
|
+
Checks the Merkle inclusion, fetches the Solana transaction and requires the
|
|
98
|
+
SPL Memo to contain the root, and checks the Base calldata the same way.
|
|
99
|
+
Prints what this proves and what it does not prove. Exit 0 when both chains
|
|
100
|
+
match, 2 when the leaf is included but an anchor is still pending, 1 when a
|
|
101
|
+
check fails.
|
|
102
|
+
|
|
103
|
+
Receipt lane (unsigned, beside book_seq):
|
|
104
|
+
settled_by is observed_transfer when the USDC transfer was checked on Base
|
|
105
|
+
or Solana, and receipt when only the issuer asserts settlement. Unknown is
|
|
106
|
+
null. Ordering is seq + settled_by + (anchor_changed AND not settled).
|
|
107
|
+
Boundary: complete over registry marks, blind to payments the registry
|
|
108
|
+
never joined. freeze is true only when book_seq is set, settled_by is
|
|
109
|
+
receipt, the anchor changed after binding, and the row is not settled. An
|
|
110
|
+
anchor change alone does not freeze, and freeze does not change the
|
|
111
|
+
signature exit code. classification unverifiable_from_registry means the
|
|
112
|
+
binding is past expiry and settled_by, receipt_id, observed_tx_hash, and
|
|
113
|
+
observed_transfer_id are all null. That is not unpaid. local_check, when
|
|
114
|
+
set, is a Base USDC payee and amount a stranger can check. It does not
|
|
115
|
+
claim the row was paid. Design by Turbo on 1F916 (post 6579, comments
|
|
116
|
+
88201, 88403, and 88596).
|
|
117
|
+
|
|
59
118
|
Examples:
|
|
60
119
|
# Local binding verification (no network)
|
|
61
120
|
xfuel-verify my-receipt.json
|
|
@@ -73,13 +132,27 @@ function parseArgs(args) {
|
|
|
73
132
|
const result = {
|
|
74
133
|
file: null,
|
|
75
134
|
jwksFile: null,
|
|
135
|
+
jwksUrl: null,
|
|
136
|
+
fetchJwks: false,
|
|
137
|
+
trustedKids: null,
|
|
138
|
+
noTrustedKid: false,
|
|
76
139
|
checkNullifier: false,
|
|
77
140
|
checkPayer: false,
|
|
78
141
|
rpcUrl: null,
|
|
79
142
|
solanaRpcUrl: null,
|
|
143
|
+
sawRpc: false,
|
|
144
|
+
anchorFlag: false,
|
|
145
|
+
inclusionFile: null,
|
|
146
|
+
headFile: null,
|
|
147
|
+
positionals: [],
|
|
80
148
|
json: false,
|
|
81
149
|
quiet: false,
|
|
82
150
|
help: false,
|
|
151
|
+
strictIssuerHistory: false,
|
|
152
|
+
issuerHistoryFile: null,
|
|
153
|
+
canonicalPreimageFile: null,
|
|
154
|
+
noIssuerHistory: false,
|
|
155
|
+
noPreimage: false,
|
|
83
156
|
};
|
|
84
157
|
for (let i = 0; i < args.length; i++) {
|
|
85
158
|
const arg = args[i];
|
|
@@ -95,12 +168,51 @@ function parseArgs(args) {
|
|
|
95
168
|
else if (arg === '--jwks-file' && args[i + 1]) {
|
|
96
169
|
result.jwksFile = args[++i];
|
|
97
170
|
}
|
|
98
|
-
else if (arg === '--
|
|
99
|
-
result.
|
|
171
|
+
else if (arg === '--jwks-url' && args[i + 1]) {
|
|
172
|
+
result.jwksUrl = args[++i];
|
|
173
|
+
}
|
|
174
|
+
else if (arg === '--fetch-jwks') {
|
|
175
|
+
result.fetchJwks = true;
|
|
176
|
+
}
|
|
177
|
+
else if (arg === '--trusted-kid' && args[i + 1]) {
|
|
178
|
+
result.trustedKids = result.trustedKids || [];
|
|
179
|
+
result.trustedKids.push(args[++i]);
|
|
180
|
+
}
|
|
181
|
+
else if (arg === '--no-trusted-kid') {
|
|
182
|
+
result.noTrustedKid = true;
|
|
183
|
+
}
|
|
184
|
+
else if (arg === '--rpc') {
|
|
185
|
+
result.sawRpc = true;
|
|
186
|
+
const next = args[i + 1];
|
|
187
|
+
if (next && /^https?:\/\//i.test(next))
|
|
188
|
+
result.rpcUrl = args[++i];
|
|
189
|
+
else
|
|
190
|
+
result.anchorFlag = true;
|
|
191
|
+
}
|
|
192
|
+
else if (arg === '--inclusion' && args[i + 1]) {
|
|
193
|
+
result.inclusionFile = args[++i];
|
|
194
|
+
}
|
|
195
|
+
else if (arg === '--head' && args[i + 1]) {
|
|
196
|
+
result.headFile = args[++i];
|
|
100
197
|
}
|
|
101
198
|
else if (arg === '--solana-rpc' && args[i + 1]) {
|
|
102
199
|
result.solanaRpcUrl = args[++i];
|
|
103
200
|
}
|
|
201
|
+
else if (arg === '--strict-issuer-history') {
|
|
202
|
+
result.strictIssuerHistory = true;
|
|
203
|
+
}
|
|
204
|
+
else if (arg === '--issuer-history-file' && args[i + 1]) {
|
|
205
|
+
result.issuerHistoryFile = args[++i];
|
|
206
|
+
}
|
|
207
|
+
else if (arg === '--canonical-preimage' && args[i + 1]) {
|
|
208
|
+
result.canonicalPreimageFile = args[++i];
|
|
209
|
+
}
|
|
210
|
+
else if (arg === '--no-issuer-history') {
|
|
211
|
+
result.noIssuerHistory = true;
|
|
212
|
+
}
|
|
213
|
+
else if (arg === '--no-preimage') {
|
|
214
|
+
result.noPreimage = true;
|
|
215
|
+
}
|
|
104
216
|
else if (arg === '--json') {
|
|
105
217
|
result.json = true;
|
|
106
218
|
}
|
|
@@ -108,7 +220,9 @@ function parseArgs(args) {
|
|
|
108
220
|
result.quiet = true;
|
|
109
221
|
}
|
|
110
222
|
else if (!arg.startsWith('-')) {
|
|
111
|
-
result.
|
|
223
|
+
result.positionals.push(arg);
|
|
224
|
+
if (!result.file)
|
|
225
|
+
result.file = arg;
|
|
112
226
|
}
|
|
113
227
|
}
|
|
114
228
|
return result;
|
|
@@ -132,11 +246,216 @@ function formatAmount(units) {
|
|
|
132
246
|
const usd = n / 1e6;
|
|
133
247
|
return `$${usd.toFixed(usd >= 0.01 ? 2 : 6)} (${units} units)`;
|
|
134
248
|
}
|
|
249
|
+
function readJson(file) {
|
|
250
|
+
const content = file === '-' ? (0, node_fs_1.readFileSync)(0, 'utf8') : (0, node_fs_1.readFileSync)(file, 'utf8');
|
|
251
|
+
return JSON.parse(content);
|
|
252
|
+
}
|
|
253
|
+
function printLane(lane) {
|
|
254
|
+
const bit = (value) => (value == null ? 'unknown' : (value ? 'true' : 'false'));
|
|
255
|
+
console.log(` Receipt lane (unsigned)`);
|
|
256
|
+
console.log(` ─────────────────────────────────────────────────`);
|
|
257
|
+
console.log(` book_seq: ${lane.book_seq ?? '—'}`);
|
|
258
|
+
console.log(` settled_by: ${lane.settled_by ?? 'null'}`);
|
|
259
|
+
console.log(` settled: ${bit(lane.settled)}`);
|
|
260
|
+
console.log(` anchor_changed_since_binding: ${bit(lane.anchor_changed_since_binding)}`);
|
|
261
|
+
console.log(` freeze: ${lane.freeze ? 'YES' : 'no'}`);
|
|
262
|
+
if (lane.reason)
|
|
263
|
+
console.log(` reason: ${lane.reason}`);
|
|
264
|
+
console.log(` classification:${lane.classification}`);
|
|
265
|
+
console.log(` ordering: ${lane.ordering}`);
|
|
266
|
+
console.log(` boundary: ${lane.boundary}`);
|
|
267
|
+
if (lane.local_check) {
|
|
268
|
+
console.log(` local_check: payee ${lane.local_check.payee} amount ${lane.local_check.amount_atomic} (not a payment)`);
|
|
269
|
+
}
|
|
270
|
+
console.log(` ${lane.rule}`);
|
|
271
|
+
console.log('');
|
|
272
|
+
}
|
|
273
|
+
function printAnchor(result, json, quiet) {
|
|
274
|
+
if (json) {
|
|
275
|
+
console.log(JSON.stringify(result, null, 2));
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
if (quiet && result.overall !== 'failed')
|
|
279
|
+
return;
|
|
280
|
+
const mark = (ok) => (ok ? '✓ YES' : '✗ NO');
|
|
281
|
+
console.log('');
|
|
282
|
+
console.log(' Anchored receipt root');
|
|
283
|
+
console.log(' ─────────────────────────────────────────────────');
|
|
284
|
+
console.log(` Root: ${result.root || '—'}`);
|
|
285
|
+
console.log(` Inclusion: ${mark(result.inclusion.valid)}${result.inclusion.reason ? ` (${result.inclusion.reason})` : ''}`);
|
|
286
|
+
console.log(` Leaf source: ${result.inclusion.leaf_source}`);
|
|
287
|
+
console.log(` Solana: ${result.solana.checked ? mark(result.solana.valid) : (result.solana.reason || 'not checked')}`);
|
|
288
|
+
if (result.solana.signature)
|
|
289
|
+
console.log(` Signature: ${result.solana.signature}`);
|
|
290
|
+
if (result.solana.slot != null)
|
|
291
|
+
console.log(` Slot: ${result.solana.slot}`);
|
|
292
|
+
if (result.solana.cluster)
|
|
293
|
+
console.log(` Cluster: ${result.solana.cluster}`);
|
|
294
|
+
if (result.solana.memo)
|
|
295
|
+
console.log(` Memo: ${result.solana.memo}`);
|
|
296
|
+
if (result.solana.reason && !result.solana.valid)
|
|
297
|
+
console.log(` Solana reason: ${result.solana.reason}`);
|
|
298
|
+
console.log(` Base: ${result.base.checked ? mark(result.base.valid) : (result.base.reason || 'not checked')}`);
|
|
299
|
+
if (result.base.tx)
|
|
300
|
+
console.log(` Base tx: ${result.base.tx}`);
|
|
301
|
+
if (result.base.chain_id != null)
|
|
302
|
+
console.log(` Chain id: ${result.base.chain_id}`);
|
|
303
|
+
if (result.base.reason && !result.base.valid)
|
|
304
|
+
console.log(` Base reason: ${result.base.reason}`);
|
|
305
|
+
console.log('');
|
|
306
|
+
console.log(' What this proves');
|
|
307
|
+
console.log(' ─────────────────────────────────────────────────');
|
|
308
|
+
for (const line of result.proves)
|
|
309
|
+
console.log(` ${line}`);
|
|
310
|
+
console.log('');
|
|
311
|
+
console.log(' What this does not prove');
|
|
312
|
+
console.log(' ─────────────────────────────────────────────────');
|
|
313
|
+
for (const line of result.does_not_prove)
|
|
314
|
+
console.log(` ${line}`);
|
|
315
|
+
console.log('');
|
|
316
|
+
console.log(` Overall: ${result.overall.toUpperCase()}`);
|
|
317
|
+
if (result.errors.length > 0)
|
|
318
|
+
console.log(` Errors: ${result.errors.join(', ')}`);
|
|
319
|
+
console.log('');
|
|
320
|
+
}
|
|
321
|
+
async function runAnchor(args) {
|
|
322
|
+
const receiptPath = args.file;
|
|
323
|
+
const inclusionPath = args.inclusionFile || args.positionals[1] || null;
|
|
324
|
+
const headPath = args.headFile || (args.inclusionFile ? null : args.positionals[2]) || null;
|
|
325
|
+
if (!receiptPath || !inclusionPath || !headPath) {
|
|
326
|
+
console.error('Anchor check needs a receipt, an inclusion proof, and a tree head.');
|
|
327
|
+
console.error(' xfuel-verify receipt.json inclusion.json head.json --rpc');
|
|
328
|
+
return 3;
|
|
329
|
+
}
|
|
330
|
+
let receipt;
|
|
331
|
+
let inclusion;
|
|
332
|
+
let head;
|
|
333
|
+
try {
|
|
334
|
+
receipt = readJson(receiptPath);
|
|
335
|
+
inclusion = readJson(inclusionPath);
|
|
336
|
+
head = readJson(headPath);
|
|
337
|
+
}
|
|
338
|
+
catch (err) {
|
|
339
|
+
console.error(`Error reading anchor inputs: ${err instanceof Error ? err.message : String(err)}`);
|
|
340
|
+
return 3;
|
|
341
|
+
}
|
|
342
|
+
const result = await (0, anchor_witness_js_1.verifyAnchoredRoot)({
|
|
343
|
+
receipt,
|
|
344
|
+
inclusion,
|
|
345
|
+
head,
|
|
346
|
+
baseRpcUrl: args.rpcUrl || undefined,
|
|
347
|
+
solanaRpcUrl: args.solanaRpcUrl || undefined,
|
|
348
|
+
});
|
|
349
|
+
const verified = await (0, index_js_1.verifyReceipt)(receipt, { head });
|
|
350
|
+
const lane = verified.receipt_lane;
|
|
351
|
+
if (args.json) {
|
|
352
|
+
console.log(JSON.stringify({ ...result, receipt_lane: lane }, null, 2));
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
printAnchor(result, false, args.quiet);
|
|
356
|
+
if (!args.quiet)
|
|
357
|
+
printLane(lane);
|
|
358
|
+
}
|
|
359
|
+
if (result.overall === 'verified')
|
|
360
|
+
return 0;
|
|
361
|
+
if (result.overall === 'partial')
|
|
362
|
+
return 2;
|
|
363
|
+
return 1;
|
|
364
|
+
}
|
|
365
|
+
async function runRefusal(doc, args) {
|
|
366
|
+
const trustedKids = args.trustedKids ?? index_js_1.DEFAULT_TRUSTED_ISSUER_KIDS;
|
|
367
|
+
const result = (0, index_js_1.verifyRefusal)(doc, {
|
|
368
|
+
jwks: args.jwks,
|
|
369
|
+
trustedKids,
|
|
370
|
+
});
|
|
371
|
+
const preimages = await (0, preimage_js_1.verifyPublishedPreimages)(doc, {
|
|
372
|
+
requirePreimages: args.requirePreimages,
|
|
373
|
+
});
|
|
374
|
+
let canonicalFailed = false;
|
|
375
|
+
if (args.canonicalPreimage != null) {
|
|
376
|
+
const canonical = (0, canonical_preimage_js_1.verifyCanonicalPreimageBytes)(args.canonicalPreimage, result.payload_hash);
|
|
377
|
+
canonicalFailed = !canonical.ok;
|
|
378
|
+
if (canonicalFailed)
|
|
379
|
+
preimages.errors.push(`canonical preimage: ${canonical.reason}`);
|
|
380
|
+
if (canonicalFailed)
|
|
381
|
+
preimages.ok = false;
|
|
382
|
+
}
|
|
383
|
+
const pin = result.valid ? (0, issuer_history_js_1.readIssuerHistoryPin)({
|
|
384
|
+
issuer_history: result.issuer_history,
|
|
385
|
+
}) : null;
|
|
386
|
+
const history = args.skipIssuerHistory
|
|
387
|
+
? { checked: false, ok: true, unreachable: false, warning: null, reason: null, kid: result.kid ?? null }
|
|
388
|
+
: await (0, issuer_history_js_1.checkReceiptIssuerHistory)(doc, {
|
|
389
|
+
document: args.issuerHistory,
|
|
390
|
+
documentBytes: args.issuerHistoryBytes,
|
|
391
|
+
fetchHistory: args.fetchIssuerHistory,
|
|
392
|
+
strict: args.strictIssuerHistory,
|
|
393
|
+
jwks: args.jwks,
|
|
394
|
+
trustedKids,
|
|
395
|
+
issuedAt: doc.issued_at ?? null,
|
|
396
|
+
kid: result.kid ?? doc.issuer_signature?.kid ?? null,
|
|
397
|
+
pin,
|
|
398
|
+
requirePin: result.valid && Number(result.payload_version) >= 2,
|
|
399
|
+
});
|
|
400
|
+
const historyFailed = history.checked && !history.ok;
|
|
401
|
+
const failed = !result.valid || !preimages.ok || historyFailed || canonicalFailed;
|
|
402
|
+
if (args.json) {
|
|
403
|
+
console.log(JSON.stringify({ ...result, preimages, issuer_history: history }, null, 2));
|
|
404
|
+
}
|
|
405
|
+
else if (!args.quiet || failed) {
|
|
406
|
+
console.log('');
|
|
407
|
+
console.log(' Chit402 Refusal Verification');
|
|
408
|
+
console.log(' ─────────────────────────────────────────────────');
|
|
409
|
+
console.log(` Schema: ${result.schema}`);
|
|
410
|
+
console.log(` Refusal ID: ${result.refusal_id || doc.refusal_id || '—'}`);
|
|
411
|
+
console.log(` Code: ${result.refusal_code || doc.refusal_code || '—'}`);
|
|
412
|
+
console.log(` Nonce: ${result.nonce || '—'}`);
|
|
413
|
+
console.log(` Chain: ${result.chain_id ?? 'null'}`);
|
|
414
|
+
console.log(` Charged: false`);
|
|
415
|
+
console.log('');
|
|
416
|
+
console.log(' Issuer Signature');
|
|
417
|
+
console.log(' ─────────────────────────────────────────────────');
|
|
418
|
+
console.log(` Valid: ${result.valid ? '✓ YES' : '✗ NO'}`);
|
|
419
|
+
if (result.kid)
|
|
420
|
+
console.log(` Kid: ${result.kid}`);
|
|
421
|
+
if (!result.valid && result.reason)
|
|
422
|
+
console.log(` Reason: ${result.reason}`);
|
|
423
|
+
console.log('');
|
|
424
|
+
console.log(' What this proves');
|
|
425
|
+
console.log(' ─────────────────────────────────────────────────');
|
|
426
|
+
for (const line of result.proves)
|
|
427
|
+
console.log(` ${line}`);
|
|
428
|
+
console.log('');
|
|
429
|
+
console.log(' What this does not prove');
|
|
430
|
+
console.log(' ─────────────────────────────────────────────────');
|
|
431
|
+
for (const line of result.does_not_prove)
|
|
432
|
+
console.log(` ${line}`);
|
|
433
|
+
console.log('');
|
|
434
|
+
console.log(` Overall: ${failed ? 'FAILED' : 'VERIFIED'}`);
|
|
435
|
+
if (!preimages.ok)
|
|
436
|
+
console.log(` Preimages: ${preimages.errors.join('; ')}`);
|
|
437
|
+
if (history.warning)
|
|
438
|
+
console.log(` Issuer history: ${history.warning}`);
|
|
439
|
+
if (historyFailed && history.reason)
|
|
440
|
+
console.log(` Issuer history: ${history.reason}`);
|
|
441
|
+
console.log('');
|
|
442
|
+
}
|
|
443
|
+
return failed ? 1 : 0;
|
|
444
|
+
}
|
|
135
445
|
async function main() {
|
|
136
446
|
const args = parseArgs(process.argv.slice(2));
|
|
137
|
-
|
|
447
|
+
const anchorMode = args.anchorFlag
|
|
448
|
+
|| Boolean(args.inclusionFile || args.headFile)
|
|
449
|
+
|| (args.positionals.length >= 3 && args.sawRpc);
|
|
450
|
+
if (args.help) {
|
|
138
451
|
console.log(HELP);
|
|
139
|
-
return
|
|
452
|
+
return 0;
|
|
453
|
+
}
|
|
454
|
+
if (anchorMode)
|
|
455
|
+
return runAnchor(args);
|
|
456
|
+
if (!args.file) {
|
|
457
|
+
console.log(HELP);
|
|
458
|
+
return 3;
|
|
140
459
|
}
|
|
141
460
|
let receipt;
|
|
142
461
|
try {
|
|
@@ -162,12 +481,72 @@ async function main() {
|
|
|
162
481
|
return 3;
|
|
163
482
|
}
|
|
164
483
|
}
|
|
484
|
+
const trustedKids = args.noTrustedKid
|
|
485
|
+
? []
|
|
486
|
+
: (args.trustedKids ?? index_js_1.DEFAULT_TRUSTED_ISSUER_KIDS);
|
|
487
|
+
if ((0, index_js_1.isRefusalDocument)(receipt)) {
|
|
488
|
+
let issuerHistory = null;
|
|
489
|
+
let issuerHistoryBytes = null;
|
|
490
|
+
if (args.issuerHistoryFile) {
|
|
491
|
+
issuerHistoryBytes = (0, node_fs_1.readFileSync)(args.issuerHistoryFile, 'utf8');
|
|
492
|
+
issuerHistory = JSON.parse(issuerHistoryBytes);
|
|
493
|
+
}
|
|
494
|
+
let canonicalPreimage = null;
|
|
495
|
+
if (args.canonicalPreimageFile) {
|
|
496
|
+
canonicalPreimage = (0, node_fs_1.readFileSync)(args.canonicalPreimageFile, 'utf8');
|
|
497
|
+
}
|
|
498
|
+
return runRefusal(receipt, {
|
|
499
|
+
jwks,
|
|
500
|
+
trustedKids,
|
|
501
|
+
json: args.json,
|
|
502
|
+
quiet: args.quiet,
|
|
503
|
+
requirePreimages: !args.noPreimage,
|
|
504
|
+
issuerHistory,
|
|
505
|
+
issuerHistoryBytes,
|
|
506
|
+
fetchIssuerHistory: !args.noIssuerHistory && !issuerHistory,
|
|
507
|
+
strictIssuerHistory: args.strictIssuerHistory,
|
|
508
|
+
skipIssuerHistory: args.noIssuerHistory,
|
|
509
|
+
canonicalPreimage,
|
|
510
|
+
});
|
|
511
|
+
}
|
|
512
|
+
let issuerHistory = null;
|
|
513
|
+
let issuerHistoryBytes = null;
|
|
514
|
+
if (args.issuerHistoryFile) {
|
|
515
|
+
try {
|
|
516
|
+
issuerHistoryBytes = (0, node_fs_1.readFileSync)(args.issuerHistoryFile, 'utf8');
|
|
517
|
+
issuerHistory = JSON.parse(issuerHistoryBytes);
|
|
518
|
+
}
|
|
519
|
+
catch (err) {
|
|
520
|
+
console.error(`Error reading issuer history: ${err instanceof Error ? err.message : String(err)}`);
|
|
521
|
+
return 3;
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
let canonicalPreimage = null;
|
|
525
|
+
if (args.canonicalPreimageFile) {
|
|
526
|
+
try {
|
|
527
|
+
canonicalPreimage = (0, node_fs_1.readFileSync)(args.canonicalPreimageFile, 'utf8');
|
|
528
|
+
}
|
|
529
|
+
catch (err) {
|
|
530
|
+
console.error(`Error reading canonical preimage: ${err instanceof Error ? err.message : String(err)}`);
|
|
531
|
+
return 3;
|
|
532
|
+
}
|
|
533
|
+
}
|
|
165
534
|
const result = await (0, index_js_1.verifyReceipt)(receipt, {
|
|
166
535
|
jwks,
|
|
536
|
+
jwksUri: args.jwksUrl || undefined,
|
|
537
|
+
fetchJwks: args.fetchJwks,
|
|
538
|
+
trustedKids,
|
|
167
539
|
checkNullifier: args.checkNullifier,
|
|
168
540
|
checkPayer: args.checkPayer,
|
|
169
541
|
rpcUrl: args.rpcUrl || undefined,
|
|
170
542
|
solanaRpcUrl: args.solanaRpcUrl || undefined,
|
|
543
|
+
requirePreimages: !args.noPreimage,
|
|
544
|
+
issuerHistory,
|
|
545
|
+
issuerHistoryBytes,
|
|
546
|
+
fetchIssuerHistory: !args.noIssuerHistory && !issuerHistory,
|
|
547
|
+
strictIssuerHistory: args.strictIssuerHistory,
|
|
548
|
+
skipIssuerHistory: args.noIssuerHistory,
|
|
549
|
+
canonicalPreimage,
|
|
171
550
|
});
|
|
172
551
|
if (args.json) {
|
|
173
552
|
console.log(JSON.stringify(result, null, 2));
|
|
@@ -179,7 +558,7 @@ async function main() {
|
|
|
179
558
|
console.log(` Receipt ID: ${result.receipt_id}`);
|
|
180
559
|
console.log(` Hub: ${result.hub || '—'}`);
|
|
181
560
|
console.log(` Model: ${result.model || '—'}`);
|
|
182
|
-
console.log(` Amount: ${formatAmount(result.amount_usdc)}`);
|
|
561
|
+
console.log(` Amount: ${result.issuer_signature.valid ? formatAmount(result.amount_usdc) : '— (not verified)'}`);
|
|
183
562
|
console.log(` TX: ${result.tx || '—'}`);
|
|
184
563
|
console.log(` Output Hash: ${result.output_hash ? result.output_hash.slice(0, 18) + '…' : '—'}`);
|
|
185
564
|
console.log('');
|
|
@@ -192,7 +571,7 @@ async function main() {
|
|
|
192
571
|
console.log(` Covers: ${result.binding.covers.join(', ')}`);
|
|
193
572
|
}
|
|
194
573
|
else {
|
|
195
|
-
console.log(` Status:
|
|
574
|
+
console.log(` Status: ${result.binding.reason || 'No payment-binding commitment'}`);
|
|
196
575
|
}
|
|
197
576
|
console.log('');
|
|
198
577
|
console.log(` Issuer Signature`);
|
|
@@ -200,17 +579,15 @@ async function main() {
|
|
|
200
579
|
if (result.issuer_signature.checked) {
|
|
201
580
|
console.log(` Kid: ${result.issuer_signature.kid || '—'}`);
|
|
202
581
|
console.log(` Valid: ${result.issuer_signature.valid ? '✓ YES' : '✗ NO'}`);
|
|
582
|
+
console.log(` Key trusted: ${result.issuer_signature.key_trusted ? '✓ YES' : '✗ NO'}${result.issuer_signature.trust ? ` (${result.issuer_signature.trust})` : ''}`);
|
|
203
583
|
if (!result.issuer_signature.valid && result.issuer_signature.reason) {
|
|
204
584
|
console.log(` Reason: ${result.issuer_signature.reason}`);
|
|
205
585
|
}
|
|
206
586
|
}
|
|
207
587
|
else {
|
|
208
588
|
console.log(` Status: ${result.issuer_signature.reason || 'Not checked'}`);
|
|
209
|
-
if (receipt.issuer_signature && !args.jwksFile) {
|
|
210
|
-
|
|
211
|
-
console.log(hasPin
|
|
212
|
-
? ` (pinned issuer_jwk on receipt — signature verified offline)`
|
|
213
|
-
: ` (receipt has signature — pass --jwks-file to verify)`);
|
|
589
|
+
if (receipt.issuer_signature && !args.jwksFile && !args.fetchJwks && !args.jwksUrl) {
|
|
590
|
+
console.log(` (pass --jwks-file, --fetch-jwks, or rely on the default trusted kid)`);
|
|
214
591
|
}
|
|
215
592
|
}
|
|
216
593
|
console.log('');
|
|
@@ -218,6 +595,10 @@ async function main() {
|
|
|
218
595
|
console.log(` ─────────────────────────────────────────────────`);
|
|
219
596
|
if (result.payer.checked) {
|
|
220
597
|
console.log(` Rail: ${result.payer.rail || '—'}`);
|
|
598
|
+
console.log(` Payer: ${result.payer.payer_wallet || '—'}`);
|
|
599
|
+
console.log(` Payee: ${result.payer.payee || '—'}`);
|
|
600
|
+
console.log(` Asset: ${result.payer.asset || '—'}`);
|
|
601
|
+
console.log(` Amount: ${formatAmount(result.payer.amount || null)}`);
|
|
221
602
|
console.log(` Valid: ${result.payer.valid ? '✓ YES' : '✗ NO'}`);
|
|
222
603
|
if (!result.payer.valid && result.payer.reason) {
|
|
223
604
|
console.log(` Reason: ${result.payer.reason}`);
|
|
@@ -225,8 +606,16 @@ async function main() {
|
|
|
225
606
|
}
|
|
226
607
|
else {
|
|
227
608
|
console.log(` Status: ${result.payer.reason || 'Not checked'}`);
|
|
228
|
-
if (
|
|
229
|
-
console.log(` (pass --check-payer to verify on-chain)`);
|
|
609
|
+
if (result.issuer_signature.valid && result.payer.payer_wallet && result.tx && !args.checkPayer) {
|
|
610
|
+
console.log(` (pass --check-payer to verify payer, payee, asset, and amount on-chain)`);
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
if (result.claim_mismatches.length > 0) {
|
|
614
|
+
console.log('');
|
|
615
|
+
console.log(` Outer / signed mismatches`);
|
|
616
|
+
console.log(` ─────────────────────────────────────────────────`);
|
|
617
|
+
for (const mismatch of result.claim_mismatches) {
|
|
618
|
+
console.log(` ${mismatch.field}: outer ${mismatch.outer} ≠ signed ${mismatch.signed}`);
|
|
230
619
|
}
|
|
231
620
|
}
|
|
232
621
|
console.log('');
|
|
@@ -245,6 +634,16 @@ async function main() {
|
|
|
245
634
|
console.log(` Status: No nullifier (Tier-1 receipt)`);
|
|
246
635
|
}
|
|
247
636
|
console.log('');
|
|
637
|
+
printLane(result.receipt_lane);
|
|
638
|
+
if (result.preimages.checked) {
|
|
639
|
+
console.log(` Preimages: ${result.preimages.ok ? '✓ MATCH' : '✗ ' + result.preimages.errors.join('; ')}`);
|
|
640
|
+
}
|
|
641
|
+
if (result.issuer_history.checked) {
|
|
642
|
+
console.log(` Issuer history: ${result.issuer_history.ok ? '✓ kid in window' : '✗ ' + (result.issuer_history.reason || 'failed')}`);
|
|
643
|
+
}
|
|
644
|
+
else if (result.issuer_history.warning) {
|
|
645
|
+
console.log(` Issuer history: ${result.issuer_history.warning}`);
|
|
646
|
+
}
|
|
248
647
|
console.log(` Overall: ${result.overall.toUpperCase()}`);
|
|
249
648
|
if (result.errors.length > 0) {
|
|
250
649
|
console.log(` Errors: ${result.errors.join(', ')}`);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|