@xfuel/verify 0.1.1 → 0.2.1
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 +35 -17
- 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/cli.js +66 -19
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +140 -47
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +675 -142
- package/dist/index.js.map +1 -1
- 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/package.json +4 -2
package/dist/index.d.ts
CHANGED
|
@@ -37,15 +37,28 @@ export interface XFuelReceipt {
|
|
|
37
37
|
payment?: {
|
|
38
38
|
rail?: string;
|
|
39
39
|
ref?: string | null;
|
|
40
|
-
gross_amount?: string;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
40
|
+
gross_amount?: string | null;
|
|
41
|
+
settled_amount?: string | null;
|
|
42
|
+
net_amount?: string | null;
|
|
43
|
+
fee_amount?: string | null;
|
|
44
|
+
fee_bps?: number | null;
|
|
45
|
+
protocol_fee_bps?: number | null;
|
|
46
|
+
platform_fee?: string | null;
|
|
47
|
+
platform_fee_bps?: number | null;
|
|
47
48
|
asset?: string | null;
|
|
48
49
|
payee?: string | null;
|
|
50
|
+
accounting?: {
|
|
51
|
+
kind?: string;
|
|
52
|
+
scope?: string;
|
|
53
|
+
note?: string;
|
|
54
|
+
internal_breakdown?: {
|
|
55
|
+
route_margin_bps?: number | null;
|
|
56
|
+
route_margin_amount?: string | null;
|
|
57
|
+
receipt_floor_amount?: string | null;
|
|
58
|
+
provider_cogs_amount?: string | null;
|
|
59
|
+
tier2_proof_amount?: string | null;
|
|
60
|
+
};
|
|
61
|
+
} | null;
|
|
49
62
|
};
|
|
50
63
|
payment_meta?: {
|
|
51
64
|
network?: string;
|
|
@@ -75,6 +88,10 @@ export interface XFuelReceipt {
|
|
|
75
88
|
signature?: {
|
|
76
89
|
alg?: string;
|
|
77
90
|
value?: string;
|
|
91
|
+
payload_version?: number;
|
|
92
|
+
};
|
|
93
|
+
hmac_attestation?: {
|
|
94
|
+
payload_version?: number;
|
|
78
95
|
};
|
|
79
96
|
issuer_signature?: {
|
|
80
97
|
alg?: string;
|
|
@@ -114,12 +131,24 @@ export interface Jwks {
|
|
|
114
131
|
export interface IssuerSignatureVerification {
|
|
115
132
|
/** Whether an issuer signature was present to check. */
|
|
116
133
|
checked: boolean;
|
|
117
|
-
/** True
|
|
134
|
+
/** True only when the signature verifies under a trusted key. */
|
|
118
135
|
valid: boolean;
|
|
119
136
|
/** Key ID from the signature. */
|
|
120
137
|
kid?: string;
|
|
121
|
-
/** Reason for failure when valid=false. */
|
|
138
|
+
/** Reason for failure when valid=false. `key untrusted` means the verifying key is not in the trust set. */
|
|
122
139
|
reason?: string;
|
|
140
|
+
/** True when the key used (or the only candidate key) is in the trust set. */
|
|
141
|
+
key_trusted?: boolean;
|
|
142
|
+
/** How the verifying key was trusted, when valid. */
|
|
143
|
+
trust?: 'jwks' | 'pinned_kid';
|
|
144
|
+
/** Verified JWS claims. Present only when valid is true. */
|
|
145
|
+
payload?: Record<string, unknown>;
|
|
146
|
+
}
|
|
147
|
+
/** Outer unsigned field disagrees with the JWS payload. */
|
|
148
|
+
export interface ClaimMismatch {
|
|
149
|
+
field: string;
|
|
150
|
+
outer: string | null;
|
|
151
|
+
signed: string | null;
|
|
123
152
|
}
|
|
124
153
|
export interface BindingVerification {
|
|
125
154
|
verified: boolean;
|
|
@@ -140,6 +169,10 @@ export interface PayerVerification {
|
|
|
140
169
|
valid: boolean;
|
|
141
170
|
rail?: PayerRail;
|
|
142
171
|
reason?: string;
|
|
172
|
+
payer_wallet?: string | null;
|
|
173
|
+
payee?: string | null;
|
|
174
|
+
asset?: string | null;
|
|
175
|
+
amount?: string | null;
|
|
143
176
|
}
|
|
144
177
|
export interface ReceiptVerification {
|
|
145
178
|
receipt_id: string;
|
|
@@ -150,33 +183,74 @@ export interface ReceiptVerification {
|
|
|
150
183
|
output_hash: string | null;
|
|
151
184
|
hub: string | null;
|
|
152
185
|
model: string | null;
|
|
186
|
+
/** Gross amount from verified signed claims, in atomic USDC. Null when the signature is not trusted. */
|
|
153
187
|
amount_usdc: string | null;
|
|
188
|
+
/** Settlement ref from verified signed claims. Null when the signature is not trusted. */
|
|
154
189
|
tx: string | null;
|
|
190
|
+
/** Unsigned outer fields that disagree with the JWS payload. */
|
|
191
|
+
claim_mismatches: ClaimMismatch[];
|
|
155
192
|
overall: 'verified' | 'partial' | 'failed';
|
|
156
193
|
errors: string[];
|
|
157
194
|
}
|
|
158
195
|
/**
|
|
159
|
-
*
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
*
|
|
163
|
-
*
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
*
|
|
168
|
-
*
|
|
169
|
-
*
|
|
170
|
-
* 8. payment.platform_fee
|
|
171
|
-
* 9. payment.platform_fee_bps
|
|
172
|
-
* 10. provider_cogs.actual
|
|
173
|
-
* 11. route.model
|
|
174
|
-
* 12. route.model_commitment.commitment
|
|
175
|
-
* 13. route.provider
|
|
176
|
-
* 14. output.hash
|
|
177
|
-
* 15. binding.expected_commitment
|
|
196
|
+
* HMAC payload version.
|
|
197
|
+
* Versions <= 7 keep the historical net/fee field list.
|
|
198
|
+
* Version 8 signs settled_amount plus the internal accounting breakdown.
|
|
199
|
+
* Lockstep with `canonicalPayloadVersion` in services/gateway/src/receipt.js
|
|
200
|
+
* for the v8 list (the v7 list here is the historical 15-field public formula).
|
|
201
|
+
*/
|
|
202
|
+
export declare function canonicalPayloadVersion(receipt: XFuelReceipt): number;
|
|
203
|
+
/**
|
|
204
|
+
* Canonical, order-stable payload an HMAC issuer signature covers.
|
|
205
|
+
* v8 matches `canonicalSignedPayload` in services/gateway/src/receipt.js.
|
|
206
|
+
* v7 and earlier stay on the historical 15-field list so old signatures verify.
|
|
178
207
|
*/
|
|
179
208
|
export declare function canonicalIssuerPayload(receipt: XFuelReceipt): string;
|
|
209
|
+
export interface TransferLog {
|
|
210
|
+
address?: string;
|
|
211
|
+
topics?: string[];
|
|
212
|
+
data?: string;
|
|
213
|
+
}
|
|
214
|
+
export interface SettledAmountReconciliation {
|
|
215
|
+
checked: boolean;
|
|
216
|
+
/** True when the signed settled/net amount equals the USDC Transfer to payee. */
|
|
217
|
+
matches: boolean;
|
|
218
|
+
payload_version: number;
|
|
219
|
+
signed_field: 'settled_amount' | 'gross_amount' | 'net_amount' | null;
|
|
220
|
+
signed_amount: string | null;
|
|
221
|
+
transfer_amount: string | null;
|
|
222
|
+
payee: string | null;
|
|
223
|
+
reason?: string;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Sum USDC Transfer values to `payee` in a transaction's logs.
|
|
227
|
+
* Non-Transfer logs are ignored. When `usdcAddress` is set, other contracts are ignored.
|
|
228
|
+
*/
|
|
229
|
+
export declare function sumUsdcTransfersToPayee(logs: TransferLog[] | null | undefined, payee: string, usdcAddress?: string): bigint | null;
|
|
230
|
+
export interface ReconcileSettledTransferOptions {
|
|
231
|
+
usdcAddress?: string;
|
|
232
|
+
/** JWKS treated as a trust root. Keys are matched by `kid`. */
|
|
233
|
+
jwks?: Jwks;
|
|
234
|
+
/**
|
|
235
|
+
* RFC 7638 thumbprints allowed as an offline pin.
|
|
236
|
+
* Omit to use the default production pin. Pass `[]` to disable the pin.
|
|
237
|
+
*/
|
|
238
|
+
trustedKids?: readonly string[];
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Optional on-chain reconciliation. Given a tx receipt's logs, the signed
|
|
242
|
+
* amount the payee was supposed to receive must equal the USDC Transfer to payee.
|
|
243
|
+
*
|
|
244
|
+
* The amount and payee come from JWS claims only after a key-trust check
|
|
245
|
+
* (JWKS by kid, or an embedded key whose thumbprint is a pinned kid). An
|
|
246
|
+
* untrusted signature does not contribute those facts.
|
|
247
|
+
*
|
|
248
|
+
* v8 compares `settled_amount` (falling back to `gross_amount`): that is the
|
|
249
|
+
* on-chain transfer. v7 and earlier compare `net_amount`, which those receipts
|
|
250
|
+
* defined as "amount after fees". A single direct transfer of gross will not
|
|
251
|
+
* match a net that subtracts a fee that never moved on chain.
|
|
252
|
+
*/
|
|
253
|
+
export declare function reconcileSettledTransfer(receipt: XFuelReceipt, logs: TransferLog[] | null | undefined, options?: ReconcileSettledTransferOptions): SettledAmountReconciliation;
|
|
180
254
|
/**
|
|
181
255
|
* Verify a receipt's ES256 issuer signature against a JWK (public key).
|
|
182
256
|
* This is the public-key verification path — no shared secret required.
|
|
@@ -191,19 +265,17 @@ export declare function canonicalIssuerPayload(receipt: XFuelReceipt): string;
|
|
|
191
265
|
*/
|
|
192
266
|
export declare function verifyIssuerSignature(receipt: XFuelReceipt, jwk: Es256Jwk): IssuerSignatureVerification;
|
|
193
267
|
/**
|
|
194
|
-
* Verify
|
|
195
|
-
* Finds the matching key by kid and verifies.
|
|
268
|
+
* Verify an issuer signature against trusted keys only.
|
|
196
269
|
*
|
|
197
|
-
*
|
|
198
|
-
*
|
|
199
|
-
|
|
200
|
-
export declare function verifyIssuerSignatureWithJwks(receipt: XFuelReceipt, jwks: Jwks): IssuerSignatureVerification;
|
|
201
|
-
/**
|
|
202
|
-
* Verify a receipt's payment binding locally (no network required).
|
|
270
|
+
* Trust, in order:
|
|
271
|
+
* 1. A JWKS entry matched by `kid` (supplied file or fetched issuer JWKS).
|
|
272
|
+
* 2. An embedded `issuer_jwk` whose RFC 7638 thumbprint equals a pinned trusted kid.
|
|
203
273
|
*
|
|
204
|
-
*
|
|
205
|
-
* it to the stored `binding.expected_commitment`.
|
|
274
|
+
* An embedded key that merely verifies the bytes is `key untrusted`.
|
|
206
275
|
*/
|
|
276
|
+
export declare function verifyIssuerSignatureWithJwks(receipt: XFuelReceipt, jwks?: Jwks, options?: {
|
|
277
|
+
trustedKids?: readonly string[];
|
|
278
|
+
}): IssuerSignatureVerification;
|
|
207
279
|
export declare function verifyBinding(receipt: XFuelReceipt): BindingVerification;
|
|
208
280
|
/**
|
|
209
281
|
* Verify a receipt's nullifier is anchored on-chain.
|
|
@@ -223,18 +295,35 @@ export declare const canonicalSignedPayload: typeof canonicalIssuerPayload;
|
|
|
223
295
|
* Hash the canonical payload (for ERC-8004 response_hash).
|
|
224
296
|
*/
|
|
225
297
|
export declare function hashCanonicalPayload(receipt: XFuelReceipt): string;
|
|
298
|
+
/** Flag unsigned outer copies that disagree with the JWS payload. */
|
|
299
|
+
export declare function diffOuterClaims(receipt: XFuelReceipt, claims: Record<string, unknown> | null): ClaimMismatch[];
|
|
300
|
+
/** Fetch a JWKS document. Caller decides whether the URL is a trust root. */
|
|
301
|
+
export declare function fetchIssuerJwks(uri: string, fetchImpl?: typeof fetch): Promise<Jwks>;
|
|
226
302
|
/**
|
|
227
|
-
* Full receipt verification —
|
|
303
|
+
* Full receipt verification — trusted issuer signature, signed-claim facts,
|
|
304
|
+
* optional on-chain payer and nullifier checks.
|
|
228
305
|
*
|
|
229
|
-
*
|
|
230
|
-
*
|
|
231
|
-
*
|
|
232
|
-
* @param options.rpcUrl RPC URL for on-chain checks
|
|
306
|
+
* Facts (amount, payer, payee, asset, tx, model) are taken only from a JWS
|
|
307
|
+
* that verified under a trusted key. The embedded `issuer_jwk` is not trusted
|
|
308
|
+
* unless its RFC 7638 thumbprint is a pinned kid, or the same key is in a JWKS.
|
|
233
309
|
*/
|
|
234
|
-
/** Extract JWS claims for payer binding
|
|
310
|
+
/** Extract JWS claims for payer binding. Prefers the JWS payload over the outer copy. */
|
|
235
311
|
export declare function receiptPayerClaims(receipt: XFuelReceipt): ReceiptPayerClaims;
|
|
236
|
-
export
|
|
312
|
+
export interface VerifyReceiptOptions {
|
|
313
|
+
/** Caller-supplied JWKS. Every key in it is a trust root, matched by kid. */
|
|
237
314
|
jwks?: Jwks;
|
|
315
|
+
/**
|
|
316
|
+
* Pinned trusted kids (RFC 7638 thumbprints). Defaults to the production
|
|
317
|
+
* api.chit402.com issuer kid. Pass `[]` to disable the offline pin.
|
|
318
|
+
*/
|
|
319
|
+
trustedKids?: readonly string[];
|
|
320
|
+
/** Fetch JWKS from the receipt `jwks_uri` when its host is allowlisted. */
|
|
321
|
+
fetchJwks?: boolean;
|
|
322
|
+
/** Explicit JWKS URL. Any https URL is fetched; this is user-supplied trust. */
|
|
323
|
+
jwksUri?: string;
|
|
324
|
+
/** Hosts allowed for `fetchJwks`. Defaults to api.chit402.com. */
|
|
325
|
+
trustedJwksHosts?: readonly string[];
|
|
326
|
+
fetchImpl?: typeof fetch;
|
|
238
327
|
checkNullifier?: boolean;
|
|
239
328
|
checkPayer?: boolean;
|
|
240
329
|
rpcUrl?: string;
|
|
@@ -242,8 +331,9 @@ export declare function verifyReceipt(receipt: XFuelReceipt, options?: {
|
|
|
242
331
|
verifierAddress?: string;
|
|
243
332
|
fetchSolanaTransaction?: SolanaRpcFetcher;
|
|
244
333
|
fetchBaseReceipt?: BaseReceiptFetcher;
|
|
245
|
-
}
|
|
246
|
-
export
|
|
334
|
+
}
|
|
335
|
+
export declare function verifyReceipt(receipt: XFuelReceipt, options?: VerifyReceiptOptions): Promise<ReceiptVerification>;
|
|
336
|
+
export { resolvePinnedIssuerJwk, verifyIssuerJws, DEFAULT_TRUSTED_ISSUER_KIDS, DEFAULT_TRUSTED_JWKS_HOSTS, KEY_UNTRUSTED, jwkThumbprint, isPinnedTrustedJwk, jwksHostAllowed, } from './jws.js';
|
|
247
337
|
declare const _default: {
|
|
248
338
|
verifyBinding: typeof verifyBinding;
|
|
249
339
|
verifyIssuerSignature: typeof verifyIssuerSignature;
|
|
@@ -261,7 +351,10 @@ declare const _default: {
|
|
|
261
351
|
computePaymentCommitment: typeof computePaymentCommitment;
|
|
262
352
|
computeInferenceBinding: typeof computeInferenceBinding;
|
|
263
353
|
canonicalIssuerPayload: typeof canonicalIssuerPayload;
|
|
354
|
+
canonicalPayloadVersion: typeof canonicalPayloadVersion;
|
|
264
355
|
canonicalSignedPayload: typeof canonicalIssuerPayload;
|
|
356
|
+
reconcileSettledTransfer: typeof reconcileSettledTransfer;
|
|
357
|
+
sumUsdcTransfersToPayee: typeof sumUsdcTransfersToPayee;
|
|
265
358
|
hashCanonicalPayload: typeof hashCanonicalPayload;
|
|
266
359
|
ZK_VERIFIER_ADDRESS: string;
|
|
267
360
|
BASE_RPC_URL: string;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,yBAAyB,EACzB,2BAA2B,EAC3B,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,EAC1B,4BAA4B,EAC5B,sBAAsB,EACtB,cAAc,EACd,wBAAwB,EACxB,uBAAuB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,6BAA6B,EACnC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,kBAAkB,EAClB,8BAA8B,EAC9B,gBAAgB,EAChB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|