@leofcoin/peernet 0.17.1 → 0.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/exports/browser/client-1c52a169.js +645 -0
- package/exports/browser/dht/dht.d.ts +30 -0
- package/exports/browser/discovery/peer-discovery.d.ts +7 -0
- package/exports/browser/errors/errors.d.ts +3 -0
- package/exports/browser/handlers/data.d.ts +2 -0
- package/exports/browser/handlers/message.d.ts +30 -0
- package/exports/browser/{index-019272d8.js → index-4a0fc4ea.js} +38 -923
- package/exports/browser/{index-3a25de4d.js → index-639f2260.js} +3 -1
- package/exports/browser/messages/chat.d.ts +6 -0
- package/exports/browser/messages/data-response.d.ts +6 -0
- package/exports/browser/messages/data.d.ts +10 -0
- package/exports/browser/messages/dht-response.d.ts +6 -0
- package/exports/browser/messages/dht.d.ts +14 -0
- package/exports/browser/messages/file-link.d.ts +10 -0
- package/exports/browser/messages/file.d.ts +10 -0
- package/exports/browser/messages/peer-response.d.ts +6 -0
- package/exports/browser/messages/peer.d.ts +6 -0
- package/exports/browser/messages/peernet.d.ts +6 -0
- package/exports/browser/messages/ps.d.ts +6 -0
- package/exports/browser/messages/request.d.ts +6 -0
- package/exports/browser/messages/response.d.ts +6 -0
- package/exports/browser/messages-6db1f01d.js +204 -0
- package/exports/browser/messages.d.ts +12 -0
- package/exports/browser/peer-info.d.ts +4 -0
- package/exports/browser/peernet-3b3933a5.js +3096 -0
- package/exports/browser/peernet.js +1 -1
- package/exports/browser/proto/chat-message.proto.d.ts +7 -0
- package/exports/browser/proto/data-response.proto.d.ts +5 -0
- package/exports/browser/proto/data.proto.d.ts +5 -0
- package/exports/browser/proto/dht-response.proto.d.ts +5 -0
- package/exports/browser/proto/dht.proto.d.ts +5 -0
- package/exports/browser/proto/file-link.proto.d.ts +6 -0
- package/exports/browser/proto/file.proto.d.ts +6 -0
- package/exports/browser/proto/peer-response.proto.d.ts +4 -0
- package/exports/browser/proto/peer.proto.d.ts +4 -0
- package/exports/browser/proto/peernet.proto.d.ts +8 -0
- package/exports/browser/proto/ps.proto.d.ts +5 -0
- package/exports/browser/proto/request.proto.d.ts +4 -0
- package/exports/browser/proto/response.proto.d.ts +4 -0
- package/exports/browser/utils/utils.d.ts +7 -0
- package/exports/dht/dht.d.ts +30 -0
- package/exports/discovery/peer-discovery.d.ts +7 -0
- package/exports/errors/errors.d.ts +3 -0
- package/exports/handlers/data.d.ts +2 -0
- package/exports/handlers/message.d.ts +30 -0
- package/exports/messages/chat.d.ts +6 -0
- package/exports/messages/data-response.d.ts +6 -0
- package/exports/messages/data.d.ts +10 -0
- package/exports/messages/dht-response.d.ts +6 -0
- package/exports/messages/dht.d.ts +14 -0
- package/exports/messages/file-link.d.ts +10 -0
- package/exports/messages/file.d.ts +10 -0
- package/exports/messages/peer-response.d.ts +6 -0
- package/exports/messages/peer.d.ts +6 -0
- package/exports/messages/peernet.d.ts +6 -0
- package/exports/messages/ps.d.ts +6 -0
- package/exports/messages/request.d.ts +6 -0
- package/exports/messages/response.d.ts +6 -0
- package/exports/messages-ebdc8c69.js +203 -0
- package/exports/messages.d.ts +12 -0
- package/exports/peer-info.d.ts +4 -0
- package/exports/peernet.js +863 -930
- package/exports/proto/chat-message.proto.d.ts +7 -0
- package/exports/proto/data-response.proto.d.ts +5 -0
- package/exports/proto/data.proto.d.ts +5 -0
- package/exports/proto/dht-response.proto.d.ts +5 -0
- package/exports/proto/dht.proto.d.ts +5 -0
- package/exports/proto/file-link.proto.d.ts +6 -0
- package/exports/proto/file.proto.d.ts +6 -0
- package/exports/proto/peer-response.proto.d.ts +4 -0
- package/exports/proto/peer.proto.d.ts +4 -0
- package/exports/proto/peernet.proto.d.ts +8 -0
- package/exports/proto/ps.proto.d.ts +5 -0
- package/exports/proto/request.proto.d.ts +4 -0
- package/exports/proto/response.proto.d.ts +4 -0
- package/exports/utils/utils.d.ts +7 -0
- package/package.json +4 -3
- package/rollup.config.js +9 -3
- package/src/messages/chat.js +0 -3
- package/src/messages/data-response.js +0 -3
- package/src/messages/data.js +0 -3
- package/src/messages/dht-response.js +0 -3
- package/src/messages/dht.js +0 -6
- package/src/messages/file-link.js +18 -0
- package/src/messages/file.js +0 -3
- package/src/messages/peer-response.js +0 -3
- package/src/messages/peer.js +0 -4
- package/src/messages/peernet.js +0 -3
- package/src/messages/ps.js +0 -4
- package/src/messages/request.js +0 -3
- package/src/messages/response.js +0 -3
- package/src/peernet.ts +26 -20
- package/src/proto/chat-message.proto.js +6 -7
- package/src/proto/data-response.proto.js +3 -6
- package/src/proto/data.proto.js +3 -6
- package/src/proto/dht-response.proto.js +3 -6
- package/src/proto/dht.proto.js +3 -6
- package/src/proto/file-link.proto.js +5 -0
- package/src/proto/file.proto.js +4 -13
- package/src/proto/peer-response.proto.js +2 -5
- package/src/proto/peer.proto.js +2 -5
- package/src/proto/peernet.proto.js +7 -9
- package/src/proto/ps.proto.js +4 -6
- package/src/proto/request.proto.js +2 -5
- package/src/proto/response.proto.js +2 -5
- package/test.js +2 -2
- package/test2.js +1 -1
- package/tsconfig.json +3 -9
- package/exports/browser/client-29660363.js +0 -690
- package/exports/browser/messages-4850566c.js +0 -303
- package/exports/browser/peernet-379769d5.js +0 -2896
- package/exports/messages-796c4d5c.js +0 -302
|
@@ -1,188 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)
|
|
4
|
-
// Distributed under the MIT software license, see the accompanying
|
|
5
|
-
// file LICENSE or http://www.opensource.org/licenses/mit-license.php.
|
|
6
|
-
const base$1 = (ALPHABET) => {
|
|
7
|
-
if (ALPHABET.length >= 255) {
|
|
8
|
-
throw new TypeError('Alphabet too long');
|
|
9
|
-
}
|
|
10
|
-
const BASE_MAP = new Uint8Array(256);
|
|
11
|
-
for (let j = 0; j < BASE_MAP.length; j++) {
|
|
12
|
-
BASE_MAP[j] = 255;
|
|
13
|
-
}
|
|
14
|
-
for (let i = 0; i < ALPHABET.length; i++) {
|
|
15
|
-
const x = ALPHABET.charAt(i);
|
|
16
|
-
const xc = x.charCodeAt(0);
|
|
17
|
-
if (BASE_MAP[xc] !== 255) {
|
|
18
|
-
throw new TypeError(x + ' is ambiguous');
|
|
19
|
-
}
|
|
20
|
-
BASE_MAP[xc] = i;
|
|
21
|
-
}
|
|
22
|
-
const BASE = ALPHABET.length;
|
|
23
|
-
const LEADER = ALPHABET.charAt(0);
|
|
24
|
-
const FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up
|
|
25
|
-
const iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up
|
|
26
|
-
const encode = (source) => {
|
|
27
|
-
if (source instanceof Uint8Array) ;
|
|
28
|
-
else if (ArrayBuffer.isView(source)) {
|
|
29
|
-
source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
|
|
30
|
-
}
|
|
31
|
-
else if (Array.isArray(source)) {
|
|
32
|
-
source = Uint8Array.from(source);
|
|
33
|
-
}
|
|
34
|
-
if (!(source instanceof Uint8Array)) {
|
|
35
|
-
throw new TypeError('Expected Uint8Array');
|
|
36
|
-
}
|
|
37
|
-
if (source.length === 0) {
|
|
38
|
-
return '';
|
|
39
|
-
}
|
|
40
|
-
// Skip & count leading zeroes.
|
|
41
|
-
let zeroes = 0;
|
|
42
|
-
let length = 0;
|
|
43
|
-
let pbegin = 0;
|
|
44
|
-
const pend = source.length;
|
|
45
|
-
while (pbegin !== pend && source[pbegin] === 0) {
|
|
46
|
-
pbegin++;
|
|
47
|
-
zeroes++;
|
|
48
|
-
}
|
|
49
|
-
// Allocate enough space in big-endian base58 representation.
|
|
50
|
-
const size = ((pend - pbegin) * iFACTOR + 1) >>> 0;
|
|
51
|
-
const b58 = new Uint8Array(size);
|
|
52
|
-
// Process the bytes.
|
|
53
|
-
while (pbegin !== pend) {
|
|
54
|
-
let carry = source[pbegin];
|
|
55
|
-
// Apply "b58 = b58 * 256 + ch".
|
|
56
|
-
let i = 0;
|
|
57
|
-
for (let it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {
|
|
58
|
-
carry += (256 * b58[it1]) >>> 0;
|
|
59
|
-
b58[it1] = (carry % BASE) >>> 0;
|
|
60
|
-
carry = (carry / BASE) >>> 0;
|
|
61
|
-
}
|
|
62
|
-
if (carry !== 0) {
|
|
63
|
-
throw new Error('Non-zero carry');
|
|
64
|
-
}
|
|
65
|
-
length = i;
|
|
66
|
-
pbegin++;
|
|
67
|
-
}
|
|
68
|
-
// Skip leading zeroes in base58 result.
|
|
69
|
-
let it2 = size - length;
|
|
70
|
-
while (it2 !== size && b58[it2] === 0) {
|
|
71
|
-
it2++;
|
|
72
|
-
}
|
|
73
|
-
// Translate the result into a string.
|
|
74
|
-
let str = LEADER.repeat(zeroes);
|
|
75
|
-
for (; it2 < size; ++it2) {
|
|
76
|
-
str += ALPHABET.charAt(b58[it2]);
|
|
77
|
-
}
|
|
78
|
-
return str;
|
|
79
|
-
};
|
|
80
|
-
const decodeUnsafe = (source) => {
|
|
81
|
-
if (typeof source !== 'string') {
|
|
82
|
-
throw new TypeError('Expected String');
|
|
83
|
-
}
|
|
84
|
-
if (source.length === 0) {
|
|
85
|
-
return new Uint8Array();
|
|
86
|
-
}
|
|
87
|
-
let psz = 0;
|
|
88
|
-
// Skip and count leading '1's.
|
|
89
|
-
let zeroes = 0;
|
|
90
|
-
let length = 0;
|
|
91
|
-
while (source[psz] === LEADER) {
|
|
92
|
-
zeroes++;
|
|
93
|
-
psz++;
|
|
94
|
-
}
|
|
95
|
-
// Allocate enough space in big-endian base256 representation.
|
|
96
|
-
const size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.
|
|
97
|
-
let b256 = new Uint8Array(size);
|
|
98
|
-
// Process the characters.
|
|
99
|
-
while (source[psz]) {
|
|
100
|
-
// Decode character
|
|
101
|
-
let carry = BASE_MAP[source.charCodeAt(psz)];
|
|
102
|
-
// Invalid character
|
|
103
|
-
if (carry === 255) {
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
let i = 0;
|
|
107
|
-
for (let it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {
|
|
108
|
-
carry += (BASE * b256[it3]) >>> 0;
|
|
109
|
-
b256[it3] = (carry % 256) >>> 0;
|
|
110
|
-
carry = (carry / 256) >>> 0;
|
|
111
|
-
}
|
|
112
|
-
if (carry !== 0) {
|
|
113
|
-
throw new Error('Non-zero carry');
|
|
114
|
-
}
|
|
115
|
-
length = i;
|
|
116
|
-
psz++;
|
|
117
|
-
}
|
|
118
|
-
// Skip leading zeroes in b256.
|
|
119
|
-
let it4 = size - length;
|
|
120
|
-
while (it4 !== size && b256[it4] === 0) {
|
|
121
|
-
it4++;
|
|
122
|
-
}
|
|
123
|
-
let vch = new Uint8Array(zeroes + (size - it4));
|
|
124
|
-
let j = zeroes;
|
|
125
|
-
while (it4 !== size) {
|
|
126
|
-
vch[j++] = b256[it4++];
|
|
127
|
-
}
|
|
128
|
-
return vch;
|
|
129
|
-
};
|
|
130
|
-
const decode = (string) => {
|
|
131
|
-
const buffer = decodeUnsafe(string);
|
|
132
|
-
if (buffer) {
|
|
133
|
-
return buffer;
|
|
134
|
-
}
|
|
135
|
-
throw new Error('Non-base' + BASE + ' character');
|
|
136
|
-
};
|
|
137
|
-
return {
|
|
138
|
-
encode,
|
|
139
|
-
decodeUnsafe,
|
|
140
|
-
decode
|
|
141
|
-
};
|
|
142
|
-
};
|
|
143
|
-
|
|
144
|
-
var ALPHABET$1 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
|
|
145
|
-
var ALPHABET_HEX$1 = '0123456789ABCDEFGHJKLMNPQRSTUVabcdefghijklmnopqrstuv';
|
|
146
|
-
var base58 = base$1(ALPHABET$1);
|
|
147
|
-
var base58Hex = base$1(ALPHABET_HEX$1);
|
|
148
|
-
var encode$4 = base58.encode;
|
|
149
|
-
var decode$5 = base58.decode;
|
|
150
|
-
var encodeHex$2 = base58Hex.encode;
|
|
151
|
-
var decodeHex$2 = base58Hex.decode;
|
|
152
|
-
var isBase58 = function (string) {
|
|
153
|
-
try {
|
|
154
|
-
decode$5(string);
|
|
155
|
-
return true;
|
|
156
|
-
}
|
|
157
|
-
catch (e) {
|
|
158
|
-
return false;
|
|
159
|
-
}
|
|
160
|
-
};
|
|
161
|
-
var isBase58Hex = function (string) {
|
|
162
|
-
try {
|
|
163
|
-
decodeHex$2(string);
|
|
164
|
-
return true;
|
|
165
|
-
}
|
|
166
|
-
catch (e) {
|
|
167
|
-
return false;
|
|
168
|
-
}
|
|
169
|
-
};
|
|
170
|
-
var whatType = function (string) {
|
|
171
|
-
try {
|
|
172
|
-
decode$5(string);
|
|
173
|
-
return 'base58';
|
|
174
|
-
}
|
|
175
|
-
catch (e) {
|
|
176
|
-
try {
|
|
177
|
-
decodeHex$2(string);
|
|
178
|
-
return 'base58Hex';
|
|
179
|
-
}
|
|
180
|
-
catch (_a) {
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
};
|
|
185
|
-
var base58$1 = { encode: encode$4, decode: decode$5, isBase58: isBase58, isBase58Hex: isBase58Hex, encodeHex: encodeHex$2, decodeHex: decodeHex$2, whatType: whatType };
|
|
1
|
+
import { b as base58$1, i as index$1, a as index$2, c as index$3, d as index$4, e as createRIPEMD160, f as createHMAC, g as createSHA512, h as createKeccak } from './peernet-3b3933a5.js';
|
|
2
|
+
import './value-40634404.js';
|
|
186
3
|
|
|
187
4
|
const randombytes = strength => crypto.getRandomValues(new Uint8Array(strength));
|
|
188
5
|
|
|
@@ -325,7 +142,7 @@ const concatAndDoubleHash = async (input) => {
|
|
|
325
142
|
return new Uint8Array(await createDoubleHash(typedArrayConcat(input), 'SHA-256'));
|
|
326
143
|
};
|
|
327
144
|
|
|
328
|
-
const encode$
|
|
145
|
+
const encode$1 = async (source, prefix = new TextEncoder().encode('00'), hex) => {
|
|
329
146
|
if (!(source instanceof Uint8Array) || !(prefix instanceof Uint8Array)) {
|
|
330
147
|
throw new TypeError('Expected Uint8Array');
|
|
331
148
|
}
|
|
@@ -342,7 +159,7 @@ const encode$3 = async (source, prefix = new TextEncoder().encode('00'), hex) =>
|
|
|
342
159
|
return base58$1.encodeHex(uint8Array);
|
|
343
160
|
return base58$1.encode(uint8Array);
|
|
344
161
|
};
|
|
345
|
-
const decode$
|
|
162
|
+
const decode$2 = async (string, hex) => {
|
|
346
163
|
let uint8Array = hex ? base58$1.decodeHex(string) : base58$1.decode(string);
|
|
347
164
|
const prefix = uint8Array.subarray(0, 2);
|
|
348
165
|
const source = uint8Array.subarray(2, -4);
|
|
@@ -362,143 +179,21 @@ const decode$4 = async (string, hex) => {
|
|
|
362
179
|
};
|
|
363
180
|
const isBase58check = (string, hex) => {
|
|
364
181
|
try {
|
|
365
|
-
hex ? decode$
|
|
182
|
+
hex ? decode$2(string, true) : decode$2(string);
|
|
366
183
|
return true;
|
|
367
184
|
}
|
|
368
185
|
catch (e) {
|
|
369
186
|
return false;
|
|
370
187
|
}
|
|
371
188
|
};
|
|
372
|
-
const encodeHex
|
|
373
|
-
const decodeHex
|
|
189
|
+
const encodeHex = (uint8Array, prefix = new TextEncoder().encode('00')) => encode$1(uint8Array, prefix, true);
|
|
190
|
+
const decodeHex = (string) => decode$2(string, true);
|
|
374
191
|
const isBase58checkHex = (string) => isBase58check(string, true);
|
|
375
|
-
var base58check = { encode: encode$
|
|
376
|
-
|
|
377
|
-
const MSB$1 = 0x80;
|
|
378
|
-
const REST$1 = 0x7F;
|
|
379
|
-
const MSBALL = ~REST$1;
|
|
380
|
-
const INT = Math.pow(2, 31);
|
|
381
|
-
const encode$2 = (num, out, offset) => {
|
|
382
|
-
if (Number.MAX_SAFE_INTEGER && num > Number.MAX_SAFE_INTEGER) {
|
|
383
|
-
encode$2.bytes = 0;
|
|
384
|
-
throw new RangeError('Could not encode varint');
|
|
385
|
-
}
|
|
386
|
-
out = out || [];
|
|
387
|
-
offset = offset || 0;
|
|
388
|
-
const oldOffset = offset;
|
|
389
|
-
while (num >= INT) {
|
|
390
|
-
out[offset++] = (num & 0xFF) | MSB$1;
|
|
391
|
-
num /= 128;
|
|
392
|
-
}
|
|
393
|
-
while (num & MSBALL) {
|
|
394
|
-
out[offset++] = (num & 0xFF) | MSB$1;
|
|
395
|
-
num >>>= 7;
|
|
396
|
-
}
|
|
397
|
-
out[offset] = num | 0;
|
|
398
|
-
encode$2.bytes = offset - oldOffset + 1;
|
|
399
|
-
return out;
|
|
400
|
-
};
|
|
401
|
-
|
|
402
|
-
const MSB = 0x80;
|
|
403
|
-
const REST = 0x7F;
|
|
404
|
-
const decode$3 = (buf, offset) => {
|
|
405
|
-
offset = offset || 0;
|
|
406
|
-
const l = buf.length;
|
|
407
|
-
let counter = offset;
|
|
408
|
-
let result = 0;
|
|
409
|
-
let shift = 0;
|
|
410
|
-
let b;
|
|
411
|
-
do {
|
|
412
|
-
if (counter >= l || shift > 49) {
|
|
413
|
-
decode$3.bytes = 0;
|
|
414
|
-
throw new RangeError('Could not decode varint');
|
|
415
|
-
}
|
|
416
|
-
b = buf[counter++];
|
|
417
|
-
result += shift < 28
|
|
418
|
-
? (b & REST) << shift
|
|
419
|
-
: (b & REST) * Math.pow(2, shift);
|
|
420
|
-
shift += 7;
|
|
421
|
-
} while (b >= MSB);
|
|
422
|
-
decode$3.bytes = counter - offset;
|
|
423
|
-
return result;
|
|
424
|
-
};
|
|
425
|
-
|
|
426
|
-
const N1 = Math.pow(2, 7);
|
|
427
|
-
const N2 = Math.pow(2, 14);
|
|
428
|
-
const N3 = Math.pow(2, 21);
|
|
429
|
-
const N4 = Math.pow(2, 28);
|
|
430
|
-
const N5 = Math.pow(2, 35);
|
|
431
|
-
const N6 = Math.pow(2, 42);
|
|
432
|
-
const N7 = Math.pow(2, 49);
|
|
433
|
-
const N8 = Math.pow(2, 56);
|
|
434
|
-
const N9 = Math.pow(2, 63);
|
|
435
|
-
var encodingLength = (value) => (value < N1 ? 1
|
|
436
|
-
: value < N2 ? 2
|
|
437
|
-
: value < N3 ? 3
|
|
438
|
-
: value < N4 ? 4
|
|
439
|
-
: value < N5 ? 5
|
|
440
|
-
: value < N6 ? 6
|
|
441
|
-
: value < N7 ? 7
|
|
442
|
-
: value < N8 ? 8
|
|
443
|
-
: value < N9 ? 9
|
|
444
|
-
: 10);
|
|
445
|
-
|
|
446
|
-
var index$2 = {
|
|
447
|
-
encode: encode$2,
|
|
448
|
-
decode: decode$3,
|
|
449
|
-
encodingLength
|
|
450
|
-
};
|
|
451
|
-
|
|
452
|
-
var typedArraySmartConcat = (input, prefix) => {
|
|
453
|
-
|
|
454
|
-
const encodedArray = [];
|
|
455
|
-
|
|
456
|
-
const length = input.reduce((total, current) => {
|
|
457
|
-
const encoded = index$2.encode(current.length);
|
|
458
|
-
encodedArray.push(encoded);
|
|
459
|
-
total += current.length + encoded.length;
|
|
460
|
-
return total
|
|
461
|
-
}, 0);
|
|
462
|
-
|
|
463
|
-
const typedArray = new Uint8Array(prefix ? prefix.length + length : length);
|
|
464
|
-
|
|
465
|
-
let currentIndex = 0;
|
|
466
|
-
let index = 0;
|
|
467
|
-
if (prefix) {
|
|
468
|
-
typedArray.set(prefix);
|
|
469
|
-
currentIndex += prefix.length;
|
|
470
|
-
}
|
|
471
|
-
for (const source of input) {
|
|
472
|
-
typedArray.set(encodedArray[index], currentIndex);
|
|
473
|
-
currentIndex += encodedArray[index].length;
|
|
474
|
-
typedArray.set(source, currentIndex);
|
|
475
|
-
currentIndex += source.length;
|
|
476
|
-
index += 1;
|
|
477
|
-
}
|
|
478
|
-
|
|
479
|
-
return typedArray
|
|
480
|
-
};
|
|
192
|
+
var base58check = { encode: encode$1, decode: decode$2, encodeHex, decodeHex, isBase58check, isBase58checkHex };
|
|
481
193
|
|
|
482
|
-
|
|
483
|
-
const set = [];
|
|
484
|
-
if (prefix) typedArray = typedArray.subarray(prefix.length);
|
|
485
|
-
const varintAndSub = typedArray => {
|
|
486
|
-
const length = index$2.decode(typedArray);
|
|
487
|
-
// remove length
|
|
488
|
-
typedArray = typedArray.subarray(index$2.decode.bytes);
|
|
489
|
-
// push value
|
|
490
|
-
set.push(typedArray.subarray(0, length));
|
|
491
|
-
// remove value
|
|
492
|
-
typedArray = typedArray.subarray(length);
|
|
493
|
-
if (typedArray.length !== 0) return varintAndSub(typedArray)
|
|
494
|
-
return set
|
|
495
|
-
};
|
|
496
|
-
return varintAndSub(typedArray)
|
|
497
|
-
};
|
|
498
|
-
|
|
499
|
-
const decode$2 = (multiWif, expectedVersion, expectedCodec) => {
|
|
194
|
+
const decode$1 = (multiWif, expectedVersion, expectedCodec) => {
|
|
500
195
|
const decoded = base58$1.decode(multiWif);
|
|
501
|
-
let [version, codec, privateKey] =
|
|
196
|
+
let [version, codec, privateKey] = index$2(decoded);
|
|
502
197
|
version = Number(new TextDecoder().decode(version));
|
|
503
198
|
codec = Number(new TextDecoder().decode(codec));
|
|
504
199
|
if (expectedVersion && version !== expectedVersion)
|
|
@@ -507,18 +202,18 @@ const decode$2 = (multiWif, expectedVersion, expectedCodec) => {
|
|
|
507
202
|
throw new Error(`invalid codec: expected ${expectedCodec} but got ${codec}`);
|
|
508
203
|
return { version, codec, privateKey };
|
|
509
204
|
};
|
|
510
|
-
var index
|
|
205
|
+
var index = {
|
|
511
206
|
encode: (version, codec, privateKey) => {
|
|
512
|
-
return base58$1.encode(
|
|
207
|
+
return base58$1.encode(index$1([
|
|
513
208
|
new TextEncoder().encode(version.toString()),
|
|
514
209
|
new TextEncoder().encode(codec.toString()),
|
|
515
210
|
privateKey
|
|
516
211
|
]));
|
|
517
212
|
},
|
|
518
|
-
decode: decode$
|
|
213
|
+
decode: decode$1,
|
|
519
214
|
isMultiWif: (multiWif) => {
|
|
520
215
|
try {
|
|
521
|
-
const { version, codec, privateKey } = decode$
|
|
216
|
+
const { version, codec, privateKey } = decode$1(multiWif);
|
|
522
217
|
if (version === undefined)
|
|
523
218
|
return false;
|
|
524
219
|
if (codec === undefined)
|
|
@@ -968,8 +663,8 @@ var require$$0$1 = {
|
|
|
968
663
|
var _nodeResolve_empty = {};
|
|
969
664
|
|
|
970
665
|
var _nodeResolve_empty$1 = /*#__PURE__*/Object.freeze({
|
|
971
|
-
|
|
972
|
-
|
|
666
|
+
__proto__: null,
|
|
667
|
+
default: _nodeResolve_empty
|
|
973
668
|
});
|
|
974
669
|
|
|
975
670
|
var require$$0 = /*@__PURE__*/getAugmentedNamespace(_nodeResolve_empty$1);
|
|
@@ -10153,555 +9848,7 @@ var elliptic$1 = {
|
|
|
10153
9848
|
|
|
10154
9849
|
var elliptic = lib(elliptic$1);
|
|
10155
9850
|
|
|
10156
|
-
|
|
10157
|
-
* hash-wasm (https://www.npmjs.com/package/hash-wasm)
|
|
10158
|
-
* (c) Dani Biro
|
|
10159
|
-
* @license MIT
|
|
10160
|
-
*/
|
|
10161
|
-
|
|
10162
|
-
/*! *****************************************************************************
|
|
10163
|
-
Copyright (c) Microsoft Corporation.
|
|
10164
|
-
|
|
10165
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
10166
|
-
purpose with or without fee is hereby granted.
|
|
10167
|
-
|
|
10168
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
10169
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
10170
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
10171
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
10172
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
10173
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
10174
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
10175
|
-
***************************************************************************** */
|
|
10176
|
-
|
|
10177
|
-
function __awaiter(thisArg, _arguments, P, generator) {
|
|
10178
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
10179
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10180
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
10181
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
10182
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
10183
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
10184
|
-
});
|
|
10185
|
-
}
|
|
10186
|
-
|
|
10187
|
-
class Mutex {
|
|
10188
|
-
constructor() {
|
|
10189
|
-
this.mutex = Promise.resolve();
|
|
10190
|
-
}
|
|
10191
|
-
lock() {
|
|
10192
|
-
let begin = () => { };
|
|
10193
|
-
this.mutex = this.mutex.then(() => new Promise(begin));
|
|
10194
|
-
return new Promise((res) => {
|
|
10195
|
-
begin = res;
|
|
10196
|
-
});
|
|
10197
|
-
}
|
|
10198
|
-
dispatch(fn) {
|
|
10199
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
10200
|
-
const unlock = yield this.lock();
|
|
10201
|
-
try {
|
|
10202
|
-
return yield Promise.resolve(fn());
|
|
10203
|
-
}
|
|
10204
|
-
finally {
|
|
10205
|
-
unlock();
|
|
10206
|
-
}
|
|
10207
|
-
});
|
|
10208
|
-
}
|
|
10209
|
-
}
|
|
10210
|
-
|
|
10211
|
-
/* eslint-disable import/prefer-default-export */
|
|
10212
|
-
/* eslint-disable no-bitwise */
|
|
10213
|
-
var _a;
|
|
10214
|
-
function getGlobal() {
|
|
10215
|
-
if (typeof globalThis !== 'undefined')
|
|
10216
|
-
return globalThis;
|
|
10217
|
-
// eslint-disable-next-line no-restricted-globals
|
|
10218
|
-
if (typeof self !== 'undefined')
|
|
10219
|
-
return self;
|
|
10220
|
-
if (typeof window !== 'undefined')
|
|
10221
|
-
return window;
|
|
10222
|
-
return global;
|
|
10223
|
-
}
|
|
10224
|
-
const globalObject = getGlobal();
|
|
10225
|
-
const nodeBuffer = (_a = globalObject.Buffer) !== null && _a !== void 0 ? _a : null;
|
|
10226
|
-
const textEncoder = globalObject.TextEncoder ? new globalObject.TextEncoder() : null;
|
|
10227
|
-
function hexCharCodesToInt(a, b) {
|
|
10228
|
-
return (((a & 0xF) + ((a >> 6) | ((a >> 3) & 0x8))) << 4) | ((b & 0xF) + ((b >> 6) | ((b >> 3) & 0x8)));
|
|
10229
|
-
}
|
|
10230
|
-
function writeHexToUInt8(buf, str) {
|
|
10231
|
-
const size = str.length >> 1;
|
|
10232
|
-
for (let i = 0; i < size; i++) {
|
|
10233
|
-
const index = i << 1;
|
|
10234
|
-
buf[i] = hexCharCodesToInt(str.charCodeAt(index), str.charCodeAt(index + 1));
|
|
10235
|
-
}
|
|
10236
|
-
}
|
|
10237
|
-
function hexStringEqualsUInt8(str, buf) {
|
|
10238
|
-
if (str.length !== buf.length * 2) {
|
|
10239
|
-
return false;
|
|
10240
|
-
}
|
|
10241
|
-
for (let i = 0; i < buf.length; i++) {
|
|
10242
|
-
const strIndex = i << 1;
|
|
10243
|
-
if (buf[i] !== hexCharCodesToInt(str.charCodeAt(strIndex), str.charCodeAt(strIndex + 1))) {
|
|
10244
|
-
return false;
|
|
10245
|
-
}
|
|
10246
|
-
}
|
|
10247
|
-
return true;
|
|
10248
|
-
}
|
|
10249
|
-
const alpha = 'a'.charCodeAt(0) - 10;
|
|
10250
|
-
const digit = '0'.charCodeAt(0);
|
|
10251
|
-
function getDigestHex(tmpBuffer, input, hashLength) {
|
|
10252
|
-
let p = 0;
|
|
10253
|
-
/* eslint-disable no-plusplus */
|
|
10254
|
-
for (let i = 0; i < hashLength; i++) {
|
|
10255
|
-
let nibble = input[i] >>> 4;
|
|
10256
|
-
tmpBuffer[p++] = nibble > 9 ? nibble + alpha : nibble + digit;
|
|
10257
|
-
nibble = input[i] & 0xF;
|
|
10258
|
-
tmpBuffer[p++] = nibble > 9 ? nibble + alpha : nibble + digit;
|
|
10259
|
-
}
|
|
10260
|
-
/* eslint-enable no-plusplus */
|
|
10261
|
-
return String.fromCharCode.apply(null, tmpBuffer);
|
|
10262
|
-
}
|
|
10263
|
-
const getUInt8Buffer = nodeBuffer !== null
|
|
10264
|
-
? (data) => {
|
|
10265
|
-
if (typeof data === 'string') {
|
|
10266
|
-
const buf = nodeBuffer.from(data, 'utf8');
|
|
10267
|
-
return new Uint8Array(buf.buffer, buf.byteOffset, buf.length);
|
|
10268
|
-
}
|
|
10269
|
-
if (nodeBuffer.isBuffer(data)) {
|
|
10270
|
-
return new Uint8Array(data.buffer, data.byteOffset, data.length);
|
|
10271
|
-
}
|
|
10272
|
-
if (ArrayBuffer.isView(data)) {
|
|
10273
|
-
return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
|
|
10274
|
-
}
|
|
10275
|
-
throw new Error('Invalid data type!');
|
|
10276
|
-
}
|
|
10277
|
-
: (data) => {
|
|
10278
|
-
if (typeof data === 'string') {
|
|
10279
|
-
return textEncoder.encode(data);
|
|
10280
|
-
}
|
|
10281
|
-
if (ArrayBuffer.isView(data)) {
|
|
10282
|
-
return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
|
|
10283
|
-
}
|
|
10284
|
-
throw new Error('Invalid data type!');
|
|
10285
|
-
};
|
|
10286
|
-
const base64Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
10287
|
-
const base64Lookup = new Uint8Array(256);
|
|
10288
|
-
for (let i = 0; i < base64Chars.length; i++) {
|
|
10289
|
-
base64Lookup[base64Chars.charCodeAt(i)] = i;
|
|
10290
|
-
}
|
|
10291
|
-
function getDecodeBase64Length(data) {
|
|
10292
|
-
let bufferLength = Math.floor(data.length * 0.75);
|
|
10293
|
-
const len = data.length;
|
|
10294
|
-
if (data[len - 1] === '=') {
|
|
10295
|
-
bufferLength -= 1;
|
|
10296
|
-
if (data[len - 2] === '=') {
|
|
10297
|
-
bufferLength -= 1;
|
|
10298
|
-
}
|
|
10299
|
-
}
|
|
10300
|
-
return bufferLength;
|
|
10301
|
-
}
|
|
10302
|
-
function decodeBase64(data) {
|
|
10303
|
-
const bufferLength = getDecodeBase64Length(data);
|
|
10304
|
-
const len = data.length;
|
|
10305
|
-
const bytes = new Uint8Array(bufferLength);
|
|
10306
|
-
let p = 0;
|
|
10307
|
-
for (let i = 0; i < len; i += 4) {
|
|
10308
|
-
const encoded1 = base64Lookup[data.charCodeAt(i)];
|
|
10309
|
-
const encoded2 = base64Lookup[data.charCodeAt(i + 1)];
|
|
10310
|
-
const encoded3 = base64Lookup[data.charCodeAt(i + 2)];
|
|
10311
|
-
const encoded4 = base64Lookup[data.charCodeAt(i + 3)];
|
|
10312
|
-
bytes[p] = (encoded1 << 2) | (encoded2 >> 4);
|
|
10313
|
-
p += 1;
|
|
10314
|
-
bytes[p] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
|
|
10315
|
-
p += 1;
|
|
10316
|
-
bytes[p] = ((encoded3 & 3) << 6) | (encoded4 & 63);
|
|
10317
|
-
p += 1;
|
|
10318
|
-
}
|
|
10319
|
-
return bytes;
|
|
10320
|
-
}
|
|
10321
|
-
|
|
10322
|
-
const MAX_HEAP = 16 * 1024;
|
|
10323
|
-
const WASM_FUNC_HASH_LENGTH = 4;
|
|
10324
|
-
const wasmMutex = new Mutex();
|
|
10325
|
-
const wasmModuleCache = new Map();
|
|
10326
|
-
function WASMInterface(binary, hashLength) {
|
|
10327
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
10328
|
-
let wasmInstance = null;
|
|
10329
|
-
let memoryView = null;
|
|
10330
|
-
let initialized = false;
|
|
10331
|
-
if (typeof WebAssembly === 'undefined') {
|
|
10332
|
-
throw new Error('WebAssembly is not supported in this environment!');
|
|
10333
|
-
}
|
|
10334
|
-
const writeMemory = (data, offset = 0) => {
|
|
10335
|
-
memoryView.set(data, offset);
|
|
10336
|
-
};
|
|
10337
|
-
const getMemory = () => memoryView;
|
|
10338
|
-
const getExports = () => wasmInstance.exports;
|
|
10339
|
-
const setMemorySize = (totalSize) => {
|
|
10340
|
-
wasmInstance.exports.Hash_SetMemorySize(totalSize);
|
|
10341
|
-
const arrayOffset = wasmInstance.exports.Hash_GetBuffer();
|
|
10342
|
-
const memoryBuffer = wasmInstance.exports.memory.buffer;
|
|
10343
|
-
memoryView = new Uint8Array(memoryBuffer, arrayOffset, totalSize);
|
|
10344
|
-
};
|
|
10345
|
-
const getStateSize = () => {
|
|
10346
|
-
const view = new DataView(wasmInstance.exports.memory.buffer);
|
|
10347
|
-
const stateSize = view.getUint32(wasmInstance.exports.STATE_SIZE, true);
|
|
10348
|
-
return stateSize;
|
|
10349
|
-
};
|
|
10350
|
-
const loadWASMPromise = wasmMutex.dispatch(() => __awaiter(this, void 0, void 0, function* () {
|
|
10351
|
-
if (!wasmModuleCache.has(binary.name)) {
|
|
10352
|
-
const asm = decodeBase64(binary.data);
|
|
10353
|
-
const promise = WebAssembly.compile(asm);
|
|
10354
|
-
wasmModuleCache.set(binary.name, promise);
|
|
10355
|
-
}
|
|
10356
|
-
const module = yield wasmModuleCache.get(binary.name);
|
|
10357
|
-
wasmInstance = yield WebAssembly.instantiate(module, {
|
|
10358
|
-
// env: {
|
|
10359
|
-
// emscripten_memcpy_big: (dest, src, num) => {
|
|
10360
|
-
// const memoryBuffer = wasmInstance.exports.memory.buffer;
|
|
10361
|
-
// const memView = new Uint8Array(memoryBuffer, 0);
|
|
10362
|
-
// memView.set(memView.subarray(src, src + num), dest);
|
|
10363
|
-
// },
|
|
10364
|
-
// print_memory: (offset, len) => {
|
|
10365
|
-
// const memoryBuffer = wasmInstance.exports.memory.buffer;
|
|
10366
|
-
// const memView = new Uint8Array(memoryBuffer, 0);
|
|
10367
|
-
// console.log('print_int32', memView.subarray(offset, offset + len));
|
|
10368
|
-
// },
|
|
10369
|
-
// },
|
|
10370
|
-
});
|
|
10371
|
-
// wasmInstance.exports._start();
|
|
10372
|
-
}));
|
|
10373
|
-
const setupInterface = () => __awaiter(this, void 0, void 0, function* () {
|
|
10374
|
-
if (!wasmInstance) {
|
|
10375
|
-
yield loadWASMPromise;
|
|
10376
|
-
}
|
|
10377
|
-
const arrayOffset = wasmInstance.exports.Hash_GetBuffer();
|
|
10378
|
-
const memoryBuffer = wasmInstance.exports.memory.buffer;
|
|
10379
|
-
memoryView = new Uint8Array(memoryBuffer, arrayOffset, MAX_HEAP);
|
|
10380
|
-
});
|
|
10381
|
-
const init = (bits = null) => {
|
|
10382
|
-
initialized = true;
|
|
10383
|
-
wasmInstance.exports.Hash_Init(bits);
|
|
10384
|
-
};
|
|
10385
|
-
const updateUInt8Array = (data) => {
|
|
10386
|
-
let read = 0;
|
|
10387
|
-
while (read < data.length) {
|
|
10388
|
-
const chunk = data.subarray(read, read + MAX_HEAP);
|
|
10389
|
-
read += chunk.length;
|
|
10390
|
-
memoryView.set(chunk);
|
|
10391
|
-
wasmInstance.exports.Hash_Update(chunk.length);
|
|
10392
|
-
}
|
|
10393
|
-
};
|
|
10394
|
-
const update = (data) => {
|
|
10395
|
-
if (!initialized) {
|
|
10396
|
-
throw new Error('update() called before init()');
|
|
10397
|
-
}
|
|
10398
|
-
const Uint8Buffer = getUInt8Buffer(data);
|
|
10399
|
-
updateUInt8Array(Uint8Buffer);
|
|
10400
|
-
};
|
|
10401
|
-
const digestChars = new Uint8Array(hashLength * 2);
|
|
10402
|
-
const digest = (outputType, padding = null) => {
|
|
10403
|
-
if (!initialized) {
|
|
10404
|
-
throw new Error('digest() called before init()');
|
|
10405
|
-
}
|
|
10406
|
-
initialized = false;
|
|
10407
|
-
wasmInstance.exports.Hash_Final(padding);
|
|
10408
|
-
if (outputType === 'binary') {
|
|
10409
|
-
// the data is copied to allow GC of the original memory object
|
|
10410
|
-
return memoryView.slice(0, hashLength);
|
|
10411
|
-
}
|
|
10412
|
-
return getDigestHex(digestChars, memoryView, hashLength);
|
|
10413
|
-
};
|
|
10414
|
-
const save = () => {
|
|
10415
|
-
if (!initialized) {
|
|
10416
|
-
throw new Error('save() can only be called after init() and before digest()');
|
|
10417
|
-
}
|
|
10418
|
-
const stateOffset = wasmInstance.exports.Hash_GetState();
|
|
10419
|
-
const stateLength = getStateSize();
|
|
10420
|
-
const memoryBuffer = wasmInstance.exports.memory.buffer;
|
|
10421
|
-
const internalState = new Uint8Array(memoryBuffer, stateOffset, stateLength);
|
|
10422
|
-
// prefix is 4 bytes from SHA1 hash of the WASM binary
|
|
10423
|
-
// it is used to detect incompatible internal states between different versions of hash-wasm
|
|
10424
|
-
const prefixedState = new Uint8Array(WASM_FUNC_HASH_LENGTH + stateLength);
|
|
10425
|
-
writeHexToUInt8(prefixedState, binary.hash);
|
|
10426
|
-
prefixedState.set(internalState, WASM_FUNC_HASH_LENGTH);
|
|
10427
|
-
return prefixedState;
|
|
10428
|
-
};
|
|
10429
|
-
const load = (state) => {
|
|
10430
|
-
if (!(state instanceof Uint8Array)) {
|
|
10431
|
-
throw new Error('load() expects an Uint8Array generated by save()');
|
|
10432
|
-
}
|
|
10433
|
-
const stateOffset = wasmInstance.exports.Hash_GetState();
|
|
10434
|
-
const stateLength = getStateSize();
|
|
10435
|
-
const overallLength = WASM_FUNC_HASH_LENGTH + stateLength;
|
|
10436
|
-
const memoryBuffer = wasmInstance.exports.memory.buffer;
|
|
10437
|
-
if (state.length !== overallLength) {
|
|
10438
|
-
throw new Error(`Bad state length (expected ${overallLength} bytes, got ${state.length})`);
|
|
10439
|
-
}
|
|
10440
|
-
if (!hexStringEqualsUInt8(binary.hash, state.subarray(0, WASM_FUNC_HASH_LENGTH))) {
|
|
10441
|
-
throw new Error('This state was written by an incompatible hash implementation');
|
|
10442
|
-
}
|
|
10443
|
-
const internalState = state.subarray(WASM_FUNC_HASH_LENGTH);
|
|
10444
|
-
new Uint8Array(memoryBuffer, stateOffset, stateLength).set(internalState);
|
|
10445
|
-
initialized = true;
|
|
10446
|
-
};
|
|
10447
|
-
const isDataShort = (data) => {
|
|
10448
|
-
if (typeof data === 'string') {
|
|
10449
|
-
// worst case is 4 bytes / char
|
|
10450
|
-
return data.length < MAX_HEAP / 4;
|
|
10451
|
-
}
|
|
10452
|
-
return data.byteLength < MAX_HEAP;
|
|
10453
|
-
};
|
|
10454
|
-
let canSimplify = isDataShort;
|
|
10455
|
-
switch (binary.name) {
|
|
10456
|
-
case 'argon2':
|
|
10457
|
-
case 'scrypt':
|
|
10458
|
-
canSimplify = () => true;
|
|
10459
|
-
break;
|
|
10460
|
-
case 'blake2b':
|
|
10461
|
-
case 'blake2s':
|
|
10462
|
-
// if there is a key at blake2 then cannot simplify
|
|
10463
|
-
canSimplify = (data, initParam) => initParam <= 512 && isDataShort(data);
|
|
10464
|
-
break;
|
|
10465
|
-
case 'blake3':
|
|
10466
|
-
// if there is a key at blake3 then cannot simplify
|
|
10467
|
-
canSimplify = (data, initParam) => initParam === 0 && isDataShort(data);
|
|
10468
|
-
break;
|
|
10469
|
-
case 'xxhash64': // cannot simplify
|
|
10470
|
-
case 'xxhash3':
|
|
10471
|
-
case 'xxhash128':
|
|
10472
|
-
canSimplify = () => false;
|
|
10473
|
-
break;
|
|
10474
|
-
}
|
|
10475
|
-
// shorthand for (init + update + digest) for better performance
|
|
10476
|
-
const calculate = (data, initParam = null, digestParam = null) => {
|
|
10477
|
-
if (!canSimplify(data, initParam)) {
|
|
10478
|
-
init(initParam);
|
|
10479
|
-
update(data);
|
|
10480
|
-
return digest('hex', digestParam);
|
|
10481
|
-
}
|
|
10482
|
-
const buffer = getUInt8Buffer(data);
|
|
10483
|
-
memoryView.set(buffer);
|
|
10484
|
-
wasmInstance.exports.Hash_Calculate(buffer.length, initParam, digestParam);
|
|
10485
|
-
return getDigestHex(digestChars, memoryView, hashLength);
|
|
10486
|
-
};
|
|
10487
|
-
yield setupInterface();
|
|
10488
|
-
return {
|
|
10489
|
-
getMemory,
|
|
10490
|
-
writeMemory,
|
|
10491
|
-
getExports,
|
|
10492
|
-
setMemorySize,
|
|
10493
|
-
init,
|
|
10494
|
-
update,
|
|
10495
|
-
digest,
|
|
10496
|
-
save,
|
|
10497
|
-
load,
|
|
10498
|
-
calculate,
|
|
10499
|
-
hashLength,
|
|
10500
|
-
};
|
|
10501
|
-
});
|
|
10502
|
-
}
|
|
10503
|
-
|
|
10504
|
-
new Mutex();
|
|
10505
|
-
|
|
10506
|
-
new Mutex();
|
|
10507
|
-
|
|
10508
|
-
new Mutex();
|
|
10509
|
-
|
|
10510
|
-
new Mutex();
|
|
10511
|
-
|
|
10512
|
-
new Mutex();
|
|
10513
|
-
|
|
10514
|
-
new Mutex();
|
|
10515
|
-
|
|
10516
|
-
new Mutex();
|
|
10517
|
-
|
|
10518
|
-
new Mutex();
|
|
10519
|
-
|
|
10520
|
-
new Mutex();
|
|
10521
|
-
|
|
10522
|
-
var name$b = "sha3";
|
|
10523
|
-
var data$b = "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";
|
|
10524
|
-
var hash$b = "ec266d91";
|
|
10525
|
-
var wasmJson$b = {
|
|
10526
|
-
name: name$b,
|
|
10527
|
-
data: data$b,
|
|
10528
|
-
hash: hash$b
|
|
10529
|
-
};
|
|
10530
|
-
|
|
10531
|
-
new Mutex();
|
|
10532
|
-
|
|
10533
|
-
new Mutex();
|
|
10534
|
-
function validateBits(bits) {
|
|
10535
|
-
if (![224, 256, 384, 512].includes(bits)) {
|
|
10536
|
-
return new Error('Invalid variant! Valid values: 224, 256, 384, 512');
|
|
10537
|
-
}
|
|
10538
|
-
return null;
|
|
10539
|
-
}
|
|
10540
|
-
/**
|
|
10541
|
-
* Creates a new Keccak hash instance
|
|
10542
|
-
* @param bits Number of output bits. Valid values: 224, 256, 384, 512
|
|
10543
|
-
*/
|
|
10544
|
-
function createKeccak(bits = 512) {
|
|
10545
|
-
if (validateBits(bits)) {
|
|
10546
|
-
return Promise.reject(validateBits(bits));
|
|
10547
|
-
}
|
|
10548
|
-
const outputSize = bits / 8;
|
|
10549
|
-
return WASMInterface(wasmJson$b, outputSize).then((wasm) => {
|
|
10550
|
-
wasm.init(bits);
|
|
10551
|
-
const obj = {
|
|
10552
|
-
init: () => { wasm.init(bits); return obj; },
|
|
10553
|
-
update: (data) => { wasm.update(data); return obj; },
|
|
10554
|
-
digest: (outputType) => wasm.digest(outputType, 0x01),
|
|
10555
|
-
save: () => wasm.save(),
|
|
10556
|
-
load: (data) => { wasm.load(data); return obj; },
|
|
10557
|
-
blockSize: 200 - 2 * outputSize,
|
|
10558
|
-
digestSize: outputSize,
|
|
10559
|
-
};
|
|
10560
|
-
return obj;
|
|
10561
|
-
});
|
|
10562
|
-
}
|
|
10563
|
-
|
|
10564
|
-
new Mutex();
|
|
10565
|
-
|
|
10566
|
-
new Mutex();
|
|
10567
|
-
|
|
10568
|
-
var name$9 = "sha512";
|
|
10569
|
-
var data$9 = "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";
|
|
10570
|
-
var hash$9 = "a5d1ca7c";
|
|
10571
|
-
var wasmJson$9 = {
|
|
10572
|
-
name: name$9,
|
|
10573
|
-
data: data$9,
|
|
10574
|
-
hash: hash$9
|
|
10575
|
-
};
|
|
10576
|
-
|
|
10577
|
-
new Mutex();
|
|
10578
|
-
|
|
10579
|
-
new Mutex();
|
|
10580
|
-
/**
|
|
10581
|
-
* Creates a new SHA-2 (SHA-512) hash instance
|
|
10582
|
-
*/
|
|
10583
|
-
function createSHA512() {
|
|
10584
|
-
return WASMInterface(wasmJson$9, 64).then((wasm) => {
|
|
10585
|
-
wasm.init(512);
|
|
10586
|
-
const obj = {
|
|
10587
|
-
init: () => { wasm.init(512); return obj; },
|
|
10588
|
-
update: (data) => { wasm.update(data); return obj; },
|
|
10589
|
-
digest: (outputType) => wasm.digest(outputType),
|
|
10590
|
-
save: () => wasm.save(),
|
|
10591
|
-
load: (data) => { wasm.load(data); return obj; },
|
|
10592
|
-
blockSize: 128,
|
|
10593
|
-
digestSize: 64,
|
|
10594
|
-
};
|
|
10595
|
-
return obj;
|
|
10596
|
-
});
|
|
10597
|
-
}
|
|
10598
|
-
|
|
10599
|
-
new Mutex();
|
|
10600
|
-
|
|
10601
|
-
new Mutex();
|
|
10602
|
-
|
|
10603
|
-
new Mutex();
|
|
10604
|
-
|
|
10605
|
-
new Mutex();
|
|
10606
|
-
|
|
10607
|
-
var name$4 = "ripemd160";
|
|
10608
|
-
var data$4 = "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";
|
|
10609
|
-
var hash$4 = "42f1de39";
|
|
10610
|
-
var wasmJson$4 = {
|
|
10611
|
-
name: name$4,
|
|
10612
|
-
data: data$4,
|
|
10613
|
-
hash: hash$4
|
|
10614
|
-
};
|
|
10615
|
-
|
|
10616
|
-
new Mutex();
|
|
10617
|
-
/**
|
|
10618
|
-
* Creates a new RIPEMD-160 hash instance
|
|
10619
|
-
*/
|
|
10620
|
-
function createRIPEMD160() {
|
|
10621
|
-
return WASMInterface(wasmJson$4, 20).then((wasm) => {
|
|
10622
|
-
wasm.init();
|
|
10623
|
-
const obj = {
|
|
10624
|
-
init: () => { wasm.init(); return obj; },
|
|
10625
|
-
update: (data) => { wasm.update(data); return obj; },
|
|
10626
|
-
digest: (outputType) => wasm.digest(outputType),
|
|
10627
|
-
save: () => wasm.save(),
|
|
10628
|
-
load: (data) => { wasm.load(data); return obj; },
|
|
10629
|
-
blockSize: 64,
|
|
10630
|
-
digestSize: 20,
|
|
10631
|
-
};
|
|
10632
|
-
return obj;
|
|
10633
|
-
});
|
|
10634
|
-
}
|
|
10635
|
-
|
|
10636
|
-
function calculateKeyBuffer(hasher, key) {
|
|
10637
|
-
const { blockSize } = hasher;
|
|
10638
|
-
const buf = getUInt8Buffer(key);
|
|
10639
|
-
if (buf.length > blockSize) {
|
|
10640
|
-
hasher.update(buf);
|
|
10641
|
-
const uintArr = hasher.digest('binary');
|
|
10642
|
-
hasher.init();
|
|
10643
|
-
return uintArr;
|
|
10644
|
-
}
|
|
10645
|
-
return new Uint8Array(buf.buffer, buf.byteOffset, buf.length);
|
|
10646
|
-
}
|
|
10647
|
-
function calculateHmac(hasher, key) {
|
|
10648
|
-
hasher.init();
|
|
10649
|
-
const { blockSize } = hasher;
|
|
10650
|
-
const keyBuf = calculateKeyBuffer(hasher, key);
|
|
10651
|
-
const keyBuffer = new Uint8Array(blockSize);
|
|
10652
|
-
keyBuffer.set(keyBuf);
|
|
10653
|
-
const opad = new Uint8Array(blockSize);
|
|
10654
|
-
for (let i = 0; i < blockSize; i++) {
|
|
10655
|
-
const v = keyBuffer[i];
|
|
10656
|
-
opad[i] = v ^ 0x5C;
|
|
10657
|
-
keyBuffer[i] = v ^ 0x36;
|
|
10658
|
-
}
|
|
10659
|
-
hasher.update(keyBuffer);
|
|
10660
|
-
const obj = {
|
|
10661
|
-
init: () => {
|
|
10662
|
-
hasher.init();
|
|
10663
|
-
hasher.update(keyBuffer);
|
|
10664
|
-
return obj;
|
|
10665
|
-
},
|
|
10666
|
-
update: (data) => {
|
|
10667
|
-
hasher.update(data);
|
|
10668
|
-
return obj;
|
|
10669
|
-
},
|
|
10670
|
-
digest: ((outputType) => {
|
|
10671
|
-
const uintArr = hasher.digest('binary');
|
|
10672
|
-
hasher.init();
|
|
10673
|
-
hasher.update(opad);
|
|
10674
|
-
hasher.update(uintArr);
|
|
10675
|
-
return hasher.digest(outputType);
|
|
10676
|
-
}),
|
|
10677
|
-
save: () => {
|
|
10678
|
-
throw new Error('save() not supported');
|
|
10679
|
-
},
|
|
10680
|
-
load: () => {
|
|
10681
|
-
throw new Error('load() not supported');
|
|
10682
|
-
},
|
|
10683
|
-
blockSize: hasher.blockSize,
|
|
10684
|
-
digestSize: hasher.digestSize,
|
|
10685
|
-
};
|
|
10686
|
-
return obj;
|
|
10687
|
-
}
|
|
10688
|
-
/**
|
|
10689
|
-
* Calculates HMAC hash
|
|
10690
|
-
* @param hash Hash algorithm to use. It has to be the return value of a function like createSHA1()
|
|
10691
|
-
* @param key Key (string, Buffer or TypedArray)
|
|
10692
|
-
*/
|
|
10693
|
-
function createHMAC(hash, key) {
|
|
10694
|
-
if (!hash || !hash.then) {
|
|
10695
|
-
throw new Error('Invalid hash function is provided! Usage: createHMAC(createMD5(), "key").');
|
|
10696
|
-
}
|
|
10697
|
-
return hash.then((hasher) => calculateHmac(hasher, key));
|
|
10698
|
-
}
|
|
10699
|
-
|
|
10700
|
-
new Mutex();
|
|
10701
|
-
|
|
10702
|
-
new Mutex();
|
|
10703
|
-
|
|
10704
|
-
const encode$1 = (version, privateKey, compressed) => {
|
|
9851
|
+
const encode = (version, privateKey, compressed) => {
|
|
10705
9852
|
if (privateKey.length !== 32)
|
|
10706
9853
|
throw new TypeError(`Invalid privateKey length: expected 32 got ${privateKey.length}`);
|
|
10707
9854
|
const uint8Array = new Uint8Array(compressed ? 34 : 33);
|
|
@@ -10712,7 +9859,7 @@ const encode$1 = (version, privateKey, compressed) => {
|
|
|
10712
9859
|
}
|
|
10713
9860
|
return base58check.encode(uint8Array);
|
|
10714
9861
|
};
|
|
10715
|
-
const decode
|
|
9862
|
+
const decode = async (wif, version) => {
|
|
10716
9863
|
wif = (await base58check.decode(wif)).data;
|
|
10717
9864
|
if (version && wif[0] !== version)
|
|
10718
9865
|
throw new Error('Invalid network version');
|
|
@@ -10727,7 +9874,7 @@ const decode$1 = async (wif, version) => {
|
|
|
10727
9874
|
compressed: wif.length === 33 ? false : true
|
|
10728
9875
|
};
|
|
10729
9876
|
};
|
|
10730
|
-
var wif = { encode
|
|
9877
|
+
var wif = { encode, decode };
|
|
10731
9878
|
|
|
10732
9879
|
// see https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt
|
|
10733
9880
|
var 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"];
|
|
@@ -10779,38 +9926,6 @@ class Mnemonic {
|
|
|
10779
9926
|
}
|
|
10780
9927
|
}
|
|
10781
9928
|
|
|
10782
|
-
const ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
|
|
10783
|
-
const ALPHABET_HEX = '0123456789ABCDEFGHIJKLMNOPQRSTUV';
|
|
10784
|
-
const base32 = base$1(ALPHABET);
|
|
10785
|
-
const base32Hex = base$1(ALPHABET_HEX);
|
|
10786
|
-
const decode = base32.decode;
|
|
10787
|
-
const decodeHex = base32Hex.decode;
|
|
10788
|
-
const encode = base32.encode;
|
|
10789
|
-
const encodeHex = base32Hex.encode;
|
|
10790
|
-
const isBase32 = (string, hex = false) => {
|
|
10791
|
-
try {
|
|
10792
|
-
if (hex)
|
|
10793
|
-
decodeHex(string);
|
|
10794
|
-
else
|
|
10795
|
-
decode(string);
|
|
10796
|
-
return true;
|
|
10797
|
-
}
|
|
10798
|
-
catch (e) {
|
|
10799
|
-
return false;
|
|
10800
|
-
}
|
|
10801
|
-
};
|
|
10802
|
-
const isBase32Hex = (string) => {
|
|
10803
|
-
return isBase32(string, true);
|
|
10804
|
-
};
|
|
10805
|
-
var index = {
|
|
10806
|
-
encode,
|
|
10807
|
-
decode,
|
|
10808
|
-
encodeHex,
|
|
10809
|
-
decodeHex,
|
|
10810
|
-
isBase32,
|
|
10811
|
-
isBase32Hex
|
|
10812
|
-
};
|
|
10813
|
-
|
|
10814
9929
|
class MultiSignature {
|
|
10815
9930
|
multiCodec;
|
|
10816
9931
|
version;
|
|
@@ -10866,8 +9981,8 @@ class MultiSignature {
|
|
|
10866
9981
|
if (!signature)
|
|
10867
9982
|
throw ReferenceError('signature undefined');
|
|
10868
9983
|
this.#multiSignature = typedArrayConcat([
|
|
10869
|
-
index$
|
|
10870
|
-
index$
|
|
9984
|
+
index$3.encode(this.version),
|
|
9985
|
+
index$3.encode(this.multiCodec),
|
|
10871
9986
|
signature
|
|
10872
9987
|
]);
|
|
10873
9988
|
return this.multiSignature;
|
|
@@ -10883,10 +9998,10 @@ class MultiSignature {
|
|
|
10883
9998
|
if (!this.multiSignature)
|
|
10884
9999
|
throw ReferenceError('multiSignature undefined');
|
|
10885
10000
|
let buffer = this.multiSignature;
|
|
10886
|
-
const version = index$
|
|
10887
|
-
buffer = buffer.subarray(index$
|
|
10888
|
-
const codec = index$
|
|
10889
|
-
buffer = buffer.subarray(index$
|
|
10001
|
+
const version = index$3.decode(buffer);
|
|
10002
|
+
buffer = buffer.subarray(index$3.decode.bytes);
|
|
10003
|
+
const codec = index$3.decode(buffer);
|
|
10004
|
+
buffer = buffer.subarray(index$3.decode.bytes);
|
|
10890
10005
|
const signature = buffer.subarray(0, buffer.length);
|
|
10891
10006
|
if (version !== this.version)
|
|
10892
10007
|
throw TypeError('Invalid version');
|
|
@@ -10912,16 +10027,16 @@ class MultiSignature {
|
|
|
10912
10027
|
return this.decode(base58$1.decode(string));
|
|
10913
10028
|
}
|
|
10914
10029
|
toBs32() {
|
|
10915
|
-
return index.encode(this.multiSignature);
|
|
10030
|
+
return index$4.encode(this.multiSignature);
|
|
10916
10031
|
}
|
|
10917
10032
|
fromBs32(string) {
|
|
10918
|
-
return this.decode(index.decode(string));
|
|
10033
|
+
return this.decode(index$4.decode(string));
|
|
10919
10034
|
}
|
|
10920
10035
|
toBs32Hex() {
|
|
10921
|
-
return index.encodeHex(this.multiSignature);
|
|
10036
|
+
return index$4.encodeHex(this.multiSignature);
|
|
10922
10037
|
}
|
|
10923
10038
|
fromBs32Hex(string) {
|
|
10924
|
-
return this.decode(index.decodeHex(string));
|
|
10039
|
+
return this.decode(index$4.decodeHex(string));
|
|
10925
10040
|
}
|
|
10926
10041
|
toBs58Hex() {
|
|
10927
10042
|
return base58$1.encodeHex(this.multiSignature);
|
|
@@ -11124,7 +10239,7 @@ class HdNode {
|
|
|
11124
10239
|
else {
|
|
11125
10240
|
set.push(new Uint8Array(this.publicKey));
|
|
11126
10241
|
}
|
|
11127
|
-
return base58check.encode(
|
|
10242
|
+
return base58check.encode(index$1(set));
|
|
11128
10243
|
}
|
|
11129
10244
|
toWIF() {
|
|
11130
10245
|
if (!this.#privateKey)
|
|
@@ -11140,14 +10255,14 @@ class HdNode {
|
|
|
11140
10255
|
if (this.isNeutered)
|
|
11141
10256
|
throw new TypeError('Missing private key for hardened child key');
|
|
11142
10257
|
// data = 0x00 || ser256(kpar) || ser32(index)
|
|
11143
|
-
data =
|
|
10258
|
+
data = index$1([
|
|
11144
10259
|
new TextEncoder().encode('0'),
|
|
11145
10260
|
this.privateKey,
|
|
11146
10261
|
new TextEncoder().encode(index.toString())
|
|
11147
10262
|
]);
|
|
11148
10263
|
}
|
|
11149
10264
|
else {
|
|
11150
|
-
data =
|
|
10265
|
+
data = index$1([
|
|
11151
10266
|
this.publicKey,
|
|
11152
10267
|
new TextEncoder().encode(index.toString())
|
|
11153
10268
|
]);
|
|
@@ -11211,7 +10326,7 @@ class HdNode {
|
|
|
11211
10326
|
let buffer = (await base58check.decode(string)).data;
|
|
11212
10327
|
network = network || networks.leofcoin;
|
|
11213
10328
|
// 4 bytes: version bytes
|
|
11214
|
-
let [version, depth, parentFingerprint, index, chainCode, k, privateKey] =
|
|
10329
|
+
let [version, depth, parentFingerprint, index, chainCode, k, privateKey] = index$2(buffer);
|
|
11215
10330
|
version = Number(new TextDecoder().decode(version));
|
|
11216
10331
|
depth = Number(new TextDecoder().decode(depth));
|
|
11217
10332
|
parentFingerprint = Number(new TextDecoder().decode(parentFingerprint));
|
|
@@ -11381,7 +10496,7 @@ class MultiWallet extends HDWallet {
|
|
|
11381
10496
|
super(network, hdnode);
|
|
11382
10497
|
}
|
|
11383
10498
|
get id() {
|
|
11384
|
-
return base58check.encode(
|
|
10499
|
+
return base58check.encode(index$1([
|
|
11385
10500
|
new TextEncoder().encode(this.version.toString()),
|
|
11386
10501
|
this.account(0).hdnode.neutered.publicKey
|
|
11387
10502
|
]));
|
|
@@ -11394,8 +10509,8 @@ class MultiWallet extends HDWallet {
|
|
|
11394
10509
|
}
|
|
11395
10510
|
async fromId(id) {
|
|
11396
10511
|
let buffer = (await base58check.decode(id)).data;
|
|
11397
|
-
index$
|
|
11398
|
-
buffer = buffer.slice(index$
|
|
10512
|
+
index$3.decode(buffer);
|
|
10513
|
+
buffer = buffer.slice(index$3.decode.bytes);
|
|
11399
10514
|
this.fromPublicKey(buffer, null, this.networkName);
|
|
11400
10515
|
}
|
|
11401
10516
|
async lock(multiWIF) {
|
|
@@ -11411,7 +10526,7 @@ class MultiWallet extends HDWallet {
|
|
|
11411
10526
|
this.locked = false;
|
|
11412
10527
|
}
|
|
11413
10528
|
fromMultiWif(string) {
|
|
11414
|
-
const { version, codec, privateKey } = index
|
|
10529
|
+
const { version, codec, privateKey } = index.decode(string);
|
|
11415
10530
|
this.network = Object.values(networks).reduce((p, c) => {
|
|
11416
10531
|
if (c.multiCodec === codec)
|
|
11417
10532
|
return c;
|
|
@@ -11425,7 +10540,7 @@ class MultiWallet extends HDWallet {
|
|
|
11425
10540
|
return this.fromPrivateKey(privateKey, undefined, this.network);
|
|
11426
10541
|
}
|
|
11427
10542
|
toMultiWif() {
|
|
11428
|
-
return index
|
|
10543
|
+
return index.encode(this.network.version, this.network.multiCodec, this.privateKey);
|
|
11429
10544
|
}
|
|
11430
10545
|
sign(hash) {
|
|
11431
10546
|
return new MultiSignature(this.version, this.network.multiCodec)
|