jcc_wallet 3.0.2 → 4.0.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.
Files changed (96) hide show
  1. package/dist/jcc-wallet.min.js +24 -45
  2. package/lib/{constant/index.js → constant.js} +8 -8
  3. package/lib/constant.js.map +1 -0
  4. package/lib/hd/constant.js +4 -4
  5. package/lib/hd/constant.js.map +1 -1
  6. package/lib/hd/eos.plugin.js +36 -39
  7. package/lib/hd/eos.plugin.js.map +1 -1
  8. package/lib/hd/ethereum.plugin.d.ts +1 -0
  9. package/lib/hd/ethereum.plugin.js +86 -67
  10. package/lib/hd/ethereum.plugin.js.map +1 -1
  11. package/lib/hd/index.d.ts +1 -1
  12. package/lib/hd/index.js +167 -179
  13. package/lib/hd/index.js.map +1 -1
  14. package/lib/hd/plugins.d.ts +9 -0
  15. package/lib/hd/plugins.js +26 -22
  16. package/lib/hd/plugins.js.map +1 -1
  17. package/lib/hd/swtc.plugin.d.ts +1 -5
  18. package/lib/hd/swtc.plugin.js +74 -60
  19. package/lib/hd/swtc.plugin.js.map +1 -1
  20. package/lib/hd/tron.plugin.js +28 -33
  21. package/lib/hd/tron.plugin.js.map +1 -1
  22. package/lib/index.d.ts +3 -4
  23. package/lib/index.js +5 -8
  24. package/lib/index.js.map +1 -1
  25. package/lib/{jingchangWallet/index.d.ts → jingchangWallet.d.ts} +1 -1
  26. package/lib/jingchangWallet.js +531 -0
  27. package/lib/jingchangWallet.js.map +1 -0
  28. package/lib/minify-ethereumjs-util/account.d.ts +1 -0
  29. package/lib/minify-ethereumjs-util/account.js +22 -0
  30. package/lib/minify-ethereumjs-util/account.js.map +1 -0
  31. package/lib/minify-ethereumjs-util/bytes.d.ts +7 -0
  32. package/lib/minify-ethereumjs-util/bytes.js +100 -0
  33. package/lib/minify-ethereumjs-util/bytes.js.map +1 -0
  34. package/lib/minify-ethereumjs-util/constants.d.ts +4 -0
  35. package/lib/minify-ethereumjs-util/constants.js +9 -0
  36. package/lib/minify-ethereumjs-util/constants.js.map +1 -0
  37. package/lib/minify-ethereumjs-util/helper.d.ts +5 -0
  38. package/lib/minify-ethereumjs-util/helper.js +16 -0
  39. package/lib/minify-ethereumjs-util/helper.js.map +1 -0
  40. package/lib/minify-ethereumjs-util/internal.d.ts +8 -0
  41. package/lib/minify-ethereumjs-util/internal.js +33 -0
  42. package/lib/minify-ethereumjs-util/internal.js.map +1 -0
  43. package/lib/minify-ethereumjs-util/signature.d.ts +13 -0
  44. package/lib/minify-ethereumjs-util/signature.js +45 -0
  45. package/lib/minify-ethereumjs-util/signature.js.map +1 -0
  46. package/lib/minify-swtc-keypair/address-codec.d.ts +16 -0
  47. package/lib/minify-swtc-keypair/address-codec.js +166 -0
  48. package/lib/minify-swtc-keypair/address-codec.js.map +1 -0
  49. package/lib/minify-swtc-keypair/index.d.ts +25 -0
  50. package/lib/minify-swtc-keypair/index.js +178 -0
  51. package/lib/minify-swtc-keypair/index.js.map +1 -0
  52. package/lib/minify-swtc-keypair/sha512.d.ts +9 -0
  53. package/lib/minify-swtc-keypair/sha512.js +33 -0
  54. package/lib/minify-swtc-keypair/sha512.js.map +1 -0
  55. package/lib/minify-swtc-keypair/utils.d.ts +13 -0
  56. package/lib/minify-swtc-keypair/utils.js +63 -0
  57. package/lib/minify-swtc-keypair/utils.js.map +1 -0
  58. package/lib/minify-tron/address.d.ts +6 -0
  59. package/lib/minify-tron/address.js +11 -0
  60. package/lib/minify-tron/address.js.map +1 -0
  61. package/lib/minify-tron/base58.d.ts +2 -0
  62. package/lib/minify-tron/base58.js +67 -0
  63. package/lib/minify-tron/base58.js.map +1 -0
  64. package/lib/minify-tron/bytes.d.ts +2 -0
  65. package/lib/minify-tron/bytes.js +23 -0
  66. package/lib/minify-tron/bytes.js.map +1 -0
  67. package/lib/minify-tron/code.d.ts +3 -0
  68. package/lib/minify-tron/code.js +56 -0
  69. package/lib/minify-tron/code.js.map +1 -0
  70. package/lib/minify-tron/crypto.d.ts +7 -0
  71. package/lib/minify-tron/crypto.js +83 -0
  72. package/lib/minify-tron/crypto.js.map +1 -0
  73. package/lib/minify-tron/message.d.ts +4 -0
  74. package/lib/minify-tron/message.js +42 -0
  75. package/lib/minify-tron/message.js.map +1 -0
  76. package/lib/{types/index.d.ts → types.d.ts} +16 -3
  77. package/lib/types.js +16 -0
  78. package/lib/types.js.map +1 -0
  79. package/lib/util/index.js +40 -30
  80. package/lib/util/index.js.map +1 -1
  81. package/package.json +21 -16
  82. package/lib/constant/index.js.map +0 -1
  83. package/lib/eth/index.d.ts +0 -37
  84. package/lib/eth/index.js +0 -98
  85. package/lib/eth/index.js.map +0 -1
  86. package/lib/jingchangWallet/index.js +0 -713
  87. package/lib/jingchangWallet/index.js.map +0 -1
  88. package/lib/moac/index.d.ts +0 -29
  89. package/lib/moac/index.js +0 -58
  90. package/lib/moac/index.js.map +0 -1
  91. package/lib/types/index.js +0 -3
  92. package/lib/types/index.js.map +0 -1
  93. package/lib/x-wallet/index.d.ts +0 -22
  94. package/lib/x-wallet/index.js +0 -86
  95. package/lib/x-wallet/index.js.map +0 -1
  96. /package/lib/{constant/index.d.ts → constant.d.ts} +0 -0
@@ -0,0 +1,531 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const assert_1 = __importDefault(require("assert"));
7
+ const clone_deep_1 = __importDefault(require("clone-deep"));
8
+ const sha256_1 = require("@noble/hashes/sha256");
9
+ const eccrypto_1 = __importDefault(require("eccrypto"));
10
+ const jcc_common_1 = require("jcc_common");
11
+ const lockr_1 = __importDefault(require("lockr"));
12
+ const minify_swtc_keypair_1 = require("./minify-swtc-keypair");
13
+ const constant_1 = require("./constant");
14
+ const plugins_1 = require("./hd/plugins");
15
+ const util_1 = require("./util");
16
+ const types_1 = require("./types");
17
+ lockr_1.default.prefix = "jingchang_";
18
+ /**
19
+ * api of jingchang wallet
20
+ *
21
+ * @export
22
+ * @class JingchangWallet
23
+ */
24
+ class JingchangWallet {
25
+ /**
26
+ * Creates an instance of JingchangWallet.
27
+ * @param {IJingchangWalletModel} wallet
28
+ * @param {boolean} [multiple=false] if the value is true, support save multiple wallet keystore for each type, otherwise only support one.
29
+ * @param {boolean} [samePassword=true] if the value is true, use the default swt keystore's password which be generated
30
+ * in the beginning as password for other type.
31
+ * @memberof JingchangWallet
32
+ */
33
+ constructor(wallet, multiple = false, samePassword = true) {
34
+ this._multiple = multiple;
35
+ this._jingchangWallet = wallet;
36
+ this._samePassword = samePassword;
37
+ }
38
+ /**
39
+ * check jingchang wallet is valid or not
40
+ *
41
+ * @static
42
+ * @param {*} wallet
43
+ * @returns {boolean} return true if valid.
44
+ * @memberof JingchangWallet
45
+ */
46
+ static isValid(wallet) {
47
+ try {
48
+ if (typeof wallet === "string") {
49
+ wallet = JSON.parse(wallet);
50
+ }
51
+ const walletsNotEmpty = !(0, jcc_common_1.isEmptyObject)(wallet) && Array.isArray(wallet.wallets) && wallet.wallets.length > 0;
52
+ return Boolean(walletsNotEmpty && wallet.contact && wallet.id && wallet.version);
53
+ }
54
+ catch (error) {
55
+ return false;
56
+ }
57
+ }
58
+ /**
59
+ * create a jingchang wallet
60
+ *
61
+ * @static
62
+ * @param {string} password password for keystore
63
+ * @param {string} [secret] swtc chain's secret
64
+ * @param {string} [alias] wallet name
65
+ * @returns {Promise<IJingchangWalletModel>} resolve jingchang wallet if success.
66
+ * @memberof JingchangWallet
67
+ */
68
+ static generate(password, secret, alias) {
69
+ return new Promise((resolve, reject) => {
70
+ const keypairs = {};
71
+ if (secret === undefined) {
72
+ const wallet = plugins_1.jtWallet.createWallet();
73
+ secret = wallet.secret;
74
+ keypairs.address = wallet.address;
75
+ }
76
+ else {
77
+ if (!plugins_1.jtWallet.isValidSecret(secret)) {
78
+ return reject(new Error(constant_1.SECRET_IS_INVALID));
79
+ }
80
+ keypairs.address = plugins_1.jtWallet.getAddress(secret);
81
+ }
82
+ keypairs.secret = secret;
83
+ keypairs.type = "swt";
84
+ keypairs.default = true;
85
+ keypairs.alias = alias || "swt wallet";
86
+ const jcWallet = {};
87
+ const walletObj = (0, util_1.encryptWallet)(password, keypairs);
88
+ jcWallet.version = JingchangWallet.version;
89
+ jcWallet.id = JingchangWallet._walletID;
90
+ jcWallet.contact = {};
91
+ jcWallet.wallets = [];
92
+ jcWallet.wallets.push(walletObj);
93
+ return resolve(jcWallet);
94
+ });
95
+ }
96
+ /**
97
+ * get jingchang wallet from local storage
98
+ *
99
+ * @static
100
+ * @returns {(IJingchangWalletModel | null)} return jingchang wallet or null
101
+ * @memberof JingchangWallet
102
+ */
103
+ static get() {
104
+ const jcWallet = lockr_1.default.get(JingchangWallet._walletID);
105
+ if (!JingchangWallet.isValid(jcWallet)) {
106
+ return null;
107
+ }
108
+ return jcWallet;
109
+ }
110
+ /**
111
+ * clear jingchang wallet from local storage
112
+ *
113
+ * @static
114
+ * @memberof JingchangWallet
115
+ */
116
+ static clear() {
117
+ lockr_1.default.set(JingchangWallet._walletID, {});
118
+ }
119
+ /**
120
+ * save jingchang wallet to local storage.
121
+ *
122
+ * @static
123
+ * @param {IJingchangWalletModel} wallet
124
+ * @memberof JingchangWallet
125
+ */
126
+ static save(wallet) {
127
+ lockr_1.default.set(JingchangWallet._walletID, wallet);
128
+ }
129
+ /**
130
+ * derive key pair with secret
131
+ *
132
+ * @static
133
+ * @param {string} secret
134
+ * @param {string} [chain="swt"]
135
+ * @returns {IKeyPair} for privateKey, it's length should be 64 when call `decryptWithPrivateKey`, but the origin derived
136
+ * privateKey's length is 66 that contains prefix `00` for `secp256k1` or `ED` for `ed25519`, so removed it.
137
+ * @memberof JingchangWallet
138
+ */
139
+ static deriveKeyPair(secret, chain = "swt") {
140
+ const alphabet = types_1.Alphabet[chain === null || chain === void 0 ? void 0 : chain.toUpperCase()];
141
+ const keyPair = (0, minify_swtc_keypair_1.Factory)(alphabet);
142
+ const pair = keyPair.deriveKeyPair(secret);
143
+ return {
144
+ privateKey: pair.privateKey.substring(2),
145
+ publicKey: pair.publicKey
146
+ };
147
+ }
148
+ /**
149
+ * encrypt data with public key
150
+ *
151
+ * @static
152
+ * @param {string} message
153
+ * @param {string} publicKey
154
+ * @returns {Promise<IEncrypt>}
155
+ * @memberof JingchangWallet
156
+ */
157
+ static async encryptWithPublicKey(message, publicKey) {
158
+ const encode = await eccrypto_1.default.encrypt(Buffer.from(publicKey, "hex"), Buffer.from(message));
159
+ return {
160
+ ciphertext: encode.ciphertext.toString("hex"),
161
+ ephemPublicKey: encode.ephemPublicKey.toString("hex"),
162
+ iv: encode.iv.toString("hex"),
163
+ mac: encode.mac.toString("hex")
164
+ };
165
+ }
166
+ /**
167
+ * decrypt data with private key
168
+ *
169
+ * @static
170
+ * @param {IEncrypt} message
171
+ * @param {string} privateKey the privateKey's length should be 64
172
+ * @returns {Promise<string>}
173
+ * @memberof JingchangWallet
174
+ */
175
+ static async decryptWithPrivateKey(message, privateKey) {
176
+ const encode = {
177
+ ciphertext: Buffer.from(message.ciphertext, "hex"),
178
+ ephemPublicKey: Buffer.from(message.ephemPublicKey, "hex"),
179
+ iv: Buffer.from(message.iv, "hex"),
180
+ mac: Buffer.from(message.mac, "hex")
181
+ };
182
+ const decode = await eccrypto_1.default.decrypt(Buffer.from(privateKey, "hex"), encode);
183
+ return decode.toString();
184
+ }
185
+ /**
186
+ * get wallets from jingchang wallet
187
+ *
188
+ * @static
189
+ * @param {IJingchangWalletModel} jcWallet
190
+ * @returns {Array<IKeystoreModel>} return wallets if valid, otherwise return empty array.
191
+ * @memberof JingchangWallet
192
+ */
193
+ static getWallets(keystore) {
194
+ let wallets;
195
+ if (JingchangWallet.isValid(keystore)) {
196
+ wallets = keystore.wallets;
197
+ }
198
+ else {
199
+ wallets = [];
200
+ }
201
+ return wallets;
202
+ }
203
+ /**
204
+ * set property of _jingchangWallet
205
+ *
206
+ * @param {IJingchangWalletModel} wallet
207
+ * @memberof JingchangWallet
208
+ */
209
+ setJingchangWallet(wallet) {
210
+ this._jingchangWallet = wallet;
211
+ }
212
+ /**
213
+ * get default wallet's keystore address for each type
214
+ *
215
+ * @param {string} [type="swt"]
216
+ * @returns {Promise<string>} resolve address if success
217
+ * @memberof JingchangWallet
218
+ */
219
+ async getAddress(type = "swt") {
220
+ const wallet = await this.getWalletWithType(type);
221
+ return wallet.address;
222
+ }
223
+ /**
224
+ * get default wallet keystore with type
225
+ *
226
+ * @param {string} [type="swt"]
227
+ * @returns {Promise<IKeystoreModel>} resolve default wallet keystore if success.
228
+ * @memberof JingchangWallet
229
+ */
230
+ async getWalletWithType(type = "swt") {
231
+ const wallet = this.findWallet((w) => w.type.toLowerCase() === type.toLowerCase() && w.default);
232
+ return wallet;
233
+ }
234
+ /**
235
+ * get wallet keystore with address
236
+ *
237
+ * @param {string} address
238
+ * @returns {Promise<IKeystoreModel>} resolve wallet keystore if success.
239
+ * @memberof JingchangWallet
240
+ */
241
+ async getWalletWithAddress(address) {
242
+ const wallet = await this.findWallet((w) => w.address === address);
243
+ return wallet;
244
+ }
245
+ /**
246
+ * check if has default wallet for each type
247
+ *
248
+ * @param {string} [type="swt"]
249
+ * @returns {boolean} return true if has default
250
+ * @memberof JingchangWallet
251
+ */
252
+ hasDefault(type = "swt") {
253
+ try {
254
+ const wallet = this.findWallet((w) => w.type === type && w.default);
255
+ return !(0, jcc_common_1.isEmptyObject)(wallet);
256
+ }
257
+ catch (error) {
258
+ return false;
259
+ }
260
+ }
261
+ /**
262
+ * get the default wallet keystore's secret with type.
263
+ *
264
+ * @param {string} password
265
+ * @param {string} [type="swt"]
266
+ * @returns {Promise<string>}
267
+ * @memberof JingchangWallet
268
+ */
269
+ async getSecretWithType(password, type = "swt") {
270
+ const wallet = await this.findWallet((w) => w.type === type && w.default);
271
+ const secret = (0, util_1.decrypt)(password, wallet);
272
+ return secret;
273
+ }
274
+ /**
275
+ * get the wallet keystore's secret with address.
276
+ *
277
+ * @param {string} password
278
+ * @param {string} address
279
+ * @returns {Promise<string>}
280
+ * @memberof JingchangWallet resolve secret if success.
281
+ */
282
+ async getSecretWithAddress(password, address) {
283
+ const wallet = await this.findWallet((w) => w.address === address);
284
+ const secret = (0, util_1.decrypt)(password, wallet);
285
+ return secret;
286
+ }
287
+ /**
288
+ * change the whole jingchang wallet password, if you set property of _samePassword is false, will throw an error
289
+ *
290
+ * @param {string} oldPassword
291
+ * @param {string} newPassword
292
+ * @returns {Promise<IJingchangWalletModel>} resolve new jingchang wallet if success
293
+ * @memberof JingchangWallet
294
+ */
295
+ async changeWholePassword(oldPassword, newPassword) {
296
+ if (!this._samePassword) {
297
+ throw new Error("the property of _samePassword is false, so please don't call this function!");
298
+ }
299
+ const jcWallet = (0, clone_deep_1.default)(this._jingchangWallet);
300
+ assert_1.default.notEqual(jcWallet, this._jingchangWallet);
301
+ const wallets = JingchangWallet.getWallets(jcWallet);
302
+ const arr = [];
303
+ for (const wallet of wallets) {
304
+ const address = wallet.address;
305
+ const secret = await this.getSecretWithAddress(oldPassword, address);
306
+ const keypairs = {
307
+ address: wallet.address,
308
+ alias: wallet.alias,
309
+ default: wallet.default,
310
+ secret,
311
+ type: wallet.type
312
+ };
313
+ const newWallet = this.getEncryptData(newPassword, keypairs);
314
+ arr.push(newWallet);
315
+ }
316
+ jcWallet.wallets = arr;
317
+ this.setJingchangWallet(jcWallet);
318
+ return jcWallet;
319
+ }
320
+ /**
321
+ * change the keystore password with address, if you set the property of _samePassword is true, will throw an error
322
+ *
323
+ * @param {string} address
324
+ * @param {string} oldPassword
325
+ * @param {string} newPassword
326
+ * @returns {Promise<IJingchangWalletModel>} resolve new jingchang wallet if success
327
+ * @memberof JingchangWallet
328
+ */
329
+ async changePasswordWithAddress(address, oldPassword, newPassword) {
330
+ if (this._samePassword) {
331
+ throw new Error("the property of _samePassword is true, so please don't call this function!");
332
+ }
333
+ const wallet = this.findWallet((w) => w.address === address);
334
+ const secret = await this.getSecretWithAddress(oldPassword, address);
335
+ const keypairs = {
336
+ address: wallet.address,
337
+ alias: wallet.alias,
338
+ default: wallet.default,
339
+ secret,
340
+ type: wallet.type
341
+ };
342
+ const newWallet = this.getEncryptData(newPassword, keypairs);
343
+ // shadow copy
344
+ wallet.ciphertext = newWallet.ciphertext;
345
+ wallet.crypto = newWallet.crypto;
346
+ wallet.mac = newWallet.mac;
347
+ return this._jingchangWallet;
348
+ }
349
+ /**
350
+ * replace keystore, if forget password
351
+ *
352
+ * @param {string} secret
353
+ * @param {string} password
354
+ * @param {(secret: string) => string} retriveSecret
355
+ * @returns {Promise<IJingchangWalletModel>}
356
+ * @memberof JingchangWallet
357
+ */
358
+ async replaceKeystore(secret, password, retriveSecret) {
359
+ const address = retriveSecret(secret);
360
+ const wallet = this.findWallet((w) => w.address === address);
361
+ const keypairs = {
362
+ address: wallet.address,
363
+ alias: wallet.alias,
364
+ default: wallet.default,
365
+ secret,
366
+ type: wallet.type
367
+ };
368
+ const newWallet = this.getEncryptData(password, keypairs);
369
+ // shadow copy
370
+ wallet.ciphertext = newWallet.ciphertext;
371
+ wallet.crypto = newWallet.crypto;
372
+ wallet.mac = newWallet.mac;
373
+ return this._jingchangWallet;
374
+ }
375
+ /**
376
+ * remove default wallet keystore of the given type
377
+ *
378
+ * @param {string} [type="swt"]
379
+ * @returns {Promise<IJingchangWalletModel>} resolve new jingchang wallet if success
380
+ * @memberof JingchangWallet
381
+ */
382
+ async removeWalletWithType(type = "swt") {
383
+ const address = await this.getAddress(type);
384
+ const wallet = await this.removeWalletWithAddress(address);
385
+ return wallet;
386
+ }
387
+ /**
388
+ * remove wallet keystore of the given address
389
+ *
390
+ * @param {string} address
391
+ * @returns {Promise<IJingchangWalletModel>} resolve new jingchang wallet if success
392
+ * @memberof JingchangWallet
393
+ */
394
+ async removeWalletWithAddress(address) {
395
+ const jcWallet = (0, clone_deep_1.default)(this._jingchangWallet);
396
+ assert_1.default.notEqual(this._jingchangWallet, jcWallet);
397
+ const wallets = JingchangWallet.getWallets(jcWallet);
398
+ const wallet = this.findWallet((w) => w.address === address);
399
+ const index = wallets.findIndex((w) => w.address === wallet.address);
400
+ wallets.splice(index, 1);
401
+ const next = wallets.find((w) => w.type === wallet.type);
402
+ if (next) {
403
+ next.default = true;
404
+ }
405
+ this.setJingchangWallet(jcWallet);
406
+ return jcWallet;
407
+ }
408
+ /**
409
+ * set defalut wallet keystore for each type
410
+ *
411
+ * @param {string} address
412
+ * @returns {Promise<IJingchangWalletModel>} resolve new jingchang wallet if success
413
+ * @memberof JingchangWallet
414
+ */
415
+ async setDefaultWallet(address) {
416
+ const wallet = await this.getWalletWithAddress(address);
417
+ if (wallet.default) {
418
+ return this._jingchangWallet;
419
+ }
420
+ const defaultWallet = await this.getWalletWithType(wallet.type);
421
+ defaultWallet.default = false;
422
+ wallet.default = true;
423
+ return this._jingchangWallet;
424
+ }
425
+ /**
426
+ * import secret
427
+ *
428
+ * @param {string} secret
429
+ * @param {string} password
430
+ * @param {string} type
431
+ * @param {(secret: string) => string} retriveSecret
432
+ * @param {string} [alias] wallet name
433
+ * @returns {Promise<IJingchangWalletModel>} resolve new jingchang wallet if success
434
+ * @memberof JingchangWallet
435
+ */
436
+ async importSecret(secret, password, type, retriveSecret, alias) {
437
+ if (this._samePassword) {
438
+ // validate default password of swt keystore is right or not
439
+ await this.getSecretWithType(password);
440
+ }
441
+ const address = retriveSecret(secret);
442
+ if (!address) {
443
+ throw new Error(constant_1.SECRET_IS_INVALID);
444
+ }
445
+ const wallets = JingchangWallet.getWallets(this._jingchangWallet);
446
+ const wallet = wallets.find((w) => w.address === address && w.type === type);
447
+ if (wallet) {
448
+ throw new Error(constant_1.ADDRESS_IS_EXISTENT);
449
+ }
450
+ const keypairs = {
451
+ address,
452
+ alias: alias || `${type} wallet`,
453
+ secret,
454
+ type
455
+ };
456
+ const w = await this.saveWallet(password, keypairs);
457
+ return w;
458
+ }
459
+ /**
460
+ * find wallet keystore according to filter function
461
+ *
462
+ * @protected
463
+ * @param {(wallet: IKeystoreModel) => boolean} filter
464
+ * @returns {IKeystoreModel} return wallet keystore if existent, otherwise throw `keystore is invalid` if the jingchang wallet is invalid
465
+ * or throw `wallet is empty` if the wallet isn't existent
466
+ * @memberof JingchangWallet
467
+ */
468
+ findWallet(filter) {
469
+ const jingchangWallet = this._jingchangWallet;
470
+ if (!JingchangWallet.isValid(jingchangWallet)) {
471
+ throw new Error(constant_1.KEYSTORE_IS_INVALID);
472
+ }
473
+ const { wallets } = jingchangWallet;
474
+ const wallet = wallets.find(filter);
475
+ if ((0, jcc_common_1.isEmptyObject)(wallet)) {
476
+ throw new Error(constant_1.WALLET_IS_EMPTY);
477
+ }
478
+ return wallet;
479
+ }
480
+ /**
481
+ * encrypt data
482
+ *
483
+ * @protected
484
+ * @param {string} password
485
+ * @param {IKeypairsModel} keypairs
486
+ * @returns {IKeystoreModel}
487
+ * @memberof JingchangWallet
488
+ */
489
+ getEncryptData(password, keypairs) {
490
+ const encryptData = (0, util_1.encryptWallet)(password, keypairs, {});
491
+ return encryptData;
492
+ }
493
+ /**
494
+ * save wallet keystore to jingchang wallet
495
+ *
496
+ * @private
497
+ * @param {string} password
498
+ * @param {IKeypairsModel} keypairs
499
+ * @returns {Promise<IJingchangWalletModel>} resolve new jingchang wallet if success
500
+ * @memberof JingchangWallet
501
+ */
502
+ async saveWallet(password, keypairs) {
503
+ // support type: ethereum, stream, jingtum, call and moac
504
+ keypairs.default = this._multiple ? !this.hasDefault(keypairs.type) : true;
505
+ const encryptData = this.getEncryptData(password, keypairs);
506
+ const jcWallet = (0, clone_deep_1.default)(this._jingchangWallet);
507
+ assert_1.default.notEqual(this._jingchangWallet, jcWallet);
508
+ const wallets = jcWallet.wallets;
509
+ const pre = wallets.findIndex((w) => w.type.toLowerCase() === keypairs.type.toLowerCase());
510
+ if (this._multiple) {
511
+ wallets.push(encryptData);
512
+ }
513
+ else {
514
+ /* istanbul ignore else */
515
+ if (pre >= 0) {
516
+ wallets.splice(pre, 1);
517
+ }
518
+ wallets.push(encryptData);
519
+ }
520
+ this.setJingchangWallet(jcWallet);
521
+ return jcWallet;
522
+ }
523
+ }
524
+ JingchangWallet.version = "1.0";
525
+ JingchangWallet._name = "wallets";
526
+ JingchangWallet._walletID = Buffer.from(sha256_1.sha256
527
+ .create()
528
+ .update(JingchangWallet._name.toLowerCase())
529
+ .digest()).toString("hex");
530
+ exports.default = JingchangWallet;
531
+ //# sourceMappingURL=jingchangWallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jingchangWallet.js","sourceRoot":"","sources":["../src/jingchangWallet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const pubToAddress: (pubKey: Uint8Array, sanitize?: boolean) => Uint8Array;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ // forked from https://github.com/ethereumjs/ethereumjs-monorepo/blob/master/packages/util/src/account.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.pubToAddress = void 0;
5
+ const secp256k1_1 = require("@noble/curves/secp256k1");
6
+ const keccak_js_1 = require("ethereum-cryptography/keccak.js");
7
+ const helper_1 = require("./helper");
8
+ const pubToAddress = function (pubKey, sanitize = false) {
9
+ (0, helper_1.assertIsBytes)(pubKey);
10
+ if (sanitize && pubKey.length !== 64) {
11
+ pubKey = secp256k1_1.secp256k1.ProjectivePoint.fromHex(pubKey)
12
+ .toRawBytes(false)
13
+ .slice(1);
14
+ }
15
+ if (pubKey.length !== 64) {
16
+ throw new Error("Expected pubKey to be of length 64");
17
+ }
18
+ // Only take the lower 160bits of the hash
19
+ return (0, keccak_js_1.keccak256)(pubKey).subarray(-20);
20
+ };
21
+ exports.pubToAddress = pubToAddress;
22
+ //# sourceMappingURL=account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/minify-ethereumjs-util/account.ts"],"names":[],"mappings":";AAAA,yGAAyG;;;AAEzG,uDAAoD;AACpD,+DAA4D;AAC5D,qCAAyC;AAElC,MAAM,YAAY,GAAG,UAAS,MAAkB,EAAE,WAAoB,KAAK;IAChF,IAAA,sBAAa,EAAC,MAAM,CAAC,CAAC;IACtB,IAAI,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,qBAAS,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC;aAC/C,UAAU,CAAC,KAAK,CAAC;aACjB,KAAK,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACD,0CAA0C;IAC1C,OAAO,IAAA,qBAAS,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;AACzC,CAAC,CAAC;AAZW,QAAA,YAAY,gBAYvB"}
@@ -0,0 +1,7 @@
1
+ export declare const zeros: (bytes: number) => Uint8Array;
2
+ export declare const concatBytes: (...arrays: Uint8Array[]) => Uint8Array;
3
+ export declare const setLengthLeft: (msg: Uint8Array, length: number) => Uint8Array;
4
+ export declare const setLengthRight: (msg: Uint8Array, length: number) => Uint8Array;
5
+ export declare const bytesToHex: (bytes: Uint8Array) => string;
6
+ export declare const hexToBytes: (hex: string) => Uint8Array;
7
+ export declare const bytesToBigInt: (bytes: Uint8Array) => bigint;