vendure-plugin-bitcoin-lightning-via-clink 0.1.0 → 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/CHANGELOG.md +33 -0
- package/README.md +13 -2
- package/dist/api/clink-webhook.controller.d.ts +12 -2
- package/dist/api/clink-webhook.controller.d.ts.map +1 -1
- package/dist/api/clink-webhook.controller.js +120 -42
- package/dist/api/clink-webhook.controller.js.map +1 -1
- package/dist/clink.plugin.d.ts +2 -1
- package/dist/clink.plugin.d.ts.map +1 -1
- package/dist/clink.plugin.js +3 -0
- package/dist/clink.plugin.js.map +1 -1
- package/dist/config/clink-config.d.ts +14 -1
- package/dist/config/clink-config.d.ts.map +1 -1
- package/dist/config/clink-config.js +2 -0
- package/dist/config/clink-config.js.map +1 -1
- package/dist/payment-handler.d.ts.map +1 -1
- package/dist/payment-handler.js +2 -1
- package/dist/payment-handler.js.map +1 -1
- package/dist/services/clink.service.d.ts.map +1 -1
- package/dist/services/clink.service.js +6 -1
- package/dist/services/clink.service.js.map +1 -1
- package/dist/services/nostr-key.service.d.ts.map +1 -1
- package/dist/services/nostr-key.service.js +13 -1
- package/dist/services/nostr-key.service.js.map +1 -1
- package/dist/services/payment-monitor.service.d.ts.map +1 -1
- package/dist/services/payment-monitor.service.js +80 -18
- package/dist/services/payment-monitor.service.js.map +1 -1
- package/dist/utils/crypto.d.ts +81 -0
- package/dist/utils/crypto.d.ts.map +1 -0
- package/dist/utils/crypto.js +256 -0
- package/dist/utils/crypto.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,38 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.3.0 (2026-08-01)
|
|
4
|
+
|
|
5
|
+
### Security
|
|
6
|
+
|
|
7
|
+
- **FIXED**: Rewrote BOLT11 decoder (`decodeBolt11`) to use proper bech32 HRP/separator parsing — `extractPaymentHashFromBolt11` and `extractTimestampFromBolt11` previously returned `null`/`0` on valid invoices (verified against the official BOLT11 test vector)
|
|
8
|
+
- Added network validation — invoices are checked against the configured `network` (`mainnet` default, also `testnet`/`regtest`) in both webhook and relay payment paths
|
|
9
|
+
- Added invoice expiry validation — expired invoices are rejected (default 3600s if no `x` tag)
|
|
10
|
+
- Added SSRF protection for relay URLs — `isAllowedRelayUrl` rejects non-wss/ws schemes, localhost, private/loopback/link-local IPs; applied to subscribe, publish, key generation, and payment handler
|
|
11
|
+
- Relay settlement now **requires** preimage + bolt11 proof and verifies the payment hash — `res:"ok"` without proof is refused
|
|
12
|
+
- Atomic status transitions — offer settlement/expiry updates are conditional on `status: 'pending'` and re-checked
|
|
13
|
+
- Added Nostr event kind (`21001`) and `p`-tag correlation checks before processing relay events
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- New `network` config option: `'mainnet' | 'testnet' | 'regtest'` (default `mainnet`)
|
|
18
|
+
- `NostrKeyService` and `ClinkService` throw when all configured relay URLs are blocked
|
|
19
|
+
|
|
20
|
+
## 0.2.0 (2026-07-23)
|
|
21
|
+
|
|
22
|
+
### Security
|
|
23
|
+
|
|
24
|
+
- **CRITICAL**: Added HMAC-SHA256 signature verification for all webhook endpoints (`x-clink-signature` header)
|
|
25
|
+
- **CRITICAL**: Added preimage verification — `sha256(preimage) === payment_hash` is now enforced before settling
|
|
26
|
+
- Added BOLT11 invoice decoding to extract payment hash and amount for verification
|
|
27
|
+
- Added amount validation — bolt11 invoice amount must match offer amount
|
|
28
|
+
- Added Nostr event signature verification (`verifyEvent`) for relay payments
|
|
29
|
+
- Added `webhookSecret` config option — **required when `httpFallback` is enabled**
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
|
|
33
|
+
- Webhook endpoints now reject all requests without valid HMAC signature
|
|
34
|
+
- Webhook endpoints now reject requests without preimage verification
|
|
35
|
+
|
|
3
36
|
## 0.1.0 (2026-07-23)
|
|
4
37
|
|
|
5
38
|
### Features
|
package/README.md
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
# vendure-plugin-bitcoin-lightning-via-clink
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/vendure-plugin-bitcoin-lightning-via-clink)
|
|
3
4
|
[](https://www.vendure.io/)
|
|
4
5
|
[](https://www.typescriptlang.org/)
|
|
5
|
-
[](https://www.gnu.org/licenses/gpl-3.0)
|
|
7
|
+
[](https://clinkme.dev)
|
|
6
8
|
|
|
7
9
|
**Bitcoin Lightning payments for [Vendure](https://www.vendure.io/) via the [CLINK](https://clinkme.dev) protocol — Nostr-native static payment codes.**
|
|
8
10
|
|
|
@@ -99,6 +101,8 @@ export const config: VendureConfig = {
|
|
|
99
101
|
autoSettle: true,
|
|
100
102
|
offerExpiryMinutes: 30,
|
|
101
103
|
httpFallback: true,
|
|
104
|
+
webhookSecret: process.env.CLINK_WEBHOOK_SECRET || '',
|
|
105
|
+
network: 'mainnet',
|
|
102
106
|
}),
|
|
103
107
|
],
|
|
104
108
|
// ... rest of config
|
|
@@ -123,6 +127,8 @@ Customers can now select CLINK at checkout and pay from any compatible wallet.
|
|
|
123
127
|
| `autoSettle` | `boolean` | `true` | Auto-confirm payments when Nostr receipt received |
|
|
124
128
|
| `offerExpiryMinutes` | `number` | `30` | Minutes before payment offer expires |
|
|
125
129
|
| `httpFallback` | `boolean` | `true` | Enable HTTP webhook at `/payments/clink` |
|
|
130
|
+
| `network` | `string` | `'mainnet'` | Bitcoin network for invoice validation: `'mainnet'`, `'testnet'`, or `'regtest'` |
|
|
131
|
+
| `webhookSecret` | `string` | `''` | HMAC secret for webhook auth. **Required when `httpFallback: true`** |
|
|
126
132
|
| `nostrSecretKey` | `string` | `''` | Global Nostr key (hex). Per-channel keys generated if empty |
|
|
127
133
|
|
|
128
134
|
---
|
|
@@ -324,7 +330,7 @@ npm run dev # Watch mode
|
|
|
324
330
|
|
|
325
331
|
## License
|
|
326
332
|
|
|
327
|
-
|
|
333
|
+
GPL v3
|
|
328
334
|
|
|
329
335
|
---
|
|
330
336
|
|
|
@@ -334,3 +340,8 @@ MIT
|
|
|
334
340
|
- [Vendure](https://www.vendure.io/) — eCommerce platform
|
|
335
341
|
- [Nostr](https://nostr.com/) — Decentralized protocol
|
|
336
342
|
- [ShockNet](https://github.com/ShockNet) — Bitcoin Lightning infrastructure
|
|
343
|
+
|
|
344
|
+
## Conversations
|
|
345
|
+
- In this repo: https://github.com/WoompaLoompa/vendure-clink/discussions
|
|
346
|
+
- In Vendure GH forum: https://github.com/vendurehq/vendure/discussions/5019
|
|
347
|
+
- In Vendure Discord: https://discord.com/channels/1100672177260478564/1529747875364474921
|
|
@@ -7,18 +7,28 @@ interface PaymentNotification {
|
|
|
7
7
|
preimage: string;
|
|
8
8
|
amount_sats?: number;
|
|
9
9
|
timestamp?: number;
|
|
10
|
+
signature?: string;
|
|
10
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Webhook controller for receiving CLINK payment notifications.
|
|
14
|
+
*
|
|
15
|
+
* @description
|
|
16
|
+
* All endpoints require HMAC-SHA256 signature verification using the plugin's webhookSecret.
|
|
17
|
+
* Preimage verification (sha256(preimage) === payment_hash) is enforced before settling.
|
|
18
|
+
*
|
|
19
|
+
* @category Plugin
|
|
20
|
+
*/
|
|
11
21
|
export declare class ClinkWebhookController {
|
|
12
22
|
private connection;
|
|
13
23
|
private clinkService;
|
|
14
24
|
private paymentMonitor;
|
|
15
25
|
private readonly logger;
|
|
16
26
|
constructor(connection: TransactionalConnection, clinkService: ClinkService, paymentMonitor: PaymentMonitorService);
|
|
17
|
-
handlePaymentNotification(body: PaymentNotification): Promise<{
|
|
27
|
+
handlePaymentNotification(body: PaymentNotification, signatureHeader: string | undefined): Promise<{
|
|
18
28
|
success: boolean;
|
|
19
29
|
message?: string;
|
|
20
30
|
}>;
|
|
21
|
-
handleWebhook(body: any): Promise<{
|
|
31
|
+
handleWebhook(body: any, signatureHeader: string | undefined): Promise<{
|
|
22
32
|
received: boolean;
|
|
23
33
|
}>;
|
|
24
34
|
private createSystemContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clink-webhook.controller.d.ts","sourceRoot":"","sources":["../../src/api/clink-webhook.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAA2B,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"clink-webhook.controller.d.ts","sourceRoot":"","sources":["../../src/api/clink-webhook.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAA2B,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAc5E,UAAU,mBAAmB;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,qBACa,sBAAsB;IAI/B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,cAAc;IALxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;gBAG5C,UAAU,EAAE,uBAAuB,EACnC,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,qBAAqB;IAKzC,yBAAyB,CACrB,IAAI,EAAE,mBAAmB,EACH,eAAe,EAAE,MAAM,GAAG,SAAS,GAChE,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA6G5C,aAAa,CACT,IAAI,EAAE,GAAG,EACa,eAAe,EAAE,MAAM,GAAG,SAAS,GAChE,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;YAsDnB,mBAAmB;CAYlC"}
|
|
@@ -17,7 +17,18 @@ const common_1 = require("@nestjs/common");
|
|
|
17
17
|
const core_1 = require("@vendure/core");
|
|
18
18
|
const clink_service_1 = require("../services/clink.service");
|
|
19
19
|
const payment_monitor_service_1 = require("../services/payment-monitor.service");
|
|
20
|
+
const clink_plugin_1 = require("../clink.plugin");
|
|
21
|
+
const crypto_1 = require("../utils/crypto");
|
|
20
22
|
const CONTROLLER_NAME = 'ClinkWebhookController';
|
|
23
|
+
/**
|
|
24
|
+
* Webhook controller for receiving CLINK payment notifications.
|
|
25
|
+
*
|
|
26
|
+
* @description
|
|
27
|
+
* All endpoints require HMAC-SHA256 signature verification using the plugin's webhookSecret.
|
|
28
|
+
* Preimage verification (sha256(preimage) === payment_hash) is enforced before settling.
|
|
29
|
+
*
|
|
30
|
+
* @category Plugin
|
|
31
|
+
*/
|
|
21
32
|
let ClinkWebhookController = class ClinkWebhookController {
|
|
22
33
|
constructor(connection, clinkService, paymentMonitor) {
|
|
23
34
|
this.connection = connection;
|
|
@@ -25,61 +36,126 @@ let ClinkWebhookController = class ClinkWebhookController {
|
|
|
25
36
|
this.paymentMonitor = paymentMonitor;
|
|
26
37
|
this.logger = new common_1.Logger(CONTROLLER_NAME);
|
|
27
38
|
}
|
|
28
|
-
async handlePaymentNotification(body) {
|
|
39
|
+
async handlePaymentNotification(body, signatureHeader) {
|
|
40
|
+
const config = clink_plugin_1.ClinkPlugin.getInitOptions();
|
|
41
|
+
if (!config.webhookSecret) {
|
|
42
|
+
this.logger.error('webhookSecret not configured — rejecting all webhook requests');
|
|
43
|
+
return { success: false, message: 'Webhook endpoint not configured' };
|
|
44
|
+
}
|
|
45
|
+
if (!signatureHeader) {
|
|
46
|
+
this.logger.warn('Missing x-clink-signature header');
|
|
47
|
+
return { success: false, message: 'Missing signature header' };
|
|
48
|
+
}
|
|
29
49
|
try {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
return {
|
|
35
|
-
success: false,
|
|
36
|
-
message: 'Missing required fields: offerId, bolt11, preimage',
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
const ctx = await this.createSystemContext();
|
|
40
|
-
const offer = await this.clinkService.getOfferById(ctx, offerId);
|
|
41
|
-
if (!offer) {
|
|
42
|
-
this.logger.warn(`Offer not found: ${offerId}`);
|
|
43
|
-
return {
|
|
44
|
-
success: false,
|
|
45
|
-
message: `Offer ${offerId} not found`,
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
if (offer.status === 'paid') {
|
|
49
|
-
this.logger.log(`Offer ${offerId} already settled`);
|
|
50
|
-
return {
|
|
51
|
-
success: true,
|
|
52
|
-
message: 'Payment already settled',
|
|
53
|
-
};
|
|
50
|
+
const payloadStr = JSON.stringify(body);
|
|
51
|
+
if (!(0, crypto_1.verifyHmac)(config.webhookSecret, payloadStr, signatureHeader)) {
|
|
52
|
+
this.logger.warn(`Invalid HMAC signature for offer: ${body.offerId}`);
|
|
53
|
+
return { success: false, message: 'Invalid signature' };
|
|
54
54
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
this.logger.log(`Payment settled for offer ${offerId}`);
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
this.logger.warn(`Signature verification failed: ${err.message}`);
|
|
58
|
+
return { success: false, message: 'Signature verification failed' };
|
|
59
|
+
}
|
|
60
|
+
const { offerId, bolt11, preimage } = body;
|
|
61
|
+
if (!offerId || !bolt11 || !preimage) {
|
|
62
|
+
this.logger.warn('Invalid payment notification: missing required fields');
|
|
64
63
|
return {
|
|
65
|
-
success:
|
|
66
|
-
message: '
|
|
64
|
+
success: false,
|
|
65
|
+
message: 'Missing required fields: offerId, bolt11, preimage',
|
|
67
66
|
};
|
|
68
67
|
}
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
const paymentHash = (0, crypto_1.extractPaymentHashFromBolt11)(bolt11);
|
|
69
|
+
if (!paymentHash) {
|
|
70
|
+
this.logger.warn(`Failed to extract payment hash from bolt11 for offer: ${offerId}`);
|
|
71
|
+
return { success: false, message: 'Invalid bolt11 invoice' };
|
|
72
|
+
}
|
|
73
|
+
if (!(0, crypto_1.verifyPreimage)(preimage, paymentHash)) {
|
|
74
|
+
this.logger.warn(`Preimage verification failed for offer: ${offerId} — sha256(preimage) !== payment_hash`);
|
|
75
|
+
return { success: false, message: 'Preimage verification failed' };
|
|
76
|
+
}
|
|
77
|
+
const ctx = await this.createSystemContext();
|
|
78
|
+
const offer = await this.clinkService.getOfferById(ctx, offerId);
|
|
79
|
+
if (!offer) {
|
|
80
|
+
this.logger.warn(`Offer not found: ${offerId}`);
|
|
81
|
+
return { success: false, message: `Offer ${offerId} not found` };
|
|
82
|
+
}
|
|
83
|
+
if (offer.status === 'paid') {
|
|
84
|
+
this.logger.log(`Offer ${offerId} already settled`);
|
|
85
|
+
return { success: true, message: 'Payment already settled' };
|
|
86
|
+
}
|
|
87
|
+
if (offer.status !== 'pending') {
|
|
88
|
+
this.logger.warn(`Offer ${offerId} is in unexpected state: ${offer.status}`);
|
|
71
89
|
return {
|
|
72
90
|
success: false,
|
|
73
|
-
message:
|
|
91
|
+
message: `Offer is in state ${offer.status}, expected pending`,
|
|
74
92
|
};
|
|
75
93
|
}
|
|
94
|
+
const claimedMsat = (0, crypto_1.extractAmountMsatFromBolt11)(bolt11);
|
|
95
|
+
if (claimedMsat !== null && offer.amountSats > 0) {
|
|
96
|
+
const expectedMsat = offer.amountSats * 1000;
|
|
97
|
+
if (claimedMsat !== expectedMsat) {
|
|
98
|
+
this.logger.warn(`Amount mismatch for offer ${offerId}: expected ${expectedMsat} msat, got ${claimedMsat} msat`);
|
|
99
|
+
return { success: false, message: 'Amount mismatch' };
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const network = config.network;
|
|
103
|
+
const invoiceNetwork = (0, crypto_1.extractNetworkFromBolt11)(bolt11);
|
|
104
|
+
if (network && invoiceNetwork && invoiceNetwork !== network) {
|
|
105
|
+
this.logger.warn(`Network mismatch for offer ${offerId}: expected ${network}, got ${invoiceNetwork}`);
|
|
106
|
+
return { success: false, message: 'Network mismatch' };
|
|
107
|
+
}
|
|
108
|
+
const timestamp = (0, crypto_1.extractTimestampFromBolt11)(bolt11);
|
|
109
|
+
const expiry = (0, crypto_1.extractExpiryFromBolt11)(bolt11);
|
|
110
|
+
if (timestamp !== null && expiry !== null) {
|
|
111
|
+
const expiryTime = timestamp + expiry;
|
|
112
|
+
if (Date.now() / 1000 > expiryTime) {
|
|
113
|
+
this.logger.warn(`BOLT11 invoice for offer ${offerId} has expired`);
|
|
114
|
+
return { success: false, message: 'Invoice expired' };
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
await this.paymentMonitor.handlePaymentReceipt(ctx, offerId, preimage, bolt11);
|
|
118
|
+
this.logger.log(`Payment settled for offer ${offerId}`);
|
|
119
|
+
return {
|
|
120
|
+
success: true,
|
|
121
|
+
message: 'Payment settled successfully',
|
|
122
|
+
};
|
|
76
123
|
}
|
|
77
|
-
async handleWebhook(body) {
|
|
124
|
+
async handleWebhook(body, signatureHeader) {
|
|
125
|
+
const config = clink_plugin_1.ClinkPlugin.getInitOptions();
|
|
126
|
+
if (!config.webhookSecret) {
|
|
127
|
+
this.logger.error('webhookSecret not configured — rejecting all webhook requests');
|
|
128
|
+
return { received: false };
|
|
129
|
+
}
|
|
130
|
+
if (!signatureHeader) {
|
|
131
|
+
this.logger.warn('Missing x-clink-signature header on webhook');
|
|
132
|
+
return { received: false };
|
|
133
|
+
}
|
|
134
|
+
try {
|
|
135
|
+
const payloadStr = JSON.stringify(body);
|
|
136
|
+
if (!(0, crypto_1.verifyHmac)(config.webhookSecret, payloadStr, signatureHeader)) {
|
|
137
|
+
this.logger.warn('Invalid HMAC signature on webhook');
|
|
138
|
+
return { received: false };
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
catch (err) {
|
|
142
|
+
this.logger.warn(`Webhook signature verification failed: ${err.message}`);
|
|
143
|
+
return { received: false };
|
|
144
|
+
}
|
|
78
145
|
try {
|
|
79
146
|
this.logger.log('Received webhook notification');
|
|
80
147
|
if (body.type === 'payment_confirmed' && body.data) {
|
|
81
148
|
const { offerId, bolt11, preimage } = body.data;
|
|
82
149
|
if (offerId && bolt11 && preimage) {
|
|
150
|
+
const paymentHash = (0, crypto_1.extractPaymentHashFromBolt11)(bolt11);
|
|
151
|
+
if (!paymentHash) {
|
|
152
|
+
this.logger.warn(`Failed to extract payment hash from bolt11 for offer: ${offerId}`);
|
|
153
|
+
return { received: false };
|
|
154
|
+
}
|
|
155
|
+
if (!(0, crypto_1.verifyPreimage)(preimage, paymentHash)) {
|
|
156
|
+
this.logger.warn(`Preimage verification failed for offer: ${offerId}`);
|
|
157
|
+
return { received: false };
|
|
158
|
+
}
|
|
83
159
|
const ctx = await this.createSystemContext();
|
|
84
160
|
await this.paymentMonitor.handlePaymentReceipt(ctx, offerId, preimage, bolt11);
|
|
85
161
|
}
|
|
@@ -109,16 +185,18 @@ __decorate([
|
|
|
109
185
|
(0, common_1.Post)(),
|
|
110
186
|
(0, common_1.HttpCode)(common_1.HttpStatus.OK),
|
|
111
187
|
__param(0, (0, common_1.Body)()),
|
|
188
|
+
__param(1, (0, common_1.Headers)('x-clink-signature')),
|
|
112
189
|
__metadata("design:type", Function),
|
|
113
|
-
__metadata("design:paramtypes", [Object]),
|
|
190
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
114
191
|
__metadata("design:returntype", Promise)
|
|
115
192
|
], ClinkWebhookController.prototype, "handlePaymentNotification", null);
|
|
116
193
|
__decorate([
|
|
117
194
|
(0, common_1.Post)('webhook'),
|
|
118
195
|
(0, common_1.HttpCode)(common_1.HttpStatus.OK),
|
|
119
196
|
__param(0, (0, common_1.Body)()),
|
|
197
|
+
__param(1, (0, common_1.Headers)('x-clink-signature')),
|
|
120
198
|
__metadata("design:type", Function),
|
|
121
|
-
__metadata("design:paramtypes", [Object]),
|
|
199
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
122
200
|
__metadata("design:returntype", Promise)
|
|
123
201
|
], ClinkWebhookController.prototype, "handleWebhook", null);
|
|
124
202
|
exports.ClinkWebhookController = ClinkWebhookController = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clink-webhook.controller.js","sourceRoot":"","sources":["../../src/api/clink-webhook.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"clink-webhook.controller.js","sourceRoot":"","sources":["../../src/api/clink-webhook.controller.ts"],"names":[],"mappings":"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"}
|
package/dist/clink.plugin.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { OnApplicationBootstrap } from '@nestjs/common';
|
|
2
2
|
import { ModuleRef } from '@nestjs/core';
|
|
3
3
|
import { OracleService } from './oracle';
|
|
4
|
-
import { ClinkPluginInitOptions } from './config/clink-config';
|
|
4
|
+
import { ClinkPluginInitOptions, DEFAULT_CLINK_OPTIONS } from './config/clink-config';
|
|
5
5
|
/**
|
|
6
6
|
* Vendure plugin for accepting Bitcoin Lightning payments via the CLINK protocol.
|
|
7
7
|
*
|
|
@@ -39,6 +39,7 @@ export declare class ClinkPlugin implements OnApplicationBootstrap {
|
|
|
39
39
|
*/
|
|
40
40
|
static init(options: ClinkPluginInitOptions): typeof ClinkPlugin;
|
|
41
41
|
static getOracleService(): OracleService;
|
|
42
|
+
static getInitOptions(): typeof DEFAULT_CLINK_OPTIONS;
|
|
42
43
|
onApplicationBootstrap(): Promise<void>;
|
|
43
44
|
}
|
|
44
45
|
//# sourceMappingURL=clink.plugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clink.plugin.d.ts","sourceRoot":"","sources":["../src/clink.plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAU,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAazC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"clink.plugin.d.ts","sourceRoot":"","sources":["../src/clink.plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAU,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAazC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAKtF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAuBa,WAAY,YAAW,sBAAsB;IAI5C,OAAO,CAAC,SAAS;IAH7B,OAAO,CAAC,MAAM,CAAC,WAAW,CAAuD;IACjF,OAAO,CAAC,MAAM,CAAC,aAAa,CAAgB;gBAExB,SAAS,EAAE,SAAS;IAExC;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB;IAQ3C,MAAM,CAAC,gBAAgB,IAAI,aAAa;IAIxC,MAAM,CAAC,cAAc,IAAI,OAAO,qBAAqB;IAI/C,sBAAsB;CAoB7B"}
|
package/dist/clink.plugin.js
CHANGED
|
@@ -74,6 +74,9 @@ let ClinkPlugin = ClinkPlugin_1 = class ClinkPlugin {
|
|
|
74
74
|
static getOracleService() {
|
|
75
75
|
return ClinkPlugin_1.oracleService;
|
|
76
76
|
}
|
|
77
|
+
static getInitOptions() {
|
|
78
|
+
return ClinkPlugin_1.initOptions;
|
|
79
|
+
}
|
|
77
80
|
async onApplicationBootstrap() {
|
|
78
81
|
const clinkService = this.moduleRef.get(clink_service_1.ClinkService, { strict: false });
|
|
79
82
|
const nostrKeyService = this.moduleRef.get(nostr_key_service_1.NostrKeyService, { strict: false });
|
package/dist/clink.plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clink.plugin.js","sourceRoot":"","sources":["../src/clink.plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,wCAAkE;AAClE,2CAAgE;AAChE,uCAAyC;AACzC,sEAA2D;AAC3D,wFAA4E;AAC5E,4DAAwD;AACxD,oEAA+D;AAC/D,gFAA2E;AAC3E,uDAAwD;AACxD,yDAA0D;AAC1D,6EAAwE;AACxE,mEAA8D;AAC9D,qEAAgE;AAChE,uDAA0E;AAC1E,uDAAwD;AACxD,qCAAyC;AACzC,wDAAsF;AAEtF,MAAM,WAAW,GAAG,aAAa,CAAC;AAClC,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,WAAW,CAAC,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAwBI,IAAM,WAAW,mBAAjB,MAAM,WAAW;IAItB,YAAoB,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IAE5C;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,CAAC,OAA+B;QACzC,aAAW,CAAC,WAAW,GAAG,EAAE,GAAG,oCAAqB,EAAE,GAAG,OAAO,EAAE,CAAC;QACnE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,aAAW,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,GAAG,oCAAqB,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAS,CAAC;QACjG,CAAC;QACD,OAAO,aAAW,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,gBAAgB;QACrB,OAAO,aAAW,CAAC,aAAa,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,sBAAsB;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,4BAAY,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mCAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/E,IAAA,kCAAgB,EAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QAEhD,aAAW,CAAC,aAAa,GAAG,IAAI,sBAAa,CAAC,aAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAE9E,MAAM,CAAC,GAAG,CACR,gDAAgD;YAChD,WAAW,aAAW,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACxD,WAAW,aAAW,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CACrD,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,aAAW,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YACzD,MAAM,CAAC,GAAG,CAAC,uBAAuB,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,UAAU,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC9F,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,yCAAyC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;;
|
|
1
|
+
{"version":3,"file":"clink.plugin.js","sourceRoot":"","sources":["../src/clink.plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,11 +15,24 @@ export interface ClinkPluginInitOptions {
|
|
|
15
15
|
httpFallback?: boolean;
|
|
16
16
|
/** Static Nostr secret key for the plugin (auto-generated if not provided). */
|
|
17
17
|
nostrSecretKey?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Secret key for HMAC-SHA256 verification of webhook payloads.
|
|
20
|
+
* Required when httpFallback is enabled. Generate with: openssl rand -hex 32
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* ClinkPlugin.init({
|
|
24
|
+
* webhookSecret: 'your-secret-key-here',
|
|
25
|
+
* })
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
webhookSecret?: string;
|
|
29
|
+
/** Bitcoin network for BOLT11 invoice validation (default: 'mainnet'). */
|
|
30
|
+
network?: 'mainnet' | 'testnet' | 'regtest';
|
|
18
31
|
/** BTC price oracle configuration (default: CoinGecko with Kraken fallback). */
|
|
19
32
|
oracle?: OracleConfig;
|
|
20
33
|
}
|
|
21
34
|
export declare const DEFAULT_ORACLE_OPTIONS: OracleConfig;
|
|
22
|
-
export declare const DEFAULT_CLINK_OPTIONS: Required<Pick<ClinkPluginInitOptions, 'relays' | 'autoSettle' | 'offerExpiryMinutes' | 'httpFallback' | 'nostrSecretKey'>> & {
|
|
35
|
+
export declare const DEFAULT_CLINK_OPTIONS: Required<Pick<ClinkPluginInitOptions, 'relays' | 'autoSettle' | 'offerExpiryMinutes' | 'httpFallback' | 'nostrSecretKey' | 'webhookSecret' | 'network'>> & {
|
|
23
36
|
oracle: OracleConfig;
|
|
24
37
|
};
|
|
25
38
|
//# sourceMappingURL=clink-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clink-config.d.ts","sourceRoot":"","sources":["../../src/config/clink-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAwC,MAAM,wBAAwB,CAAC;AAE5F;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,gEAAgE;IAChE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6DAA6D;IAC7D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+DAA+D;IAC/D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,eAAO,MAAM,sBAAsB,EAAE,YAIpC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAC1C,IAAI,CAAC,sBAAsB,EAAE,QAAQ,GAAG,YAAY,GAAG,oBAAoB,GAAG,cAAc,GAAG,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"clink-config.d.ts","sourceRoot":"","sources":["../../src/config/clink-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAwC,MAAM,wBAAwB,CAAC;AAE5F;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,gEAAgE;IAChE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6DAA6D;IAC7D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+DAA+D;IAC/D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC5C,gFAAgF;IAChF,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,eAAO,MAAM,sBAAsB,EAAE,YAIpC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAC1C,IAAI,CAAC,sBAAsB,EAAE,QAAQ,GAAG,YAAY,GAAG,oBAAoB,GAAG,cAAc,GAAG,gBAAgB,GAAG,eAAe,GAAG,SAAS,CAAC,CAC/I,GAAG;IAAE,MAAM,EAAE,YAAY,CAAA;CASzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clink-config.js","sourceRoot":"","sources":["../../src/config/clink-config.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"clink-config.js","sourceRoot":"","sources":["../../src/config/clink-config.ts"],"names":[],"mappings":";;;AAmCa,QAAA,sBAAsB,GAAiB;IAClD,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,MAAM;IAClB,iBAAiB,EAAE,CAAC,QAAQ,CAAC;CAC9B,CAAC;AAEW,QAAA,qBAAqB,GAEH;IAC7B,MAAM,EAAE,CAAC,8BAA8B,CAAC;IACxC,UAAU,EAAE,IAAI;IAChB,kBAAkB,EAAE,EAAE;IACtB,YAAY,EAAE,IAAI;IAClB,cAAc,EAAE,EAAE;IAClB,aAAa,EAAE,EAAE;IACjB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,8BAAsB;CAC/B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment-handler.d.ts","sourceRoot":"","sources":["../src/payment-handler.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EAGpB,YAAY,EAKb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"payment-handler.d.ts","sourceRoot":"","sources":["../src/payment-handler.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EAGpB,YAAY,EAKb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAU/D;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,eAAe,QAIvB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;EAkJ9B,CAAC"}
|
package/dist/payment-handler.js
CHANGED
|
@@ -5,6 +5,7 @@ exports.setClinkServices = setClinkServices;
|
|
|
5
5
|
const common_1 = require("@nestjs/common");
|
|
6
6
|
const core_1 = require("@vendure/core");
|
|
7
7
|
const clink_plugin_1 = require("./clink.plugin");
|
|
8
|
+
const crypto_1 = require("./utils/crypto");
|
|
8
9
|
const HANDLER_NAME = 'ClinkPaymentHandler';
|
|
9
10
|
const logger = new common_1.Logger(HANDLER_NAME);
|
|
10
11
|
let clinkService = null;
|
|
@@ -65,7 +66,7 @@ exports.ClinkPaymentHandler = new core_1.PaymentMethodHandler({
|
|
|
65
66
|
const channelId = typeof ctx.channelId === 'string' ? parseInt(ctx.channelId, 10) : ctx.channelId;
|
|
66
67
|
const config = await nostrKeyService.getOrCreateChannelKeys(ctx, channelId);
|
|
67
68
|
const relayUrlsFromArgs = args.relayUrls
|
|
68
|
-
? args.relayUrls.split(',').map((u) => u.trim()).filter(Boolean)
|
|
69
|
+
? (0, crypto_1.filterAllowedRelayUrls)(args.relayUrls.split(',').map((u) => u.trim()).filter(Boolean))
|
|
69
70
|
: config.relayUrls;
|
|
70
71
|
const oracle = clink_plugin_1.ClinkPlugin.getOracleService();
|
|
71
72
|
let amountSats;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment-handler.js","sourceRoot":"","sources":["../src/payment-handler.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"payment-handler.js","sourceRoot":"","sources":["../src/payment-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clink.service.d.ts","sourceRoot":"","sources":["../../src/services/clink.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,sBAAsB,EAAU,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,cAAc,EAAW,EAAE,EAAE,MAAM,eAAe,CAAC;AACrG,OAAO,EAAE,QAAQ,EAA8C,MAAM,qBAAqB,CAAC;AAE3F,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"clink.service.d.ts","sourceRoot":"","sources":["../../src/services/clink.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,sBAAsB,EAAU,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,cAAc,EAAW,EAAE,EAAE,MAAM,eAAe,CAAC;AACrG,OAAO,EAAE,QAAQ,EAA8C,MAAM,qBAAqB,CAAC;AAE3F,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAI7E;;;;;;;;GAQG;AACH,qBACa,YAAa,YAAW,sBAAsB;IAKvD,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,cAAc;IALxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoC;gBAGvD,UAAU,EAAE,uBAAuB,EACnC,cAAc,EAAE,cAAc;IAGlC,sBAAsB;IAM5B,cAAc,CAAC,MAAM,EAAE,kBAAkB,GAAG,QAAQ;IAyB9C,WAAW,CACf,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,EAAE,EACX,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,CAAC;IA6B3C,mBAAmB,CACvB,GAAG,EAAE,cAAc,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IASvB,YAAY,CAChB,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAMvB,UAAU,CACd,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC;IAUhB,aAAa,CACjB,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,UAAU,CAAC;IAOhB,gBAAgB,CACpB,GAAG,EAAE,cAAc,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAM/B,gBAAgB,CACpB,GAAG,EAAE,cAAc,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC;IAQ9B,YAAY,CAAC,MAAM,EAAE,MAAM;IAI3B,eAAe,IAAI,MAAM;IAInB,iBAAiB,CACrB,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,EAAE,CAAC;IAOlB,YAAY,CAChB,GAAG,EAAE,cAAc,EACnB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7D,OAAO,CAAC;QAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CAkBxD"}
|
|
@@ -49,6 +49,7 @@ const clink_sdk_1 = require("@shocknet/clink-sdk");
|
|
|
49
49
|
const nostr_tools_1 = require("nostr-tools");
|
|
50
50
|
const clink_offer_entity_1 = require("../entities/clink-offer.entity");
|
|
51
51
|
const clink_channel_config_entity_1 = require("../entities/clink-channel-config.entity");
|
|
52
|
+
const crypto_1 = require("../utils/crypto");
|
|
52
53
|
/**
|
|
53
54
|
* Core service for CLINK SDK integration and offer management.
|
|
54
55
|
*
|
|
@@ -78,9 +79,13 @@ let ClinkService = class ClinkService {
|
|
|
78
79
|
const secretKey = config.nostrSecretKey
|
|
79
80
|
? new Uint8Array(Buffer.from(config.nostrSecretKey, 'hex'))
|
|
80
81
|
: (0, nostr_tools_1.generateSecretKey)();
|
|
82
|
+
const relays = (0, crypto_1.filterAllowedRelayUrls)(config.relayUrls);
|
|
83
|
+
if (relays.length === 0) {
|
|
84
|
+
throw new Error('No allowed relay URLs configured for CLINK SDK');
|
|
85
|
+
}
|
|
81
86
|
const sdk = new clink_sdk_1.ClinkSDK({
|
|
82
87
|
privateKey: secretKey,
|
|
83
|
-
relays
|
|
88
|
+
relays,
|
|
84
89
|
toPubKey: config.nostrPubkey,
|
|
85
90
|
});
|
|
86
91
|
this.sdkInstances.set(key, sdk);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clink.service.js","sourceRoot":"","sources":["../../src/services/clink.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA4E;AAC5E,wCAAqG;AACrG,mDAA2F;AAC3F,6CAAgD;AAChD,uEAA4D;AAC5D,yFAA6E;
|
|
1
|
+
{"version":3,"file":"clink.service.js","sourceRoot":"","sources":["../../src/services/clink.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nostr-key.service.d.ts","sourceRoot":"","sources":["../../src/services/nostr-key.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAW,MAAM,eAAe,CAAC;AAEjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"nostr-key.service.d.ts","sourceRoot":"","sources":["../../src/services/nostr-key.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAW,MAAM,eAAe,CAAC;AAEjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAG7E;;;;;;;;GAQG;AACH,qBACa,eAAe;IAGd,OAAO,CAAC,UAAU;IAF9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;gBAEpC,UAAU,EAAE,uBAAuB;IAEvD,eAAe,IAAI;QAAE,SAAS,EAAE,UAAU,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAM5D,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAK9C,sBAAsB,CAC1B,GAAG,EAAE,cAAc,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC;IA2BxB,YAAY,CAChB,GAAG,EAAE,cAAc,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,WAAW,GAAG,YAAY,GAAG,oBAAoB,GAAG,cAAc,CAAC,CAAC,GAC7G,OAAO,CAAC,kBAAkB,CAAC;IAuB9B,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;CAGhD"}
|
|
@@ -14,6 +14,7 @@ const common_1 = require("@nestjs/common");
|
|
|
14
14
|
const core_1 = require("@vendure/core");
|
|
15
15
|
const nostr_tools_1 = require("nostr-tools");
|
|
16
16
|
const clink_channel_config_entity_1 = require("../entities/clink-channel-config.entity");
|
|
17
|
+
const crypto_1 = require("../utils/crypto");
|
|
17
18
|
/**
|
|
18
19
|
* Manages Nostr keypair generation and per-channel configuration.
|
|
19
20
|
*
|
|
@@ -59,9 +60,20 @@ let NostrKeyService = class NostrKeyService {
|
|
|
59
60
|
}
|
|
60
61
|
async updateConfig(ctx, channelId, updates) {
|
|
61
62
|
const config = await this.getOrCreateChannelKeys(ctx, channelId);
|
|
63
|
+
const safeUpdates = { ...updates };
|
|
64
|
+
if (updates.relayUrls) {
|
|
65
|
+
const filtered = (0, crypto_1.filterAllowedRelayUrls)(updates.relayUrls);
|
|
66
|
+
if (filtered.length !== updates.relayUrls.length) {
|
|
67
|
+
this.logger.warn(`Filtered ${updates.relayUrls.length - filtered.length} disallowed relay URL(s) for channel ${channelId}`);
|
|
68
|
+
}
|
|
69
|
+
if (filtered.length === 0) {
|
|
70
|
+
throw new Error('All provided relay URLs are disallowed (blocked localhost/private networks)');
|
|
71
|
+
}
|
|
72
|
+
safeUpdates.relayUrls = filtered;
|
|
73
|
+
}
|
|
62
74
|
return this.connection.getRepository(ctx, clink_channel_config_entity_1.ClinkChannelConfig).save({
|
|
63
75
|
...config,
|
|
64
|
-
...
|
|
76
|
+
...safeUpdates,
|
|
65
77
|
});
|
|
66
78
|
}
|
|
67
79
|
secretKeyToPubkey(secretKeyHex) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nostr-key.service.js","sourceRoot":"","sources":["../../src/services/nostr-key.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAoD;AACpD,wCAAiF;AACjF,6CAA8D;AAC9D,yFAA6E;
|
|
1
|
+
{"version":3,"file":"nostr-key.service.js","sourceRoot":"","sources":["../../src/services/nostr-key.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment-monitor.service.d.ts","sourceRoot":"","sources":["../../src/services/payment-monitor.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,sBAAsB,EAAE,qBAAqB,EAAU,MAAM,gBAAgB,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,cAAc,EAAE,QAAQ,EAAW,MAAM,eAAe,CAAC;AAI3G,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"payment-monitor.service.d.ts","sourceRoot":"","sources":["../../src/services/payment-monitor.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,sBAAsB,EAAE,qBAAqB,EAAU,MAAM,gBAAgB,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,cAAc,EAAE,QAAQ,EAAW,MAAM,eAAe,CAAC;AAI3G,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAe7E,qBACa,qBAAsB,YAAW,sBAAsB,EAAE,qBAAqB;IAOvF,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,QAAQ;IARlB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,kBAAkB,CAA+C;gBAG/D,UAAU,EAAE,uBAAuB,EACnC,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ;IAGtB,sBAAsB;IAQ5B,qBAAqB;YAKP,cAAc;IAe5B,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,oBAAoB;IAyBtB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB;YA2BpC,gBAAgB;YAmDhB,mBAAmB;YAiBnB,6BAA6B;YA+F7B,kBAAkB;IA4ChC,OAAO,CAAC,uBAAuB;IAUzB,oBAAoB,CACxB,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;IAoCV,kBAAkB,CACtB,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;YAcF,mBAAmB;CAiBlC"}
|
|
@@ -15,6 +15,8 @@ const core_1 = require("@vendure/core");
|
|
|
15
15
|
const nostr_tools_1 = require("nostr-tools");
|
|
16
16
|
const nip44_1 = require("./nip44");
|
|
17
17
|
const clink_offer_entity_1 = require("../entities/clink-offer.entity");
|
|
18
|
+
const clink_plugin_1 = require("../clink.plugin");
|
|
19
|
+
const crypto_1 = require("../utils/crypto");
|
|
18
20
|
const SERVICE_NAME = 'PaymentMonitorService';
|
|
19
21
|
let PaymentMonitorService = class PaymentMonitorService {
|
|
20
22
|
constructor(connection, processContext, eventBus) {
|
|
@@ -87,7 +89,7 @@ let PaymentMonitorService = class PaymentMonitorService {
|
|
|
87
89
|
async subscribeToRelays(config) {
|
|
88
90
|
if (!this.pool || !this.subscriptionActive)
|
|
89
91
|
return;
|
|
90
|
-
const relays = config.relayUrls;
|
|
92
|
+
const relays = (0, crypto_1.filterAllowedRelayUrls)(config.relayUrls);
|
|
91
93
|
if (!relays.length)
|
|
92
94
|
return;
|
|
93
95
|
try {
|
|
@@ -113,6 +115,14 @@ let PaymentMonitorService = class PaymentMonitorService {
|
|
|
113
115
|
if (!event || !event.content)
|
|
114
116
|
return;
|
|
115
117
|
try {
|
|
118
|
+
if (!(0, nostr_tools_1.verifyEvent)(event)) {
|
|
119
|
+
this.logger.warn(`Invalid Nostr event signature: ${event.id?.substring(0, 8)}...`);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (event.kind !== 21001) {
|
|
123
|
+
this.logger.warn(`Ignoring event with non-CLINK kind: ${event.kind}`);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
116
126
|
const secretKey = config.nostrSecretKey
|
|
117
127
|
? new Uint8Array(Buffer.from(config.nostrSecretKey, 'hex'))
|
|
118
128
|
: null;
|
|
@@ -120,6 +130,14 @@ let PaymentMonitorService = class PaymentMonitorService {
|
|
|
120
130
|
this.logger.warn('No secret key available for decryption');
|
|
121
131
|
return;
|
|
122
132
|
}
|
|
133
|
+
const ownPubkey = (0, nostr_tools_1.getPublicKey)(secretKey);
|
|
134
|
+
const tags = event.tags || [];
|
|
135
|
+
const pTag = tags.find((t) => t[0] === 'p');
|
|
136
|
+
const targetPubkey = pTag ? pTag[1] : null;
|
|
137
|
+
if (targetPubkey && targetPubkey !== ownPubkey) {
|
|
138
|
+
this.logger.warn(`Event ${event.id?.substring(0, 8)} is not addressed to our pubkey, ignoring`);
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
123
141
|
const ctx = await this.createSystemContext();
|
|
124
142
|
if (!ctx)
|
|
125
143
|
return;
|
|
@@ -167,14 +185,52 @@ let PaymentMonitorService = class PaymentMonitorService {
|
|
|
167
185
|
this.logger.log(`Offer ${offerId} already settled, ignoring receipt`);
|
|
168
186
|
return;
|
|
169
187
|
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
188
|
+
if (!payload.preimage || !payload.bolt11) {
|
|
189
|
+
this.logger.warn(`Payment receipt for offer ${offerId} missing preimage or bolt11 — refusing to settle`);
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
const paymentHash = (0, crypto_1.extractPaymentHashFromBolt11)(payload.bolt11);
|
|
193
|
+
if (!paymentHash || !(0, crypto_1.verifyPreimage)(payload.preimage, paymentHash)) {
|
|
194
|
+
this.logger.warn(`Preimage verification failed for offer ${offerId} — sha256(preimage) !== payment_hash`);
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
const network = clink_plugin_1.ClinkPlugin.getInitOptions().network;
|
|
198
|
+
const invoiceNetwork = (0, crypto_1.extractNetworkFromBolt11)(payload.bolt11);
|
|
199
|
+
if (network && invoiceNetwork && invoiceNetwork !== network) {
|
|
200
|
+
this.logger.warn(`Network mismatch for offer ${offerId}: expected ${network}, got ${invoiceNetwork}`);
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
const claimedMsat = (0, crypto_1.extractAmountMsatFromBolt11)(payload.bolt11);
|
|
204
|
+
if (claimedMsat !== null && offer.amountSats > 0) {
|
|
205
|
+
const expectedMsat = offer.amountSats * 1000;
|
|
206
|
+
if (claimedMsat !== expectedMsat) {
|
|
207
|
+
this.logger.warn(`Amount mismatch for offer ${offerId}: expected ${expectedMsat} msat, got ${claimedMsat} msat`);
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
const timestamp = (0, crypto_1.extractTimestampFromBolt11)(payload.bolt11);
|
|
212
|
+
const expiry = (0, crypto_1.extractExpiryFromBolt11)(payload.bolt11);
|
|
213
|
+
if (timestamp !== null && expiry !== null) {
|
|
214
|
+
const expiryTime = timestamp + expiry;
|
|
215
|
+
if (Date.now() / 1000 > expiryTime) {
|
|
216
|
+
this.logger.warn(`BOLT11 invoice for offer ${offerId} has expired`);
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
const now = new Date();
|
|
221
|
+
const result = await offerRepo.update({ offerId, status: 'pending' }, {
|
|
222
|
+
status: 'paid',
|
|
223
|
+
preimage: payload.preimage,
|
|
224
|
+
bolt11Invoice: payload.bolt11,
|
|
225
|
+
paidAt: now,
|
|
226
|
+
nostrEventId: event.id,
|
|
227
|
+
});
|
|
228
|
+
if (result.affected === 0) {
|
|
229
|
+
this.logger.log(`Offer ${offerId} was already settled or is no longer pending`);
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
176
232
|
this.logger.log(`Payment received for offer ${offerId}, ` +
|
|
177
|
-
`preimage: ${payload.preimage
|
|
233
|
+
`preimage: ${payload.preimage.substring(0, 16)}...`);
|
|
178
234
|
await this.sendPaymentReceipt(ctx, config, event.pubkey, event.id);
|
|
179
235
|
}
|
|
180
236
|
async sendPaymentReceipt(ctx, config, payerPubkey, requestId) {
|
|
@@ -197,7 +253,9 @@ let PaymentMonitorService = class PaymentMonitorService {
|
|
|
197
253
|
],
|
|
198
254
|
created_at: Math.floor(Date.now() / 1000),
|
|
199
255
|
}, secretKey);
|
|
200
|
-
const relays = config.relayUrls;
|
|
256
|
+
const relays = (0, crypto_1.filterAllowedRelayUrls)(config.relayUrls);
|
|
257
|
+
if (!relays.length)
|
|
258
|
+
return;
|
|
201
259
|
await this.pool.publish(relays, receiptEvent);
|
|
202
260
|
this.logger.log(`Sent payment receipt for request ${requestId}`);
|
|
203
261
|
}
|
|
@@ -226,22 +284,26 @@ let PaymentMonitorService = class PaymentMonitorService {
|
|
|
226
284
|
this.logger.log(`Offer ${offerId} already settled, ignoring receipt`);
|
|
227
285
|
return;
|
|
228
286
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
287
|
+
const now = new Date();
|
|
288
|
+
const result = await offerRepo.update({ offerId, status: 'pending' }, {
|
|
289
|
+
status: 'paid',
|
|
290
|
+
preimage,
|
|
291
|
+
bolt11Invoice: bolt11,
|
|
292
|
+
paidAt: now,
|
|
293
|
+
});
|
|
294
|
+
if (result.affected === 0) {
|
|
295
|
+
this.logger.log(`Offer ${offerId} was already settled or is no longer pending`);
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
234
298
|
this.logger.log(`Payment received for offer ${offerId}, ` +
|
|
235
299
|
`preimage: ${preimage.substring(0, 16)}...`);
|
|
236
300
|
}
|
|
237
301
|
async handleOfferExpired(ctx, offerId) {
|
|
238
302
|
const offerRepo = this.connection.getRepository(ctx, clink_offer_entity_1.ClinkOffer);
|
|
239
|
-
const
|
|
240
|
-
if (
|
|
303
|
+
const result = await offerRepo.update({ offerId, status: 'pending' }, { status: 'expired' });
|
|
304
|
+
if (result.affected === 0) {
|
|
241
305
|
return;
|
|
242
306
|
}
|
|
243
|
-
offer.status = 'expired';
|
|
244
|
-
await offerRepo.save(offer);
|
|
245
307
|
this.logger.log(`Offer ${offerId} expired`);
|
|
246
308
|
}
|
|
247
309
|
async createSystemContext() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment-monitor.service.js","sourceRoot":"","sources":["../../src/services/payment-monitor.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"payment-monitor.service.js","sourceRoot":"","sources":["../../src/services/payment-monitor.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verifies that sha256(preimage) === paymentHash.
|
|
3
|
+
* Uses constant-time comparison to prevent timing attacks.
|
|
4
|
+
*
|
|
5
|
+
* @category Utilities
|
|
6
|
+
*/
|
|
7
|
+
export declare function verifyPreimage(preimage: string, paymentHash: string): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Computes HMAC-SHA256 signature of a payload using a shared secret.
|
|
10
|
+
*
|
|
11
|
+
* @category Utilities
|
|
12
|
+
*/
|
|
13
|
+
export declare function computeHmac(secret: string, payload: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Verifies that an HMAC-SHA256 signature matches the expected value.
|
|
16
|
+
* Uses constant-time comparison to prevent timing attacks.
|
|
17
|
+
*
|
|
18
|
+
* @category Utilities
|
|
19
|
+
*/
|
|
20
|
+
export declare function verifyHmac(secret: string, payload: string, signature: string): boolean;
|
|
21
|
+
export interface Bolt11Decoded {
|
|
22
|
+
network: 'mainnet' | 'testnet' | 'regtest' | null;
|
|
23
|
+
amountMsat: number | null;
|
|
24
|
+
timestamp: number | null;
|
|
25
|
+
expirySeconds: number | null;
|
|
26
|
+
paymentHash: string | null;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Decodes a BOLT11 invoice into its core fields.
|
|
30
|
+
* Only extracts data needed for verification — does not validate the signature.
|
|
31
|
+
*
|
|
32
|
+
* @category Utilities
|
|
33
|
+
*/
|
|
34
|
+
export declare function decodeBolt11(bolt11: string): Bolt11Decoded;
|
|
35
|
+
/**
|
|
36
|
+
* Extracts the payment hash (tag `p`) from a BOLT11 invoice.
|
|
37
|
+
*
|
|
38
|
+
* @category Utilities
|
|
39
|
+
*/
|
|
40
|
+
export declare function extractPaymentHashFromBolt11(bolt11: string): string | null;
|
|
41
|
+
/**
|
|
42
|
+
* Extracts the payment amount in millisatoshis from a BOLT11 invoice.
|
|
43
|
+
*
|
|
44
|
+
* @category Utilities
|
|
45
|
+
*/
|
|
46
|
+
export declare function extractAmountMsatFromBolt11(bolt11: string): number | null;
|
|
47
|
+
/**
|
|
48
|
+
* Returns the Bitcoin network a BOLT11 invoice was created for.
|
|
49
|
+
* `lnbc` = mainnet, `lntb` = testnet, `lnbcrt` = regtest.
|
|
50
|
+
*
|
|
51
|
+
* @category Utilities
|
|
52
|
+
*/
|
|
53
|
+
export declare function extractNetworkFromBolt11(bolt11: string): 'mainnet' | 'testnet' | 'regtest' | null;
|
|
54
|
+
/**
|
|
55
|
+
* Extracts the creation timestamp from a BOLT11 invoice.
|
|
56
|
+
*
|
|
57
|
+
* @category Utilities
|
|
58
|
+
*/
|
|
59
|
+
export declare function extractTimestampFromBolt11(bolt11: string): number | null;
|
|
60
|
+
/**
|
|
61
|
+
* Extracts the expiry tag (`x`) in seconds from a BOLT11 invoice.
|
|
62
|
+
* Returns 3600 (BOLT11 default) if no expiry tag is present.
|
|
63
|
+
*
|
|
64
|
+
* @category Utilities
|
|
65
|
+
*/
|
|
66
|
+
export declare function extractExpiryFromBolt11(bolt11: string): number | null;
|
|
67
|
+
/**
|
|
68
|
+
* Validates a Nostr relay URL against SSRF vectors.
|
|
69
|
+
* Rejects non-wss/ws schemes and hostnames resolving to
|
|
70
|
+
* localhost, private, loopback, or link-local addresses.
|
|
71
|
+
*
|
|
72
|
+
* @category Utilities
|
|
73
|
+
*/
|
|
74
|
+
export declare function isAllowedRelayUrl(url: string): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Filters a list of relay URLs, keeping only those passing SSRF validation.
|
|
77
|
+
*
|
|
78
|
+
* @category Utilities
|
|
79
|
+
*/
|
|
80
|
+
export declare function filterAllowedRelayUrls(urls: string[]): string[];
|
|
81
|
+
//# sourceMappingURL=crypto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/utils/crypto.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAc7E;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAUtF;AAID,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;IAClD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CA6F1D;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE1E;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEzE;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,CAEjG;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAExE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAErE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CA2BtD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE/D"}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.verifyPreimage = verifyPreimage;
|
|
4
|
+
exports.computeHmac = computeHmac;
|
|
5
|
+
exports.verifyHmac = verifyHmac;
|
|
6
|
+
exports.decodeBolt11 = decodeBolt11;
|
|
7
|
+
exports.extractPaymentHashFromBolt11 = extractPaymentHashFromBolt11;
|
|
8
|
+
exports.extractAmountMsatFromBolt11 = extractAmountMsatFromBolt11;
|
|
9
|
+
exports.extractNetworkFromBolt11 = extractNetworkFromBolt11;
|
|
10
|
+
exports.extractTimestampFromBolt11 = extractTimestampFromBolt11;
|
|
11
|
+
exports.extractExpiryFromBolt11 = extractExpiryFromBolt11;
|
|
12
|
+
exports.isAllowedRelayUrl = isAllowedRelayUrl;
|
|
13
|
+
exports.filterAllowedRelayUrls = filterAllowedRelayUrls;
|
|
14
|
+
const crypto_1 = require("crypto");
|
|
15
|
+
/**
|
|
16
|
+
* Verifies that sha256(preimage) === paymentHash.
|
|
17
|
+
* Uses constant-time comparison to prevent timing attacks.
|
|
18
|
+
*
|
|
19
|
+
* @category Utilities
|
|
20
|
+
*/
|
|
21
|
+
function verifyPreimage(preimage, paymentHash) {
|
|
22
|
+
try {
|
|
23
|
+
const preimageBuf = Buffer.from(preimage, 'hex');
|
|
24
|
+
if (preimageBuf.length !== 32)
|
|
25
|
+
return false;
|
|
26
|
+
const computedHash = (0, crypto_1.createHash)('sha256').update(preimageBuf).digest('hex');
|
|
27
|
+
const expectedBuf = Buffer.from(paymentHash, 'hex');
|
|
28
|
+
const computedBuf = Buffer.from(computedHash, 'hex');
|
|
29
|
+
if (expectedBuf.length !== computedBuf.length)
|
|
30
|
+
return false;
|
|
31
|
+
return (0, crypto_1.timingSafeEqual)(expectedBuf, computedBuf);
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Computes HMAC-SHA256 signature of a payload using a shared secret.
|
|
39
|
+
*
|
|
40
|
+
* @category Utilities
|
|
41
|
+
*/
|
|
42
|
+
function computeHmac(secret, payload) {
|
|
43
|
+
return (0, crypto_1.createHmac)('sha256', secret).update(payload, 'utf8').digest('hex');
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Verifies that an HMAC-SHA256 signature matches the expected value.
|
|
47
|
+
* Uses constant-time comparison to prevent timing attacks.
|
|
48
|
+
*
|
|
49
|
+
* @category Utilities
|
|
50
|
+
*/
|
|
51
|
+
function verifyHmac(secret, payload, signature) {
|
|
52
|
+
const expected = computeHmac(secret, payload);
|
|
53
|
+
try {
|
|
54
|
+
const expectedBuf = Buffer.from(expected, 'hex');
|
|
55
|
+
const sigBuf = Buffer.from(signature, 'hex');
|
|
56
|
+
if (expectedBuf.length !== sigBuf.length)
|
|
57
|
+
return false;
|
|
58
|
+
return (0, crypto_1.timingSafeEqual)(expectedBuf, sigBuf);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const BOLT11_CHARSET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l';
|
|
65
|
+
/**
|
|
66
|
+
* Decodes a BOLT11 invoice into its core fields.
|
|
67
|
+
* Only extracts data needed for verification — does not validate the signature.
|
|
68
|
+
*
|
|
69
|
+
* @category Utilities
|
|
70
|
+
*/
|
|
71
|
+
function decodeBolt11(bolt11) {
|
|
72
|
+
const result = {
|
|
73
|
+
network: null,
|
|
74
|
+
amountMsat: null,
|
|
75
|
+
timestamp: null,
|
|
76
|
+
expirySeconds: null,
|
|
77
|
+
paymentHash: null,
|
|
78
|
+
};
|
|
79
|
+
try {
|
|
80
|
+
const lower = bolt11.toLowerCase();
|
|
81
|
+
if (lower.startsWith('lnbcrt'))
|
|
82
|
+
result.network = 'regtest';
|
|
83
|
+
else if (lower.startsWith('lnbc'))
|
|
84
|
+
result.network = 'mainnet';
|
|
85
|
+
else if (lower.startsWith('lntb'))
|
|
86
|
+
result.network = 'testnet';
|
|
87
|
+
else
|
|
88
|
+
return result;
|
|
89
|
+
const separatorIdx = lower.indexOf('1');
|
|
90
|
+
if (separatorIdx === -1)
|
|
91
|
+
return result;
|
|
92
|
+
const hrp = lower.slice(0, separatorIdx);
|
|
93
|
+
const dataPart = lower.slice(separatorIdx + 1);
|
|
94
|
+
const amountStr = hrp.slice(4).replace(/[^0-9a-z]/g, '');
|
|
95
|
+
const amountMatch = amountStr.match(/^(\d+)([munp]?)$/);
|
|
96
|
+
if (amountMatch) {
|
|
97
|
+
const multipliers = { p: 1e-12, n: 1e-9, u: 1e-6, m: 1e-3, '': 1 };
|
|
98
|
+
const multiplier = multipliers[amountMatch[2]] ?? 1;
|
|
99
|
+
const amountBtc = parseFloat(amountMatch[1]) * multiplier;
|
|
100
|
+
result.amountMsat = Math.round(amountBtc * 1e11);
|
|
101
|
+
}
|
|
102
|
+
const data = [];
|
|
103
|
+
for (const ch of dataPart) {
|
|
104
|
+
const idx = BOLT11_CHARSET.indexOf(ch);
|
|
105
|
+
if (idx === -1)
|
|
106
|
+
break;
|
|
107
|
+
data.push(idx);
|
|
108
|
+
}
|
|
109
|
+
if (data.length < 7)
|
|
110
|
+
return result;
|
|
111
|
+
let timestamp = 0;
|
|
112
|
+
for (let i = 0; i < 7; i++) {
|
|
113
|
+
timestamp = (timestamp << 5) | data[i];
|
|
114
|
+
}
|
|
115
|
+
result.timestamp = timestamp;
|
|
116
|
+
const from5bits = (bits) => {
|
|
117
|
+
let value = 0;
|
|
118
|
+
for (const b of bits) {
|
|
119
|
+
value = (value << 5) | b;
|
|
120
|
+
}
|
|
121
|
+
return value;
|
|
122
|
+
};
|
|
123
|
+
const toBytes = (bits) => {
|
|
124
|
+
let value = 0;
|
|
125
|
+
let valueBits = 0;
|
|
126
|
+
const bytes = [];
|
|
127
|
+
for (const b of bits) {
|
|
128
|
+
value = (value << 5) | b;
|
|
129
|
+
valueBits += 5;
|
|
130
|
+
while (valueBits >= 8) {
|
|
131
|
+
valueBits -= 8;
|
|
132
|
+
bytes.push((value >> valueBits) & 0xff);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return bytes;
|
|
136
|
+
};
|
|
137
|
+
let cursor = 7;
|
|
138
|
+
while (cursor + 3 <= data.length) {
|
|
139
|
+
const type = data[cursor];
|
|
140
|
+
const len = from5bits([data[cursor + 1], data[cursor + 2]]);
|
|
141
|
+
cursor += 3;
|
|
142
|
+
if (cursor + len > data.length)
|
|
143
|
+
break;
|
|
144
|
+
const fieldBits = data.slice(cursor, cursor + len);
|
|
145
|
+
if (type === 1) {
|
|
146
|
+
const bytes = toBytes(fieldBits);
|
|
147
|
+
result.paymentHash = Buffer.from(bytes.slice(0, 32)).toString('hex');
|
|
148
|
+
}
|
|
149
|
+
else if (type === 24) {
|
|
150
|
+
result.expirySeconds = from5bits(fieldBits);
|
|
151
|
+
}
|
|
152
|
+
cursor += len;
|
|
153
|
+
}
|
|
154
|
+
if (result.expirySeconds === null) {
|
|
155
|
+
result.expirySeconds = 3600;
|
|
156
|
+
}
|
|
157
|
+
return result;
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
return result;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Extracts the payment hash (tag `p`) from a BOLT11 invoice.
|
|
165
|
+
*
|
|
166
|
+
* @category Utilities
|
|
167
|
+
*/
|
|
168
|
+
function extractPaymentHashFromBolt11(bolt11) {
|
|
169
|
+
return decodeBolt11(bolt11).paymentHash;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Extracts the payment amount in millisatoshis from a BOLT11 invoice.
|
|
173
|
+
*
|
|
174
|
+
* @category Utilities
|
|
175
|
+
*/
|
|
176
|
+
function extractAmountMsatFromBolt11(bolt11) {
|
|
177
|
+
return decodeBolt11(bolt11).amountMsat;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Returns the Bitcoin network a BOLT11 invoice was created for.
|
|
181
|
+
* `lnbc` = mainnet, `lntb` = testnet, `lnbcrt` = regtest.
|
|
182
|
+
*
|
|
183
|
+
* @category Utilities
|
|
184
|
+
*/
|
|
185
|
+
function extractNetworkFromBolt11(bolt11) {
|
|
186
|
+
return decodeBolt11(bolt11).network;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Extracts the creation timestamp from a BOLT11 invoice.
|
|
190
|
+
*
|
|
191
|
+
* @category Utilities
|
|
192
|
+
*/
|
|
193
|
+
function extractTimestampFromBolt11(bolt11) {
|
|
194
|
+
return decodeBolt11(bolt11).timestamp;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Extracts the expiry tag (`x`) in seconds from a BOLT11 invoice.
|
|
198
|
+
* Returns 3600 (BOLT11 default) if no expiry tag is present.
|
|
199
|
+
*
|
|
200
|
+
* @category Utilities
|
|
201
|
+
*/
|
|
202
|
+
function extractExpiryFromBolt11(bolt11) {
|
|
203
|
+
return decodeBolt11(bolt11).expirySeconds;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Validates a Nostr relay URL against SSRF vectors.
|
|
207
|
+
* Rejects non-wss/ws schemes and hostnames resolving to
|
|
208
|
+
* localhost, private, loopback, or link-local addresses.
|
|
209
|
+
*
|
|
210
|
+
* @category Utilities
|
|
211
|
+
*/
|
|
212
|
+
function isAllowedRelayUrl(url) {
|
|
213
|
+
try {
|
|
214
|
+
const parsed = new URL(url);
|
|
215
|
+
if (parsed.protocol !== 'wss:' && parsed.protocol !== 'ws:')
|
|
216
|
+
return false;
|
|
217
|
+
const hostname = parsed.hostname.toLowerCase().replace(/^\[|\]$/g, '');
|
|
218
|
+
if (hostname === 'localhost')
|
|
219
|
+
return false;
|
|
220
|
+
const isPrivateIp = (ip) => {
|
|
221
|
+
const parts = ip.split('.').map(n => parseInt(n, 10));
|
|
222
|
+
if (parts.length !== 4 || parts.some(n => isNaN(n)))
|
|
223
|
+
return false;
|
|
224
|
+
if (parts[0] === 10)
|
|
225
|
+
return true;
|
|
226
|
+
if (parts[0] === 172 && parts[1] >= 16 && parts[1] <= 31)
|
|
227
|
+
return true;
|
|
228
|
+
if (parts[0] === 192 && parts[1] === 168)
|
|
229
|
+
return true;
|
|
230
|
+
if (parts[0] === 169 && parts[1] === 254)
|
|
231
|
+
return true;
|
|
232
|
+
if (parts[0] === 127)
|
|
233
|
+
return true;
|
|
234
|
+
return false;
|
|
235
|
+
};
|
|
236
|
+
if (isPrivateIp(hostname))
|
|
237
|
+
return false;
|
|
238
|
+
if (hostname === '::1' || hostname === '::' || hostname.startsWith('fc') || hostname.startsWith('fd'))
|
|
239
|
+
return false;
|
|
240
|
+
if (hostname.includes('127.') || hostname.includes('0.0.0.0'))
|
|
241
|
+
return false;
|
|
242
|
+
return true;
|
|
243
|
+
}
|
|
244
|
+
catch {
|
|
245
|
+
return false;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Filters a list of relay URLs, keeping only those passing SSRF validation.
|
|
250
|
+
*
|
|
251
|
+
* @category Utilities
|
|
252
|
+
*/
|
|
253
|
+
function filterAllowedRelayUrls(urls) {
|
|
254
|
+
return urls.filter(isAllowedRelayUrl);
|
|
255
|
+
}
|
|
256
|
+
//# sourceMappingURL=crypto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/utils/crypto.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vendure-plugin-bitcoin-lightning-via-clink",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Bitcoin Lightning payments for Vendure via the CLINK protocol (Nostr-native static payment codes)",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|