@unicitylabs/nostr-js-sdk 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +290 -0
- package/dist/browser/index.js +8444 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/index.min.js +12 -0
- package/dist/browser/index.min.js.map +1 -0
- package/dist/browser/index.umd.js +8524 -0
- package/dist/browser/index.umd.js.map +1 -0
- package/dist/browser/index.umd.min.js +12 -0
- package/dist/browser/index.umd.min.js.map +1 -0
- package/dist/cjs/NostrKeyManager.js +265 -0
- package/dist/cjs/NostrKeyManager.js.map +1 -0
- package/dist/cjs/client/NostrClient.js +518 -0
- package/dist/cjs/client/NostrClient.js.map +1 -0
- package/dist/cjs/client/NostrEventListener.js +31 -0
- package/dist/cjs/client/NostrEventListener.js.map +1 -0
- package/dist/cjs/client/WebSocketAdapter.js +90 -0
- package/dist/cjs/client/WebSocketAdapter.js.map +1 -0
- package/dist/cjs/client/index.js +18 -0
- package/dist/cjs/client/index.js.map +1 -0
- package/dist/cjs/crypto/bech32.js +201 -0
- package/dist/cjs/crypto/bech32.js.map +1 -0
- package/dist/cjs/crypto/index.js +49 -0
- package/dist/cjs/crypto/index.js.map +1 -0
- package/dist/cjs/crypto/nip04.js +327 -0
- package/dist/cjs/crypto/nip04.js.map +1 -0
- package/dist/cjs/crypto/schnorr.js +101 -0
- package/dist/cjs/crypto/schnorr.js.map +1 -0
- package/dist/cjs/index.js +57 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/nametag/NametagBinding.js +196 -0
- package/dist/cjs/nametag/NametagBinding.js.map +1 -0
- package/dist/cjs/nametag/NametagUtils.js +156 -0
- package/dist/cjs/nametag/NametagUtils.js.map +1 -0
- package/dist/cjs/nametag/index.js +47 -0
- package/dist/cjs/nametag/index.js.map +1 -0
- package/dist/cjs/protocol/Event.js +209 -0
- package/dist/cjs/protocol/Event.js.map +1 -0
- package/dist/cjs/protocol/EventKinds.js +126 -0
- package/dist/cjs/protocol/EventKinds.js.map +1 -0
- package/dist/cjs/protocol/Filter.js +202 -0
- package/dist/cjs/protocol/Filter.js.map +1 -0
- package/dist/cjs/protocol/index.js +50 -0
- package/dist/cjs/protocol/index.js.map +1 -0
- package/dist/cjs/token/TokenTransferProtocol.js +196 -0
- package/dist/cjs/token/TokenTransferProtocol.js.map +1 -0
- package/dist/cjs/token/index.js +45 -0
- package/dist/cjs/token/index.js.map +1 -0
- package/dist/esm/NostrKeyManager.js +228 -0
- package/dist/esm/NostrKeyManager.js.map +1 -0
- package/dist/esm/client/NostrClient.js +481 -0
- package/dist/esm/client/NostrClient.js.map +1 -0
- package/dist/esm/client/NostrEventListener.js +27 -0
- package/dist/esm/client/NostrEventListener.js.map +1 -0
- package/dist/esm/client/WebSocketAdapter.js +52 -0
- package/dist/esm/client/WebSocketAdapter.js.map +1 -0
- package/dist/esm/client/index.js +7 -0
- package/dist/esm/client/index.js.map +1 -0
- package/dist/esm/crypto/bech32.js +193 -0
- package/dist/esm/crypto/bech32.js.map +1 -0
- package/dist/esm/crypto/index.js +10 -0
- package/dist/esm/crypto/index.js.map +1 -0
- package/dist/esm/crypto/nip04.js +286 -0
- package/dist/esm/crypto/nip04.js.map +1 -0
- package/dist/esm/crypto/schnorr.js +93 -0
- package/dist/esm/crypto/schnorr.js.map +1 -0
- package/dist/esm/index.js +32 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/nametag/NametagBinding.js +155 -0
- package/dist/esm/nametag/NametagBinding.js.map +1 -0
- package/dist/esm/nametag/NametagUtils.js +149 -0
- package/dist/esm/nametag/NametagUtils.js.map +1 -0
- package/dist/esm/nametag/index.js +8 -0
- package/dist/esm/nametag/index.js.map +1 -0
- package/dist/esm/protocol/Event.js +172 -0
- package/dist/esm/protocol/Event.js.map +1 -0
- package/dist/esm/protocol/EventKinds.js +119 -0
- package/dist/esm/protocol/EventKinds.js.map +1 -0
- package/dist/esm/protocol/Filter.js +197 -0
- package/dist/esm/protocol/Filter.js.map +1 -0
- package/dist/esm/protocol/index.js +8 -0
- package/dist/esm/protocol/index.js.map +1 -0
- package/dist/esm/token/TokenTransferProtocol.js +154 -0
- package/dist/esm/token/TokenTransferProtocol.js.map +1 -0
- package/dist/esm/token/index.js +6 -0
- package/dist/esm/token/index.js.map +1 -0
- package/dist/types/NostrKeyManager.d.ts +150 -0
- package/dist/types/NostrKeyManager.d.ts.map +1 -0
- package/dist/types/client/NostrClient.d.ts +154 -0
- package/dist/types/client/NostrClient.d.ts.map +1 -0
- package/dist/types/client/NostrEventListener.d.ts +40 -0
- package/dist/types/client/NostrEventListener.d.ts.map +1 -0
- package/dist/types/client/WebSocketAdapter.d.ts +55 -0
- package/dist/types/client/WebSocketAdapter.d.ts.map +1 -0
- package/dist/types/client/index.d.ts +9 -0
- package/dist/types/client/index.d.ts.map +1 -0
- package/dist/types/crypto/bech32.d.ts +51 -0
- package/dist/types/crypto/bech32.d.ts.map +1 -0
- package/dist/types/crypto/index.d.ts +10 -0
- package/dist/types/crypto/index.d.ts.map +1 -0
- package/dist/types/crypto/nip04.d.ts +56 -0
- package/dist/types/crypto/nip04.d.ts.map +1 -0
- package/dist/types/crypto/schnorr.d.ts +47 -0
- package/dist/types/crypto/schnorr.d.ts.map +1 -0
- package/dist/types/index.d.ts +31 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/nametag/NametagBinding.d.ts +68 -0
- package/dist/types/nametag/NametagBinding.d.ts.map +1 -0
- package/dist/types/nametag/NametagUtils.d.ts +44 -0
- package/dist/types/nametag/NametagUtils.d.ts.map +1 -0
- package/dist/types/nametag/index.d.ts +8 -0
- package/dist/types/nametag/index.d.ts.map +1 -0
- package/dist/types/protocol/Event.d.ts +112 -0
- package/dist/types/protocol/Event.d.ts.map +1 -0
- package/dist/types/protocol/EventKinds.d.ts +62 -0
- package/dist/types/protocol/EventKinds.d.ts.map +1 -0
- package/dist/types/protocol/Filter.d.ts +146 -0
- package/dist/types/protocol/Filter.d.ts.map +1 -0
- package/dist/types/protocol/index.d.ts +10 -0
- package/dist/types/protocol/index.d.ts.map +1 -0
- package/dist/types/token/TokenTransferProtocol.d.ts +67 -0
- package/dist/types/token/TokenTransferProtocol.d.ts.map +1 -0
- package/dist/types/token/index.d.ts +6 -0
- package/dist/types/token/index.d.ts.map +1 -0
- package/package.json +89 -0
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* NostrKeyManager - High-level cryptographic operations manager for Nostr.
|
|
4
|
+
* Manages key pairs, signing, and NIP-04 encryption/decryption.
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.NostrKeyManager = void 0;
|
|
41
|
+
const utils_1 = require("@noble/hashes/utils");
|
|
42
|
+
const Bech32 = __importStar(require("./crypto/bech32.js"));
|
|
43
|
+
const Schnorr = __importStar(require("./crypto/schnorr.js"));
|
|
44
|
+
const NIP04 = __importStar(require("./crypto/nip04.js"));
|
|
45
|
+
/**
|
|
46
|
+
* NostrKeyManager provides a high-level interface for cryptographic operations.
|
|
47
|
+
* It manages a Nostr key pair and provides methods for signing, verification,
|
|
48
|
+
* and NIP-04 encryption/decryption.
|
|
49
|
+
*/
|
|
50
|
+
class NostrKeyManager {
|
|
51
|
+
privateKey;
|
|
52
|
+
publicKey;
|
|
53
|
+
cleared = false;
|
|
54
|
+
/**
|
|
55
|
+
* Private constructor - use static factory methods instead.
|
|
56
|
+
*/
|
|
57
|
+
constructor(privateKey) {
|
|
58
|
+
if (privateKey.length !== 32) {
|
|
59
|
+
throw new Error('Private key must be 32 bytes');
|
|
60
|
+
}
|
|
61
|
+
// Make a copy to prevent external modification
|
|
62
|
+
this.privateKey = new Uint8Array(privateKey);
|
|
63
|
+
this.publicKey = Schnorr.getPublicKey(this.privateKey);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Create a NostrKeyManager from a 32-byte private key.
|
|
67
|
+
* @param privateKey 32-byte private key
|
|
68
|
+
* @returns NostrKeyManager instance
|
|
69
|
+
*/
|
|
70
|
+
static fromPrivateKey(privateKey) {
|
|
71
|
+
return new NostrKeyManager(privateKey);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Create a NostrKeyManager from a hex-encoded private key.
|
|
75
|
+
* @param privateKeyHex Hex-encoded private key (64 characters)
|
|
76
|
+
* @returns NostrKeyManager instance
|
|
77
|
+
*/
|
|
78
|
+
static fromPrivateKeyHex(privateKeyHex) {
|
|
79
|
+
const privateKey = (0, utils_1.hexToBytes)(privateKeyHex);
|
|
80
|
+
return new NostrKeyManager(privateKey);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Create a NostrKeyManager from a Bech32-encoded nsec string.
|
|
84
|
+
* @param nsec nsec-encoded private key
|
|
85
|
+
* @returns NostrKeyManager instance
|
|
86
|
+
*/
|
|
87
|
+
static fromNsec(nsec) {
|
|
88
|
+
const privateKey = Bech32.decodeNsec(nsec);
|
|
89
|
+
return new NostrKeyManager(privateKey);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Generate a new random key pair.
|
|
93
|
+
* @returns NostrKeyManager instance with a new random key pair
|
|
94
|
+
*/
|
|
95
|
+
static generate() {
|
|
96
|
+
const privateKey = (0, utils_1.randomBytes)(32);
|
|
97
|
+
return new NostrKeyManager(privateKey);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Check if the key manager has been cleared.
|
|
101
|
+
* @throws Error if the key manager has been cleared
|
|
102
|
+
*/
|
|
103
|
+
ensureNotCleared() {
|
|
104
|
+
if (this.cleared) {
|
|
105
|
+
throw new Error('KeyManager has been cleared');
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get a copy of the private key bytes.
|
|
110
|
+
* @returns 32-byte private key (copy)
|
|
111
|
+
*/
|
|
112
|
+
getPrivateKey() {
|
|
113
|
+
this.ensureNotCleared();
|
|
114
|
+
return new Uint8Array(this.privateKey);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Get the hex-encoded private key.
|
|
118
|
+
* @returns Hex-encoded private key (64 characters)
|
|
119
|
+
*/
|
|
120
|
+
getPrivateKeyHex() {
|
|
121
|
+
this.ensureNotCleared();
|
|
122
|
+
return (0, utils_1.bytesToHex)(this.privateKey);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Get the Bech32-encoded nsec private key.
|
|
126
|
+
* @returns nsec-encoded private key
|
|
127
|
+
*/
|
|
128
|
+
getNsec() {
|
|
129
|
+
this.ensureNotCleared();
|
|
130
|
+
return Bech32.encodeNsec(this.privateKey);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get a copy of the x-only public key bytes.
|
|
134
|
+
* @returns 32-byte x-only public key (copy)
|
|
135
|
+
*/
|
|
136
|
+
getPublicKey() {
|
|
137
|
+
this.ensureNotCleared();
|
|
138
|
+
return new Uint8Array(this.publicKey);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Get the hex-encoded public key.
|
|
142
|
+
* @returns Hex-encoded public key (64 characters)
|
|
143
|
+
*/
|
|
144
|
+
getPublicKeyHex() {
|
|
145
|
+
this.ensureNotCleared();
|
|
146
|
+
return (0, utils_1.bytesToHex)(this.publicKey);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Get the Bech32-encoded npub public key.
|
|
150
|
+
* @returns npub-encoded public key
|
|
151
|
+
*/
|
|
152
|
+
getNpub() {
|
|
153
|
+
this.ensureNotCleared();
|
|
154
|
+
return Bech32.encodeNpub(this.publicKey);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Sign a 32-byte message hash using BIP-340 Schnorr signature.
|
|
158
|
+
* @param messageHash 32-byte message hash
|
|
159
|
+
* @returns 64-byte Schnorr signature
|
|
160
|
+
*/
|
|
161
|
+
sign(messageHash) {
|
|
162
|
+
this.ensureNotCleared();
|
|
163
|
+
return Schnorr.sign(messageHash, this.privateKey);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Sign a message hash and return hex-encoded signature.
|
|
167
|
+
* @param messageHash 32-byte message hash
|
|
168
|
+
* @returns Hex-encoded 64-byte Schnorr signature
|
|
169
|
+
*/
|
|
170
|
+
signHex(messageHash) {
|
|
171
|
+
this.ensureNotCleared();
|
|
172
|
+
return Schnorr.signHex(messageHash, this.privateKey);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Verify a Schnorr signature (static method).
|
|
176
|
+
* @param signature 64-byte Schnorr signature
|
|
177
|
+
* @param messageHash 32-byte message hash
|
|
178
|
+
* @param publicKey 32-byte x-only public key
|
|
179
|
+
* @returns true if the signature is valid
|
|
180
|
+
*/
|
|
181
|
+
static verify(signature, messageHash, publicKey) {
|
|
182
|
+
return Schnorr.verify(signature, messageHash, publicKey);
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Verify a hex-encoded Schnorr signature (static method).
|
|
186
|
+
* @param signatureHex Hex-encoded 64-byte signature
|
|
187
|
+
* @param messageHash 32-byte message hash
|
|
188
|
+
* @param publicKeyHex Hex-encoded 32-byte public key
|
|
189
|
+
* @returns true if the signature is valid
|
|
190
|
+
*/
|
|
191
|
+
static verifyHex(signatureHex, messageHash, publicKeyHex) {
|
|
192
|
+
return Schnorr.verifyHex(signatureHex, messageHash, publicKeyHex);
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Encrypt a message using NIP-04 encryption.
|
|
196
|
+
* @param message Message to encrypt
|
|
197
|
+
* @param recipientPublicKey 32-byte x-only public key of recipient
|
|
198
|
+
* @returns Encrypted content string
|
|
199
|
+
*/
|
|
200
|
+
async encrypt(message, recipientPublicKey) {
|
|
201
|
+
this.ensureNotCleared();
|
|
202
|
+
return NIP04.encrypt(message, this.privateKey, recipientPublicKey);
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Encrypt a message using hex-encoded recipient public key.
|
|
206
|
+
* @param message Message to encrypt
|
|
207
|
+
* @param recipientPublicKeyHex Hex-encoded recipient public key
|
|
208
|
+
* @returns Encrypted content string
|
|
209
|
+
*/
|
|
210
|
+
async encryptHex(message, recipientPublicKeyHex) {
|
|
211
|
+
this.ensureNotCleared();
|
|
212
|
+
const recipientPublicKey = (0, utils_1.hexToBytes)(recipientPublicKeyHex);
|
|
213
|
+
return NIP04.encrypt(message, this.privateKey, recipientPublicKey);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Decrypt a NIP-04 encrypted message.
|
|
217
|
+
* @param encryptedContent Encrypted content string
|
|
218
|
+
* @param senderPublicKey 32-byte x-only public key of sender
|
|
219
|
+
* @returns Decrypted message
|
|
220
|
+
*/
|
|
221
|
+
async decrypt(encryptedContent, senderPublicKey) {
|
|
222
|
+
this.ensureNotCleared();
|
|
223
|
+
return NIP04.decrypt(encryptedContent, this.privateKey, senderPublicKey);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Decrypt a message using hex-encoded sender public key.
|
|
227
|
+
* @param encryptedContent Encrypted content string
|
|
228
|
+
* @param senderPublicKeyHex Hex-encoded sender public key
|
|
229
|
+
* @returns Decrypted message
|
|
230
|
+
*/
|
|
231
|
+
async decryptHex(encryptedContent, senderPublicKeyHex) {
|
|
232
|
+
this.ensureNotCleared();
|
|
233
|
+
const senderPublicKey = (0, utils_1.hexToBytes)(senderPublicKeyHex);
|
|
234
|
+
return NIP04.decrypt(encryptedContent, this.privateKey, senderPublicKey);
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Derive a shared secret using ECDH.
|
|
238
|
+
* @param theirPublicKey 32-byte x-only public key
|
|
239
|
+
* @returns 32-byte shared secret
|
|
240
|
+
*/
|
|
241
|
+
deriveSharedSecret(theirPublicKey) {
|
|
242
|
+
this.ensureNotCleared();
|
|
243
|
+
return NIP04.deriveSharedSecret(this.privateKey, theirPublicKey);
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Check if a public key matches this key manager's public key.
|
|
247
|
+
* @param publicKeyHex Hex-encoded public key to check
|
|
248
|
+
* @returns true if the public key matches
|
|
249
|
+
*/
|
|
250
|
+
isMyPublicKey(publicKeyHex) {
|
|
251
|
+
this.ensureNotCleared();
|
|
252
|
+
return this.getPublicKeyHex() === publicKeyHex.toLowerCase();
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Clear the private key from memory.
|
|
256
|
+
* After calling this method, the key manager cannot be used for signing or decryption.
|
|
257
|
+
*/
|
|
258
|
+
clear() {
|
|
259
|
+
// Overwrite private key with zeros
|
|
260
|
+
this.privateKey.fill(0);
|
|
261
|
+
this.cleared = true;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
exports.NostrKeyManager = NostrKeyManager;
|
|
265
|
+
//# sourceMappingURL=NostrKeyManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NostrKeyManager.js","sourceRoot":"","sources":["../../src/NostrKeyManager.ts"],"names":[],"mappings":"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"}
|