@xfuel/verify 0.3.5 → 0.4.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.
Files changed (103) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +82 -269
  3. package/cli.js +40 -0
  4. package/index.cjs +8 -0
  5. package/index.d.ts +5 -0
  6. package/index.js +7 -0
  7. package/package.json +61 -67
  8. package/dist/anchor-trust.d.ts +0 -129
  9. package/dist/anchor-trust.d.ts.map +0 -1
  10. package/dist/anchor-trust.js +0 -395
  11. package/dist/anchor-trust.js.map +0 -1
  12. package/dist/anchor-witness.d.ts +0 -265
  13. package/dist/anchor-witness.d.ts.map +0 -1
  14. package/dist/anchor-witness.js +0 -818
  15. package/dist/anchor-witness.js.map +0 -1
  16. package/dist/base-payer.d.ts +0 -65
  17. package/dist/base-payer.d.ts.map +0 -1
  18. package/dist/base-payer.js +0 -222
  19. package/dist/base-payer.js.map +0 -1
  20. package/dist/binding.d.ts +0 -52
  21. package/dist/binding.d.ts.map +0 -1
  22. package/dist/binding.js +0 -80
  23. package/dist/binding.js.map +0 -1
  24. package/dist/canonical-preimage.d.ts +0 -9
  25. package/dist/canonical-preimage.d.ts.map +0 -1
  26. package/dist/canonical-preimage.js +0 -25
  27. package/dist/canonical-preimage.js.map +0 -1
  28. package/dist/carry-forward.d.ts +0 -79
  29. package/dist/carry-forward.d.ts.map +0 -1
  30. package/dist/carry-forward.js +0 -184
  31. package/dist/carry-forward.js.map +0 -1
  32. package/dist/cli.d.ts +0 -19
  33. package/dist/cli.d.ts.map +0 -1
  34. package/dist/cli.js +0 -1534
  35. package/dist/cli.js.map +0 -1
  36. package/dist/epoch.d.ts +0 -143
  37. package/dist/epoch.d.ts.map +0 -1
  38. package/dist/epoch.js +0 -352
  39. package/dist/epoch.js.map +0 -1
  40. package/dist/head-binding.d.ts +0 -24
  41. package/dist/head-binding.d.ts.map +0 -1
  42. package/dist/head-binding.js +0 -61
  43. package/dist/head-binding.js.map +0 -1
  44. package/dist/index.d.ts +0 -574
  45. package/dist/index.d.ts.map +0 -1
  46. package/dist/index.js +0 -1627
  47. package/dist/index.js.map +0 -1
  48. package/dist/issuer-history.d.ts +0 -110
  49. package/dist/issuer-history.d.ts.map +0 -1
  50. package/dist/issuer-history.js +0 -348
  51. package/dist/issuer-history.js.map +0 -1
  52. package/dist/issuer-pin.d.ts +0 -126
  53. package/dist/issuer-pin.d.ts.map +0 -1
  54. package/dist/issuer-pin.js +0 -567
  55. package/dist/issuer-pin.js.map +0 -1
  56. package/dist/jcs.d.ts +0 -8
  57. package/dist/jcs.d.ts.map +0 -1
  58. package/dist/jcs.js +0 -64
  59. package/dist/jcs.js.map +0 -1
  60. package/dist/jws.d.ts +0 -46
  61. package/dist/jws.d.ts.map +0 -1
  62. package/dist/jws.js +0 -129
  63. package/dist/jws.js.map +0 -1
  64. package/dist/payer.d.ts +0 -65
  65. package/dist/payer.d.ts.map +0 -1
  66. package/dist/payer.js +0 -148
  67. package/dist/payer.js.map +0 -1
  68. package/dist/preimage.d.ts +0 -78
  69. package/dist/preimage.d.ts.map +0 -1
  70. package/dist/preimage.js +0 -363
  71. package/dist/preimage.js.map +0 -1
  72. package/dist/receipt-lane.d.ts +0 -235
  73. package/dist/receipt-lane.d.ts.map +0 -1
  74. package/dist/receipt-lane.js +0 -446
  75. package/dist/receipt-lane.js.map +0 -1
  76. package/dist/receipt-version.d.ts +0 -92
  77. package/dist/receipt-version.d.ts.map +0 -1
  78. package/dist/receipt-version.js +0 -323
  79. package/dist/receipt-version.js.map +0 -1
  80. package/dist/refusal.d.ts +0 -93
  81. package/dist/refusal.d.ts.map +0 -1
  82. package/dist/refusal.js +0 -249
  83. package/dist/refusal.js.map +0 -1
  84. package/dist/request-binding.d.ts +0 -7
  85. package/dist/request-binding.d.ts.map +0 -1
  86. package/dist/request-binding.js +0 -26
  87. package/dist/request-binding.js.map +0 -1
  88. package/dist/row-hash.d.ts +0 -22
  89. package/dist/row-hash.d.ts.map +0 -1
  90. package/dist/row-hash.js +0 -26
  91. package/dist/row-hash.js.map +0 -1
  92. package/dist/shell.d.ts +0 -65
  93. package/dist/shell.d.ts.map +0 -1
  94. package/dist/shell.js +0 -268
  95. package/dist/shell.js.map +0 -1
  96. package/dist/solana-payer.d.ts +0 -99
  97. package/dist/solana-payer.d.ts.map +0 -1
  98. package/dist/solana-payer.js +0 -258
  99. package/dist/solana-payer.js.map +0 -1
  100. package/dist/v11-receipt.d.ts +0 -23
  101. package/dist/v11-receipt.d.ts.map +0 -1
  102. package/dist/v11-receipt.js +0 -368
  103. package/dist/v11-receipt.js.map +0 -1
@@ -1,23 +0,0 @@
1
- import type { ReceiptVerification, VerifyReceiptOptions, XFuelReceipt } from './index.js';
2
- export declare const V11_SIGNED_FIELDS: readonly ["v", "receipt_id", "iss", "kid", "issued_at", "asset", "chain", "pay_to", "amount_gross", "amount_settled", "payment_tx", "payer", "book_ref", "seq", "request_digest", "output_commitment", "accounting_commitment", "routing_commitment", "product", "proof_tier", "covers"];
3
- export declare const V11_REFUSAL_FIELDS: readonly ["v", "refusal_id", "iss", "kid", "issued_at", "reason", "request_digest", "refusal_commitment"];
4
- export declare function hkdfSubkey(saltHex: string, label: string): Buffer;
5
- export declare function commitHmac(subkey: Buffer, message: Buffer | string): string;
6
- /**
7
- * Distinct rejection reasons. The salt is not lowercased, trimmed, or stripped.
8
- * @returns null when the salt is 64 lowercase hex chars.
9
- */
10
- export declare function v11SaltRejection(salt: string): string | null;
11
- /** Failed receipt. amount, payer, and tx stay null. Does not throw. */
12
- export declare function rejectReceiptVersion(receipt: XFuelReceipt | null | undefined, errors: string[], reason: string): Promise<ReceiptVerification>;
13
- export declare function verifyV11Receipt(receipt: XFuelReceipt, options?: VerifyReceiptOptions): Promise<ReceiptVerification>;
14
- /** payment_unbound plus a sub-reason. Chain, tx, payee, payer, and amounts. */
15
- export declare function paymentBindingErrors(payload: Record<string, unknown>): string[];
16
- export declare function verifyReceiptUpToV10(receipt: XFuelReceipt, options: VerifyReceiptOptions, full: (receipt: XFuelReceipt, options: VerifyReceiptOptions) => Promise<ReceiptVerification>): Promise<ReceiptVerification>;
17
- export declare function readOpenFile(spec: string): {
18
- kind: 'output' | 'accounting' | 'routing' | 'refusal';
19
- bytes: Buffer;
20
- text: string;
21
- };
22
- export declare function sha256Hex(bytes: Buffer | string): string;
23
- //# sourceMappingURL=v11-receipt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"v11-receipt.d.ts","sourceRoot":"","sources":["../src/v11-receipt.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI1F,eAAO,MAAM,iBAAiB,0RAsBpB,CAAC;AAEX,eAAO,MAAM,kBAAkB,2GASrB,CAAC;AAmBX,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAG3E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM5D;AA+ED,uEAAuE;AACvE,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,EACxC,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC,CAgB9B;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,YAAY,EACrB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CA0D9B;AAuBD,+EAA+E;AAC/E,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAmB/E;AAgCD,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,oBAAoB,EAC7B,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC,mBAAmB,CAAC,GAC3F,OAAO,CAAC,mBAAmB,CAAC,CAU9B;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,QAAQ,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAUjI;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAExD"}
@@ -1,368 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.V11_REFUSAL_FIELDS = exports.V11_SIGNED_FIELDS = void 0;
4
- exports.hkdfSubkey = hkdfSubkey;
5
- exports.commitHmac = commitHmac;
6
- exports.v11SaltRejection = v11SaltRejection;
7
- exports.rejectReceiptVersion = rejectReceiptVersion;
8
- exports.verifyV11Receipt = verifyV11Receipt;
9
- exports.paymentBindingErrors = paymentBindingErrors;
10
- exports.verifyReceiptUpToV10 = verifyReceiptUpToV10;
11
- exports.readOpenFile = readOpenFile;
12
- exports.sha256Hex = sha256Hex;
13
- /**
14
- * v11 receipt checks.
15
- *
16
- * Stranger mode: signature, strict field set, 64-hex commitments, payment
17
- * binding. Holder mode adds `--salt` and `--open`. A malformed salt is
18
- * rejected and never lowercased or stripped.
19
- *
20
- * amount_gross is the quoted price (integer > 0). amount_settled is the
21
- * amount transferred by the bound payment (integer >= amount_gross). A
22
- * missing, non-integer, or short settled amount is payment_unbound.
23
- *
24
- * verifyReceiptUpToV10 refuses anything outside the legacy 1–10 allowlist
25
- * before that path runs.
26
- */
27
- const node_crypto_1 = require("node:crypto");
28
- const node_fs_1 = require("node:fs");
29
- const payer_js_1 = require("./payer.js");
30
- const receipt_version_js_1 = require("./receipt-version.js");
31
- exports.V11_SIGNED_FIELDS = [
32
- 'v',
33
- 'receipt_id',
34
- 'iss',
35
- 'kid',
36
- 'issued_at',
37
- 'asset',
38
- 'chain',
39
- 'pay_to',
40
- 'amount_gross',
41
- 'amount_settled',
42
- 'payment_tx',
43
- 'payer',
44
- 'book_ref',
45
- 'seq',
46
- 'request_digest',
47
- 'output_commitment',
48
- 'accounting_commitment',
49
- 'routing_commitment',
50
- 'product',
51
- 'proof_tier',
52
- 'covers',
53
- ];
54
- exports.V11_REFUSAL_FIELDS = [
55
- 'v',
56
- 'refusal_id',
57
- 'iss',
58
- 'kid',
59
- 'issued_at',
60
- 'reason',
61
- 'request_digest',
62
- 'refusal_commitment',
63
- ];
64
- const DISALLOWED = new Set([
65
- 'internal_breakdown',
66
- 'provider',
67
- 'model',
68
- 'cap',
69
- 'spent',
70
- 'prompt_tokens',
71
- 'completion_tokens',
72
- 'total_tokens',
73
- 'output_hash',
74
- 'claim_id',
75
- 'book_id',
76
- 'agent_id',
77
- ]);
78
- const HEX64 = /^[0-9a-f]{64}$/;
79
- function hkdfSubkey(saltHex, label) {
80
- return Buffer.from((0, node_crypto_1.hkdfSync)('sha256', Buffer.from(saltHex, 'hex'), Buffer.alloc(0), Buffer.from(label, 'utf8'), 32));
81
- }
82
- function commitHmac(subkey, message) {
83
- const bytes = Buffer.isBuffer(message) ? message : Buffer.from(message, 'utf8');
84
- return (0, node_crypto_1.createHmac)('sha256', subkey).update(bytes).digest('hex');
85
- }
86
- /**
87
- * Distinct rejection reasons. The salt is not lowercased, trimmed, or stripped.
88
- * @returns null when the salt is 64 lowercase hex chars.
89
- */
90
- function v11SaltRejection(salt) {
91
- if (typeof salt !== 'string')
92
- return 'salt_length';
93
- if (salt.startsWith('0x') || salt.startsWith('0X'))
94
- return 'salt_prefix';
95
- if (/[A-F]/.test(salt))
96
- return 'salt_uppercase';
97
- if (!/^[0-9a-f]{64}$/.test(salt))
98
- return 'salt_length';
99
- return null;
100
- }
101
- function walkDisallowed(value, errors) {
102
- if (Array.isArray(value)) {
103
- for (const item of value)
104
- walkDisallowed(item, errors);
105
- return;
106
- }
107
- if (!value || typeof value !== 'object') {
108
- if (typeof value === 'string' && value.includes('ISSUER_PRIVATE_KEY'))
109
- errors.push('v11_disallowed_field');
110
- return;
111
- }
112
- for (const [key, child] of Object.entries(value)) {
113
- if (DISALLOWED.has(key) || key === 'salt' || key === 'request_preimage')
114
- errors.push('v11_disallowed_field');
115
- else
116
- walkDisallowed(child, errors);
117
- }
118
- }
119
- function shell(receipt, errors, issuer, lane) {
120
- const failed = errors.length > 0 || issuer.valid !== true;
121
- const payload = issuer.payload || {};
122
- return {
123
- receipt_id: String(receipt.receipt_id || payload.receipt_id || receipt.task_id || ''),
124
- binding: {
125
- verified: issuer.valid === true && !errors.some((e) => e.startsWith('v11_')),
126
- expected: typeof payload.payment_tx === 'string' ? payload.payment_tx : null,
127
- recomputed: null,
128
- matches: issuer.valid === true,
129
- covers: ['payment'],
130
- reason: errors[0],
131
- },
132
- issuer_signature: issuer,
133
- payer: {
134
- checked: false,
135
- valid: false,
136
- payer_wallet: typeof payload.payer === 'string' ? payload.payer : null,
137
- payee: typeof payload.pay_to === 'string' ? payload.pay_to : null,
138
- asset: typeof payload.asset === 'string' ? payload.asset : null,
139
- amount: typeof payload.amount_gross === 'string' ? payload.amount_gross : null,
140
- reason: 'not_checked',
141
- },
142
- nullifier: { verified: false, nullifier: null, anchored: null, reason: 'tier1' },
143
- output_hash: null,
144
- hub: null,
145
- model: null,
146
- amount_usdc: issuer.valid && typeof payload.amount_gross === 'string' ? payload.amount_gross : null,
147
- tx: issuer.valid && typeof payload.payment_tx === 'string' ? payload.payment_tx : null,
148
- claim_mismatches: [],
149
- unsigned_fields: [],
150
- verified_scope: 'signed_claims',
151
- claim_id: 'not_present_legacy',
152
- head_binding: null,
153
- receipt_lane: lane,
154
- preimages: { checked: false, ok: true, errors: [], fields: [] },
155
- issuer_history: {
156
- checked: false,
157
- ok: true,
158
- unreachable: false,
159
- warning: null,
160
- reason: null,
161
- kid: issuer.kid ?? null,
162
- document: null,
163
- loaded: false,
164
- },
165
- warnings: [],
166
- overall: failed ? 'failed' : 'verified',
167
- errors,
168
- };
169
- }
170
- function payloadOf(receipt) {
171
- if (!receipt?.issuer_signature?.jws)
172
- return null;
173
- return (0, payer_js_1.decodeJwsPayload)(receipt.issuer_signature.jws);
174
- }
175
- /** Failed receipt. amount, payer, and tx stay null. Does not throw. */
176
- async function rejectReceiptVersion(receipt, errors, reason) {
177
- const { receiptLaneFromVerification } = await import('./index.js');
178
- const doc = (receipt && typeof receipt === 'object' ? receipt : {});
179
- const lane = receiptLaneFromVerification({
180
- receipt: doc,
181
- claims: null,
182
- issuerValid: false,
183
- payer: { checked: false, valid: false },
184
- head: null,
185
- });
186
- return shell(doc, errors, {
187
- checked: true,
188
- valid: false,
189
- key_trusted: false,
190
- reason,
191
- }, lane);
192
- }
193
- async function verifyV11Receipt(receipt, options = {}) {
194
- const gate = (0, receipt_version_js_1.classifyReceiptDocument)(receipt);
195
- if (!gate.ok || gate.family !== 'v11') {
196
- const errors = gate.ok ? ['unsupported_version'] : gate.errors;
197
- const reason = gate.ok ? 'unsupported_version' : gate.reason;
198
- return rejectReceiptVersion(receipt, errors, reason);
199
- }
200
- const errors = [];
201
- const { verifyIssuerSignatureWithJwks: verifySig, loadIssuerJwks, receiptLaneFromVerification } = await import('./index.js');
202
- const loaded = await loadIssuerJwks(receipt, {
203
- jwks: options.jwks,
204
- jwksUri: options.jwksUri,
205
- fetchJwks: options.fetchJwks,
206
- trustedJwksHosts: options.trustedJwksHosts,
207
- fetchImpl: options.fetchImpl,
208
- });
209
- errors.push(...loaded.errors);
210
- const issuer = verifySig(receipt, loaded.jwks, { trustedKids: options.trustedKids });
211
- if (!issuer.valid)
212
- errors.push(issuer.reason || 'signature_invalid');
213
- const payload = (issuer.payload || payloadOf(receipt) || {});
214
- const refusal = payload.reason === 'cap_exceeded' && payload.refusal_id != null;
215
- const fields = refusal ? exports.V11_REFUSAL_FIELDS : exports.V11_SIGNED_FIELDS;
216
- const keys = Object.keys(payload);
217
- if (keys.some((key) => !fields.includes(key)))
218
- errors.push('v11_disallowed_field');
219
- for (const key of fields) {
220
- if (!Object.prototype.hasOwnProperty.call(payload, key))
221
- errors.push('v11_disallowed_field');
222
- }
223
- walkDisallowed(receipt, errors);
224
- if (!refusal) {
225
- for (const key of ['output_commitment', 'accounting_commitment', 'routing_commitment', 'request_digest']) {
226
- if (typeof payload[key] !== 'string' || !HEX64.test(payload[key]))
227
- errors.push('commitment_malformed');
228
- }
229
- if (typeof payload.book_ref !== 'string' || !/^[0-9a-f]{32}$/.test(payload.book_ref))
230
- errors.push('commitment_malformed');
231
- errors.push(...paymentBindingErrors(payload));
232
- }
233
- else {
234
- for (const key of ['request_digest', 'refusal_commitment']) {
235
- if (typeof payload[key] !== 'string' || !HEX64.test(payload[key]))
236
- errors.push('commitment_malformed');
237
- }
238
- if (payload.reason !== 'cap_exceeded')
239
- errors.push('v11_disallowed_field');
240
- }
241
- if (typeof payload.issued_at !== 'string' || !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}Z$/.test(payload.issued_at)) {
242
- errors.push('issued_at_precision');
243
- }
244
- if (options.salt != null && options.salt !== '') {
245
- const saltReason = v11SaltRejection(options.salt);
246
- if (saltReason)
247
- errors.push(saltReason);
248
- else if (options.open)
249
- openHolder(options.salt, payload, options.open, errors);
250
- }
251
- const unique = [...new Set(errors)];
252
- const lane = receiptLaneFromVerification({
253
- receipt: receipt,
254
- claims: null,
255
- issuerValid: issuer.valid === true,
256
- payer: { checked: false, valid: false },
257
- head: null,
258
- });
259
- const signed = issuer.valid ? issuer : { ...issuer, payload: (issuer.payload || payload) };
260
- return shell(receipt, unique, signed, lane);
261
- }
262
- const EVM_ADDR = /^0x[0-9a-fA-F]{40}$/;
263
- const EVM_TX = /^0x[0-9a-fA-F]{64}$/;
264
- const BASE58 = /^[1-9A-HJ-NP-Za-km-z]+$/;
265
- function atomicInteger(value) {
266
- if (typeof value !== 'string' || !/^\d+$/.test(value))
267
- return null;
268
- try {
269
- return BigInt(value);
270
- }
271
- catch {
272
- return null;
273
- }
274
- }
275
- function solanaAccount(value) {
276
- return typeof value === 'string' && value.length >= 32 && value.length <= 44 && BASE58.test(value);
277
- }
278
- function solanaTx(value) {
279
- return typeof value === 'string' && value.length >= 64 && value.length <= 128 && BASE58.test(value);
280
- }
281
- /** payment_unbound plus a sub-reason. Chain, tx, payee, payer, and amounts. */
282
- function paymentBindingErrors(payload) {
283
- const errors = [];
284
- const chain = payload.chain;
285
- if (chain !== 'base' && chain !== 'solana')
286
- errors.push('payment_unbound:chain');
287
- else if (chain === 'base') {
288
- if (typeof payload.payment_tx !== 'string' || !EVM_TX.test(payload.payment_tx))
289
- errors.push('payment_unbound:payment_tx');
290
- if (typeof payload.pay_to !== 'string' || !EVM_ADDR.test(payload.pay_to))
291
- errors.push('payment_unbound:pay_to');
292
- if (typeof payload.payer !== 'string' || !EVM_ADDR.test(payload.payer))
293
- errors.push('payment_unbound:payer');
294
- }
295
- else {
296
- if (!solanaTx(payload.payment_tx))
297
- errors.push('payment_unbound:payment_tx');
298
- if (!solanaAccount(payload.pay_to))
299
- errors.push('payment_unbound:pay_to');
300
- if (!solanaAccount(payload.payer))
301
- errors.push('payment_unbound:payer');
302
- }
303
- const gross = atomicInteger(payload.amount_gross);
304
- const settled = atomicInteger(payload.amount_settled);
305
- if (gross == null || gross <= 0n)
306
- errors.push('payment_unbound:amount_gross');
307
- else if (settled == null || settled < gross)
308
- errors.push('payment_unbound:amount_settled');
309
- if (errors.length)
310
- errors.unshift('payment_unbound');
311
- return errors;
312
- }
313
- function openHolder(salt, payload, open, errors) {
314
- const check = (label, message, field) => {
315
- const got = commitHmac(hkdfSubkey(salt, label), message);
316
- if (got !== payload[field])
317
- errors.push('commitment_mismatch');
318
- };
319
- if (open.output != null)
320
- check('v11/output', open.output, 'output_commitment');
321
- if (open.accounting != null)
322
- check('v11/accounting', canonicalJson(open.accounting), 'accounting_commitment');
323
- if (open.routing != null)
324
- check('v11/routing', canonicalJson(open.routing), 'routing_commitment');
325
- if (open.refusal != null)
326
- check('v11/refusal', canonicalJson(open.refusal), 'refusal_commitment');
327
- }
328
- /** RFC 8785 for the small opening objects the holder supplies. */
329
- function canonicalJson(text) {
330
- const value = JSON.parse(text);
331
- return jcs(value);
332
- }
333
- function jcs(value) {
334
- if (value === null || typeof value !== 'object')
335
- return JSON.stringify(value);
336
- if (Array.isArray(value))
337
- return `[${value.map((item) => jcs(item)).join(',')}]`;
338
- const obj = value;
339
- const keys = Object.keys(obj).sort();
340
- return `{${keys.map((key) => `${JSON.stringify(key)}:${jcs(obj[key])}`).join(',')}}`;
341
- }
342
- async function verifyReceiptUpToV10(receipt, options, full) {
343
- const gate = (0, receipt_version_js_1.classifyReceiptDocument)(receipt);
344
- const legacy = gate.ok && gate.family === 'legacy' && gate.version >= 1 && gate.version <= 10;
345
- const unsigned = gate.ok && gate.family === 'unsigned';
346
- if (!legacy && !unsigned) {
347
- const errors = gate.ok ? ['unsupported_version'] : gate.errors;
348
- const reason = gate.ok ? 'unsupported_version' : gate.reason;
349
- return rejectReceiptVersion(receipt, errors, reason);
350
- }
351
- return full(receipt, options);
352
- }
353
- function readOpenFile(spec) {
354
- const eq = spec.indexOf('=');
355
- if (eq < 1)
356
- throw new Error('--open expects output=<file>, accounting=<file>, routing=<file>, or refusal=<file>');
357
- const kind = spec.slice(0, eq);
358
- if (kind !== 'output' && kind !== 'accounting' && kind !== 'routing' && kind !== 'refusal') {
359
- throw new Error('--open expects output=<file>, accounting=<file>, routing=<file>, or refusal=<file>');
360
- }
361
- const file = spec.slice(eq + 1);
362
- const bytes = (0, node_fs_1.readFileSync)(file);
363
- return { kind, bytes, text: bytes.toString('utf8') };
364
- }
365
- function sha256Hex(bytes) {
366
- return (0, node_crypto_1.createHash)('sha256').update(bytes).digest('hex');
367
- }
368
- //# sourceMappingURL=v11-receipt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"v11-receipt.js","sourceRoot":"","sources":["../src/v11-receipt.ts"],"names":[],"mappings":"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"}