@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.
- package/README.md +86 -5
- package/dist/browser/index.js +1650 -75
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/index.min.js +7 -6
- package/dist/browser/index.min.js.map +1 -1
- package/dist/browser/index.umd.js +1659 -80
- package/dist/browser/index.umd.js.map +1 -1
- package/dist/browser/index.umd.min.js +7 -6
- package/dist/browser/index.umd.min.js.map +1 -1
- package/dist/cjs/NostrKeyManager.js +57 -0
- package/dist/cjs/NostrKeyManager.js.map +1 -1
- package/dist/cjs/client/NostrClient.js +46 -0
- package/dist/cjs/client/NostrClient.js.map +1 -1
- package/dist/cjs/crypto/index.js +4 -2
- package/dist/cjs/crypto/index.js.map +1 -1
- package/dist/cjs/crypto/nip04.js +14 -3
- package/dist/cjs/crypto/nip04.js.map +1 -1
- package/dist/cjs/crypto/nip44.js +297 -0
- package/dist/cjs/crypto/nip44.js.map +1 -0
- package/dist/cjs/index.js +27 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/messaging/index.js +24 -0
- package/dist/cjs/messaging/index.js.map +1 -0
- package/dist/cjs/messaging/nip17.js +267 -0
- package/dist/cjs/messaging/nip17.js.map +1 -0
- package/dist/cjs/messaging/types.js +20 -0
- package/dist/cjs/messaging/types.js.map +1 -0
- package/dist/cjs/nametag/NametagUtils.js +1 -1
- package/dist/cjs/nametag/NametagUtils.js.map +1 -1
- package/dist/cjs/payment/PaymentRequestProtocol.js +2 -0
- package/dist/cjs/payment/PaymentRequestProtocol.js.map +1 -1
- package/dist/cjs/protocol/EventKinds.js +13 -1
- package/dist/cjs/protocol/EventKinds.js.map +1 -1
- package/dist/esm/NostrKeyManager.js +57 -0
- package/dist/esm/NostrKeyManager.js.map +1 -1
- package/dist/esm/client/NostrClient.js +46 -0
- package/dist/esm/client/NostrClient.js.map +1 -1
- package/dist/esm/crypto/index.js +3 -1
- package/dist/esm/crypto/index.js.map +1 -1
- package/dist/esm/crypto/nip04.js +14 -3
- package/dist/esm/crypto/nip04.js.map +1 -1
- package/dist/esm/crypto/nip44.js +283 -0
- package/dist/esm/crypto/nip44.js.map +1 -0
- package/dist/esm/index.js +4 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/messaging/index.js +8 -0
- package/dist/esm/messaging/index.js.map +1 -0
- package/dist/esm/messaging/nip17.js +229 -0
- package/dist/esm/messaging/nip17.js.map +1 -0
- package/dist/esm/messaging/types.js +16 -0
- package/dist/esm/messaging/types.js.map +1 -0
- package/dist/esm/nametag/NametagUtils.js +1 -1
- package/dist/esm/nametag/NametagUtils.js.map +1 -1
- package/dist/esm/payment/PaymentRequestProtocol.js +2 -0
- package/dist/esm/payment/PaymentRequestProtocol.js.map +1 -1
- package/dist/esm/protocol/EventKinds.js +12 -0
- package/dist/esm/protocol/EventKinds.js.map +1 -1
- package/dist/types/NostrKeyManager.d.ts +36 -0
- package/dist/types/NostrKeyManager.d.ts.map +1 -1
- package/dist/types/client/NostrClient.d.ts +31 -0
- package/dist/types/client/NostrClient.d.ts.map +1 -1
- package/dist/types/crypto/index.d.ts +1 -1
- package/dist/types/crypto/index.d.ts.map +1 -1
- package/dist/types/crypto/nip04.d.ts.map +1 -1
- package/dist/types/crypto/nip44.d.ts +78 -0
- package/dist/types/crypto/nip44.d.ts.map +1 -0
- package/dist/types/index.d.ts +4 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/messaging/index.d.ts +8 -0
- package/dist/types/messaging/index.d.ts.map +1 -0
- package/dist/types/messaging/nip17.d.ts +42 -0
- package/dist/types/messaging/nip17.d.ts.map +1 -0
- package/dist/types/messaging/types.d.ts +59 -0
- package/dist/types/messaging/types.d.ts.map +1 -0
- package/dist/types/payment/PaymentRequestProtocol.d.ts.map +1 -1
- package/dist/types/protocol/EventKinds.d.ts +6 -0
- package/dist/types/protocol/EventKinds.d.ts.map +1 -1
- 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
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG
|
|
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":"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"}
|
|
@@ -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
|
|
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":";AAAA;;;GAGG;;AAoFH,4CAqBC;AAQD,kCAMC;AASD,wCAQC;AASD,4CAoBC;AAQD,sCAUC;AArLD,iDAA8C;AAC9C,+CAAiD;AACjD,yDAAsF;AAEtF,sCAAsC;AACtC,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAExC,0DAA0D;AAC1D,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B;;;;GAIG;AACH,SAAS,SAAS,CAAC,KAAa;IAC9B,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,IAAA,kBAAU,EAAC,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,GAAW;IACtC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;IAErC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mEAAmE;IACnE,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"NametagUtils.js","sourceRoot":"","sources":["../../../src/nametag/NametagUtils.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAoFH,4CAqBC;AAQD,kCAMC;AASD,wCAQC;AASD,4CAoBC;AAQD,sCAUC;AArLD,iDAA8C;AAC9C,+CAAiD;AACjD,yDAAsF;AAEtF,sCAAsC;AACtC,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAExC,0DAA0D;AAC1D,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B;;;;GAIG;AACH,SAAS,SAAS,CAAC,KAAa;IAC9B,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,IAAA,kBAAU,EAAC,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,GAAW;IACtC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;IAErC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mEAAmE;IACnE,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;IAC3D,MAAM,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC;IAE9C,OAAO,UAAU,GAAG,GAAG,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,SAAS,oBAAoB,CAC3B,WAAmB,EACnB,cAAsB;IAEtB,IAAI,CAAC;QACH,oCAAoC;QACpC,IAAI,IAAA,sCAAkB,EAAC,WAAW,EAAE,cAA6B,CAAC,EAAE,CAAC;YACnE,MAAM,MAAM,GAAG,IAAA,oCAAgB,EAAC,WAAW,EAAE,cAA6B,CAAC,CAAC;YAC5E,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QAED,8DAA8D;QAC9D,IAAI,IAAA,sCAAkB,EAAC,WAAW,CAAC,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,IAAA,oCAAgB,EAAC,WAAW,CAAC,CAAC;YAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,gBAAgB,CAC9B,OAAe,EACf,iBAAyB,eAAe;IAExC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAE/B,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACjE,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,uEAAuE;IACzE,CAAC;IAED,4DAA4D;IAC5D,IAAI,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACvC,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,WAAW,CACzB,OAAe,EACf,iBAAyB,eAAe;IAExC,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAC7D,OAAO,SAAS,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,cAAc,CAC5B,IAAY,EACZ,IAAY,EACZ,iBAAyB,eAAe;IAExC,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC3D,OAAO,WAAW,KAAK,WAAW,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAC9B,OAAe,EACf,iBAAyB,eAAe;IAExC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAE/B,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACjE,IAAI,UAAU,EAAE,CAAC;YACf,mCAAmC;YACnC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW;YAC/C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7B,OAAO,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,gBAAgB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AACnD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAC3B,GAAW,EACX,iBAAyB,eAAe;IAExC,IAAI,CAAC;QACH,OAAO,IAAA,sCAAkB,EAAC,GAAG,EAAE,cAA6B,CAAC;YACtD,IAAA,sCAAkB,EAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -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":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
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":";AAAA;;;GAGG;;;
|
|
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":"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"}
|