@pezkuwi/wasm-crypto 7.5.13 → 7.5.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/Cargo.toml +50 -0
  2. package/Xargo.toml +2 -0
  3. package/build/README.md +29 -0
  4. package/build/bundle-pezkuwi-wasm-crypto.js +2092 -0
  5. package/build/bundle.d.ts +40 -0
  6. package/build/bundle.js +505 -0
  7. package/build/cjs/bundle.d.ts +40 -0
  8. package/build/cjs/bundle.js +544 -0
  9. package/{index.d.ts → build/cjs/index.d.ts} +0 -1
  10. package/build/cjs/index.js +4 -0
  11. package/build/cjs/init.js +21 -0
  12. package/build/cjs/initNone.js +20 -0
  13. package/build/cjs/initOnlyAsm.js +20 -0
  14. package/build/cjs/initOnlyWasm.js +20 -0
  15. package/build/cjs/initWasmAsm.js +20 -0
  16. package/build/cjs/packageInfo.js +4 -0
  17. package/build/index.d.ts +1 -0
  18. package/build/index.js +1 -0
  19. package/build/init.d.ts +16 -0
  20. package/build/init.js +17 -0
  21. package/build/initNone.d.ts +10 -0
  22. package/build/initNone.js +17 -0
  23. package/build/initOnlyAsm.d.ts +10 -0
  24. package/build/initOnlyAsm.js +17 -0
  25. package/build/initOnlyWasm.d.ts +10 -0
  26. package/build/initOnlyWasm.js +17 -0
  27. package/build/initWasmAsm.d.ts +10 -0
  28. package/build/initWasmAsm.js +17 -0
  29. package/build/package.json +208 -0
  30. package/build/packageDetect.d.ts +1 -0
  31. package/build/packageDetect.js +8 -0
  32. package/build/packageInfo.d.ts +6 -0
  33. package/build/packageInfo.js +1 -0
  34. package/build-deno/README.md +25 -0
  35. package/build-deno/bundle.ts +597 -0
  36. package/build-deno/index.ts +2 -0
  37. package/build-deno/init.ts +23 -0
  38. package/build-deno/initNone.ts +21 -0
  39. package/build-deno/initOnlyAsm.ts +21 -0
  40. package/build-deno/initOnlyWasm.ts +21 -0
  41. package/build-deno/initWasmAsm.ts +21 -0
  42. package/build-deno/mod.ts +2 -0
  43. package/build-deno/packageDetect.ts +12 -0
  44. package/build-deno/packageInfo.ts +3 -0
  45. package/build-deno/rs/.editorconfig +10 -0
  46. package/build-tsc/bundle.d.ts +40 -0
  47. package/{cjs → build-tsc}/index.d.ts +0 -1
  48. package/build-tsc-cjs/bundle.js +544 -0
  49. package/{cjs → build-tsc-cjs}/index.js +0 -1
  50. package/build-tsc-cjs/packageDetect.js +10 -0
  51. package/{cjs → build-tsc-cjs}/packageInfo.js +1 -1
  52. package/build-tsc-esm/bundle.js +505 -0
  53. package/{index.js → build-tsc-esm/index.js} +0 -1
  54. package/{packageInfo.js → build-tsc-esm/packageInfo.js} +1 -1
  55. package/package.json +89 -87
  56. package/src/bundle.ts +613 -0
  57. package/src/index.ts +5 -0
  58. package/src/init.ts +25 -0
  59. package/src/initNone.ts +23 -0
  60. package/src/initOnlyAsm.ts +23 -0
  61. package/src/initOnlyWasm.ts +23 -0
  62. package/src/initWasmAsm.ts +23 -0
  63. package/src/lib.rs +24 -0
  64. package/src/mod.ts +4 -0
  65. package/src/packageDetect.ts +16 -0
  66. package/src/packageInfo.ts +6 -0
  67. package/src/rs/.editorconfig +10 -0
  68. package/src/rs/bip39.rs +139 -0
  69. package/src/rs/ed25519.rs +142 -0
  70. package/src/rs/hashing.rs +322 -0
  71. package/src/rs/secp256k1.rs +150 -0
  72. package/src/rs/sr25519.rs +331 -0
  73. package/src/rs/vrf.rs +144 -0
  74. package/test/all/bip39.js +86 -0
  75. package/test/all/ed25519.js +84 -0
  76. package/test/all/hashing.js +138 -0
  77. package/test/all/index.js +126 -0
  78. package/test/all/secp256k1.js +105 -0
  79. package/test/all/sr25519.js +211 -0
  80. package/test/all/vrf.js +74 -0
  81. package/test/asm.js +10 -0
  82. package/test/deno.ts +38 -0
  83. package/test/jest.spec.ts +25 -0
  84. package/test/loader-build.js +39 -0
  85. package/test/wasm.js +8 -0
  86. package/tsconfig.build.json +19 -0
  87. package/tsconfig.build.tsbuildinfo +1 -0
  88. package/tsconfig.spec.json +16 -0
  89. package/tsconfig.spec.tsbuildinfo +1 -0
  90. package/bundle-pezkuwi-wasm-crypto.js +0 -825
  91. package/bundle.d.ts +0 -37
  92. package/bundle.js +0 -165
  93. package/cjs/bundle.d.ts +0 -37
  94. package/cjs/bundle.js +0 -171
  95. /package/{LICENSE → build/LICENSE} +0 -0
  96. /package/{init.d.ts → build/cjs/init.d.ts} +0 -0
  97. /package/{initNone.d.ts → build/cjs/initNone.d.ts} +0 -0
  98. /package/{initOnlyAsm.d.ts → build/cjs/initOnlyAsm.d.ts} +0 -0
  99. /package/{initOnlyWasm.d.ts → build/cjs/initOnlyWasm.d.ts} +0 -0
  100. /package/{initWasmAsm.d.ts → build/cjs/initWasmAsm.d.ts} +0 -0
  101. /package/{cjs → build/cjs}/package.json +0 -0
  102. /package/{packageDetect.d.ts → build/cjs/packageDetect.d.ts} +0 -0
  103. /package/{cjs → build/cjs}/packageDetect.js +0 -0
  104. /package/{packageInfo.d.ts → build/cjs/packageInfo.d.ts} +0 -0
  105. /package/{cjs → build-tsc}/init.d.ts +0 -0
  106. /package/{cjs → build-tsc}/initNone.d.ts +0 -0
  107. /package/{cjs → build-tsc}/initOnlyAsm.d.ts +0 -0
  108. /package/{cjs → build-tsc}/initOnlyWasm.d.ts +0 -0
  109. /package/{cjs → build-tsc}/initWasmAsm.d.ts +0 -0
  110. /package/{cjs → build-tsc}/packageDetect.d.ts +0 -0
  111. /package/{cjs → build-tsc}/packageInfo.d.ts +0 -0
  112. /package/{cjs → build-tsc-cjs}/init.js +0 -0
  113. /package/{cjs → build-tsc-cjs}/initNone.js +0 -0
  114. /package/{cjs → build-tsc-cjs}/initOnlyAsm.js +0 -0
  115. /package/{cjs → build-tsc-cjs}/initOnlyWasm.js +0 -0
  116. /package/{cjs → build-tsc-cjs}/initWasmAsm.js +0 -0
  117. /package/{init.js → build-tsc-esm/init.js} +0 -0
  118. /package/{initNone.js → build-tsc-esm/initNone.js} +0 -0
  119. /package/{initOnlyAsm.js → build-tsc-esm/initOnlyAsm.js} +0 -0
  120. /package/{initOnlyWasm.js → build-tsc-esm/initOnlyWasm.js} +0 -0
  121. /package/{initWasmAsm.js → build-tsc-esm/initWasmAsm.js} +0 -0
  122. /package/{packageDetect.js → build-tsc-esm/packageDetect.js} +0 -0
@@ -0,0 +1,2092 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
3
+ typeof define === 'function' && define.amd ? define(['exports'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.pezkuwiWasmCrypto = {}));
5
+ })(this, (function (exports) { 'use strict';
6
+
7
+ const global = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : window;
8
+
9
+ var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
10
+ const CHR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
11
+ const map = new Array(256);
12
+ for (let i = 0, count = CHR.length; i < count; i++) {
13
+ map[CHR.charCodeAt(i)] = i;
14
+ }
15
+ function base64Decode(data, out) {
16
+ let byte = 0;
17
+ let bits = 0;
18
+ let pos = -1;
19
+ for (let i = 0, last = out.length - 1; pos !== last; i++) {
20
+ byte = (byte << 6) | map[data.charCodeAt(i)];
21
+ if ((bits += 6) >= 8) {
22
+ out[++pos] = (byte >>> (bits -= 8)) & 0xff;
23
+ }
24
+ }
25
+ return out;
26
+ }
27
+
28
+ const u8 = Uint8Array, u16 = Uint16Array, u32$1 = Uint32Array;
29
+ const clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
30
+ const fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0, 0]);
31
+ const fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 0, 0]);
32
+ const freb = (eb, start) => {
33
+ const b = new u16(31);
34
+ for (let i = 0; i < 31; ++i) {
35
+ b[i] = start += 1 << eb[i - 1];
36
+ }
37
+ const r = new u32$1(b[30]);
38
+ for (let i = 1; i < 30; ++i) {
39
+ for (let j = b[i]; j < b[i + 1]; ++j) {
40
+ r[j] = ((j - b[i]) << 5) | i;
41
+ }
42
+ }
43
+ return [b, r];
44
+ };
45
+ const [fl, revfl] = freb(fleb, 2);
46
+ fl[28] = 258, revfl[258] = 28;
47
+ const [fd] = freb(fdeb, 0);
48
+ const rev = new u16(32768);
49
+ for (let i = 0; i < 32768; ++i) {
50
+ let x = ((i & 0xAAAA) >>> 1) | ((i & 0x5555) << 1);
51
+ x = ((x & 0xCCCC) >>> 2) | ((x & 0x3333) << 2);
52
+ x = ((x & 0xF0F0) >>> 4) | ((x & 0x0F0F) << 4);
53
+ rev[i] = (((x & 0xFF00) >>> 8) | ((x & 0x00FF) << 8)) >>> 1;
54
+ }
55
+ const hMap = ((cd, mb, r) => {
56
+ const s = cd.length;
57
+ let i = 0;
58
+ const l = new u16(mb);
59
+ for (; i < s; ++i) {
60
+ if (cd[i])
61
+ ++l[cd[i] - 1];
62
+ }
63
+ const le = new u16(mb);
64
+ for (i = 1; i < mb; ++i) {
65
+ le[i] = (le[i - 1] + l[i - 1]) << 1;
66
+ }
67
+ let co;
68
+ {
69
+ co = new u16(1 << mb);
70
+ const rvb = 15 - mb;
71
+ for (i = 0; i < s; ++i) {
72
+ if (cd[i]) {
73
+ const sv = (i << 4) | cd[i];
74
+ const r = mb - cd[i];
75
+ let v = le[cd[i] - 1]++ << r;
76
+ for (const m = v | ((1 << r) - 1); v <= m; ++v) {
77
+ co[rev[v] >> rvb] = sv;
78
+ }
79
+ }
80
+ }
81
+ }
82
+ return co;
83
+ });
84
+ const flt = new u8(288);
85
+ for (let i = 0; i < 144; ++i)
86
+ flt[i] = 8;
87
+ for (let i = 144; i < 256; ++i)
88
+ flt[i] = 9;
89
+ for (let i = 256; i < 280; ++i)
90
+ flt[i] = 7;
91
+ for (let i = 280; i < 288; ++i)
92
+ flt[i] = 8;
93
+ const fdt = new u8(32);
94
+ for (let i = 0; i < 32; ++i)
95
+ fdt[i] = 5;
96
+ const flrm = hMap(flt, 9);
97
+ const fdrm = hMap(fdt, 5);
98
+ const bits = (d, p, m) => {
99
+ const o = p >>> 3;
100
+ return ((d[o] | (d[o + 1] << 8)) >>> (p & 7)) & m;
101
+ };
102
+ const bits16 = (d, p) => {
103
+ const o = p >>> 3;
104
+ return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >>> (p & 7));
105
+ };
106
+ const shft = (p) => (p >>> 3) + (p & 7 && 1);
107
+ const slc = (v, s, e) => {
108
+ if (e == null || e > v.length)
109
+ e = v.length;
110
+ const n = new (v instanceof u16 ? u16 : v instanceof u32$1 ? u32$1 : u8)(e - s);
111
+ n.set(v.subarray(s, e));
112
+ return n;
113
+ };
114
+ const max = (a) => {
115
+ let m = a[0];
116
+ for (let i = 1, count = a.length; i < count; ++i) {
117
+ if (a[i] > m)
118
+ m = a[i];
119
+ }
120
+ return m;
121
+ };
122
+ const inflt = (dat, buf, st) => {
123
+ const noSt = !st || st.i;
124
+ if (!st)
125
+ st = {};
126
+ const sl = dat.length;
127
+ const noBuf = !buf || !noSt;
128
+ if (!buf)
129
+ buf = new u8(sl * 3);
130
+ const cbuf = (l) => {
131
+ let bl = buf.length;
132
+ if (l > bl) {
133
+ const nbuf = new u8(Math.max(bl << 1, l));
134
+ nbuf.set(buf);
135
+ buf = nbuf;
136
+ }
137
+ };
138
+ let final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;
139
+ if (final && !lm)
140
+ return buf;
141
+ const tbts = sl << 3;
142
+ do {
143
+ if (!lm) {
144
+ st.f = final = bits(dat, pos, 1);
145
+ const type = bits(dat, pos + 1, 3);
146
+ pos += 3;
147
+ if (!type) {
148
+ const s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;
149
+ if (t > sl) {
150
+ if (noSt)
151
+ throw 'unexpected EOF';
152
+ break;
153
+ }
154
+ if (noBuf)
155
+ cbuf(bt + l);
156
+ buf.set(dat.subarray(s, t), bt);
157
+ st.b = bt += l, st.p = pos = t << 3;
158
+ continue;
159
+ }
160
+ else if (type == 1)
161
+ lm = flrm, dm = fdrm, lbt = 9, dbt = 5;
162
+ else if (type == 2) {
163
+ const hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;
164
+ const tl = hLit + bits(dat, pos + 5, 31) + 1;
165
+ pos += 14;
166
+ const ldt = new u8(tl);
167
+ const clt = new u8(19);
168
+ for (let i = 0; i < hcLen; ++i) {
169
+ clt[clim[i]] = bits(dat, pos + i * 3, 7);
170
+ }
171
+ pos += hcLen * 3;
172
+ const clb = max(clt), clbmsk = (1 << clb) - 1;
173
+ if (!noSt && pos + tl * (clb + 7) > tbts)
174
+ break;
175
+ const clm = hMap(clt, clb);
176
+ for (let i = 0; i < tl;) {
177
+ const r = clm[bits(dat, pos, clbmsk)];
178
+ pos += r & 15;
179
+ const s = r >>> 4;
180
+ if (s < 16) {
181
+ ldt[i++] = s;
182
+ }
183
+ else {
184
+ let c = 0, n = 0;
185
+ if (s == 16)
186
+ n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];
187
+ else if (s == 17)
188
+ n = 3 + bits(dat, pos, 7), pos += 3;
189
+ else if (s == 18)
190
+ n = 11 + bits(dat, pos, 127), pos += 7;
191
+ while (n--)
192
+ ldt[i++] = c;
193
+ }
194
+ }
195
+ const lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);
196
+ lbt = max(lt);
197
+ dbt = max(dt);
198
+ lm = hMap(lt, lbt);
199
+ dm = hMap(dt, dbt);
200
+ }
201
+ else
202
+ throw 'invalid block type';
203
+ if (pos > tbts)
204
+ throw 'unexpected EOF';
205
+ }
206
+ if (noBuf)
207
+ cbuf(bt + 131072);
208
+ const lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;
209
+ const mxa = lbt + dbt + 18;
210
+ while (noSt || pos + mxa < tbts) {
211
+ const c = lm[bits16(dat, pos) & lms], sym = c >>> 4;
212
+ pos += c & 15;
213
+ if (pos > tbts)
214
+ throw 'unexpected EOF';
215
+ if (!c)
216
+ throw 'invalid length/literal';
217
+ if (sym < 256)
218
+ buf[bt++] = sym;
219
+ else if (sym == 256) {
220
+ lm = undefined;
221
+ break;
222
+ }
223
+ else {
224
+ let add = sym - 254;
225
+ if (sym > 264) {
226
+ const i = sym - 257, b = fleb[i];
227
+ add = bits(dat, pos, (1 << b) - 1) + fl[i];
228
+ pos += b;
229
+ }
230
+ const d = dm[bits16(dat, pos) & dms], dsym = d >>> 4;
231
+ if (!d)
232
+ throw 'invalid distance';
233
+ pos += d & 15;
234
+ let dt = fd[dsym];
235
+ if (dsym > 3) {
236
+ const b = fdeb[dsym];
237
+ dt += bits16(dat, pos) & ((1 << b) - 1), pos += b;
238
+ }
239
+ if (pos > tbts)
240
+ throw 'unexpected EOF';
241
+ if (noBuf)
242
+ cbuf(bt + 131072);
243
+ const end = bt + add;
244
+ for (; bt < end; bt += 4) {
245
+ buf[bt] = buf[bt - dt];
246
+ buf[bt + 1] = buf[bt + 1 - dt];
247
+ buf[bt + 2] = buf[bt + 2 - dt];
248
+ buf[bt + 3] = buf[bt + 3 - dt];
249
+ }
250
+ bt = end;
251
+ }
252
+ }
253
+ st.l = lm, st.p = pos, st.b = bt;
254
+ if (lm)
255
+ final = 1, st.m = lbt, st.d = dm, st.n = dbt;
256
+ } while (!final);
257
+ return bt == buf.length ? buf : slc(buf, 0, bt);
258
+ };
259
+ const zlv = (d) => {
260
+ if ((d[0] & 15) != 8 || (d[0] >>> 4) > 7 || ((d[0] << 8 | d[1]) % 31))
261
+ throw 'invalid zlib data';
262
+ if (d[1] & 32)
263
+ throw 'invalid zlib data: preset dictionaries not supported';
264
+ };
265
+ function unzlibSync(data, out) {
266
+ return inflt((zlv(data), data.subarray(2, -4)), out);
267
+ }
268
+
269
+ var lenIn = 69227;
270
+ var lenOut = 111597;
271
+ var bytes_1 = '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';
272
+
273
+ const wasmBytes = unzlibSync(base64Decode(bytes_1, new Uint8Array(lenIn)), new Uint8Array(lenOut));
274
+
275
+ const packageInfo = { name: '@pezkuwi/wasm-crypto', path: (({ url: (typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('bundle-pezkuwi-wasm-crypto.js', document.baseURI).href)) }) && (typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('bundle-pezkuwi-wasm-crypto.js', document.baseURI).href))) ? new URL((typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('bundle-pezkuwi-wasm-crypto.js', document.baseURI).href))).pathname.substring(0, new URL((typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('bundle-pezkuwi-wasm-crypto.js', document.baseURI).href))).pathname.lastIndexOf('/') + 1) : 'auto', type: 'esm', version: '7.5.15' };
276
+
277
+ /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
278
+ function isBytes(a) {
279
+ return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');
280
+ }
281
+ function anumber(n) {
282
+ if (!Number.isSafeInteger(n) || n < 0)
283
+ throw new Error('positive integer expected, got ' + n);
284
+ }
285
+ function abytes(b, ...lengths) {
286
+ if (!isBytes(b))
287
+ throw new Error('Uint8Array expected');
288
+ if (lengths.length > 0 && !lengths.includes(b.length))
289
+ throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);
290
+ }
291
+ function ahash(h) {
292
+ if (typeof h !== 'function' || typeof h.create !== 'function')
293
+ throw new Error('Hash should be wrapped by utils.createHasher');
294
+ anumber(h.outputLen);
295
+ anumber(h.blockLen);
296
+ }
297
+ function aexists(instance, checkFinished = true) {
298
+ if (instance.destroyed)
299
+ throw new Error('Hash instance has been destroyed');
300
+ if (checkFinished && instance.finished)
301
+ throw new Error('Hash#digest() has already been called');
302
+ }
303
+ function aoutput(out, instance) {
304
+ abytes(out);
305
+ const min = instance.outputLen;
306
+ if (out.length < min) {
307
+ throw new Error('digestInto() expects output buffer of length at least ' + min);
308
+ }
309
+ }
310
+ function u32(arr) {
311
+ return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));
312
+ }
313
+ function clean(...arrays) {
314
+ for (let i = 0; i < arrays.length; i++) {
315
+ arrays[i].fill(0);
316
+ }
317
+ }
318
+ function createView(arr) {
319
+ return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);
320
+ }
321
+ function rotr(word, shift) {
322
+ return (word << (32 - shift)) | (word >>> shift);
323
+ }
324
+ const isLE = (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();
325
+ function byteSwap(word) {
326
+ return (((word << 24) & 0xff000000) |
327
+ ((word << 8) & 0xff0000) |
328
+ ((word >>> 8) & 0xff00) |
329
+ ((word >>> 24) & 0xff));
330
+ }
331
+ const swap8IfBE = isLE
332
+ ? (n) => n
333
+ : (n) => byteSwap(n);
334
+ function byteSwap32(arr) {
335
+ for (let i = 0; i < arr.length; i++) {
336
+ arr[i] = byteSwap(arr[i]);
337
+ }
338
+ return arr;
339
+ }
340
+ const swap32IfBE = isLE
341
+ ? (u) => u
342
+ : byteSwap32;
343
+ (() =>
344
+ typeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();
345
+ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));
346
+ function utf8ToBytes(str) {
347
+ if (typeof str !== 'string')
348
+ throw new Error('string expected');
349
+ return new Uint8Array(new TextEncoder().encode(str));
350
+ }
351
+ function toBytes(data) {
352
+ if (typeof data === 'string')
353
+ data = utf8ToBytes(data);
354
+ abytes(data);
355
+ return data;
356
+ }
357
+ function kdfInputToBytes(data) {
358
+ if (typeof data === 'string')
359
+ data = utf8ToBytes(data);
360
+ abytes(data);
361
+ return data;
362
+ }
363
+ function checkOpts(defaults, opts) {
364
+ if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')
365
+ throw new Error('options should be object or undefined');
366
+ const merged = Object.assign(defaults, opts);
367
+ return merged;
368
+ }
369
+ class Hash {
370
+ }
371
+ function createHasher(hashCons) {
372
+ const hashC = (msg) => hashCons().update(toBytes(msg)).digest();
373
+ const tmp = hashCons();
374
+ hashC.outputLen = tmp.outputLen;
375
+ hashC.blockLen = tmp.blockLen;
376
+ hashC.create = () => hashCons();
377
+ return hashC;
378
+ }
379
+ function createOptHasher(hashCons) {
380
+ const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();
381
+ const tmp = hashCons({});
382
+ hashC.outputLen = tmp.outputLen;
383
+ hashC.blockLen = tmp.blockLen;
384
+ hashC.create = (opts) => hashCons(opts);
385
+ return hashC;
386
+ }
387
+ function createXOFer(hashCons) {
388
+ const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();
389
+ const tmp = hashCons({});
390
+ hashC.outputLen = tmp.outputLen;
391
+ hashC.blockLen = tmp.blockLen;
392
+ hashC.create = (opts) => hashCons(opts);
393
+ return hashC;
394
+ }
395
+
396
+ function setBigUint64(view, byteOffset, value, isLE) {
397
+ if (typeof view.setBigUint64 === 'function')
398
+ return view.setBigUint64(byteOffset, value, isLE);
399
+ const _32n = BigInt(32);
400
+ const _u32_max = BigInt(0xffffffff);
401
+ const wh = Number((value >> _32n) & _u32_max);
402
+ const wl = Number(value & _u32_max);
403
+ const h = isLE ? 4 : 0;
404
+ const l = isLE ? 0 : 4;
405
+ view.setUint32(byteOffset + h, wh, isLE);
406
+ view.setUint32(byteOffset + l, wl, isLE);
407
+ }
408
+ function Chi(a, b, c) {
409
+ return (a & b) ^ (~a & c);
410
+ }
411
+ function Maj(a, b, c) {
412
+ return (a & b) ^ (a & c) ^ (b & c);
413
+ }
414
+ class HashMD extends Hash {
415
+ constructor(blockLen, outputLen, padOffset, isLE) {
416
+ super();
417
+ this.finished = false;
418
+ this.length = 0;
419
+ this.pos = 0;
420
+ this.destroyed = false;
421
+ this.blockLen = blockLen;
422
+ this.outputLen = outputLen;
423
+ this.padOffset = padOffset;
424
+ this.isLE = isLE;
425
+ this.buffer = new Uint8Array(blockLen);
426
+ this.view = createView(this.buffer);
427
+ }
428
+ update(data) {
429
+ aexists(this);
430
+ data = toBytes(data);
431
+ abytes(data);
432
+ const { view, buffer, blockLen } = this;
433
+ const len = data.length;
434
+ for (let pos = 0; pos < len;) {
435
+ const take = Math.min(blockLen - this.pos, len - pos);
436
+ if (take === blockLen) {
437
+ const dataView = createView(data);
438
+ for (; blockLen <= len - pos; pos += blockLen)
439
+ this.process(dataView, pos);
440
+ continue;
441
+ }
442
+ buffer.set(data.subarray(pos, pos + take), this.pos);
443
+ this.pos += take;
444
+ pos += take;
445
+ if (this.pos === blockLen) {
446
+ this.process(view, 0);
447
+ this.pos = 0;
448
+ }
449
+ }
450
+ this.length += data.length;
451
+ this.roundClean();
452
+ return this;
453
+ }
454
+ digestInto(out) {
455
+ aexists(this);
456
+ aoutput(out, this);
457
+ this.finished = true;
458
+ const { buffer, view, blockLen, isLE } = this;
459
+ let { pos } = this;
460
+ buffer[pos++] = 0b10000000;
461
+ clean(this.buffer.subarray(pos));
462
+ if (this.padOffset > blockLen - pos) {
463
+ this.process(view, 0);
464
+ pos = 0;
465
+ }
466
+ for (let i = pos; i < blockLen; i++)
467
+ buffer[i] = 0;
468
+ setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);
469
+ this.process(view, 0);
470
+ const oview = createView(out);
471
+ const len = this.outputLen;
472
+ if (len % 4)
473
+ throw new Error('_sha2: outputLen should be aligned to 32bit');
474
+ const outLen = len / 4;
475
+ const state = this.get();
476
+ if (outLen > state.length)
477
+ throw new Error('_sha2: outputLen bigger than state');
478
+ for (let i = 0; i < outLen; i++)
479
+ oview.setUint32(4 * i, state[i], isLE);
480
+ }
481
+ digest() {
482
+ const { buffer, outputLen } = this;
483
+ this.digestInto(buffer);
484
+ const res = buffer.slice(0, outputLen);
485
+ this.destroy();
486
+ return res;
487
+ }
488
+ _cloneInto(to) {
489
+ to || (to = new this.constructor());
490
+ to.set(...this.get());
491
+ const { blockLen, buffer, length, finished, destroyed, pos } = this;
492
+ to.destroyed = destroyed;
493
+ to.finished = finished;
494
+ to.length = length;
495
+ to.pos = pos;
496
+ if (length % blockLen)
497
+ to.buffer.set(buffer);
498
+ return to;
499
+ }
500
+ clone() {
501
+ return this._cloneInto();
502
+ }
503
+ }
504
+ const SHA256_IV = Uint32Array.from([
505
+ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,
506
+ ]);
507
+ const SHA224_IV = Uint32Array.from([
508
+ 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4,
509
+ ]);
510
+ const SHA384_IV = Uint32Array.from([
511
+ 0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,
512
+ 0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4,
513
+ ]);
514
+ const SHA512_IV = Uint32Array.from([
515
+ 0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,
516
+ 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179,
517
+ ]);
518
+
519
+ const U32_MASK64 = BigInt(2 ** 32 - 1);
520
+ const _32n$1 = BigInt(32);
521
+ function fromBig(n, le = false) {
522
+ if (le)
523
+ return { h: Number(n & U32_MASK64), l: Number((n >> _32n$1) & U32_MASK64) };
524
+ return { h: Number((n >> _32n$1) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };
525
+ }
526
+ function split(lst, le = false) {
527
+ const len = lst.length;
528
+ let Ah = new Uint32Array(len);
529
+ let Al = new Uint32Array(len);
530
+ for (let i = 0; i < len; i++) {
531
+ const { h, l } = fromBig(lst[i], le);
532
+ [Ah[i], Al[i]] = [h, l];
533
+ }
534
+ return [Ah, Al];
535
+ }
536
+ const shrSH = (h, _l, s) => h >>> s;
537
+ const shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);
538
+ const rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));
539
+ const rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);
540
+ const rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));
541
+ const rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));
542
+ const rotr32H = (_h, l) => l;
543
+ const rotr32L = (h, _l) => h;
544
+ const rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));
545
+ const rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));
546
+ const rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));
547
+ const rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));
548
+ function add(Ah, Al, Bh, Bl) {
549
+ const l = (Al >>> 0) + (Bl >>> 0);
550
+ return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };
551
+ }
552
+ const add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);
553
+ const add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;
554
+ const add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);
555
+ const add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;
556
+ const add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);
557
+ const add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;
558
+
559
+ const SHA256_K = Uint32Array.from([
560
+ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
561
+ 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
562
+ 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
563
+ 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
564
+ 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
565
+ 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
566
+ 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
567
+ 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
568
+ ]);
569
+ const SHA256_W = new Uint32Array(64);
570
+ class SHA256 extends HashMD {
571
+ constructor(outputLen = 32) {
572
+ super(64, outputLen, 8, false);
573
+ this.A = SHA256_IV[0] | 0;
574
+ this.B = SHA256_IV[1] | 0;
575
+ this.C = SHA256_IV[2] | 0;
576
+ this.D = SHA256_IV[3] | 0;
577
+ this.E = SHA256_IV[4] | 0;
578
+ this.F = SHA256_IV[5] | 0;
579
+ this.G = SHA256_IV[6] | 0;
580
+ this.H = SHA256_IV[7] | 0;
581
+ }
582
+ get() {
583
+ const { A, B, C, D, E, F, G, H } = this;
584
+ return [A, B, C, D, E, F, G, H];
585
+ }
586
+ set(A, B, C, D, E, F, G, H) {
587
+ this.A = A | 0;
588
+ this.B = B | 0;
589
+ this.C = C | 0;
590
+ this.D = D | 0;
591
+ this.E = E | 0;
592
+ this.F = F | 0;
593
+ this.G = G | 0;
594
+ this.H = H | 0;
595
+ }
596
+ process(view, offset) {
597
+ for (let i = 0; i < 16; i++, offset += 4)
598
+ SHA256_W[i] = view.getUint32(offset, false);
599
+ for (let i = 16; i < 64; i++) {
600
+ const W15 = SHA256_W[i - 15];
601
+ const W2 = SHA256_W[i - 2];
602
+ const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);
603
+ const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);
604
+ SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;
605
+ }
606
+ let { A, B, C, D, E, F, G, H } = this;
607
+ for (let i = 0; i < 64; i++) {
608
+ const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);
609
+ const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;
610
+ const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);
611
+ const T2 = (sigma0 + Maj(A, B, C)) | 0;
612
+ H = G;
613
+ G = F;
614
+ F = E;
615
+ E = (D + T1) | 0;
616
+ D = C;
617
+ C = B;
618
+ B = A;
619
+ A = (T1 + T2) | 0;
620
+ }
621
+ A = (A + this.A) | 0;
622
+ B = (B + this.B) | 0;
623
+ C = (C + this.C) | 0;
624
+ D = (D + this.D) | 0;
625
+ E = (E + this.E) | 0;
626
+ F = (F + this.F) | 0;
627
+ G = (G + this.G) | 0;
628
+ H = (H + this.H) | 0;
629
+ this.set(A, B, C, D, E, F, G, H);
630
+ }
631
+ roundClean() {
632
+ clean(SHA256_W);
633
+ }
634
+ destroy() {
635
+ this.set(0, 0, 0, 0, 0, 0, 0, 0);
636
+ clean(this.buffer);
637
+ }
638
+ }
639
+ class SHA224 extends SHA256 {
640
+ constructor() {
641
+ super(28);
642
+ this.A = SHA224_IV[0] | 0;
643
+ this.B = SHA224_IV[1] | 0;
644
+ this.C = SHA224_IV[2] | 0;
645
+ this.D = SHA224_IV[3] | 0;
646
+ this.E = SHA224_IV[4] | 0;
647
+ this.F = SHA224_IV[5] | 0;
648
+ this.G = SHA224_IV[6] | 0;
649
+ this.H = SHA224_IV[7] | 0;
650
+ }
651
+ }
652
+ const K512 = (() => split([
653
+ '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',
654
+ '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',
655
+ '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',
656
+ '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',
657
+ '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',
658
+ '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',
659
+ '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',
660
+ '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',
661
+ '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',
662
+ '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',
663
+ '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',
664
+ '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',
665
+ '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',
666
+ '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',
667
+ '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',
668
+ '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',
669
+ '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',
670
+ '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',
671
+ '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',
672
+ '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'
673
+ ].map(n => BigInt(n))))();
674
+ const SHA512_Kh = (() => K512[0])();
675
+ const SHA512_Kl = (() => K512[1])();
676
+ const SHA512_W_H = new Uint32Array(80);
677
+ const SHA512_W_L = new Uint32Array(80);
678
+ class SHA512 extends HashMD {
679
+ constructor(outputLen = 64) {
680
+ super(128, outputLen, 16, false);
681
+ this.Ah = SHA512_IV[0] | 0;
682
+ this.Al = SHA512_IV[1] | 0;
683
+ this.Bh = SHA512_IV[2] | 0;
684
+ this.Bl = SHA512_IV[3] | 0;
685
+ this.Ch = SHA512_IV[4] | 0;
686
+ this.Cl = SHA512_IV[5] | 0;
687
+ this.Dh = SHA512_IV[6] | 0;
688
+ this.Dl = SHA512_IV[7] | 0;
689
+ this.Eh = SHA512_IV[8] | 0;
690
+ this.El = SHA512_IV[9] | 0;
691
+ this.Fh = SHA512_IV[10] | 0;
692
+ this.Fl = SHA512_IV[11] | 0;
693
+ this.Gh = SHA512_IV[12] | 0;
694
+ this.Gl = SHA512_IV[13] | 0;
695
+ this.Hh = SHA512_IV[14] | 0;
696
+ this.Hl = SHA512_IV[15] | 0;
697
+ }
698
+ get() {
699
+ const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;
700
+ return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];
701
+ }
702
+ set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {
703
+ this.Ah = Ah | 0;
704
+ this.Al = Al | 0;
705
+ this.Bh = Bh | 0;
706
+ this.Bl = Bl | 0;
707
+ this.Ch = Ch | 0;
708
+ this.Cl = Cl | 0;
709
+ this.Dh = Dh | 0;
710
+ this.Dl = Dl | 0;
711
+ this.Eh = Eh | 0;
712
+ this.El = El | 0;
713
+ this.Fh = Fh | 0;
714
+ this.Fl = Fl | 0;
715
+ this.Gh = Gh | 0;
716
+ this.Gl = Gl | 0;
717
+ this.Hh = Hh | 0;
718
+ this.Hl = Hl | 0;
719
+ }
720
+ process(view, offset) {
721
+ for (let i = 0; i < 16; i++, offset += 4) {
722
+ SHA512_W_H[i] = view.getUint32(offset);
723
+ SHA512_W_L[i] = view.getUint32((offset += 4));
724
+ }
725
+ for (let i = 16; i < 80; i++) {
726
+ const W15h = SHA512_W_H[i - 15] | 0;
727
+ const W15l = SHA512_W_L[i - 15] | 0;
728
+ const s0h = rotrSH(W15h, W15l, 1) ^ rotrSH(W15h, W15l, 8) ^ shrSH(W15h, W15l, 7);
729
+ const s0l = rotrSL(W15h, W15l, 1) ^ rotrSL(W15h, W15l, 8) ^ shrSL(W15h, W15l, 7);
730
+ const W2h = SHA512_W_H[i - 2] | 0;
731
+ const W2l = SHA512_W_L[i - 2] | 0;
732
+ const s1h = rotrSH(W2h, W2l, 19) ^ rotrBH(W2h, W2l, 61) ^ shrSH(W2h, W2l, 6);
733
+ const s1l = rotrSL(W2h, W2l, 19) ^ rotrBL(W2h, W2l, 61) ^ shrSL(W2h, W2l, 6);
734
+ const SUMl = add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);
735
+ const SUMh = add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);
736
+ SHA512_W_H[i] = SUMh | 0;
737
+ SHA512_W_L[i] = SUMl | 0;
738
+ }
739
+ let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;
740
+ for (let i = 0; i < 80; i++) {
741
+ const sigma1h = rotrSH(Eh, El, 14) ^ rotrSH(Eh, El, 18) ^ rotrBH(Eh, El, 41);
742
+ const sigma1l = rotrSL(Eh, El, 14) ^ rotrSL(Eh, El, 18) ^ rotrBL(Eh, El, 41);
743
+ const CHIh = (Eh & Fh) ^ (~Eh & Gh);
744
+ const CHIl = (El & Fl) ^ (~El & Gl);
745
+ const T1ll = add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);
746
+ const T1h = add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);
747
+ const T1l = T1ll | 0;
748
+ const sigma0h = rotrSH(Ah, Al, 28) ^ rotrBH(Ah, Al, 34) ^ rotrBH(Ah, Al, 39);
749
+ const sigma0l = rotrSL(Ah, Al, 28) ^ rotrBL(Ah, Al, 34) ^ rotrBL(Ah, Al, 39);
750
+ const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);
751
+ const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);
752
+ Hh = Gh | 0;
753
+ Hl = Gl | 0;
754
+ Gh = Fh | 0;
755
+ Gl = Fl | 0;
756
+ Fh = Eh | 0;
757
+ Fl = El | 0;
758
+ ({ h: Eh, l: El } = add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));
759
+ Dh = Ch | 0;
760
+ Dl = Cl | 0;
761
+ Ch = Bh | 0;
762
+ Cl = Bl | 0;
763
+ Bh = Ah | 0;
764
+ Bl = Al | 0;
765
+ const All = add3L(T1l, sigma0l, MAJl);
766
+ Ah = add3H(All, T1h, sigma0h, MAJh);
767
+ Al = All | 0;
768
+ }
769
+ ({ h: Ah, l: Al } = add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));
770
+ ({ h: Bh, l: Bl } = add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));
771
+ ({ h: Ch, l: Cl } = add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));
772
+ ({ h: Dh, l: Dl } = add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));
773
+ ({ h: Eh, l: El } = add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));
774
+ ({ h: Fh, l: Fl } = add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));
775
+ ({ h: Gh, l: Gl } = add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));
776
+ ({ h: Hh, l: Hl } = add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));
777
+ this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);
778
+ }
779
+ roundClean() {
780
+ clean(SHA512_W_H, SHA512_W_L);
781
+ }
782
+ destroy() {
783
+ clean(this.buffer);
784
+ this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
785
+ }
786
+ }
787
+ class SHA384 extends SHA512 {
788
+ constructor() {
789
+ super(48);
790
+ this.Ah = SHA384_IV[0] | 0;
791
+ this.Al = SHA384_IV[1] | 0;
792
+ this.Bh = SHA384_IV[2] | 0;
793
+ this.Bl = SHA384_IV[3] | 0;
794
+ this.Ch = SHA384_IV[4] | 0;
795
+ this.Cl = SHA384_IV[5] | 0;
796
+ this.Dh = SHA384_IV[6] | 0;
797
+ this.Dl = SHA384_IV[7] | 0;
798
+ this.Eh = SHA384_IV[8] | 0;
799
+ this.El = SHA384_IV[9] | 0;
800
+ this.Fh = SHA384_IV[10] | 0;
801
+ this.Fl = SHA384_IV[11] | 0;
802
+ this.Gh = SHA384_IV[12] | 0;
803
+ this.Gl = SHA384_IV[13] | 0;
804
+ this.Hh = SHA384_IV[14] | 0;
805
+ this.Hl = SHA384_IV[15] | 0;
806
+ }
807
+ }
808
+ const T224_IV = Uint32Array.from([
809
+ 0x8c3d37c8, 0x19544da2, 0x73e19966, 0x89dcd4d6, 0x1dfab7ae, 0x32ff9c82, 0x679dd514, 0x582f9fcf,
810
+ 0x0f6d2b69, 0x7bd44da8, 0x77e36f73, 0x04c48942, 0x3f9d85a8, 0x6a1d36c8, 0x1112e6ad, 0x91d692a1,
811
+ ]);
812
+ const T256_IV = Uint32Array.from([
813
+ 0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,
814
+ 0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,
815
+ ]);
816
+ class SHA512_224 extends SHA512 {
817
+ constructor() {
818
+ super(28);
819
+ this.Ah = T224_IV[0] | 0;
820
+ this.Al = T224_IV[1] | 0;
821
+ this.Bh = T224_IV[2] | 0;
822
+ this.Bl = T224_IV[3] | 0;
823
+ this.Ch = T224_IV[4] | 0;
824
+ this.Cl = T224_IV[5] | 0;
825
+ this.Dh = T224_IV[6] | 0;
826
+ this.Dl = T224_IV[7] | 0;
827
+ this.Eh = T224_IV[8] | 0;
828
+ this.El = T224_IV[9] | 0;
829
+ this.Fh = T224_IV[10] | 0;
830
+ this.Fl = T224_IV[11] | 0;
831
+ this.Gh = T224_IV[12] | 0;
832
+ this.Gl = T224_IV[13] | 0;
833
+ this.Hh = T224_IV[14] | 0;
834
+ this.Hl = T224_IV[15] | 0;
835
+ }
836
+ }
837
+ class SHA512_256 extends SHA512 {
838
+ constructor() {
839
+ super(32);
840
+ this.Ah = T256_IV[0] | 0;
841
+ this.Al = T256_IV[1] | 0;
842
+ this.Bh = T256_IV[2] | 0;
843
+ this.Bl = T256_IV[3] | 0;
844
+ this.Ch = T256_IV[4] | 0;
845
+ this.Cl = T256_IV[5] | 0;
846
+ this.Dh = T256_IV[6] | 0;
847
+ this.Dl = T256_IV[7] | 0;
848
+ this.Eh = T256_IV[8] | 0;
849
+ this.El = T256_IV[9] | 0;
850
+ this.Fh = T256_IV[10] | 0;
851
+ this.Fl = T256_IV[11] | 0;
852
+ this.Gh = T256_IV[12] | 0;
853
+ this.Gl = T256_IV[13] | 0;
854
+ this.Hh = T256_IV[14] | 0;
855
+ this.Hl = T256_IV[15] | 0;
856
+ }
857
+ }
858
+ const sha256$2 = createHasher(() => new SHA256());
859
+ createHasher(() => new SHA224());
860
+ const sha512$2 = createHasher(() => new SHA512());
861
+ createHasher(() => new SHA384());
862
+ createHasher(() => new SHA512_256());
863
+ createHasher(() => new SHA512_224());
864
+
865
+ const sha256$1 = sha256$2;
866
+
867
+ const sha512$1 = sha512$2;
868
+
869
+ class HMAC extends Hash {
870
+ constructor(hash, _key) {
871
+ super();
872
+ this.finished = false;
873
+ this.destroyed = false;
874
+ ahash(hash);
875
+ const key = toBytes(_key);
876
+ this.iHash = hash.create();
877
+ if (typeof this.iHash.update !== 'function')
878
+ throw new Error('Expected instance of class which extends utils.Hash');
879
+ this.blockLen = this.iHash.blockLen;
880
+ this.outputLen = this.iHash.outputLen;
881
+ const blockLen = this.blockLen;
882
+ const pad = new Uint8Array(blockLen);
883
+ pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);
884
+ for (let i = 0; i < pad.length; i++)
885
+ pad[i] ^= 0x36;
886
+ this.iHash.update(pad);
887
+ this.oHash = hash.create();
888
+ for (let i = 0; i < pad.length; i++)
889
+ pad[i] ^= 0x36 ^ 0x5c;
890
+ this.oHash.update(pad);
891
+ clean(pad);
892
+ }
893
+ update(buf) {
894
+ aexists(this);
895
+ this.iHash.update(buf);
896
+ return this;
897
+ }
898
+ digestInto(out) {
899
+ aexists(this);
900
+ abytes(out, this.outputLen);
901
+ this.finished = true;
902
+ this.iHash.digestInto(out);
903
+ this.oHash.update(out);
904
+ this.oHash.digestInto(out);
905
+ this.destroy();
906
+ }
907
+ digest() {
908
+ const out = new Uint8Array(this.oHash.outputLen);
909
+ this.digestInto(out);
910
+ return out;
911
+ }
912
+ _cloneInto(to) {
913
+ to || (to = Object.create(Object.getPrototypeOf(this), {}));
914
+ const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;
915
+ to = to;
916
+ to.finished = finished;
917
+ to.destroyed = destroyed;
918
+ to.blockLen = blockLen;
919
+ to.outputLen = outputLen;
920
+ to.oHash = oHash._cloneInto(to.oHash);
921
+ to.iHash = iHash._cloneInto(to.iHash);
922
+ return to;
923
+ }
924
+ clone() {
925
+ return this._cloneInto();
926
+ }
927
+ destroy() {
928
+ this.destroyed = true;
929
+ this.oHash.destroy();
930
+ this.iHash.destroy();
931
+ }
932
+ }
933
+ const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();
934
+ hmac.create = (hash, key) => new HMAC(hash, key);
935
+
936
+ function pbkdf2Init(hash, _password, _salt, _opts) {
937
+ ahash(hash);
938
+ const opts = checkOpts({ dkLen: 32, asyncTick: 10 }, _opts);
939
+ const { c, dkLen, asyncTick } = opts;
940
+ anumber(c);
941
+ anumber(dkLen);
942
+ anumber(asyncTick);
943
+ if (c < 1)
944
+ throw new Error('iterations (c) should be >= 1');
945
+ const password = kdfInputToBytes(_password);
946
+ const salt = kdfInputToBytes(_salt);
947
+ const DK = new Uint8Array(dkLen);
948
+ const PRF = hmac.create(hash, password);
949
+ const PRFSalt = PRF._cloneInto().update(salt);
950
+ return { c, dkLen, asyncTick, DK, PRF, PRFSalt };
951
+ }
952
+ function pbkdf2Output(PRF, PRFSalt, DK, prfW, u) {
953
+ PRF.destroy();
954
+ PRFSalt.destroy();
955
+ if (prfW)
956
+ prfW.destroy();
957
+ clean(u);
958
+ return DK;
959
+ }
960
+ function pbkdf2$1(hash, password, salt, opts) {
961
+ const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);
962
+ let prfW;
963
+ const arr = new Uint8Array(4);
964
+ const view = createView(arr);
965
+ const u = new Uint8Array(PRF.outputLen);
966
+ for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {
967
+ const Ti = DK.subarray(pos, pos + PRF.outputLen);
968
+ view.setInt32(0, ti, false);
969
+ (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);
970
+ Ti.set(u.subarray(0, Ti.length));
971
+ for (let ui = 1; ui < c; ui++) {
972
+ PRF._cloneInto(prfW).update(u).digestInto(u);
973
+ for (let i = 0; i < Ti.length; i++)
974
+ Ti[i] ^= u[i];
975
+ }
976
+ }
977
+ return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);
978
+ }
979
+
980
+ const BSIGMA = Uint8Array.from([
981
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
982
+ 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,
983
+ 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,
984
+ 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,
985
+ 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,
986
+ 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,
987
+ 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11,
988
+ 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10,
989
+ 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5,
990
+ 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0,
991
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
992
+ 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,
993
+ 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,
994
+ 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,
995
+ 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,
996
+ 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,
997
+ ]);
998
+ function G1s(a, b, c, d, x) {
999
+ a = (a + b + x) | 0;
1000
+ d = rotr(d ^ a, 16);
1001
+ c = (c + d) | 0;
1002
+ b = rotr(b ^ c, 12);
1003
+ return { a, b, c, d };
1004
+ }
1005
+ function G2s(a, b, c, d, x) {
1006
+ a = (a + b + x) | 0;
1007
+ d = rotr(d ^ a, 8);
1008
+ c = (c + d) | 0;
1009
+ b = rotr(b ^ c, 7);
1010
+ return { a, b, c, d };
1011
+ }
1012
+
1013
+ const B2B_IV = Uint32Array.from([
1014
+ 0xf3bcc908, 0x6a09e667, 0x84caa73b, 0xbb67ae85, 0xfe94f82b, 0x3c6ef372, 0x5f1d36f1, 0xa54ff53a,
1015
+ 0xade682d1, 0x510e527f, 0x2b3e6c1f, 0x9b05688c, 0xfb41bd6b, 0x1f83d9ab, 0x137e2179, 0x5be0cd19,
1016
+ ]);
1017
+ const BBUF = new Uint32Array(32);
1018
+ function G1b(a, b, c, d, msg, x) {
1019
+ const Xl = msg[x], Xh = msg[x + 1];
1020
+ let Al = BBUF[2 * a], Ah = BBUF[2 * a + 1];
1021
+ let Bl = BBUF[2 * b], Bh = BBUF[2 * b + 1];
1022
+ let Cl = BBUF[2 * c], Ch = BBUF[2 * c + 1];
1023
+ let Dl = BBUF[2 * d], Dh = BBUF[2 * d + 1];
1024
+ let ll = add3L(Al, Bl, Xl);
1025
+ Ah = add3H(ll, Ah, Bh, Xh);
1026
+ Al = ll | 0;
1027
+ ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al });
1028
+ ({ Dh, Dl } = { Dh: rotr32H(Dh, Dl), Dl: rotr32L(Dh) });
1029
+ ({ h: Ch, l: Cl } = add(Ch, Cl, Dh, Dl));
1030
+ ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl });
1031
+ ({ Bh, Bl } = { Bh: rotrSH(Bh, Bl, 24), Bl: rotrSL(Bh, Bl, 24) });
1032
+ (BBUF[2 * a] = Al), (BBUF[2 * a + 1] = Ah);
1033
+ (BBUF[2 * b] = Bl), (BBUF[2 * b + 1] = Bh);
1034
+ (BBUF[2 * c] = Cl), (BBUF[2 * c + 1] = Ch);
1035
+ (BBUF[2 * d] = Dl), (BBUF[2 * d + 1] = Dh);
1036
+ }
1037
+ function G2b(a, b, c, d, msg, x) {
1038
+ const Xl = msg[x], Xh = msg[x + 1];
1039
+ let Al = BBUF[2 * a], Ah = BBUF[2 * a + 1];
1040
+ let Bl = BBUF[2 * b], Bh = BBUF[2 * b + 1];
1041
+ let Cl = BBUF[2 * c], Ch = BBUF[2 * c + 1];
1042
+ let Dl = BBUF[2 * d], Dh = BBUF[2 * d + 1];
1043
+ let ll = add3L(Al, Bl, Xl);
1044
+ Ah = add3H(ll, Ah, Bh, Xh);
1045
+ Al = ll | 0;
1046
+ ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al });
1047
+ ({ Dh, Dl } = { Dh: rotrSH(Dh, Dl, 16), Dl: rotrSL(Dh, Dl, 16) });
1048
+ ({ h: Ch, l: Cl } = add(Ch, Cl, Dh, Dl));
1049
+ ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl });
1050
+ ({ Bh, Bl } = { Bh: rotrBH(Bh, Bl, 63), Bl: rotrBL(Bh, Bl, 63) });
1051
+ (BBUF[2 * a] = Al), (BBUF[2 * a + 1] = Ah);
1052
+ (BBUF[2 * b] = Bl), (BBUF[2 * b + 1] = Bh);
1053
+ (BBUF[2 * c] = Cl), (BBUF[2 * c + 1] = Ch);
1054
+ (BBUF[2 * d] = Dl), (BBUF[2 * d + 1] = Dh);
1055
+ }
1056
+ function checkBlake2Opts(outputLen, opts = {}, keyLen, saltLen, persLen) {
1057
+ anumber(keyLen);
1058
+ if (outputLen < 0 || outputLen > keyLen)
1059
+ throw new Error('outputLen bigger than keyLen');
1060
+ const { key, salt, personalization } = opts;
1061
+ if (key !== undefined && (key.length < 1 || key.length > keyLen))
1062
+ throw new Error('key length must be undefined or 1..' + keyLen);
1063
+ if (salt !== undefined && salt.length !== saltLen)
1064
+ throw new Error('salt must be undefined or ' + saltLen);
1065
+ if (personalization !== undefined && personalization.length !== persLen)
1066
+ throw new Error('personalization must be undefined or ' + persLen);
1067
+ }
1068
+ class BLAKE2 extends Hash {
1069
+ constructor(blockLen, outputLen) {
1070
+ super();
1071
+ this.finished = false;
1072
+ this.destroyed = false;
1073
+ this.length = 0;
1074
+ this.pos = 0;
1075
+ anumber(blockLen);
1076
+ anumber(outputLen);
1077
+ this.blockLen = blockLen;
1078
+ this.outputLen = outputLen;
1079
+ this.buffer = new Uint8Array(blockLen);
1080
+ this.buffer32 = u32(this.buffer);
1081
+ }
1082
+ update(data) {
1083
+ aexists(this);
1084
+ data = toBytes(data);
1085
+ abytes(data);
1086
+ const { blockLen, buffer, buffer32 } = this;
1087
+ const len = data.length;
1088
+ const offset = data.byteOffset;
1089
+ const buf = data.buffer;
1090
+ for (let pos = 0; pos < len;) {
1091
+ if (this.pos === blockLen) {
1092
+ swap32IfBE(buffer32);
1093
+ this.compress(buffer32, 0, false);
1094
+ swap32IfBE(buffer32);
1095
+ this.pos = 0;
1096
+ }
1097
+ const take = Math.min(blockLen - this.pos, len - pos);
1098
+ const dataOffset = offset + pos;
1099
+ if (take === blockLen && !(dataOffset % 4) && pos + take < len) {
1100
+ const data32 = new Uint32Array(buf, dataOffset, Math.floor((len - pos) / 4));
1101
+ swap32IfBE(data32);
1102
+ for (let pos32 = 0; pos + blockLen < len; pos32 += buffer32.length, pos += blockLen) {
1103
+ this.length += blockLen;
1104
+ this.compress(data32, pos32, false);
1105
+ }
1106
+ swap32IfBE(data32);
1107
+ continue;
1108
+ }
1109
+ buffer.set(data.subarray(pos, pos + take), this.pos);
1110
+ this.pos += take;
1111
+ this.length += take;
1112
+ pos += take;
1113
+ }
1114
+ return this;
1115
+ }
1116
+ digestInto(out) {
1117
+ aexists(this);
1118
+ aoutput(out, this);
1119
+ const { pos, buffer32 } = this;
1120
+ this.finished = true;
1121
+ clean(this.buffer.subarray(pos));
1122
+ swap32IfBE(buffer32);
1123
+ this.compress(buffer32, 0, true);
1124
+ swap32IfBE(buffer32);
1125
+ const out32 = u32(out);
1126
+ this.get().forEach((v, i) => (out32[i] = swap8IfBE(v)));
1127
+ }
1128
+ digest() {
1129
+ const { buffer, outputLen } = this;
1130
+ this.digestInto(buffer);
1131
+ const res = buffer.slice(0, outputLen);
1132
+ this.destroy();
1133
+ return res;
1134
+ }
1135
+ _cloneInto(to) {
1136
+ const { buffer, length, finished, destroyed, outputLen, pos } = this;
1137
+ to || (to = new this.constructor({ dkLen: outputLen }));
1138
+ to.set(...this.get());
1139
+ to.buffer.set(buffer);
1140
+ to.destroyed = destroyed;
1141
+ to.finished = finished;
1142
+ to.length = length;
1143
+ to.pos = pos;
1144
+ to.outputLen = outputLen;
1145
+ return to;
1146
+ }
1147
+ clone() {
1148
+ return this._cloneInto();
1149
+ }
1150
+ }
1151
+ class BLAKE2b extends BLAKE2 {
1152
+ constructor(opts = {}) {
1153
+ const olen = opts.dkLen === undefined ? 64 : opts.dkLen;
1154
+ super(128, olen);
1155
+ this.v0l = B2B_IV[0] | 0;
1156
+ this.v0h = B2B_IV[1] | 0;
1157
+ this.v1l = B2B_IV[2] | 0;
1158
+ this.v1h = B2B_IV[3] | 0;
1159
+ this.v2l = B2B_IV[4] | 0;
1160
+ this.v2h = B2B_IV[5] | 0;
1161
+ this.v3l = B2B_IV[6] | 0;
1162
+ this.v3h = B2B_IV[7] | 0;
1163
+ this.v4l = B2B_IV[8] | 0;
1164
+ this.v4h = B2B_IV[9] | 0;
1165
+ this.v5l = B2B_IV[10] | 0;
1166
+ this.v5h = B2B_IV[11] | 0;
1167
+ this.v6l = B2B_IV[12] | 0;
1168
+ this.v6h = B2B_IV[13] | 0;
1169
+ this.v7l = B2B_IV[14] | 0;
1170
+ this.v7h = B2B_IV[15] | 0;
1171
+ checkBlake2Opts(olen, opts, 64, 16, 16);
1172
+ let { key, personalization, salt } = opts;
1173
+ let keyLength = 0;
1174
+ if (key !== undefined) {
1175
+ key = toBytes(key);
1176
+ keyLength = key.length;
1177
+ }
1178
+ this.v0l ^= this.outputLen | (keyLength << 8) | (0x01 << 16) | (0x01 << 24);
1179
+ if (salt !== undefined) {
1180
+ salt = toBytes(salt);
1181
+ const slt = u32(salt);
1182
+ this.v4l ^= swap8IfBE(slt[0]);
1183
+ this.v4h ^= swap8IfBE(slt[1]);
1184
+ this.v5l ^= swap8IfBE(slt[2]);
1185
+ this.v5h ^= swap8IfBE(slt[3]);
1186
+ }
1187
+ if (personalization !== undefined) {
1188
+ personalization = toBytes(personalization);
1189
+ const pers = u32(personalization);
1190
+ this.v6l ^= swap8IfBE(pers[0]);
1191
+ this.v6h ^= swap8IfBE(pers[1]);
1192
+ this.v7l ^= swap8IfBE(pers[2]);
1193
+ this.v7h ^= swap8IfBE(pers[3]);
1194
+ }
1195
+ if (key !== undefined) {
1196
+ const tmp = new Uint8Array(this.blockLen);
1197
+ tmp.set(key);
1198
+ this.update(tmp);
1199
+ }
1200
+ }
1201
+ get() {
1202
+ let { v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h } = this;
1203
+ return [v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h];
1204
+ }
1205
+ set(v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h) {
1206
+ this.v0l = v0l | 0;
1207
+ this.v0h = v0h | 0;
1208
+ this.v1l = v1l | 0;
1209
+ this.v1h = v1h | 0;
1210
+ this.v2l = v2l | 0;
1211
+ this.v2h = v2h | 0;
1212
+ this.v3l = v3l | 0;
1213
+ this.v3h = v3h | 0;
1214
+ this.v4l = v4l | 0;
1215
+ this.v4h = v4h | 0;
1216
+ this.v5l = v5l | 0;
1217
+ this.v5h = v5h | 0;
1218
+ this.v6l = v6l | 0;
1219
+ this.v6h = v6h | 0;
1220
+ this.v7l = v7l | 0;
1221
+ this.v7h = v7h | 0;
1222
+ }
1223
+ compress(msg, offset, isLast) {
1224
+ this.get().forEach((v, i) => (BBUF[i] = v));
1225
+ BBUF.set(B2B_IV, 16);
1226
+ let { h, l } = fromBig(BigInt(this.length));
1227
+ BBUF[24] = B2B_IV[8] ^ l;
1228
+ BBUF[25] = B2B_IV[9] ^ h;
1229
+ if (isLast) {
1230
+ BBUF[28] = ~BBUF[28];
1231
+ BBUF[29] = ~BBUF[29];
1232
+ }
1233
+ let j = 0;
1234
+ const s = BSIGMA;
1235
+ for (let i = 0; i < 12; i++) {
1236
+ G1b(0, 4, 8, 12, msg, offset + 2 * s[j++]);
1237
+ G2b(0, 4, 8, 12, msg, offset + 2 * s[j++]);
1238
+ G1b(1, 5, 9, 13, msg, offset + 2 * s[j++]);
1239
+ G2b(1, 5, 9, 13, msg, offset + 2 * s[j++]);
1240
+ G1b(2, 6, 10, 14, msg, offset + 2 * s[j++]);
1241
+ G2b(2, 6, 10, 14, msg, offset + 2 * s[j++]);
1242
+ G1b(3, 7, 11, 15, msg, offset + 2 * s[j++]);
1243
+ G2b(3, 7, 11, 15, msg, offset + 2 * s[j++]);
1244
+ G1b(0, 5, 10, 15, msg, offset + 2 * s[j++]);
1245
+ G2b(0, 5, 10, 15, msg, offset + 2 * s[j++]);
1246
+ G1b(1, 6, 11, 12, msg, offset + 2 * s[j++]);
1247
+ G2b(1, 6, 11, 12, msg, offset + 2 * s[j++]);
1248
+ G1b(2, 7, 8, 13, msg, offset + 2 * s[j++]);
1249
+ G2b(2, 7, 8, 13, msg, offset + 2 * s[j++]);
1250
+ G1b(3, 4, 9, 14, msg, offset + 2 * s[j++]);
1251
+ G2b(3, 4, 9, 14, msg, offset + 2 * s[j++]);
1252
+ }
1253
+ this.v0l ^= BBUF[0] ^ BBUF[16];
1254
+ this.v0h ^= BBUF[1] ^ BBUF[17];
1255
+ this.v1l ^= BBUF[2] ^ BBUF[18];
1256
+ this.v1h ^= BBUF[3] ^ BBUF[19];
1257
+ this.v2l ^= BBUF[4] ^ BBUF[20];
1258
+ this.v2h ^= BBUF[5] ^ BBUF[21];
1259
+ this.v3l ^= BBUF[6] ^ BBUF[22];
1260
+ this.v3h ^= BBUF[7] ^ BBUF[23];
1261
+ this.v4l ^= BBUF[8] ^ BBUF[24];
1262
+ this.v4h ^= BBUF[9] ^ BBUF[25];
1263
+ this.v5l ^= BBUF[10] ^ BBUF[26];
1264
+ this.v5h ^= BBUF[11] ^ BBUF[27];
1265
+ this.v6l ^= BBUF[12] ^ BBUF[28];
1266
+ this.v6h ^= BBUF[13] ^ BBUF[29];
1267
+ this.v7l ^= BBUF[14] ^ BBUF[30];
1268
+ this.v7h ^= BBUF[15] ^ BBUF[31];
1269
+ clean(BBUF);
1270
+ }
1271
+ destroy() {
1272
+ this.destroyed = true;
1273
+ clean(this.buffer32);
1274
+ this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1275
+ }
1276
+ }
1277
+ const blake2b$2 = createOptHasher((opts) => new BLAKE2b(opts));
1278
+ function compress(s, offset, msg, rounds, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) {
1279
+ let j = 0;
1280
+ for (let i = 0; i < rounds; i++) {
1281
+ ({ a: v0, b: v4, c: v8, d: v12 } = G1s(v0, v4, v8, v12, msg[offset + s[j++]]));
1282
+ ({ a: v0, b: v4, c: v8, d: v12 } = G2s(v0, v4, v8, v12, msg[offset + s[j++]]));
1283
+ ({ a: v1, b: v5, c: v9, d: v13 } = G1s(v1, v5, v9, v13, msg[offset + s[j++]]));
1284
+ ({ a: v1, b: v5, c: v9, d: v13 } = G2s(v1, v5, v9, v13, msg[offset + s[j++]]));
1285
+ ({ a: v2, b: v6, c: v10, d: v14 } = G1s(v2, v6, v10, v14, msg[offset + s[j++]]));
1286
+ ({ a: v2, b: v6, c: v10, d: v14 } = G2s(v2, v6, v10, v14, msg[offset + s[j++]]));
1287
+ ({ a: v3, b: v7, c: v11, d: v15 } = G1s(v3, v7, v11, v15, msg[offset + s[j++]]));
1288
+ ({ a: v3, b: v7, c: v11, d: v15 } = G2s(v3, v7, v11, v15, msg[offset + s[j++]]));
1289
+ ({ a: v0, b: v5, c: v10, d: v15 } = G1s(v0, v5, v10, v15, msg[offset + s[j++]]));
1290
+ ({ a: v0, b: v5, c: v10, d: v15 } = G2s(v0, v5, v10, v15, msg[offset + s[j++]]));
1291
+ ({ a: v1, b: v6, c: v11, d: v12 } = G1s(v1, v6, v11, v12, msg[offset + s[j++]]));
1292
+ ({ a: v1, b: v6, c: v11, d: v12 } = G2s(v1, v6, v11, v12, msg[offset + s[j++]]));
1293
+ ({ a: v2, b: v7, c: v8, d: v13 } = G1s(v2, v7, v8, v13, msg[offset + s[j++]]));
1294
+ ({ a: v2, b: v7, c: v8, d: v13 } = G2s(v2, v7, v8, v13, msg[offset + s[j++]]));
1295
+ ({ a: v3, b: v4, c: v9, d: v14 } = G1s(v3, v4, v9, v14, msg[offset + s[j++]]));
1296
+ ({ a: v3, b: v4, c: v9, d: v14 } = G2s(v3, v4, v9, v14, msg[offset + s[j++]]));
1297
+ }
1298
+ return { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 };
1299
+ }
1300
+ const B2S_IV = SHA256_IV;
1301
+ class BLAKE2s extends BLAKE2 {
1302
+ constructor(opts = {}) {
1303
+ const olen = opts.dkLen === undefined ? 32 : opts.dkLen;
1304
+ super(64, olen);
1305
+ this.v0 = B2S_IV[0] | 0;
1306
+ this.v1 = B2S_IV[1] | 0;
1307
+ this.v2 = B2S_IV[2] | 0;
1308
+ this.v3 = B2S_IV[3] | 0;
1309
+ this.v4 = B2S_IV[4] | 0;
1310
+ this.v5 = B2S_IV[5] | 0;
1311
+ this.v6 = B2S_IV[6] | 0;
1312
+ this.v7 = B2S_IV[7] | 0;
1313
+ checkBlake2Opts(olen, opts, 32, 8, 8);
1314
+ let { key, personalization, salt } = opts;
1315
+ let keyLength = 0;
1316
+ if (key !== undefined) {
1317
+ key = toBytes(key);
1318
+ keyLength = key.length;
1319
+ }
1320
+ this.v0 ^= this.outputLen | (keyLength << 8) | (0x01 << 16) | (0x01 << 24);
1321
+ if (salt !== undefined) {
1322
+ salt = toBytes(salt);
1323
+ const slt = u32(salt);
1324
+ this.v4 ^= swap8IfBE(slt[0]);
1325
+ this.v5 ^= swap8IfBE(slt[1]);
1326
+ }
1327
+ if (personalization !== undefined) {
1328
+ personalization = toBytes(personalization);
1329
+ const pers = u32(personalization);
1330
+ this.v6 ^= swap8IfBE(pers[0]);
1331
+ this.v7 ^= swap8IfBE(pers[1]);
1332
+ }
1333
+ if (key !== undefined) {
1334
+ abytes(key);
1335
+ const tmp = new Uint8Array(this.blockLen);
1336
+ tmp.set(key);
1337
+ this.update(tmp);
1338
+ }
1339
+ }
1340
+ get() {
1341
+ const { v0, v1, v2, v3, v4, v5, v6, v7 } = this;
1342
+ return [v0, v1, v2, v3, v4, v5, v6, v7];
1343
+ }
1344
+ set(v0, v1, v2, v3, v4, v5, v6, v7) {
1345
+ this.v0 = v0 | 0;
1346
+ this.v1 = v1 | 0;
1347
+ this.v2 = v2 | 0;
1348
+ this.v3 = v3 | 0;
1349
+ this.v4 = v4 | 0;
1350
+ this.v5 = v5 | 0;
1351
+ this.v6 = v6 | 0;
1352
+ this.v7 = v7 | 0;
1353
+ }
1354
+ compress(msg, offset, isLast) {
1355
+ const { h, l } = fromBig(BigInt(this.length));
1356
+ const { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 } = compress(BSIGMA, offset, msg, 10, this.v0, this.v1, this.v2, this.v3, this.v4, this.v5, this.v6, this.v7, B2S_IV[0], B2S_IV[1], B2S_IV[2], B2S_IV[3], l ^ B2S_IV[4], h ^ B2S_IV[5], isLast ? ~B2S_IV[6] : B2S_IV[6], B2S_IV[7]);
1357
+ this.v0 ^= v0 ^ v8;
1358
+ this.v1 ^= v1 ^ v9;
1359
+ this.v2 ^= v2 ^ v10;
1360
+ this.v3 ^= v3 ^ v11;
1361
+ this.v4 ^= v4 ^ v12;
1362
+ this.v5 ^= v5 ^ v13;
1363
+ this.v6 ^= v6 ^ v14;
1364
+ this.v7 ^= v7 ^ v15;
1365
+ }
1366
+ destroy() {
1367
+ this.destroyed = true;
1368
+ clean(this.buffer32);
1369
+ this.set(0, 0, 0, 0, 0, 0, 0, 0);
1370
+ }
1371
+ }
1372
+ createOptHasher((opts) => new BLAKE2s(opts));
1373
+
1374
+ const blake2b$1 = blake2b$2;
1375
+
1376
+ const _0n$1 = BigInt(0);
1377
+ const _1n$1 = BigInt(1);
1378
+ const _2n = BigInt(2);
1379
+ const _7n$1 = BigInt(7);
1380
+ const _256n$1 = BigInt(256);
1381
+ const _0x71n = BigInt(0x71);
1382
+ const SHA3_PI = [];
1383
+ const SHA3_ROTL = [];
1384
+ const _SHA3_IOTA = [];
1385
+ for (let round = 0, R = _1n$1, x = 1, y = 0; round < 24; round++) {
1386
+ [x, y] = [y, (2 * x + 3 * y) % 5];
1387
+ SHA3_PI.push(2 * (5 * y + x));
1388
+ SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);
1389
+ let t = _0n$1;
1390
+ for (let j = 0; j < 7; j++) {
1391
+ R = ((R << _1n$1) ^ ((R >> _7n$1) * _0x71n)) % _256n$1;
1392
+ if (R & _2n)
1393
+ t ^= _1n$1 << ((_1n$1 << BigInt(j)) - _1n$1);
1394
+ }
1395
+ _SHA3_IOTA.push(t);
1396
+ }
1397
+ const IOTAS = split(_SHA3_IOTA, true);
1398
+ const SHA3_IOTA_H = IOTAS[0];
1399
+ const SHA3_IOTA_L = IOTAS[1];
1400
+ const rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));
1401
+ const rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));
1402
+ function keccakP(s, rounds = 24) {
1403
+ const B = new Uint32Array(5 * 2);
1404
+ for (let round = 24 - rounds; round < 24; round++) {
1405
+ for (let x = 0; x < 10; x++)
1406
+ B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];
1407
+ for (let x = 0; x < 10; x += 2) {
1408
+ const idx1 = (x + 8) % 10;
1409
+ const idx0 = (x + 2) % 10;
1410
+ const B0 = B[idx0];
1411
+ const B1 = B[idx0 + 1];
1412
+ const Th = rotlH(B0, B1, 1) ^ B[idx1];
1413
+ const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];
1414
+ for (let y = 0; y < 50; y += 10) {
1415
+ s[x + y] ^= Th;
1416
+ s[x + y + 1] ^= Tl;
1417
+ }
1418
+ }
1419
+ let curH = s[2];
1420
+ let curL = s[3];
1421
+ for (let t = 0; t < 24; t++) {
1422
+ const shift = SHA3_ROTL[t];
1423
+ const Th = rotlH(curH, curL, shift);
1424
+ const Tl = rotlL(curH, curL, shift);
1425
+ const PI = SHA3_PI[t];
1426
+ curH = s[PI];
1427
+ curL = s[PI + 1];
1428
+ s[PI] = Th;
1429
+ s[PI + 1] = Tl;
1430
+ }
1431
+ for (let y = 0; y < 50; y += 10) {
1432
+ for (let x = 0; x < 10; x++)
1433
+ B[x] = s[y + x];
1434
+ for (let x = 0; x < 10; x++)
1435
+ s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];
1436
+ }
1437
+ s[0] ^= SHA3_IOTA_H[round];
1438
+ s[1] ^= SHA3_IOTA_L[round];
1439
+ }
1440
+ clean(B);
1441
+ }
1442
+ class Keccak extends Hash {
1443
+ constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {
1444
+ super();
1445
+ this.pos = 0;
1446
+ this.posOut = 0;
1447
+ this.finished = false;
1448
+ this.destroyed = false;
1449
+ this.enableXOF = false;
1450
+ this.blockLen = blockLen;
1451
+ this.suffix = suffix;
1452
+ this.outputLen = outputLen;
1453
+ this.enableXOF = enableXOF;
1454
+ this.rounds = rounds;
1455
+ anumber(outputLen);
1456
+ if (!(0 < blockLen && blockLen < 200))
1457
+ throw new Error('only keccak-f1600 function is supported');
1458
+ this.state = new Uint8Array(200);
1459
+ this.state32 = u32(this.state);
1460
+ }
1461
+ clone() {
1462
+ return this._cloneInto();
1463
+ }
1464
+ keccak() {
1465
+ swap32IfBE(this.state32);
1466
+ keccakP(this.state32, this.rounds);
1467
+ swap32IfBE(this.state32);
1468
+ this.posOut = 0;
1469
+ this.pos = 0;
1470
+ }
1471
+ update(data) {
1472
+ aexists(this);
1473
+ data = toBytes(data);
1474
+ abytes(data);
1475
+ const { blockLen, state } = this;
1476
+ const len = data.length;
1477
+ for (let pos = 0; pos < len;) {
1478
+ const take = Math.min(blockLen - this.pos, len - pos);
1479
+ for (let i = 0; i < take; i++)
1480
+ state[this.pos++] ^= data[pos++];
1481
+ if (this.pos === blockLen)
1482
+ this.keccak();
1483
+ }
1484
+ return this;
1485
+ }
1486
+ finish() {
1487
+ if (this.finished)
1488
+ return;
1489
+ this.finished = true;
1490
+ const { state, suffix, pos, blockLen } = this;
1491
+ state[pos] ^= suffix;
1492
+ if ((suffix & 0x80) !== 0 && pos === blockLen - 1)
1493
+ this.keccak();
1494
+ state[blockLen - 1] ^= 0x80;
1495
+ this.keccak();
1496
+ }
1497
+ writeInto(out) {
1498
+ aexists(this, false);
1499
+ abytes(out);
1500
+ this.finish();
1501
+ const bufferOut = this.state;
1502
+ const { blockLen } = this;
1503
+ for (let pos = 0, len = out.length; pos < len;) {
1504
+ if (this.posOut >= blockLen)
1505
+ this.keccak();
1506
+ const take = Math.min(blockLen - this.posOut, len - pos);
1507
+ out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);
1508
+ this.posOut += take;
1509
+ pos += take;
1510
+ }
1511
+ return out;
1512
+ }
1513
+ xofInto(out) {
1514
+ if (!this.enableXOF)
1515
+ throw new Error('XOF is not possible for this instance');
1516
+ return this.writeInto(out);
1517
+ }
1518
+ xof(bytes) {
1519
+ anumber(bytes);
1520
+ return this.xofInto(new Uint8Array(bytes));
1521
+ }
1522
+ digestInto(out) {
1523
+ aoutput(out, this);
1524
+ if (this.finished)
1525
+ throw new Error('digest() was already called');
1526
+ this.writeInto(out);
1527
+ this.destroy();
1528
+ return out;
1529
+ }
1530
+ digest() {
1531
+ return this.digestInto(new Uint8Array(this.outputLen));
1532
+ }
1533
+ destroy() {
1534
+ this.destroyed = true;
1535
+ clean(this.state);
1536
+ }
1537
+ _cloneInto(to) {
1538
+ const { blockLen, suffix, outputLen, rounds, enableXOF } = this;
1539
+ to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));
1540
+ to.state32.set(this.state32);
1541
+ to.pos = this.pos;
1542
+ to.posOut = this.posOut;
1543
+ to.finished = this.finished;
1544
+ to.rounds = rounds;
1545
+ to.suffix = suffix;
1546
+ to.outputLen = outputLen;
1547
+ to.enableXOF = enableXOF;
1548
+ to.destroyed = this.destroyed;
1549
+ return to;
1550
+ }
1551
+ }
1552
+ const gen = (suffix, blockLen, outputLen) => createHasher(() => new Keccak(blockLen, suffix, outputLen));
1553
+ (() => gen(0x06, 144, 224 / 8))();
1554
+ (() => gen(0x06, 136, 256 / 8))();
1555
+ (() => gen(0x06, 104, 384 / 8))();
1556
+ (() => gen(0x06, 72, 512 / 8))();
1557
+ (() => gen(0x01, 144, 224 / 8))();
1558
+ const keccak_256 = (() => gen(0x01, 136, 256 / 8))();
1559
+ (() => gen(0x01, 104, 384 / 8))();
1560
+ const keccak_512 = (() => gen(0x01, 72, 512 / 8))();
1561
+ const genShake = (suffix, blockLen, outputLen) => createXOFer((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));
1562
+ (() => genShake(0x1f, 168, 128 / 8))();
1563
+ (() => genShake(0x1f, 136, 256 / 8))();
1564
+
1565
+ let wasm = null;
1566
+ let cachedUint8ArrayMemory = null;
1567
+ let cachedTextDecoder = null;
1568
+ let _isReady = false;
1569
+ let initPromise = null;
1570
+ let WASM_VECTOR_LEN = 0;
1571
+ function getUint8ArrayMemory() {
1572
+ if (cachedUint8ArrayMemory === null || cachedUint8ArrayMemory.byteLength === 0) {
1573
+ cachedUint8ArrayMemory = new Uint8Array(wasm['memory'].buffer);
1574
+ }
1575
+ return cachedUint8ArrayMemory;
1576
+ }
1577
+ function getStringFromWasm(ptr, len) {
1578
+ if (!cachedTextDecoder) {
1579
+ cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
1580
+ cachedTextDecoder.decode();
1581
+ }
1582
+ ptr = ptr >>> 0;
1583
+ return cachedTextDecoder.decode(getUint8ArrayMemory().subarray(ptr, ptr + len));
1584
+ }
1585
+ function getArrayU8FromWasm(ptr, len) {
1586
+ ptr = ptr >>> 0;
1587
+ return getUint8ArrayMemory().subarray(ptr / 1, ptr / 1 + len);
1588
+ }
1589
+ function passArray8ToWasm(arg, malloc) {
1590
+ const ptr = malloc(arg.length * 1, 1) >>> 0;
1591
+ getUint8ArrayMemory().set(arg, ptr / 1);
1592
+ WASM_VECTOR_LEN = arg.length;
1593
+ return ptr;
1594
+ }
1595
+ function addToExternrefTable(obj) {
1596
+ const idx = wasm['__externref_table_alloc']();
1597
+ wasm['__wbindgen_externrefs'].set(idx, obj);
1598
+ return idx;
1599
+ }
1600
+ function takeFromExternrefTable(idx) {
1601
+ const value = wasm['__wbindgen_externrefs'].get(idx);
1602
+ wasm['__externref_table_dealloc'](idx);
1603
+ return value;
1604
+ }
1605
+ function isLikeNone(x) {
1606
+ return x === undefined || x === null;
1607
+ }
1608
+ function handleError(f, args) {
1609
+ try {
1610
+ return f.apply(null, args);
1611
+ }
1612
+ catch (e) {
1613
+ const idx = addToExternrefTable(e);
1614
+ wasm['__wbindgen_exn_store'](idx);
1615
+ return undefined;
1616
+ }
1617
+ }
1618
+ function createImports() {
1619
+ const import0 = {
1620
+ __proto__: null,
1621
+ __wbg___wbindgen_is_function_0095a73b8b156f76: function (arg0) {
1622
+ return typeof (arg0) === 'function';
1623
+ },
1624
+ __wbg___wbindgen_is_object_5ae8e5880f2c1fbd: function (arg0) {
1625
+ const val = arg0;
1626
+ return typeof (val) === 'object' && val !== null;
1627
+ },
1628
+ __wbg___wbindgen_is_string_cd444516edc5b180: function (arg0) {
1629
+ return typeof (arg0) === 'string';
1630
+ },
1631
+ __wbg___wbindgen_is_undefined_9e4d92534c42d778: function (arg0) {
1632
+ return arg0 === undefined;
1633
+ },
1634
+ __wbg___wbindgen_throw_be289d5034ed271b: function (arg0, arg1) {
1635
+ throw new Error(getStringFromWasm(arg0, arg1));
1636
+ },
1637
+ __wbg_call_389efe28435a9388: function () {
1638
+ return handleError(function (arg0, arg1) {
1639
+ return arg0.call(arg1);
1640
+ }, arguments);
1641
+ },
1642
+ __wbg_call_4708e0c13bdc8e95: function () {
1643
+ return handleError(function (arg0, arg1, arg2) {
1644
+ return arg0.call(arg1, arg2);
1645
+ }, arguments);
1646
+ },
1647
+ __wbg_crypto_86f2631e91b51511: function (arg0) {
1648
+ return arg0.crypto;
1649
+ },
1650
+ __wbg_getRandomValues_b3f15fcbfabb0f8b: function () {
1651
+ return handleError(function (arg0, arg1) {
1652
+ arg0.getRandomValues(arg1);
1653
+ }, arguments);
1654
+ },
1655
+ __wbg_length_32ed9a279acd054c: function (arg0) {
1656
+ return arg0.length;
1657
+ },
1658
+ __wbg_msCrypto_d562bbe83e0d4b91: function (arg0) {
1659
+ return arg0.msCrypto;
1660
+ },
1661
+ __wbg_new_no_args_1c7c842f08d00ebb: function (arg0, arg1) {
1662
+ return new Function(getStringFromWasm(arg0, arg1));
1663
+ },
1664
+ __wbg_new_with_length_a2c39cbe88fd8ff1: function (arg0) {
1665
+ return new Uint8Array(arg0 >>> 0);
1666
+ },
1667
+ __wbg_node_e1f24f89a7336c2e: function (arg0) {
1668
+ return arg0.node;
1669
+ },
1670
+ __wbg_process_3975fd6c72f520aa: function (arg0) {
1671
+ return arg0.process;
1672
+ },
1673
+ __wbg_prototypesetcall_bdcdcc5842e4d77d: function (arg0, arg1, arg2) {
1674
+ Uint8Array.prototype.set.call(getArrayU8FromWasm(arg0, arg1), arg2);
1675
+ },
1676
+ __wbg_randomFillSync_f8c153b79f285817: function () {
1677
+ return handleError(function (arg0, arg1) {
1678
+ arg0.randomFillSync(arg1);
1679
+ }, arguments);
1680
+ },
1681
+ __wbg_require_b74f47fc2d022fd6: function () {
1682
+ return handleError(function () {
1683
+ return typeof module !== 'undefined' ? module.require : undefined;
1684
+ }, arguments);
1685
+ },
1686
+ __wbg_static_accessor_GLOBAL_12837167ad935116: function () {
1687
+ const ret = typeof global === 'undefined' ? null : global;
1688
+ return isLikeNone(ret) ? 0 : addToExternrefTable(ret);
1689
+ },
1690
+ __wbg_static_accessor_GLOBAL_THIS_e628e89ab3b1c95f: function () {
1691
+ const ret = typeof globalThis === 'undefined' ? null : globalThis;
1692
+ return isLikeNone(ret) ? 0 : addToExternrefTable(ret);
1693
+ },
1694
+ __wbg_static_accessor_SELF_a621d3dfbb60d0ce: function () {
1695
+ const ret = typeof self === 'undefined' ? null : self;
1696
+ return isLikeNone(ret) ? 0 : addToExternrefTable(ret);
1697
+ },
1698
+ __wbg_static_accessor_WINDOW_f8727f0cf888e0bd: function () {
1699
+ const ret = typeof window === 'undefined' ? null : window;
1700
+ return isLikeNone(ret) ? 0 : addToExternrefTable(ret);
1701
+ },
1702
+ __wbg_subarray_a96e1fef17ed23cb: function (arg0, arg1, arg2) {
1703
+ return arg0.subarray(arg1 >>> 0, arg2 >>> 0);
1704
+ },
1705
+ __wbg_versions_4e31226f5e8dc909: function (arg0) {
1706
+ return arg0.versions;
1707
+ },
1708
+ __wbindgen_cast_0000000000000001: function (arg0, arg1) {
1709
+ return getArrayU8FromWasm(arg0, arg1);
1710
+ },
1711
+ __wbindgen_cast_0000000000000002: function (arg0, arg1) {
1712
+ return getStringFromWasm(arg0, arg1);
1713
+ },
1714
+ __wbindgen_init_externref_table: function () {
1715
+ const table = wasm['__wbindgen_externrefs'];
1716
+ const offset = table.grow(4);
1717
+ table.set(0, undefined);
1718
+ table.set(offset + 0, undefined);
1719
+ table.set(offset + 1, null);
1720
+ table.set(offset + 2, true);
1721
+ table.set(offset + 3, false);
1722
+ },
1723
+ };
1724
+ return {
1725
+ __proto__: null,
1726
+ './pezkuwi_wasm_crypto_bg.js': import0,
1727
+ };
1728
+ }
1729
+ async function initWasm() {
1730
+ if (_isReady)
1731
+ return true;
1732
+ try {
1733
+ const imports = createImports();
1734
+ const result = await WebAssembly.instantiate(wasmBytes, imports);
1735
+ wasm = result.instance.exports;
1736
+ if (typeof wasm['__wbindgen_start'] === 'function') {
1737
+ wasm['__wbindgen_start']();
1738
+ }
1739
+ _isReady = true;
1740
+ return true;
1741
+ }
1742
+ catch (error) {
1743
+ console.error('FATAL: Unable to initialize @pezkuwi/wasm-crypto:', error.message);
1744
+ return false;
1745
+ }
1746
+ }
1747
+ const bridge = {
1748
+ wasm: null,
1749
+ type: 'wasm'
1750
+ };
1751
+ function isReady() {
1752
+ return _isReady;
1753
+ }
1754
+ async function waitReady() {
1755
+ if (!initPromise) {
1756
+ initPromise = initWasm();
1757
+ }
1758
+ return initPromise;
1759
+ }
1760
+ function getSigningContext() {
1761
+ if (!wasm)
1762
+ throw new Error('WASM not initialized');
1763
+ const ret = wasm['get_signing_context']();
1764
+ const str = getStringFromWasm(ret[0], ret[1]);
1765
+ wasm['__wbindgen_free'](ret[0], ret[1], 1);
1766
+ return str;
1767
+ }
1768
+ function sr25519KeypairFromSeed(seed) {
1769
+ if (!wasm)
1770
+ throw new Error('WASM not initialized');
1771
+ const ptr0 = passArray8ToWasm(seed, wasm['__wbindgen_malloc']);
1772
+ const len0 = WASM_VECTOR_LEN;
1773
+ const ret = wasm['sr25519_keypair_from_seed'](ptr0, len0);
1774
+ if (ret[3]) {
1775
+ throw takeFromExternrefTable(ret[2]);
1776
+ }
1777
+ const v2 = getArrayU8FromWasm(ret[0], ret[1]).slice();
1778
+ wasm['__wbindgen_free'](ret[0], ret[1] * 1, 1);
1779
+ return v2;
1780
+ }
1781
+ function sr25519Sign(publicKey, secretKey, message) {
1782
+ if (!wasm)
1783
+ throw new Error('WASM not initialized');
1784
+ const ptr0 = passArray8ToWasm(publicKey, wasm['__wbindgen_malloc']);
1785
+ const len0 = WASM_VECTOR_LEN;
1786
+ const ptr1 = passArray8ToWasm(secretKey, wasm['__wbindgen_malloc']);
1787
+ const len1 = WASM_VECTOR_LEN;
1788
+ const ptr2 = passArray8ToWasm(message, wasm['__wbindgen_malloc']);
1789
+ const len2 = WASM_VECTOR_LEN;
1790
+ const ret = wasm['sr25519_sign'](ptr0, len0, ptr1, len1, ptr2, len2);
1791
+ if (ret[3]) {
1792
+ throw takeFromExternrefTable(ret[2]);
1793
+ }
1794
+ const v4 = getArrayU8FromWasm(ret[0], ret[1]).slice();
1795
+ wasm['__wbindgen_free'](ret[0], ret[1] * 1, 1);
1796
+ return v4;
1797
+ }
1798
+ function sr25519Verify(signature, message, publicKey) {
1799
+ if (!wasm)
1800
+ throw new Error('WASM not initialized');
1801
+ const ptr0 = passArray8ToWasm(signature, wasm['__wbindgen_malloc']);
1802
+ const len0 = WASM_VECTOR_LEN;
1803
+ const ptr1 = passArray8ToWasm(message, wasm['__wbindgen_malloc']);
1804
+ const len1 = WASM_VECTOR_LEN;
1805
+ const ptr2 = passArray8ToWasm(publicKey, wasm['__wbindgen_malloc']);
1806
+ const len2 = WASM_VECTOR_LEN;
1807
+ const ret = wasm['sr25519_verify'](ptr0, len0, ptr1, len1, ptr2, len2);
1808
+ return ret !== 0;
1809
+ }
1810
+ function normalizeString(str) {
1811
+ return (str || '').normalize('NFKD');
1812
+ }
1813
+ function bip39Validate(phrase) {
1814
+ try {
1815
+ const words = normalizeString(phrase).split(' ');
1816
+ return [12, 15, 18, 21, 24].includes(words.length);
1817
+ }
1818
+ catch {
1819
+ return false;
1820
+ }
1821
+ }
1822
+ const BIP39_WORDLIST = 'abandon|ability|able|about|above|absent|absorb|abstract|absurd|abuse|access|accident|account|accuse|achieve|acid|acoustic|acquire|across|act|action|actor|actress|actual|adapt|add|addict|address|adjust|admit|adult|advance|advice|aerobic|affair|afford|afraid|again|age|agent|agree|ahead|aim|air|airport|aisle|alarm|album|alcohol|alert|alien|all|alley|allow|almost|alone|alpha|already|also|alter|always|amateur|amazing|among|amount|amused|analyst|anchor|ancient|anger|angle|angry|animal|ankle|announce|annual|another|answer|antenna|antique|anxiety|any|apart|apology|appear|apple|approve|april|arch|arctic|area|arena|argue|arm|armed|armor|army|around|arrange|arrest|arrive|arrow|art|artefact|artist|artwork|ask|aspect|assault|asset|assist|assume|asthma|athlete|atom|attack|attend|attitude|attract|auction|audit|august|aunt|author|auto|autumn|average|avocado|avoid|awake|aware|away|awesome|awful|awkward|axis|baby|bachelor|bacon|badge|bag|balance|balcony|ball|bamboo|banana|banner|bar|barely|bargain|barrel|base|basic|basket|battle|beach|bean|beauty|because|become|beef|before|begin|behave|behind|believe|below|belt|bench|benefit|best|betray|better|between|beyond|bicycle|bid|bike|bind|biology|bird|birth|bitter|black|blade|blame|blanket|blast|bleak|bless|blind|blood|blossom|blouse|blue|blur|blush|board|boat|body|boil|bomb|bone|bonus|book|boost|border|boring|borrow|boss|bottom|bounce|box|boy|bracket|brain|brand|brass|brave|bread|breeze|brick|bridge|brief|bright|bring|brisk|broccoli|broken|bronze|broom|brother|brown|brush|bubble|buddy|budget|buffalo|build|bulb|bulk|bullet|bundle|bunker|burden|burger|burst|bus|business|busy|butter|buyer|buzz|cabbage|cabin|cable|cactus|cage|cake|call|calm|camera|camp|can|canal|cancel|candy|cannon|canoe|canvas|canyon|capable|capital|captain|car|carbon|card|cargo|carpet|carry|cart|case|cash|casino|castle|casual|cat|catalog|catch|category|cattle|caught|cause|caution|cave|ceiling|celery|cement|census|century|cereal|certain|chair|chalk|champion|change|chaos|chapter|charge|chase|chat|cheap|check|cheese|chef|cherry|chest|chicken|chief|child|chimney|choice|choose|chronic|chuckle|chunk|churn|cigar|cinnamon|circle|citizen|city|civil|claim|clap|clarify|claw|clay|clean|clerk|clever|click|client|cliff|climb|clinic|clip|clock|clog|close|cloth|cloud|clown|club|clump|cluster|clutch|coach|coast|coconut|code|coffee|coil|coin|collect|color|column|combine|come|comfort|comic|common|company|concert|conduct|confirm|congress|connect|consider|control|convince|cook|cool|copper|copy|coral|core|corn|correct|cost|cotton|couch|country|couple|course|cousin|cover|coyote|crack|cradle|craft|cram|crane|crash|crater|crawl|crazy|cream|credit|creek|crew|cricket|crime|crisp|critic|crop|cross|crouch|crowd|crucial|cruel|cruise|crumble|crunch|crush|cry|crystal|cube|culture|cup|cupboard|curious|current|curtain|curve|cushion|custom|cute|cycle|dad|damage|damp|dance|danger|daring|dash|daughter|dawn|day|deal|debate|debris|decade|december|decide|decline|decorate|decrease|deer|defense|define|defy|degree|delay|deliver|demand|demise|denial|dentist|deny|depart|depend|deposit|depth|deputy|derive|describe|desert|design|desk|despair|destroy|detail|detect|develop|device|devote|diagram|dial|diamond|diary|dice|diesel|diet|differ|digital|dignity|dilemma|dinner|dinosaur|direct|dirt|disagree|discover|disease|dish|dismiss|disorder|display|distance|divert|divide|divorce|dizzy|doctor|document|dog|doll|dolphin|domain|donate|donkey|donor|door|dose|double|dove|draft|dragon|drama|drastic|draw|dream|dress|drift|drill|drink|drip|drive|drop|drum|dry|duck|dumb|dune|during|dust|dutch|duty|dwarf|dynamic|eager|eagle|early|earn|earth|easily|east|easy|echo|ecology|economy|edge|edit|educate|effort|egg|eight|either|elbow|elder|electric|elegant|element|elephant|elevator|elite|else|embark|embody|embrace|emerge|emotion|employ|empower|empty|enable|enact|end|endless|endorse|enemy|energy|enforce|engage|engine|enhance|enjoy|enlist|enough|enrich|enroll|ensure|enter|entire|entry|envelope|episode|equal|equip|era|erase|erode|erosion|error|erupt|escape|essay|essence|estate|eternal|ethics|evidence|evil|evoke|evolve|exact|example|excess|exchange|excite|exclude|excuse|execute|exercise|exhaust|exhibit|exile|exist|exit|exotic|expand|expect|expire|explain|expose|express|extend|extra|eye|eyebrow|fabric|face|faculty|fade|faint|faith|fall|false|fame|family|famous|fan|fancy|fantasy|farm|fashion|fat|fatal|father|fatigue|fault|favorite|feature|february|federal|fee|feed|feel|female|fence|festival|fetch|fever|few|fiber|fiction|field|figure|file|film|filter|final|find|fine|finger|finish|fire|firm|first|fiscal|fish|fit|fitness|fix|flag|flame|flash|flat|flavor|flee|flight|flip|float|flock|floor|flower|fluid|flush|fly|foam|focus|fog|foil|fold|follow|food|foot|force|forest|forget|fork|fortune|forum|forward|fossil|foster|found|fox|fragile|frame|frequent|fresh|friend|fringe|frog|front|frost|frown|frozen|fruit|fuel|fun|funny|furnace|fury|future|gadget|gain|galaxy|gallery|game|gap|garage|garbage|garden|garlic|garment|gas|gasp|gate|gather|gauge|gaze|general|genius|genre|gentle|genuine|gesture|ghost|giant|gift|giggle|ginger|giraffe|girl|give|glad|glance|glare|glass|glide|glimpse|globe|gloom|glory|glove|glow|glue|goat|goddess|gold|good|goose|gorilla|gospel|gossip|govern|gown|grab|grace|grain|grant|grape|grass|gravity|great|green|grid|grief|grit|grocery|group|grow|grunt|guard|guess|guide|guilt|guitar|gun|gym|habit|hair|half|hammer|hamster|hand|happy|harbor|hard|harsh|harvest|hat|have|hawk|hazard|head|health|heart|heavy|hedgehog|height|hello|helmet|help|hen|hero|hidden|high|hill|hint|hip|hire|history|hobby|hockey|hold|hole|holiday|hollow|home|honey|hood|hope|horn|horror|horse|hospital|host|hotel|hour|hover|hub|huge|human|humble|humor|hundred|hungry|hunt|hurdle|hurry|hurt|husband|hybrid|ice|icon|idea|identify|idle|ignore|ill|illegal|illness|image|imitate|immense|immune|impact|impose|improve|impulse|inch|include|income|increase|index|indicate|indoor|industry|infant|inflict|inform|inhale|inherit|initial|inject|injury|inmate|inner|innocent|input|inquiry|insane|insect|inside|inspire|install|intact|interest|into|invest|invite|involve|iron|island|isolate|issue|item|ivory|jacket|jaguar|jar|jazz|jealous|jeans|jelly|jewel|job|join|joke|journey|joy|judge|juice|jump|jungle|junior|junk|just|kangaroo|keen|keep|ketchup|key|kick|kid|kidney|kind|kingdom|kiss|kit|kitchen|kite|kitten|kiwi|knee|knife|knock|know|lab|label|labor|ladder|lady|lake|lamp|language|laptop|large|later|latin|laugh|laundry|lava|law|lawn|lawsuit|layer|lazy|leader|leaf|learn|leave|lecture|left|leg|legal|legend|leisure|lemon|lend|length|lens|leopard|lesson|letter|level|liar|liberty|library|license|life|lift|light|like|limb|limit|link|lion|liquid|list|little|live|lizard|load|loan|lobster|local|lock|logic|lonely|long|loop|lottery|loud|lounge|love|loyal|lucky|luggage|lumber|lunar|lunch|luxury|lyrics|machine|mad|magic|magnet|maid|mail|main|major|make|mammal|man|manage|mandate|mango|mansion|manual|maple|marble|march|margin|marine|market|marriage|mask|mass|master|match|material|math|matrix|matter|maximum|maze|meadow|mean|measure|meat|mechanic|medal|media|melody|melt|member|memory|mention|menu|mercy|merge|merit|merry|mesh|message|metal|method|middle|midnight|milk|million|mimic|mind|minimum|minor|minute|miracle|mirror|misery|miss|mistake|mix|mixed|mixture|mobile|model|modify|mom|moment|monitor|monkey|monster|month|moon|moral|more|morning|mosquito|mother|motion|motor|mountain|mouse|move|movie|much|muffin|mule|multiply|muscle|museum|mushroom|music|must|mutual|myself|mystery|myth|naive|name|napkin|narrow|nasty|nation|nature|near|neck|need|negative|neglect|neither|nephew|nerve|nest|net|network|neutral|never|news|next|nice|night|noble|noise|nominee|noodle|normal|north|nose|notable|note|nothing|notice|novel|now|nuclear|number|nurse|nut|oak|obey|object|oblige|obscure|observe|obtain|obvious|occur|ocean|october|odor|off|offer|office|often|oil|okay|old|olive|olympic|omit|once|one|onion|online|only|open|opera|opinion|oppose|option|orange|orbit|orchard|order|ordinary|organ|orient|original|orphan|ostrich|other|outdoor|outer|output|outside|oval|oven|over|own|owner|oxygen|oyster|ozone|pact|paddle|page|pair|palace|palm|panda|panel|panic|panther|paper|parade|parent|park|parrot|party|pass|patch|path|patient|patrol|pattern|pause|pave|payment|peace|peanut|pear|peasant|pelican|pen|penalty|pencil|people|pepper|perfect|permit|person|pet|phone|photo|phrase|physical|piano|picnic|picture|piece|pig|pigeon|pill|pilot|pink|pioneer|pipe|pistol|pitch|pizza|place|planet|plastic|plate|play|please|pledge|pluck|plug|plunge|poem|poet|point|polar|pole|police|pond|pony|pool|popular|portion|position|possible|post|potato|pottery|poverty|powder|power|practice|praise|predict|prefer|prepare|present|pretty|prevent|price|pride|primary|print|priority|prison|private|prize|problem|process|produce|profit|program|project|promote|proof|property|prosper|protect|proud|provide|public|pudding|pull|pulp|pulse|pumpkin|punch|pupil|puppy|purchase|purity|purpose|purse|push|put|puzzle|pyramid|quality|quantum|quarter|question|quick|quit|quiz|quote|rabbit|raccoon|race|rack|radar|radio|rail|rain|raise|rally|ramp|ranch|random|range|rapid|rare|rate|rather|raven|raw|razor|ready|real|reason|rebel|rebuild|recall|receive|recipe|record|recycle|reduce|reflect|reform|refuse|region|regret|regular|reject|relax|release|relief|rely|remain|remember|remind|remove|render|renew|rent|reopen|repair|repeat|replace|report|require|rescue|resemble|resist|resource|response|result|retire|retreat|return|reunion|reveal|review|reward|rhythm|rib|ribbon|rice|rich|ride|ridge|rifle|right|rigid|ring|riot|ripple|risk|ritual|rival|river|road|roast|robot|robust|rocket|romance|roof|rookie|room|rose|rotate|rough|round|route|royal|rubber|rude|rug|rule|run|runway|rural|sad|saddle|sadness|safe|sail|salad|salmon|salon|salt|salute|same|sample|sand|satisfy|satoshi|sauce|sausage|save|say|scale|scan|scare|scatter|scene|scheme|school|science|scissors|scorpion|scout|scrap|screen|script|scrub|sea|search|season|seat|second|secret|section|security|seed|seek|segment|select|sell|seminar|senior|sense|sentence|series|service|session|settle|setup|seven|shadow|shaft|shallow|share|shed|shell|sheriff|shield|shift|shine|ship|shiver|shock|shoe|shoot|shop|short|shoulder|shove|shrimp|shrug|shuffle|shy|sibling|sick|side|siege|sight|sign|silent|silk|silly|silver|similar|simple|since|sing|siren|sister|situate|six|size|skate|sketch|ski|skill|skin|skirt|skull|slab|slam|sleep|slender|slice|slide|slight|slim|slogan|slot|slow|slush|small|smart|smile|smoke|smooth|snack|snake|snap|sniff|snow|soap|soccer|social|sock|soda|soft|solar|soldier|solid|solution|solve|someone|song|soon|sorry|sort|soul|sound|soup|source|south|space|spare|spatial|spawn|speak|special|speed|spell|spend|sphere|spice|spider|spike|spin|spirit|split|spoil|sponsor|spoon|sport|spot|spray|spread|spring|spy|square|squeeze|squirrel|stable|stadium|staff|stage|stairs|stamp|stand|start|state|stay|steak|steel|stem|step|stereo|stick|still|sting|stock|stomach|stone|stool|story|stove|strategy|street|strike|strong|struggle|student|stuff|stumble|style|subject|submit|subway|success|such|sudden|suffer|sugar|suggest|suit|summer|sun|sunny|sunset|super|supply|supreme|sure|surface|surge|surprise|surround|survey|suspect|sustain|swallow|swamp|swap|swarm|swear|sweet|swift|swim|swing|switch|sword|symbol|symptom|syrup|system|table|tackle|tag|tail|talent|talk|tank|tape|target|task|taste|tattoo|taxi|teach|team|tell|ten|tenant|tennis|tent|term|test|text|thank|that|theme|then|theory|there|they|thing|this|thought|three|thrive|throw|thumb|thunder|ticket|tide|tiger|tilt|timber|time|tiny|tip|tired|tissue|title|toast|tobacco|today|toddler|toe|together|toilet|token|tomato|tomorrow|tone|tongue|tonight|tool|tooth|top|topic|topple|torch|tornado|tortoise|toss|total|tourist|toward|tower|town|toy|track|trade|traffic|tragic|train|transfer|trap|trash|travel|tray|treat|tree|trend|trial|tribe|trick|trigger|trim|trip|trophy|trouble|truck|true|truly|trumpet|trust|truth|try|tube|tuition|tumble|tuna|tunnel|turkey|turn|turtle|twelve|twenty|twice|twin|twist|two|type|typical|ugly|umbrella|unable|unaware|uncle|uncover|under|undo|unfair|unfold|unhappy|uniform|unique|unit|universe|unknown|unlock|until|unusual|unveil|update|upgrade|uphold|upon|upper|upset|urban|urge|usage|use|used|useful|useless|usual|utility|vacant|vacuum|vague|valid|valley|valve|van|vanish|vapor|various|vast|vault|vehicle|velvet|vendor|venture|venue|verb|verify|version|very|vessel|veteran|viable|vibrant|vicious|victory|video|view|village|vintage|violin|virtual|virus|visa|visit|visual|vital|vivid|vocal|voice|void|volcano|volume|vote|voyage|wage|wagon|wait|walk|wall|walnut|want|warfare|warm|warrior|wash|wasp|waste|water|wave|way|wealth|weapon|wear|weasel|weather|web|wedding|weekend|weird|welcome|west|wet|whale|what|wheat|wheel|when|where|whip|whisper|wide|width|wife|wild|will|win|window|wine|wing|wink|winner|winter|wire|wisdom|wise|wish|witness|wolf|woman|wonder|wood|wool|word|work|world|worry|worth|wrap|wreck|wrestle|wrist|write|wrong|yard|year|yellow|you|young|youth|zebra|zero|zone|zoo'.split('|');
1823
+ function binaryToByte(bin) {
1824
+ return parseInt(bin, 2);
1825
+ }
1826
+ function bytesToBinary(bytes) {
1827
+ return bytes.map((x) => x.toString(2).padStart(8, '0')).join('');
1828
+ }
1829
+ function deriveChecksumBits(entropyBuffer) {
1830
+ const hash = sha256$1(entropyBuffer);
1831
+ return bytesToBinary(Array.from(hash)).slice(0, (entropyBuffer.length * 8) / 32);
1832
+ }
1833
+ function bip39Generate(_words) {
1834
+ throw new Error('bip39Generate: use @pezkuwi/util-crypto mnemonicGenerate instead');
1835
+ }
1836
+ function bip39ToEntropy(phrase) {
1837
+ const words = normalizeString(phrase).split(' ');
1838
+ if (words.length % 3 !== 0) {
1839
+ throw new Error('Invalid mnemonic');
1840
+ }
1841
+ const bits = words
1842
+ .map((word) => {
1843
+ const index = BIP39_WORDLIST.indexOf(word);
1844
+ if (index === -1) {
1845
+ throw new Error('Invalid mnemonic');
1846
+ }
1847
+ return index.toString(2).padStart(11, '0');
1848
+ })
1849
+ .join('');
1850
+ const dividerIndex = Math.floor(bits.length / 33) * 32;
1851
+ const entropyBits = bits.slice(0, dividerIndex);
1852
+ const checksumBits = bits.slice(dividerIndex);
1853
+ const matched = entropyBits.match(/(.{1,8})/g);
1854
+ const entropyBytes = matched?.map(binaryToByte);
1855
+ if (!entropyBytes || (entropyBytes.length % 4 !== 0) || (entropyBytes.length < 16) || (entropyBytes.length > 32)) {
1856
+ throw new Error('Invalid entropy');
1857
+ }
1858
+ const entropy = new Uint8Array(entropyBytes);
1859
+ if (deriveChecksumBits(entropy) !== checksumBits) {
1860
+ throw new Error('Invalid mnemonic checksum');
1861
+ }
1862
+ return entropy;
1863
+ }
1864
+ function bip39ToMiniSecret(phrase, password) {
1865
+ const entropy = bip39ToEntropy(phrase);
1866
+ const salt = new TextEncoder().encode(`mnemonic${normalizeString(password)}`);
1867
+ return pbkdf2$1(sha512$1, entropy, salt, { c: 2048, dkLen: 64 }).slice(0, 32);
1868
+ }
1869
+ function bip39ToSeed(phrase, password) {
1870
+ const salt = new TextEncoder().encode(`mnemonic${normalizeString(password)}`);
1871
+ const input = new TextEncoder().encode(normalizeString(phrase));
1872
+ return pbkdf2$1(sha256$1, input, salt, { c: 2048, dkLen: 64 });
1873
+ }
1874
+ function ed25519KeypairFromSeed(_seed) {
1875
+ throw new Error('ed25519KeypairFromSeed not yet implemented');
1876
+ }
1877
+ function ed25519Sign(_publicKey, _secretKey, _message) {
1878
+ throw new Error('ed25519Sign not yet implemented');
1879
+ }
1880
+ function ed25519Verify(_signature, _message, _publicKey) {
1881
+ throw new Error('ed25519Verify not yet implemented');
1882
+ }
1883
+ function sr25519Agree(_publicKey, _secretKey) {
1884
+ throw new Error('sr25519Agree not yet implemented');
1885
+ }
1886
+ function sr25519DeriveKeypairHard(_pair, _cc) {
1887
+ throw new Error('sr25519DeriveKeypairHard not yet implemented');
1888
+ }
1889
+ function sr25519DeriveKeypairSoft(_pair, _cc) {
1890
+ throw new Error('sr25519DeriveKeypairSoft not yet implemented');
1891
+ }
1892
+ function sr25519DerivePublicSoft(_publicKey, _cc) {
1893
+ throw new Error('sr25519DerivePublicSoft not yet implemented');
1894
+ }
1895
+ function vrfSign(_secretKey, _context, _message, _extra) {
1896
+ throw new Error('vrfSign not yet implemented');
1897
+ }
1898
+ function vrfVerify(_publicKey, _context, _message, _extra, _outAndProof) {
1899
+ throw new Error('vrfVerify not yet implemented');
1900
+ }
1901
+ function secp256k1FromSeed(_seed) {
1902
+ throw new Error('secp256k1FromSeed not yet implemented');
1903
+ }
1904
+ function secp256k1Compress(_publicKey) {
1905
+ throw new Error('secp256k1Compress not yet implemented');
1906
+ }
1907
+ function secp256k1Expand(_publicKey) {
1908
+ throw new Error('secp256k1Expand not yet implemented');
1909
+ }
1910
+ function secp256k1Recover(_msgHash, _signature, _recoveryId) {
1911
+ throw new Error('secp256k1Recover not yet implemented');
1912
+ }
1913
+ function secp256k1Sign(_msgHash, _secretKey) {
1914
+ throw new Error('secp256k1Sign not yet implemented');
1915
+ }
1916
+ function blake2b(data, key, size) {
1917
+ if (key && key.length > 0) {
1918
+ return blake2b$1(data, { dkLen: size, key });
1919
+ }
1920
+ return blake2b$1(data, { dkLen: size });
1921
+ }
1922
+ function hmacSha256(key, data) {
1923
+ return hmac(sha256$1, key, data);
1924
+ }
1925
+ function hmacSha512(key, data) {
1926
+ return hmac(sha512$1, key, data);
1927
+ }
1928
+ function keccak256(data) {
1929
+ return keccak_256(data);
1930
+ }
1931
+ function keccak512(data) {
1932
+ return keccak_512(data);
1933
+ }
1934
+ function pbkdf2(data, salt, rounds) {
1935
+ return pbkdf2$1(sha512$1, data, salt, { c: rounds, dkLen: 64 });
1936
+ }
1937
+ function scrypt(_password, _salt, _log2n, _r, _p) {
1938
+ throw new Error('scrypt not yet implemented - use @pezkuwi/util-crypto scryptSync instead');
1939
+ }
1940
+ function sha256(data) {
1941
+ return sha256$1(data);
1942
+ }
1943
+ function sha512(data) {
1944
+ return sha512$1(data);
1945
+ }
1946
+ const P64_1 = BigInt('11400714785074694791');
1947
+ const P64_2 = BigInt('14029467366897019727');
1948
+ const P64_3 = BigInt('1609587929392839161');
1949
+ const P64_4 = BigInt('9650029242287828579');
1950
+ const P64_5 = BigInt('2870177450012600261');
1951
+ const U64 = BigInt('0xffffffffffffffff');
1952
+ const _0n = BigInt(0);
1953
+ const _1n = BigInt(1);
1954
+ const _7n = BigInt(7);
1955
+ const _11n = BigInt(11);
1956
+ const _12n = BigInt(12);
1957
+ const _16n = BigInt(16);
1958
+ const _18n = BigInt(18);
1959
+ const _23n = BigInt(23);
1960
+ const _27n = BigInt(27);
1961
+ const _29n = BigInt(29);
1962
+ const _31n = BigInt(31);
1963
+ const _32n = BigInt(32);
1964
+ const _33n = BigInt(33);
1965
+ const _64n = BigInt(64);
1966
+ const _256n = BigInt(256);
1967
+ function rotl(a, b) {
1968
+ const c = a & U64;
1969
+ return ((c << b) | (c >> (_64n - b))) & U64;
1970
+ }
1971
+ function fromU8a(u8a, p, count) {
1972
+ const bigints = new Array(count);
1973
+ let offset = 0;
1974
+ for (let i = 0; i < count; i++, offset += 2) {
1975
+ bigints[i] = BigInt(u8a[p + offset] | (u8a[p + 1 + offset] << 8));
1976
+ }
1977
+ let result = _0n;
1978
+ for (let i = count - 1; i >= 0; i--) {
1979
+ result = (result << _16n) + bigints[i];
1980
+ }
1981
+ return result;
1982
+ }
1983
+ function xxhashInit(seed, input) {
1984
+ const state = {
1985
+ seed,
1986
+ u8a: new Uint8Array(32),
1987
+ u8asize: 0,
1988
+ v1: seed + P64_1 + P64_2,
1989
+ v2: seed + P64_2,
1990
+ v3: seed,
1991
+ v4: seed - P64_1
1992
+ };
1993
+ if (input.length < 32) {
1994
+ state.u8a.set(input);
1995
+ state.u8asize = input.length;
1996
+ return state;
1997
+ }
1998
+ const limit = input.length - 32;
1999
+ let p = 0;
2000
+ if (limit >= 0) {
2001
+ const adjustV = (v) => P64_1 * rotl(v + P64_2 * fromU8a(input, p, 4), _31n);
2002
+ do {
2003
+ state.v1 = adjustV(state.v1);
2004
+ p += 8;
2005
+ state.v2 = adjustV(state.v2);
2006
+ p += 8;
2007
+ state.v3 = adjustV(state.v3);
2008
+ p += 8;
2009
+ state.v4 = adjustV(state.v4);
2010
+ p += 8;
2011
+ } while (p <= limit);
2012
+ }
2013
+ if (p < input.length) {
2014
+ state.u8a.set(input.subarray(p, input.length));
2015
+ state.u8asize = input.length - p;
2016
+ }
2017
+ return state;
2018
+ }
2019
+ function xxhash64(input, initSeed) {
2020
+ const { seed, u8a, u8asize, v1, v2, v3, v4 } = xxhashInit(BigInt(initSeed), input);
2021
+ let p = 0;
2022
+ let h64 = U64 & (BigInt(input.length) + (input.length >= 32
2023
+ ? (((((((((rotl(v1, _1n) + rotl(v2, _7n) + rotl(v3, _12n) + rotl(v4, _18n)) ^ (P64_1 * rotl(v1 * P64_2, _31n))) * P64_1 + P64_4) ^ (P64_1 * rotl(v2 * P64_2, _31n))) * P64_1 + P64_4) ^ (P64_1 * rotl(v3 * P64_2, _31n))) * P64_1 + P64_4) ^ (P64_1 * rotl(v4 * P64_2, _31n))) * P64_1 + P64_4)
2024
+ : (seed + P64_5)));
2025
+ while (p <= (u8asize - 8)) {
2026
+ h64 = U64 & (P64_4 + P64_1 * rotl(h64 ^ (P64_1 * rotl(P64_2 * fromU8a(u8a, p, 4), _31n)), _27n));
2027
+ p += 8;
2028
+ }
2029
+ if ((p + 4) <= u8asize) {
2030
+ h64 = U64 & (P64_3 + P64_2 * rotl(h64 ^ (P64_1 * fromU8a(u8a, p, 2)), _23n));
2031
+ p += 4;
2032
+ }
2033
+ while (p < u8asize) {
2034
+ h64 = U64 & (P64_1 * rotl(h64 ^ (P64_5 * BigInt(u8a[p++])), _11n));
2035
+ }
2036
+ h64 = U64 & (P64_2 * (h64 ^ (h64 >> _33n)));
2037
+ h64 = U64 & (P64_3 * (h64 ^ (h64 >> _29n)));
2038
+ h64 = U64 & (h64 ^ (h64 >> _32n));
2039
+ const result = new Uint8Array(8);
2040
+ for (let i = 7; i >= 0; i--) {
2041
+ result[i] = Number(h64 % _256n);
2042
+ h64 = h64 / _256n;
2043
+ }
2044
+ return result;
2045
+ }
2046
+ function twox(data, rounds) {
2047
+ const result = new Uint8Array(rounds * 8);
2048
+ for (let seed = 0; seed < rounds; seed++) {
2049
+ result.set(xxhash64(data, seed).reverse(), seed * 8);
2050
+ }
2051
+ return result;
2052
+ }
2053
+
2054
+ exports.bip39Generate = bip39Generate;
2055
+ exports.bip39ToEntropy = bip39ToEntropy;
2056
+ exports.bip39ToMiniSecret = bip39ToMiniSecret;
2057
+ exports.bip39ToSeed = bip39ToSeed;
2058
+ exports.bip39Validate = bip39Validate;
2059
+ exports.blake2b = blake2b;
2060
+ exports.bridge = bridge;
2061
+ exports.ed25519KeypairFromSeed = ed25519KeypairFromSeed;
2062
+ exports.ed25519Sign = ed25519Sign;
2063
+ exports.ed25519Verify = ed25519Verify;
2064
+ exports.getSigningContext = getSigningContext;
2065
+ exports.hmacSha256 = hmacSha256;
2066
+ exports.hmacSha512 = hmacSha512;
2067
+ exports.isReady = isReady;
2068
+ exports.keccak256 = keccak256;
2069
+ exports.keccak512 = keccak512;
2070
+ exports.packageInfo = packageInfo;
2071
+ exports.pbkdf2 = pbkdf2;
2072
+ exports.scrypt = scrypt;
2073
+ exports.secp256k1Compress = secp256k1Compress;
2074
+ exports.secp256k1Expand = secp256k1Expand;
2075
+ exports.secp256k1FromSeed = secp256k1FromSeed;
2076
+ exports.secp256k1Recover = secp256k1Recover;
2077
+ exports.secp256k1Sign = secp256k1Sign;
2078
+ exports.sha256 = sha256;
2079
+ exports.sha512 = sha512;
2080
+ exports.sr25519Agree = sr25519Agree;
2081
+ exports.sr25519DeriveKeypairHard = sr25519DeriveKeypairHard;
2082
+ exports.sr25519DeriveKeypairSoft = sr25519DeriveKeypairSoft;
2083
+ exports.sr25519DerivePublicSoft = sr25519DerivePublicSoft;
2084
+ exports.sr25519KeypairFromSeed = sr25519KeypairFromSeed;
2085
+ exports.sr25519Sign = sr25519Sign;
2086
+ exports.sr25519Verify = sr25519Verify;
2087
+ exports.twox = twox;
2088
+ exports.vrfSign = vrfSign;
2089
+ exports.vrfVerify = vrfVerify;
2090
+ exports.waitReady = waitReady;
2091
+
2092
+ }));