@rabby-wallet/eth-hd-keyring 4.3.0 → 4.3.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/dist/index.js CHANGED
@@ -100,27 +100,20 @@ var require_slip39_helper = __commonJS({
100
100
  var ROUND_COUNT = 4;
101
101
  var DIGEST_INDEX = 254;
102
102
  var SECRET_INDEX = 255;
103
- String.prototype.slip39EncodeHex = function() {
103
+ var slip39EncodeHex = function(str) {
104
104
  let bytes = [];
105
- for (let i = 0; i < this.length; ++i) {
106
- bytes.push(this.charCodeAt(i));
105
+ for (let i = 0; i < str.length; ++i) {
106
+ bytes.push(str.charCodeAt(i));
107
107
  }
108
108
  return bytes;
109
109
  };
110
- Array.prototype.slip39DecodeHex = function() {
111
- let str = [];
112
- const hex = this.toString().split(",");
113
- for (let i = 0; i < hex.length; i++) {
114
- str.push(String.fromCharCode(hex[i]));
115
- }
116
- return str.toString().replace(/,/g, "");
117
- };
118
- Array.prototype.slip39Generate = function(m, v = (_) => _) {
119
- let n = m || this.length;
110
+ var slip39Generate = function(m, v = (_) => _) {
111
+ let n = m;
112
+ const arr = [];
120
113
  for (let i = 0; i < n; i++) {
121
- this[i] = v(i);
114
+ arr[i] = v(i);
122
115
  }
123
- return this;
116
+ return arr;
124
117
  };
125
118
  var BIGINT_WORD_BITS = BigInt(8);
126
119
  function decodeBigInt(bytes) {
@@ -186,9 +179,9 @@ var require_slip39_helper = __commonJS({
186
179
  }
187
180
  let IL = masterSecret.slice().slice(0, masterSecret.length / 2);
188
181
  let IR = masterSecret.slice().slice(masterSecret.length / 2);
189
- const pwd = passphrase.slip39EncodeHex();
182
+ const pwd = slip39EncodeHex(passphrase);
190
183
  const salt = getSalt(identifier, extendableBackupFlag);
191
- let range = Array().slip39Generate(ROUND_COUNT);
184
+ let range = slip39Generate(ROUND_COUNT);
192
185
  range = encrypt ? range : range.reverse();
193
186
  range.forEach((round) => {
194
187
  const f = roundFunction(round, pwd, iterationExponent, salt, IR);
@@ -222,7 +215,7 @@ var require_slip39_helper = __commonJS({
222
215
  );
223
216
  }
224
217
  if (threshold === 1) {
225
- return Array().slip39Generate(shareCount, () => sharedSecret);
218
+ return slip39Generate(shareCount, () => sharedSecret);
226
219
  }
227
220
  const randomShareCount = threshold - 2;
228
221
  const randomPart = randomBytes(sharedSecret.length - DIGEST_LENGTH);
@@ -230,7 +223,7 @@ var require_slip39_helper = __commonJS({
230
223
  let baseShares = /* @__PURE__ */ new Map();
231
224
  let shares = [];
232
225
  if (randomShareCount) {
233
- shares = Array().slip39Generate(
226
+ shares = slip39Generate(
234
227
  randomShareCount,
235
228
  () => randomBytes(sharedSecret.length)
236
229
  );
@@ -259,13 +252,13 @@ var require_slip39_helper = __commonJS({
259
252
  `Invalid padding in mnemonic or insufficient length of mnemonics (${a.length} or ${b.length})`
260
253
  );
261
254
  }
262
- return Array().slip39Generate(a.length, (i) => a[i] ^ b[i]);
255
+ return slip39Generate(a.length, (i) => a[i] ^ b[i]);
263
256
  }
264
257
  function getSalt(identifier, extendableBackupFlag) {
265
258
  if (extendableBackupFlag) {
266
259
  return [];
267
260
  } else {
268
- const salt = CUSTOMIZATION_STRING_NON_EXTENDABLE.slip39EncodeHex();
261
+ const salt = slip39EncodeHex(CUSTOMIZATION_STRING_NON_EXTENDABLE);
269
262
  return salt.concat(identifier);
270
263
  }
271
264
  }
@@ -289,7 +282,7 @@ var require_slip39_helper = __commonJS({
289
282
  shares.forEach((v, k) => {
290
283
  logProd = logProd + LOG_TABLE[k ^ x];
291
284
  });
292
- let results = Array().slip39Generate(
285
+ let results = slip39Generate(
293
286
  sharesValueLengths.values().next().value,
294
287
  () => 0
295
288
  );
@@ -338,14 +331,14 @@ var require_slip39_helper = __commonJS({
338
331
  return extendableBackupFlag ? CUSTOMIZATION_STRING_EXTENDABLE : CUSTOMIZATION_STRING_NON_EXTENDABLE;
339
332
  }
340
333
  function rs1024CreateChecksum(data, extendableBackupFlag) {
341
- const values = get_customization_string(extendableBackupFlag).slip39EncodeHex().concat(data).concat(Array().slip39Generate(CHECKSUM_WORDS_LENGTH, () => 0));
334
+ const values = slip39EncodeHex(get_customization_string(extendableBackupFlag)).concat(data).concat(slip39Generate(CHECKSUM_WORDS_LENGTH, () => 0));
342
335
  const polymod = rs1024Polymod(values) ^ 1;
343
336
  const result = Array().slip39Generate(CHECKSUM_WORDS_LENGTH, (i) => polymod >> 10 * i & 1023).reverse();
344
337
  return result;
345
338
  }
346
339
  function rs1024VerifyChecksum(data, extendableBackupFlag) {
347
340
  return rs1024Polymod(
348
- get_customization_string(extendableBackupFlag).slip39EncodeHex().concat(data)
341
+ slip39EncodeHex(get_customization_string(extendableBackupFlag)).concat(data)
349
342
  ) === 1;
350
343
  }
351
344
  function intFromIndices(indices) {
@@ -358,7 +351,7 @@ var require_slip39_helper = __commonJS({
358
351
  }
359
352
  function intToIndices(value, length, bits) {
360
353
  const mask = BigInt((1 << bits) - 1);
361
- const result = Array().slip39Generate(
354
+ const result = slip39Generate(
362
355
  length,
363
356
  (i) => parseInt(value >> BigInt(i) * BigInt(bits) & mask, 10)
364
357
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rabby-wallet/eth-hd-keyring",
3
- "version": "4.3.0",
3
+ "version": "4.3.1",
4
4
  "description": "A simple standard interface for a seed phrase generated set of Ethereum accounts.",
5
5
  "keywords": [
6
6
  "ethereum",
@@ -14,13 +14,44 @@ index aff1c16..bd3ba54 100644
14
14
  this.validatePath(path);
15
15
 
16
16
  diff --git a/node_modules/slip39/src/slip39_helper.js b/node_modules/slip39/src/slip39_helper.js
17
- index 8bcb956..3bf2210 100644
17
+ index 8bcb956..e9b86e4 100644
18
18
  --- a/node_modules/slip39/src/slip39_helper.js
19
19
  +++ b/node_modules/slip39/src/slip39_helper.js
20
- @@ -100,21 +100,6 @@ Array.prototype.slip39Generate = function (m, v = (_) => _) {
21
- return this;
20
+ @@ -75,44 +75,21 @@ const SECRET_INDEX = 255;
21
+ //
22
+ // Helper functions for SLIP39 implementation.
23
+ //
24
+ -String.prototype.slip39EncodeHex = function () {
25
+ +const slip39EncodeHex = function (str) {
26
+ let bytes = [];
27
+ - for (let i = 0; i < this.length; ++i) {
28
+ - bytes.push(this.charCodeAt(i));
29
+ + for (let i = 0; i < str.length; ++i) {
30
+ + bytes.push(str.charCodeAt(i));
31
+ }
32
+ return bytes;
22
33
  };
23
34
 
35
+ -Array.prototype.slip39DecodeHex = function () {
36
+ - let str = [];
37
+ - const hex = this.toString().split(",");
38
+ - for (let i = 0; i < hex.length; i++) {
39
+ - str.push(String.fromCharCode(hex[i]));
40
+ - }
41
+ - return str.toString().replace(/,/g, "");
42
+ -};
43
+ -
44
+ -Array.prototype.slip39Generate = function (m, v = (_) => _) {
45
+ - let n = m || this.length;
46
+ +const slip39Generate = function (m, v = (_) => _) {
47
+ + let n = m;
48
+ + const arr = []
49
+ for (let i = 0; i < n; i++) {
50
+ - this[i] = v(i);
51
+ - }
52
+ - return this;
53
+ -};
54
+ -
24
55
  -Array.prototype.toHexString = function () {
25
56
  - return Array.prototype.map
26
57
  - .call(this, function (byte) {
@@ -32,14 +63,105 @@ index 8bcb956..3bf2210 100644
32
63
  -Array.prototype.toByteArray = function (hexString) {
33
64
  - for (let i = 0; i < hexString.length; i = i + 2) {
34
65
  - this.push(parseInt(hexString.substr(i, 2), 16));
35
- - }
66
+ + arr[i] = v(i);
67
+ }
36
68
  - return this;
37
- -};
38
- -
69
+ + return arr;
70
+ };
71
+
39
72
  const BIGINT_WORD_BITS = BigInt(8);
73
+ @@ -208,11 +185,11 @@ function crypt(
74
+ let IL = masterSecret.slice().slice(0, masterSecret.length / 2);
75
+ let IR = masterSecret.slice().slice(masterSecret.length / 2);
76
+
77
+ - const pwd = passphrase.slip39EncodeHex();
78
+ + const pwd = slip39EncodeHex(passphrase);
79
+
80
+ const salt = getSalt(identifier, extendableBackupFlag);
81
+
82
+ - let range = Array().slip39Generate(ROUND_COUNT);
83
+ + let range = slip39Generate(ROUND_COUNT);
84
+ range = encrypt ? range : range.reverse();
85
+
86
+ range.forEach((round) => {
87
+ @@ -254,7 +231,7 @@ function splitSecret(threshold, shareCount, sharedSecret) {
88
+ }
89
+ // If the threshold is 1, then the digest of the shared secret is not used.
90
+ if (threshold === 1) {
91
+ - return Array().slip39Generate(shareCount, () => sharedSecret);
92
+ + return slip39Generate(shareCount, () => sharedSecret);
93
+ }
94
+
95
+ const randomShareCount = threshold - 2;
96
+ @@ -265,7 +242,7 @@ function splitSecret(threshold, shareCount, sharedSecret) {
97
+ let baseShares = new Map();
98
+ let shares = [];
99
+ if (randomShareCount) {
100
+ - shares = Array().slip39Generate(randomShareCount, () =>
101
+ + shares = slip39Generate(randomShareCount, () =>
102
+ randomBytes(sharedSecret.length),
103
+ );
104
+ shares.forEach((item, idx) => {
105
+ @@ -302,14 +279,14 @@ function xor(a, b) {
106
+ `Invalid padding in mnemonic or insufficient length of mnemonics (${a.length} or ${b.length})`,
107
+ );
108
+ }
109
+ - return Array().slip39Generate(a.length, (i) => a[i] ^ b[i]);
110
+ + return slip39Generate(a.length, (i) => a[i] ^ b[i]);
111
+ }
112
+
113
+ function getSalt(identifier, extendableBackupFlag) {
114
+ if (extendableBackupFlag) {
115
+ return [];
116
+ } else {
117
+ - const salt = CUSTOMIZATION_STRING_NON_EXTENDABLE.slip39EncodeHex();
118
+ + const salt = slip39EncodeHex(CUSTOMIZATION_STRING_NON_EXTENDABLE);
119
+ return salt.concat(identifier);
120
+ }
121
+ }
122
+ @@ -340,7 +317,7 @@ function interpolate(shares, x) {
123
+ logProd = logProd + LOG_TABLE[k ^ x];
124
+ });
125
+
126
+ - let results = Array().slip39Generate(
127
+ + let results = slip39Generate(
128
+ sharesValueLengths.values().next().value,
129
+ () => 0,
130
+ );
131
+ @@ -400,10 +377,9 @@ function get_customization_string(extendableBackupFlag) {
132
+ }
133
+
134
+ function rs1024CreateChecksum(data, extendableBackupFlag) {
135
+ - const values = get_customization_string(extendableBackupFlag)
136
+ - .slip39EncodeHex()
137
+ + const values = slip39EncodeHex(get_customization_string(extendableBackupFlag))
138
+ .concat(data)
139
+ - .concat(Array().slip39Generate(CHECKSUM_WORDS_LENGTH, () => 0));
140
+ + .concat(slip39Generate(CHECKSUM_WORDS_LENGTH, () => 0));
141
+ const polymod = rs1024Polymod(values) ^ 1;
142
+ const result = Array()
143
+ .slip39Generate(CHECKSUM_WORDS_LENGTH, (i) => (polymod >> (10 * i)) & 1023)
144
+ @@ -414,9 +390,7 @@ function rs1024CreateChecksum(data, extendableBackupFlag) {
40
145
 
41
- function decodeBigInt(bytes) {
42
- @@ -1886,4 +1871,6 @@ exports = module.exports = {
146
+ function rs1024VerifyChecksum(data, extendableBackupFlag) {
147
+ return (
148
+ - rs1024Polymod(
149
+ - get_customization_string(extendableBackupFlag)
150
+ - .slip39EncodeHex()
151
+ + rs1024Polymod(slip39EncodeHex(get_customization_string(extendableBackupFlag))
152
+ .concat(data),
153
+ ) === 1
154
+ );
155
+ @@ -440,7 +414,7 @@ function intFromIndices(indices) {
156
+ //
157
+ function intToIndices(value, length, bits) {
158
+ const mask = BigInt((1 << bits) - 1);
159
+ - const result = Array().slip39Generate(length, (i) =>
160
+ + const result = slip39Generate(length, (i) =>
161
+ parseInt((value >> (BigInt(i) * BigInt(bits))) & mask, 10),
162
+ );
163
+ return result.reverse();
164
+ @@ -1886,4 +1860,6 @@ exports = module.exports = {
43
165
  crypt,
44
166
  bitsToBytes,
45
167
  WORD_LIST,