nostr-crypto-utils 0.5.2 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/crypto.nostr-crypto-utils.min.js +1 -1
- package/dist/browser/crypto.nostr-crypto-utils.min.js.map +3 -3
- package/dist/browser/main.nostr-crypto-utils.min.js +1 -1
- package/dist/browser/main.nostr-crypto-utils.min.js.map +3 -3
- package/dist/cjs/crypto.js +19 -5
- package/dist/cjs/crypto.js.map +1 -1
- package/dist/cjs/encoding/base64.js +29 -12
- package/dist/cjs/encoding/base64.js.map +1 -1
- package/dist/esm/crypto.js +19 -5
- package/dist/esm/crypto.js.map +1 -1
- package/dist/esm/encoding/base64.js +29 -12
- package/dist/esm/encoding/base64.js.map +1 -1
- package/dist/types/crypto.d.ts +8 -6
- package/dist/types/crypto.d.ts.map +1 -1
- package/dist/types/encoding/base64.d.ts +7 -6
- package/dist/types/encoding/base64.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/crypto.ts +24 -8
- package/src/encoding/base64.ts +31 -14
package/dist/cjs/crypto.js
CHANGED
|
@@ -194,11 +194,23 @@ function createEvent(event) {
|
|
|
194
194
|
kind: event.kind || 1
|
|
195
195
|
};
|
|
196
196
|
}
|
|
197
|
+
/**
|
|
198
|
+
* Normalize a private key to hex string (accepts both hex string and Uint8Array)
|
|
199
|
+
*/
|
|
200
|
+
function normalizePrivateKey(privateKey) {
|
|
201
|
+
if (privateKey instanceof Uint8Array) {
|
|
202
|
+
return (0, utils_1.bytesToHex)(privateKey);
|
|
203
|
+
}
|
|
204
|
+
return privateKey;
|
|
205
|
+
}
|
|
197
206
|
/**
|
|
198
207
|
* Signs an event
|
|
208
|
+
* @param event - Event to sign
|
|
209
|
+
* @param privateKey - Private key as hex string or Uint8Array
|
|
199
210
|
*/
|
|
200
211
|
async function signEvent(event, privateKey) {
|
|
201
212
|
try {
|
|
213
|
+
const privateKeyHex = normalizePrivateKey(privateKey);
|
|
202
214
|
// Serialize event for signing (NIP-01 format)
|
|
203
215
|
const serialized = JSON.stringify([
|
|
204
216
|
0,
|
|
@@ -211,7 +223,7 @@ async function signEvent(event, privateKey) {
|
|
|
211
223
|
// Calculate event hash
|
|
212
224
|
const eventHash = (0, sha256_1.sha256)(new TextEncoder().encode(serialized));
|
|
213
225
|
// Convert private key to bytes and sign
|
|
214
|
-
const privateKeyBytes = (0, utils_1.hexToBytes)(
|
|
226
|
+
const privateKeyBytes = (0, utils_1.hexToBytes)(privateKeyHex);
|
|
215
227
|
const signatureBytes = secp256k1_1.schnorr.sign(eventHash, privateKeyBytes);
|
|
216
228
|
// Create signed event
|
|
217
229
|
return {
|
|
@@ -226,19 +238,21 @@ async function signEvent(event, privateKey) {
|
|
|
226
238
|
}
|
|
227
239
|
}
|
|
228
240
|
/**
|
|
229
|
-
* Gets a public key hex string from a private key
|
|
230
|
-
* @param privateKey -
|
|
241
|
+
* Gets a public key hex string from a private key (synchronous)
|
|
242
|
+
* @param privateKey - Private key as hex string or Uint8Array
|
|
231
243
|
* @returns Hex-encoded public key (32-byte x-only schnorr key)
|
|
232
244
|
*/
|
|
233
245
|
function getPublicKeySync(privateKey) {
|
|
234
|
-
const privateKeyBytes =
|
|
246
|
+
const privateKeyBytes = privateKey instanceof Uint8Array
|
|
247
|
+
? privateKey
|
|
248
|
+
: (0, utils_1.hexToBytes)(privateKey);
|
|
235
249
|
const publicKeyBytes = secp256k1_1.schnorr.getPublicKey(privateKeyBytes);
|
|
236
250
|
return (0, utils_1.bytesToHex)(publicKeyBytes);
|
|
237
251
|
}
|
|
238
252
|
/**
|
|
239
253
|
* Creates, hashes, and signs a Nostr event in one step
|
|
240
254
|
* @param event - Partial event (kind, content, tags required; pubkey derived if missing)
|
|
241
|
-
* @param privateKey -
|
|
255
|
+
* @param privateKey - Private key as hex string or Uint8Array
|
|
242
256
|
* @returns Fully signed event with id, pubkey, and sig
|
|
243
257
|
*/
|
|
244
258
|
async function finalizeEvent(event, privateKey) {
|
package/dist/cjs/crypto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmHH,wDAEC;AAKD,kDAEC;AAKD,0CAUC;AAKD,oCAYC;AAKD,0CAQC;AAKD,kCAUC;
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Base64 encoding utilities for Nostr
|
|
4
4
|
* Provides consistent base64 encoding/decoding across all Nostr-related projects
|
|
5
|
+
* Uses browser-compatible APIs (no Node.js Buffer dependency)
|
|
5
6
|
*/
|
|
6
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
8
|
exports.stringToBase64 = stringToBase64;
|
|
@@ -24,7 +25,8 @@ exports.addBase64Padding = addBase64Padding;
|
|
|
24
25
|
* @returns Base64 string
|
|
25
26
|
*/
|
|
26
27
|
function stringToBase64(str) {
|
|
27
|
-
|
|
28
|
+
const bytes = new TextEncoder().encode(str);
|
|
29
|
+
return bytesToBase64(bytes);
|
|
28
30
|
}
|
|
29
31
|
/**
|
|
30
32
|
* Convert base64 to string
|
|
@@ -36,27 +38,28 @@ function base64ToString(base64) {
|
|
|
36
38
|
if (!isValidBase64(base64)) {
|
|
37
39
|
throw new Error('Invalid base64 string');
|
|
38
40
|
}
|
|
39
|
-
|
|
41
|
+
const bytes = base64ToBytes(base64);
|
|
42
|
+
return new TextDecoder().decode(bytes);
|
|
40
43
|
}
|
|
41
44
|
/**
|
|
42
|
-
* Convert
|
|
43
|
-
* @param buffer
|
|
45
|
+
* Convert Uint8Array to base64
|
|
46
|
+
* @param buffer Uint8Array to convert
|
|
44
47
|
* @returns Base64 string
|
|
45
48
|
*/
|
|
46
49
|
function bufferToBase64(buffer) {
|
|
47
|
-
return buffer
|
|
50
|
+
return bytesToBase64(buffer);
|
|
48
51
|
}
|
|
49
52
|
/**
|
|
50
|
-
* Convert base64 to
|
|
53
|
+
* Convert base64 to Uint8Array
|
|
51
54
|
* @param base64 Base64 string to convert
|
|
52
|
-
* @returns
|
|
55
|
+
* @returns Uint8Array
|
|
53
56
|
* @throws Error if base64 string is invalid
|
|
54
57
|
*/
|
|
55
58
|
function base64ToBuffer(base64) {
|
|
56
59
|
if (!isValidBase64(base64)) {
|
|
57
60
|
throw new Error('Invalid base64 string');
|
|
58
61
|
}
|
|
59
|
-
return
|
|
62
|
+
return base64ToBytes(base64);
|
|
60
63
|
}
|
|
61
64
|
/**
|
|
62
65
|
* Check if string is valid base64
|
|
@@ -99,7 +102,11 @@ function hexToBase64(hex) {
|
|
|
99
102
|
if (!hex.match(/^[0-9a-fA-F]*$/)) {
|
|
100
103
|
throw new Error('Invalid hex string');
|
|
101
104
|
}
|
|
102
|
-
|
|
105
|
+
const bytes = new Uint8Array(hex.length / 2);
|
|
106
|
+
for (let i = 0; i < hex.length; i += 2) {
|
|
107
|
+
bytes[i / 2] = parseInt(hex.substring(i, i + 2), 16);
|
|
108
|
+
}
|
|
109
|
+
return bytesToBase64(bytes);
|
|
103
110
|
}
|
|
104
111
|
/**
|
|
105
112
|
* Convert base64 to hex string
|
|
@@ -111,7 +118,8 @@ function base64ToHex(base64) {
|
|
|
111
118
|
if (!isValidBase64(base64)) {
|
|
112
119
|
throw new Error('Invalid base64 string');
|
|
113
120
|
}
|
|
114
|
-
|
|
121
|
+
const bytes = base64ToBytes(base64);
|
|
122
|
+
return Array.from(bytes).map(b => b.toString(16).padStart(2, '0')).join('');
|
|
115
123
|
}
|
|
116
124
|
/**
|
|
117
125
|
* Create base64 string from byte array
|
|
@@ -119,7 +127,11 @@ function base64ToHex(base64) {
|
|
|
119
127
|
* @returns Base64 string
|
|
120
128
|
*/
|
|
121
129
|
function bytesToBase64(bytes) {
|
|
122
|
-
|
|
130
|
+
let binary = '';
|
|
131
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
132
|
+
binary += String.fromCharCode(bytes[i]);
|
|
133
|
+
}
|
|
134
|
+
return btoa(binary);
|
|
123
135
|
}
|
|
124
136
|
/**
|
|
125
137
|
* Convert base64 to byte array
|
|
@@ -131,7 +143,12 @@ function base64ToBytes(base64) {
|
|
|
131
143
|
if (!isValidBase64(base64)) {
|
|
132
144
|
throw new Error('Invalid base64 string');
|
|
133
145
|
}
|
|
134
|
-
|
|
146
|
+
const binary = atob(base64);
|
|
147
|
+
const bytes = new Uint8Array(binary.length);
|
|
148
|
+
for (let i = 0; i < binary.length; i++) {
|
|
149
|
+
bytes[i] = binary.charCodeAt(i);
|
|
150
|
+
}
|
|
151
|
+
return bytes;
|
|
135
152
|
}
|
|
136
153
|
/**
|
|
137
154
|
* Calculate padded length for base64 string
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base64.js","sourceRoot":"","sources":["../../../src/encoding/base64.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"base64.js","sourceRoot":"","sources":["../../../src/encoding/base64.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/crypto.js
CHANGED
|
@@ -146,11 +146,23 @@ export function createEvent(event) {
|
|
|
146
146
|
kind: event.kind || 1
|
|
147
147
|
};
|
|
148
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* Normalize a private key to hex string (accepts both hex string and Uint8Array)
|
|
151
|
+
*/
|
|
152
|
+
function normalizePrivateKey(privateKey) {
|
|
153
|
+
if (privateKey instanceof Uint8Array) {
|
|
154
|
+
return bytesToHex(privateKey);
|
|
155
|
+
}
|
|
156
|
+
return privateKey;
|
|
157
|
+
}
|
|
149
158
|
/**
|
|
150
159
|
* Signs an event
|
|
160
|
+
* @param event - Event to sign
|
|
161
|
+
* @param privateKey - Private key as hex string or Uint8Array
|
|
151
162
|
*/
|
|
152
163
|
export async function signEvent(event, privateKey) {
|
|
153
164
|
try {
|
|
165
|
+
const privateKeyHex = normalizePrivateKey(privateKey);
|
|
154
166
|
// Serialize event for signing (NIP-01 format)
|
|
155
167
|
const serialized = JSON.stringify([
|
|
156
168
|
0,
|
|
@@ -163,7 +175,7 @@ export async function signEvent(event, privateKey) {
|
|
|
163
175
|
// Calculate event hash
|
|
164
176
|
const eventHash = sha256(new TextEncoder().encode(serialized));
|
|
165
177
|
// Convert private key to bytes and sign
|
|
166
|
-
const privateKeyBytes = hexToBytes(
|
|
178
|
+
const privateKeyBytes = hexToBytes(privateKeyHex);
|
|
167
179
|
const signatureBytes = schnorr.sign(eventHash, privateKeyBytes);
|
|
168
180
|
// Create signed event
|
|
169
181
|
return {
|
|
@@ -178,19 +190,21 @@ export async function signEvent(event, privateKey) {
|
|
|
178
190
|
}
|
|
179
191
|
}
|
|
180
192
|
/**
|
|
181
|
-
* Gets a public key hex string from a private key
|
|
182
|
-
* @param privateKey -
|
|
193
|
+
* Gets a public key hex string from a private key (synchronous)
|
|
194
|
+
* @param privateKey - Private key as hex string or Uint8Array
|
|
183
195
|
* @returns Hex-encoded public key (32-byte x-only schnorr key)
|
|
184
196
|
*/
|
|
185
197
|
export function getPublicKeySync(privateKey) {
|
|
186
|
-
const privateKeyBytes =
|
|
198
|
+
const privateKeyBytes = privateKey instanceof Uint8Array
|
|
199
|
+
? privateKey
|
|
200
|
+
: hexToBytes(privateKey);
|
|
187
201
|
const publicKeyBytes = schnorr.getPublicKey(privateKeyBytes);
|
|
188
202
|
return bytesToHex(publicKeyBytes);
|
|
189
203
|
}
|
|
190
204
|
/**
|
|
191
205
|
* Creates, hashes, and signs a Nostr event in one step
|
|
192
206
|
* @param event - Partial event (kind, content, tags required; pubkey derived if missing)
|
|
193
|
-
* @param privateKey -
|
|
207
|
+
* @param privateKey - Private key as hex string or Uint8Array
|
|
194
208
|
* @returns Fully signed event with id, pubkey, and sig
|
|
195
209
|
*/
|
|
196
210
|
export async function finalizeEvent(event, privateKey) {
|
package/dist/esm/crypto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AA2CjE,4CAA4C;AAC5C,MAAM,SAAS,GAAG,KAAK,IAA2B,EAAE;IAClD,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACnD,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,WAAW,IAAK,MAAiB,CAAC,MAAM,EAAE,CAAC;QAC/D,OAAQ,MAAiB,CAAC,MAAM,CAAC;IACnC,CAAC;IACD,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;YAC3B,OAAO,YAAY,CAAC,SAAyB,CAAC;QAChD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;AAC3D,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,YAAY;IACR,cAAc,GAAwB,IAAI,CAAC;IAC3C,WAAW,CAAgB;IAEnC;QACE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,IAAI,CAAC,cAAc,GAAG,MAAM,SAAS,EAAE,CAAC;IAC1C,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,MAAM,IAAI,CAAC,WAAW,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC9C,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,eAAe,CAAyF,KAAQ;QACpH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC9C,OAAO,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;CACF;AAED,qCAAqC;AACrC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;AAE/C,2BAA2B;AAC3B,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;AACxC,MAAM,CAAC,MAAM,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;AAErD;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,eAA2B;IAChE,OAAO,SAAS,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,eAA2B;IAC7D,OAAO,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,eAAe,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAC/C,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB;IAChD,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;IAEjD,OAAO;QACL,UAAU;QACV,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAAkB;IACnD,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QAC7D,OAAO;YACL,GAAG,EAAE,UAAU,CAAC,cAAc,CAAC;YAC/B,KAAK,EAAE,cAAc;SACtB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,0BAA0B,CAAC,CAAC;QACpD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAgB;IACpD,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7D,OAAO,aAAa,CAAC,GAAG,KAAK,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,6BAA6B,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAA0B;IACpD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAEhD,OAAO;QACL,GAAG,KAAK;QACR,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,SAAS;QACzC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;QAC5B,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC;KACR,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,UAA+B;IAC1D,IAAI,UAAU,YAAY,UAAU,EAAE,CAAC;QACrC,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAiB,EAAE,UAA+B;IAChF,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAEtD,8CAA8C;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,CAAC;YACD,KAAK,CAAC,MAAM;YACZ,KAAK,CAAC,UAAU;YAChB,KAAK,CAAC,IAAI;YACV,KAAK,CAAC,IAAI;YACV,KAAK,CAAC,OAAO;SACd,CAAC,CAAC;QAEH,uBAAuB;QACvB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAE/D,wCAAwC;QACxC,MAAM,eAAe,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAEhE,sBAAsB;QACtB,OAAO;YACL,GAAG,KAAK;YACR,EAAE,EAAE,UAAU,CAAC,SAAS,CAAC;YACzB,GAAG,EAAE,UAAU,CAAC,cAAc,CAAC;SAChC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,sBAAsB,CAAC,CAAC;QAChD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAA+B;IAC9D,MAAM,eAAe,GAAG,UAAU,YAAY,UAAU;QACtD,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC3B,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAC7D,OAAO,UAAU,CAAC,cAAc,CAAC,CAAC;AACpC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAA0B,EAC1B,UAA+B;IAE/B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAEpE,MAAM,SAAS,GAAe;QAC5B,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC;QACrB,UAAU,EAAE,SAAS;QACrB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;QAC5B,MAAM;KACP,CAAC;IAEF,OAAO,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAuB;IAC3D,IAAI,CAAC;QACH,mDAAmD;QACnD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,CAAC;YACD,KAAK,CAAC,MAAM;YACZ,KAAK,CAAC,UAAU;YAChB,KAAK,CAAC,IAAI;YACV,KAAK,CAAC,IAAI;YACV,KAAK,CAAC,OAAO;SACd,CAAC,CAAC;QAEH,uBAAuB;QACvB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAE/D,kBAAkB;QAClB,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,YAAY,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,+BAA+B;QAC/B,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAE7C,mBAAmB;QACnB,OAAO,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,4BAA4B,CAAC,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,OAAe,EACf,eAAmC,EACnC,aAAqB;IAErB,IAAI,CAAC;QACH,MAAM,kBAAkB,GAAG,OAAO,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC;QACvG,MAAM,WAAW,GAAG,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACzG,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEzC,qBAAqB;QACrB,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAC1E,KAAK,EACL,OAAO,CAAC,MAAM,EACd,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,EAChC,KAAK,EACL,CAAC,SAAS,CAAC,CACZ,CAAC,CAAC;QAEH,2DAA2D;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,sBAAsB;QACtB,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAC9E,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,EACvB,GAAG,EACH,IAAI,CAAC,MAAM,CACZ,CAAC,CAAC;QAEH,mEAAmE;QACnE,MAAM,gBAAgB,GAAG,aAAa,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;QAEnC,OAAO,gBAAgB,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,2BAA2B,CAAC,CAAC;QACrD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,gBAAwB,EACxB,YAAgC,EAChC,gBAAwB;IAExB,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC;QAC3F,MAAM,WAAW,GAAG,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;QACzG,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEzC,yEAAyE;QACzE,4EAA4E;QAC5E,IAAI,EAAc,CAAC;QACnB,IAAI,UAAsB,CAAC;QAE3B,IAAI,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,yBAAyB;YACzB,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACpE,UAAU,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;YAC7C,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,wEAAwE;YACxE,MAAM,SAAS,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC;YAC/C,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5B,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAC1E,KAAK,EACL,OAAO,CAAC,MAAM,EACd,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,EAChC,KAAK,EACL,CAAC,SAAS,CAAC,CACZ,CAAC,CAAC;QAEH,2DAA2D;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAC9E,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,EACvB,GAAG,EACH,UAAU,CAAC,MAAqB,CACjC,CAAC,CAAC;QAEH,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,2BAA2B,CAAC,CAAC;QACrD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Base64 encoding utilities for Nostr
|
|
3
3
|
* Provides consistent base64 encoding/decoding across all Nostr-related projects
|
|
4
|
+
* Uses browser-compatible APIs (no Node.js Buffer dependency)
|
|
4
5
|
*/
|
|
5
6
|
/**
|
|
6
7
|
* Convert string to base64
|
|
@@ -8,7 +9,8 @@
|
|
|
8
9
|
* @returns Base64 string
|
|
9
10
|
*/
|
|
10
11
|
export function stringToBase64(str) {
|
|
11
|
-
|
|
12
|
+
const bytes = new TextEncoder().encode(str);
|
|
13
|
+
return bytesToBase64(bytes);
|
|
12
14
|
}
|
|
13
15
|
/**
|
|
14
16
|
* Convert base64 to string
|
|
@@ -20,27 +22,28 @@ export function base64ToString(base64) {
|
|
|
20
22
|
if (!isValidBase64(base64)) {
|
|
21
23
|
throw new Error('Invalid base64 string');
|
|
22
24
|
}
|
|
23
|
-
|
|
25
|
+
const bytes = base64ToBytes(base64);
|
|
26
|
+
return new TextDecoder().decode(bytes);
|
|
24
27
|
}
|
|
25
28
|
/**
|
|
26
|
-
* Convert
|
|
27
|
-
* @param buffer
|
|
29
|
+
* Convert Uint8Array to base64
|
|
30
|
+
* @param buffer Uint8Array to convert
|
|
28
31
|
* @returns Base64 string
|
|
29
32
|
*/
|
|
30
33
|
export function bufferToBase64(buffer) {
|
|
31
|
-
return buffer
|
|
34
|
+
return bytesToBase64(buffer);
|
|
32
35
|
}
|
|
33
36
|
/**
|
|
34
|
-
* Convert base64 to
|
|
37
|
+
* Convert base64 to Uint8Array
|
|
35
38
|
* @param base64 Base64 string to convert
|
|
36
|
-
* @returns
|
|
39
|
+
* @returns Uint8Array
|
|
37
40
|
* @throws Error if base64 string is invalid
|
|
38
41
|
*/
|
|
39
42
|
export function base64ToBuffer(base64) {
|
|
40
43
|
if (!isValidBase64(base64)) {
|
|
41
44
|
throw new Error('Invalid base64 string');
|
|
42
45
|
}
|
|
43
|
-
return
|
|
46
|
+
return base64ToBytes(base64);
|
|
44
47
|
}
|
|
45
48
|
/**
|
|
46
49
|
* Check if string is valid base64
|
|
@@ -83,7 +86,11 @@ export function hexToBase64(hex) {
|
|
|
83
86
|
if (!hex.match(/^[0-9a-fA-F]*$/)) {
|
|
84
87
|
throw new Error('Invalid hex string');
|
|
85
88
|
}
|
|
86
|
-
|
|
89
|
+
const bytes = new Uint8Array(hex.length / 2);
|
|
90
|
+
for (let i = 0; i < hex.length; i += 2) {
|
|
91
|
+
bytes[i / 2] = parseInt(hex.substring(i, i + 2), 16);
|
|
92
|
+
}
|
|
93
|
+
return bytesToBase64(bytes);
|
|
87
94
|
}
|
|
88
95
|
/**
|
|
89
96
|
* Convert base64 to hex string
|
|
@@ -95,7 +102,8 @@ export function base64ToHex(base64) {
|
|
|
95
102
|
if (!isValidBase64(base64)) {
|
|
96
103
|
throw new Error('Invalid base64 string');
|
|
97
104
|
}
|
|
98
|
-
|
|
105
|
+
const bytes = base64ToBytes(base64);
|
|
106
|
+
return Array.from(bytes).map(b => b.toString(16).padStart(2, '0')).join('');
|
|
99
107
|
}
|
|
100
108
|
/**
|
|
101
109
|
* Create base64 string from byte array
|
|
@@ -103,7 +111,11 @@ export function base64ToHex(base64) {
|
|
|
103
111
|
* @returns Base64 string
|
|
104
112
|
*/
|
|
105
113
|
export function bytesToBase64(bytes) {
|
|
106
|
-
|
|
114
|
+
let binary = '';
|
|
115
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
116
|
+
binary += String.fromCharCode(bytes[i]);
|
|
117
|
+
}
|
|
118
|
+
return btoa(binary);
|
|
107
119
|
}
|
|
108
120
|
/**
|
|
109
121
|
* Convert base64 to byte array
|
|
@@ -115,7 +127,12 @@ export function base64ToBytes(base64) {
|
|
|
115
127
|
if (!isValidBase64(base64)) {
|
|
116
128
|
throw new Error('Invalid base64 string');
|
|
117
129
|
}
|
|
118
|
-
|
|
130
|
+
const binary = atob(base64);
|
|
131
|
+
const bytes = new Uint8Array(binary.length);
|
|
132
|
+
for (let i = 0; i < binary.length; i++) {
|
|
133
|
+
bytes[i] = binary.charCodeAt(i);
|
|
134
|
+
}
|
|
135
|
+
return bytes;
|
|
119
136
|
}
|
|
120
137
|
/**
|
|
121
138
|
* Calculate padded length for base64 string
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base64.js","sourceRoot":"","sources":["../../../src/encoding/base64.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"base64.js","sourceRoot":"","sources":["../../../src/encoding/base64.ts"],"names":[],"mappings":"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"}
|
package/dist/types/crypto.d.ts
CHANGED
|
@@ -88,21 +88,23 @@ export declare function validateKeyPair(keyPair: KeyPair): Promise<boolean>;
|
|
|
88
88
|
export declare function createEvent(event: Partial<NostrEvent>): NostrEvent;
|
|
89
89
|
/**
|
|
90
90
|
* Signs an event
|
|
91
|
+
* @param event - Event to sign
|
|
92
|
+
* @param privateKey - Private key as hex string or Uint8Array
|
|
91
93
|
*/
|
|
92
|
-
export declare function signEvent(event: NostrEvent, privateKey: string): Promise<SignedNostrEvent>;
|
|
94
|
+
export declare function signEvent(event: NostrEvent, privateKey: string | Uint8Array): Promise<SignedNostrEvent>;
|
|
93
95
|
/**
|
|
94
|
-
* Gets a public key hex string from a private key
|
|
95
|
-
* @param privateKey -
|
|
96
|
+
* Gets a public key hex string from a private key (synchronous)
|
|
97
|
+
* @param privateKey - Private key as hex string or Uint8Array
|
|
96
98
|
* @returns Hex-encoded public key (32-byte x-only schnorr key)
|
|
97
99
|
*/
|
|
98
|
-
export declare function getPublicKeySync(privateKey: string): string;
|
|
100
|
+
export declare function getPublicKeySync(privateKey: string | Uint8Array): string;
|
|
99
101
|
/**
|
|
100
102
|
* Creates, hashes, and signs a Nostr event in one step
|
|
101
103
|
* @param event - Partial event (kind, content, tags required; pubkey derived if missing)
|
|
102
|
-
* @param privateKey -
|
|
104
|
+
* @param privateKey - Private key as hex string or Uint8Array
|
|
103
105
|
* @returns Fully signed event with id, pubkey, and sig
|
|
104
106
|
*/
|
|
105
|
-
export declare function finalizeEvent(event: Partial<NostrEvent>, privateKey: string): Promise<SignedNostrEvent>;
|
|
107
|
+
export declare function finalizeEvent(event: Partial<NostrEvent>, privateKey: string | Uint8Array): Promise<SignedNostrEvent>;
|
|
106
108
|
/**
|
|
107
109
|
* Verifies an event signature
|
|
108
110
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAKnG;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE;QACN,WAAW,CACT,SAAS,EAAE,qBAAqB,GAAG,cAAc,EACjD,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,SAAS,QAAQ,EAAE,GAC7B,OAAO,CAAC,aAAa,CAAC,CAAC;QAC1B,SAAS,CACP,MAAM,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,EAChC,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,qBAAqB,GAAG,iBAAiB,GAAG,eAAe,EACtE,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,SAAS,QAAQ,EAAE,GAC7B,OAAO,CAAC,SAAS,CAAC,CAAC;QACtB,OAAO,CACL,SAAS,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,UAAU,CAAA;SAAE,EAC3C,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,WAAW,CAAC,CAAC;QACxB,OAAO,CACL,SAAS,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,UAAU,CAAA;SAAE,EAC3C,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,WAAW,CAAC,CAAC;KACzB,CAAC;IACF,eAAe,CAAC,CAAC,SAAS,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;CACtH;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,MAAM,EAAE,YAAY,CAAC;KACtB;IACD,UAAU,MAAM;QACd,MAAM,EAAE,YAAY,CAAC;KACtB;CACF;AAsBD;;GAEG;AACH,cAAM,YAAY;IAChB,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,WAAW,CAAgB;;YAMrB,UAAU;YAIV,iBAAiB;IAQzB,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAK5C,eAAe,CAAC,CAAC,SAAS,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAIpI;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC;AAG/C,eAAO,MAAM,WAAW,2JAAe,CAAC;AACxC,eAAO,MAAM,sBAAsB,qJAAiB,CAAC;AAErD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,eAAe,EAAE,UAAU,GAAG,UAAU,CAE9E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,eAAe,EAAE,UAAU,GAAG,UAAU,CAE3E;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAUxD;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAYhF;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAQxE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAUlE;
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Base64 encoding utilities for Nostr
|
|
3
3
|
* Provides consistent base64 encoding/decoding across all Nostr-related projects
|
|
4
|
+
* Uses browser-compatible APIs (no Node.js Buffer dependency)
|
|
4
5
|
*/
|
|
5
6
|
/**
|
|
6
7
|
* Convert string to base64
|
|
@@ -16,18 +17,18 @@ export declare function stringToBase64(str: string): string;
|
|
|
16
17
|
*/
|
|
17
18
|
export declare function base64ToString(base64: string): string;
|
|
18
19
|
/**
|
|
19
|
-
* Convert
|
|
20
|
-
* @param buffer
|
|
20
|
+
* Convert Uint8Array to base64
|
|
21
|
+
* @param buffer Uint8Array to convert
|
|
21
22
|
* @returns Base64 string
|
|
22
23
|
*/
|
|
23
|
-
export declare function bufferToBase64(buffer:
|
|
24
|
+
export declare function bufferToBase64(buffer: Uint8Array): string;
|
|
24
25
|
/**
|
|
25
|
-
* Convert base64 to
|
|
26
|
+
* Convert base64 to Uint8Array
|
|
26
27
|
* @param base64 Base64 string to convert
|
|
27
|
-
* @returns
|
|
28
|
+
* @returns Uint8Array
|
|
28
29
|
* @throws Error if base64 string is invalid
|
|
29
30
|
*/
|
|
30
|
-
export declare function base64ToBuffer(base64: string):
|
|
31
|
+
export declare function base64ToBuffer(base64: string): Uint8Array;
|
|
31
32
|
/**
|
|
32
33
|
* Check if string is valid base64
|
|
33
34
|
* @param base64 String to check
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../../../src/encoding/base64.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../../../src/encoding/base64.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGlD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMrD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAKzD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAMrD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAIvD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAS/C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAMvD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAUxD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGvD"}
|
package/package.json
CHANGED
package/src/crypto.ts
CHANGED
|
@@ -205,11 +205,25 @@ export function createEvent(event: Partial<NostrEvent>): NostrEvent {
|
|
|
205
205
|
} as NostrEvent;
|
|
206
206
|
}
|
|
207
207
|
|
|
208
|
+
/**
|
|
209
|
+
* Normalize a private key to hex string (accepts both hex string and Uint8Array)
|
|
210
|
+
*/
|
|
211
|
+
function normalizePrivateKey(privateKey: string | Uint8Array): string {
|
|
212
|
+
if (privateKey instanceof Uint8Array) {
|
|
213
|
+
return bytesToHex(privateKey);
|
|
214
|
+
}
|
|
215
|
+
return privateKey;
|
|
216
|
+
}
|
|
217
|
+
|
|
208
218
|
/**
|
|
209
219
|
* Signs an event
|
|
220
|
+
* @param event - Event to sign
|
|
221
|
+
* @param privateKey - Private key as hex string or Uint8Array
|
|
210
222
|
*/
|
|
211
|
-
export async function signEvent(event: NostrEvent, privateKey: string): Promise<SignedNostrEvent> {
|
|
223
|
+
export async function signEvent(event: NostrEvent, privateKey: string | Uint8Array): Promise<SignedNostrEvent> {
|
|
212
224
|
try {
|
|
225
|
+
const privateKeyHex = normalizePrivateKey(privateKey);
|
|
226
|
+
|
|
213
227
|
// Serialize event for signing (NIP-01 format)
|
|
214
228
|
const serialized = JSON.stringify([
|
|
215
229
|
0,
|
|
@@ -224,7 +238,7 @@ export async function signEvent(event: NostrEvent, privateKey: string): Promise<
|
|
|
224
238
|
const eventHash = sha256(new TextEncoder().encode(serialized));
|
|
225
239
|
|
|
226
240
|
// Convert private key to bytes and sign
|
|
227
|
-
const privateKeyBytes = hexToBytes(
|
|
241
|
+
const privateKeyBytes = hexToBytes(privateKeyHex);
|
|
228
242
|
const signatureBytes = schnorr.sign(eventHash, privateKeyBytes);
|
|
229
243
|
|
|
230
244
|
// Create signed event
|
|
@@ -240,12 +254,14 @@ export async function signEvent(event: NostrEvent, privateKey: string): Promise<
|
|
|
240
254
|
}
|
|
241
255
|
|
|
242
256
|
/**
|
|
243
|
-
* Gets a public key hex string from a private key
|
|
244
|
-
* @param privateKey -
|
|
257
|
+
* Gets a public key hex string from a private key (synchronous)
|
|
258
|
+
* @param privateKey - Private key as hex string or Uint8Array
|
|
245
259
|
* @returns Hex-encoded public key (32-byte x-only schnorr key)
|
|
246
260
|
*/
|
|
247
|
-
export function getPublicKeySync(privateKey: string): string {
|
|
248
|
-
const privateKeyBytes =
|
|
261
|
+
export function getPublicKeySync(privateKey: string | Uint8Array): string {
|
|
262
|
+
const privateKeyBytes = privateKey instanceof Uint8Array
|
|
263
|
+
? privateKey
|
|
264
|
+
: hexToBytes(privateKey);
|
|
249
265
|
const publicKeyBytes = schnorr.getPublicKey(privateKeyBytes);
|
|
250
266
|
return bytesToHex(publicKeyBytes);
|
|
251
267
|
}
|
|
@@ -253,12 +269,12 @@ export function getPublicKeySync(privateKey: string): string {
|
|
|
253
269
|
/**
|
|
254
270
|
* Creates, hashes, and signs a Nostr event in one step
|
|
255
271
|
* @param event - Partial event (kind, content, tags required; pubkey derived if missing)
|
|
256
|
-
* @param privateKey -
|
|
272
|
+
* @param privateKey - Private key as hex string or Uint8Array
|
|
257
273
|
* @returns Fully signed event with id, pubkey, and sig
|
|
258
274
|
*/
|
|
259
275
|
export async function finalizeEvent(
|
|
260
276
|
event: Partial<NostrEvent>,
|
|
261
|
-
privateKey: string
|
|
277
|
+
privateKey: string | Uint8Array
|
|
262
278
|
): Promise<SignedNostrEvent> {
|
|
263
279
|
const pubkey = event.pubkey || getPublicKeySync(privateKey);
|
|
264
280
|
const timestamp = event.created_at || Math.floor(Date.now() / 1000);
|