@xfuel/verify 0.1.0 → 0.1.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/dist/index.js CHANGED
@@ -12,23 +12,46 @@
12
12
  * See docs/specs/RECEIPT_V2_SEMANTICS.md for the verification algorithm.
13
13
  */
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.canonicalSignedPayload = exports.BASE_SEPOLIA_RPC_URL = exports.BASE_RPC_URL = exports.ZK_VERIFIER_ADDRESS = exports.computeInferenceBinding = exports.computePaymentCommitment = void 0;
15
+ exports.verifyIssuerJws = exports.resolvePinnedIssuerJwk = exports.canonicalSignedPayload = exports.BASE_SEPOLIA_RPC_URL = exports.ZK_VERIFIER_ADDRESS = exports.decodeJwsPayload = exports.receiptPayerClaimsFromEnvelope = exports.verifyPayerBinding = exports.SOLANA_USDC_MINT_DEVNET = exports.SOLANA_USDC_MINT_MAINNET = exports.SOLANA_RPC_URL = exports.fetchSolanaTransaction = exports.inferUsdcOutflowFromBalances = exports.extractUsdcTransfersFromTx = exports.isSolanaBase58Pubkey = exports.parseSolanaPaymentRef = exports.verifySolanaPayer = exports.BASE_RPC_URL = exports.ERC20_TRANSFER_TOPIC = exports.USDC_ADDRESSES = exports.fetchBaseTransactionReceipt = exports.sumUsdcTransfersFromPayer = exports.isEvmAddress = exports.parseBasePaymentRef = exports.verifyBasePayer = exports.computeInferenceBinding = exports.computePaymentCommitment = void 0;
16
16
  exports.canonicalIssuerPayload = canonicalIssuerPayload;
17
17
  exports.verifyIssuerSignature = verifyIssuerSignature;
18
18
  exports.verifyIssuerSignatureWithJwks = verifyIssuerSignatureWithJwks;
19
19
  exports.verifyBinding = verifyBinding;
20
20
  exports.verifyNullifier = verifyNullifier;
21
21
  exports.hashCanonicalPayload = hashCanonicalPayload;
22
+ exports.receiptPayerClaims = receiptPayerClaims;
22
23
  exports.verifyReceipt = verifyReceipt;
23
24
  const ethers_1 = require("ethers");
24
25
  const node_crypto_1 = require("node:crypto");
25
26
  const binding_js_1 = require("./binding.js");
26
27
  Object.defineProperty(exports, "computePaymentCommitment", { enumerable: true, get: function () { return binding_js_1.computePaymentCommitment; } });
27
28
  Object.defineProperty(exports, "computeInferenceBinding", { enumerable: true, get: function () { return binding_js_1.computeInferenceBinding; } });
29
+ const base_payer_js_1 = require("./base-payer.js");
30
+ Object.defineProperty(exports, "verifyBasePayer", { enumerable: true, get: function () { return base_payer_js_1.verifyBasePayer; } });
31
+ Object.defineProperty(exports, "parseBasePaymentRef", { enumerable: true, get: function () { return base_payer_js_1.parseBasePaymentRef; } });
32
+ Object.defineProperty(exports, "isEvmAddress", { enumerable: true, get: function () { return base_payer_js_1.isEvmAddress; } });
33
+ Object.defineProperty(exports, "sumUsdcTransfersFromPayer", { enumerable: true, get: function () { return base_payer_js_1.sumUsdcTransfersFromPayer; } });
34
+ Object.defineProperty(exports, "fetchBaseTransactionReceipt", { enumerable: true, get: function () { return base_payer_js_1.fetchBaseTransactionReceipt; } });
35
+ Object.defineProperty(exports, "USDC_ADDRESSES", { enumerable: true, get: function () { return base_payer_js_1.USDC_ADDRESSES; } });
36
+ Object.defineProperty(exports, "ERC20_TRANSFER_TOPIC", { enumerable: true, get: function () { return base_payer_js_1.ERC20_TRANSFER_TOPIC; } });
37
+ Object.defineProperty(exports, "BASE_RPC_URL", { enumerable: true, get: function () { return base_payer_js_1.BASE_RPC_URL; } });
38
+ const solana_payer_js_1 = require("./solana-payer.js");
39
+ Object.defineProperty(exports, "verifySolanaPayer", { enumerable: true, get: function () { return solana_payer_js_1.verifySolanaPayer; } });
40
+ Object.defineProperty(exports, "parseSolanaPaymentRef", { enumerable: true, get: function () { return solana_payer_js_1.parseSolanaPaymentRef; } });
41
+ Object.defineProperty(exports, "isSolanaBase58Pubkey", { enumerable: true, get: function () { return solana_payer_js_1.isSolanaBase58Pubkey; } });
42
+ Object.defineProperty(exports, "extractUsdcTransfersFromTx", { enumerable: true, get: function () { return solana_payer_js_1.extractUsdcTransfersFromTx; } });
43
+ Object.defineProperty(exports, "inferUsdcOutflowFromBalances", { enumerable: true, get: function () { return solana_payer_js_1.inferUsdcOutflowFromBalances; } });
44
+ Object.defineProperty(exports, "fetchSolanaTransaction", { enumerable: true, get: function () { return solana_payer_js_1.fetchSolanaTransaction; } });
45
+ Object.defineProperty(exports, "SOLANA_RPC_URL", { enumerable: true, get: function () { return solana_payer_js_1.SOLANA_RPC_URL; } });
46
+ Object.defineProperty(exports, "SOLANA_USDC_MINT_MAINNET", { enumerable: true, get: function () { return solana_payer_js_1.SOLANA_USDC_MINT_MAINNET; } });
47
+ Object.defineProperty(exports, "SOLANA_USDC_MINT_DEVNET", { enumerable: true, get: function () { return solana_payer_js_1.SOLANA_USDC_MINT_DEVNET; } });
48
+ const payer_js_1 = require("./payer.js");
49
+ Object.defineProperty(exports, "verifyPayerBinding", { enumerable: true, get: function () { return payer_js_1.verifyPayerBinding; } });
50
+ Object.defineProperty(exports, "receiptPayerClaimsFromEnvelope", { enumerable: true, get: function () { return payer_js_1.receiptPayerClaimsFromEnvelope; } });
51
+ Object.defineProperty(exports, "decodeJwsPayload", { enumerable: true, get: function () { return payer_js_1.decodeJwsPayload; } });
52
+ const jws_js_1 = require("./jws.js");
28
53
  /** ZKVerifierSP1 contract on Base mainnet. */
29
54
  exports.ZK_VERIFIER_ADDRESS = '0x9373499645292715a2275A78eD65B14215C41c06';
30
- /** Default Base mainnet RPC. */
31
- exports.BASE_RPC_URL = 'https://mainnet.base.org';
32
55
  /** Base Sepolia testnet RPC. */
33
56
  exports.BASE_SEPOLIA_RPC_URL = 'https://sepolia.base.org';
34
57
  /** Minimal ABI for nullifier check. */
@@ -125,7 +148,38 @@ function verifyIssuerSignature(receipt, jwk) {
125
148
  */
126
149
  function verifyIssuerSignatureWithJwks(receipt, jwks) {
127
150
  const sig = receipt.issuer_signature;
128
- if (!sig || !sig.value) {
151
+ if (!sig) {
152
+ return { checked: false, valid: false, reason: 'no_issuer_signature' };
153
+ }
154
+ const pinned = (0, jws_js_1.resolvePinnedIssuerJwk)(receipt);
155
+ if (pinned && sig.jws) {
156
+ const jwsResult = (0, jws_js_1.verifyIssuerJws)(sig.jws, pinned);
157
+ return {
158
+ checked: true,
159
+ valid: jwsResult.valid,
160
+ kid: pinned.kid || sig.kid,
161
+ reason: jwsResult.reason,
162
+ };
163
+ }
164
+ if (sig.jws) {
165
+ if (!jwks || !Array.isArray(jwks.keys) || jwks.keys.length === 0) {
166
+ return { checked: false, valid: false, reason: 'empty_jwks' };
167
+ }
168
+ const candidates = sig.kid
169
+ ? jwks.keys.filter(k => k.kid === sig.kid && k.alg === 'ES256')
170
+ : jwks.keys.filter(k => k.alg === 'ES256');
171
+ if (candidates.length === 0) {
172
+ return { checked: false, valid: false, reason: 'no_matching_key' };
173
+ }
174
+ for (const jwk of candidates) {
175
+ const jwsResult = (0, jws_js_1.verifyIssuerJws)(sig.jws, jwk);
176
+ if (jwsResult.valid) {
177
+ return { checked: true, valid: true, kid: jwk.kid || sig.kid };
178
+ }
179
+ }
180
+ return { checked: true, valid: false, reason: 'signature_invalid' };
181
+ }
182
+ if (!sig.value) {
129
183
  return { checked: false, valid: false, reason: 'no_issuer_signature' };
130
184
  }
131
185
  if (!jwks || !Array.isArray(jwks.keys) || jwks.keys.length === 0) {
@@ -241,7 +295,7 @@ async function verifyNullifier(receipt, options = {}) {
241
295
  reason: 'Invalid nullifier format',
242
296
  };
243
297
  }
244
- const rpcUrl = options.rpcUrl || exports.BASE_RPC_URL;
298
+ const rpcUrl = options.rpcUrl || base_payer_js_1.BASE_RPC_URL;
245
299
  const verifierAddress = options.verifierAddress || exports.ZK_VERIFIER_ADDRESS;
246
300
  try {
247
301
  const provider = new ethers_1.JsonRpcProvider(rpcUrl);
@@ -282,6 +336,10 @@ function hashCanonicalPayload(receipt) {
282
336
  * @param options.checkNullifier Whether to verify nullifier on-chain (requires network)
283
337
  * @param options.rpcUrl RPC URL for on-chain checks
284
338
  */
339
+ /** Extract JWS claims for payer binding when present. */
340
+ function receiptPayerClaims(receipt) {
341
+ return (0, payer_js_1.receiptPayerClaimsFromEnvelope)(receipt);
342
+ }
285
343
  async function verifyReceipt(receipt, options = {}) {
286
344
  const errors = [];
287
345
  // Verify binding locally
@@ -289,9 +347,22 @@ async function verifyReceipt(receipt, options = {}) {
289
347
  if (!binding.matches && binding.expected) {
290
348
  errors.push('Payment binding mismatch');
291
349
  }
292
- // Verify issuer signature if JWKS provided
350
+ // Verify issuer signature — pinned JWK in receipt, optional JWKS file, or legacy detached sig
293
351
  let issuer_signature;
294
- if (options.jwks) {
352
+ const pinned = (0, jws_js_1.resolvePinnedIssuerJwk)(receipt);
353
+ if (pinned && receipt.issuer_signature?.jws) {
354
+ const jwsResult = (0, jws_js_1.verifyIssuerJws)(receipt.issuer_signature.jws, pinned);
355
+ issuer_signature = {
356
+ checked: true,
357
+ valid: jwsResult.valid,
358
+ kid: pinned.kid || receipt.issuer_signature.kid,
359
+ reason: jwsResult.reason,
360
+ };
361
+ if (!jwsResult.valid) {
362
+ errors.push(`Issuer signature invalid: ${jwsResult.reason}`);
363
+ }
364
+ }
365
+ else if (options.jwks) {
295
366
  issuer_signature = verifyIssuerSignatureWithJwks(receipt, options.jwks);
296
367
  if (issuer_signature.checked && !issuer_signature.valid) {
297
368
  errors.push(`Issuer signature invalid: ${issuer_signature.reason}`);
@@ -302,7 +373,9 @@ async function verifyReceipt(receipt, options = {}) {
302
373
  checked: false,
303
374
  valid: false,
304
375
  kid: receipt.issuer_signature.kid,
305
- reason: 'JWKS not provided — pass jwks option to verify issuer signature',
376
+ reason: receipt.issuer_signature.jws
377
+ ? 'No pinned issuer_jwk and JWKS not provided — pass jwks option or use a receipt with issuer_signature.issuer_jwk'
378
+ : 'JWKS not provided — pass jwks option to verify issuer signature',
306
379
  };
307
380
  }
308
381
  else {
@@ -312,6 +385,39 @@ async function verifyReceipt(receipt, options = {}) {
312
385
  reason: 'No issuer signature present on receipt',
313
386
  };
314
387
  }
388
+ // Verify payer on-chain when requested (Base USDC or Solana USDC)
389
+ let payer;
390
+ if (options.checkPayer) {
391
+ const payerResult = await (0, payer_js_1.verifyPayerBinding)(receiptPayerClaims(receipt), {
392
+ rpcUrl: options.rpcUrl,
393
+ solanaRpcUrl: options.solanaRpcUrl,
394
+ fetchSolanaTransaction: options.fetchSolanaTransaction,
395
+ fetchBaseReceipt: options.fetchBaseReceipt,
396
+ });
397
+ payer = {
398
+ checked: payerResult.checked,
399
+ valid: payerResult.valid,
400
+ rail: payerResult.rail,
401
+ reason: payerResult.reason,
402
+ };
403
+ if (payerResult.checked && !payerResult.valid) {
404
+ errors.push(`Payer binding mismatch: ${payerResult.reason}`);
405
+ }
406
+ }
407
+ else if (receipt.caller_binding?.payer_wallet && receipt.payment?.ref) {
408
+ payer = {
409
+ checked: false,
410
+ valid: false,
411
+ reason: 'On-chain payer check not requested — pass checkPayer: true',
412
+ };
413
+ }
414
+ else {
415
+ payer = {
416
+ checked: false,
417
+ valid: false,
418
+ reason: 'No payer_wallet or payment.ref to verify',
419
+ };
420
+ }
315
421
  // Verify nullifier on-chain if requested
316
422
  let nullifier;
317
423
  if (options.checkNullifier && receipt.proof?.nullifier) {
@@ -347,22 +453,29 @@ async function verifyReceipt(receipt, options = {}) {
347
453
  // Check for signature verification failure (JWKS provided but signature invalid)
348
454
  const jwksProvided = !!options.jwks;
349
455
  const hasIssuerSig = !!receipt.issuer_signature;
350
- const issuerSigInvalid = jwksProvided && hasIssuerSig && !issuer_signature.valid;
456
+ const hasPinnedJwk = !!pinned && !!receipt.issuer_signature?.jws;
457
+ const issuerSigInvalid = (jwksProvided || hasPinnedJwk) && hasIssuerSig && !issuer_signature.valid;
351
458
  // Binding failure
352
459
  const bindingFailed = binding.expected && !binding.matches;
353
- if (issuerSigInvalid || bindingFailed) {
460
+ const payerFailed = options.checkPayer && payer.checked && !payer.valid;
461
+ if (issuerSigInvalid || bindingFailed || payerFailed) {
354
462
  // JWKS provided but signature invalid, OR binding mismatch → failed
355
463
  overall = 'failed';
356
464
  }
357
- else if (hasIssuerSig && !jwksProvided) {
358
- // Receipt has signature but no JWKS provided → partial (cannot verify signature)
465
+ else if (hasIssuerSig && !jwksProvided && !hasPinnedJwk) {
466
+ // Receipt has signature but no offline key material → partial
359
467
  overall = 'partial';
360
468
  }
361
- else if (binding.matches && (!options.checkNullifier || nullifier.anchored)) {
469
+ else if (binding.matches
470
+ && (!options.checkPayer || payer.valid)
471
+ && (!options.checkNullifier || nullifier.anchored)) {
362
472
  // Binding matches, signature OK (or no signature), nullifier OK → verified
363
473
  overall = 'verified';
364
474
  }
365
- else if (binding.matches || issuer_signature.valid || (nullifier.verified && nullifier.anchored)) {
475
+ else if (binding.matches
476
+ || issuer_signature.valid
477
+ || (options.checkPayer && payer.valid)
478
+ || (nullifier.verified && nullifier.anchored)) {
366
479
  // At least one check passed → partial
367
480
  overall = 'partial';
368
481
  }
@@ -377,6 +490,7 @@ async function verifyReceipt(receipt, options = {}) {
377
490
  receipt_id: receipt.task_id,
378
491
  binding,
379
492
  issuer_signature,
493
+ payer,
380
494
  nullifier,
381
495
  output_hash,
382
496
  hub,
@@ -387,19 +501,31 @@ async function verifyReceipt(receipt, options = {}) {
387
501
  errors,
388
502
  };
389
503
  }
504
+ var jws_js_2 = require("./jws.js");
505
+ Object.defineProperty(exports, "resolvePinnedIssuerJwk", { enumerable: true, get: function () { return jws_js_2.resolvePinnedIssuerJwk; } });
506
+ Object.defineProperty(exports, "verifyIssuerJws", { enumerable: true, get: function () { return jws_js_2.verifyIssuerJws; } });
390
507
  exports.default = {
391
508
  verifyBinding,
392
509
  verifyIssuerSignature,
393
510
  verifyIssuerSignatureWithJwks,
511
+ verifyIssuerJws: jws_js_1.verifyIssuerJws,
512
+ resolvePinnedIssuerJwk: jws_js_1.resolvePinnedIssuerJwk,
394
513
  verifyNullifier,
514
+ verifyPayerBinding: payer_js_1.verifyPayerBinding,
515
+ verifySolanaPayer: solana_payer_js_1.verifySolanaPayer,
516
+ verifyBasePayer: base_payer_js_1.verifyBasePayer,
395
517
  verifyReceipt,
518
+ receiptPayerClaims,
519
+ receiptPayerClaimsFromEnvelope: payer_js_1.receiptPayerClaimsFromEnvelope,
520
+ decodeJwsPayload: payer_js_1.decodeJwsPayload,
396
521
  computePaymentCommitment: binding_js_1.computePaymentCommitment,
397
522
  computeInferenceBinding: binding_js_1.computeInferenceBinding,
398
523
  canonicalIssuerPayload,
399
524
  canonicalSignedPayload: exports.canonicalSignedPayload,
400
525
  hashCanonicalPayload,
401
526
  ZK_VERIFIER_ADDRESS: exports.ZK_VERIFIER_ADDRESS,
402
- BASE_RPC_URL: exports.BASE_RPC_URL,
527
+ BASE_RPC_URL: base_payer_js_1.BASE_RPC_URL,
403
528
  BASE_SEPOLIA_RPC_URL: exports.BASE_SEPOLIA_RPC_URL,
529
+ SOLANA_RPC_URL: solana_payer_js_1.SOLANA_RPC_URL,
404
530
  };
405
531
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAyKH,wDAkBC;AAcD,sDA+BC;AASD,sEA4BC;AAQD,sCAsEC;AAOD,0CA8CC;AAWD,oDAEC;AAUD,sCAiHC;AAthBD,mCAA2E;AAC3E,6CAAsE;AACtE,6CAKsB;AAGpB,yGAPA,qCAAwB,OAOA;AACxB,wGAPA,oCAAuB,OAOA;AAKzB,8CAA8C;AACjC,QAAA,mBAAmB,GAAG,4CAA4C,CAAC;AAEhF,gCAAgC;AACnB,QAAA,YAAY,GAAG,0BAA0B,CAAC;AAEvD,gCAAgC;AACnB,QAAA,oBAAoB,GAAG,0BAA0B,CAAC;AAE/D,uCAAuC;AACvC,MAAM,eAAe,GAAG;IACtB,sDAAsD;CACvD,CAAC;AAsHF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAgB,sBAAsB,CAAC,OAAqB;IAC1D,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,OAAO,CAAC,OAAO,IAAI,IAAI;QACvB,OAAO,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI;QAC7B,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI;QAC5B,OAAO,CAAC,OAAO,EAAE,YAAY,IAAI,IAAI;QACrC,OAAO,CAAC,OAAO,EAAE,UAAU,IAAI,IAAI;QACnC,OAAO,CAAC,OAAO,EAAE,UAAU,IAAI,IAAI;QACnC,OAAO,CAAC,OAAO,EAAE,gBAAgB,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI;QACrE,OAAO,CAAC,OAAO,EAAE,YAAY,IAAI,IAAI;QACrC,OAAO,CAAC,OAAO,EAAE,gBAAgB,IAAI,IAAI;QACzC,OAAO,CAAC,aAAa,EAAE,MAAM,IAAI,IAAI;QACrC,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,IAAI;QAC5B,OAAO,CAAC,KAAK,EAAE,gBAAgB,EAAE,UAAU,IAAI,IAAI;QACnD,OAAO,CAAC,KAAK,EAAE,QAAQ,IAAI,IAAI;QAC/B,OAAO,CAAC,MAAM,EAAE,IAAI,IAAI,IAAI;QAC5B,OAAO,CAAC,OAAO,EAAE,mBAAmB,IAAI,IAAI;KAC7C,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,qBAAqB,CACnC,OAAqB,EACrB,GAAa;IAEb,MAAM,GAAG,GAAG,OAAO,CAAC,gBAAgB,CAAC;IACrC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACvB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;IACzE,CAAC;IACD,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC;IACjF,CAAC;IACD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;QACpD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACjE,CAAC;IACD,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;QAC9C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IAClE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAW,CAAC;QAC7E,MAAM,SAAS,GAAc,IAAA,6BAAe,EAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/E,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,IAAA,oBAAM,EAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;YAC3D,GAAG,EAAE,SAAS;YACd,WAAW,EAAE,YAAY;SAC1B,EAAE,SAAS,CAAC,CAAC;QACd,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,iBAAkB,GAAa,CAAC,OAAO,EAAE,EAAE,CAAC;IAC1G,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,6BAA6B,CAC3C,OAAqB,EACrB,IAAU;IAEV,MAAM,GAAG,GAAG,OAAO,CAAC,gBAAgB,CAAC;IACrC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACvB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;IACzE,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAChE,CAAC;IAED,yEAAyE;IACzE,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG;QACxB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC;QAC/D,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC;IAE7C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IACrE,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACnD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,OAAqB;IACjD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,gEAAgE;SACzE,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC;IAChD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAC/B,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,IAAI,IAAI,MAAM,CAAqB,CAAC;IACnF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,UAAU,IAAI,GAAG,CAAC;IACpE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAE3D,uDAAuD;IACvD,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;QACjD,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAEtD,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACH,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,IAAA,oCAAuB,EAAC;gBACrC,UAAU;gBACV,MAAM;gBACN,IAAI;gBACJ,MAAM;gBACN,eAAe,EAAE,OAAO,CAAC,gBAAgB;gBACzC,UAAU,EAAE,OAAO,CAAC,WAAW;aAChC,CAAC,CAAC;YACH,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,IAAA,qCAAwB,EAAC;gBACtC,UAAU;gBACV,MAAM;gBACN,IAAI;gBACJ,MAAM;aACP,CAAC,CAAC;YACH,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACjC,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,OAAO,CAAC,mBAAmB,IAAI,IAAI;YAC7C,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,KAAK;YACd,MAAM;YACN,MAAM,EAAE,mCAAmC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SAC9F,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,mBAAmB,IAAI,IAAI,CAAC;IACrD,MAAM,OAAO,GAAG,CAAC,CAAC,CAChB,QAAQ;QACR,UAAU;QACV,QAAQ,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,WAAW,EAAE,CACpD,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,IAAI;QACd,QAAQ;QACR,UAAU;QACV,OAAO;QACP,MAAM;QACN,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,+CAA+C;KAC9E,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,eAAe,CACnC,OAAqB,EACrB,UAAyD,EAAE;IAE3D,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE,SAAS,IAAI,IAAI,CAAC;IAEnD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,wDAAwD;SACjE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3C,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,SAAS;YACT,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,0BAA0B;SACnC,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,oBAAY,CAAC;IAC9C,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,2BAAmB,CAAC;IAEvE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,wBAAe,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,iBAAQ,CAAC,eAAe,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAY,MAAM,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAEjE,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,SAAS;YACT,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,+DAA+D;SAC7F,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,SAAS;YACT,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,uBAAuB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SAClF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACU,QAAA,sBAAsB,GAAG,sBAAsB,CAAC;AAE7D;;GAEG;AACH,SAAgB,oBAAoB,CAAC,OAAqB;IACxD,OAAO,IAAA,kBAAS,EAAC,IAAA,oBAAW,EAAC,IAAA,8BAAsB,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,aAAa,CACjC,OAAqB,EACrB,UAKI,EAAE;IAEN,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,yBAAyB;IACzB,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC1C,CAAC;IAED,2CAA2C;IAC3C,IAAI,gBAA6C,CAAC;IAClD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,gBAAgB,GAAG,6BAA6B,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACxE,IAAI,gBAAgB,CAAC,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,6BAA6B,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QACpC,gBAAgB,GAAG;YACjB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK;YACZ,GAAG,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG;YACjC,MAAM,EAAE,iEAAiE;SAC1E,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,gBAAgB,GAAG;YACjB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,wCAAwC;SACjD,CAAC;IACJ,CAAC;IAED,yCAAyC;IACzC,IAAI,SAAgC,CAAC;IACrC,IAAI,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;QACvD,SAAS,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE;YACzC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,eAAe,EAAE,OAAO,CAAC,eAAe;SACzC,CAAC,CAAC;QACH,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,SAAS,GAAG;YACV,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,IAAI,IAAI;YAC3C,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,OAAO,CAAC,cAAc;gBAC5B,CAAC,CAAC,sBAAsB;gBACxB,CAAC,CAAC,8BAA8B;SACnC,CAAC;IACJ,CAAC;IAED,wBAAwB;IACxB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,QAAQ,IAAI,IAAI,CAAC;IAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC;IAC3C,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,YAAY,IAAI,IAAI,CAAC;IAC1D,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC;IACxC,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC;IAEjD,4DAA4D;IAC5D,mFAAmF;IACnF,qFAAqF;IACrF,sEAAsE;IACtE,IAAI,OAA0C,CAAC;IAE/C,iFAAiF;IACjF,MAAM,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACpC,MAAM,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;IAChD,MAAM,gBAAgB,GAAG,YAAY,IAAI,YAAY,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IAEjF,kBAAkB;IAClB,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAE3D,IAAI,gBAAgB,IAAI,aAAa,EAAE,CAAC;QACtC,oEAAoE;QACpE,OAAO,GAAG,QAAQ,CAAC;IACrB,CAAC;SAAM,IAAI,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,iFAAiF;QACjF,OAAO,GAAG,SAAS,CAAC;IACtB,CAAC;SAAM,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,cAAc,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9E,2EAA2E;QAC3E,OAAO,GAAG,UAAU,CAAC;IACvB,CAAC;SAAM,IAAI,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnG,sCAAsC;QACtC,OAAO,GAAG,SAAS,CAAC;IACtB,CAAC;SAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3E,gEAAgE;QAChE,OAAO,GAAG,SAAS,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,QAAQ,CAAC;IACrB,CAAC;IAED,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,OAAO;QAC3B,OAAO;QACP,gBAAgB;QAChB,SAAS;QACT,WAAW;QACX,GAAG;QACH,KAAK;QACL,WAAW;QACX,EAAE;QACF,OAAO;QACP,MAAM;KACP,CAAC;AACJ,CAAC;AAED,kBAAe;IACb,aAAa;IACb,qBAAqB;IACrB,6BAA6B;IAC7B,eAAe;IACf,aAAa;IACb,wBAAwB,EAAxB,qCAAwB;IACxB,uBAAuB,EAAvB,oCAAuB;IACvB,sBAAsB;IACtB,sBAAsB,EAAtB,8BAAsB;IACtB,oBAAoB;IACpB,mBAAmB,EAAnB,2BAAmB;IACnB,YAAY,EAAZ,oBAAY;IACZ,oBAAoB,EAApB,4BAAoB;CACrB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/jws.d.ts ADDED
@@ -0,0 +1,23 @@
1
+ export interface Es256Jwk {
2
+ kty: 'EC';
3
+ crv: 'P-256';
4
+ x: string;
5
+ y: string;
6
+ kid?: string;
7
+ alg?: string;
8
+ use?: string;
9
+ }
10
+ export interface ReceiptWithIssuerJwk {
11
+ issuer_signature?: {
12
+ kid?: string;
13
+ jws?: string;
14
+ issuer_jwk?: Es256Jwk;
15
+ };
16
+ }
17
+ export declare function resolvePinnedIssuerJwk(receipt: ReceiptWithIssuerJwk): Es256Jwk | null;
18
+ export declare function verifyIssuerJws(jws: string, jwk: Es256Jwk): {
19
+ valid: boolean;
20
+ payload?: Record<string, unknown>;
21
+ reason?: string;
22
+ };
23
+ //# sourceMappingURL=jws.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jws.d.ts","sourceRoot":"","sources":["../src/jws.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,IAAI,CAAC;IACV,GAAG,EAAE,OAAO,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,CAAC,EAAE;QACjB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,QAAQ,CAAC;KACvB,CAAC;CACH;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,oBAAoB,GAAG,QAAQ,GAAG,IAAI,CAMrF;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,QAAQ,GACZ;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAyCxE"}
package/dist/jws.js ADDED
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolvePinnedIssuerJwk = resolvePinnedIssuerJwk;
4
+ exports.verifyIssuerJws = verifyIssuerJws;
5
+ /**
6
+ * Compact JWS (ES256) verification for Chit402 receipts.
7
+ */
8
+ const node_crypto_1 = require("node:crypto");
9
+ function resolvePinnedIssuerJwk(receipt) {
10
+ const jwk = receipt.issuer_signature?.issuer_jwk;
11
+ if (!jwk || jwk.kty !== 'EC' || jwk.crv !== 'P-256')
12
+ return null;
13
+ const kid = receipt.issuer_signature?.kid;
14
+ if (kid && jwk.kid && kid !== jwk.kid)
15
+ return null;
16
+ return jwk;
17
+ }
18
+ function verifyIssuerJws(jws, jwk) {
19
+ if (!jws || typeof jws !== 'string') {
20
+ return { valid: false, reason: 'invalid_jws' };
21
+ }
22
+ const parts = jws.split('.');
23
+ if (parts.length !== 3) {
24
+ return { valid: false, reason: 'malformed_jws' };
25
+ }
26
+ const [headerB64, payloadB64, signatureB64] = parts;
27
+ let header;
28
+ let payload;
29
+ try {
30
+ header = JSON.parse(Buffer.from(headerB64, 'base64url').toString('utf8'));
31
+ payload = JSON.parse(Buffer.from(payloadB64, 'base64url').toString('utf8'));
32
+ }
33
+ catch {
34
+ return { valid: false, reason: 'json_parse_error' };
35
+ }
36
+ if (header.alg !== 'ES256') {
37
+ return { valid: false, reason: `unsupported_alg: ${header.alg}` };
38
+ }
39
+ if (header.kid && jwk.kid && header.kid !== jwk.kid) {
40
+ return { valid: false, reason: 'kid_mismatch' };
41
+ }
42
+ try {
43
+ const publicKey = (0, node_crypto_1.createPublicKey)({
44
+ key: { kty: jwk.kty, crv: jwk.crv, x: jwk.x, y: jwk.y },
45
+ format: 'jwk',
46
+ });
47
+ const signature = Buffer.from(signatureB64, 'base64url');
48
+ const signingInput = `${headerB64}.${payloadB64}`;
49
+ const valid = (0, node_crypto_1.verify)('sha256', Buffer.from(signingInput, 'utf8'), {
50
+ key: publicKey,
51
+ dsaEncoding: 'ieee-p1363',
52
+ }, signature);
53
+ return valid ? { valid: true, payload } : { valid: false, reason: 'signature_invalid' };
54
+ }
55
+ catch (err) {
56
+ return { valid: false, reason: `verification_error: ${err.message}` };
57
+ }
58
+ }
59
+ //# sourceMappingURL=jws.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jws.js","sourceRoot":"","sources":["../src/jws.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Unified offline payer binding verification (Base + Solana).
3
+ */
4
+ import { type BasePayerVerification, type BaseReceiptFetcher } from './base-payer.js';
5
+ import { type SolanaPayerVerification, type SolanaRpcFetcher } from './solana-payer.js';
6
+ export type PayerRail = 'base' | 'solana' | 'unknown';
7
+ export interface PayerBindingVerification {
8
+ checked: boolean;
9
+ valid: boolean;
10
+ rail: PayerRail;
11
+ payerWallet?: string | null;
12
+ paymentRef?: string | null;
13
+ expectedAmount?: string | null;
14
+ base?: BasePayerVerification;
15
+ solana?: SolanaPayerVerification;
16
+ reason?: string;
17
+ }
18
+ export interface ReceiptPayerClaims {
19
+ payment?: {
20
+ ref?: string | null;
21
+ gross_amount?: string | null;
22
+ } | null;
23
+ caller_binding?: {
24
+ payer_wallet?: string | null;
25
+ } | null;
26
+ }
27
+ export interface VerifyPayerBindingOptions {
28
+ rpcUrl?: string;
29
+ solanaRpcUrl?: string;
30
+ fetchSolanaTransaction?: SolanaRpcFetcher;
31
+ fetchBaseReceipt?: BaseReceiptFetcher;
32
+ }
33
+ /** Decode the payload segment of a compact JWS (no signature check). */
34
+ export declare function decodeJwsPayload(jws: string): Record<string, unknown> | null;
35
+ /**
36
+ * Extract payer claims from a receipt envelope (top-level or JWS payload).
37
+ */
38
+ export declare function receiptPayerClaimsFromEnvelope(receipt: {
39
+ payment?: {
40
+ ref?: string | null;
41
+ gross_amount?: string | null;
42
+ } | null;
43
+ caller_binding?: {
44
+ payer_wallet?: string | null;
45
+ } | null;
46
+ issuer_signature?: {
47
+ jws?: string;
48
+ } | null;
49
+ }): ReceiptPayerClaims;
50
+ /**
51
+ * Verify caller_binding.payer_wallet against on-chain settlement in payment.ref.
52
+ */
53
+ export declare function verifyPayerBinding(claims: ReceiptPayerClaims, options?: VerifyPayerBindingOptions): Promise<PayerBindingVerification>;
54
+ //# sourceMappingURL=payer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payer.d.ts","sourceRoot":"","sources":["../src/payer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAmB,KAAK,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACvG,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,EAAE,qBAAqB,CAAC;IAC7B,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B,GAAG,IAAI,CAAC;IACT,cAAc,CAAC,EAAE;QACf,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B,GAAG,IAAI,CAAC;CACV;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB,CAAC,EAAE,gBAAgB,CAAC;IAC1C,gBAAgB,CAAC,EAAE,kBAAkB,CAAC;CACvC;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAQ5E;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE;IACtD,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACvE,cAAc,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACzD,gBAAgB,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC5C,GAAG,kBAAkB,CAqCrB;AAYD;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,kBAAkB,EAC1B,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC,CAiEnC"}
package/dist/payer.js ADDED
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ /**
3
+ * Unified offline payer binding verification (Base + Solana).
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.decodeJwsPayload = decodeJwsPayload;
7
+ exports.receiptPayerClaimsFromEnvelope = receiptPayerClaimsFromEnvelope;
8
+ exports.verifyPayerBinding = verifyPayerBinding;
9
+ const base_payer_js_1 = require("./base-payer.js");
10
+ const solana_payer_js_1 = require("./solana-payer.js");
11
+ /** Decode the payload segment of a compact JWS (no signature check). */
12
+ function decodeJwsPayload(jws) {
13
+ const parts = jws.split('.');
14
+ if (parts.length < 2)
15
+ return null;
16
+ try {
17
+ return JSON.parse(Buffer.from(parts[1], 'base64url').toString('utf8'));
18
+ }
19
+ catch {
20
+ return null;
21
+ }
22
+ }
23
+ /**
24
+ * Extract payer claims from a receipt envelope (top-level or JWS payload).
25
+ */
26
+ function receiptPayerClaimsFromEnvelope(receipt) {
27
+ if (receipt.payment?.ref || receipt.caller_binding?.payer_wallet) {
28
+ return {
29
+ payment: {
30
+ ref: receipt.payment?.ref ?? null,
31
+ gross_amount: receipt.payment?.gross_amount ?? null,
32
+ },
33
+ caller_binding: receipt.caller_binding ?? null,
34
+ };
35
+ }
36
+ const jws = receipt.issuer_signature?.jws;
37
+ if (!jws) {
38
+ return {
39
+ payment: { ref: null, gross_amount: null },
40
+ caller_binding: null,
41
+ };
42
+ }
43
+ const claims = decodeJwsPayload(jws);
44
+ if (!claims) {
45
+ return {
46
+ payment: { ref: null, gross_amount: null },
47
+ caller_binding: null,
48
+ };
49
+ }
50
+ const payment = claims.payment;
51
+ const callerBinding = claims.caller_binding;
52
+ return {
53
+ payment: {
54
+ ref: payment?.ref ?? null,
55
+ gross_amount: payment?.gross_amount ?? null,
56
+ },
57
+ caller_binding: callerBinding ?? null,
58
+ };
59
+ }
60
+ function detectRail(paymentRef) {
61
+ if (!paymentRef)
62
+ return 'unknown';
63
+ const lower = paymentRef.toLowerCase();
64
+ if (lower.startsWith('solana:'))
65
+ return 'solana';
66
+ if (lower.startsWith('base:') || lower.startsWith('base-sepolia:') || lower.startsWith('eip155:')) {
67
+ return 'base';
68
+ }
69
+ return 'unknown';
70
+ }
71
+ /**
72
+ * Verify caller_binding.payer_wallet against on-chain settlement in payment.ref.
73
+ */
74
+ async function verifyPayerBinding(claims, options = {}) {
75
+ const paymentRef = claims.payment?.ref ?? null;
76
+ const payerWallet = claims.caller_binding?.payer_wallet ?? null;
77
+ const grossAmount = claims.payment?.gross_amount ?? null;
78
+ const rail = detectRail(paymentRef);
79
+ if (!paymentRef) {
80
+ return { checked: false, valid: false, rail, reason: 'no_payment_ref' };
81
+ }
82
+ if (!payerWallet) {
83
+ return { checked: false, valid: false, rail, paymentRef, reason: 'no_payer_wallet' };
84
+ }
85
+ if (grossAmount == null || grossAmount === '') {
86
+ return { checked: false, valid: false, rail, paymentRef, payerWallet, reason: 'no_gross_amount' };
87
+ }
88
+ if (rail === 'solana') {
89
+ const solana = await (0, solana_payer_js_1.verifySolanaPayer)({
90
+ paymentRef,
91
+ payerWallet,
92
+ grossAmount,
93
+ rpcUrl: options.solanaRpcUrl || options.rpcUrl,
94
+ fetchTransaction: options.fetchSolanaTransaction,
95
+ });
96
+ return {
97
+ checked: solana.checked,
98
+ valid: solana.valid,
99
+ rail: 'solana',
100
+ payerWallet,
101
+ paymentRef,
102
+ expectedAmount: grossAmount,
103
+ solana,
104
+ reason: solana.reason,
105
+ };
106
+ }
107
+ if (rail === 'base') {
108
+ const base = await (0, base_payer_js_1.verifyBasePayer)({
109
+ paymentRef,
110
+ payerWallet,
111
+ grossAmount,
112
+ rpcUrl: options.rpcUrl,
113
+ fetchReceipt: options.fetchBaseReceipt,
114
+ });
115
+ return {
116
+ checked: base.checked,
117
+ valid: base.valid,
118
+ rail: 'base',
119
+ payerWallet,
120
+ paymentRef,
121
+ expectedAmount: grossAmount,
122
+ base,
123
+ reason: base.reason,
124
+ };
125
+ }
126
+ return {
127
+ checked: false,
128
+ valid: false,
129
+ rail: 'unknown',
130
+ payerWallet,
131
+ paymentRef,
132
+ expectedAmount: grossAmount,
133
+ reason: `unsupported_payment_ref: ${paymentRef}`,
134
+ };
135
+ }
136
+ //# sourceMappingURL=payer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payer.js","sourceRoot":"","sources":["../src/payer.ts"],"names":[],"mappings":"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"}