@unicitylabs/nostr-js-sdk 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/README.md +86 -5
  2. package/dist/browser/index.js +1650 -75
  3. package/dist/browser/index.js.map +1 -1
  4. package/dist/browser/index.min.js +7 -6
  5. package/dist/browser/index.min.js.map +1 -1
  6. package/dist/browser/index.umd.js +1659 -80
  7. package/dist/browser/index.umd.js.map +1 -1
  8. package/dist/browser/index.umd.min.js +7 -6
  9. package/dist/browser/index.umd.min.js.map +1 -1
  10. package/dist/cjs/NostrKeyManager.js +57 -0
  11. package/dist/cjs/NostrKeyManager.js.map +1 -1
  12. package/dist/cjs/client/NostrClient.js +46 -0
  13. package/dist/cjs/client/NostrClient.js.map +1 -1
  14. package/dist/cjs/crypto/index.js +4 -2
  15. package/dist/cjs/crypto/index.js.map +1 -1
  16. package/dist/cjs/crypto/nip04.js +14 -3
  17. package/dist/cjs/crypto/nip04.js.map +1 -1
  18. package/dist/cjs/crypto/nip44.js +297 -0
  19. package/dist/cjs/crypto/nip44.js.map +1 -0
  20. package/dist/cjs/index.js +27 -1
  21. package/dist/cjs/index.js.map +1 -1
  22. package/dist/cjs/messaging/index.js +24 -0
  23. package/dist/cjs/messaging/index.js.map +1 -0
  24. package/dist/cjs/messaging/nip17.js +267 -0
  25. package/dist/cjs/messaging/nip17.js.map +1 -0
  26. package/dist/cjs/messaging/types.js +20 -0
  27. package/dist/cjs/messaging/types.js.map +1 -0
  28. package/dist/cjs/nametag/NametagUtils.js +1 -1
  29. package/dist/cjs/nametag/NametagUtils.js.map +1 -1
  30. package/dist/cjs/payment/PaymentRequestProtocol.js +2 -0
  31. package/dist/cjs/payment/PaymentRequestProtocol.js.map +1 -1
  32. package/dist/cjs/protocol/EventKinds.js +13 -1
  33. package/dist/cjs/protocol/EventKinds.js.map +1 -1
  34. package/dist/esm/NostrKeyManager.js +57 -0
  35. package/dist/esm/NostrKeyManager.js.map +1 -1
  36. package/dist/esm/client/NostrClient.js +46 -0
  37. package/dist/esm/client/NostrClient.js.map +1 -1
  38. package/dist/esm/crypto/index.js +3 -1
  39. package/dist/esm/crypto/index.js.map +1 -1
  40. package/dist/esm/crypto/nip04.js +14 -3
  41. package/dist/esm/crypto/nip04.js.map +1 -1
  42. package/dist/esm/crypto/nip44.js +283 -0
  43. package/dist/esm/crypto/nip44.js.map +1 -0
  44. package/dist/esm/index.js +4 -1
  45. package/dist/esm/index.js.map +1 -1
  46. package/dist/esm/messaging/index.js +8 -0
  47. package/dist/esm/messaging/index.js.map +1 -0
  48. package/dist/esm/messaging/nip17.js +229 -0
  49. package/dist/esm/messaging/nip17.js.map +1 -0
  50. package/dist/esm/messaging/types.js +16 -0
  51. package/dist/esm/messaging/types.js.map +1 -0
  52. package/dist/esm/nametag/NametagUtils.js +1 -1
  53. package/dist/esm/nametag/NametagUtils.js.map +1 -1
  54. package/dist/esm/payment/PaymentRequestProtocol.js +2 -0
  55. package/dist/esm/payment/PaymentRequestProtocol.js.map +1 -1
  56. package/dist/esm/protocol/EventKinds.js +12 -0
  57. package/dist/esm/protocol/EventKinds.js.map +1 -1
  58. package/dist/types/NostrKeyManager.d.ts +36 -0
  59. package/dist/types/NostrKeyManager.d.ts.map +1 -1
  60. package/dist/types/client/NostrClient.d.ts +31 -0
  61. package/dist/types/client/NostrClient.d.ts.map +1 -1
  62. package/dist/types/crypto/index.d.ts +1 -1
  63. package/dist/types/crypto/index.d.ts.map +1 -1
  64. package/dist/types/crypto/nip04.d.ts.map +1 -1
  65. package/dist/types/crypto/nip44.d.ts +78 -0
  66. package/dist/types/crypto/nip44.d.ts.map +1 -0
  67. package/dist/types/index.d.ts +4 -1
  68. package/dist/types/index.d.ts.map +1 -1
  69. package/dist/types/messaging/index.d.ts +8 -0
  70. package/dist/types/messaging/index.d.ts.map +1 -0
  71. package/dist/types/messaging/nip17.d.ts +42 -0
  72. package/dist/types/messaging/nip17.d.ts.map +1 -0
  73. package/dist/types/messaging/types.d.ts +59 -0
  74. package/dist/types/messaging/types.d.ts.map +1 -0
  75. package/dist/types/payment/PaymentRequestProtocol.d.ts.map +1 -1
  76. package/dist/types/protocol/EventKinds.d.ts +6 -0
  77. package/dist/types/protocol/EventKinds.d.ts.map +1 -1
  78. package/package.json +2 -1
package/dist/cjs/index.js CHANGED
@@ -25,11 +25,33 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
25
25
  if (k2 === undefined) k2 = k;
26
26
  o[k2] = m[k];
27
27
  }));
28
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
29
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
30
+ }) : function(o, v) {
31
+ o["default"] = v;
32
+ });
28
33
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
29
34
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
30
35
  };
36
+ var __importStar = (this && this.__importStar) || (function () {
37
+ var ownKeys = function(o) {
38
+ ownKeys = Object.getOwnPropertyNames || function (o) {
39
+ var ar = [];
40
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
41
+ return ar;
42
+ };
43
+ return ownKeys(o);
44
+ };
45
+ return function (mod) {
46
+ if (mod && mod.__esModule) return mod;
47
+ var result = {};
48
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
49
+ __setModuleDefault(result, mod);
50
+ return result;
51
+ };
52
+ })();
31
53
  Object.defineProperty(exports, "__esModule", { value: true });
32
- exports.PaymentRequestProtocol = exports.TokenTransferProtocol = exports.NametagBinding = exports.NametagUtils = exports.EventKinds = exports.NIP04 = exports.SchnorrSigner = exports.Bech32 = exports.NostrKeyManager = void 0;
54
+ exports.NIP17 = exports.PaymentRequestProtocol = exports.TokenTransferProtocol = exports.NametagBinding = exports.NametagUtils = exports.EventKinds = exports.NIP44 = exports.NIP04 = exports.SchnorrSigner = exports.Bech32 = exports.NostrKeyManager = void 0;
33
55
  // Core key management
34
56
  var NostrKeyManager_js_1 = require("./NostrKeyManager.js");
35
57
  Object.defineProperty(exports, "NostrKeyManager", { enumerable: true, get: function () { return NostrKeyManager_js_1.NostrKeyManager; } });
@@ -39,6 +61,7 @@ var index_js_1 = require("./crypto/index.js");
39
61
  Object.defineProperty(exports, "Bech32", { enumerable: true, get: function () { return index_js_1.Bech32; } });
40
62
  Object.defineProperty(exports, "SchnorrSigner", { enumerable: true, get: function () { return index_js_1.SchnorrSigner; } });
41
63
  Object.defineProperty(exports, "NIP04", { enumerable: true, get: function () { return index_js_1.NIP04; } });
64
+ Object.defineProperty(exports, "NIP44", { enumerable: true, get: function () { return index_js_1.NIP44; } });
42
65
  // Protocol types and classes
43
66
  __exportStar(require("./protocol/index.js"), exports);
44
67
  var index_js_2 = require("./protocol/index.js");
@@ -56,4 +79,7 @@ Object.defineProperty(exports, "TokenTransferProtocol", { enumerable: true, get:
56
79
  // Payment requests
57
80
  var index_js_5 = require("./payment/index.js");
58
81
  Object.defineProperty(exports, "PaymentRequestProtocol", { enumerable: true, get: function () { return index_js_5.PaymentRequestProtocol; } });
82
+ // NIP-17 Private messaging
83
+ __exportStar(require("./messaging/index.js"), exports);
84
+ exports.NIP17 = __importStar(require("./messaging/nip17.js"));
59
85
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;AAEH,sBAAsB;AACtB,2DAAuD;AAA9C,qHAAA,eAAe,OAAA;AAExB,mBAAmB;AACnB,oDAAkC;AAClC,8CAI2B;AAHzB,kGAAA,MAAM,OAAA;AACN,yGAAA,aAAa,OAAA;AACb,iGAAA,KAAK,OAAA;AAGP,6BAA6B;AAC7B,sDAAoC;AACpC,gDAAiD;AAAxC,sGAAA,UAAU,OAAA;AAEnB,SAAS;AACT,oDAAkC;AAElC,oBAAoB;AACpB,qDAAmC;AACnC,+CAAkE;AAAzD,wGAAA,YAAY,OAAA;AAAE,0GAAA,cAAc,OAAA;AAErC,iBAAiB;AACjB,6CAAyD;AAAhD,iHAAA,qBAAqB,OAAA;AAE9B,mBAAmB;AACnB,+CAA4D;AAAnD,kHAAA,sBAAsB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,sBAAsB;AACtB,2DAAuD;AAA9C,qHAAA,eAAe,OAAA;AAExB,mBAAmB;AACnB,oDAAkC;AAClC,8CAK2B;AAJzB,kGAAA,MAAM,OAAA;AACN,yGAAA,aAAa,OAAA;AACb,iGAAA,KAAK,OAAA;AACL,iGAAA,KAAK,OAAA;AAGP,6BAA6B;AAC7B,sDAAoC;AACpC,gDAAiD;AAAxC,sGAAA,UAAU,OAAA;AAEnB,SAAS;AACT,oDAAkC;AAElC,oBAAoB;AACpB,qDAAmC;AACnC,+CAAkE;AAAzD,wGAAA,YAAY,OAAA;AAAE,0GAAA,cAAc,OAAA;AAErC,iBAAiB;AACjB,6CAAyD;AAAhD,iHAAA,qBAAqB,OAAA;AAE9B,mBAAmB;AACnB,+CAA4D;AAAnD,kHAAA,sBAAsB,OAAA;AAE/B,2BAA2B;AAC3B,uDAAqC;AACrC,8DAA8C"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /**
3
+ * NIP-17 Private Direct Messages Module
4
+ *
5
+ * Provides secure, private messaging over Nostr using gift-wrapping.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ __exportStar(require("./types.js"), exports);
23
+ __exportStar(require("./nip17.js"), exports);
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/messaging/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;AAEH,6CAA2B;AAC3B,6CAA2B"}
@@ -0,0 +1,267 @@
1
+ "use strict";
2
+ /**
3
+ * NIP-17 Private Direct Messages Protocol.
4
+ * Implements gift-wrapping for sender anonymity using NIP-44 encryption.
5
+ *
6
+ * Message flow:
7
+ * 1. Create Rumor (kind 14, unsigned) with actual message content
8
+ * 2. Create Seal (kind 13, signed by sender) encrypting the rumor
9
+ * 3. Create Gift Wrap (kind 1059, signed by random ephemeral key) encrypting the seal
10
+ *
11
+ * Only the recipient can decrypt and verify the true sender.
12
+ */
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || (function () {
30
+ var ownKeys = function(o) {
31
+ ownKeys = Object.getOwnPropertyNames || function (o) {
32
+ var ar = [];
33
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
+ return ar;
35
+ };
36
+ return ownKeys(o);
37
+ };
38
+ return function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ })();
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.createGiftWrap = createGiftWrap;
48
+ exports.createReadReceipt = createReadReceipt;
49
+ exports.unwrap = unwrap;
50
+ const sha256_1 = require("@noble/hashes/sha256");
51
+ const utils_1 = require("@noble/hashes/utils");
52
+ const NostrKeyManager_js_1 = require("../NostrKeyManager.js");
53
+ const Event_js_1 = require("../protocol/Event.js");
54
+ const EventKinds = __importStar(require("../protocol/EventKinds.js"));
55
+ const NIP44 = __importStar(require("../crypto/nip44.js"));
56
+ const Schnorr = __importStar(require("../crypto/schnorr.js"));
57
+ // Randomization window for timestamps (+/- 2 days in seconds)
58
+ const TIMESTAMP_RANDOMIZATION = 2 * 24 * 60 * 60;
59
+ /**
60
+ * Create a gift-wrapped private message.
61
+ *
62
+ * @param senderKeys Sender's key manager
63
+ * @param recipientPubkeyHex Recipient's public key (hex)
64
+ * @param content Message content
65
+ * @param options Optional message options (reply-to, etc.)
66
+ * @returns Gift-wrapped event (kind 1059)
67
+ */
68
+ function createGiftWrap(senderKeys, recipientPubkeyHex, content, options) {
69
+ // 1. Create Rumor (kind 14, unsigned)
70
+ const rumor = createRumor(senderKeys.getPublicKeyHex(), recipientPubkeyHex, content, EventKinds.CHAT_MESSAGE, options?.replyToEventId);
71
+ // 2. Create Seal (kind 13, signed by sender, encrypts rumor)
72
+ const seal = createSeal(senderKeys, recipientPubkeyHex, rumor);
73
+ // 3. Create Gift Wrap (kind 1059, signed by ephemeral key, encrypts seal)
74
+ return wrapSeal(seal, recipientPubkeyHex);
75
+ }
76
+ /**
77
+ * Create a gift-wrapped read receipt.
78
+ *
79
+ * @param senderKeys Sender's key manager
80
+ * @param recipientPubkeyHex Recipient (original sender) public key
81
+ * @param messageEventId Event ID of the message being acknowledged
82
+ * @returns Gift-wrapped read receipt event
83
+ */
84
+ function createReadReceipt(senderKeys, recipientPubkeyHex, messageEventId) {
85
+ // Create rumor with kind 15 (read receipt)
86
+ const tags = [
87
+ ['p', recipientPubkeyHex],
88
+ ['e', messageEventId],
89
+ ];
90
+ // Use actual timestamp for rumor (privacy via outer layers)
91
+ const actualTimestamp = Math.floor(Date.now() / 1000);
92
+ const rumor = {
93
+ id: '', // Will be computed
94
+ pubkey: senderKeys.getPublicKeyHex(),
95
+ created_at: actualTimestamp,
96
+ kind: EventKinds.READ_RECEIPT,
97
+ tags,
98
+ content: '', // Read receipts have empty content
99
+ };
100
+ // Compute the rumor ID
101
+ rumor.id = computeRumorId(rumor);
102
+ const seal = createSeal(senderKeys, recipientPubkeyHex, rumor);
103
+ return wrapSeal(seal, recipientPubkeyHex);
104
+ }
105
+ /**
106
+ * Unwrap a gift-wrapped message.
107
+ *
108
+ * @param giftWrap Gift wrap event (kind 1059)
109
+ * @param recipientKeys Recipient's key manager
110
+ * @returns Parsed private message
111
+ */
112
+ function unwrap(giftWrap, recipientKeys) {
113
+ if (giftWrap.kind !== EventKinds.GIFT_WRAP) {
114
+ throw new Error(`Event is not a gift wrap (kind ${giftWrap.kind})`);
115
+ }
116
+ // Get ephemeral sender's pubkey from gift wrap
117
+ const ephemeralPubkey = giftWrap.pubkey;
118
+ const ephemeralPubkeyBytes = (0, utils_1.hexToBytes)(ephemeralPubkey);
119
+ // Decrypt seal from gift wrap content
120
+ const sealJson = NIP44.decrypt(giftWrap.content, recipientKeys.getPrivateKey(), ephemeralPubkeyBytes);
121
+ const sealData = JSON.parse(sealJson);
122
+ if (sealData.kind !== EventKinds.SEAL) {
123
+ throw new Error(`Inner event is not a seal (kind ${sealData.kind})`);
124
+ }
125
+ // Verify seal signature
126
+ const sealPubkey = sealData.pubkey;
127
+ const sealIdBytes = (0, utils_1.hexToBytes)(sealData.id);
128
+ const sigBytes = (0, utils_1.hexToBytes)(sealData.sig);
129
+ const pubkeyBytes = (0, utils_1.hexToBytes)(sealPubkey);
130
+ if (!Schnorr.verify(sigBytes, sealIdBytes, pubkeyBytes)) {
131
+ throw new Error('Seal signature verification failed');
132
+ }
133
+ // Decrypt rumor from seal content
134
+ const rumorJson = NIP44.decrypt(sealData.content, recipientKeys.getPrivateKey(), pubkeyBytes);
135
+ const rumor = JSON.parse(rumorJson);
136
+ // Extract reply-to event ID if present
137
+ const replyToEventId = getTagValue(rumor.tags, 'e');
138
+ return {
139
+ eventId: giftWrap.id,
140
+ senderPubkey: sealPubkey,
141
+ recipientPubkey: recipientKeys.getPublicKeyHex(),
142
+ content: rumor.content,
143
+ timestamp: rumor.created_at,
144
+ kind: rumor.kind,
145
+ replyToEventId,
146
+ };
147
+ }
148
+ // ========== Helper Functions ==========
149
+ /**
150
+ * Create an unsigned rumor (kind 14 or 15).
151
+ * Note: Rumor uses actual timestamp for correct message ordering.
152
+ * Only seal and gift wrap use randomized timestamps for privacy.
153
+ */
154
+ function createRumor(senderPubkey, recipientPubkey, content, kind, replyToEventId) {
155
+ const tags = [['p', recipientPubkey]];
156
+ if (replyToEventId) {
157
+ tags.push(['e', replyToEventId, '', 'reply']);
158
+ }
159
+ // Use actual timestamp for rumor (inner message) - needed for correct ordering
160
+ // Privacy is provided by randomized timestamps on seal and gift wrap layers
161
+ const actualTimestamp = Math.floor(Date.now() / 1000);
162
+ const rumor = {
163
+ id: '', // Will be computed
164
+ pubkey: senderPubkey,
165
+ created_at: actualTimestamp,
166
+ kind,
167
+ tags,
168
+ content,
169
+ };
170
+ // Compute the rumor ID
171
+ rumor.id = computeRumorId(rumor);
172
+ return rumor;
173
+ }
174
+ /**
175
+ * Compute the rumor ID from serialized data.
176
+ * ID = SHA-256([0, pubkey, created_at, kind, tags, content])
177
+ */
178
+ function computeRumorId(rumor) {
179
+ const serialized = JSON.stringify([
180
+ 0,
181
+ rumor.pubkey,
182
+ rumor.created_at,
183
+ rumor.kind,
184
+ rumor.tags,
185
+ rumor.content,
186
+ ]);
187
+ const hash = (0, sha256_1.sha256)(new TextEncoder().encode(serialized));
188
+ return (0, utils_1.bytesToHex)(hash);
189
+ }
190
+ /**
191
+ * Create a seal (kind 13) that encrypts a rumor.
192
+ */
193
+ function createSeal(senderKeys, recipientPubkeyHex, rumor) {
194
+ const rumorJson = JSON.stringify(rumor);
195
+ // Encrypt rumor with NIP-44
196
+ const recipientPubkey = (0, utils_1.hexToBytes)(recipientPubkeyHex);
197
+ const encryptedRumor = NIP44.encrypt(rumorJson, senderKeys.getPrivateKey(), recipientPubkey);
198
+ // Create seal data
199
+ const pubkey = senderKeys.getPublicKeyHex();
200
+ const created_at = randomizeTimestamp();
201
+ const kind = EventKinds.SEAL;
202
+ const tags = []; // Seals have no tags
203
+ const content = encryptedRumor;
204
+ // Calculate ID
205
+ const sealId = Event_js_1.Event.calculateId(pubkey, created_at, kind, tags, content);
206
+ // Sign
207
+ const sealIdBytes = (0, utils_1.hexToBytes)(sealId);
208
+ const sig = senderKeys.signHex(sealIdBytes);
209
+ return new Event_js_1.Event({
210
+ id: sealId,
211
+ pubkey,
212
+ created_at,
213
+ kind,
214
+ tags,
215
+ content,
216
+ sig,
217
+ });
218
+ }
219
+ /**
220
+ * Wrap a seal in a gift wrap (kind 1059) using an ephemeral key.
221
+ */
222
+ function wrapSeal(seal, recipientPubkeyHex) {
223
+ // Generate ephemeral key for the gift wrap
224
+ const ephemeralKeys = NostrKeyManager_js_1.NostrKeyManager.generate();
225
+ const sealJson = JSON.stringify(seal.toJSON());
226
+ // Encrypt seal with NIP-44 using ephemeral key
227
+ const recipientPubkey = (0, utils_1.hexToBytes)(recipientPubkeyHex);
228
+ const encryptedSeal = NIP44.encrypt(sealJson, ephemeralKeys.getPrivateKey(), recipientPubkey);
229
+ // Create gift wrap data
230
+ const pubkey = ephemeralKeys.getPublicKeyHex();
231
+ const created_at = randomizeTimestamp();
232
+ const kind = EventKinds.GIFT_WRAP;
233
+ const tags = [['p', recipientPubkeyHex]];
234
+ const content = encryptedSeal;
235
+ // Calculate ID
236
+ const giftWrapId = Event_js_1.Event.calculateId(pubkey, created_at, kind, tags, content);
237
+ // Sign with ephemeral key
238
+ const giftWrapIdBytes = (0, utils_1.hexToBytes)(giftWrapId);
239
+ const sig = ephemeralKeys.signHex(giftWrapIdBytes);
240
+ // Clear ephemeral key from memory
241
+ ephemeralKeys.clear();
242
+ return new Event_js_1.Event({
243
+ id: giftWrapId,
244
+ pubkey,
245
+ created_at,
246
+ kind,
247
+ tags,
248
+ content,
249
+ sig,
250
+ });
251
+ }
252
+ /**
253
+ * Generate a randomized timestamp for privacy (+/- 2 days).
254
+ */
255
+ function randomizeTimestamp() {
256
+ const now = Math.floor(Date.now() / 1000);
257
+ const randomOffset = Math.floor(Math.random() * 2 * TIMESTAMP_RANDOMIZATION) - TIMESTAMP_RANDOMIZATION;
258
+ return now + randomOffset;
259
+ }
260
+ /**
261
+ * Get the first value of a tag by name from a tags array.
262
+ */
263
+ function getTagValue(tags, tagName) {
264
+ const tag = tags.find((t) => t[0] === tagName);
265
+ return tag?.[1];
266
+ }
267
+ //# sourceMappingURL=nip17.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip17.js","sourceRoot":"","sources":["../../../src/messaging/nip17.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBH,wCAoBC;AAUD,8CA4BC;AASD,wBAiDC;AAzID,iDAA8C;AAC9C,+CAA6D;AAC7D,8DAAwD;AACxD,mDAAwE;AACxE,sEAAwD;AACxD,0DAA4C;AAC5C,8DAAgD;AAGhD,8DAA8D;AAC9D,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAEjD;;;;;;;;GAQG;AACH,SAAgB,cAAc,CAC5B,UAA2B,EAC3B,kBAA0B,EAC1B,OAAe,EACf,OAA+B;IAE/B,sCAAsC;IACtC,MAAM,KAAK,GAAG,WAAW,CACvB,UAAU,CAAC,eAAe,EAAE,EAC5B,kBAAkB,EAClB,OAAO,EACP,UAAU,CAAC,YAAY,EACvB,OAAO,EAAE,cAAc,CACxB,CAAC;IAEF,6DAA6D;IAC7D,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;IAE/D,0EAA0E;IAC1E,OAAO,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,iBAAiB,CAC/B,UAA2B,EAC3B,kBAA0B,EAC1B,cAAsB;IAEtB,2CAA2C;IAC3C,MAAM,IAAI,GAAe;QACvB,CAAC,GAAG,EAAE,kBAAkB,CAAC;QACzB,CAAC,GAAG,EAAE,cAAc,CAAC;KACtB,CAAC;IAEF,4DAA4D;IAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAEtD,MAAM,KAAK,GAAU;QACnB,EAAE,EAAE,EAAE,EAAE,mBAAmB;QAC3B,MAAM,EAAE,UAAU,CAAC,eAAe,EAAE;QACpC,UAAU,EAAE,eAAe;QAC3B,IAAI,EAAE,UAAU,CAAC,YAAY;QAC7B,IAAI;QACJ,OAAO,EAAE,EAAE,EAAE,mCAAmC;KACjD,CAAC;IAEF,uBAAuB;IACvB,KAAK,CAAC,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAEjC,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;IAC/D,OAAO,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,MAAM,CAAC,QAAe,EAAE,aAA8B;IACpE,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,CAAC,SAAS,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,kCAAkC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;IACtE,CAAC;IAED,+CAA+C;IAC/C,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC;IACxC,MAAM,oBAAoB,GAAG,IAAA,kBAAU,EAAC,eAAe,CAAC,CAAC;IAEzD,sCAAsC;IACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAC5B,QAAQ,CAAC,OAAO,EAChB,aAAa,CAAC,aAAa,EAAE,EAC7B,oBAAoB,CACrB,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAoB,CAAC;IAEzD,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,mCAAmC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;IACvE,CAAC;IAED,wBAAwB;IACxB,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;IACnC,MAAM,WAAW,GAAG,IAAA,kBAAU,EAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAA,kBAAU,EAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,IAAA,kBAAU,EAAC,UAAU,CAAC,CAAC;IAE3C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,kCAAkC;IAClC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,aAAa,EAAE,EAAE,WAAW,CAAC,CAAC;IAE9F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAU,CAAC;IAE7C,uCAAuC;IACvC,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAEpD,OAAO;QACL,OAAO,EAAE,QAAQ,CAAC,EAAE;QACpB,YAAY,EAAE,UAAU;QACxB,eAAe,EAAE,aAAa,CAAC,eAAe,EAAE;QAChD,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,KAAK,CAAC,UAAU;QAC3B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,cAAc;KACf,CAAC;AACJ,CAAC;AAED,yCAAyC;AAEzC;;;;GAIG;AACH,SAAS,WAAW,CAClB,YAAoB,EACpB,eAAuB,EACvB,OAAe,EACf,IAAY,EACZ,cAAuB;IAEvB,MAAM,IAAI,GAAe,CAAC,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;IAElD,IAAI,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,+EAA+E;IAC/E,4EAA4E;IAC5E,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAEtD,MAAM,KAAK,GAAU;QACnB,EAAE,EAAE,EAAE,EAAE,mBAAmB;QAC3B,MAAM,EAAE,YAAY;QACpB,UAAU,EAAE,eAAe;QAC3B,IAAI;QACJ,IAAI;QACJ,OAAO;KACR,CAAC;IAEF,uBAAuB;IACvB,KAAK,CAAC,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAEjC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,KAAY;IAClC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,CAAC;QACD,KAAK,CAAC,MAAM;QACZ,KAAK,CAAC,UAAU;QAChB,KAAK,CAAC,IAAI;QACV,KAAK,CAAC,IAAI;QACV,KAAK,CAAC,OAAO;KACd,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,IAAA,eAAM,EAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1D,OAAO,IAAA,kBAAU,EAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CACjB,UAA2B,EAC3B,kBAA0B,EAC1B,KAAY;IAEZ,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAExC,4BAA4B;IAC5B,MAAM,eAAe,GAAG,IAAA,kBAAU,EAAC,kBAAkB,CAAC,CAAC;IACvD,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,aAAa,EAAE,EAAE,eAAe,CAAC,CAAC;IAE7F,mBAAmB;IACnB,MAAM,MAAM,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;IAC7B,MAAM,IAAI,GAAe,EAAE,CAAC,CAAC,qBAAqB;IAClD,MAAM,OAAO,GAAG,cAAc,CAAC;IAE/B,eAAe;IACf,MAAM,MAAM,GAAG,gBAAK,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAE1E,OAAO;IACP,MAAM,WAAW,GAAG,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAE5C,OAAO,IAAI,gBAAK,CAAC;QACf,EAAE,EAAE,MAAM;QACV,MAAM;QACN,UAAU;QACV,IAAI;QACJ,IAAI;QACJ,OAAO;QACP,GAAG;KACJ,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ,CAAC,IAAW,EAAE,kBAA0B;IACvD,2CAA2C;IAC3C,MAAM,aAAa,GAAG,oCAAe,CAAC,QAAQ,EAAE,CAAC;IAEjD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAE/C,+CAA+C;IAC/C,MAAM,eAAe,GAAG,IAAA,kBAAU,EAAC,kBAAkB,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,EAAE,EAAE,eAAe,CAAC,CAAC;IAE9F,wBAAwB;IACxB,MAAM,MAAM,GAAG,aAAa,CAAC,eAAe,EAAE,CAAC;IAC/C,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC;IAClC,MAAM,IAAI,GAAe,CAAC,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,aAAa,CAAC;IAE9B,eAAe;IACf,MAAM,UAAU,GAAG,gBAAK,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAE9E,0BAA0B;IAC1B,MAAM,eAAe,GAAG,IAAA,kBAAU,EAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAEnD,kCAAkC;IAClC,aAAa,CAAC,KAAK,EAAE,CAAC;IAEtB,OAAO,IAAI,gBAAK,CAAC;QACf,EAAE,EAAE,UAAU;QACd,MAAM;QACN,UAAU;QACV,IAAI;QACJ,IAAI;QACJ,OAAO;QACP,GAAG;KACJ,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB;IACzB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1C,MAAM,YAAY,GAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,uBAAuB,CAAC,GAAG,uBAAuB,CAAC;IACpF,OAAO,GAAG,GAAG,YAAY,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,IAAgB,EAAE,OAAe;IACpD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;IAC/C,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ /**
3
+ * NIP-17 Messaging Types - Private Direct Messages
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.isChatMessage = isChatMessage;
7
+ exports.isReadReceipt = isReadReceipt;
8
+ /**
9
+ * Check if a message is a chat message (kind 14).
10
+ */
11
+ function isChatMessage(message) {
12
+ return message.kind === 14;
13
+ }
14
+ /**
15
+ * Check if a message is a read receipt (kind 15).
16
+ */
17
+ function isReadReceipt(message) {
18
+ return message.kind === 15;
19
+ }
20
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/messaging/types.ts"],"names":[],"mappings":";AAAA;;GAEG;;AA2DH,sCAEC;AAKD,sCAEC;AAZD;;GAEG;AACH,SAAgB,aAAa,CAAC,OAAuB;IACnD,OAAO,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,OAAuB;IACnD,OAAO,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC;AAC7B,CAAC"}
@@ -41,7 +41,7 @@ function isLikelyPhoneNumber(str) {
41
41
  return false;
42
42
  }
43
43
  // Count non-digit characters (excluding common phone number chars)
44
- const cleanedLength = str.replace(/[\s\-\(\)\.]/g, '').length;
44
+ const cleanedLength = str.replace(/[\s\-().]/g, '').length;
45
45
  const digitRatio = digitCount / cleanedLength;
46
46
  return digitRatio > 0.5;
47
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NametagUtils.js","sourceRoot":"","sources":["../../../src/nametag/NametagUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NametagUtils.js","sourceRoot":"","sources":["../../../src/nametag/NametagUtils.ts"],"names":[],"mappings":"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"}
@@ -55,7 +55,9 @@ const MESSAGE_PREFIX = 'payment_request:';
55
55
  */
56
56
  function generateRequestId() {
57
57
  const bytes = new Uint8Array(4);
58
+ // eslint-disable-next-line no-undef
58
59
  if (typeof crypto !== 'undefined' && crypto.getRandomValues) {
60
+ // eslint-disable-next-line no-undef
59
61
  crypto.getRandomValues(bytes);
60
62
  }
61
63
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"PaymentRequestProtocol.js","sourceRoot":"","sources":["../../../src/payment/PaymentRequestProtocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PaymentRequestProtocol.js","sourceRoot":"","sources":["../../../src/payment/PaymentRequestProtocol.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * Includes both standard NIP kinds and Unicity custom kinds.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.PAYMENT_REQUEST = exports.FILE_METADATA = exports.TOKEN_TRANSFER = exports.AGENT_LOCATION = exports.AGENT_PROFILE = exports.APP_DATA = exports.RELAY_LIST = exports.GIFT_WRAP = exports.REACTION = exports.DELETION = exports.ENCRYPTED_DM = exports.CONTACTS = exports.RECOMMEND_RELAY = exports.TEXT_NOTE = exports.PROFILE = void 0;
7
+ exports.PAYMENT_REQUEST = exports.FILE_METADATA = exports.TOKEN_TRANSFER = exports.AGENT_LOCATION = exports.AGENT_PROFILE = exports.APP_DATA = exports.RELAY_LIST = exports.GIFT_WRAP = exports.REACTION = exports.READ_RECEIPT = exports.CHAT_MESSAGE = exports.SEAL = exports.DELETION = exports.ENCRYPTED_DM = exports.CONTACTS = exports.RECOMMEND_RELAY = exports.TEXT_NOTE = exports.PROFILE = void 0;
8
8
  exports.isReplaceable = isReplaceable;
9
9
  exports.isEphemeral = isEphemeral;
10
10
  exports.isParameterizedReplaceable = isParameterizedReplaceable;
@@ -24,6 +24,12 @@ exports.CONTACTS = 3;
24
24
  exports.ENCRYPTED_DM = 4;
25
25
  /** NIP-09: Event deletion */
26
26
  exports.DELETION = 5;
27
+ /** NIP-17: Seal (signed, encrypted rumor) */
28
+ exports.SEAL = 13;
29
+ /** NIP-17: Private chat message (rumor - unsigned inner event) */
30
+ exports.CHAT_MESSAGE = 14;
31
+ /** NIP-17: Read receipt (rumor kind) */
32
+ exports.READ_RECEIPT = 15;
27
33
  /** NIP-25: Reactions (likes, etc.) */
28
34
  exports.REACTION = 7;
29
35
  /** NIP-59: Gift wrap for private events */
@@ -96,6 +102,12 @@ function getName(kind) {
96
102
  return 'Encrypted DM';
97
103
  case exports.DELETION:
98
104
  return 'Deletion';
105
+ case exports.SEAL:
106
+ return 'Seal';
107
+ case exports.CHAT_MESSAGE:
108
+ return 'Chat Message';
109
+ case exports.READ_RECEIPT:
110
+ return 'Read Receipt';
99
111
  case exports.REACTION:
100
112
  return 'Reaction';
101
113
  case exports.GIFT_WRAP:
@@ -1 +1 @@
1
- {"version":3,"file":"EventKinds.js","sourceRoot":"","sources":["../../../src/protocol/EventKinds.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EventKinds.js","sourceRoot":"","sources":["../../../src/protocol/EventKinds.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import { bytesToHex, hexToBytes, randomBytes } from '@noble/hashes/utils';
6
6
  import * as Bech32 from './crypto/bech32.js';
7
7
  import * as Schnorr from './crypto/schnorr.js';
8
8
  import * as NIP04 from './crypto/nip04.js';
9
+ import * as NIP44 from './crypto/nip44.js';
9
10
  /**
10
11
  * NostrKeyManager provides a high-level interface for cryptographic operations.
11
12
  * It manages a Nostr key pair and provides methods for signing, verification,
@@ -206,6 +207,62 @@ export class NostrKeyManager {
206
207
  this.ensureNotCleared();
207
208
  return NIP04.deriveSharedSecret(this.privateKey, theirPublicKey);
208
209
  }
210
+ // ============================================================================
211
+ // NIP-44 Encryption (XChaCha20-Poly1305)
212
+ // ============================================================================
213
+ /**
214
+ * Encrypt a message using NIP-44 encryption.
215
+ * Uses XChaCha20-Poly1305 with HKDF key derivation.
216
+ * @param message Message to encrypt
217
+ * @param recipientPublicKey 32-byte x-only public key of recipient
218
+ * @returns Base64-encoded encrypted content
219
+ */
220
+ encryptNip44(message, recipientPublicKey) {
221
+ this.ensureNotCleared();
222
+ return NIP44.encrypt(message, this.privateKey, recipientPublicKey);
223
+ }
224
+ /**
225
+ * Encrypt a message using NIP-44 with hex-encoded recipient public key.
226
+ * @param message Message to encrypt
227
+ * @param recipientPublicKeyHex Hex-encoded recipient public key
228
+ * @returns Base64-encoded encrypted content
229
+ */
230
+ encryptNip44Hex(message, recipientPublicKeyHex) {
231
+ this.ensureNotCleared();
232
+ const recipientPublicKey = hexToBytes(recipientPublicKeyHex);
233
+ return NIP44.encrypt(message, this.privateKey, recipientPublicKey);
234
+ }
235
+ /**
236
+ * Decrypt a NIP-44 encrypted message.
237
+ * @param encryptedContent Base64-encoded encrypted content
238
+ * @param senderPublicKey 32-byte x-only public key of sender
239
+ * @returns Decrypted message
240
+ */
241
+ decryptNip44(encryptedContent, senderPublicKey) {
242
+ this.ensureNotCleared();
243
+ return NIP44.decrypt(encryptedContent, this.privateKey, senderPublicKey);
244
+ }
245
+ /**
246
+ * Decrypt a NIP-44 message using hex-encoded sender public key.
247
+ * @param encryptedContent Base64-encoded encrypted content
248
+ * @param senderPublicKeyHex Hex-encoded sender public key
249
+ * @returns Decrypted message
250
+ */
251
+ decryptNip44Hex(encryptedContent, senderPublicKeyHex) {
252
+ this.ensureNotCleared();
253
+ const senderPublicKey = hexToBytes(senderPublicKeyHex);
254
+ return NIP44.decrypt(encryptedContent, this.privateKey, senderPublicKey);
255
+ }
256
+ /**
257
+ * Derive NIP-44 conversation key with another party.
258
+ * Uses ECDH + HKDF with sorted public keys as salt.
259
+ * @param theirPublicKey 32-byte x-only public key
260
+ * @returns 32-byte conversation key
261
+ */
262
+ deriveConversationKey(theirPublicKey) {
263
+ this.ensureNotCleared();
264
+ return NIP44.deriveConversationKey(this.privateKey, theirPublicKey);
265
+ }
209
266
  /**
210
267
  * Check if a public key matches this key manager's public key.
211
268
  * @param publicKeyHex Hex-encoded public key to check
@@ -1 +1 @@
1
- {"version":3,"file":"NostrKeyManager.js","sourceRoot":"","sources":["../../src/NostrKeyManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NostrKeyManager.js","sourceRoot":"","sources":["../../src/NostrKeyManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAC;AAC7C,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAE3C;;;;GAIG;AACH,MAAM,OAAO,eAAe;IAClB,UAAU,CAAa;IACvB,SAAS,CAAa;IACtB,OAAO,GAAY,KAAK,CAAC;IAEjC;;OAEG;IACH,YAAoB,UAAsB;QACxC,IAAI,UAAU,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QACD,+CAA+C;QAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,UAAsB;QAC1C,OAAO,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CAAC,aAAqB;QAC5C,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAY;QAC1B,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,QAAQ;QACb,MAAM,UAAU,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED;;;OAGG;IACK,gBAAgB;QACtB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED;;;OAGG;IACH,gBAAgB;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,YAAY;QACV,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,WAAuB;QAC1B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,WAAuB;QAC7B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,CACX,SAAqB,EACrB,WAAuB,EACvB,SAAqB;QAErB,OAAO,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CACd,YAAoB,EACpB,WAAuB,EACvB,YAAoB;QAEpB,OAAO,OAAO,CAAC,SAAS,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IACpE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CACX,OAAe,EACf,kBAA8B;QAE9B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IACrE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CACd,OAAe,EACf,qBAA6B;QAE7B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,MAAM,kBAAkB,GAAG,UAAU,CAAC,qBAAqB,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IACrE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CACX,gBAAwB,EACxB,eAA2B;QAE3B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CACd,gBAAwB,EACxB,kBAA0B;QAE1B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,MAAM,eAAe,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAC3E,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,cAA0B;QAC3C,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACnE,CAAC;IAED,+EAA+E;IAC/E,yCAAyC;IACzC,+EAA+E;IAE/E;;;;;;OAMG;IACH,YAAY,CAAC,OAAe,EAAE,kBAA8B;QAC1D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IACrE,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,OAAe,EAAE,qBAA6B;QAC5D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,MAAM,kBAAkB,GAAG,UAAU,CAAC,qBAAqB,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IACrE,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,gBAAwB,EAAE,eAA2B;QAChE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,gBAAwB,EAAE,kBAA0B;QAClE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,MAAM,eAAe,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;OAKG;IACH,qBAAqB,CAAC,cAA0B;QAC9C,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACtE,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,YAAoB;QAChC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,eAAe,EAAE,KAAK,YAAY,CAAC,WAAW,EAAE,CAAC;IAC/D,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,mCAAmC;QACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;CACF"}