nostr-double-ratchet 0.0.12 → 0.0.13
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/Invite.d.ts +3 -3
- package/dist/Invite.d.ts.map +1 -1
- package/dist/UserRecord.d.ts +1 -0
- package/dist/UserRecord.d.ts.map +1 -0
- package/dist/nostr-double-ratchet.es.js +844 -844
- package/dist/nostr-double-ratchet.umd.js +1 -1
- package/package.json +1 -1
- package/src/Invite.ts +27 -27
- package/src/UserRecord.ts +0 -0
|
@@ -33,17 +33,17 @@ const Et = typeof globalThis == "object" && "crypto" in globalThis ? globalThis.
|
|
|
33
33
|
const Vn = (e) => e instanceof Uint8Array, xt = (e) => new DataView(e.buffer, e.byteOffset, e.byteLength), re = (e, t) => e << 32 - t | e >>> t, xi = new Uint8Array(new Uint32Array([287454020]).buffer)[0] === 68;
|
|
34
34
|
if (!xi)
|
|
35
35
|
throw new Error("Non little-endian hardware is not supported");
|
|
36
|
-
function
|
|
36
|
+
function Ai(e) {
|
|
37
37
|
if (typeof e != "string")
|
|
38
38
|
throw new Error(`utf8ToBytes expected string, got ${typeof e}`);
|
|
39
39
|
return new Uint8Array(new TextEncoder().encode(e));
|
|
40
40
|
}
|
|
41
41
|
function Wt(e) {
|
|
42
|
-
if (typeof e == "string" && (e =
|
|
42
|
+
if (typeof e == "string" && (e = Ai(e)), !Vn(e))
|
|
43
43
|
throw new Error(`expected Uint8Array, got ${typeof e}`);
|
|
44
44
|
return e;
|
|
45
45
|
}
|
|
46
|
-
function
|
|
46
|
+
function Si(...e) {
|
|
47
47
|
const t = new Uint8Array(e.reduce((r, i) => r + i.length, 0));
|
|
48
48
|
let n = 0;
|
|
49
49
|
return e.forEach((r) => {
|
|
@@ -70,8 +70,8 @@ function Zn(e = 32) {
|
|
|
70
70
|
function Ki(e, t, n, r) {
|
|
71
71
|
if (typeof e.setBigUint64 == "function")
|
|
72
72
|
return e.setBigUint64(t, n, r);
|
|
73
|
-
const i = BigInt(32),
|
|
74
|
-
e.setUint32(t + c,
|
|
73
|
+
const i = BigInt(32), o = BigInt(4294967295), s = Number(n >> i & o), a = Number(n & o), c = r ? 4 : 0, u = r ? 0 : 4;
|
|
74
|
+
e.setUint32(t + c, s, r), e.setUint32(t + u, a, r);
|
|
75
75
|
}
|
|
76
76
|
let ki = class extends Wn {
|
|
77
77
|
constructor(t, n, r, i) {
|
|
@@ -81,35 +81,35 @@ let ki = class extends Wn {
|
|
|
81
81
|
et(this);
|
|
82
82
|
const { view: n, buffer: r, blockLen: i } = this;
|
|
83
83
|
t = Wt(t);
|
|
84
|
-
const
|
|
85
|
-
for (let
|
|
86
|
-
const a = Math.min(i - this.pos,
|
|
84
|
+
const o = t.length;
|
|
85
|
+
for (let s = 0; s < o; ) {
|
|
86
|
+
const a = Math.min(i - this.pos, o - s);
|
|
87
87
|
if (a === i) {
|
|
88
88
|
const c = xt(t);
|
|
89
|
-
for (; i <=
|
|
90
|
-
this.process(c,
|
|
89
|
+
for (; i <= o - s; s += i)
|
|
90
|
+
this.process(c, s);
|
|
91
91
|
continue;
|
|
92
92
|
}
|
|
93
|
-
r.set(t.subarray(
|
|
93
|
+
r.set(t.subarray(s, s + a), this.pos), this.pos += a, s += a, this.pos === i && (this.process(n, 0), this.pos = 0);
|
|
94
94
|
}
|
|
95
95
|
return this.length += t.length, this.roundClean(), this;
|
|
96
96
|
}
|
|
97
97
|
digestInto(t) {
|
|
98
98
|
et(this), Ei(t, this), this.finished = !0;
|
|
99
|
-
const { buffer: n, view: r, blockLen: i, isLE:
|
|
100
|
-
let { pos:
|
|
101
|
-
n[
|
|
102
|
-
for (let
|
|
103
|
-
n[
|
|
104
|
-
Ki(r, i - 8, BigInt(this.length * 8),
|
|
99
|
+
const { buffer: n, view: r, blockLen: i, isLE: o } = this;
|
|
100
|
+
let { pos: s } = this;
|
|
101
|
+
n[s++] = 128, this.buffer.subarray(s).fill(0), this.padOffset > i - s && (this.process(r, 0), s = 0);
|
|
102
|
+
for (let l = s; l < i; l++)
|
|
103
|
+
n[l] = 0;
|
|
104
|
+
Ki(r, i - 8, BigInt(this.length * 8), o), this.process(r, 0);
|
|
105
105
|
const a = xt(t), c = this.outputLen;
|
|
106
106
|
if (c % 4)
|
|
107
107
|
throw new Error("_sha2: outputLen should be aligned to 32bit");
|
|
108
|
-
const
|
|
109
|
-
if (
|
|
108
|
+
const u = c / 4, f = this.get();
|
|
109
|
+
if (u > f.length)
|
|
110
110
|
throw new Error("_sha2: outputLen bigger than state");
|
|
111
|
-
for (let
|
|
112
|
-
a.setUint32(4 *
|
|
111
|
+
for (let l = 0; l < u; l++)
|
|
112
|
+
a.setUint32(4 * l, f[l], o);
|
|
113
113
|
}
|
|
114
114
|
digest() {
|
|
115
115
|
const { buffer: t, outputLen: n } = this;
|
|
@@ -119,8 +119,8 @@ let ki = class extends Wn {
|
|
|
119
119
|
}
|
|
120
120
|
_cloneInto(t) {
|
|
121
121
|
t || (t = new this.constructor()), t.set(...this.get());
|
|
122
|
-
const { blockLen: n, buffer: r, length: i, finished:
|
|
123
|
-
return t.length = i, t.pos = a, t.finished =
|
|
122
|
+
const { blockLen: n, buffer: r, length: i, finished: o, destroyed: s, pos: a } = this;
|
|
123
|
+
return t.length = i, t.pos = a, t.finished = o, t.destroyed = s, i % n && t.buffer.set(r), t;
|
|
124
124
|
}
|
|
125
125
|
};
|
|
126
126
|
const Bi = (e, t, n) => e & t ^ ~e & n, Ci = (e, t, n) => e & t ^ e & n ^ t & n, Ui = /* @__PURE__ */ new Uint32Array([
|
|
@@ -203,26 +203,26 @@ let _i = class extends ki {
|
|
|
203
203
|
super(64, 32, 8, !1), this.A = be[0] | 0, this.B = be[1] | 0, this.C = be[2] | 0, this.D = be[3] | 0, this.E = be[4] | 0, this.F = be[5] | 0, this.G = be[6] | 0, this.H = be[7] | 0;
|
|
204
204
|
}
|
|
205
205
|
get() {
|
|
206
|
-
const { A: t, B: n, C: r, D: i, E:
|
|
207
|
-
return [t, n, r, i,
|
|
206
|
+
const { A: t, B: n, C: r, D: i, E: o, F: s, G: a, H: c } = this;
|
|
207
|
+
return [t, n, r, i, o, s, a, c];
|
|
208
208
|
}
|
|
209
209
|
// prettier-ignore
|
|
210
|
-
set(t, n, r, i,
|
|
211
|
-
this.A = t | 0, this.B = n | 0, this.C = r | 0, this.D = i | 0, this.E =
|
|
210
|
+
set(t, n, r, i, o, s, a, c) {
|
|
211
|
+
this.A = t | 0, this.B = n | 0, this.C = r | 0, this.D = i | 0, this.E = o | 0, this.F = s | 0, this.G = a | 0, this.H = c | 0;
|
|
212
212
|
}
|
|
213
213
|
process(t, n) {
|
|
214
|
-
for (let
|
|
215
|
-
ve[
|
|
216
|
-
for (let
|
|
217
|
-
const g = ve[
|
|
218
|
-
ve[
|
|
214
|
+
for (let l = 0; l < 16; l++, n += 4)
|
|
215
|
+
ve[l] = t.getUint32(n, !1);
|
|
216
|
+
for (let l = 16; l < 64; l++) {
|
|
217
|
+
const g = ve[l - 15], b = ve[l - 2], p = re(g, 7) ^ re(g, 18) ^ g >>> 3, h = re(b, 17) ^ re(b, 19) ^ b >>> 10;
|
|
218
|
+
ve[l] = h + ve[l - 7] + p + ve[l - 16] | 0;
|
|
219
219
|
}
|
|
220
|
-
let { A: r, B: i, C:
|
|
221
|
-
for (let
|
|
222
|
-
const g = re(a, 6) ^ re(a, 11) ^ re(a, 25), b = f + g + Bi(a, c,
|
|
223
|
-
f =
|
|
220
|
+
let { A: r, B: i, C: o, D: s, E: a, F: c, G: u, H: f } = this;
|
|
221
|
+
for (let l = 0; l < 64; l++) {
|
|
222
|
+
const g = re(a, 6) ^ re(a, 11) ^ re(a, 25), b = f + g + Bi(a, c, u) + Ui[l] + ve[l] | 0, h = (re(r, 2) ^ re(r, 13) ^ re(r, 22)) + Ci(r, i, o) | 0;
|
|
223
|
+
f = u, u = c, c = a, a = s + b | 0, s = o, o = i, i = r, r = b + h | 0;
|
|
224
224
|
}
|
|
225
|
-
r = r + this.A | 0, i = i + this.B | 0,
|
|
225
|
+
r = r + this.A | 0, i = i + this.B | 0, o = o + this.C | 0, s = s + this.D | 0, a = a + this.E | 0, c = c + this.F | 0, u = u + this.G | 0, f = f + this.H | 0, this.set(r, i, o, s, a, c, u, f);
|
|
226
226
|
}
|
|
227
227
|
roundClean() {
|
|
228
228
|
ve.fill(0);
|
|
@@ -233,7 +233,7 @@ let _i = class extends ki {
|
|
|
233
233
|
};
|
|
234
234
|
const Lt = /* @__PURE__ */ Ni(() => new _i());
|
|
235
235
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
236
|
-
const Gn = BigInt(0),
|
|
236
|
+
const Gn = BigInt(0), st = BigInt(1), Ii = BigInt(2), at = (e) => e instanceof Uint8Array, Li = /* @__PURE__ */ Array.from({ length: 256 }, (e, t) => t.toString(16).padStart(2, "0"));
|
|
237
237
|
function qe(e) {
|
|
238
238
|
if (!at(e))
|
|
239
239
|
throw new Error("Uint8Array expected");
|
|
@@ -259,10 +259,10 @@ function De(e) {
|
|
|
259
259
|
throw new Error("padded hex string expected, got unpadded hex of length " + t);
|
|
260
260
|
const n = new Uint8Array(t / 2);
|
|
261
261
|
for (let r = 0; r < n.length; r++) {
|
|
262
|
-
const i = r * 2,
|
|
263
|
-
if (Number.isNaN(
|
|
262
|
+
const i = r * 2, o = e.slice(i, i + 2), s = Number.parseInt(o, 16);
|
|
263
|
+
if (Number.isNaN(s) || s < 0)
|
|
264
264
|
throw new Error("Invalid byte sequence");
|
|
265
|
-
n[r] =
|
|
265
|
+
n[r] = s;
|
|
266
266
|
}
|
|
267
267
|
return n;
|
|
268
268
|
}
|
|
@@ -274,11 +274,11 @@ function Gt(e) {
|
|
|
274
274
|
throw new Error("Uint8Array expected");
|
|
275
275
|
return Zt(qe(Uint8Array.from(e).reverse()));
|
|
276
276
|
}
|
|
277
|
-
function
|
|
277
|
+
function Se(e, t) {
|
|
278
278
|
return De(e.toString(16).padStart(t * 2, "0"));
|
|
279
279
|
}
|
|
280
280
|
function Ft(e, t) {
|
|
281
|
-
return
|
|
281
|
+
return Se(e, t).reverse();
|
|
282
282
|
}
|
|
283
283
|
function $i(e) {
|
|
284
284
|
return De(Fn(e));
|
|
@@ -288,8 +288,8 @@ function W(e, t, n) {
|
|
|
288
288
|
if (typeof t == "string")
|
|
289
289
|
try {
|
|
290
290
|
r = De(t);
|
|
291
|
-
} catch (
|
|
292
|
-
throw new Error(`${e} must be valid hex string, got "${t}". Cause: ${
|
|
291
|
+
} catch (o) {
|
|
292
|
+
throw new Error(`${e} must be valid hex string, got "${t}". Cause: ${o}`);
|
|
293
293
|
}
|
|
294
294
|
else if (at(t))
|
|
295
295
|
r = Uint8Array.from(t);
|
|
@@ -324,14 +324,14 @@ function Ri(e) {
|
|
|
324
324
|
}
|
|
325
325
|
function Oi(e) {
|
|
326
326
|
let t;
|
|
327
|
-
for (t = 0; e > Gn; e >>=
|
|
327
|
+
for (t = 0; e > Gn; e >>= st, t += 1)
|
|
328
328
|
;
|
|
329
329
|
return t;
|
|
330
330
|
}
|
|
331
331
|
function Mi(e, t) {
|
|
332
|
-
return e >> BigInt(t) &
|
|
332
|
+
return e >> BigInt(t) & st;
|
|
333
333
|
}
|
|
334
|
-
const Hi = (e, t, n) => e | (n ?
|
|
334
|
+
const Hi = (e, t, n) => e | (n ? st : Gn) << BigInt(t), Jt = (e) => (Ii << BigInt(e - 1)) - st, At = (e) => new Uint8Array(e), kn = (e) => Uint8Array.from(e);
|
|
335
335
|
function Jn(e, t, n) {
|
|
336
336
|
if (typeof e != "number" || e < 2)
|
|
337
337
|
throw new Error("hashLen must be a number");
|
|
@@ -339,29 +339,29 @@ function Jn(e, t, n) {
|
|
|
339
339
|
throw new Error("qByteLen must be a number");
|
|
340
340
|
if (typeof n != "function")
|
|
341
341
|
throw new Error("hmacFn must be a function");
|
|
342
|
-
let r =
|
|
343
|
-
const
|
|
344
|
-
r.fill(1), i.fill(0),
|
|
345
|
-
}, a = (...
|
|
346
|
-
i = a(kn([0]),
|
|
347
|
-
},
|
|
348
|
-
if (
|
|
342
|
+
let r = At(e), i = At(e), o = 0;
|
|
343
|
+
const s = () => {
|
|
344
|
+
r.fill(1), i.fill(0), o = 0;
|
|
345
|
+
}, a = (...l) => n(i, r, ...l), c = (l = At()) => {
|
|
346
|
+
i = a(kn([0]), l), r = a(), l.length !== 0 && (i = a(kn([1]), l), r = a());
|
|
347
|
+
}, u = () => {
|
|
348
|
+
if (o++ >= 1e3)
|
|
349
349
|
throw new Error("drbg: tried 1000 values");
|
|
350
|
-
let
|
|
350
|
+
let l = 0;
|
|
351
351
|
const g = [];
|
|
352
|
-
for (;
|
|
352
|
+
for (; l < t; ) {
|
|
353
353
|
r = a();
|
|
354
354
|
const b = r.slice();
|
|
355
|
-
g.push(b),
|
|
355
|
+
g.push(b), l += r.length;
|
|
356
356
|
}
|
|
357
357
|
return Ue(...g);
|
|
358
358
|
};
|
|
359
|
-
return (
|
|
360
|
-
|
|
359
|
+
return (l, g) => {
|
|
360
|
+
s(), c(l);
|
|
361
361
|
let b;
|
|
362
|
-
for (; !(b = g(
|
|
362
|
+
for (; !(b = g(u())); )
|
|
363
363
|
c();
|
|
364
|
-
return
|
|
364
|
+
return s(), b;
|
|
365
365
|
};
|
|
366
366
|
}
|
|
367
367
|
const Pi = {
|
|
@@ -376,18 +376,18 @@ const Pi = {
|
|
|
376
376
|
hash: (e) => typeof e == "function" && Number.isSafeInteger(e.outputLen)
|
|
377
377
|
};
|
|
378
378
|
function Je(e, t, n = {}) {
|
|
379
|
-
const r = (i,
|
|
380
|
-
const a = Pi[
|
|
379
|
+
const r = (i, o, s) => {
|
|
380
|
+
const a = Pi[o];
|
|
381
381
|
if (typeof a != "function")
|
|
382
|
-
throw new Error(`Invalid validator "${
|
|
382
|
+
throw new Error(`Invalid validator "${o}", expected function`);
|
|
383
383
|
const c = e[i];
|
|
384
|
-
if (!(
|
|
385
|
-
throw new Error(`Invalid param ${String(i)}=${c} (${typeof c}), expected ${
|
|
384
|
+
if (!(s && c === void 0) && !a(c, e))
|
|
385
|
+
throw new Error(`Invalid param ${String(i)}=${c} (${typeof c}), expected ${o}`);
|
|
386
386
|
};
|
|
387
|
-
for (const [i,
|
|
388
|
-
r(i,
|
|
389
|
-
for (const [i,
|
|
390
|
-
r(i,
|
|
387
|
+
for (const [i, o] of Object.entries(t))
|
|
388
|
+
r(i, o, !1);
|
|
389
|
+
for (const [i, o] of Object.entries(n))
|
|
390
|
+
r(i, o, !0);
|
|
391
391
|
return e;
|
|
392
392
|
}
|
|
393
393
|
const qi = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
@@ -405,7 +405,7 @@ const qi = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
|
405
405
|
equalBytes: Ti,
|
|
406
406
|
hexToBytes: De,
|
|
407
407
|
hexToNumber: Zt,
|
|
408
|
-
numberToBytesBE:
|
|
408
|
+
numberToBytesBE: Se,
|
|
409
409
|
numberToBytesLE: Ft,
|
|
410
410
|
numberToHexUnpadded: Fn,
|
|
411
411
|
numberToVarBytesBE: $i,
|
|
@@ -439,10 +439,10 @@ function J(e, t, n) {
|
|
|
439
439
|
function Tt(e, t) {
|
|
440
440
|
if (e === z || t <= z)
|
|
441
441
|
throw new Error(`invert: expected positive integers, got n=${e} mod=${t}`);
|
|
442
|
-
let n = V(e, t), r = t, i = z,
|
|
442
|
+
let n = V(e, t), r = t, i = z, o = D;
|
|
443
443
|
for (; n !== z; ) {
|
|
444
|
-
const a = r / n, c = r % n,
|
|
445
|
-
r = n, n = c, i =
|
|
444
|
+
const a = r / n, c = r % n, u = i - o * a;
|
|
445
|
+
r = n, n = c, i = o, o = u;
|
|
446
446
|
}
|
|
447
447
|
if (r !== D)
|
|
448
448
|
throw new Error("invert: does not exist");
|
|
@@ -456,48 +456,48 @@ function zi(e) {
|
|
|
456
456
|
for (i = ke; i < e && ji(i, t, e) !== e - D; i++)
|
|
457
457
|
;
|
|
458
458
|
if (r === 1) {
|
|
459
|
-
const
|
|
460
|
-
return function(c,
|
|
461
|
-
const f = c.pow(
|
|
462
|
-
if (!c.eql(c.sqr(f),
|
|
459
|
+
const s = (e + D) / $t;
|
|
460
|
+
return function(c, u) {
|
|
461
|
+
const f = c.pow(u, s);
|
|
462
|
+
if (!c.eql(c.sqr(f), u))
|
|
463
463
|
throw new Error("Cannot find square root");
|
|
464
464
|
return f;
|
|
465
465
|
};
|
|
466
466
|
}
|
|
467
|
-
const
|
|
467
|
+
const o = (n + D) / ke;
|
|
468
468
|
return function(a, c) {
|
|
469
469
|
if (a.pow(c, t) === a.neg(a.ONE))
|
|
470
470
|
throw new Error("Cannot find square root");
|
|
471
|
-
let
|
|
471
|
+
let u = r, f = a.pow(a.mul(a.ONE, i), n), l = a.pow(c, o), g = a.pow(c, n);
|
|
472
472
|
for (; !a.eql(g, a.ONE); ) {
|
|
473
473
|
if (a.eql(g, a.ZERO))
|
|
474
474
|
return a.ZERO;
|
|
475
475
|
let b = 1;
|
|
476
|
-
for (let h = a.sqr(g); b <
|
|
476
|
+
for (let h = a.sqr(g); b < u && !a.eql(h, a.ONE); b++)
|
|
477
477
|
h = a.sqr(h);
|
|
478
|
-
const p = a.pow(f, D << BigInt(
|
|
479
|
-
f = a.sqr(p),
|
|
478
|
+
const p = a.pow(f, D << BigInt(u - b - 1));
|
|
479
|
+
f = a.sqr(p), l = a.mul(l, p), g = a.mul(g, f), u = b;
|
|
480
480
|
}
|
|
481
|
-
return
|
|
481
|
+
return l;
|
|
482
482
|
};
|
|
483
483
|
}
|
|
484
484
|
function Vi(e) {
|
|
485
485
|
if (e % $t === Di) {
|
|
486
486
|
const t = (e + D) / $t;
|
|
487
487
|
return function(r, i) {
|
|
488
|
-
const
|
|
489
|
-
if (!r.eql(r.sqr(
|
|
488
|
+
const o = r.pow(i, t);
|
|
489
|
+
if (!r.eql(r.sqr(o), i))
|
|
490
490
|
throw new Error("Cannot find square root");
|
|
491
|
-
return
|
|
491
|
+
return o;
|
|
492
492
|
};
|
|
493
493
|
}
|
|
494
494
|
if (e % Cn === Bn) {
|
|
495
495
|
const t = (e - Bn) / Cn;
|
|
496
496
|
return function(r, i) {
|
|
497
|
-
const
|
|
498
|
-
if (!r.eql(r.sqr(
|
|
497
|
+
const o = r.mul(i, ke), s = r.pow(o, t), a = r.mul(i, s), c = r.mul(r.mul(a, ke), s), u = r.mul(a, r.sub(c, r.ONE));
|
|
498
|
+
if (!r.eql(r.sqr(u), i))
|
|
499
499
|
throw new Error("Cannot find square root");
|
|
500
|
-
return
|
|
500
|
+
return u;
|
|
501
501
|
};
|
|
502
502
|
}
|
|
503
503
|
return zi(e);
|
|
@@ -543,8 +543,8 @@ function Gi(e, t, n) {
|
|
|
543
543
|
return r;
|
|
544
544
|
}
|
|
545
545
|
function Fi(e, t) {
|
|
546
|
-
const n = new Array(t.length), r = t.reduce((
|
|
547
|
-
return t.reduceRight((
|
|
546
|
+
const n = new Array(t.length), r = t.reduce((o, s, a) => e.is0(s) ? o : (n[a] = o, e.mul(o, s)), e.ONE), i = e.inv(r);
|
|
547
|
+
return t.reduceRight((o, s, a) => e.is0(s) ? o : (n[a] = e.mul(o, n[a]), e.mul(o, s)), i), n;
|
|
548
548
|
}
|
|
549
549
|
function Yn(e, t) {
|
|
550
550
|
const n = t !== void 0 ? t : e.toString(2).length, r = Math.ceil(n / 8);
|
|
@@ -553,13 +553,13 @@ function Yn(e, t) {
|
|
|
553
553
|
function Ji(e, t, n = !1, r = {}) {
|
|
554
554
|
if (e <= z)
|
|
555
555
|
throw new Error(`Expected Field ORDER > 0, got ${e}`);
|
|
556
|
-
const { nBitLength: i, nByteLength:
|
|
557
|
-
if (
|
|
556
|
+
const { nBitLength: i, nByteLength: o } = Yn(e, t);
|
|
557
|
+
if (o > 2048)
|
|
558
558
|
throw new Error("Field lengths over 2048 bytes are not supported");
|
|
559
|
-
const
|
|
559
|
+
const s = Vi(e), a = Object.freeze({
|
|
560
560
|
ORDER: e,
|
|
561
561
|
BITS: i,
|
|
562
|
-
BYTES:
|
|
562
|
+
BYTES: o,
|
|
563
563
|
MASK: Jt(i),
|
|
564
564
|
ZERO: z,
|
|
565
565
|
ONE: D,
|
|
@@ -572,28 +572,28 @@ function Ji(e, t, n = !1, r = {}) {
|
|
|
572
572
|
is0: (c) => c === z,
|
|
573
573
|
isOdd: (c) => (c & D) === D,
|
|
574
574
|
neg: (c) => V(-c, e),
|
|
575
|
-
eql: (c,
|
|
575
|
+
eql: (c, u) => c === u,
|
|
576
576
|
sqr: (c) => V(c * c, e),
|
|
577
|
-
add: (c,
|
|
578
|
-
sub: (c,
|
|
579
|
-
mul: (c,
|
|
580
|
-
pow: (c,
|
|
581
|
-
div: (c,
|
|
577
|
+
add: (c, u) => V(c + u, e),
|
|
578
|
+
sub: (c, u) => V(c - u, e),
|
|
579
|
+
mul: (c, u) => V(c * u, e),
|
|
580
|
+
pow: (c, u) => Gi(a, c, u),
|
|
581
|
+
div: (c, u) => V(c * Tt(u, e), e),
|
|
582
582
|
// Same as above, but doesn't normalize
|
|
583
583
|
sqrN: (c) => c * c,
|
|
584
|
-
addN: (c,
|
|
585
|
-
subN: (c,
|
|
586
|
-
mulN: (c,
|
|
584
|
+
addN: (c, u) => c + u,
|
|
585
|
+
subN: (c, u) => c - u,
|
|
586
|
+
mulN: (c, u) => c * u,
|
|
587
587
|
inv: (c) => Tt(c, e),
|
|
588
|
-
sqrt: r.sqrt || ((c) =>
|
|
588
|
+
sqrt: r.sqrt || ((c) => s(a, c)),
|
|
589
589
|
invertBatch: (c) => Fi(a, c),
|
|
590
590
|
// TODO: do we really need constant cmov?
|
|
591
591
|
// We don't have const-time bigints anyway, so probably will be not very useful
|
|
592
|
-
cmov: (c,
|
|
593
|
-
toBytes: (c) => n ? Ft(c,
|
|
592
|
+
cmov: (c, u, f) => f ? u : c,
|
|
593
|
+
toBytes: (c) => n ? Ft(c, o) : Se(c, o),
|
|
594
594
|
fromBytes: (c) => {
|
|
595
|
-
if (c.length !==
|
|
596
|
-
throw new Error(`Fp.fromBytes: expected ${
|
|
595
|
+
if (c.length !== o)
|
|
596
|
+
throw new Error(`Fp.fromBytes: expected ${o}, got ${c.length}`);
|
|
597
597
|
return n ? Gt(c) : F(c);
|
|
598
598
|
}
|
|
599
599
|
});
|
|
@@ -610,30 +610,30 @@ function Qn(e) {
|
|
|
610
610
|
return t + Math.ceil(t / 2);
|
|
611
611
|
}
|
|
612
612
|
function Yi(e, t, n = !1) {
|
|
613
|
-
const r = e.length, i = Xn(t),
|
|
614
|
-
if (r < 16 || r <
|
|
615
|
-
throw new Error(`expected ${
|
|
616
|
-
const
|
|
617
|
-
return n ? Ft(a, i) :
|
|
613
|
+
const r = e.length, i = Xn(t), o = Qn(t);
|
|
614
|
+
if (r < 16 || r < o || r > 1024)
|
|
615
|
+
throw new Error(`expected ${o}-1024 bytes of input, got ${r}`);
|
|
616
|
+
const s = n ? F(e) : Gt(e), a = V(s, t - D) + D;
|
|
617
|
+
return n ? Ft(a, i) : Se(a, i);
|
|
618
618
|
}
|
|
619
619
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
620
|
-
const Xi = BigInt(0),
|
|
620
|
+
const Xi = BigInt(0), St = BigInt(1);
|
|
621
621
|
function Qi(e, t) {
|
|
622
|
-
const n = (i,
|
|
623
|
-
const
|
|
624
|
-
return i ?
|
|
622
|
+
const n = (i, o) => {
|
|
623
|
+
const s = o.negate();
|
|
624
|
+
return i ? s : o;
|
|
625
625
|
}, r = (i) => {
|
|
626
|
-
const
|
|
627
|
-
return { windows:
|
|
626
|
+
const o = Math.ceil(t / i) + 1, s = 2 ** (i - 1);
|
|
627
|
+
return { windows: o, windowSize: s };
|
|
628
628
|
};
|
|
629
629
|
return {
|
|
630
630
|
constTimeNegate: n,
|
|
631
631
|
// non-const time multiplication ladder
|
|
632
|
-
unsafeLadder(i,
|
|
633
|
-
let
|
|
634
|
-
for (;
|
|
635
|
-
|
|
636
|
-
return
|
|
632
|
+
unsafeLadder(i, o) {
|
|
633
|
+
let s = e.ZERO, a = i;
|
|
634
|
+
for (; o > Xi; )
|
|
635
|
+
o & St && (s = s.add(a)), a = a.double(), o >>= St;
|
|
636
|
+
return s;
|
|
637
637
|
},
|
|
638
638
|
/**
|
|
639
639
|
* Creates a wNAF precomputation window. Used for caching.
|
|
@@ -645,14 +645,14 @@ function Qi(e, t) {
|
|
|
645
645
|
* For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.
|
|
646
646
|
* @returns precomputed point tables flattened to a single array
|
|
647
647
|
*/
|
|
648
|
-
precomputeWindow(i,
|
|
649
|
-
const { windows:
|
|
650
|
-
let
|
|
651
|
-
for (let
|
|
652
|
-
f =
|
|
648
|
+
precomputeWindow(i, o) {
|
|
649
|
+
const { windows: s, windowSize: a } = r(o), c = [];
|
|
650
|
+
let u = i, f = u;
|
|
651
|
+
for (let l = 0; l < s; l++) {
|
|
652
|
+
f = u, c.push(f);
|
|
653
653
|
for (let g = 1; g < a; g++)
|
|
654
|
-
f = f.add(
|
|
655
|
-
|
|
654
|
+
f = f.add(u), c.push(f);
|
|
655
|
+
u = f.double();
|
|
656
656
|
}
|
|
657
657
|
return c;
|
|
658
658
|
},
|
|
@@ -663,23 +663,23 @@ function Qi(e, t) {
|
|
|
663
663
|
* @param n scalar (we don't check here, but should be less than curve order)
|
|
664
664
|
* @returns real and fake (for const-time) points
|
|
665
665
|
*/
|
|
666
|
-
wNAF(i,
|
|
666
|
+
wNAF(i, o, s) {
|
|
667
667
|
const { windows: a, windowSize: c } = r(i);
|
|
668
|
-
let
|
|
669
|
-
const
|
|
668
|
+
let u = e.ZERO, f = e.BASE;
|
|
669
|
+
const l = BigInt(2 ** i - 1), g = 2 ** i, b = BigInt(i);
|
|
670
670
|
for (let p = 0; p < a; p++) {
|
|
671
671
|
const h = p * c;
|
|
672
|
-
let d = Number(
|
|
673
|
-
|
|
672
|
+
let d = Number(s & l);
|
|
673
|
+
s >>= b, d > c && (d -= g, s += St);
|
|
674
674
|
const y = h, E = h + Math.abs(d) - 1, N = p % 2 !== 0, _ = d < 0;
|
|
675
|
-
d === 0 ? f = f.add(n(N,
|
|
675
|
+
d === 0 ? f = f.add(n(N, o[y])) : u = u.add(n(_, o[E]));
|
|
676
676
|
}
|
|
677
|
-
return { p:
|
|
677
|
+
return { p: u, f };
|
|
678
678
|
},
|
|
679
|
-
wNAFCached(i,
|
|
679
|
+
wNAFCached(i, o, s, a) {
|
|
680
680
|
const c = i._WINDOW_SIZE || 1;
|
|
681
|
-
let
|
|
682
|
-
return
|
|
681
|
+
let u = o.get(i);
|
|
682
|
+
return u || (u = this.precomputeWindow(i, c), c !== 1 && o.set(i, a(u))), this.wNAF(c, u, s);
|
|
683
683
|
}
|
|
684
684
|
};
|
|
685
685
|
}
|
|
@@ -699,7 +699,7 @@ function er(e) {
|
|
|
699
699
|
});
|
|
700
700
|
}
|
|
701
701
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
702
|
-
function
|
|
702
|
+
function eo(e) {
|
|
703
703
|
const t = er(e);
|
|
704
704
|
Je(t, {
|
|
705
705
|
a: "field",
|
|
@@ -722,7 +722,7 @@ function es(e) {
|
|
|
722
722
|
}
|
|
723
723
|
return Object.freeze({ ...t });
|
|
724
724
|
}
|
|
725
|
-
const { bytesToNumberBE:
|
|
725
|
+
const { bytesToNumberBE: to, hexToBytes: no } = qi, Be = {
|
|
726
726
|
// asn.1 DER encoding utils
|
|
727
727
|
Err: class extends Error {
|
|
728
728
|
constructor(t = "") {
|
|
@@ -740,10 +740,10 @@ const { bytesToNumberBE: ts, hexToBytes: ns } = qi, Be = {
|
|
|
740
740
|
throw new t("Invalid signature integer: negative");
|
|
741
741
|
if (r[0] === 0 && !(r[1] & 128))
|
|
742
742
|
throw new t("Invalid signature integer: unnecessary leading zero");
|
|
743
|
-
return { d:
|
|
743
|
+
return { d: to(r), l: e.subarray(n + 2) };
|
|
744
744
|
},
|
|
745
745
|
toSig(e) {
|
|
746
|
-
const { Err: t } = Be, n = typeof e == "string" ?
|
|
746
|
+
const { Err: t } = Be, n = typeof e == "string" ? no(e) : e;
|
|
747
747
|
if (!(n instanceof Uint8Array))
|
|
748
748
|
throw new Error("ui8a expected");
|
|
749
749
|
let r = n.length;
|
|
@@ -751,41 +751,41 @@ const { bytesToNumberBE: ts, hexToBytes: ns } = qi, Be = {
|
|
|
751
751
|
throw new t("Invalid signature tag");
|
|
752
752
|
if (n[1] !== r - 2)
|
|
753
753
|
throw new t("Invalid signature: incorrect length");
|
|
754
|
-
const { d: i, l:
|
|
754
|
+
const { d: i, l: o } = Be._parseInt(n.subarray(2)), { d: s, l: a } = Be._parseInt(o);
|
|
755
755
|
if (a.length)
|
|
756
756
|
throw new t("Invalid signature: left bytes after parsing");
|
|
757
|
-
return { r: i, s
|
|
757
|
+
return { r: i, s };
|
|
758
758
|
},
|
|
759
759
|
hexFromSig(e) {
|
|
760
|
-
const t = (
|
|
761
|
-
const f =
|
|
760
|
+
const t = (u) => Number.parseInt(u[0], 16) & 8 ? "00" + u : u, n = (u) => {
|
|
761
|
+
const f = u.toString(16);
|
|
762
762
|
return f.length & 1 ? `0${f}` : f;
|
|
763
|
-
}, r = t(n(e.s)), i = t(n(e.r)),
|
|
764
|
-
return `30${n(
|
|
763
|
+
}, r = t(n(e.s)), i = t(n(e.r)), o = r.length / 2, s = i.length / 2, a = n(o), c = n(s);
|
|
764
|
+
return `30${n(s + o + 4)}02${c}${i}02${a}${r}`;
|
|
765
765
|
}
|
|
766
766
|
}, ae = BigInt(0), Y = BigInt(1);
|
|
767
767
|
BigInt(2);
|
|
768
768
|
const Un = BigInt(3);
|
|
769
769
|
BigInt(4);
|
|
770
|
-
function
|
|
771
|
-
const t =
|
|
770
|
+
function ro(e) {
|
|
771
|
+
const t = eo(e), { Fp: n } = t, r = t.toBytes || ((p, h, d) => {
|
|
772
772
|
const y = h.toAffine();
|
|
773
773
|
return Ue(Uint8Array.from([4]), n.toBytes(y.x), n.toBytes(y.y));
|
|
774
774
|
}), i = t.fromBytes || ((p) => {
|
|
775
775
|
const h = p.subarray(1), d = n.fromBytes(h.subarray(0, n.BYTES)), y = n.fromBytes(h.subarray(n.BYTES, 2 * n.BYTES));
|
|
776
776
|
return { x: d, y };
|
|
777
777
|
});
|
|
778
|
-
function
|
|
778
|
+
function o(p) {
|
|
779
779
|
const { a: h, b: d } = t, y = n.sqr(p), E = n.mul(y, p);
|
|
780
780
|
return n.add(n.add(E, n.mul(p, h)), d);
|
|
781
781
|
}
|
|
782
|
-
if (!n.eql(n.sqr(t.Gy),
|
|
782
|
+
if (!n.eql(n.sqr(t.Gy), o(t.Gx)))
|
|
783
783
|
throw new Error("bad generator point: equation left != right");
|
|
784
|
-
function
|
|
784
|
+
function s(p) {
|
|
785
785
|
return typeof p == "bigint" && ae < p && p < t.n;
|
|
786
786
|
}
|
|
787
787
|
function a(p) {
|
|
788
|
-
if (!
|
|
788
|
+
if (!s(p))
|
|
789
789
|
throw new Error("Expected valid bigint: 0 < bigint < curve.n");
|
|
790
790
|
}
|
|
791
791
|
function c(p) {
|
|
@@ -803,12 +803,12 @@ function rs(e) {
|
|
|
803
803
|
}
|
|
804
804
|
return y && (N = V(N, E)), a(N), N;
|
|
805
805
|
}
|
|
806
|
-
const
|
|
806
|
+
const u = /* @__PURE__ */ new Map();
|
|
807
807
|
function f(p) {
|
|
808
|
-
if (!(p instanceof
|
|
808
|
+
if (!(p instanceof l))
|
|
809
809
|
throw new Error("ProjectivePoint expected");
|
|
810
810
|
}
|
|
811
|
-
class
|
|
811
|
+
class l {
|
|
812
812
|
constructor(h, d, y) {
|
|
813
813
|
if (this.px = h, this.py = d, this.pz = y, h == null || !n.isValid(h))
|
|
814
814
|
throw new Error("x required");
|
|
@@ -823,10 +823,10 @@ function rs(e) {
|
|
|
823
823
|
const { x: d, y } = h || {};
|
|
824
824
|
if (!h || !n.isValid(d) || !n.isValid(y))
|
|
825
825
|
throw new Error("invalid affine point");
|
|
826
|
-
if (h instanceof
|
|
826
|
+
if (h instanceof l)
|
|
827
827
|
throw new Error("projective point not allowed");
|
|
828
828
|
const E = (N) => n.eql(N, n.ZERO);
|
|
829
|
-
return E(d) && E(y) ?
|
|
829
|
+
return E(d) && E(y) ? l.ZERO : new l(d, y, n.ONE);
|
|
830
830
|
}
|
|
831
831
|
get x() {
|
|
832
832
|
return this.toAffine().x;
|
|
@@ -842,23 +842,23 @@ function rs(e) {
|
|
|
842
842
|
*/
|
|
843
843
|
static normalizeZ(h) {
|
|
844
844
|
const d = n.invertBatch(h.map((y) => y.pz));
|
|
845
|
-
return h.map((y, E) => y.toAffine(d[E])).map(
|
|
845
|
+
return h.map((y, E) => y.toAffine(d[E])).map(l.fromAffine);
|
|
846
846
|
}
|
|
847
847
|
/**
|
|
848
848
|
* Converts hash string or Uint8Array to Point.
|
|
849
849
|
* @param hex short/long ECDSA hex
|
|
850
850
|
*/
|
|
851
851
|
static fromHex(h) {
|
|
852
|
-
const d =
|
|
852
|
+
const d = l.fromAffine(i(W("pointHex", h)));
|
|
853
853
|
return d.assertValidity(), d;
|
|
854
854
|
}
|
|
855
855
|
// Multiplies generator point by privateKey.
|
|
856
856
|
static fromPrivateKey(h) {
|
|
857
|
-
return
|
|
857
|
+
return l.BASE.multiply(c(h));
|
|
858
858
|
}
|
|
859
859
|
// "Private method", don't use it directly
|
|
860
860
|
_setWindowSize(h) {
|
|
861
|
-
this._WINDOW_SIZE = h,
|
|
861
|
+
this._WINDOW_SIZE = h, u.delete(this);
|
|
862
862
|
}
|
|
863
863
|
// A point on curve is valid if it conforms to equation.
|
|
864
864
|
assertValidity() {
|
|
@@ -870,7 +870,7 @@ function rs(e) {
|
|
|
870
870
|
const { x: h, y: d } = this.toAffine();
|
|
871
871
|
if (!n.isValid(h) || !n.isValid(d))
|
|
872
872
|
throw new Error("bad point: x or y not FE");
|
|
873
|
-
const y = n.sqr(d), E =
|
|
873
|
+
const y = n.sqr(d), E = o(h);
|
|
874
874
|
if (!n.eql(y, E))
|
|
875
875
|
throw new Error("bad point: equation left != right");
|
|
876
876
|
if (!this.isTorsionFree())
|
|
@@ -894,7 +894,7 @@ function rs(e) {
|
|
|
894
894
|
* Flips point to one corresponding to (x, -y) in Affine coordinates.
|
|
895
895
|
*/
|
|
896
896
|
negate() {
|
|
897
|
-
return new
|
|
897
|
+
return new l(this.px, n.neg(this.py), this.pz);
|
|
898
898
|
}
|
|
899
899
|
// Renes-Costello-Batina exception-free doubling formula.
|
|
900
900
|
// There is 30% faster Jacobian formula, but it is not complete.
|
|
@@ -902,8 +902,8 @@ function rs(e) {
|
|
|
902
902
|
// Cost: 8M + 3S + 3*a + 2*b3 + 15add.
|
|
903
903
|
double() {
|
|
904
904
|
const { a: h, b: d } = t, y = n.mul(d, Un), { px: E, py: N, pz: _ } = this;
|
|
905
|
-
let B = n.ZERO, m = n.ZERO, x = n.ZERO,
|
|
906
|
-
return K = n.add(K, K), x = n.mul(E, _), x = n.add(x, x), B = n.mul(h, x), m = n.mul(y, U), m = n.add(B, m), B = n.sub(H, m), m = n.add(H, m), m = n.mul(B, m), B = n.mul(K, B), x = n.mul(y, x), U = n.mul(h, U), K = n.sub(
|
|
905
|
+
let B = n.ZERO, m = n.ZERO, x = n.ZERO, A = n.mul(E, E), H = n.mul(N, N), U = n.mul(_, _), K = n.mul(E, N);
|
|
906
|
+
return K = n.add(K, K), x = n.mul(E, _), x = n.add(x, x), B = n.mul(h, x), m = n.mul(y, U), m = n.add(B, m), B = n.sub(H, m), m = n.add(H, m), m = n.mul(B, m), B = n.mul(K, B), x = n.mul(y, x), U = n.mul(h, U), K = n.sub(A, U), K = n.mul(h, K), K = n.add(K, x), x = n.add(A, A), A = n.add(x, A), A = n.add(A, U), A = n.mul(A, K), m = n.add(m, A), U = n.mul(N, _), U = n.add(U, U), A = n.mul(U, K), B = n.sub(B, A), x = n.mul(U, H), x = n.add(x, x), x = n.add(x, x), new l(B, m, x);
|
|
907
907
|
}
|
|
908
908
|
// Renes-Costello-Batina exception-free addition formula.
|
|
909
909
|
// There is 30% faster Jacobian formula, but it is not complete.
|
|
@@ -912,23 +912,23 @@ function rs(e) {
|
|
|
912
912
|
add(h) {
|
|
913
913
|
f(h);
|
|
914
914
|
const { px: d, py: y, pz: E } = this, { px: N, py: _, pz: B } = h;
|
|
915
|
-
let m = n.ZERO, x = n.ZERO,
|
|
915
|
+
let m = n.ZERO, x = n.ZERO, A = n.ZERO;
|
|
916
916
|
const H = t.a, U = n.mul(t.b, Un);
|
|
917
917
|
let K = n.mul(d, N), T = n.mul(y, _), R = n.mul(E, B), P = n.add(d, y), w = n.add(N, _);
|
|
918
918
|
P = n.mul(P, w), w = n.add(K, T), P = n.sub(P, w), w = n.add(d, E);
|
|
919
919
|
let v = n.add(N, B);
|
|
920
|
-
return w = n.mul(w, v), v = n.add(K, R), w = n.sub(w, v), v = n.add(y, E), m = n.add(_, B), v = n.mul(v, m), m = n.add(T, R), v = n.sub(v, m),
|
|
920
|
+
return w = n.mul(w, v), v = n.add(K, R), w = n.sub(w, v), v = n.add(y, E), m = n.add(_, B), v = n.mul(v, m), m = n.add(T, R), v = n.sub(v, m), A = n.mul(H, w), m = n.mul(U, R), A = n.add(m, A), m = n.sub(T, A), A = n.add(T, A), x = n.mul(m, A), T = n.add(K, K), T = n.add(T, K), R = n.mul(H, R), w = n.mul(U, w), T = n.add(T, R), R = n.sub(K, R), R = n.mul(H, R), w = n.add(w, R), K = n.mul(T, w), x = n.add(x, K), K = n.mul(v, w), m = n.mul(P, m), m = n.sub(m, K), K = n.mul(P, T), A = n.mul(v, A), A = n.add(A, K), new l(m, x, A);
|
|
921
921
|
}
|
|
922
922
|
subtract(h) {
|
|
923
923
|
return this.add(h.negate());
|
|
924
924
|
}
|
|
925
925
|
is0() {
|
|
926
|
-
return this.equals(
|
|
926
|
+
return this.equals(l.ZERO);
|
|
927
927
|
}
|
|
928
928
|
wNAF(h) {
|
|
929
|
-
return b.wNAFCached(this,
|
|
929
|
+
return b.wNAFCached(this, u, h, (d) => {
|
|
930
930
|
const y = n.invertBatch(d.map((E) => E.pz));
|
|
931
|
-
return d.map((E, N) => E.toAffine(y[N])).map(
|
|
931
|
+
return d.map((E, N) => E.toAffine(y[N])).map(l.fromAffine);
|
|
932
932
|
});
|
|
933
933
|
}
|
|
934
934
|
/**
|
|
@@ -937,7 +937,7 @@ function rs(e) {
|
|
|
937
937
|
* an exposed private key e.g. sig verification, which works over *public* keys.
|
|
938
938
|
*/
|
|
939
939
|
multiplyUnsafe(h) {
|
|
940
|
-
const d =
|
|
940
|
+
const d = l.ZERO;
|
|
941
941
|
if (h === ae)
|
|
942
942
|
return d;
|
|
943
943
|
if (a(h), h === Y)
|
|
@@ -945,10 +945,10 @@ function rs(e) {
|
|
|
945
945
|
const { endo: y } = t;
|
|
946
946
|
if (!y)
|
|
947
947
|
return b.unsafeLadder(this, h);
|
|
948
|
-
let { k1neg: E, k1: N, k2neg: _, k2: B } = y.splitScalar(h), m = d, x = d,
|
|
948
|
+
let { k1neg: E, k1: N, k2neg: _, k2: B } = y.splitScalar(h), m = d, x = d, A = this;
|
|
949
949
|
for (; N > ae || B > ae; )
|
|
950
|
-
N & Y && (m = m.add(
|
|
951
|
-
return E && (m = m.negate()), _ && (x = x.negate()), x = new
|
|
950
|
+
N & Y && (m = m.add(A)), B & Y && (x = x.add(A)), A = A.double(), N >>= Y, B >>= Y;
|
|
951
|
+
return E && (m = m.negate()), _ && (x = x.negate()), x = new l(n.mul(x.px, y.beta), x.py, x.pz), m.add(x);
|
|
952
952
|
}
|
|
953
953
|
/**
|
|
954
954
|
* Constant time multiplication.
|
|
@@ -965,13 +965,13 @@ function rs(e) {
|
|
|
965
965
|
const { endo: N } = t;
|
|
966
966
|
if (N) {
|
|
967
967
|
const { k1neg: _, k1: B, k2neg: m, k2: x } = N.splitScalar(d);
|
|
968
|
-
let { p:
|
|
969
|
-
|
|
968
|
+
let { p: A, f: H } = this.wNAF(B), { p: U, f: K } = this.wNAF(x);
|
|
969
|
+
A = b.constTimeNegate(_, A), U = b.constTimeNegate(m, U), U = new l(n.mul(U.px, N.beta), U.py, U.pz), y = A.add(U), E = H.add(K);
|
|
970
970
|
} else {
|
|
971
971
|
const { p: _, f: B } = this.wNAF(d);
|
|
972
972
|
y = _, E = B;
|
|
973
973
|
}
|
|
974
|
-
return
|
|
974
|
+
return l.normalizeZ([y, E])[0];
|
|
975
975
|
}
|
|
976
976
|
/**
|
|
977
977
|
* Efficiently calculate `aP + bQ`. Unsafe, can expose private key, if used incorrectly.
|
|
@@ -980,7 +980,7 @@ function rs(e) {
|
|
|
980
980
|
* @returns non-zero affine point
|
|
981
981
|
*/
|
|
982
982
|
multiplyAndAddUnsafe(h, d, y) {
|
|
983
|
-
const E =
|
|
983
|
+
const E = l.BASE, N = (B, m) => m === ae || m === Y || !B.equals(E) ? B.multiplyUnsafe(m) : B.multiply(m), _ = N(this, d).add(N(h, y));
|
|
984
984
|
return _.is0() ? void 0 : _;
|
|
985
985
|
}
|
|
986
986
|
// Converts Projective point to affine (x, y) coordinates.
|
|
@@ -1001,31 +1001,31 @@ function rs(e) {
|
|
|
1001
1001
|
if (h === Y)
|
|
1002
1002
|
return !0;
|
|
1003
1003
|
if (d)
|
|
1004
|
-
return d(
|
|
1004
|
+
return d(l, this);
|
|
1005
1005
|
throw new Error("isTorsionFree() has not been declared for the elliptic curve");
|
|
1006
1006
|
}
|
|
1007
1007
|
clearCofactor() {
|
|
1008
1008
|
const { h, clearCofactor: d } = t;
|
|
1009
|
-
return h === Y ? this : d ? d(
|
|
1009
|
+
return h === Y ? this : d ? d(l, this) : this.multiplyUnsafe(t.h);
|
|
1010
1010
|
}
|
|
1011
1011
|
toRawBytes(h = !0) {
|
|
1012
|
-
return this.assertValidity(), r(
|
|
1012
|
+
return this.assertValidity(), r(l, this, h);
|
|
1013
1013
|
}
|
|
1014
1014
|
toHex(h = !0) {
|
|
1015
1015
|
return qe(this.toRawBytes(h));
|
|
1016
1016
|
}
|
|
1017
1017
|
}
|
|
1018
|
-
|
|
1019
|
-
const g = t.nBitLength, b = Qi(
|
|
1018
|
+
l.BASE = new l(t.Gx, t.Gy, n.ONE), l.ZERO = new l(n.ZERO, n.ONE, n.ZERO);
|
|
1019
|
+
const g = t.nBitLength, b = Qi(l, t.endo ? Math.ceil(g / 2) : g);
|
|
1020
1020
|
return {
|
|
1021
1021
|
CURVE: t,
|
|
1022
|
-
ProjectivePoint:
|
|
1022
|
+
ProjectivePoint: l,
|
|
1023
1023
|
normPrivateKeyToScalar: c,
|
|
1024
|
-
weierstrassEquation:
|
|
1025
|
-
isWithinCurveOrder:
|
|
1024
|
+
weierstrassEquation: o,
|
|
1025
|
+
isWithinCurveOrder: s
|
|
1026
1026
|
};
|
|
1027
1027
|
}
|
|
1028
|
-
function
|
|
1028
|
+
function io(e) {
|
|
1029
1029
|
const t = er(e);
|
|
1030
1030
|
return Je(t, {
|
|
1031
1031
|
hash: "hash",
|
|
@@ -1037,9 +1037,9 @@ function is(e) {
|
|
|
1037
1037
|
lowS: "boolean"
|
|
1038
1038
|
}), Object.freeze({ lowS: !0, ...t });
|
|
1039
1039
|
}
|
|
1040
|
-
function
|
|
1041
|
-
const t =
|
|
1042
|
-
function
|
|
1040
|
+
function oo(e) {
|
|
1041
|
+
const t = io(e), { Fp: n, n: r } = t, i = n.BYTES + 1, o = 2 * n.BYTES + 1;
|
|
1042
|
+
function s(w) {
|
|
1043
1043
|
return ae < w && w < n.ORDER;
|
|
1044
1044
|
}
|
|
1045
1045
|
function a(w) {
|
|
@@ -1048,29 +1048,29 @@ function ss(e) {
|
|
|
1048
1048
|
function c(w) {
|
|
1049
1049
|
return Tt(w, r);
|
|
1050
1050
|
}
|
|
1051
|
-
const { ProjectivePoint:
|
|
1051
|
+
const { ProjectivePoint: u, normPrivateKeyToScalar: f, weierstrassEquation: l, isWithinCurveOrder: g } = ro({
|
|
1052
1052
|
...t,
|
|
1053
|
-
toBytes(w, v,
|
|
1053
|
+
toBytes(w, v, S) {
|
|
1054
1054
|
const C = v.toAffine(), k = n.toBytes(C.x), I = Ue;
|
|
1055
|
-
return
|
|
1055
|
+
return S ? I(Uint8Array.from([v.hasEvenY() ? 2 : 3]), k) : I(Uint8Array.from([4]), k, n.toBytes(C.y));
|
|
1056
1056
|
},
|
|
1057
1057
|
fromBytes(w) {
|
|
1058
|
-
const v = w.length,
|
|
1059
|
-
if (v === i && (
|
|
1058
|
+
const v = w.length, S = w[0], C = w.subarray(1);
|
|
1059
|
+
if (v === i && (S === 2 || S === 3)) {
|
|
1060
1060
|
const k = F(C);
|
|
1061
|
-
if (!
|
|
1061
|
+
if (!s(k))
|
|
1062
1062
|
throw new Error("Point is not on curve");
|
|
1063
|
-
const I =
|
|
1063
|
+
const I = l(k);
|
|
1064
1064
|
let O = n.sqrt(I);
|
|
1065
1065
|
const $ = (O & Y) === Y;
|
|
1066
|
-
return (
|
|
1067
|
-
} else if (v ===
|
|
1066
|
+
return (S & 1) === 1 !== $ && (O = n.neg(O)), { x: k, y: O };
|
|
1067
|
+
} else if (v === o && S === 4) {
|
|
1068
1068
|
const k = n.fromBytes(C.subarray(0, n.BYTES)), I = n.fromBytes(C.subarray(n.BYTES, 2 * n.BYTES));
|
|
1069
1069
|
return { x: k, y: I };
|
|
1070
1070
|
} else
|
|
1071
|
-
throw new Error(`Point of length ${v} was invalid. Expected ${i} compressed bytes or ${
|
|
1071
|
+
throw new Error(`Point of length ${v} was invalid. Expected ${i} compressed bytes or ${o} uncompressed bytes`);
|
|
1072
1072
|
}
|
|
1073
|
-
}), b = (w) => qe(
|
|
1073
|
+
}), b = (w) => qe(Se(w, t.nByteLength));
|
|
1074
1074
|
function p(w) {
|
|
1075
1075
|
const v = r >> Y;
|
|
1076
1076
|
return w > v;
|
|
@@ -1078,21 +1078,21 @@ function ss(e) {
|
|
|
1078
1078
|
function h(w) {
|
|
1079
1079
|
return p(w) ? a(-w) : w;
|
|
1080
1080
|
}
|
|
1081
|
-
const d = (w, v,
|
|
1081
|
+
const d = (w, v, S) => F(w.slice(v, S));
|
|
1082
1082
|
class y {
|
|
1083
|
-
constructor(v,
|
|
1084
|
-
this.r = v, this.s =
|
|
1083
|
+
constructor(v, S, C) {
|
|
1084
|
+
this.r = v, this.s = S, this.recovery = C, this.assertValidity();
|
|
1085
1085
|
}
|
|
1086
1086
|
// pair (bytes of r, bytes of s)
|
|
1087
1087
|
static fromCompact(v) {
|
|
1088
|
-
const
|
|
1089
|
-
return v = W("compactSignature", v,
|
|
1088
|
+
const S = t.nByteLength;
|
|
1089
|
+
return v = W("compactSignature", v, S * 2), new y(d(v, 0, S), d(v, S, 2 * S));
|
|
1090
1090
|
}
|
|
1091
1091
|
// DER encoded ECDSA signature
|
|
1092
1092
|
// https://bitcoin.stackexchange.com/questions/57644/what-are-the-parts-of-a-bitcoin-transaction-input-script
|
|
1093
1093
|
static fromDER(v) {
|
|
1094
|
-
const { r:
|
|
1095
|
-
return new y(
|
|
1094
|
+
const { r: S, s: C } = Be.toSig(W("DER", v));
|
|
1095
|
+
return new y(S, C);
|
|
1096
1096
|
}
|
|
1097
1097
|
assertValidity() {
|
|
1098
1098
|
if (!g(this.r))
|
|
@@ -1104,13 +1104,13 @@ function ss(e) {
|
|
|
1104
1104
|
return new y(this.r, this.s, v);
|
|
1105
1105
|
}
|
|
1106
1106
|
recoverPublicKey(v) {
|
|
1107
|
-
const { r:
|
|
1107
|
+
const { r: S, s: C, recovery: k } = this, I = x(W("msgHash", v));
|
|
1108
1108
|
if (k == null || ![0, 1, 2, 3].includes(k))
|
|
1109
1109
|
throw new Error("recovery id invalid");
|
|
1110
|
-
const O = k === 2 || k === 3 ?
|
|
1110
|
+
const O = k === 2 || k === 3 ? S + t.n : S;
|
|
1111
1111
|
if (O >= n.ORDER)
|
|
1112
1112
|
throw new Error("recovery id 2 or 3 invalid");
|
|
1113
|
-
const $ = k & 1 ? "03" : "02", Q =
|
|
1113
|
+
const $ = k & 1 ? "03" : "02", Q = u.fromHex($ + b(O)), ge = c(O), Ie = a(-I * ge), Ve = a(C * ge), we = u.BASE.multiplyAndAddUnsafe(Q, Ie, Ve);
|
|
1114
1114
|
if (!we)
|
|
1115
1115
|
throw new Error("point at infinify");
|
|
1116
1116
|
return we.assertValidity(), we;
|
|
@@ -1162,42 +1162,42 @@ function ss(e) {
|
|
|
1162
1162
|
* const fast = utils.precompute(8, ProjectivePoint.fromHex(someonesPubKey));
|
|
1163
1163
|
* fast.multiply(privKey); // much faster ECDH now
|
|
1164
1164
|
*/
|
|
1165
|
-
precompute(w = 8, v =
|
|
1165
|
+
precompute(w = 8, v = u.BASE) {
|
|
1166
1166
|
return v._setWindowSize(w), v.multiply(BigInt(3)), v;
|
|
1167
1167
|
}
|
|
1168
1168
|
};
|
|
1169
1169
|
function N(w, v = !0) {
|
|
1170
|
-
return
|
|
1170
|
+
return u.fromPrivateKey(w).toRawBytes(v);
|
|
1171
1171
|
}
|
|
1172
1172
|
function _(w) {
|
|
1173
|
-
const v = w instanceof Uint8Array,
|
|
1174
|
-
return v ? C === i || C ===
|
|
1173
|
+
const v = w instanceof Uint8Array, S = typeof w == "string", C = (v || S) && w.length;
|
|
1174
|
+
return v ? C === i || C === o : S ? C === 2 * i || C === 2 * o : w instanceof u;
|
|
1175
1175
|
}
|
|
1176
|
-
function B(w, v,
|
|
1176
|
+
function B(w, v, S = !0) {
|
|
1177
1177
|
if (_(w))
|
|
1178
1178
|
throw new Error("first arg must be private key");
|
|
1179
1179
|
if (!_(v))
|
|
1180
1180
|
throw new Error("second arg must be public key");
|
|
1181
|
-
return
|
|
1181
|
+
return u.fromHex(v).multiply(f(w)).toRawBytes(S);
|
|
1182
1182
|
}
|
|
1183
1183
|
const m = t.bits2int || function(w) {
|
|
1184
|
-
const v = F(w),
|
|
1185
|
-
return
|
|
1184
|
+
const v = F(w), S = w.length * 8 - t.nBitLength;
|
|
1185
|
+
return S > 0 ? v >> BigInt(S) : v;
|
|
1186
1186
|
}, x = t.bits2int_modN || function(w) {
|
|
1187
1187
|
return a(m(w));
|
|
1188
|
-
},
|
|
1188
|
+
}, A = Jt(t.nBitLength);
|
|
1189
1189
|
function H(w) {
|
|
1190
1190
|
if (typeof w != "bigint")
|
|
1191
1191
|
throw new Error("bigint expected");
|
|
1192
|
-
if (!(ae <= w && w <
|
|
1192
|
+
if (!(ae <= w && w < A))
|
|
1193
1193
|
throw new Error(`bigint expected < 2^${t.nBitLength}`);
|
|
1194
|
-
return
|
|
1194
|
+
return Se(w, t.nByteLength);
|
|
1195
1195
|
}
|
|
1196
|
-
function U(w, v,
|
|
1197
|
-
if (["recovered", "canonical"].some((Ke) => Ke in
|
|
1196
|
+
function U(w, v, S = K) {
|
|
1197
|
+
if (["recovered", "canonical"].some((Ke) => Ke in S))
|
|
1198
1198
|
throw new Error("sign() legacy options not supported");
|
|
1199
1199
|
const { hash: C, randomBytes: k } = t;
|
|
1200
|
-
let { lowS: I, prehash: O, extraEntropy: $ } =
|
|
1200
|
+
let { lowS: I, prehash: O, extraEntropy: $ } = S;
|
|
1201
1201
|
I == null && (I = !0), w = W("msgHash", w), O && (w = W("prehashed msgHash", C(w)));
|
|
1202
1202
|
const Q = x(w), ge = f(v), Ie = [H(ge), H(Q)];
|
|
1203
1203
|
if ($ != null) {
|
|
@@ -1209,27 +1209,27 @@ function ss(e) {
|
|
|
1209
1209
|
const Le = m(Ke);
|
|
1210
1210
|
if (!g(Le))
|
|
1211
1211
|
return;
|
|
1212
|
-
const
|
|
1212
|
+
const An = c(Le), $e = u.BASE.multiply(Le).toAffine(), ee = a($e.x);
|
|
1213
1213
|
if (ee === ae)
|
|
1214
1214
|
return;
|
|
1215
|
-
const Te = a(
|
|
1215
|
+
const Te = a(An * a(we + ee * ge));
|
|
1216
1216
|
if (Te === ae)
|
|
1217
1217
|
return;
|
|
1218
|
-
let
|
|
1219
|
-
return I && p(Te) && (Nn = h(Te),
|
|
1218
|
+
let Sn = ($e.x === ee ? 0 : 2) | Number($e.y & Y), Nn = Te;
|
|
1219
|
+
return I && p(Te) && (Nn = h(Te), Sn ^= 1), new y(ee, Nn, Sn);
|
|
1220
1220
|
}
|
|
1221
1221
|
return { seed: Ve, k2sig: mt };
|
|
1222
1222
|
}
|
|
1223
1223
|
const K = { lowS: t.lowS, prehash: !1 }, T = { lowS: t.lowS, prehash: !1 };
|
|
1224
|
-
function R(w, v,
|
|
1225
|
-
const { seed: C, k2sig: k } = U(w, v,
|
|
1224
|
+
function R(w, v, S = K) {
|
|
1225
|
+
const { seed: C, k2sig: k } = U(w, v, S), I = t;
|
|
1226
1226
|
return Jn(I.hash.outputLen, I.nByteLength, I.hmac)(C, k);
|
|
1227
1227
|
}
|
|
1228
|
-
|
|
1229
|
-
function P(w, v,
|
|
1228
|
+
u.BASE._setWindowSize(8);
|
|
1229
|
+
function P(w, v, S, C = T) {
|
|
1230
1230
|
var $e;
|
|
1231
1231
|
const k = w;
|
|
1232
|
-
if (v = W("msgHash", v),
|
|
1232
|
+
if (v = W("msgHash", v), S = W("publicKey", S), "strict" in C)
|
|
1233
1233
|
throw new Error("options.strict was renamed to lowS");
|
|
1234
1234
|
const { lowS: I, prehash: O } = C;
|
|
1235
1235
|
let $, Q;
|
|
@@ -1247,7 +1247,7 @@ function ss(e) {
|
|
|
1247
1247
|
$ = new y(ee, Te);
|
|
1248
1248
|
} else
|
|
1249
1249
|
throw new Error("PARSE");
|
|
1250
|
-
Q =
|
|
1250
|
+
Q = u.fromHex(S);
|
|
1251
1251
|
} catch (ee) {
|
|
1252
1252
|
if (ee.message === "PARSE")
|
|
1253
1253
|
throw new Error("signature must be Signature instance, Uint8Array or hex string");
|
|
@@ -1256,7 +1256,7 @@ function ss(e) {
|
|
|
1256
1256
|
if (I && $.hasHighS())
|
|
1257
1257
|
return !1;
|
|
1258
1258
|
O && (v = t.hash(v));
|
|
1259
|
-
const { r: ge, s: Ie } = $, Ve = x(v), we = c(Ie), mt = a(Ve * we), Ke = a(ge * we), Le = ($e =
|
|
1259
|
+
const { r: ge, s: Ie } = $, Ve = x(v), we = c(Ie), mt = a(Ve * we), Ke = a(ge * we), Le = ($e = u.BASE.multiplyAndAddUnsafe(Q, mt, Ke)) == null ? void 0 : $e.toAffine();
|
|
1260
1260
|
return Le ? a(Le.x) === ge : !1;
|
|
1261
1261
|
}
|
|
1262
1262
|
return {
|
|
@@ -1265,7 +1265,7 @@ function ss(e) {
|
|
|
1265
1265
|
getSharedSecret: B,
|
|
1266
1266
|
sign: R,
|
|
1267
1267
|
verify: P,
|
|
1268
|
-
ProjectivePoint:
|
|
1268
|
+
ProjectivePoint: u,
|
|
1269
1269
|
Signature: y,
|
|
1270
1270
|
utils: E
|
|
1271
1271
|
};
|
|
@@ -1277,14 +1277,14 @@ let tr = class extends Wn {
|
|
|
1277
1277
|
if (this.iHash = t.create(), typeof this.iHash.update != "function")
|
|
1278
1278
|
throw new Error("Expected instance of class which extends utils.Hash");
|
|
1279
1279
|
this.blockLen = this.iHash.blockLen, this.outputLen = this.iHash.outputLen;
|
|
1280
|
-
const i = this.blockLen,
|
|
1281
|
-
|
|
1282
|
-
for (let
|
|
1283
|
-
s
|
|
1284
|
-
this.iHash.update(
|
|
1285
|
-
for (let
|
|
1286
|
-
s
|
|
1287
|
-
this.oHash.update(
|
|
1280
|
+
const i = this.blockLen, o = new Uint8Array(i);
|
|
1281
|
+
o.set(r.length > i ? t.create().update(r).digest() : r);
|
|
1282
|
+
for (let s = 0; s < o.length; s++)
|
|
1283
|
+
o[s] ^= 54;
|
|
1284
|
+
this.iHash.update(o), this.oHash = t.create();
|
|
1285
|
+
for (let s = 0; s < o.length; s++)
|
|
1286
|
+
o[s] ^= 106;
|
|
1287
|
+
this.oHash.update(o), o.fill(0);
|
|
1288
1288
|
}
|
|
1289
1289
|
update(t) {
|
|
1290
1290
|
return et(this), this.iHash.update(t), this;
|
|
@@ -1298,8 +1298,8 @@ let tr = class extends Wn {
|
|
|
1298
1298
|
}
|
|
1299
1299
|
_cloneInto(t) {
|
|
1300
1300
|
t || (t = Object.create(Object.getPrototypeOf(this), {}));
|
|
1301
|
-
const { oHash: n, iHash: r, finished: i, destroyed:
|
|
1302
|
-
return t = t, t.finished = i, t.destroyed =
|
|
1301
|
+
const { oHash: n, iHash: r, finished: i, destroyed: o, blockLen: s, outputLen: a } = this;
|
|
1302
|
+
return t = t, t.finished = i, t.destroyed = o, t.blockLen = s, t.outputLen = a, t.oHash = n._cloneInto(t.oHash), t.iHash = r._cloneInto(t.iHash), t;
|
|
1303
1303
|
}
|
|
1304
1304
|
destroy() {
|
|
1305
1305
|
this.destroyed = !0, this.oHash.destroy(), this.iHash.destroy();
|
|
@@ -1308,26 +1308,26 @@ let tr = class extends Wn {
|
|
|
1308
1308
|
const nr = (e, t, n) => new tr(e, t).update(n).digest();
|
|
1309
1309
|
nr.create = (e, t) => new tr(e, t);
|
|
1310
1310
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
1311
|
-
function
|
|
1311
|
+
function so(e) {
|
|
1312
1312
|
return {
|
|
1313
1313
|
hash: e,
|
|
1314
|
-
hmac: (t, ...n) => nr(e, t,
|
|
1314
|
+
hmac: (t, ...n) => nr(e, t, Si(...n)),
|
|
1315
1315
|
randomBytes: Zn
|
|
1316
1316
|
};
|
|
1317
1317
|
}
|
|
1318
|
-
function
|
|
1319
|
-
const n = (r) =>
|
|
1318
|
+
function ao(e, t) {
|
|
1319
|
+
const n = (r) => oo({ ...e, ...so(r) });
|
|
1320
1320
|
return Object.freeze({ ...n(t), create: n });
|
|
1321
1321
|
}
|
|
1322
1322
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
1323
1323
|
const ct = BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"), tt = BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"), rr = BigInt(1), nt = BigInt(2), _n = (e, t) => (e + t / nt) / t;
|
|
1324
1324
|
function ir(e) {
|
|
1325
|
-
const t = ct, n = BigInt(3), r = BigInt(6), i = BigInt(11),
|
|
1325
|
+
const t = ct, n = BigInt(3), r = BigInt(6), i = BigInt(11), o = BigInt(22), s = BigInt(23), a = BigInt(44), c = BigInt(88), u = e * e * e % t, f = u * u * e % t, l = J(f, n, t) * f % t, g = J(l, n, t) * f % t, b = J(g, nt, t) * u % t, p = J(b, i, t) * b % t, h = J(p, o, t) * p % t, d = J(h, a, t) * h % t, y = J(d, c, t) * d % t, E = J(y, a, t) * h % t, N = J(E, n, t) * f % t, _ = J(N, s, t) * p % t, B = J(_, r, t) * u % t, m = J(B, nt, t);
|
|
1326
1326
|
if (!Rt.eql(Rt.sqr(m), e))
|
|
1327
1327
|
throw new Error("Cannot find square root");
|
|
1328
1328
|
return m;
|
|
1329
1329
|
}
|
|
1330
|
-
const Rt = Ji(ct, void 0, void 0, { sqrt: ir }), _e =
|
|
1330
|
+
const Rt = Ji(ct, void 0, void 0, { sqrt: ir }), _e = ao({
|
|
1331
1331
|
a: BigInt(0),
|
|
1332
1332
|
b: BigInt(7),
|
|
1333
1333
|
Fp: Rt,
|
|
@@ -1346,15 +1346,15 @@ const Rt = Ji(ct, void 0, void 0, { sqrt: ir }), _e = as({
|
|
|
1346
1346
|
endo: {
|
|
1347
1347
|
beta: BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),
|
|
1348
1348
|
splitScalar: (e) => {
|
|
1349
|
-
const t = tt, n = BigInt("0x3086d221a7d46bcde86c90e49284eb15"), r = -rr * BigInt("0xe4437ed6010e88286f547fa90abfe4c3"), i = BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),
|
|
1350
|
-
let
|
|
1351
|
-
const
|
|
1352
|
-
if (
|
|
1349
|
+
const t = tt, n = BigInt("0x3086d221a7d46bcde86c90e49284eb15"), r = -rr * BigInt("0xe4437ed6010e88286f547fa90abfe4c3"), i = BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"), o = n, s = BigInt("0x100000000000000000000000000000000"), a = _n(o * e, t), c = _n(-r * e, t);
|
|
1350
|
+
let u = V(e - a * n - c * i, t), f = V(-a * r - c * o, t);
|
|
1351
|
+
const l = u > s, g = f > s;
|
|
1352
|
+
if (l && (u = t - u), g && (f = t - f), u > s || f > s)
|
|
1353
1353
|
throw new Error("splitScalar: Endomorphism failed, k=" + e);
|
|
1354
|
-
return { k1neg:
|
|
1354
|
+
return { k1neg: l, k1: u, k2neg: g, k2: f };
|
|
1355
1355
|
}
|
|
1356
1356
|
}
|
|
1357
|
-
}, Lt),
|
|
1357
|
+
}, Lt), lt = BigInt(0), or = (e) => typeof e == "bigint" && lt < e && e < ct, co = (e) => typeof e == "bigint" && lt < e && e < tt, In = {};
|
|
1358
1358
|
function rt(e, ...t) {
|
|
1359
1359
|
let n = In[e];
|
|
1360
1360
|
if (n === void 0) {
|
|
@@ -1363,75 +1363,75 @@ function rt(e, ...t) {
|
|
|
1363
1363
|
}
|
|
1364
1364
|
return Lt(Ue(n, ...t));
|
|
1365
1365
|
}
|
|
1366
|
-
const Yt = (e) => e.toRawBytes(!0).slice(1), Ot = (e) =>
|
|
1366
|
+
const Yt = (e) => e.toRawBytes(!0).slice(1), Ot = (e) => Se(e, 32), Nt = (e) => V(e, ct), Ge = (e) => V(e, tt), Xt = _e.ProjectivePoint, lo = (e, t, n) => Xt.BASE.multiplyAndAddUnsafe(e, t, n);
|
|
1367
1367
|
function Mt(e) {
|
|
1368
1368
|
let t = _e.utils.normPrivateKeyToScalar(e), n = Xt.fromPrivateKey(t);
|
|
1369
1369
|
return { scalar: n.hasEvenY() ? t : Ge(-t), bytes: Yt(n) };
|
|
1370
1370
|
}
|
|
1371
|
-
function
|
|
1372
|
-
if (!
|
|
1371
|
+
function sr(e) {
|
|
1372
|
+
if (!or(e))
|
|
1373
1373
|
throw new Error("bad x: need 0 < x < p");
|
|
1374
1374
|
const t = Nt(e * e), n = Nt(t * e + BigInt(7));
|
|
1375
1375
|
let r = ir(n);
|
|
1376
|
-
r % nt !==
|
|
1376
|
+
r % nt !== lt && (r = Nt(-r));
|
|
1377
1377
|
const i = new Xt(e, r, rr);
|
|
1378
1378
|
return i.assertValidity(), i;
|
|
1379
1379
|
}
|
|
1380
1380
|
function ar(...e) {
|
|
1381
1381
|
return Ge(F(rt("BIP0340/challenge", ...e)));
|
|
1382
1382
|
}
|
|
1383
|
-
function
|
|
1383
|
+
function uo(e) {
|
|
1384
1384
|
return Mt(e).bytes;
|
|
1385
1385
|
}
|
|
1386
|
-
function
|
|
1387
|
-
const r = W("message", e), { bytes: i, scalar:
|
|
1388
|
-
if (
|
|
1386
|
+
function fo(e, t, n = Zn(32)) {
|
|
1387
|
+
const r = W("message", e), { bytes: i, scalar: o } = Mt(t), s = W("auxRand", n, 32), a = Ot(o ^ F(rt("BIP0340/aux", s))), c = rt("BIP0340/nonce", a, i, r), u = Ge(F(c));
|
|
1388
|
+
if (u === lt)
|
|
1389
1389
|
throw new Error("sign failed: k is zero");
|
|
1390
|
-
const { bytes: f, scalar:
|
|
1391
|
-
if (b.set(f, 0), b.set(Ot(Ge(
|
|
1390
|
+
const { bytes: f, scalar: l } = Mt(u), g = ar(f, i, r), b = new Uint8Array(64);
|
|
1391
|
+
if (b.set(f, 0), b.set(Ot(Ge(l + g * o)), 32), !cr(b, r, i))
|
|
1392
1392
|
throw new Error("sign: Invalid signature produced");
|
|
1393
1393
|
return b;
|
|
1394
1394
|
}
|
|
1395
1395
|
function cr(e, t, n) {
|
|
1396
|
-
const r = W("signature", e, 64), i = W("message", t),
|
|
1396
|
+
const r = W("signature", e, 64), i = W("message", t), o = W("publicKey", n, 32);
|
|
1397
1397
|
try {
|
|
1398
|
-
const
|
|
1399
|
-
if (!
|
|
1398
|
+
const s = sr(F(o)), a = F(r.subarray(0, 32));
|
|
1399
|
+
if (!or(a))
|
|
1400
1400
|
return !1;
|
|
1401
1401
|
const c = F(r.subarray(32, 64));
|
|
1402
|
-
if (!
|
|
1402
|
+
if (!co(c))
|
|
1403
1403
|
return !1;
|
|
1404
|
-
const
|
|
1404
|
+
const u = ar(Ot(a), Yt(s), i), f = lo(s, c, Ge(-u));
|
|
1405
1405
|
return !(!f || !f.hasEvenY() || f.toAffine().x !== a);
|
|
1406
1406
|
} catch {
|
|
1407
1407
|
return !1;
|
|
1408
1408
|
}
|
|
1409
1409
|
}
|
|
1410
1410
|
const We = {
|
|
1411
|
-
getPublicKey:
|
|
1412
|
-
sign:
|
|
1411
|
+
getPublicKey: uo,
|
|
1412
|
+
sign: fo,
|
|
1413
1413
|
verify: cr,
|
|
1414
1414
|
utils: {
|
|
1415
1415
|
randomPrivateKey: _e.utils.randomPrivateKey,
|
|
1416
|
-
lift_x:
|
|
1416
|
+
lift_x: sr,
|
|
1417
1417
|
pointToBytes: Yt,
|
|
1418
|
-
numberToBytesBE:
|
|
1418
|
+
numberToBytesBE: Se,
|
|
1419
1419
|
bytesToNumberBE: F,
|
|
1420
1420
|
taggedHash: rt,
|
|
1421
1421
|
mod: V
|
|
1422
1422
|
}
|
|
1423
1423
|
}, Kt = typeof globalThis == "object" && "crypto" in globalThis ? globalThis.crypto : void 0;
|
|
1424
1424
|
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
1425
|
-
const Qt = (e) => e instanceof Uint8Array, kt = (e) => new DataView(e.buffer, e.byteOffset, e.byteLength), ie = (e, t) => e << 32 - t | e >>> t,
|
|
1426
|
-
if (!
|
|
1425
|
+
const Qt = (e) => e instanceof Uint8Array, kt = (e) => new DataView(e.buffer, e.byteOffset, e.byteLength), ie = (e, t) => e << 32 - t | e >>> t, ho = new Uint8Array(new Uint32Array([287454020]).buffer)[0] === 68;
|
|
1426
|
+
if (!ho)
|
|
1427
1427
|
throw new Error("Non little-endian hardware is not supported");
|
|
1428
|
-
const
|
|
1428
|
+
const po = Array.from({ length: 256 }, (e, t) => t.toString(16).padStart(2, "0"));
|
|
1429
1429
|
function M(e) {
|
|
1430
1430
|
if (!Qt(e))
|
|
1431
1431
|
throw new Error("Uint8Array expected");
|
|
1432
1432
|
let t = "";
|
|
1433
1433
|
for (let n = 0; n < e.length; n++)
|
|
1434
|
-
t +=
|
|
1434
|
+
t += po[e[n]];
|
|
1435
1435
|
return t;
|
|
1436
1436
|
}
|
|
1437
1437
|
function G(e) {
|
|
@@ -1442,24 +1442,24 @@ function G(e) {
|
|
|
1442
1442
|
throw new Error("padded hex string expected, got unpadded hex of length " + t);
|
|
1443
1443
|
const n = new Uint8Array(t / 2);
|
|
1444
1444
|
for (let r = 0; r < n.length; r++) {
|
|
1445
|
-
const i = r * 2,
|
|
1446
|
-
if (Number.isNaN(
|
|
1445
|
+
const i = r * 2, o = e.slice(i, i + 2), s = Number.parseInt(o, 16);
|
|
1446
|
+
if (Number.isNaN(s) || s < 0)
|
|
1447
1447
|
throw new Error("Invalid byte sequence");
|
|
1448
|
-
n[r] =
|
|
1448
|
+
n[r] = s;
|
|
1449
1449
|
}
|
|
1450
1450
|
return n;
|
|
1451
1451
|
}
|
|
1452
|
-
function
|
|
1452
|
+
function yo(e) {
|
|
1453
1453
|
if (typeof e != "string")
|
|
1454
1454
|
throw new Error(`utf8ToBytes expected string, got ${typeof e}`);
|
|
1455
1455
|
return new Uint8Array(new TextEncoder().encode(e));
|
|
1456
1456
|
}
|
|
1457
1457
|
function Fe(e) {
|
|
1458
|
-
if (typeof e == "string" && (e =
|
|
1458
|
+
if (typeof e == "string" && (e = yo(e)), !Qt(e))
|
|
1459
1459
|
throw new Error(`expected Uint8Array, got ${typeof e}`);
|
|
1460
1460
|
return e;
|
|
1461
1461
|
}
|
|
1462
|
-
function
|
|
1462
|
+
function ut(...e) {
|
|
1463
1463
|
const t = new Uint8Array(e.reduce((r, i) => r + i.length, 0));
|
|
1464
1464
|
let n = 0;
|
|
1465
1465
|
return e.forEach((r) => {
|
|
@@ -1468,13 +1468,13 @@ function lt(...e) {
|
|
|
1468
1468
|
t.set(r, n), n += r.length;
|
|
1469
1469
|
}), t;
|
|
1470
1470
|
}
|
|
1471
|
-
class
|
|
1471
|
+
class lr {
|
|
1472
1472
|
// Safe version that clones internal state
|
|
1473
1473
|
clone() {
|
|
1474
1474
|
return this._cloneInto();
|
|
1475
1475
|
}
|
|
1476
1476
|
}
|
|
1477
|
-
function
|
|
1477
|
+
function ur(e) {
|
|
1478
1478
|
const t = (r) => e().update(Fe(r)).digest(), n = e();
|
|
1479
1479
|
return t.outputLen = n.outputLen, t.blockLen = n.blockLen, t.create = () => e(), t;
|
|
1480
1480
|
}
|
|
@@ -1487,7 +1487,7 @@ function Ht(e) {
|
|
|
1487
1487
|
if (!Number.isSafeInteger(e) || e < 0)
|
|
1488
1488
|
throw new Error(`Wrong positive integer: ${e}`);
|
|
1489
1489
|
}
|
|
1490
|
-
function
|
|
1490
|
+
function go(e) {
|
|
1491
1491
|
if (typeof e != "boolean")
|
|
1492
1492
|
throw new Error(`Expected boolean, not ${e}`);
|
|
1493
1493
|
}
|
|
@@ -1497,74 +1497,74 @@ function hr(e, ...t) {
|
|
|
1497
1497
|
if (t.length > 0 && !t.includes(e.length))
|
|
1498
1498
|
throw new Error(`Expected Uint8Array of length ${t}, not of length=${e.length}`);
|
|
1499
1499
|
}
|
|
1500
|
-
function
|
|
1500
|
+
function wo(e) {
|
|
1501
1501
|
if (typeof e != "function" || typeof e.create != "function")
|
|
1502
1502
|
throw new Error("Hash should be wrapped by utils.wrapConstructor");
|
|
1503
1503
|
Ht(e.outputLen), Ht(e.blockLen);
|
|
1504
1504
|
}
|
|
1505
|
-
function
|
|
1505
|
+
function bo(e, t = !0) {
|
|
1506
1506
|
if (e.destroyed)
|
|
1507
1507
|
throw new Error("Hash instance has been destroyed");
|
|
1508
1508
|
if (t && e.finished)
|
|
1509
1509
|
throw new Error("Hash#digest() has already been called");
|
|
1510
1510
|
}
|
|
1511
|
-
function
|
|
1511
|
+
function vo(e, t) {
|
|
1512
1512
|
hr(e);
|
|
1513
1513
|
const n = t.outputLen;
|
|
1514
1514
|
if (e.length < n)
|
|
1515
1515
|
throw new Error(`digestInto() expects output buffer of length at least ${n}`);
|
|
1516
1516
|
}
|
|
1517
|
-
const
|
|
1517
|
+
const oe = {
|
|
1518
1518
|
number: Ht,
|
|
1519
|
-
bool:
|
|
1519
|
+
bool: go,
|
|
1520
1520
|
bytes: hr,
|
|
1521
|
-
hash:
|
|
1522
|
-
exists:
|
|
1523
|
-
output:
|
|
1521
|
+
hash: wo,
|
|
1522
|
+
exists: bo,
|
|
1523
|
+
output: vo
|
|
1524
1524
|
};
|
|
1525
|
-
function
|
|
1525
|
+
function mo(e, t, n, r) {
|
|
1526
1526
|
if (typeof e.setBigUint64 == "function")
|
|
1527
1527
|
return e.setBigUint64(t, n, r);
|
|
1528
|
-
const i = BigInt(32),
|
|
1529
|
-
e.setUint32(t + c,
|
|
1528
|
+
const i = BigInt(32), o = BigInt(4294967295), s = Number(n >> i & o), a = Number(n & o), c = r ? 4 : 0, u = r ? 0 : 4;
|
|
1529
|
+
e.setUint32(t + c, s, r), e.setUint32(t + u, a, r);
|
|
1530
1530
|
}
|
|
1531
|
-
class
|
|
1531
|
+
class Eo extends lr {
|
|
1532
1532
|
constructor(t, n, r, i) {
|
|
1533
1533
|
super(), this.blockLen = t, this.outputLen = n, this.padOffset = r, this.isLE = i, this.finished = !1, this.length = 0, this.pos = 0, this.destroyed = !1, this.buffer = new Uint8Array(t), this.view = kt(this.buffer);
|
|
1534
1534
|
}
|
|
1535
1535
|
update(t) {
|
|
1536
|
-
|
|
1536
|
+
oe.exists(this);
|
|
1537
1537
|
const { view: n, buffer: r, blockLen: i } = this;
|
|
1538
1538
|
t = Fe(t);
|
|
1539
|
-
const
|
|
1540
|
-
for (let
|
|
1541
|
-
const a = Math.min(i - this.pos,
|
|
1539
|
+
const o = t.length;
|
|
1540
|
+
for (let s = 0; s < o; ) {
|
|
1541
|
+
const a = Math.min(i - this.pos, o - s);
|
|
1542
1542
|
if (a === i) {
|
|
1543
1543
|
const c = kt(t);
|
|
1544
|
-
for (; i <=
|
|
1545
|
-
this.process(c,
|
|
1544
|
+
for (; i <= o - s; s += i)
|
|
1545
|
+
this.process(c, s);
|
|
1546
1546
|
continue;
|
|
1547
1547
|
}
|
|
1548
|
-
r.set(t.subarray(
|
|
1548
|
+
r.set(t.subarray(s, s + a), this.pos), this.pos += a, s += a, this.pos === i && (this.process(n, 0), this.pos = 0);
|
|
1549
1549
|
}
|
|
1550
1550
|
return this.length += t.length, this.roundClean(), this;
|
|
1551
1551
|
}
|
|
1552
1552
|
digestInto(t) {
|
|
1553
|
-
|
|
1554
|
-
const { buffer: n, view: r, blockLen: i, isLE:
|
|
1555
|
-
let { pos:
|
|
1556
|
-
n[
|
|
1557
|
-
for (let
|
|
1558
|
-
n[
|
|
1559
|
-
|
|
1553
|
+
oe.exists(this), oe.output(t, this), this.finished = !0;
|
|
1554
|
+
const { buffer: n, view: r, blockLen: i, isLE: o } = this;
|
|
1555
|
+
let { pos: s } = this;
|
|
1556
|
+
n[s++] = 128, this.buffer.subarray(s).fill(0), this.padOffset > i - s && (this.process(r, 0), s = 0);
|
|
1557
|
+
for (let l = s; l < i; l++)
|
|
1558
|
+
n[l] = 0;
|
|
1559
|
+
mo(r, i - 8, BigInt(this.length * 8), o), this.process(r, 0);
|
|
1560
1560
|
const a = kt(t), c = this.outputLen;
|
|
1561
1561
|
if (c % 4)
|
|
1562
1562
|
throw new Error("_sha2: outputLen should be aligned to 32bit");
|
|
1563
|
-
const
|
|
1564
|
-
if (
|
|
1563
|
+
const u = c / 4, f = this.get();
|
|
1564
|
+
if (u > f.length)
|
|
1565
1565
|
throw new Error("_sha2: outputLen bigger than state");
|
|
1566
|
-
for (let
|
|
1567
|
-
a.setUint32(4 *
|
|
1566
|
+
for (let l = 0; l < u; l++)
|
|
1567
|
+
a.setUint32(4 * l, f[l], o);
|
|
1568
1568
|
}
|
|
1569
1569
|
digest() {
|
|
1570
1570
|
const { buffer: t, outputLen: n } = this;
|
|
@@ -1574,11 +1574,11 @@ class ms extends ur {
|
|
|
1574
1574
|
}
|
|
1575
1575
|
_cloneInto(t) {
|
|
1576
1576
|
t || (t = new this.constructor()), t.set(...this.get());
|
|
1577
|
-
const { blockLen: n, buffer: r, length: i, finished:
|
|
1578
|
-
return t.length = i, t.pos = a, t.finished =
|
|
1577
|
+
const { blockLen: n, buffer: r, length: i, finished: o, destroyed: s, pos: a } = this;
|
|
1578
|
+
return t.length = i, t.pos = a, t.finished = o, t.destroyed = s, i % n && t.buffer.set(r), t;
|
|
1579
1579
|
}
|
|
1580
1580
|
}
|
|
1581
|
-
const
|
|
1581
|
+
const xo = (e, t, n) => e & t ^ ~e & n, Ao = (e, t, n) => e & t ^ e & n ^ t & n, So = new Uint32Array([
|
|
1582
1582
|
1116352408,
|
|
1583
1583
|
1899447441,
|
|
1584
1584
|
3049323471,
|
|
@@ -1653,31 +1653,31 @@ const Es = (e, t, n) => e & t ^ ~e & n, xs = (e, t, n) => e & t ^ e & n ^ t & n,
|
|
|
1653
1653
|
528734635,
|
|
1654
1654
|
1541459225
|
|
1655
1655
|
]), Ee = new Uint32Array(64);
|
|
1656
|
-
class dr extends
|
|
1656
|
+
class dr extends Eo {
|
|
1657
1657
|
constructor() {
|
|
1658
1658
|
super(64, 32, 8, !1), this.A = me[0] | 0, this.B = me[1] | 0, this.C = me[2] | 0, this.D = me[3] | 0, this.E = me[4] | 0, this.F = me[5] | 0, this.G = me[6] | 0, this.H = me[7] | 0;
|
|
1659
1659
|
}
|
|
1660
1660
|
get() {
|
|
1661
|
-
const { A: t, B: n, C: r, D: i, E:
|
|
1662
|
-
return [t, n, r, i,
|
|
1661
|
+
const { A: t, B: n, C: r, D: i, E: o, F: s, G: a, H: c } = this;
|
|
1662
|
+
return [t, n, r, i, o, s, a, c];
|
|
1663
1663
|
}
|
|
1664
1664
|
// prettier-ignore
|
|
1665
|
-
set(t, n, r, i,
|
|
1666
|
-
this.A = t | 0, this.B = n | 0, this.C = r | 0, this.D = i | 0, this.E =
|
|
1665
|
+
set(t, n, r, i, o, s, a, c) {
|
|
1666
|
+
this.A = t | 0, this.B = n | 0, this.C = r | 0, this.D = i | 0, this.E = o | 0, this.F = s | 0, this.G = a | 0, this.H = c | 0;
|
|
1667
1667
|
}
|
|
1668
1668
|
process(t, n) {
|
|
1669
|
-
for (let
|
|
1670
|
-
Ee[
|
|
1671
|
-
for (let
|
|
1672
|
-
const g = Ee[
|
|
1673
|
-
Ee[
|
|
1669
|
+
for (let l = 0; l < 16; l++, n += 4)
|
|
1670
|
+
Ee[l] = t.getUint32(n, !1);
|
|
1671
|
+
for (let l = 16; l < 64; l++) {
|
|
1672
|
+
const g = Ee[l - 15], b = Ee[l - 2], p = ie(g, 7) ^ ie(g, 18) ^ g >>> 3, h = ie(b, 17) ^ ie(b, 19) ^ b >>> 10;
|
|
1673
|
+
Ee[l] = h + Ee[l - 7] + p + Ee[l - 16] | 0;
|
|
1674
1674
|
}
|
|
1675
|
-
let { A: r, B: i, C:
|
|
1676
|
-
for (let
|
|
1677
|
-
const g = ie(a, 6) ^ ie(a, 11) ^ ie(a, 25), b = f + g +
|
|
1678
|
-
f =
|
|
1675
|
+
let { A: r, B: i, C: o, D: s, E: a, F: c, G: u, H: f } = this;
|
|
1676
|
+
for (let l = 0; l < 64; l++) {
|
|
1677
|
+
const g = ie(a, 6) ^ ie(a, 11) ^ ie(a, 25), b = f + g + xo(a, c, u) + So[l] + Ee[l] | 0, h = (ie(r, 2) ^ ie(r, 13) ^ ie(r, 22)) + Ao(r, i, o) | 0;
|
|
1678
|
+
f = u, u = c, c = a, a = s + b | 0, s = o, o = i, i = r, r = b + h | 0;
|
|
1679
1679
|
}
|
|
1680
|
-
r = r + this.A | 0, i = i + this.B | 0,
|
|
1680
|
+
r = r + this.A | 0, i = i + this.B | 0, o = o + this.C | 0, s = s + this.D | 0, a = a + this.E | 0, c = c + this.F | 0, u = u + this.G | 0, f = f + this.H | 0, this.set(r, i, o, s, a, c, u, f);
|
|
1681
1681
|
}
|
|
1682
1682
|
roundClean() {
|
|
1683
1683
|
Ee.fill(0);
|
|
@@ -1686,20 +1686,20 @@ class dr extends ms {
|
|
|
1686
1686
|
this.set(0, 0, 0, 0, 0, 0, 0, 0), this.buffer.fill(0);
|
|
1687
1687
|
}
|
|
1688
1688
|
}
|
|
1689
|
-
class
|
|
1689
|
+
class No extends dr {
|
|
1690
1690
|
constructor() {
|
|
1691
1691
|
super(), this.A = -1056596264, this.B = 914150663, this.C = 812702999, this.D = -150054599, this.E = -4191439, this.F = 1750603025, this.G = 1694076839, this.H = -1090891868, this.outputLen = 28;
|
|
1692
1692
|
}
|
|
1693
1693
|
}
|
|
1694
|
-
const fe =
|
|
1695
|
-
|
|
1694
|
+
const fe = ur(() => new dr());
|
|
1695
|
+
ur(() => new No());
|
|
1696
1696
|
/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
1697
1697
|
function ze(e) {
|
|
1698
1698
|
if (!Number.isSafeInteger(e))
|
|
1699
1699
|
throw new Error(`Wrong integer: ${e}`);
|
|
1700
1700
|
}
|
|
1701
1701
|
function de(...e) {
|
|
1702
|
-
const t = (i,
|
|
1702
|
+
const t = (i, o) => (s) => i(o(s)), n = Array.from(e).reverse().reduce((i, o) => i ? t(i, o.encode) : o.encode, void 0), r = e.reduce((i, o) => i ? t(i, o.decode) : o.decode, void 0);
|
|
1703
1703
|
return { encode: n, decode: r };
|
|
1704
1704
|
}
|
|
1705
1705
|
function pe(e) {
|
|
@@ -1791,26 +1791,26 @@ function Ln(e, t, n) {
|
|
|
1791
1791
|
if (!e.length)
|
|
1792
1792
|
return [];
|
|
1793
1793
|
let r = 0;
|
|
1794
|
-
const i = [],
|
|
1795
|
-
for (
|
|
1796
|
-
if (ze(
|
|
1797
|
-
throw new Error(`Wrong integer: ${
|
|
1794
|
+
const i = [], o = Array.from(e);
|
|
1795
|
+
for (o.forEach((s) => {
|
|
1796
|
+
if (ze(s), s < 0 || s >= t)
|
|
1797
|
+
throw new Error(`Wrong integer: ${s}`);
|
|
1798
1798
|
}); ; ) {
|
|
1799
|
-
let
|
|
1800
|
-
for (let c = r; c <
|
|
1801
|
-
const
|
|
1802
|
-
if (!Number.isSafeInteger(f) || t *
|
|
1799
|
+
let s = 0, a = !0;
|
|
1800
|
+
for (let c = r; c < o.length; c++) {
|
|
1801
|
+
const u = o[c], f = t * s + u;
|
|
1802
|
+
if (!Number.isSafeInteger(f) || t * s / t !== s || f - u !== t * s)
|
|
1803
1803
|
throw new Error("convertRadix: carry overflow");
|
|
1804
|
-
if (
|
|
1804
|
+
if (s = f % n, o[c] = Math.floor(f / n), !Number.isSafeInteger(o[c]) || o[c] * n + s !== f)
|
|
1805
1805
|
throw new Error("convertRadix: carry overflow");
|
|
1806
1806
|
if (a)
|
|
1807
|
-
|
|
1807
|
+
o[c] ? a = !1 : r = c;
|
|
1808
1808
|
else continue;
|
|
1809
1809
|
}
|
|
1810
|
-
if (i.push(
|
|
1810
|
+
if (i.push(s), a)
|
|
1811
1811
|
break;
|
|
1812
1812
|
}
|
|
1813
|
-
for (let
|
|
1813
|
+
for (let s = 0; s < e.length - 1 && e[s] === 0; s++)
|
|
1814
1814
|
i.push(0);
|
|
1815
1815
|
return i.reverse();
|
|
1816
1816
|
}
|
|
@@ -1824,24 +1824,24 @@ function Pt(e, t, n, r) {
|
|
|
1824
1824
|
throw new Error(`convertRadix2: wrong to=${n}`);
|
|
1825
1825
|
if (it(t, n) > 32)
|
|
1826
1826
|
throw new Error(`convertRadix2: carry overflow from=${t} to=${n} carryBits=${it(t, n)}`);
|
|
1827
|
-
let i = 0,
|
|
1828
|
-
const
|
|
1827
|
+
let i = 0, o = 0;
|
|
1828
|
+
const s = 2 ** n - 1, a = [];
|
|
1829
1829
|
for (const c of e) {
|
|
1830
1830
|
if (ze(c), c >= 2 ** t)
|
|
1831
1831
|
throw new Error(`convertRadix2: invalid data word=${c} from=${t}`);
|
|
1832
|
-
if (i = i << t | c,
|
|
1833
|
-
throw new Error(`convertRadix2: carry overflow pos=${
|
|
1834
|
-
for (
|
|
1835
|
-
a.push((i >>
|
|
1836
|
-
i &= 2 **
|
|
1832
|
+
if (i = i << t | c, o + t > 32)
|
|
1833
|
+
throw new Error(`convertRadix2: carry overflow pos=${o} from=${t}`);
|
|
1834
|
+
for (o += t; o >= n; o -= n)
|
|
1835
|
+
a.push((i >> o - n & s) >>> 0);
|
|
1836
|
+
i &= 2 ** o - 1;
|
|
1837
1837
|
}
|
|
1838
|
-
if (i = i << n -
|
|
1838
|
+
if (i = i << n - o & s, !r && o >= t)
|
|
1839
1839
|
throw new Error("Excess padding");
|
|
1840
1840
|
if (!r && i)
|
|
1841
1841
|
throw new Error(`Non-zero padding: ${i}`);
|
|
1842
|
-
return r &&
|
|
1842
|
+
return r && o > 0 && a.push(i >>> 0), a;
|
|
1843
1843
|
}
|
|
1844
|
-
function
|
|
1844
|
+
function Ko(e) {
|
|
1845
1845
|
return ze(e), {
|
|
1846
1846
|
encode: (t) => {
|
|
1847
1847
|
if (!(t instanceof Uint8Array))
|
|
@@ -1883,13 +1883,13 @@ function $n(e) {
|
|
|
1883
1883
|
}
|
|
1884
1884
|
};
|
|
1885
1885
|
}
|
|
1886
|
-
const
|
|
1886
|
+
const ko = de(Ne(4), pe("0123456789ABCDEF"), ye("")), Bo = de(Ne(5), pe("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"), ft(5), ye(""));
|
|
1887
1887
|
de(Ne(5), pe("0123456789ABCDEFGHIJKLMNOPQRSTUV"), ft(5), ye(""));
|
|
1888
1888
|
de(Ne(5), pe("0123456789ABCDEFGHJKMNPQRSTVWXYZ"), ye(""), pr((e) => e.toUpperCase().replace(/O/g, "0").replace(/[IL]/g, "1")));
|
|
1889
|
-
const he = de(Ne(6), pe("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"), ft(6), ye("")),
|
|
1889
|
+
const he = de(Ne(6), pe("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"), ft(6), ye("")), Co = de(Ne(6), pe("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"), ft(6), ye("")), en = (e) => de(Ko(58), pe(e), ye("")), qt = en("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");
|
|
1890
1890
|
en("123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ");
|
|
1891
1891
|
en("rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz");
|
|
1892
|
-
const Tn = [0, 2, 3, 5, 6, 7, 9, 10, 11],
|
|
1892
|
+
const Tn = [0, 2, 3, 5, 6, 7, 9, 10, 11], Uo = {
|
|
1893
1893
|
encode(e) {
|
|
1894
1894
|
let t = "";
|
|
1895
1895
|
for (let n = 0; n < e.length; n += 8) {
|
|
@@ -1901,11 +1901,11 @@ const Tn = [0, 2, 3, 5, 6, 7, 9, 10, 11], Cs = {
|
|
|
1901
1901
|
decode(e) {
|
|
1902
1902
|
let t = [];
|
|
1903
1903
|
for (let n = 0; n < e.length; n += 11) {
|
|
1904
|
-
const r = e.slice(n, n + 11), i = Tn.indexOf(r.length),
|
|
1905
|
-
for (let
|
|
1906
|
-
if (s
|
|
1904
|
+
const r = e.slice(n, n + 11), i = Tn.indexOf(r.length), o = qt.decode(r);
|
|
1905
|
+
for (let s = 0; s < o.length - i; s++)
|
|
1906
|
+
if (o[s] !== 0)
|
|
1907
1907
|
throw new Error("base58xmr: wrong padding");
|
|
1908
|
-
t = t.concat(Array.from(
|
|
1908
|
+
t = t.concat(Array.from(o.slice(o.length - i)));
|
|
1909
1909
|
}
|
|
1910
1910
|
return Uint8Array.from(t);
|
|
1911
1911
|
}
|
|
@@ -1920,38 +1920,38 @@ function Ze(e) {
|
|
|
1920
1920
|
function On(e, t, n = 1) {
|
|
1921
1921
|
const r = e.length;
|
|
1922
1922
|
let i = 1;
|
|
1923
|
-
for (let
|
|
1924
|
-
const
|
|
1925
|
-
if (
|
|
1923
|
+
for (let o = 0; o < r; o++) {
|
|
1924
|
+
const s = e.charCodeAt(o);
|
|
1925
|
+
if (s < 33 || s > 126)
|
|
1926
1926
|
throw new Error(`Invalid prefix (${e})`);
|
|
1927
|
-
i = Ze(i) ^
|
|
1927
|
+
i = Ze(i) ^ s >> 5;
|
|
1928
1928
|
}
|
|
1929
1929
|
i = Ze(i);
|
|
1930
|
-
for (let
|
|
1931
|
-
i = Ze(i) ^ e.charCodeAt(
|
|
1932
|
-
for (let
|
|
1933
|
-
i = Ze(i) ^
|
|
1934
|
-
for (let
|
|
1930
|
+
for (let o = 0; o < r; o++)
|
|
1931
|
+
i = Ze(i) ^ e.charCodeAt(o) & 31;
|
|
1932
|
+
for (let o of t)
|
|
1933
|
+
i = Ze(i) ^ o;
|
|
1934
|
+
for (let o = 0; o < 6; o++)
|
|
1935
1935
|
i = Ze(i);
|
|
1936
1936
|
return i ^= n, Dt.encode(Pt([i % 2 ** 30], 30, 5, !1));
|
|
1937
1937
|
}
|
|
1938
1938
|
function gr(e) {
|
|
1939
|
-
const t = e === "bech32" ? 1 : 734539939, n = Ne(5), r = n.decode, i = n.encode,
|
|
1940
|
-
function
|
|
1939
|
+
const t = e === "bech32" ? 1 : 734539939, n = Ne(5), r = n.decode, i = n.encode, o = $n(r);
|
|
1940
|
+
function s(f, l, g = 90) {
|
|
1941
1941
|
if (typeof f != "string")
|
|
1942
1942
|
throw new Error(`bech32.encode prefix should be string, not ${typeof f}`);
|
|
1943
|
-
if (!Array.isArray(
|
|
1944
|
-
throw new Error(`bech32.encode words should be array of numbers, not ${typeof
|
|
1945
|
-
const b = f.length + 7 +
|
|
1943
|
+
if (!Array.isArray(l) || l.length && typeof l[0] != "number")
|
|
1944
|
+
throw new Error(`bech32.encode words should be array of numbers, not ${typeof l}`);
|
|
1945
|
+
const b = f.length + 7 + l.length;
|
|
1946
1946
|
if (g !== !1 && b > g)
|
|
1947
1947
|
throw new TypeError(`Length ${b} exceeds limit ${g}`);
|
|
1948
|
-
return f = f.toLowerCase(), `${f}1${Dt.encode(
|
|
1948
|
+
return f = f.toLowerCase(), `${f}1${Dt.encode(l)}${On(f, l, t)}`;
|
|
1949
1949
|
}
|
|
1950
|
-
function a(f,
|
|
1950
|
+
function a(f, l = 90) {
|
|
1951
1951
|
if (typeof f != "string")
|
|
1952
1952
|
throw new Error(`bech32.decode input should be string, not ${typeof f}`);
|
|
1953
|
-
if (f.length < 8 ||
|
|
1954
|
-
throw new TypeError(`Wrong string length: ${f.length} (${f}). Expected (8..${
|
|
1953
|
+
if (f.length < 8 || l !== !1 && f.length > l)
|
|
1954
|
+
throw new TypeError(`Wrong string length: ${f.length} (${f}). Expected (8..${l})`);
|
|
1955
1955
|
const g = f.toLowerCase();
|
|
1956
1956
|
if (f !== g && f !== f.toUpperCase())
|
|
1957
1957
|
throw new Error("String must be lowercase or uppercase");
|
|
@@ -1968,32 +1968,32 @@ function gr(e) {
|
|
|
1968
1968
|
return { prefix: p, words: d };
|
|
1969
1969
|
}
|
|
1970
1970
|
const c = $n(a);
|
|
1971
|
-
function
|
|
1972
|
-
const { prefix:
|
|
1973
|
-
return { prefix:
|
|
1971
|
+
function u(f) {
|
|
1972
|
+
const { prefix: l, words: g } = a(f, !1);
|
|
1973
|
+
return { prefix: l, words: g, bytes: r(g) };
|
|
1974
1974
|
}
|
|
1975
|
-
return { encode:
|
|
1975
|
+
return { encode: s, decode: a, decodeToBytes: u, decodeUnsafe: c, fromWords: r, fromWordsUnsafe: o, toWords: i };
|
|
1976
1976
|
}
|
|
1977
1977
|
const je = gr("bech32");
|
|
1978
1978
|
gr("bech32m");
|
|
1979
|
-
const
|
|
1979
|
+
const _o = {
|
|
1980
1980
|
encode: (e) => new TextDecoder().decode(e),
|
|
1981
1981
|
decode: (e) => new TextEncoder().encode(e)
|
|
1982
|
-
},
|
|
1982
|
+
}, Io = de(Ne(4), pe("0123456789abcdef"), ye(""), pr((e) => {
|
|
1983
1983
|
if (typeof e != "string" || e.length % 2)
|
|
1984
1984
|
throw new TypeError(`hex.decode: expected string, got ${typeof e} with length ${e.length}`);
|
|
1985
1985
|
return e.toLowerCase();
|
|
1986
|
-
})),
|
|
1987
|
-
utf8:
|
|
1988
|
-
hex:
|
|
1989
|
-
base16:
|
|
1990
|
-
base32:
|
|
1986
|
+
})), Lo = {
|
|
1987
|
+
utf8: _o,
|
|
1988
|
+
hex: Io,
|
|
1989
|
+
base16: ko,
|
|
1990
|
+
base32: Bo,
|
|
1991
1991
|
base64: he,
|
|
1992
|
-
base64url:
|
|
1992
|
+
base64url: Co,
|
|
1993
1993
|
base58: qt,
|
|
1994
|
-
base58xmr:
|
|
1994
|
+
base58xmr: Uo
|
|
1995
1995
|
};
|
|
1996
|
-
`${Object.keys(
|
|
1996
|
+
`${Object.keys(Lo).join(", ")}`;
|
|
1997
1997
|
function Bt(e) {
|
|
1998
1998
|
if (!Number.isSafeInteger(e) || e < 0)
|
|
1999
1999
|
throw new Error(`positive integer expected, not ${e}`);
|
|
@@ -2002,25 +2002,25 @@ function Mn(e) {
|
|
|
2002
2002
|
if (typeof e != "boolean")
|
|
2003
2003
|
throw new Error(`boolean expected, not ${e}`);
|
|
2004
2004
|
}
|
|
2005
|
-
function
|
|
2005
|
+
function $o(e) {
|
|
2006
2006
|
return e instanceof Uint8Array || e != null && typeof e == "object" && e.constructor.name === "Uint8Array";
|
|
2007
2007
|
}
|
|
2008
2008
|
function ce(e, ...t) {
|
|
2009
|
-
if (
|
|
2009
|
+
if (!$o(e))
|
|
2010
2010
|
throw new Error("Uint8Array expected");
|
|
2011
2011
|
if (t.length > 0 && !t.includes(e.length))
|
|
2012
2012
|
throw new Error(`Uint8Array expected of length ${t}, not of length=${e.length}`);
|
|
2013
2013
|
}
|
|
2014
2014
|
/*! noble-ciphers - MIT License (c) 2023 Paul Miller (paulmillr.com) */
|
|
2015
|
-
const Z = (e) => new Uint32Array(e.buffer, e.byteOffset, Math.floor(e.byteLength / 4)),
|
|
2016
|
-
if (
|
|
2015
|
+
const Z = (e) => new Uint32Array(e.buffer, e.byteOffset, Math.floor(e.byteLength / 4)), To = new Uint8Array(new Uint32Array([287454020]).buffer)[0] === 68;
|
|
2016
|
+
if (!To)
|
|
2017
2017
|
throw new Error("Non little-endian hardware is not supported");
|
|
2018
|
-
function
|
|
2018
|
+
function Ro(e, t) {
|
|
2019
2019
|
if (t == null || typeof t != "object")
|
|
2020
2020
|
throw new Error("options must be defined");
|
|
2021
2021
|
return Object.assign(e, t);
|
|
2022
2022
|
}
|
|
2023
|
-
function
|
|
2023
|
+
function Oo(e, t) {
|
|
2024
2024
|
if (e.length !== t.length)
|
|
2025
2025
|
return !1;
|
|
2026
2026
|
let n = 0;
|
|
@@ -2028,9 +2028,9 @@ function Rs(e, t) {
|
|
|
2028
2028
|
n |= e[r] ^ t[r];
|
|
2029
2029
|
return n === 0;
|
|
2030
2030
|
}
|
|
2031
|
-
const
|
|
2031
|
+
const Mo = /* @__NO_SIDE_EFFECTS__ */ (e, t) => (Object.assign(t, e), t), Ae = 16, Ho = 283;
|
|
2032
2032
|
function tn(e) {
|
|
2033
|
-
return e << 1 ^
|
|
2033
|
+
return e << 1 ^ Ho & -(e >> 7);
|
|
2034
2034
|
}
|
|
2035
2035
|
function He(e, t) {
|
|
2036
2036
|
let n = 0;
|
|
@@ -2049,19 +2049,19 @@ const jt = /* @__PURE__ */ (() => {
|
|
|
2049
2049
|
r |= r << 8, t[e[n]] = (r ^ r >> 4 ^ r >> 5 ^ r >> 6 ^ r >> 7 ^ 99) & 255;
|
|
2050
2050
|
}
|
|
2051
2051
|
return t;
|
|
2052
|
-
})(),
|
|
2052
|
+
})(), Po = /* @__PURE__ */ jt.map((e, t) => jt.indexOf(t)), qo = (e) => e << 24 | e >>> 8, Ct = (e) => e << 8 | e >>> 24;
|
|
2053
2053
|
function wr(e, t) {
|
|
2054
2054
|
if (e.length !== 256)
|
|
2055
2055
|
throw new Error("Wrong sbox length");
|
|
2056
|
-
const n = new Uint32Array(256).map((
|
|
2057
|
-
for (let
|
|
2056
|
+
const n = new Uint32Array(256).map((u, f) => t(e[f])), r = n.map(Ct), i = r.map(Ct), o = i.map(Ct), s = new Uint32Array(256 * 256), a = new Uint32Array(256 * 256), c = new Uint16Array(256 * 256);
|
|
2057
|
+
for (let u = 0; u < 256; u++)
|
|
2058
2058
|
for (let f = 0; f < 256; f++) {
|
|
2059
|
-
const
|
|
2060
|
-
|
|
2059
|
+
const l = u * 256 + f;
|
|
2060
|
+
s[l] = n[u] ^ r[f], a[l] = i[u] ^ o[f], c[l] = e[u] << 8 | e[f];
|
|
2061
2061
|
}
|
|
2062
|
-
return { sbox: e, sbox2: c, T0: n, T1: r, T2: i, T3:
|
|
2062
|
+
return { sbox: e, sbox2: c, T0: n, T1: r, T2: i, T3: o, T01: s, T23: a };
|
|
2063
2063
|
}
|
|
2064
|
-
const nn = /* @__PURE__ */ wr(jt, (e) => He(e, 3) << 24 | e << 16 | e << 8 | He(e, 2)), br = /* @__PURE__ */ wr(
|
|
2064
|
+
const nn = /* @__PURE__ */ wr(jt, (e) => He(e, 3) << 24 | e << 16 | e << 8 | He(e, 2)), br = /* @__PURE__ */ wr(Po, (e) => He(e, 11) << 24 | He(e, 13) << 16 | He(e, 9) << 8 | He(e, 14)), Do = /* @__PURE__ */ (() => {
|
|
2065
2065
|
const e = new Uint8Array(16);
|
|
2066
2066
|
for (let t = 0, n = 1; t < 16; t++, n = tn(n))
|
|
2067
2067
|
e[t] = n;
|
|
@@ -2072,55 +2072,55 @@ function vr(e) {
|
|
|
2072
2072
|
const t = e.length;
|
|
2073
2073
|
if (![16, 24, 32].includes(t))
|
|
2074
2074
|
throw new Error(`aes: wrong key size: should be 16, 24 or 32, got: ${t}`);
|
|
2075
|
-
const { sbox2: n } = nn, r = Z(e), i = r.length,
|
|
2076
|
-
|
|
2077
|
-
for (let a = i; a <
|
|
2078
|
-
let c =
|
|
2079
|
-
a % i === 0 ? c =
|
|
2075
|
+
const { sbox2: n } = nn, r = Z(e), i = r.length, o = (a) => se(n, a, a, a, a), s = new Uint32Array(t + 28);
|
|
2076
|
+
s.set(r);
|
|
2077
|
+
for (let a = i; a < s.length; a++) {
|
|
2078
|
+
let c = s[a - 1];
|
|
2079
|
+
a % i === 0 ? c = o(qo(c)) ^ Do[a / i - 1] : i > 6 && a % i === 4 && (c = o(c)), s[a] = s[a - i] ^ c;
|
|
2080
2080
|
}
|
|
2081
|
-
return
|
|
2081
|
+
return s;
|
|
2082
2082
|
}
|
|
2083
|
-
function
|
|
2084
|
-
const t = vr(e), n = t.slice(), r = t.length, { sbox2: i } = nn, { T0:
|
|
2085
|
-
for (let
|
|
2083
|
+
function jo(e) {
|
|
2084
|
+
const t = vr(e), n = t.slice(), r = t.length, { sbox2: i } = nn, { T0: o, T1: s, T2: a, T3: c } = br;
|
|
2085
|
+
for (let u = 0; u < r; u += 4)
|
|
2086
2086
|
for (let f = 0; f < 4; f++)
|
|
2087
|
-
n[
|
|
2087
|
+
n[u + f] = t[r - u - 4 + f];
|
|
2088
2088
|
t.fill(0);
|
|
2089
|
-
for (let
|
|
2090
|
-
const f = n[
|
|
2091
|
-
n[
|
|
2089
|
+
for (let u = 4; u < r - 4; u++) {
|
|
2090
|
+
const f = n[u], l = se(i, f, f, f, f);
|
|
2091
|
+
n[u] = o[l & 255] ^ s[l >>> 8 & 255] ^ a[l >>> 16 & 255] ^ c[l >>> 24];
|
|
2092
2092
|
}
|
|
2093
2093
|
return n;
|
|
2094
2094
|
}
|
|
2095
|
-
function xe(e, t, n, r, i,
|
|
2096
|
-
return e[n << 8 & 65280 | r >>> 8 & 255] ^ t[i >>> 8 & 65280 |
|
|
2095
|
+
function xe(e, t, n, r, i, o) {
|
|
2096
|
+
return e[n << 8 & 65280 | r >>> 8 & 255] ^ t[i >>> 8 & 65280 | o >>> 24 & 255];
|
|
2097
2097
|
}
|
|
2098
|
-
function
|
|
2098
|
+
function se(e, t, n, r, i) {
|
|
2099
2099
|
return e[t & 255 | n & 65280] | e[r >>> 16 & 255 | i >>> 16 & 65280] << 16;
|
|
2100
2100
|
}
|
|
2101
2101
|
function Hn(e, t, n, r, i) {
|
|
2102
|
-
const { sbox2:
|
|
2102
|
+
const { sbox2: o, T01: s, T23: a } = nn;
|
|
2103
2103
|
let c = 0;
|
|
2104
2104
|
t ^= e[c++], n ^= e[c++], r ^= e[c++], i ^= e[c++];
|
|
2105
|
-
const
|
|
2106
|
-
for (let p = 0; p <
|
|
2107
|
-
const h = e[c++] ^ xe(
|
|
2105
|
+
const u = e.length / 4 - 2;
|
|
2106
|
+
for (let p = 0; p < u; p++) {
|
|
2107
|
+
const h = e[c++] ^ xe(s, a, t, n, r, i), d = e[c++] ^ xe(s, a, n, r, i, t), y = e[c++] ^ xe(s, a, r, i, t, n), E = e[c++] ^ xe(s, a, i, t, n, r);
|
|
2108
2108
|
t = h, n = d, r = y, i = E;
|
|
2109
2109
|
}
|
|
2110
|
-
const f = e[c++] ^
|
|
2111
|
-
return { s0: f, s1:
|
|
2110
|
+
const f = e[c++] ^ se(o, t, n, r, i), l = e[c++] ^ se(o, n, r, i, t), g = e[c++] ^ se(o, r, i, t, n), b = e[c++] ^ se(o, i, t, n, r);
|
|
2111
|
+
return { s0: f, s1: l, s2: g, s3: b };
|
|
2112
2112
|
}
|
|
2113
|
-
function
|
|
2114
|
-
const { sbox2:
|
|
2113
|
+
function zo(e, t, n, r, i) {
|
|
2114
|
+
const { sbox2: o, T01: s, T23: a } = br;
|
|
2115
2115
|
let c = 0;
|
|
2116
2116
|
t ^= e[c++], n ^= e[c++], r ^= e[c++], i ^= e[c++];
|
|
2117
|
-
const
|
|
2118
|
-
for (let p = 0; p <
|
|
2119
|
-
const h = e[c++] ^ xe(
|
|
2117
|
+
const u = e.length / 4 - 2;
|
|
2118
|
+
for (let p = 0; p < u; p++) {
|
|
2119
|
+
const h = e[c++] ^ xe(s, a, t, i, r, n), d = e[c++] ^ xe(s, a, n, t, i, r), y = e[c++] ^ xe(s, a, r, n, t, i), E = e[c++] ^ xe(s, a, i, r, n, t);
|
|
2120
2120
|
t = h, n = d, r = y, i = E;
|
|
2121
2121
|
}
|
|
2122
|
-
const f = e[c++] ^
|
|
2123
|
-
return { s0: f, s1:
|
|
2122
|
+
const f = e[c++] ^ se(o, t, i, r, n), l = e[c++] ^ se(o, n, t, i, r), g = e[c++] ^ se(o, r, n, t, i), b = e[c++] ^ se(o, i, r, n, t);
|
|
2123
|
+
return { s0: f, s1: l, s2: g, s3: b };
|
|
2124
2124
|
}
|
|
2125
2125
|
function mr(e, t) {
|
|
2126
2126
|
if (!t)
|
|
@@ -2129,24 +2129,24 @@ function mr(e, t) {
|
|
|
2129
2129
|
throw new Error(`aes: wrong destination length, expected at least ${e}, got: ${t.length}`);
|
|
2130
2130
|
return t;
|
|
2131
2131
|
}
|
|
2132
|
-
function
|
|
2133
|
-
if (ce(e), e.length %
|
|
2134
|
-
throw new Error(`aes/(cbc-ecb).decrypt ciphertext should consist of blocks with size ${
|
|
2132
|
+
function Vo(e) {
|
|
2133
|
+
if (ce(e), e.length % Ae !== 0)
|
|
2134
|
+
throw new Error(`aes/(cbc-ecb).decrypt ciphertext should consist of blocks with size ${Ae}`);
|
|
2135
2135
|
}
|
|
2136
|
-
function
|
|
2136
|
+
function Wo(e, t, n) {
|
|
2137
2137
|
let r = e.length;
|
|
2138
|
-
const i = r %
|
|
2138
|
+
const i = r % Ae;
|
|
2139
2139
|
if (!t && i !== 0)
|
|
2140
2140
|
throw new Error("aec/(cbc-ecb): unpadded plaintext with disabled padding");
|
|
2141
|
-
const
|
|
2141
|
+
const o = Z(e);
|
|
2142
2142
|
if (t) {
|
|
2143
|
-
let c =
|
|
2144
|
-
c || (c =
|
|
2143
|
+
let c = Ae - i;
|
|
2144
|
+
c || (c = Ae), r = r + c;
|
|
2145
2145
|
}
|
|
2146
|
-
const
|
|
2147
|
-
return { b:
|
|
2146
|
+
const s = mr(r, n), a = Z(s);
|
|
2147
|
+
return { b: o, o: a, out: s };
|
|
2148
2148
|
}
|
|
2149
|
-
function
|
|
2149
|
+
function Zo(e, t) {
|
|
2150
2150
|
if (!t)
|
|
2151
2151
|
return e;
|
|
2152
2152
|
const n = e.length;
|
|
@@ -2156,93 +2156,93 @@ function Ws(e, t) {
|
|
|
2156
2156
|
if (r <= 0 || r > 16)
|
|
2157
2157
|
throw new Error(`aes/pcks5: wrong padding byte: ${r}`);
|
|
2158
2158
|
const i = e.subarray(0, -r);
|
|
2159
|
-
for (let
|
|
2160
|
-
if (e[n -
|
|
2159
|
+
for (let o = 0; o < r; o++)
|
|
2160
|
+
if (e[n - o - 1] !== r)
|
|
2161
2161
|
throw new Error("aes/pcks5: wrong padding");
|
|
2162
2162
|
return i;
|
|
2163
2163
|
}
|
|
2164
|
-
function
|
|
2164
|
+
function Go(e) {
|
|
2165
2165
|
const t = new Uint8Array(16), n = Z(t);
|
|
2166
2166
|
t.set(e);
|
|
2167
|
-
const r =
|
|
2168
|
-
for (let i =
|
|
2167
|
+
const r = Ae - e.length;
|
|
2168
|
+
for (let i = Ae - r; i < Ae; i++)
|
|
2169
2169
|
t[i] = r;
|
|
2170
2170
|
return n;
|
|
2171
2171
|
}
|
|
2172
|
-
const Er = /* @__PURE__ */
|
|
2172
|
+
const Er = /* @__PURE__ */ Mo({ blockSize: 16, nonceLength: 16 }, function(t, n, r = {}) {
|
|
2173
2173
|
ce(t), ce(n, 16);
|
|
2174
2174
|
const i = !r.disablePadding;
|
|
2175
2175
|
return {
|
|
2176
|
-
encrypt: (
|
|
2177
|
-
const a = vr(t), { b: c, o:
|
|
2178
|
-
let g =
|
|
2176
|
+
encrypt: (o, s) => {
|
|
2177
|
+
const a = vr(t), { b: c, o: u, out: f } = Wo(o, i, s), l = Z(n);
|
|
2178
|
+
let g = l[0], b = l[1], p = l[2], h = l[3], d = 0;
|
|
2179
2179
|
for (; d + 4 <= c.length; )
|
|
2180
|
-
g ^= c[d + 0], b ^= c[d + 1], p ^= c[d + 2], h ^= c[d + 3], { s0: g, s1: b, s2: p, s3: h } = Hn(a, g, b, p, h),
|
|
2180
|
+
g ^= c[d + 0], b ^= c[d + 1], p ^= c[d + 2], h ^= c[d + 3], { s0: g, s1: b, s2: p, s3: h } = Hn(a, g, b, p, h), u[d++] = g, u[d++] = b, u[d++] = p, u[d++] = h;
|
|
2181
2181
|
if (i) {
|
|
2182
|
-
const y =
|
|
2183
|
-
g ^= y[0], b ^= y[1], p ^= y[2], h ^= y[3], { s0: g, s1: b, s2: p, s3: h } = Hn(a, g, b, p, h),
|
|
2182
|
+
const y = Go(o.subarray(d * 4));
|
|
2183
|
+
g ^= y[0], b ^= y[1], p ^= y[2], h ^= y[3], { s0: g, s1: b, s2: p, s3: h } = Hn(a, g, b, p, h), u[d++] = g, u[d++] = b, u[d++] = p, u[d++] = h;
|
|
2184
2184
|
}
|
|
2185
2185
|
return a.fill(0), f;
|
|
2186
2186
|
},
|
|
2187
|
-
decrypt: (
|
|
2188
|
-
|
|
2189
|
-
const a =
|
|
2187
|
+
decrypt: (o, s) => {
|
|
2188
|
+
Vo(o);
|
|
2189
|
+
const a = jo(t), c = Z(n), u = mr(o.length, s), f = Z(o), l = Z(u);
|
|
2190
2190
|
let g = c[0], b = c[1], p = c[2], h = c[3];
|
|
2191
2191
|
for (let d = 0; d + 4 <= f.length; ) {
|
|
2192
2192
|
const y = g, E = b, N = p, _ = h;
|
|
2193
2193
|
g = f[d + 0], b = f[d + 1], p = f[d + 2], h = f[d + 3];
|
|
2194
|
-
const { s0: B, s1: m, s2: x, s3:
|
|
2195
|
-
|
|
2194
|
+
const { s0: B, s1: m, s2: x, s3: A } = zo(a, g, b, p, h);
|
|
2195
|
+
l[d++] = B ^ y, l[d++] = m ^ E, l[d++] = x ^ N, l[d++] = A ^ _;
|
|
2196
2196
|
}
|
|
2197
|
-
return a.fill(0),
|
|
2197
|
+
return a.fill(0), Zo(u, i);
|
|
2198
2198
|
}
|
|
2199
2199
|
};
|
|
2200
|
-
}), xr = (e) => Uint8Array.from(e.split("").map((t) => t.charCodeAt(0))),
|
|
2201
|
-
|
|
2200
|
+
}), xr = (e) => Uint8Array.from(e.split("").map((t) => t.charCodeAt(0))), Fo = xr("expand 16-byte k"), Jo = xr("expand 32-byte k"), Yo = Z(Fo), Ar = Z(Jo);
|
|
2201
|
+
Ar.slice();
|
|
2202
2202
|
function L(e, t) {
|
|
2203
2203
|
return e << t | e >>> 32 - t;
|
|
2204
2204
|
}
|
|
2205
2205
|
function zt(e) {
|
|
2206
2206
|
return e.byteOffset % 4 === 0;
|
|
2207
2207
|
}
|
|
2208
|
-
const Ye = 64,
|
|
2209
|
-
function
|
|
2210
|
-
const c = i.length,
|
|
2211
|
-
for (let p = 0; p < c;
|
|
2212
|
-
if (e(t, n, r, f,
|
|
2208
|
+
const Ye = 64, Xo = 16, Sr = 2 ** 32 - 1, Pn = new Uint32Array();
|
|
2209
|
+
function Qo(e, t, n, r, i, o, s, a) {
|
|
2210
|
+
const c = i.length, u = new Uint8Array(Ye), f = Z(u), l = zt(i) && zt(o), g = l ? Z(i) : Pn, b = l ? Z(o) : Pn;
|
|
2211
|
+
for (let p = 0; p < c; s++) {
|
|
2212
|
+
if (e(t, n, r, f, s, a), s >= Sr)
|
|
2213
2213
|
throw new Error("arx: counter overflow");
|
|
2214
2214
|
const h = Math.min(Ye, c - p);
|
|
2215
|
-
if (
|
|
2215
|
+
if (l && h === Ye) {
|
|
2216
2216
|
const d = p / 4;
|
|
2217
2217
|
if (p % 4 !== 0)
|
|
2218
2218
|
throw new Error("arx: invalid block position");
|
|
2219
|
-
for (let y = 0, E; y <
|
|
2219
|
+
for (let y = 0, E; y < Xo; y++)
|
|
2220
2220
|
E = d + y, b[E] = g[E] ^ f[y];
|
|
2221
2221
|
p += Ye;
|
|
2222
2222
|
continue;
|
|
2223
2223
|
}
|
|
2224
2224
|
for (let d = 0, y; d < h; d++)
|
|
2225
|
-
y = p + d,
|
|
2225
|
+
y = p + d, o[y] = i[y] ^ u[d];
|
|
2226
2226
|
p += h;
|
|
2227
2227
|
}
|
|
2228
2228
|
}
|
|
2229
|
-
function
|
|
2230
|
-
const { allowShortKeys: n, extendNonceFn: r, counterLength: i, counterRight:
|
|
2229
|
+
function es(e, t) {
|
|
2230
|
+
const { allowShortKeys: n, extendNonceFn: r, counterLength: i, counterRight: o, rounds: s } = Ro({ allowShortKeys: !1, counterLength: 8, counterRight: !1, rounds: 20 }, t);
|
|
2231
2231
|
if (typeof e != "function")
|
|
2232
2232
|
throw new Error("core must be a function");
|
|
2233
|
-
return Bt(i), Bt(
|
|
2234
|
-
ce(a), ce(c), ce(
|
|
2235
|
-
const g =
|
|
2236
|
-
if (f || (f = new Uint8Array(g)), ce(f), Bt(
|
|
2233
|
+
return Bt(i), Bt(s), Mn(o), Mn(n), (a, c, u, f, l = 0) => {
|
|
2234
|
+
ce(a), ce(c), ce(u);
|
|
2235
|
+
const g = u.length;
|
|
2236
|
+
if (f || (f = new Uint8Array(g)), ce(f), Bt(l), l < 0 || l >= Sr)
|
|
2237
2237
|
throw new Error("arx: counter overflow");
|
|
2238
2238
|
if (f.length < g)
|
|
2239
2239
|
throw new Error(`arx: output (${f.length}) is shorter than data (${g})`);
|
|
2240
2240
|
const b = [];
|
|
2241
2241
|
let p = a.length, h, d;
|
|
2242
2242
|
if (p === 32)
|
|
2243
|
-
h = a.slice(), b.push(h), d =
|
|
2243
|
+
h = a.slice(), b.push(h), d = Ar;
|
|
2244
2244
|
else if (p === 16 && n)
|
|
2245
|
-
h = new Uint8Array(32), h.set(a), h.set(a, 16), d =
|
|
2245
|
+
h = new Uint8Array(32), h.set(a), h.set(a, 16), d = Yo, b.push(h);
|
|
2246
2246
|
else
|
|
2247
2247
|
throw new Error(`arx: invalid 32-byte key, got length=${p}`);
|
|
2248
2248
|
zt(c) || (c = c.slice(), b.push(c));
|
|
@@ -2257,47 +2257,47 @@ function Qs(e, t) {
|
|
|
2257
2257
|
throw new Error(`arx: nonce must be ${E} or 16 bytes`);
|
|
2258
2258
|
if (E !== 12) {
|
|
2259
2259
|
const _ = new Uint8Array(12);
|
|
2260
|
-
_.set(c,
|
|
2260
|
+
_.set(c, o ? 0 : 12 - c.length), c = _, b.push(c);
|
|
2261
2261
|
}
|
|
2262
2262
|
const N = Z(c);
|
|
2263
|
-
for (
|
|
2263
|
+
for (Qo(e, d, y, N, u, f, l, s); b.length > 0; )
|
|
2264
2264
|
b.pop().fill(0);
|
|
2265
2265
|
return f;
|
|
2266
2266
|
};
|
|
2267
2267
|
}
|
|
2268
|
-
function
|
|
2269
|
-
let
|
|
2270
|
-
for (let Q = 0; Q <
|
|
2271
|
-
m = m + U | 0, C = L(C ^ m, 16), P = P + C | 0, U = L(U ^ P, 12), m = m + U | 0, C = L(C ^ m, 8), P = P + C | 0, U = L(U ^ P, 7), x = x + K | 0, k = L(k ^ x, 16), w = w + k | 0, K = L(K ^ w, 12), x = x + K | 0, k = L(k ^ x, 8), w = w + k | 0, K = L(K ^ w, 7),
|
|
2268
|
+
function ts(e, t, n, r, i, o = 20) {
|
|
2269
|
+
let s = e[0], a = e[1], c = e[2], u = e[3], f = t[0], l = t[1], g = t[2], b = t[3], p = t[4], h = t[5], d = t[6], y = t[7], E = i, N = n[0], _ = n[1], B = n[2], m = s, x = a, A = c, H = u, U = f, K = l, T = g, R = b, P = p, w = h, v = d, S = y, C = E, k = N, I = _, O = B;
|
|
2270
|
+
for (let Q = 0; Q < o; Q += 2)
|
|
2271
|
+
m = m + U | 0, C = L(C ^ m, 16), P = P + C | 0, U = L(U ^ P, 12), m = m + U | 0, C = L(C ^ m, 8), P = P + C | 0, U = L(U ^ P, 7), x = x + K | 0, k = L(k ^ x, 16), w = w + k | 0, K = L(K ^ w, 12), x = x + K | 0, k = L(k ^ x, 8), w = w + k | 0, K = L(K ^ w, 7), A = A + T | 0, I = L(I ^ A, 16), v = v + I | 0, T = L(T ^ v, 12), A = A + T | 0, I = L(I ^ A, 8), v = v + I | 0, T = L(T ^ v, 7), H = H + R | 0, O = L(O ^ H, 16), S = S + O | 0, R = L(R ^ S, 12), H = H + R | 0, O = L(O ^ H, 8), S = S + O | 0, R = L(R ^ S, 7), m = m + K | 0, O = L(O ^ m, 16), v = v + O | 0, K = L(K ^ v, 12), m = m + K | 0, O = L(O ^ m, 8), v = v + O | 0, K = L(K ^ v, 7), x = x + T | 0, C = L(C ^ x, 16), S = S + C | 0, T = L(T ^ S, 12), x = x + T | 0, C = L(C ^ x, 8), S = S + C | 0, T = L(T ^ S, 7), A = A + R | 0, k = L(k ^ A, 16), P = P + k | 0, R = L(R ^ P, 12), A = A + R | 0, k = L(k ^ A, 8), P = P + k | 0, R = L(R ^ P, 7), H = H + U | 0, I = L(I ^ H, 16), w = w + I | 0, U = L(U ^ w, 12), H = H + U | 0, I = L(I ^ H, 8), w = w + I | 0, U = L(U ^ w, 7);
|
|
2272
2272
|
let $ = 0;
|
|
2273
|
-
r[$++] =
|
|
2273
|
+
r[$++] = s + m | 0, r[$++] = a + x | 0, r[$++] = c + A | 0, r[$++] = u + H | 0, r[$++] = f + U | 0, r[$++] = l + K | 0, r[$++] = g + T | 0, r[$++] = b + R | 0, r[$++] = p + P | 0, r[$++] = h + w | 0, r[$++] = d + v | 0, r[$++] = y + S | 0, r[$++] = E + C | 0, r[$++] = N + k | 0, r[$++] = _ + I | 0, r[$++] = B + O | 0;
|
|
2274
2274
|
}
|
|
2275
|
-
const Nr = /* @__PURE__ */
|
|
2275
|
+
const Nr = /* @__PURE__ */ es(ts, {
|
|
2276
2276
|
counterRight: !1,
|
|
2277
2277
|
counterLength: 4,
|
|
2278
2278
|
allowShortKeys: !1
|
|
2279
2279
|
});
|
|
2280
|
-
class Kr extends
|
|
2280
|
+
class Kr extends lr {
|
|
2281
2281
|
constructor(t, n) {
|
|
2282
|
-
super(), this.finished = !1, this.destroyed = !1,
|
|
2282
|
+
super(), this.finished = !1, this.destroyed = !1, oe.hash(t);
|
|
2283
2283
|
const r = Fe(n);
|
|
2284
2284
|
if (this.iHash = t.create(), typeof this.iHash.update != "function")
|
|
2285
2285
|
throw new Error("Expected instance of class which extends utils.Hash");
|
|
2286
2286
|
this.blockLen = this.iHash.blockLen, this.outputLen = this.iHash.outputLen;
|
|
2287
|
-
const i = this.blockLen,
|
|
2288
|
-
|
|
2289
|
-
for (let
|
|
2290
|
-
s
|
|
2291
|
-
this.iHash.update(
|
|
2292
|
-
for (let
|
|
2293
|
-
s
|
|
2294
|
-
this.oHash.update(
|
|
2287
|
+
const i = this.blockLen, o = new Uint8Array(i);
|
|
2288
|
+
o.set(r.length > i ? t.create().update(r).digest() : r);
|
|
2289
|
+
for (let s = 0; s < o.length; s++)
|
|
2290
|
+
o[s] ^= 54;
|
|
2291
|
+
this.iHash.update(o), this.oHash = t.create();
|
|
2292
|
+
for (let s = 0; s < o.length; s++)
|
|
2293
|
+
o[s] ^= 106;
|
|
2294
|
+
this.oHash.update(o), o.fill(0);
|
|
2295
2295
|
}
|
|
2296
2296
|
update(t) {
|
|
2297
|
-
return
|
|
2297
|
+
return oe.exists(this), this.iHash.update(t), this;
|
|
2298
2298
|
}
|
|
2299
2299
|
digestInto(t) {
|
|
2300
|
-
|
|
2300
|
+
oe.exists(this), oe.bytes(t, this.outputLen), this.finished = !0, this.iHash.digestInto(t), this.oHash.update(t), this.oHash.digestInto(t), this.destroy();
|
|
2301
2301
|
}
|
|
2302
2302
|
digest() {
|
|
2303
2303
|
const t = new Uint8Array(this.oHash.outputLen);
|
|
@@ -2305,8 +2305,8 @@ class Kr extends ur {
|
|
|
2305
2305
|
}
|
|
2306
2306
|
_cloneInto(t) {
|
|
2307
2307
|
t || (t = Object.create(Object.getPrototypeOf(this), {}));
|
|
2308
|
-
const { oHash: n, iHash: r, finished: i, destroyed:
|
|
2309
|
-
return t = t, t.finished = i, t.destroyed =
|
|
2308
|
+
const { oHash: n, iHash: r, finished: i, destroyed: o, blockLen: s, outputLen: a } = this;
|
|
2309
|
+
return t = t, t.finished = i, t.destroyed = o, t.blockLen = s, t.outputLen = a, t.oHash = n._cloneInto(t.oHash), t.iHash = r._cloneInto(t.iHash), t;
|
|
2310
2310
|
}
|
|
2311
2311
|
destroy() {
|
|
2312
2312
|
this.destroyed = !0, this.oHash.destroy(), this.iHash.destroy();
|
|
@@ -2315,25 +2315,25 @@ class Kr extends ur {
|
|
|
2315
2315
|
const ht = (e, t, n) => new Kr(e, t).update(n).digest();
|
|
2316
2316
|
ht.create = (e, t) => new Kr(e, t);
|
|
2317
2317
|
function rn(e, t, n) {
|
|
2318
|
-
return
|
|
2318
|
+
return oe.hash(e), n === void 0 && (n = new Uint8Array(e.outputLen)), ht(e, Fe(n), Fe(t));
|
|
2319
2319
|
}
|
|
2320
2320
|
const Ut = new Uint8Array([0]), qn = new Uint8Array();
|
|
2321
2321
|
function kr(e, t, n, r = 32) {
|
|
2322
|
-
if (
|
|
2322
|
+
if (oe.hash(e), oe.number(r), r > 255 * e.outputLen)
|
|
2323
2323
|
throw new Error("Length should be <= 255*HashLen");
|
|
2324
2324
|
const i = Math.ceil(r / e.outputLen);
|
|
2325
2325
|
n === void 0 && (n = qn);
|
|
2326
|
-
const
|
|
2327
|
-
for (let
|
|
2328
|
-
Ut[0] =
|
|
2329
|
-
return
|
|
2326
|
+
const o = new Uint8Array(i * e.outputLen), s = ht.create(e, t), a = s._cloneInto(), c = new Uint8Array(s.outputLen);
|
|
2327
|
+
for (let u = 0; u < i; u++)
|
|
2328
|
+
Ut[0] = u + 1, a.update(u === 0 ? qn : c).update(n).update(Ut).digestInto(c), o.set(c, e.outputLen * u), s._cloneInto(a);
|
|
2329
|
+
return s.destroy(), a.destroy(), c.fill(0), Ut.fill(0), o.slice(0, r);
|
|
2330
2330
|
}
|
|
2331
|
-
var
|
|
2331
|
+
var ns = Object.defineProperty, q = (e, t) => {
|
|
2332
2332
|
for (var n in t)
|
|
2333
|
-
|
|
2334
|
-
}, Re = Symbol("verified"),
|
|
2335
|
-
function
|
|
2336
|
-
if (!
|
|
2333
|
+
ns(e, n, { get: t[n], enumerable: !0 });
|
|
2334
|
+
}, Re = Symbol("verified"), rs = (e) => e instanceof Object;
|
|
2335
|
+
function on(e) {
|
|
2336
|
+
if (!rs(e) || typeof e.kind != "number" || typeof e.content != "string" || typeof e.created_at != "number" || typeof e.pubkey != "string" || !e.pubkey.match(/^[a-f0-9]{64}$/) || !Array.isArray(e.tags))
|
|
2337
2337
|
return !1;
|
|
2338
2338
|
for (let t = 0; t < e.tags.length; t++) {
|
|
2339
2339
|
let n = e.tags[t];
|
|
@@ -2345,38 +2345,38 @@ function sn(e) {
|
|
|
2345
2345
|
}
|
|
2346
2346
|
return !0;
|
|
2347
2347
|
}
|
|
2348
|
-
var
|
|
2349
|
-
q(
|
|
2350
|
-
Queue: () =>
|
|
2348
|
+
var is = {};
|
|
2349
|
+
q(is, {
|
|
2350
|
+
Queue: () => cs,
|
|
2351
2351
|
QueueNode: () => Br,
|
|
2352
|
-
binarySearch: () =>
|
|
2353
|
-
insertEventIntoAscendingList: () =>
|
|
2354
|
-
insertEventIntoDescendingList: () =>
|
|
2355
|
-
normalizeURL: () =>
|
|
2356
|
-
utf8Decoder: () =>
|
|
2352
|
+
binarySearch: () => sn,
|
|
2353
|
+
insertEventIntoAscendingList: () => as,
|
|
2354
|
+
insertEventIntoDescendingList: () => ss,
|
|
2355
|
+
normalizeURL: () => os,
|
|
2356
|
+
utf8Decoder: () => le,
|
|
2357
2357
|
utf8Encoder: () => ne
|
|
2358
2358
|
});
|
|
2359
|
-
var
|
|
2360
|
-
function
|
|
2359
|
+
var le = new TextDecoder("utf-8"), ne = new TextEncoder();
|
|
2360
|
+
function os(e) {
|
|
2361
2361
|
e.indexOf("://") === -1 && (e = "wss://" + e);
|
|
2362
2362
|
let t = new URL(e);
|
|
2363
2363
|
return t.pathname = t.pathname.replace(/\/+/g, "/"), t.pathname.endsWith("/") && (t.pathname = t.pathname.slice(0, -1)), (t.port === "80" && t.protocol === "ws:" || t.port === "443" && t.protocol === "wss:") && (t.port = ""), t.searchParams.sort(), t.hash = "", t.toString();
|
|
2364
2364
|
}
|
|
2365
|
-
function
|
|
2366
|
-
const [n, r] =
|
|
2365
|
+
function ss(e, t) {
|
|
2366
|
+
const [n, r] = sn(e, (i) => t.id === i.id ? 0 : t.created_at === i.created_at ? -1 : i.created_at - t.created_at);
|
|
2367
2367
|
return r || e.splice(n, 0, t), e;
|
|
2368
2368
|
}
|
|
2369
|
-
function
|
|
2370
|
-
const [n, r] =
|
|
2369
|
+
function as(e, t) {
|
|
2370
|
+
const [n, r] = sn(e, (i) => t.id === i.id ? 0 : t.created_at === i.created_at ? -1 : t.created_at - i.created_at);
|
|
2371
2371
|
return r || e.splice(n, 0, t), e;
|
|
2372
2372
|
}
|
|
2373
|
-
function
|
|
2373
|
+
function sn(e, t) {
|
|
2374
2374
|
let n = 0, r = e.length - 1;
|
|
2375
2375
|
for (; n <= r; ) {
|
|
2376
|
-
const i = Math.floor((n + r) / 2),
|
|
2377
|
-
if (
|
|
2376
|
+
const i = Math.floor((n + r) / 2), o = t(e[i]);
|
|
2377
|
+
if (o === 0)
|
|
2378
2378
|
return [i, !0];
|
|
2379
|
-
|
|
2379
|
+
o < 0 ? r = i - 1 : n = i + 1;
|
|
2380
2380
|
}
|
|
2381
2381
|
return [n, !1];
|
|
2382
2382
|
}
|
|
@@ -2387,7 +2387,7 @@ var Br = class {
|
|
|
2387
2387
|
te(this, "prev", null);
|
|
2388
2388
|
this.value = e;
|
|
2389
2389
|
}
|
|
2390
|
-
},
|
|
2390
|
+
}, cs = class {
|
|
2391
2391
|
constructor() {
|
|
2392
2392
|
te(this, "first");
|
|
2393
2393
|
te(this, "last");
|
|
@@ -2407,7 +2407,7 @@ var Br = class {
|
|
|
2407
2407
|
const e = this.first;
|
|
2408
2408
|
return this.first = e.next, e.value;
|
|
2409
2409
|
}
|
|
2410
|
-
},
|
|
2410
|
+
}, ls = class {
|
|
2411
2411
|
generateSecretKey() {
|
|
2412
2412
|
return We.utils.randomPrivateKey();
|
|
2413
2413
|
}
|
|
@@ -2432,22 +2432,22 @@ var Br = class {
|
|
|
2432
2432
|
}
|
|
2433
2433
|
}
|
|
2434
2434
|
};
|
|
2435
|
-
function
|
|
2436
|
-
if (!
|
|
2435
|
+
function us(e) {
|
|
2436
|
+
if (!on(e))
|
|
2437
2437
|
throw new Error("can't serialize event with wrong or missing properties");
|
|
2438
2438
|
return JSON.stringify([0, e.pubkey, e.created_at, e.kind, e.tags, e.content]);
|
|
2439
2439
|
}
|
|
2440
2440
|
function Qe(e) {
|
|
2441
|
-
let t = fe(ne.encode(
|
|
2441
|
+
let t = fe(ne.encode(us(e)));
|
|
2442
2442
|
return M(t);
|
|
2443
2443
|
}
|
|
2444
|
-
var dt = new
|
|
2445
|
-
q(
|
|
2444
|
+
var dt = new ls(), Ce = dt.generateSecretKey, ue = dt.getPublicKey, X = dt.finalizeEvent, pt = dt.verifyEvent, fs = {};
|
|
2445
|
+
q(fs, {
|
|
2446
2446
|
Application: () => da,
|
|
2447
|
-
BadgeAward: () =>
|
|
2448
|
-
BadgeDefinition: () =>
|
|
2449
|
-
BlockedRelaysList: () =>
|
|
2450
|
-
BookmarkList: () =>
|
|
2447
|
+
BadgeAward: () => ms,
|
|
2448
|
+
BadgeDefinition: () => sa,
|
|
2449
|
+
BlockedRelaysList: () => zs,
|
|
2450
|
+
BookmarkList: () => qs,
|
|
2451
2451
|
Bookmarksets: () => ra,
|
|
2452
2452
|
Calendar: () => ma,
|
|
2453
2453
|
CalendarEventRSVP: () => Ea,
|
|
@@ -2458,71 +2458,71 @@ q(lo, {
|
|
|
2458
2458
|
ChannelMuteUser: () => Mr,
|
|
2459
2459
|
ClassifiedListing: () => ga,
|
|
2460
2460
|
ClientAuth: () => Pr,
|
|
2461
|
-
CommunitiesList: () =>
|
|
2462
|
-
CommunityDefinition: () =>
|
|
2463
|
-
CommunityPostApproval: () =>
|
|
2464
|
-
Contacts: () =>
|
|
2465
|
-
CreateOrUpdateProduct: () =>
|
|
2461
|
+
CommunitiesList: () => Ds,
|
|
2462
|
+
CommunityDefinition: () => Sa,
|
|
2463
|
+
CommunityPostApproval: () => Us,
|
|
2464
|
+
Contacts: () => ws,
|
|
2465
|
+
CreateOrUpdateProduct: () => la,
|
|
2466
2466
|
CreateOrUpdateStall: () => ca,
|
|
2467
2467
|
Curationsets: () => ia,
|
|
2468
2468
|
Date: () => ba,
|
|
2469
|
-
DirectMessageRelaysList: () =>
|
|
2469
|
+
DirectMessageRelaysList: () => Gs,
|
|
2470
2470
|
DraftClassifiedListing: () => wa,
|
|
2471
2471
|
DraftLong: () => fa,
|
|
2472
2472
|
Emojisets: () => ha,
|
|
2473
|
-
EncryptedDirectMessage: () =>
|
|
2474
|
-
EventDeletion: () =>
|
|
2475
|
-
FileMetadata: () =>
|
|
2476
|
-
FileServerPreference: () =>
|
|
2473
|
+
EncryptedDirectMessage: () => bs,
|
|
2474
|
+
EventDeletion: () => vs,
|
|
2475
|
+
FileMetadata: () => Ss,
|
|
2476
|
+
FileServerPreference: () => Fs,
|
|
2477
2477
|
Followsets: () => ea,
|
|
2478
|
-
GenericRepost: () =>
|
|
2478
|
+
GenericRepost: () => xs,
|
|
2479
2479
|
Genericlists: () => ta,
|
|
2480
2480
|
GiftWrap: () => Hr,
|
|
2481
|
-
HTTPAuth: () =>
|
|
2482
|
-
Handlerinformation: () =>
|
|
2481
|
+
HTTPAuth: () => ln,
|
|
2482
|
+
Handlerinformation: () => Aa,
|
|
2483
2483
|
Handlerrecommendation: () => xa,
|
|
2484
|
-
Highlights: () =>
|
|
2485
|
-
InterestsList: () =>
|
|
2484
|
+
Highlights: () => Os,
|
|
2485
|
+
InterestsList: () => Ws,
|
|
2486
2486
|
Interestsets: () => aa,
|
|
2487
|
-
JobFeedback: () =>
|
|
2488
|
-
JobRequest: () =>
|
|
2489
|
-
JobResult: () =>
|
|
2490
|
-
Label: () =>
|
|
2491
|
-
LightningPubRPC: () =>
|
|
2492
|
-
LiveChatMessage: () =>
|
|
2487
|
+
JobFeedback: () => Ls,
|
|
2488
|
+
JobRequest: () => _s,
|
|
2489
|
+
JobResult: () => Is,
|
|
2490
|
+
Label: () => Cs,
|
|
2491
|
+
LightningPubRPC: () => Ys,
|
|
2492
|
+
LiveChatMessage: () => Ns,
|
|
2493
2493
|
LiveEvent: () => pa,
|
|
2494
|
-
LongFormArticle: () =>
|
|
2495
|
-
Metadata: () =>
|
|
2496
|
-
Mutelist: () =>
|
|
2497
|
-
NWCWalletInfo: () =>
|
|
2494
|
+
LongFormArticle: () => ua,
|
|
2495
|
+
Metadata: () => ps,
|
|
2496
|
+
Mutelist: () => Ms,
|
|
2497
|
+
NWCWalletInfo: () => Js,
|
|
2498
2498
|
NWCWalletRequest: () => qr,
|
|
2499
|
-
NWCWalletResponse: () =>
|
|
2500
|
-
NostrConnect: () =>
|
|
2501
|
-
OpenTimestamps: () =>
|
|
2502
|
-
Pinlist: () =>
|
|
2503
|
-
PrivateDirectMessage: () =>
|
|
2504
|
-
ProblemTracker: () =>
|
|
2505
|
-
ProfileBadges: () =>
|
|
2506
|
-
PublicChatsList: () =>
|
|
2499
|
+
NWCWalletResponse: () => Xs,
|
|
2500
|
+
NostrConnect: () => Qs,
|
|
2501
|
+
OpenTimestamps: () => As,
|
|
2502
|
+
Pinlist: () => Hs,
|
|
2503
|
+
PrivateDirectMessage: () => Es,
|
|
2504
|
+
ProblemTracker: () => Ks,
|
|
2505
|
+
ProfileBadges: () => oa,
|
|
2506
|
+
PublicChatsList: () => js,
|
|
2507
2507
|
Reaction: () => cn,
|
|
2508
|
-
RecommendRelay: () =>
|
|
2509
|
-
RelayList: () =>
|
|
2508
|
+
RecommendRelay: () => gs,
|
|
2509
|
+
RelayList: () => Ps,
|
|
2510
2510
|
Relaysets: () => na,
|
|
2511
|
-
Report: () =>
|
|
2512
|
-
Reporting: () =>
|
|
2511
|
+
Report: () => ks,
|
|
2512
|
+
Reporting: () => Bs,
|
|
2513
2513
|
Repost: () => an,
|
|
2514
2514
|
Seal: () => Lr,
|
|
2515
|
-
SearchRelaysList: () =>
|
|
2516
|
-
ShortTextNote: () =>
|
|
2515
|
+
SearchRelaysList: () => Vs,
|
|
2516
|
+
ShortTextNote: () => ys,
|
|
2517
2517
|
Time: () => va,
|
|
2518
|
-
UserEmojiList: () =>
|
|
2518
|
+
UserEmojiList: () => Zs,
|
|
2519
2519
|
UserStatuses: () => ya,
|
|
2520
|
-
Zap: () =>
|
|
2521
|
-
ZapGoal: () => $
|
|
2522
|
-
ZapRequest: () =>
|
|
2523
|
-
classifyKind: () =>
|
|
2520
|
+
Zap: () => Rs,
|
|
2521
|
+
ZapGoal: () => $s,
|
|
2522
|
+
ZapRequest: () => Ts,
|
|
2523
|
+
classifyKind: () => hs,
|
|
2524
2524
|
isEphemeralKind: () => _r,
|
|
2525
|
-
isKind: () =>
|
|
2525
|
+
isKind: () => ds,
|
|
2526
2526
|
isParameterizedReplaceableKind: () => Ir,
|
|
2527
2527
|
isRegularKind: () => Cr,
|
|
2528
2528
|
isReplaceableKind: () => Ur
|
|
@@ -2539,29 +2539,29 @@ function _r(e) {
|
|
|
2539
2539
|
function Ir(e) {
|
|
2540
2540
|
return 3e4 <= e && e < 4e4;
|
|
2541
2541
|
}
|
|
2542
|
-
function
|
|
2542
|
+
function hs(e) {
|
|
2543
2543
|
return Cr(e) ? "regular" : Ur(e) ? "replaceable" : _r(e) ? "ephemeral" : Ir(e) ? "parameterized" : "unknown";
|
|
2544
2544
|
}
|
|
2545
|
-
function
|
|
2545
|
+
function ds(e, t) {
|
|
2546
2546
|
const n = t instanceof Array ? t : [t];
|
|
2547
|
-
return
|
|
2547
|
+
return on(e) && n.includes(e.kind) || !1;
|
|
2548
2548
|
}
|
|
2549
|
-
var
|
|
2549
|
+
var ps = 0, ys = 1, gs = 2, ws = 3, bs = 4, vs = 5, an = 6, cn = 7, ms = 8, Lr = 13, Es = 14, xs = 16, $r = 40, Tr = 41, Rr = 42, Or = 43, Mr = 44, As = 1040, Hr = 1059, Ss = 1063, Ns = 1311, Ks = 1971, ks = 1984, Bs = 1984, Cs = 1985, Us = 4550, _s = 5999, Is = 6999, Ls = 7e3, $s = 9041, Ts = 9734, Rs = 9735, Os = 9802, Ms = 1e4, Hs = 10001, Ps = 10002, qs = 10003, Ds = 10004, js = 10005, zs = 10006, Vs = 10007, Ws = 10015, Zs = 10030, Gs = 10050, Fs = 10096, Js = 13194, Ys = 21e3, Pr = 22242, qr = 23194, Xs = 23195, Qs = 24133, ln = 27235, ea = 3e4, ta = 30001, na = 30002, ra = 30003, ia = 30004, oa = 30008, sa = 30009, aa = 30015, ca = 30017, la = 30018, ua = 30023, fa = 30024, ha = 30030, da = 30078, pa = 30311, ya = 30315, ga = 30402, wa = 30403, ba = 31922, va = 31923, ma = 31924, Ea = 31925, xa = 31989, Aa = 31990, Sa = 34550, Na = {};
|
|
2550
2550
|
q(Na, {
|
|
2551
|
-
getHex64: () =>
|
|
2551
|
+
getHex64: () => un,
|
|
2552
2552
|
getInt: () => Dr,
|
|
2553
2553
|
getSubscriptionId: () => Ka,
|
|
2554
2554
|
matchEventId: () => ka,
|
|
2555
2555
|
matchEventKind: () => Ca,
|
|
2556
2556
|
matchEventPubkey: () => Ba
|
|
2557
2557
|
});
|
|
2558
|
-
function
|
|
2558
|
+
function un(e, t) {
|
|
2559
2559
|
let n = t.length + 3, r = e.indexOf(`"${t}":`) + n, i = e.slice(r).indexOf('"') + r + 1;
|
|
2560
2560
|
return e.slice(i, i + 64);
|
|
2561
2561
|
}
|
|
2562
2562
|
function Dr(e, t) {
|
|
2563
|
-
let n = t.length, r = e.indexOf(`"${t}":`) + n + 3, i = e.slice(r),
|
|
2564
|
-
return parseInt(i.slice(0,
|
|
2563
|
+
let n = t.length, r = e.indexOf(`"${t}":`) + n + 3, i = e.slice(r), o = Math.min(i.indexOf(","), i.indexOf("}"));
|
|
2564
|
+
return parseInt(i.slice(0, o), 10);
|
|
2565
2565
|
}
|
|
2566
2566
|
function Ka(e) {
|
|
2567
2567
|
let t = e.slice(0, 22).indexOf('"EVENT"');
|
|
@@ -2573,14 +2573,14 @@ function Ka(e) {
|
|
|
2573
2573
|
let r = t + 7 + 1 + n, i = e.slice(r + 1, 80).indexOf('"');
|
|
2574
2574
|
if (i === -1)
|
|
2575
2575
|
return null;
|
|
2576
|
-
let
|
|
2577
|
-
return e.slice(r + 1,
|
|
2576
|
+
let o = r + 1 + i;
|
|
2577
|
+
return e.slice(r + 1, o);
|
|
2578
2578
|
}
|
|
2579
2579
|
function ka(e, t) {
|
|
2580
|
-
return t ===
|
|
2580
|
+
return t === un(e, "id");
|
|
2581
2581
|
}
|
|
2582
2582
|
function Ba(e, t) {
|
|
2583
|
-
return t ===
|
|
2583
|
+
return t === un(e, "pubkey");
|
|
2584
2584
|
}
|
|
2585
2585
|
function Ca(e, t) {
|
|
2586
2586
|
return t === Dr(e, "kind");
|
|
@@ -2638,62 +2638,62 @@ function Ra(e) {
|
|
|
2638
2638
|
return t[0] = e >> 24 & 255, t[1] = e >> 16 & 255, t[2] = e >> 8 & 255, t[3] = e & 255, t;
|
|
2639
2639
|
}
|
|
2640
2640
|
function yt(e) {
|
|
2641
|
-
var i,
|
|
2641
|
+
var i, o, s, a, c, u, f;
|
|
2642
2642
|
let { prefix: t, words: n } = je.decode(e, fn), r = new Uint8Array(je.fromWords(n));
|
|
2643
2643
|
switch (t) {
|
|
2644
2644
|
case "nprofile": {
|
|
2645
|
-
let
|
|
2646
|
-
if (!((i =
|
|
2645
|
+
let l = _t(r);
|
|
2646
|
+
if (!((i = l[0]) != null && i[0]))
|
|
2647
2647
|
throw new Error("missing TLV 0 for nprofile");
|
|
2648
|
-
if (
|
|
2648
|
+
if (l[0][0].length !== 32)
|
|
2649
2649
|
throw new Error("TLV 0 should be 32 bytes");
|
|
2650
2650
|
return {
|
|
2651
2651
|
type: "nprofile",
|
|
2652
2652
|
data: {
|
|
2653
|
-
pubkey: M(
|
|
2654
|
-
relays:
|
|
2653
|
+
pubkey: M(l[0][0]),
|
|
2654
|
+
relays: l[1] ? l[1].map((g) => le.decode(g)) : []
|
|
2655
2655
|
}
|
|
2656
2656
|
};
|
|
2657
2657
|
}
|
|
2658
2658
|
case "nevent": {
|
|
2659
|
-
let
|
|
2660
|
-
if (!((
|
|
2659
|
+
let l = _t(r);
|
|
2660
|
+
if (!((o = l[0]) != null && o[0]))
|
|
2661
2661
|
throw new Error("missing TLV 0 for nevent");
|
|
2662
|
-
if (
|
|
2662
|
+
if (l[0][0].length !== 32)
|
|
2663
2663
|
throw new Error("TLV 0 should be 32 bytes");
|
|
2664
|
-
if (
|
|
2664
|
+
if (l[2] && l[2][0].length !== 32)
|
|
2665
2665
|
throw new Error("TLV 2 should be 32 bytes");
|
|
2666
|
-
if (
|
|
2666
|
+
if (l[3] && l[3][0].length !== 4)
|
|
2667
2667
|
throw new Error("TLV 3 should be 4 bytes");
|
|
2668
2668
|
return {
|
|
2669
2669
|
type: "nevent",
|
|
2670
2670
|
data: {
|
|
2671
|
-
id: M(
|
|
2672
|
-
relays:
|
|
2673
|
-
author: (
|
|
2674
|
-
kind: (a =
|
|
2671
|
+
id: M(l[0][0]),
|
|
2672
|
+
relays: l[1] ? l[1].map((g) => le.decode(g)) : [],
|
|
2673
|
+
author: (s = l[2]) != null && s[0] ? M(l[2][0]) : void 0,
|
|
2674
|
+
kind: (a = l[3]) != null && a[0] ? parseInt(M(l[3][0]), 16) : void 0
|
|
2675
2675
|
}
|
|
2676
2676
|
};
|
|
2677
2677
|
}
|
|
2678
2678
|
case "naddr": {
|
|
2679
|
-
let
|
|
2680
|
-
if (!((c =
|
|
2679
|
+
let l = _t(r);
|
|
2680
|
+
if (!((c = l[0]) != null && c[0]))
|
|
2681
2681
|
throw new Error("missing TLV 0 for naddr");
|
|
2682
|
-
if (!((
|
|
2682
|
+
if (!((u = l[2]) != null && u[0]))
|
|
2683
2683
|
throw new Error("missing TLV 2 for naddr");
|
|
2684
|
-
if (
|
|
2684
|
+
if (l[2][0].length !== 32)
|
|
2685
2685
|
throw new Error("TLV 2 should be 32 bytes");
|
|
2686
|
-
if (!((f =
|
|
2686
|
+
if (!((f = l[3]) != null && f[0]))
|
|
2687
2687
|
throw new Error("missing TLV 3 for naddr");
|
|
2688
|
-
if (
|
|
2688
|
+
if (l[3][0].length !== 4)
|
|
2689
2689
|
throw new Error("TLV 3 should be 4 bytes");
|
|
2690
2690
|
return {
|
|
2691
2691
|
type: "naddr",
|
|
2692
2692
|
data: {
|
|
2693
|
-
identifier:
|
|
2694
|
-
pubkey: M(
|
|
2695
|
-
kind: parseInt(M(
|
|
2696
|
-
relays:
|
|
2693
|
+
identifier: le.decode(l[0][0]),
|
|
2694
|
+
pubkey: M(l[2][0]),
|
|
2695
|
+
kind: parseInt(M(l[3][0]), 16),
|
|
2696
|
+
relays: l[1] ? l[1].map((g) => le.decode(g)) : []
|
|
2697
2697
|
}
|
|
2698
2698
|
};
|
|
2699
2699
|
}
|
|
@@ -2709,10 +2709,10 @@ function yt(e) {
|
|
|
2709
2709
|
function _t(e) {
|
|
2710
2710
|
let t = {}, n = e;
|
|
2711
2711
|
for (; n.length > 0; ) {
|
|
2712
|
-
let r = n[0], i = n[1],
|
|
2713
|
-
if (n = n.slice(2 + i),
|
|
2712
|
+
let r = n[0], i = n[1], o = n.slice(2, 2 + i);
|
|
2713
|
+
if (n = n.slice(2 + i), o.length < i)
|
|
2714
2714
|
throw new Error(`not enough data to read on TLV ${r}`);
|
|
2715
|
-
t[r] = t[r] || [], t[r].push(
|
|
2715
|
+
t[r] = t[r] || [], t[r].push(o);
|
|
2716
2716
|
}
|
|
2717
2717
|
return t;
|
|
2718
2718
|
}
|
|
@@ -2765,10 +2765,10 @@ function hn(e) {
|
|
|
2765
2765
|
let t = [];
|
|
2766
2766
|
return Object.entries(e).reverse().forEach(([n, r]) => {
|
|
2767
2767
|
r.forEach((i) => {
|
|
2768
|
-
let
|
|
2769
|
-
|
|
2768
|
+
let o = new Uint8Array(i.length + 2);
|
|
2769
|
+
o.set([parseInt(n)], 0), o.set([i.length], 1), o.set(i, 2), t.push(o);
|
|
2770
2770
|
});
|
|
2771
|
-
}),
|
|
2771
|
+
}), ut(...t);
|
|
2772
2772
|
}
|
|
2773
2773
|
var ja = {};
|
|
2774
2774
|
q(ja, {
|
|
@@ -2776,14 +2776,14 @@ q(ja, {
|
|
|
2776
2776
|
encrypt: () => zr
|
|
2777
2777
|
});
|
|
2778
2778
|
async function zr(e, t, n) {
|
|
2779
|
-
const r = e instanceof Uint8Array ? M(e) : e, i = _e.getSharedSecret(r, "02" + t),
|
|
2780
|
-
let
|
|
2781
|
-
return `${
|
|
2779
|
+
const r = e instanceof Uint8Array ? M(e) : e, i = _e.getSharedSecret(r, "02" + t), o = Vr(i);
|
|
2780
|
+
let s = Uint8Array.from(fr(16)), a = ne.encode(n), c = Er(o, s).encrypt(a), u = he.encode(new Uint8Array(c)), f = he.encode(new Uint8Array(s.buffer));
|
|
2781
|
+
return `${u}?iv=${f}`;
|
|
2782
2782
|
}
|
|
2783
2783
|
async function za(e, t, n) {
|
|
2784
2784
|
const r = e instanceof Uint8Array ? M(e) : e;
|
|
2785
|
-
let [i,
|
|
2786
|
-
return
|
|
2785
|
+
let [i, o] = n.split("?iv="), s = _e.getSharedSecret(r, "02" + t), a = Vr(s), c = he.decode(o), u = he.decode(i), f = Er(a, c).decrypt(u);
|
|
2786
|
+
return le.decode(f);
|
|
2787
2787
|
}
|
|
2788
2788
|
function Vr(e) {
|
|
2789
2789
|
return e.slice(1, 33);
|
|
@@ -2822,10 +2822,10 @@ async function Wr(e) {
|
|
|
2822
2822
|
return null;
|
|
2823
2823
|
const [, n = "_", r] = t;
|
|
2824
2824
|
try {
|
|
2825
|
-
const
|
|
2826
|
-
if (
|
|
2825
|
+
const o = `https://${r}/.well-known/nostr.json?name=${n}`, s = await bt(o, { redirect: "manual" });
|
|
2826
|
+
if (s.status !== 200)
|
|
2827
2827
|
throw Error("Wrong response code");
|
|
2828
|
-
const a = await
|
|
2828
|
+
const a = await s.json(), c = a.names[n];
|
|
2829
2829
|
return c ? { pubkey: c, relays: (i = a.relays) == null ? void 0 : i[c] } : null;
|
|
2830
2830
|
} catch {
|
|
2831
2831
|
return null;
|
|
@@ -2849,39 +2849,39 @@ function Ya(e) {
|
|
|
2849
2849
|
};
|
|
2850
2850
|
let n, r;
|
|
2851
2851
|
for (let i = e.tags.length - 1; i >= 0; i--) {
|
|
2852
|
-
const
|
|
2853
|
-
if (
|
|
2854
|
-
const [
|
|
2852
|
+
const o = e.tags[i];
|
|
2853
|
+
if (o[0] === "e" && o[1]) {
|
|
2854
|
+
const [s, a, c, u, f] = o, l = {
|
|
2855
2855
|
id: a,
|
|
2856
2856
|
relays: c ? [c] : [],
|
|
2857
2857
|
author: f
|
|
2858
2858
|
};
|
|
2859
|
-
if (
|
|
2860
|
-
t.root =
|
|
2859
|
+
if (u === "root") {
|
|
2860
|
+
t.root = l;
|
|
2861
2861
|
continue;
|
|
2862
2862
|
}
|
|
2863
|
-
if (
|
|
2864
|
-
t.reply =
|
|
2863
|
+
if (u === "reply") {
|
|
2864
|
+
t.reply = l;
|
|
2865
2865
|
continue;
|
|
2866
2866
|
}
|
|
2867
|
-
if (
|
|
2868
|
-
t.mentions.push(
|
|
2867
|
+
if (u === "mention") {
|
|
2868
|
+
t.mentions.push(l);
|
|
2869
2869
|
continue;
|
|
2870
2870
|
}
|
|
2871
|
-
n ? r =
|
|
2871
|
+
n ? r = l : n = l, t.mentions.push(l);
|
|
2872
2872
|
continue;
|
|
2873
2873
|
}
|
|
2874
|
-
if (
|
|
2875
|
-
const [
|
|
2874
|
+
if (o[0] === "q" && o[1]) {
|
|
2875
|
+
const [s, a, c] = o;
|
|
2876
2876
|
t.quotes.push({
|
|
2877
2877
|
id: a,
|
|
2878
2878
|
relays: c ? [c] : []
|
|
2879
2879
|
});
|
|
2880
2880
|
}
|
|
2881
|
-
if (
|
|
2881
|
+
if (o[0] === "p" && o[1]) {
|
|
2882
2882
|
t.profiles.push({
|
|
2883
|
-
pubkey:
|
|
2884
|
-
relays:
|
|
2883
|
+
pubkey: o[1],
|
|
2884
|
+
relays: o[2] ? [o[2]] : []
|
|
2885
2885
|
});
|
|
2886
2886
|
continue;
|
|
2887
2887
|
}
|
|
@@ -2889,20 +2889,20 @@ function Ya(e) {
|
|
|
2889
2889
|
return t.root || (t.root = r || n || t.reply), t.reply || (t.reply = n || t.root), [t.reply, t.root].forEach((i) => {
|
|
2890
2890
|
if (!i)
|
|
2891
2891
|
return;
|
|
2892
|
-
let
|
|
2893
|
-
if (
|
|
2894
|
-
let
|
|
2895
|
-
|
|
2892
|
+
let o = t.mentions.indexOf(i);
|
|
2893
|
+
if (o !== -1 && t.mentions.splice(o, 1), i.author) {
|
|
2894
|
+
let s = t.profiles.find((a) => a.pubkey === i.author);
|
|
2895
|
+
s && s.relays && (i.relays || (i.relays = []), s.relays.forEach((a) => {
|
|
2896
2896
|
var c;
|
|
2897
2897
|
((c = i.relays) == null ? void 0 : c.indexOf(a)) === -1 && i.relays.push(a);
|
|
2898
|
-
}),
|
|
2898
|
+
}), s.relays = i.relays);
|
|
2899
2899
|
}
|
|
2900
2900
|
}), t.mentions.forEach((i) => {
|
|
2901
2901
|
if (i.author) {
|
|
2902
|
-
let
|
|
2903
|
-
|
|
2904
|
-
i.relays.indexOf(
|
|
2905
|
-
}),
|
|
2902
|
+
let o = t.profiles.find((s) => s.pubkey === i.author);
|
|
2903
|
+
o && o.relays && (i.relays || (i.relays = []), o.relays.forEach((s) => {
|
|
2904
|
+
i.relays.indexOf(s) === -1 && i.relays.push(s);
|
|
2905
|
+
}), o.relays = i.relays);
|
|
2906
2906
|
}
|
|
2907
2907
|
}), t;
|
|
2908
2908
|
}
|
|
@@ -2947,8 +2947,8 @@ function nc(e, t) {
|
|
|
2947
2947
|
let n = 0;
|
|
2948
2948
|
const r = e, i = ["nonce", n.toString(), t.toString()];
|
|
2949
2949
|
for (r.tags.push(i); ; ) {
|
|
2950
|
-
const
|
|
2951
|
-
if (
|
|
2950
|
+
const o = Math.floor((/* @__PURE__ */ new Date()).getTime() / 1e3);
|
|
2951
|
+
if (o !== r.created_at && (n = 0, r.created_at = o), i[1] = (++n).toString(), r.id = Fr(r), Gr(r.id) >= t)
|
|
2952
2952
|
break;
|
|
2953
2953
|
}
|
|
2954
2954
|
return r;
|
|
@@ -2961,7 +2961,7 @@ function Fr(e) {
|
|
|
2961
2961
|
var rc = {};
|
|
2962
2962
|
q(rc, {
|
|
2963
2963
|
finishRepostEvent: () => ic,
|
|
2964
|
-
getRepostedEvent: () =>
|
|
2964
|
+
getRepostedEvent: () => oc,
|
|
2965
2965
|
getRepostedEventPointer: () => Jr
|
|
2966
2966
|
});
|
|
2967
2967
|
function ic(e, t, n, r) {
|
|
@@ -2990,7 +2990,7 @@ function Jr(e) {
|
|
|
2990
2990
|
author: n == null ? void 0 : n[1]
|
|
2991
2991
|
};
|
|
2992
2992
|
}
|
|
2993
|
-
function
|
|
2993
|
+
function oc(e, { skipVerification: t } = {}) {
|
|
2994
2994
|
const n = Jr(e);
|
|
2995
2995
|
if (n === void 0 || e.content === "")
|
|
2996
2996
|
return;
|
|
@@ -3003,8 +3003,8 @@ function sc(e, { skipVerification: t } = {}) {
|
|
|
3003
3003
|
if (r.id === n.id && !(!t && !pt(r)))
|
|
3004
3004
|
return r;
|
|
3005
3005
|
}
|
|
3006
|
-
var
|
|
3007
|
-
q(
|
|
3006
|
+
var sc = {};
|
|
3007
|
+
q(sc, {
|
|
3008
3008
|
NOSTR_URI_REGEX: () => vt,
|
|
3009
3009
|
parse: () => cc,
|
|
3010
3010
|
test: () => ac
|
|
@@ -3023,12 +3023,12 @@ function cc(e) {
|
|
|
3023
3023
|
decoded: yt(t[1])
|
|
3024
3024
|
};
|
|
3025
3025
|
}
|
|
3026
|
-
var
|
|
3027
|
-
q(
|
|
3028
|
-
finishReactionEvent: () =>
|
|
3026
|
+
var lc = {};
|
|
3027
|
+
q(lc, {
|
|
3028
|
+
finishReactionEvent: () => uc,
|
|
3029
3029
|
getReactedEventPointer: () => fc
|
|
3030
3030
|
});
|
|
3031
|
-
function
|
|
3031
|
+
function uc(e, t, n) {
|
|
3032
3032
|
const r = t.tags.filter((i) => i.length >= 2 && (i[0] === "e" || i[0] === "p"));
|
|
3033
3033
|
return X(
|
|
3034
3034
|
{
|
|
@@ -3176,7 +3176,7 @@ q(Ec, {
|
|
|
3176
3176
|
EMOJI_SHORTCODE_REGEX: () => Yr,
|
|
3177
3177
|
matchAll: () => xc,
|
|
3178
3178
|
regex: () => yn,
|
|
3179
|
-
replaceAll: () =>
|
|
3179
|
+
replaceAll: () => Ac
|
|
3180
3180
|
});
|
|
3181
3181
|
var Yr = /:(\w+):/, yn = () => new RegExp(`\\B${Yr.source}\\B`, "g");
|
|
3182
3182
|
function* xc(e) {
|
|
@@ -3193,14 +3193,14 @@ function* xc(e) {
|
|
|
3193
3193
|
} catch {
|
|
3194
3194
|
}
|
|
3195
3195
|
}
|
|
3196
|
-
function
|
|
3196
|
+
function Ac(e, t) {
|
|
3197
3197
|
return e.replaceAll(yn(), (n, r) => t({
|
|
3198
3198
|
shortcode: n,
|
|
3199
3199
|
name: r
|
|
3200
3200
|
}));
|
|
3201
3201
|
}
|
|
3202
|
-
var
|
|
3203
|
-
q(
|
|
3202
|
+
var Sc = {};
|
|
3203
|
+
q(Sc, {
|
|
3204
3204
|
useFetchImplementation: () => Nc,
|
|
3205
3205
|
validateGithub: () => Kc
|
|
3206
3206
|
});
|
|
@@ -3255,18 +3255,18 @@ function kc(e) {
|
|
|
3255
3255
|
}
|
|
3256
3256
|
function Bc(e) {
|
|
3257
3257
|
const t = ne.encode(e), n = t.length, r = kc(n), i = new Uint8Array(bn(n) - n);
|
|
3258
|
-
return
|
|
3258
|
+
return ut(r, t, i);
|
|
3259
3259
|
}
|
|
3260
3260
|
function Cc(e) {
|
|
3261
3261
|
const t = new DataView(e.buffer).getUint16(0), n = e.subarray(2, 2 + t);
|
|
3262
3262
|
if (t < Xr || t > Qr || n.length !== t || e.length !== 2 + bn(t))
|
|
3263
3263
|
throw new Error("invalid padding");
|
|
3264
|
-
return
|
|
3264
|
+
return le.decode(n);
|
|
3265
3265
|
}
|
|
3266
3266
|
function ti(e, t, n) {
|
|
3267
3267
|
if (n.length !== 32)
|
|
3268
3268
|
throw new Error("AAD associated data must be 32 bytes");
|
|
3269
|
-
const r =
|
|
3269
|
+
const r = ut(n, t);
|
|
3270
3270
|
return ht(fe, e, r);
|
|
3271
3271
|
}
|
|
3272
3272
|
function Uc(e) {
|
|
@@ -3280,8 +3280,8 @@ function Uc(e) {
|
|
|
3280
3280
|
let n;
|
|
3281
3281
|
try {
|
|
3282
3282
|
n = he.decode(e);
|
|
3283
|
-
} catch (
|
|
3284
|
-
throw new Error("invalid base64: " +
|
|
3283
|
+
} catch (o) {
|
|
3284
|
+
throw new Error("invalid base64: " + o.message);
|
|
3285
3285
|
}
|
|
3286
3286
|
const r = n.length;
|
|
3287
3287
|
if (r < 99 || r > 65603)
|
|
@@ -3296,15 +3296,15 @@ function Uc(e) {
|
|
|
3296
3296
|
};
|
|
3297
3297
|
}
|
|
3298
3298
|
function vn(e, t, n = fr(32)) {
|
|
3299
|
-
const { chacha_key: r, chacha_nonce: i, hmac_key:
|
|
3300
|
-
return he.encode(
|
|
3299
|
+
const { chacha_key: r, chacha_nonce: i, hmac_key: o } = ei(t, n), s = Bc(e), a = Nr(r, i, s), c = ti(o, a, n);
|
|
3300
|
+
return he.encode(ut(new Uint8Array([2]), n, a, c));
|
|
3301
3301
|
}
|
|
3302
3302
|
function mn(e, t) {
|
|
3303
|
-
const { nonce: n, ciphertext: r, mac: i } = Uc(e), { chacha_key:
|
|
3304
|
-
if (!
|
|
3303
|
+
const { nonce: n, ciphertext: r, mac: i } = Uc(e), { chacha_key: o, chacha_nonce: s, hmac_key: a } = ei(t, n), c = ti(a, r, n);
|
|
3304
|
+
if (!Oo(c, i))
|
|
3305
3305
|
throw new Error("invalid MAC");
|
|
3306
|
-
const
|
|
3307
|
-
return Cc(
|
|
3306
|
+
const u = Nr(o, s, r);
|
|
3307
|
+
return Cc(u);
|
|
3308
3308
|
}
|
|
3309
3309
|
var _c = {
|
|
3310
3310
|
utils: {
|
|
@@ -3319,10 +3319,10 @@ q(Ic, {
|
|
|
3319
3319
|
parseConnectionString: () => Lc
|
|
3320
3320
|
});
|
|
3321
3321
|
function Lc(e) {
|
|
3322
|
-
const { pathname: t, searchParams: n } = new URL(e), r = t, i = n.get("relay"),
|
|
3323
|
-
if (!r || !i || !
|
|
3322
|
+
const { pathname: t, searchParams: n } = new URL(e), r = t, i = n.get("relay"), o = n.get("secret");
|
|
3323
|
+
if (!r || !i || !o)
|
|
3324
3324
|
throw new Error("invalid connection string");
|
|
3325
|
-
return { pubkey: r, relay: i, secret:
|
|
3325
|
+
return { pubkey: r, relay: i, secret: o };
|
|
3326
3326
|
}
|
|
3327
3327
|
async function $c(e, t, n) {
|
|
3328
3328
|
const i = await zr(t, e, JSON.stringify({
|
|
@@ -3330,13 +3330,13 @@ async function $c(e, t, n) {
|
|
|
3330
3330
|
params: {
|
|
3331
3331
|
invoice: n
|
|
3332
3332
|
}
|
|
3333
|
-
})),
|
|
3333
|
+
})), o = {
|
|
3334
3334
|
kind: qr,
|
|
3335
3335
|
created_at: Math.round(Date.now() / 1e3),
|
|
3336
3336
|
content: i,
|
|
3337
3337
|
tags: [["p", e]]
|
|
3338
3338
|
};
|
|
3339
|
-
return X(
|
|
3339
|
+
return X(o, t);
|
|
3340
3340
|
}
|
|
3341
3341
|
var Tc = {};
|
|
3342
3342
|
q(Tc, {
|
|
@@ -3358,16 +3358,16 @@ async function Oc(e) {
|
|
|
3358
3358
|
try {
|
|
3359
3359
|
let t = "", { lud06: n, lud16: r } = JSON.parse(e.content);
|
|
3360
3360
|
if (n) {
|
|
3361
|
-
let { words:
|
|
3362
|
-
t =
|
|
3361
|
+
let { words: s } = je.decode(n, 1e3), a = je.fromWords(s);
|
|
3362
|
+
t = le.decode(a);
|
|
3363
3363
|
} else if (r) {
|
|
3364
|
-
let [
|
|
3365
|
-
t = new URL(`/.well-known/lnurlp/${
|
|
3364
|
+
let [s, a] = r.split("@");
|
|
3365
|
+
t = new URL(`/.well-known/lnurlp/${s}`, `https://${a}`).toString();
|
|
3366
3366
|
} else
|
|
3367
3367
|
return null;
|
|
3368
|
-
let
|
|
3369
|
-
if (
|
|
3370
|
-
return
|
|
3368
|
+
let o = await (await En(t)).json();
|
|
3369
|
+
if (o.allowsNostr && o.nostrPubkey)
|
|
3370
|
+
return o.callback;
|
|
3371
3371
|
} catch {
|
|
3372
3372
|
}
|
|
3373
3373
|
return null;
|
|
@@ -3383,7 +3383,7 @@ function Mc({
|
|
|
3383
3383
|
throw new Error("amount not given");
|
|
3384
3384
|
if (!e)
|
|
3385
3385
|
throw new Error("profile not given");
|
|
3386
|
-
let
|
|
3386
|
+
let o = {
|
|
3387
3387
|
kind: 9734,
|
|
3388
3388
|
created_at: Math.round(Date.now() / 1e3),
|
|
3389
3389
|
content: i,
|
|
@@ -3393,7 +3393,7 @@ function Mc({
|
|
|
3393
3393
|
["relays", ...r]
|
|
3394
3394
|
]
|
|
3395
3395
|
};
|
|
3396
|
-
return t &&
|
|
3396
|
+
return t && o.tags.push(["e", t]), o;
|
|
3397
3397
|
}
|
|
3398
3398
|
function Hc(e) {
|
|
3399
3399
|
let t;
|
|
@@ -3402,17 +3402,17 @@ function Hc(e) {
|
|
|
3402
3402
|
} catch {
|
|
3403
3403
|
return "Invalid zap request JSON.";
|
|
3404
3404
|
}
|
|
3405
|
-
if (!
|
|
3405
|
+
if (!on(t))
|
|
3406
3406
|
return "Zap request is not a valid Nostr event.";
|
|
3407
3407
|
if (!pt(t))
|
|
3408
3408
|
return "Invalid signature on zap request.";
|
|
3409
|
-
let n = t.tags.find(([
|
|
3409
|
+
let n = t.tags.find(([o, s]) => o === "p" && s);
|
|
3410
3410
|
if (!n)
|
|
3411
3411
|
return "Zap request doesn't have a 'p' tag.";
|
|
3412
3412
|
if (!n[1].match(/^[a-f0-9]{64}$/))
|
|
3413
3413
|
return "Zap request 'p' tag is not valid hex.";
|
|
3414
|
-
let r = t.tags.find(([
|
|
3415
|
-
return r && !r[1].match(/^[a-f0-9]{64}$/) ? "Zap request 'e' tag is not valid hex." : t.tags.find(([
|
|
3414
|
+
let r = t.tags.find(([o, s]) => o === "e" && s);
|
|
3415
|
+
return r && !r[1].match(/^[a-f0-9]{64}$/) ? "Zap request 'e' tag is not valid hex." : t.tags.find(([o, s]) => o === "relays" && s) ? null : "Zap request doesn't have a 'relays' tag.";
|
|
3416
3416
|
}
|
|
3417
3417
|
function Pc({
|
|
3418
3418
|
zapRequest: e,
|
|
@@ -3420,32 +3420,32 @@ function Pc({
|
|
|
3420
3420
|
bolt11: n,
|
|
3421
3421
|
paidAt: r
|
|
3422
3422
|
}) {
|
|
3423
|
-
let i = JSON.parse(e),
|
|
3423
|
+
let i = JSON.parse(e), o = i.tags.filter(([a]) => a === "e" || a === "p" || a === "a"), s = {
|
|
3424
3424
|
kind: 9735,
|
|
3425
3425
|
created_at: Math.round(r.getTime() / 1e3),
|
|
3426
3426
|
content: "",
|
|
3427
|
-
tags: [...
|
|
3427
|
+
tags: [...o, ["P", i.pubkey], ["bolt11", n], ["description", e]]
|
|
3428
3428
|
};
|
|
3429
|
-
return t &&
|
|
3429
|
+
return t && s.tags.push(["preimage", t]), s;
|
|
3430
3430
|
}
|
|
3431
3431
|
var qc = {};
|
|
3432
3432
|
q(qc, {
|
|
3433
|
-
createRumor: () =>
|
|
3433
|
+
createRumor: () => si,
|
|
3434
3434
|
createSeal: () => ai,
|
|
3435
3435
|
createWrap: () => ci,
|
|
3436
|
-
unwrapEvent: () =>
|
|
3436
|
+
unwrapEvent: () => li,
|
|
3437
3437
|
unwrapManyEvents: () => zc,
|
|
3438
3438
|
wrapEvent: () => Vt,
|
|
3439
3439
|
wrapManyEvents: () => jc
|
|
3440
3440
|
});
|
|
3441
|
-
var Dc = 2 * 24 * 60 * 60, ni = () => Math.round(Date.now() / 1e3), ri = () => Math.round(ni() - Math.random() * Dc), ii = (e, t) => wn(e, t),
|
|
3442
|
-
function
|
|
3441
|
+
var Dc = 2 * 24 * 60 * 60, ni = () => Math.round(Date.now() / 1e3), ri = () => Math.round(ni() - Math.random() * Dc), ii = (e, t) => wn(e, t), oi = (e, t, n) => vn(JSON.stringify(e), ii(t, n)), Dn = (e, t) => JSON.parse(mn(e.content, ii(t, e.pubkey)));
|
|
3442
|
+
function si(e, t) {
|
|
3443
3443
|
const n = {
|
|
3444
3444
|
created_at: ni(),
|
|
3445
3445
|
content: "",
|
|
3446
3446
|
tags: [],
|
|
3447
3447
|
...e,
|
|
3448
|
-
pubkey:
|
|
3448
|
+
pubkey: ue(t)
|
|
3449
3449
|
};
|
|
3450
3450
|
return n.id = Qe(n), n;
|
|
3451
3451
|
}
|
|
@@ -3453,7 +3453,7 @@ function ai(e, t, n) {
|
|
|
3453
3453
|
return X(
|
|
3454
3454
|
{
|
|
3455
3455
|
kind: Lr,
|
|
3456
|
-
content:
|
|
3456
|
+
content: oi(e, t, n),
|
|
3457
3457
|
created_at: ri(),
|
|
3458
3458
|
tags: []
|
|
3459
3459
|
},
|
|
@@ -3465,7 +3465,7 @@ function ci(e, t) {
|
|
|
3465
3465
|
return X(
|
|
3466
3466
|
{
|
|
3467
3467
|
kind: Hr,
|
|
3468
|
-
content:
|
|
3468
|
+
content: oi(e, n, t),
|
|
3469
3469
|
created_at: ri(),
|
|
3470
3470
|
tags: [["p", t]]
|
|
3471
3471
|
},
|
|
@@ -3473,25 +3473,25 @@ function ci(e, t) {
|
|
|
3473
3473
|
);
|
|
3474
3474
|
}
|
|
3475
3475
|
function Vt(e, t, n) {
|
|
3476
|
-
const r =
|
|
3476
|
+
const r = si(e, t), i = ai(r, t, n);
|
|
3477
3477
|
return ci(i, n);
|
|
3478
3478
|
}
|
|
3479
3479
|
function jc(e, t, n) {
|
|
3480
3480
|
if (!n || n.length === 0)
|
|
3481
3481
|
throw new Error("At least one recipient is required.");
|
|
3482
|
-
const r =
|
|
3483
|
-
return n.forEach((
|
|
3484
|
-
i.push(Vt(e, t,
|
|
3482
|
+
const r = ue(t), i = [Vt(e, t, r)];
|
|
3483
|
+
return n.forEach((o) => {
|
|
3484
|
+
i.push(Vt(e, t, o));
|
|
3485
3485
|
}), i;
|
|
3486
3486
|
}
|
|
3487
|
-
function
|
|
3487
|
+
function li(e, t) {
|
|
3488
3488
|
const n = Dn(e, t);
|
|
3489
3489
|
return Dn(n, t);
|
|
3490
3490
|
}
|
|
3491
3491
|
function zc(e, t) {
|
|
3492
3492
|
let n = [];
|
|
3493
3493
|
return e.forEach((r) => {
|
|
3494
|
-
n.push(
|
|
3494
|
+
n.push(li(r, t));
|
|
3495
3495
|
}), n.sort((r, i) => r.created_at - i.created_at), n;
|
|
3496
3496
|
}
|
|
3497
3497
|
var Vc = {};
|
|
@@ -3507,10 +3507,10 @@ q(Vc, {
|
|
|
3507
3507
|
validateEventUrlTag: () => pi,
|
|
3508
3508
|
validateToken: () => Zc
|
|
3509
3509
|
});
|
|
3510
|
-
var
|
|
3510
|
+
var ui = "Nostr ";
|
|
3511
3511
|
async function Wc(e, t, n, r = !1, i) {
|
|
3512
|
-
const
|
|
3513
|
-
kind:
|
|
3512
|
+
const o = {
|
|
3513
|
+
kind: ln,
|
|
3514
3514
|
tags: [
|
|
3515
3515
|
["u", e],
|
|
3516
3516
|
["method", t]
|
|
@@ -3518,23 +3518,23 @@ async function Wc(e, t, n, r = !1, i) {
|
|
|
3518
3518
|
created_at: Math.round((/* @__PURE__ */ new Date()).getTime() / 1e3),
|
|
3519
3519
|
content: ""
|
|
3520
3520
|
};
|
|
3521
|
-
i &&
|
|
3522
|
-
const
|
|
3523
|
-
return (r ?
|
|
3521
|
+
i && o.tags.push(["payload", xn(i)]);
|
|
3522
|
+
const s = await n(o);
|
|
3523
|
+
return (r ? ui : "") + he.encode(ne.encode(JSON.stringify(s)));
|
|
3524
3524
|
}
|
|
3525
3525
|
async function Zc(e, t, n) {
|
|
3526
|
-
const r = await fi(e).catch((
|
|
3527
|
-
throw
|
|
3526
|
+
const r = await fi(e).catch((o) => {
|
|
3527
|
+
throw o;
|
|
3528
3528
|
});
|
|
3529
|
-
return await wi(r, t, n).catch((
|
|
3530
|
-
throw
|
|
3529
|
+
return await wi(r, t, n).catch((o) => {
|
|
3530
|
+
throw o;
|
|
3531
3531
|
});
|
|
3532
3532
|
}
|
|
3533
3533
|
async function fi(e) {
|
|
3534
3534
|
if (!e)
|
|
3535
3535
|
throw new Error("Missing token");
|
|
3536
|
-
e = e.replace(
|
|
3537
|
-
const t =
|
|
3536
|
+
e = e.replace(ui, "");
|
|
3537
|
+
const t = le.decode(he.decode(e));
|
|
3538
3538
|
if (!t || t.length === 0 || !t.startsWith("{"))
|
|
3539
3539
|
throw new Error("Invalid token");
|
|
3540
3540
|
return JSON.parse(t);
|
|
@@ -3543,7 +3543,7 @@ function hi(e) {
|
|
|
3543
3543
|
return e.created_at ? Math.round((/* @__PURE__ */ new Date()).getTime() / 1e3) - e.created_at < 60 : !1;
|
|
3544
3544
|
}
|
|
3545
3545
|
function di(e) {
|
|
3546
|
-
return e.kind ===
|
|
3546
|
+
return e.kind === ln;
|
|
3547
3547
|
}
|
|
3548
3548
|
function pi(e, t) {
|
|
3549
3549
|
const n = e.tags.find((r) => r[0] === "u");
|
|
@@ -3579,9 +3579,9 @@ async function wi(e, t, n, r) {
|
|
|
3579
3579
|
throw new Error("Invalid nostr event, payload tag does not match request body hash");
|
|
3580
3580
|
return !0;
|
|
3581
3581
|
}
|
|
3582
|
-
const Pe = 4, jn = 30078,
|
|
3582
|
+
const Pe = 4, jn = 30078, nl = 100;
|
|
3583
3583
|
var Gc = /* @__PURE__ */ ((e) => (e[e.Us = 0] = "Us", e[e.Them = 1] = "Them", e))(Gc || {});
|
|
3584
|
-
function
|
|
3584
|
+
function rl(e) {
|
|
3585
3585
|
return JSON.stringify({
|
|
3586
3586
|
rootKey: M(e.rootKey),
|
|
3587
3587
|
theirNostrPublicKey: e.theirNostrPublicKey,
|
|
@@ -3612,7 +3612,7 @@ function ru(e) {
|
|
|
3612
3612
|
)
|
|
3613
3613
|
});
|
|
3614
3614
|
}
|
|
3615
|
-
function
|
|
3615
|
+
function il(e) {
|
|
3616
3616
|
const t = JSON.parse(e);
|
|
3617
3617
|
return {
|
|
3618
3618
|
rootKey: G(t.rootKey),
|
|
@@ -3644,7 +3644,7 @@ function iu(e) {
|
|
|
3644
3644
|
)
|
|
3645
3645
|
};
|
|
3646
3646
|
}
|
|
3647
|
-
async function*
|
|
3647
|
+
async function* ol(e) {
|
|
3648
3648
|
const t = [];
|
|
3649
3649
|
let n = null;
|
|
3650
3650
|
const r = e.onMessage((i) => {
|
|
@@ -3661,15 +3661,15 @@ async function* su(e) {
|
|
|
3661
3661
|
}
|
|
3662
3662
|
function Oe(e, t = new Uint8Array(32), n = 1) {
|
|
3663
3663
|
const r = rn(fe, e, t), i = [];
|
|
3664
|
-
for (let
|
|
3665
|
-
i.push(kr(fe, r, new Uint8Array([
|
|
3664
|
+
for (let o = 1; o <= n; o++)
|
|
3665
|
+
i.push(kr(fe, r, new Uint8Array([o]), 32));
|
|
3666
3666
|
return i;
|
|
3667
3667
|
}
|
|
3668
3668
|
function It(e, t) {
|
|
3669
3669
|
return `${e}:${t}`;
|
|
3670
3670
|
}
|
|
3671
3671
|
const Fc = 1e3;
|
|
3672
|
-
class
|
|
3672
|
+
class ot {
|
|
3673
3673
|
// 1. CHANNEL PUBLIC INTERFACE
|
|
3674
3674
|
constructor(t, n) {
|
|
3675
3675
|
te(this, "nostrUnsubscribe");
|
|
@@ -3689,24 +3689,24 @@ class st {
|
|
|
3689
3689
|
* @param name Optional name for the session (for debugging)
|
|
3690
3690
|
* @returns A new Session instance
|
|
3691
3691
|
*/
|
|
3692
|
-
static init(t, n, r, i,
|
|
3693
|
-
const a = Ce(), [c,
|
|
3694
|
-
let f,
|
|
3695
|
-
i ? (f = { publicKey:
|
|
3692
|
+
static init(t, n, r, i, o, s) {
|
|
3693
|
+
const a = Ce(), [c, u] = Oe(o, j.getConversationKey(a, n), 2);
|
|
3694
|
+
let f, l;
|
|
3695
|
+
i ? (f = { publicKey: ue(r), privateKey: r }, l = { publicKey: ue(a), privateKey: a }) : l = { publicKey: ue(r), privateKey: r };
|
|
3696
3696
|
const g = {
|
|
3697
|
-
rootKey: i ? c :
|
|
3697
|
+
rootKey: i ? c : o,
|
|
3698
3698
|
theirNostrPublicKey: n,
|
|
3699
3699
|
ourCurrentNostrKey: f,
|
|
3700
|
-
ourNextNostrKey:
|
|
3700
|
+
ourNextNostrKey: l,
|
|
3701
3701
|
receivingChainKey: void 0,
|
|
3702
|
-
sendingChainKey: i ?
|
|
3702
|
+
sendingChainKey: i ? u : void 0,
|
|
3703
3703
|
sendingChainMessageNumber: 0,
|
|
3704
3704
|
receivingChainMessageNumber: 0,
|
|
3705
3705
|
previousSendingChainMessageCount: 0,
|
|
3706
3706
|
skippedMessageKeys: {},
|
|
3707
3707
|
skippedHeaderKeys: {}
|
|
3708
|
-
}, b = new
|
|
3709
|
-
return
|
|
3708
|
+
}, b = new ot(t, g);
|
|
3709
|
+
return s && (b.name = s), b;
|
|
3710
3710
|
}
|
|
3711
3711
|
/**
|
|
3712
3712
|
* Sends an encrypted message through the session
|
|
@@ -3717,11 +3717,11 @@ class st {
|
|
|
3717
3717
|
send(t) {
|
|
3718
3718
|
if (!this.state.theirNostrPublicKey || !this.state.ourCurrentNostrKey)
|
|
3719
3719
|
throw new Error("we are not the initiator, so we can't send the first message");
|
|
3720
|
-
const [n, r] = this.ratchetEncrypt(t), i = j.getConversationKey(this.state.ourCurrentNostrKey.privateKey, this.state.theirNostrPublicKey),
|
|
3720
|
+
const [n, r] = this.ratchetEncrypt(t), i = j.getConversationKey(this.state.ourCurrentNostrKey.privateKey, this.state.theirNostrPublicKey), o = j.encrypt(JSON.stringify(n), i);
|
|
3721
3721
|
return X({
|
|
3722
3722
|
content: r,
|
|
3723
3723
|
kind: Pe,
|
|
3724
|
-
tags: [["header",
|
|
3724
|
+
tags: [["header", o]],
|
|
3725
3725
|
created_at: Math.floor(Date.now() / 1e3)
|
|
3726
3726
|
}, this.state.ourCurrentNostrKey.privateKey);
|
|
3727
3727
|
}
|
|
@@ -3755,13 +3755,13 @@ class st {
|
|
|
3755
3755
|
const i = this.trySkippedMessageKeys(t, n, r);
|
|
3756
3756
|
if (i) return i;
|
|
3757
3757
|
this.skipMessageKeys(t.number, r);
|
|
3758
|
-
const [
|
|
3759
|
-
this.state.receivingChainKey =
|
|
3758
|
+
const [o, s] = Oe(this.state.receivingChainKey, new Uint8Array([1]), 2);
|
|
3759
|
+
this.state.receivingChainKey = o, this.state.receivingChainMessageNumber++;
|
|
3760
3760
|
try {
|
|
3761
|
-
return j.decrypt(n,
|
|
3761
|
+
return j.decrypt(n, s);
|
|
3762
3762
|
} catch (a) {
|
|
3763
3763
|
throw console.error(this.name, "Decryption failed:", a, {
|
|
3764
|
-
messageKey: M(
|
|
3764
|
+
messageKey: M(s).slice(0, 4),
|
|
3765
3765
|
receivingChainKey: M(this.state.receivingChainKey).slice(0, 4),
|
|
3766
3766
|
sendingChainKey: this.state.sendingChainKey && M(this.state.sendingChainKey).slice(0, 4),
|
|
3767
3767
|
rootKey: M(this.state.rootKey).slice(0, 4)
|
|
@@ -3772,12 +3772,12 @@ class st {
|
|
|
3772
3772
|
this.state.previousSendingChainMessageCount = this.state.sendingChainMessageNumber, this.state.sendingChainMessageNumber = 0, this.state.receivingChainMessageNumber = 0, this.state.theirNostrPublicKey = t;
|
|
3773
3773
|
const n = j.getConversationKey(this.state.ourNextNostrKey.privateKey, this.state.theirNostrPublicKey), [r, i] = Oe(this.state.rootKey, n, 2);
|
|
3774
3774
|
this.state.receivingChainKey = i, this.state.ourCurrentNostrKey = this.state.ourNextNostrKey;
|
|
3775
|
-
const
|
|
3775
|
+
const o = Ce();
|
|
3776
3776
|
this.state.ourNextNostrKey = {
|
|
3777
|
-
publicKey:
|
|
3778
|
-
privateKey:
|
|
3777
|
+
publicKey: ue(o),
|
|
3778
|
+
privateKey: o
|
|
3779
3779
|
};
|
|
3780
|
-
const
|
|
3780
|
+
const s = j.getConversationKey(this.state.ourNextNostrKey.privateKey, this.state.theirNostrPublicKey), [a, c] = Oe(r, s, 2);
|
|
3781
3781
|
this.state.rootKey = a, this.state.sendingChainKey = c;
|
|
3782
3782
|
}
|
|
3783
3783
|
// 3. MESSAGE KEY FUNCTIONS
|
|
@@ -3787,25 +3787,25 @@ class st {
|
|
|
3787
3787
|
for (; this.state.receivingChainMessageNumber < t; ) {
|
|
3788
3788
|
const [r, i] = Oe(this.state.receivingChainKey, new Uint8Array([1]), 2);
|
|
3789
3789
|
this.state.receivingChainKey = r;
|
|
3790
|
-
const
|
|
3791
|
-
if (this.state.skippedMessageKeys[
|
|
3792
|
-
const
|
|
3790
|
+
const o = It(n, this.state.receivingChainMessageNumber);
|
|
3791
|
+
if (this.state.skippedMessageKeys[o] = i, !this.state.skippedHeaderKeys[n]) {
|
|
3792
|
+
const s = [];
|
|
3793
3793
|
if (this.state.ourCurrentNostrKey) {
|
|
3794
3794
|
const c = j.getConversationKey(this.state.ourCurrentNostrKey.privateKey, n);
|
|
3795
|
-
|
|
3795
|
+
s.push(c);
|
|
3796
3796
|
}
|
|
3797
3797
|
const a = j.getConversationKey(this.state.ourNextNostrKey.privateKey, n);
|
|
3798
|
-
|
|
3798
|
+
s.push(a), this.state.skippedHeaderKeys[n] = s;
|
|
3799
3799
|
}
|
|
3800
3800
|
this.state.receivingChainMessageNumber++;
|
|
3801
3801
|
}
|
|
3802
3802
|
}
|
|
3803
3803
|
trySkippedMessageKeys(t, n, r) {
|
|
3804
|
-
var
|
|
3804
|
+
var o;
|
|
3805
3805
|
const i = It(r, t.number);
|
|
3806
3806
|
if (i in this.state.skippedMessageKeys) {
|
|
3807
|
-
const
|
|
3808
|
-
return delete this.state.skippedMessageKeys[i], Object.keys(this.state.skippedMessageKeys).some((c) => c.startsWith(`${r}:`)) || (delete this.state.skippedHeaderKeys[r], (
|
|
3807
|
+
const s = this.state.skippedMessageKeys[i];
|
|
3808
|
+
return delete this.state.skippedMessageKeys[i], Object.keys(this.state.skippedMessageKeys).some((c) => c.startsWith(`${r}:`)) || (delete this.state.skippedHeaderKeys[r], (o = this.nostrUnsubscribe) == null || o.call(this), this.nostrUnsubscribe = void 0), j.decrypt(n, s);
|
|
3809
3809
|
}
|
|
3810
3810
|
return null;
|
|
3811
3811
|
}
|
|
@@ -3813,9 +3813,9 @@ class st {
|
|
|
3813
3813
|
decryptHeader(t) {
|
|
3814
3814
|
const n = t.tags[0][1];
|
|
3815
3815
|
if (this.state.ourCurrentNostrKey) {
|
|
3816
|
-
const
|
|
3816
|
+
const o = j.getConversationKey(this.state.ourCurrentNostrKey.privateKey, t.pubkey);
|
|
3817
3817
|
try {
|
|
3818
|
-
return [JSON.parse(j.decrypt(n,
|
|
3818
|
+
return [JSON.parse(j.decrypt(n, o)), !1, !1];
|
|
3819
3819
|
} catch {
|
|
3820
3820
|
}
|
|
3821
3821
|
}
|
|
@@ -3826,25 +3826,25 @@ class st {
|
|
|
3826
3826
|
}
|
|
3827
3827
|
const i = this.state.skippedHeaderKeys[t.pubkey];
|
|
3828
3828
|
if (i)
|
|
3829
|
-
for (const
|
|
3829
|
+
for (const o of i)
|
|
3830
3830
|
try {
|
|
3831
|
-
return [JSON.parse(j.decrypt(n,
|
|
3831
|
+
return [JSON.parse(j.decrypt(n, o)), !1, !0];
|
|
3832
3832
|
} catch {
|
|
3833
3833
|
}
|
|
3834
3834
|
throw new Error("Failed to decrypt header with current and skipped header keys");
|
|
3835
3835
|
}
|
|
3836
3836
|
handleNostrEvent(t) {
|
|
3837
|
-
var
|
|
3837
|
+
var s;
|
|
3838
3838
|
const [n, r, i] = this.decryptHeader(t);
|
|
3839
3839
|
if (!i)
|
|
3840
|
-
this.state.theirNostrPublicKey !== n.nextPublicKey && (this.state.theirNostrPublicKey = n.nextPublicKey, (
|
|
3840
|
+
this.state.theirNostrPublicKey !== n.nextPublicKey && (this.state.theirNostrPublicKey = n.nextPublicKey, (s = this.nostrUnsubscribe) == null || s.call(this), this.nostrUnsubscribe = this.nostrNextUnsubscribe, this.nostrNextUnsubscribe = this.nostrSubscribe(
|
|
3841
3841
|
{ authors: [this.state.theirNostrPublicKey], kinds: [Pe] },
|
|
3842
3842
|
(a) => this.handleNostrEvent(a)
|
|
3843
3843
|
)), r && (this.skipMessageKeys(n.previousChainLength, t.pubkey), this.ratchetStep(n.nextPublicKey));
|
|
3844
3844
|
else if (!(It(t.pubkey, n.number) in this.state.skippedMessageKeys))
|
|
3845
3845
|
return;
|
|
3846
|
-
const
|
|
3847
|
-
this.internalSubscriptions.forEach((a) => a({ id: t.id, data:
|
|
3846
|
+
const o = this.ratchetDecrypt(n, t.content, t.pubkey);
|
|
3847
|
+
this.internalSubscriptions.forEach((a) => a({ id: t.id, data: o, pubkey: n.nextPublicKey, time: n.time }));
|
|
3848
3848
|
}
|
|
3849
3849
|
subscribeToNostrEvents() {
|
|
3850
3850
|
if (this.nostrNextUnsubscribe) return;
|
|
@@ -3866,16 +3866,16 @@ function Xe(e, t) {
|
|
|
3866
3866
|
return rn(fe, n, "nip44-v2");
|
|
3867
3867
|
}
|
|
3868
3868
|
class Me {
|
|
3869
|
-
constructor(t, n, r, i,
|
|
3870
|
-
this.
|
|
3869
|
+
constructor(t, n, r, i, o, s, a = []) {
|
|
3870
|
+
this.inviterEphemeralPublicKey = t, this.linkSecret = n, this.inviter = r, this.inviterEphemeralPrivateKey = i, this.label = o, this.maxUses = s, this.usedBy = a;
|
|
3871
3871
|
}
|
|
3872
3872
|
static createNew(t, n, r) {
|
|
3873
3873
|
if (!t)
|
|
3874
3874
|
throw new Error("Inviter public key is required");
|
|
3875
|
-
const i = Ce(),
|
|
3875
|
+
const i = Ce(), o = ue(i), s = M(Ce());
|
|
3876
3876
|
return new Me(
|
|
3877
|
-
s,
|
|
3878
3877
|
o,
|
|
3878
|
+
s,
|
|
3879
3879
|
t,
|
|
3880
3880
|
i,
|
|
3881
3881
|
n,
|
|
@@ -3887,46 +3887,46 @@ class Me {
|
|
|
3887
3887
|
if (!r)
|
|
3888
3888
|
throw new Error("No invite data found in the URL hash.");
|
|
3889
3889
|
const i = decodeURIComponent(r);
|
|
3890
|
-
let
|
|
3890
|
+
let o;
|
|
3891
3891
|
try {
|
|
3892
|
-
|
|
3893
|
-
} catch (
|
|
3894
|
-
throw new Error("Invite data in URL hash is not valid JSON: " +
|
|
3892
|
+
o = JSON.parse(i);
|
|
3893
|
+
} catch (u) {
|
|
3894
|
+
throw new Error("Invite data in URL hash is not valid JSON: " + u);
|
|
3895
3895
|
}
|
|
3896
|
-
const { inviter:
|
|
3897
|
-
if (!
|
|
3898
|
-
throw new Error("Missing required fields (inviter,
|
|
3896
|
+
const { inviter: s, ephemeralKey: a, linkSecret: c } = o;
|
|
3897
|
+
if (!s || !a || !c)
|
|
3898
|
+
throw new Error("Missing required fields (inviter, ephemeralKey, linkSecret) in invite data.");
|
|
3899
3899
|
return new Me(
|
|
3900
3900
|
a,
|
|
3901
3901
|
c,
|
|
3902
|
-
|
|
3902
|
+
s
|
|
3903
3903
|
);
|
|
3904
3904
|
}
|
|
3905
3905
|
static deserialize(t) {
|
|
3906
3906
|
const n = JSON.parse(t);
|
|
3907
3907
|
return new Me(
|
|
3908
|
-
n.
|
|
3908
|
+
n.inviterEphemeralPublicKey,
|
|
3909
3909
|
n.linkSecret,
|
|
3910
3910
|
n.inviter,
|
|
3911
|
-
n.
|
|
3911
|
+
n.inviterEphemeralPrivateKey ? new Uint8Array(n.inviterEphemeralPrivateKey) : void 0,
|
|
3912
3912
|
n.label,
|
|
3913
3913
|
n.maxUses,
|
|
3914
3914
|
n.usedBy
|
|
3915
3915
|
);
|
|
3916
3916
|
}
|
|
3917
3917
|
static fromEvent(t) {
|
|
3918
|
-
var
|
|
3918
|
+
var s, a;
|
|
3919
3919
|
if (!t.sig)
|
|
3920
3920
|
throw new Error("Event is not signed");
|
|
3921
3921
|
if (!pt(t))
|
|
3922
3922
|
throw new Error("Event signature is invalid");
|
|
3923
|
-
const { tags: n } = t, r = (
|
|
3923
|
+
const { tags: n } = t, r = (s = n.find(([c]) => c === "ephemeralKey")) == null ? void 0 : s[1], i = (a = n.find(([c]) => c === "linkSecret")) == null ? void 0 : a[1], o = t.pubkey;
|
|
3924
3924
|
if (!r || !i)
|
|
3925
3925
|
throw new Error("Invalid invite event: missing session key or link secret");
|
|
3926
3926
|
return new Me(
|
|
3927
3927
|
r,
|
|
3928
3928
|
i,
|
|
3929
|
-
|
|
3929
|
+
o
|
|
3930
3930
|
);
|
|
3931
3931
|
}
|
|
3932
3932
|
static fromUser(t, n, r) {
|
|
@@ -3936,10 +3936,10 @@ class Me {
|
|
|
3936
3936
|
limit: 1,
|
|
3937
3937
|
"#d": ["nostr-double-ratchet/invite"]
|
|
3938
3938
|
};
|
|
3939
|
-
let
|
|
3939
|
+
let o = 0;
|
|
3940
3940
|
return n(i, (a) => {
|
|
3941
|
-
if (!(!a.created_at || a.created_at <=
|
|
3942
|
-
|
|
3941
|
+
if (!(!a.created_at || a.created_at <= o)) {
|
|
3942
|
+
o = a.created_at;
|
|
3943
3943
|
try {
|
|
3944
3944
|
const c = Me.fromEvent(a);
|
|
3945
3945
|
r(c);
|
|
@@ -3954,10 +3954,10 @@ class Me {
|
|
|
3954
3954
|
*/
|
|
3955
3955
|
serialize() {
|
|
3956
3956
|
return JSON.stringify({
|
|
3957
|
-
|
|
3957
|
+
inviterEphemeralPublicKey: this.inviterEphemeralPublicKey,
|
|
3958
3958
|
linkSecret: this.linkSecret,
|
|
3959
3959
|
inviter: this.inviter,
|
|
3960
|
-
|
|
3960
|
+
inviterEphemeralPrivateKey: this.inviterEphemeralPrivateKey ? Array.from(this.inviterEphemeralPrivateKey) : void 0,
|
|
3961
3961
|
label: this.label,
|
|
3962
3962
|
maxUses: this.maxUses,
|
|
3963
3963
|
usedBy: this.usedBy
|
|
@@ -3969,7 +3969,7 @@ class Me {
|
|
|
3969
3969
|
getUrl(t = "https://iris.to") {
|
|
3970
3970
|
const n = {
|
|
3971
3971
|
inviter: this.inviter,
|
|
3972
|
-
|
|
3972
|
+
ephemeralKey: this.inviterEphemeralPublicKey,
|
|
3973
3973
|
linkSecret: this.linkSecret
|
|
3974
3974
|
}, r = new URL(t);
|
|
3975
3975
|
return r.hash = encodeURIComponent(JSON.stringify(n)), console.log("url", r.toString()), r.toString();
|
|
@@ -3980,7 +3980,7 @@ class Me {
|
|
|
3980
3980
|
pubkey: this.inviter,
|
|
3981
3981
|
content: "",
|
|
3982
3982
|
created_at: Math.floor(Date.now() / 1e3),
|
|
3983
|
-
tags: [["
|
|
3983
|
+
tags: [["ephemeralKey", this.inviterEphemeralPublicKey], ["linkSecret", this.linkSecret], ["d", "nostr-double-ratchet/invite"]]
|
|
3984
3984
|
};
|
|
3985
3985
|
}
|
|
3986
3986
|
/**
|
|
@@ -3999,44 +3999,44 @@ class Me {
|
|
|
3999
3999
|
* so the inviter can create the session on their side.
|
|
4000
4000
|
*/
|
|
4001
4001
|
async accept(t, n, r) {
|
|
4002
|
-
const i = Ce(),
|
|
4002
|
+
const i = Ce(), o = ue(i), s = this.inviter || this.inviterEphemeralPublicKey, a = G(this.linkSecret), c = ot.init(t, this.inviterEphemeralPublicKey, i, !0, a, void 0), u = Ce(), f = ue(u), l = typeof r == "function" ? r : (p, h) => Promise.resolve(j.encrypt(p, Xe(r, h))), g = {
|
|
4003
4003
|
pubkey: n,
|
|
4004
4004
|
tags: [["secret", this.linkSecret]],
|
|
4005
|
-
content: await
|
|
4005
|
+
content: await l(o, s),
|
|
4006
4006
|
created_at: Math.floor(Date.now() / 1e3)
|
|
4007
4007
|
}, b = {
|
|
4008
4008
|
kind: Pe,
|
|
4009
4009
|
pubkey: f,
|
|
4010
|
-
content: j.encrypt(JSON.stringify(g), Xe(
|
|
4010
|
+
content: j.encrypt(JSON.stringify(g), Xe(u, this.inviterEphemeralPublicKey)),
|
|
4011
4011
|
created_at: Math.floor(Date.now() / 1e3),
|
|
4012
|
-
tags: [["p", this.
|
|
4012
|
+
tags: [["p", this.inviterEphemeralPublicKey]]
|
|
4013
4013
|
};
|
|
4014
|
-
return { session: c, event: X(b,
|
|
4014
|
+
return { session: c, event: X(b, u) };
|
|
4015
4015
|
}
|
|
4016
4016
|
listen(t, n, r) {
|
|
4017
|
-
if (!this.
|
|
4017
|
+
if (!this.inviterEphemeralPrivateKey)
|
|
4018
4018
|
throw new Error("Inviter session key is not available");
|
|
4019
4019
|
const i = {
|
|
4020
4020
|
kinds: [Pe],
|
|
4021
|
-
"#p": [this.
|
|
4021
|
+
"#p": [this.inviterEphemeralPublicKey]
|
|
4022
4022
|
};
|
|
4023
|
-
return n(i, async (
|
|
4023
|
+
return n(i, async (o) => {
|
|
4024
4024
|
try {
|
|
4025
4025
|
if (this.maxUses && this.usedBy.length >= this.maxUses) {
|
|
4026
4026
|
console.error("Invite has reached maximum number of uses");
|
|
4027
4027
|
return;
|
|
4028
4028
|
}
|
|
4029
|
-
const
|
|
4029
|
+
const s = await j.decrypt(o.content, Xe(this.inviterEphemeralPrivateKey, o.pubkey)), a = JSON.parse(s);
|
|
4030
4030
|
if (!a.tags || !a.tags.some(([p, h]) => p === "secret" && h === this.linkSecret)) {
|
|
4031
|
-
console.error("Invalid secret from event",
|
|
4031
|
+
console.error("Invalid secret from event", o);
|
|
4032
4032
|
return;
|
|
4033
4033
|
}
|
|
4034
|
-
const c = typeof t == "function" ? t : (p, h) => Promise.resolve(j.decrypt(p, Xe(t, h))),
|
|
4035
|
-
this.usedBy.push(
|
|
4036
|
-
const f = await c(a.content,
|
|
4037
|
-
r(b,
|
|
4038
|
-
} catch (
|
|
4039
|
-
console.error("Error processing invite message:",
|
|
4034
|
+
const c = typeof t == "function" ? t : (p, h) => Promise.resolve(j.decrypt(p, Xe(t, h))), u = a.pubkey;
|
|
4035
|
+
this.usedBy.push(u);
|
|
4036
|
+
const f = await c(a.content, u), l = G(this.linkSecret), g = o.id, b = ot.init(n, f, this.inviterEphemeralPrivateKey, !1, l, g);
|
|
4037
|
+
r(b, u);
|
|
4038
|
+
} catch (s) {
|
|
4039
|
+
console.error("Error processing invite message:", s, "event", o);
|
|
4040
4040
|
}
|
|
4041
4041
|
});
|
|
4042
4042
|
}
|
|
@@ -4044,13 +4044,13 @@ class Me {
|
|
|
4044
4044
|
export {
|
|
4045
4045
|
jn as INVITE_EVENT_KIND,
|
|
4046
4046
|
Me as Invite,
|
|
4047
|
-
|
|
4047
|
+
nl as MAX_SKIP,
|
|
4048
4048
|
Pe as MESSAGE_EVENT_KIND,
|
|
4049
4049
|
Gc as Sender,
|
|
4050
|
-
|
|
4051
|
-
|
|
4052
|
-
|
|
4050
|
+
ot as Session,
|
|
4051
|
+
ol as createMessageStream,
|
|
4052
|
+
il as deserializeSessionState,
|
|
4053
4053
|
Oe as kdf,
|
|
4054
|
-
|
|
4054
|
+
rl as serializeSessionState,
|
|
4055
4055
|
It as skippedMessageIndexKey
|
|
4056
4056
|
};
|