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.
- package/dist/jcc-wallet.min.js +24 -45
- package/lib/{constant/index.js → constant.js} +8 -8
- package/lib/constant.js.map +1 -0
- package/lib/hd/constant.js +4 -4
- package/lib/hd/constant.js.map +1 -1
- package/lib/hd/eos.plugin.js +36 -39
- package/lib/hd/eos.plugin.js.map +1 -1
- package/lib/hd/ethereum.plugin.d.ts +1 -0
- package/lib/hd/ethereum.plugin.js +86 -67
- package/lib/hd/ethereum.plugin.js.map +1 -1
- package/lib/hd/index.d.ts +1 -1
- package/lib/hd/index.js +167 -179
- package/lib/hd/index.js.map +1 -1
- package/lib/hd/plugins.d.ts +9 -0
- package/lib/hd/plugins.js +26 -22
- package/lib/hd/plugins.js.map +1 -1
- package/lib/hd/swtc.plugin.d.ts +1 -5
- package/lib/hd/swtc.plugin.js +74 -60
- package/lib/hd/swtc.plugin.js.map +1 -1
- package/lib/hd/tron.plugin.js +28 -33
- package/lib/hd/tron.plugin.js.map +1 -1
- package/lib/index.d.ts +3 -4
- package/lib/index.js +5 -8
- package/lib/index.js.map +1 -1
- package/lib/{jingchangWallet/index.d.ts → jingchangWallet.d.ts} +1 -1
- package/lib/jingchangWallet.js +531 -0
- package/lib/jingchangWallet.js.map +1 -0
- package/lib/minify-ethereumjs-util/account.d.ts +1 -0
- package/lib/minify-ethereumjs-util/account.js +22 -0
- package/lib/minify-ethereumjs-util/account.js.map +1 -0
- package/lib/minify-ethereumjs-util/bytes.d.ts +7 -0
- package/lib/minify-ethereumjs-util/bytes.js +100 -0
- package/lib/minify-ethereumjs-util/bytes.js.map +1 -0
- package/lib/minify-ethereumjs-util/constants.d.ts +4 -0
- package/lib/minify-ethereumjs-util/constants.js +9 -0
- package/lib/minify-ethereumjs-util/constants.js.map +1 -0
- package/lib/minify-ethereumjs-util/helper.d.ts +5 -0
- package/lib/minify-ethereumjs-util/helper.js +16 -0
- package/lib/minify-ethereumjs-util/helper.js.map +1 -0
- package/lib/minify-ethereumjs-util/internal.d.ts +8 -0
- package/lib/minify-ethereumjs-util/internal.js +33 -0
- package/lib/minify-ethereumjs-util/internal.js.map +1 -0
- package/lib/minify-ethereumjs-util/signature.d.ts +13 -0
- package/lib/minify-ethereumjs-util/signature.js +45 -0
- package/lib/minify-ethereumjs-util/signature.js.map +1 -0
- package/lib/minify-swtc-keypair/address-codec.d.ts +16 -0
- package/lib/minify-swtc-keypair/address-codec.js +166 -0
- package/lib/minify-swtc-keypair/address-codec.js.map +1 -0
- package/lib/minify-swtc-keypair/index.d.ts +25 -0
- package/lib/minify-swtc-keypair/index.js +178 -0
- package/lib/minify-swtc-keypair/index.js.map +1 -0
- package/lib/minify-swtc-keypair/sha512.d.ts +9 -0
- package/lib/minify-swtc-keypair/sha512.js +33 -0
- package/lib/minify-swtc-keypair/sha512.js.map +1 -0
- package/lib/minify-swtc-keypair/utils.d.ts +13 -0
- package/lib/minify-swtc-keypair/utils.js +63 -0
- package/lib/minify-swtc-keypair/utils.js.map +1 -0
- package/lib/minify-tron/address.d.ts +6 -0
- package/lib/minify-tron/address.js +11 -0
- package/lib/minify-tron/address.js.map +1 -0
- package/lib/minify-tron/base58.d.ts +2 -0
- package/lib/minify-tron/base58.js +67 -0
- package/lib/minify-tron/base58.js.map +1 -0
- package/lib/minify-tron/bytes.d.ts +2 -0
- package/lib/minify-tron/bytes.js +23 -0
- package/lib/minify-tron/bytes.js.map +1 -0
- package/lib/minify-tron/code.d.ts +3 -0
- package/lib/minify-tron/code.js +56 -0
- package/lib/minify-tron/code.js.map +1 -0
- package/lib/minify-tron/crypto.d.ts +7 -0
- package/lib/minify-tron/crypto.js +83 -0
- package/lib/minify-tron/crypto.js.map +1 -0
- package/lib/minify-tron/message.d.ts +4 -0
- package/lib/minify-tron/message.js +42 -0
- package/lib/minify-tron/message.js.map +1 -0
- package/lib/{types/index.d.ts → types.d.ts} +16 -3
- package/lib/types.js +16 -0
- package/lib/types.js.map +1 -0
- package/lib/util/index.js +40 -30
- package/lib/util/index.js.map +1 -1
- package/package.json +21 -16
- package/lib/constant/index.js.map +0 -1
- package/lib/eth/index.d.ts +0 -37
- package/lib/eth/index.js +0 -98
- package/lib/eth/index.js.map +0 -1
- package/lib/jingchangWallet/index.js +0 -713
- package/lib/jingchangWallet/index.js.map +0 -1
- package/lib/moac/index.d.ts +0 -29
- package/lib/moac/index.js +0 -58
- package/lib/moac/index.js.map +0 -1
- package/lib/types/index.js +0 -3
- package/lib/types/index.js.map +0 -1
- package/lib/x-wallet/index.d.ts +0 -22
- package/lib/x-wallet/index.js +0 -86
- package/lib/x-wallet/index.js.map +0 -1
- /package/lib/{constant/index.d.ts → constant.d.ts} +0 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// forked from https://github.com/tronprotocol/tronweb/blob/5.x/src/utils/message.js
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.TRON_MESSAGE_PREFIX = void 0;
|
|
5
|
+
exports.hashMessage = hashMessage;
|
|
6
|
+
exports.signMessage = signMessage;
|
|
7
|
+
exports.verifyMessage = verifyMessage;
|
|
8
|
+
const address_1 = require("./address");
|
|
9
|
+
const crypto_1 = require("./crypto");
|
|
10
|
+
const code_1 = require("./code");
|
|
11
|
+
const { keccak256, SigningKey, Signature } = require("ethers/crypto");
|
|
12
|
+
const { recoverAddress } = require("ethers/transaction");
|
|
13
|
+
const { toUtf8Bytes, concat } = require("ethers/utils");
|
|
14
|
+
const joinSignature = (splitSig) => Signature.from(splitSig).serialized;
|
|
15
|
+
exports.TRON_MESSAGE_PREFIX = "\x19TRON Signed Message:\n";
|
|
16
|
+
function hashMessage(message) {
|
|
17
|
+
if (typeof message === "string") {
|
|
18
|
+
message = toUtf8Bytes(message);
|
|
19
|
+
}
|
|
20
|
+
if (Array.isArray(message)) {
|
|
21
|
+
message = new Uint8Array(message);
|
|
22
|
+
}
|
|
23
|
+
return keccak256(concat([toUtf8Bytes(exports.TRON_MESSAGE_PREFIX), toUtf8Bytes(String(message.length)), message]));
|
|
24
|
+
}
|
|
25
|
+
function signMessage(message, privateKey) {
|
|
26
|
+
if (!privateKey.match(/^0x/)) {
|
|
27
|
+
privateKey = "0x" + privateKey;
|
|
28
|
+
}
|
|
29
|
+
const signingKey = new SigningKey(privateKey);
|
|
30
|
+
const messageDigest = hashMessage(message);
|
|
31
|
+
const signature = signingKey.sign(messageDigest);
|
|
32
|
+
return joinSignature(signature);
|
|
33
|
+
}
|
|
34
|
+
function verifyMessage(message, signature) {
|
|
35
|
+
if (!signature.match(/^0x/)) {
|
|
36
|
+
signature = "0x" + signature;
|
|
37
|
+
}
|
|
38
|
+
const recovered = recoverAddress(hashMessage(message), signature);
|
|
39
|
+
const base58Address = (0, crypto_1.getBase58CheckAddress)((0, code_1.hexStr2byteArray)(recovered.replace(/^0x/, address_1.ADDRESS_PREFIX)));
|
|
40
|
+
return base58Address;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/minify-tron/message.ts"],"names":[],"mappings":";AAAA,oFAAoF;;;AAapF,kCAUC;AAED,kCAUC;AAED,sCAQC;AA3CD,uCAA2C;AAC3C,qCAAiD;AACjD,iCAA0C;AAC1C,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AACtE,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AACzD,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAExD,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC;AAE3D,QAAA,mBAAmB,GAAG,4BAA4B,CAAC;AAEhE,SAAgB,WAAW,CAAC,OAAO;IACjC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,2BAAmB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7G,CAAC;AAED,SAAgB,WAAW,CAAC,OAAO,EAAE,UAAU;IAC7C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,UAAU,GAAG,IAAI,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEjD,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,SAAgB,aAAa,CAAC,OAAO,EAAE,SAAS;IAC9C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC;IAC/B,CAAC;IACD,MAAM,SAAS,GAAG,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;IAClE,MAAM,aAAa,GAAG,IAAA,8BAAqB,EAAC,IAAA,uBAAgB,EAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,wBAAc,CAAC,CAAC,CAAC,CAAC;IAExG,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
|
@@ -39,7 +39,7 @@ export interface IWalletModel {
|
|
|
39
39
|
secret: string;
|
|
40
40
|
}
|
|
41
41
|
export interface ICreateOptionsModel {
|
|
42
|
-
algorithm?: "ed25519" | "
|
|
42
|
+
algorithm?: "ed25519" | "secp256k1";
|
|
43
43
|
entropy?: Uint8Array;
|
|
44
44
|
}
|
|
45
45
|
export interface IEncryptModel {
|
|
@@ -85,6 +85,19 @@ export interface IHDPlugin {
|
|
|
85
85
|
hash(message: string, ...args: any[]): string;
|
|
86
86
|
sign(message: string, ...args: any[]): string;
|
|
87
87
|
verify(messgae: string, signature: string, address: string, ...args: any[]): boolean;
|
|
88
|
-
recover(message: string, signature: string, ...args: any[]): string;
|
|
89
|
-
|
|
88
|
+
recover(message: string, signature: string, ...args: any[]): string | void;
|
|
89
|
+
getAddress?(secret: string): string;
|
|
90
|
+
createWallet?(opts?: ICreateOptionsModel): IWalletModel;
|
|
91
|
+
proxy?(functionName: string, ...args: any[]): any;
|
|
92
|
+
}
|
|
93
|
+
export declare enum Alphabet {
|
|
94
|
+
JINGTUM = "jpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65rkm8oFqi1tuvAxyz",
|
|
95
|
+
SWT = "jpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65rkm8oFqi1tuvAxyz",
|
|
96
|
+
RIPPLE = "rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz",
|
|
97
|
+
CALL = "cpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2brdeCg65jkm8oFqi1tuvAxyz",
|
|
98
|
+
STREAM = "vpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1turAxyz",
|
|
99
|
+
BVCADT = "bpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2rcdeCg65jkm8oFqi1tuvAxyz",
|
|
100
|
+
BIZAIN = "bpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2jcdeCg65rkm8oFqi1tuvAxyz",
|
|
101
|
+
XRP = "rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz",
|
|
102
|
+
SWTC = "jpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65rkm8oFqi1tuvAxyz"
|
|
90
103
|
}
|
package/lib/types.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Alphabet = void 0;
|
|
4
|
+
var Alphabet;
|
|
5
|
+
(function (Alphabet) {
|
|
6
|
+
Alphabet["JINGTUM"] = "jpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65rkm8oFqi1tuvAxyz";
|
|
7
|
+
Alphabet["SWT"] = "jpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65rkm8oFqi1tuvAxyz";
|
|
8
|
+
Alphabet["RIPPLE"] = "rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz";
|
|
9
|
+
Alphabet["CALL"] = "cpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2brdeCg65jkm8oFqi1tuvAxyz";
|
|
10
|
+
Alphabet["STREAM"] = "vpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1turAxyz";
|
|
11
|
+
Alphabet["BVCADT"] = "bpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2rcdeCg65jkm8oFqi1tuvAxyz";
|
|
12
|
+
Alphabet["BIZAIN"] = "bpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2jcdeCg65rkm8oFqi1tuvAxyz";
|
|
13
|
+
Alphabet["XRP"] = "rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz";
|
|
14
|
+
Alphabet["SWTC"] = "jpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65rkm8oFqi1tuvAxyz";
|
|
15
|
+
})(Alphabet || (exports.Alphabet = Alphabet = {}));
|
|
16
|
+
//# sourceMappingURL=types.js.map
|
package/lib/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAwGA,IAAY,QAUX;AAVD,WAAY,QAAQ;IAClB,kFAAsE,CAAA;IACtE,8EAAkE,CAAA;IAClE,iFAAqE,CAAA;IACrE,+EAAmE,CAAA;IACnE,iFAAqE,CAAA;IACrE,iFAAqE,CAAA;IACrE,iFAAqE,CAAA;IACrE,8EAAkE,CAAA;IAClE,+EAAmE,CAAA;AACrE,CAAC,EAVW,QAAQ,wBAAR,QAAQ,QAUnB"}
|
package/lib/util/index.js
CHANGED
|
@@ -4,12 +4,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.encryptWallet = exports.encryptContact = exports.encrypt = exports.decrypt = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
8
|
+
const jcc_common_1 = require("jcc_common");
|
|
9
|
+
const keccak_js_1 = require("ethereum-cryptography/keccak.js");
|
|
10
|
+
const randombytes_1 = __importDefault(require("randombytes"));
|
|
11
|
+
const scrypt_1 = require("@noble/hashes/scrypt");
|
|
12
|
+
const constant_1 = require("../constant");
|
|
13
13
|
/**
|
|
14
14
|
* decrypt wallet with password
|
|
15
15
|
*
|
|
@@ -18,22 +18,28 @@ var constant_1 = require("../constant");
|
|
|
18
18
|
* @returns {(string)} return secret if success, otherwise throws `keystore is invalid` if the keystore is invalid or
|
|
19
19
|
* throws `password is wrong` if the password is wrong
|
|
20
20
|
*/
|
|
21
|
-
|
|
21
|
+
const decrypt = (password, encryptData) => {
|
|
22
22
|
if ((0, jcc_common_1.isEmptyObject)(encryptData) || (0, jcc_common_1.isEmptyObject)(encryptData.crypto) || (0, jcc_common_1.isEmptyObject)(encryptData.crypto.kdfparams)) {
|
|
23
23
|
throw new Error(constant_1.KEYSTORE_IS_INVALID);
|
|
24
24
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
const iv = Buffer.from(encryptData.crypto.iv, "hex");
|
|
26
|
+
const kdfparams = encryptData.crypto.kdfparams;
|
|
27
|
+
const derivedKey = (0, scrypt_1.scrypt)(Buffer.from(password), Buffer.from(kdfparams.salt, "hex"), {
|
|
28
|
+
N: kdfparams.n,
|
|
29
|
+
r: kdfparams.r,
|
|
30
|
+
p: kdfparams.p,
|
|
31
|
+
dkLen: kdfparams.dklen
|
|
32
|
+
});
|
|
33
|
+
const ciphertext = Buffer.from(encryptData.ciphertext, "hex");
|
|
34
|
+
const mac = keccak_js_1.keccak256
|
|
35
|
+
.create()
|
|
30
36
|
.update(Buffer.concat([derivedKey.slice(16, 32), ciphertext]))
|
|
31
37
|
.digest();
|
|
32
|
-
if (mac.toString("hex") !== encryptData.mac) {
|
|
38
|
+
if (Buffer.from(mac).toString("hex") !== encryptData.mac) {
|
|
33
39
|
throw new Error(constant_1.PASSWORD_IS_WRONG);
|
|
34
40
|
}
|
|
35
|
-
|
|
36
|
-
|
|
41
|
+
const decipher = crypto_1.default.createDecipheriv("aes-128-ctr", derivedKey.slice(0, 16), iv);
|
|
42
|
+
const seed = Buffer.concat([decipher.update(ciphertext), decipher.final()]);
|
|
37
43
|
return seed.toString();
|
|
38
44
|
};
|
|
39
45
|
exports.decrypt = decrypt;
|
|
@@ -45,41 +51,45 @@ exports.decrypt = decrypt;
|
|
|
45
51
|
* @param {IEncryptModel} [opts={}]
|
|
46
52
|
* @returns {IKeystoreModel}
|
|
47
53
|
*/
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
54
|
+
const encrypt = (password, data, opts) => {
|
|
55
|
+
const iv = opts.iv || (0, randombytes_1.default)(16).toString("hex");
|
|
56
|
+
const kdfparams = {
|
|
51
57
|
dklen: opts.dklen || 32,
|
|
52
58
|
n: opts.n || 4096,
|
|
53
59
|
p: opts.p || 1,
|
|
54
60
|
r: opts.r || 8,
|
|
55
61
|
salt: opts.salt || (0, randombytes_1.default)(32).toString("hex")
|
|
56
62
|
};
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
63
|
+
const derivedKey = (0, scrypt_1.scrypt)(Buffer.from(password), Buffer.from(kdfparams.salt, "hex"), {
|
|
64
|
+
N: kdfparams.n,
|
|
65
|
+
r: kdfparams.r,
|
|
66
|
+
p: kdfparams.p,
|
|
67
|
+
dkLen: kdfparams.dklen
|
|
68
|
+
});
|
|
69
|
+
const cipher = crypto_1.default.createCipheriv(opts.cipher || "aes-128-ctr", derivedKey.slice(0, 16), Buffer.from(iv, "hex"));
|
|
70
|
+
const ciphertext = Buffer.concat([cipher.update(Buffer.from(data)), cipher.final()]);
|
|
71
|
+
const mac = keccak_js_1.keccak256
|
|
72
|
+
.create()
|
|
61
73
|
.update(Buffer.concat([derivedKey.slice(16, 32), ciphertext]))
|
|
62
74
|
.digest();
|
|
63
75
|
return {
|
|
64
76
|
ciphertext: ciphertext.toString("hex"),
|
|
65
77
|
crypto: {
|
|
66
78
|
cipher: opts.cipher || "aes-128-ctr",
|
|
67
|
-
iv
|
|
79
|
+
iv,
|
|
68
80
|
kdf: "scrypt",
|
|
69
|
-
kdfparams
|
|
81
|
+
kdfparams
|
|
70
82
|
},
|
|
71
|
-
mac: mac.toString("hex")
|
|
83
|
+
mac: Buffer.from(mac).toString("hex")
|
|
72
84
|
};
|
|
73
85
|
};
|
|
74
86
|
exports.encrypt = encrypt;
|
|
75
|
-
|
|
76
|
-
if (opts === void 0) { opts = {}; }
|
|
87
|
+
const encryptContact = (password, contacts, opts = {}) => {
|
|
77
88
|
return encrypt(password, JSON.stringify(contacts), opts);
|
|
78
89
|
};
|
|
79
90
|
exports.encryptContact = encryptContact;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
var data = encrypt(password, keypairs.secret, opts);
|
|
91
|
+
const encryptWallet = (password, keypairs, opts = {}) => {
|
|
92
|
+
const data = encrypt(password, keypairs.secret, opts);
|
|
83
93
|
data.type = keypairs.type || "swt";
|
|
84
94
|
data.address = keypairs.address;
|
|
85
95
|
data.default = typeof keypairs.default === "boolean" ? keypairs.default : true;
|
package/lib/util/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jcc_wallet",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.1",
|
|
4
4
|
"description": "Toolkit of wallet to manage multiple chains & support multiple keystores for each chain",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
"test:browser": "npm run build && karma start karma.conf.js",
|
|
20
20
|
"eslint": "./node_modules/.bin/eslint src",
|
|
21
21
|
"compile": "./compile.sh",
|
|
22
|
-
"pretty": "pretty-quick --staged"
|
|
22
|
+
"pretty": "pretty-quick --staged",
|
|
23
|
+
"analyzer": "cross-env REPORT=true webpack"
|
|
23
24
|
},
|
|
24
25
|
"repository": {
|
|
25
26
|
"type": "git",
|
|
@@ -50,17 +51,18 @@
|
|
|
50
51
|
"@babel/preset-env": "^7.23.2",
|
|
51
52
|
"@babel/preset-typescript": "^7.22.15",
|
|
52
53
|
"@types/eslint": "^8",
|
|
53
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
54
|
-
"@typescript-eslint/parser": "^
|
|
54
|
+
"@typescript-eslint/eslint-plugin": "^7.12.0",
|
|
55
|
+
"@typescript-eslint/parser": "^7.12.0",
|
|
55
56
|
"babel-loader": "^8.3.0",
|
|
56
57
|
"browserify": "^16.5.0",
|
|
57
58
|
"chai": "^4.2.0",
|
|
58
59
|
"coveralls": "^3.1.1",
|
|
59
60
|
"cross-env": "^7.0.0",
|
|
60
61
|
"duplicate-package-checker-webpack-plugin": "^3.0.0",
|
|
61
|
-
"eslint": "^
|
|
62
|
+
"eslint": "^9.4.0",
|
|
62
63
|
"eslint-plugin-jsdoc": "^46.9.0",
|
|
63
64
|
"eslint-plugin-prefer-arrow": "^1.2.3",
|
|
65
|
+
"globals": "^15.8.0",
|
|
64
66
|
"husky": "^7.0.4",
|
|
65
67
|
"jsdom": "^22.1.0",
|
|
66
68
|
"karma": "^6.4.2",
|
|
@@ -78,32 +80,35 @@
|
|
|
78
80
|
"sinon": "^17.0.1",
|
|
79
81
|
"ts-loader": "^6.2.1",
|
|
80
82
|
"typescript": "^5.2.2",
|
|
83
|
+
"typescript-eslint": "^7.16.0",
|
|
81
84
|
"webpack": "^5.89.0",
|
|
82
85
|
"webpack-bundle-analyzer": "^4.10.1",
|
|
83
86
|
"webpack-cli": "^5.1.4"
|
|
84
87
|
},
|
|
88
|
+
"resolutions": {
|
|
89
|
+
"@noble/curves": "^1.4.2",
|
|
90
|
+
"@noble/hashes": "^1.4.0",
|
|
91
|
+
"randombytes": "^2.1.0",
|
|
92
|
+
"create-hmac": "^1.1.7",
|
|
93
|
+
"create-hash": "^1.2.0",
|
|
94
|
+
"browserify-aes": "^1.2.0",
|
|
95
|
+
"elliptic": "^6.5.5",
|
|
96
|
+
"buffer": "^6.0.3"
|
|
97
|
+
},
|
|
85
98
|
"dependencies": {
|
|
86
|
-
"@
|
|
87
|
-
"@ethereumjs/wallet": "^2.0.0",
|
|
88
|
-
"@swtc/wallet": "^1.1.1",
|
|
99
|
+
"@scure/bip32": "^1.4.0",
|
|
89
100
|
"@types/node": "^16.11.6",
|
|
90
|
-
"bip32": "^4.0.0",
|
|
91
101
|
"bip39": "^3.0.4",
|
|
92
102
|
"bip44-constants": "^123.0.0",
|
|
93
103
|
"bn.js": "^5.2.1",
|
|
94
104
|
"clone-deep": "^4.0.1",
|
|
95
105
|
"eccrypto": "^1.1.6",
|
|
96
|
-
"elliptic": "^6.5.4",
|
|
97
|
-
"eosjs": "^22.1.0",
|
|
98
106
|
"eosjs-ecc": "^4.0.1",
|
|
107
|
+
"ethereum-cryptography": "^2.2.1",
|
|
108
|
+
"ethers": "^6.13.1",
|
|
99
109
|
"jcc_common": "^0.1.0",
|
|
100
|
-
"keccak": "^3.0.3",
|
|
101
110
|
"lockr": "^0.8.5",
|
|
102
111
|
"node-polyfill-webpack-plugin": "^2.0.1",
|
|
103
|
-
"scryptsy": "^2.1.0",
|
|
104
|
-
"secp256k1": "^5.0.0",
|
|
105
|
-
"tiny-secp256k1": "^1.1.6",
|
|
106
|
-
"tronweb": "^5.3.1",
|
|
107
112
|
"wif": "^4.0.0"
|
|
108
113
|
},
|
|
109
114
|
"nyc": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constant/index.ts"],"names":[],"mappings":";;;AAAA,IAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAYlD,oDAAoB;AAXtB,IAAM,eAAe,GAAG,iBAAiB,CAAC;AAcxC,0CAAe;AAbjB,IAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAW5C,8CAAiB;AAVnB,IAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAQhD,kDAAmB;AAPrB,IAAM,qBAAqB,GAAG,mBAAY,iBAAiB,CAAE,CAAC;AAM5D,sDAAqB;AALvB,IAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAS5C,8CAAiB;AARnB,IAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAGhD,kDAAmB"}
|
package/lib/eth/index.d.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { IWalletModel } from "../types";
|
|
2
|
-
/**
|
|
3
|
-
* check eth secret is valid or not
|
|
4
|
-
*
|
|
5
|
-
* @param {string} secret
|
|
6
|
-
* @returns {boolean} return true if valid
|
|
7
|
-
*/
|
|
8
|
-
declare const isValidSecret: (secret: string) => boolean;
|
|
9
|
-
/**
|
|
10
|
-
* check eth address is valid or not
|
|
11
|
-
*
|
|
12
|
-
* @param {string} address
|
|
13
|
-
* @returns {boolean} return true if valid
|
|
14
|
-
*/
|
|
15
|
-
declare const isValidAddress: (address: string) => boolean;
|
|
16
|
-
/**
|
|
17
|
-
* get eth address with secret
|
|
18
|
-
* @param {string} secret
|
|
19
|
-
* @returns {string | null} return address if valid, otherwise return null
|
|
20
|
-
*/
|
|
21
|
-
declare const getAddress: (secret: string) => string | null;
|
|
22
|
-
/**
|
|
23
|
-
* decrypt ethereum keystore file with ethereum password
|
|
24
|
-
*
|
|
25
|
-
* @param {string} password
|
|
26
|
-
* @param {*} encryptData
|
|
27
|
-
* @returns {string} return secret if success, otherwise throws `keystore is invalid` if the keystore is invalid or
|
|
28
|
-
* throws `ethereum password is wrong` if the password is wrong
|
|
29
|
-
*/
|
|
30
|
-
declare const decryptKeystore: (password: string, encryptData: any) => string;
|
|
31
|
-
/**
|
|
32
|
-
* create eth wallet
|
|
33
|
-
*
|
|
34
|
-
* @returns {IWalletModel}
|
|
35
|
-
*/
|
|
36
|
-
declare const createWallet: () => IWalletModel;
|
|
37
|
-
export { isValidSecret, isValidAddress, getAddress, decryptKeystore, createWallet };
|
package/lib/eth/index.js
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
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
|
-
exports.createWallet = exports.decryptKeystore = exports.getAddress = exports.isValidAddress = exports.isValidSecret = void 0;
|
|
7
|
-
var crypto_1 = __importDefault(require("crypto"));
|
|
8
|
-
var util_1 = require("@ethereumjs/util");
|
|
9
|
-
var wallet_1 = require("@ethereumjs/wallet");
|
|
10
|
-
var jcc_common_1 = require("jcc_common");
|
|
11
|
-
var keccak_1 = __importDefault(require("keccak"));
|
|
12
|
-
var scryptsy_1 = __importDefault(require("scryptsy"));
|
|
13
|
-
var constant_1 = require("../constant");
|
|
14
|
-
var isObject = function (obj) {
|
|
15
|
-
return Object.prototype.toString.call(obj) === "[object Object]";
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* check eth secret is valid or not
|
|
19
|
-
*
|
|
20
|
-
* @param {string} secret
|
|
21
|
-
* @returns {boolean} return true if valid
|
|
22
|
-
*/
|
|
23
|
-
var isValidSecret = function (secret) {
|
|
24
|
-
secret = (0, jcc_common_1.filterOx)(secret);
|
|
25
|
-
try {
|
|
26
|
-
return (0, util_1.isValidPrivate)(Buffer.from(secret, "hex"));
|
|
27
|
-
}
|
|
28
|
-
catch (error) {
|
|
29
|
-
return false;
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
|
-
exports.isValidSecret = isValidSecret;
|
|
33
|
-
/**
|
|
34
|
-
* check eth address is valid or not
|
|
35
|
-
*
|
|
36
|
-
* @param {string} address
|
|
37
|
-
* @returns {boolean} return true if valid
|
|
38
|
-
*/
|
|
39
|
-
var isValidAddress = function (address) {
|
|
40
|
-
return (0, util_1.isValidAddress)(address);
|
|
41
|
-
};
|
|
42
|
-
exports.isValidAddress = isValidAddress;
|
|
43
|
-
/**
|
|
44
|
-
* get eth address with secret
|
|
45
|
-
* @param {string} secret
|
|
46
|
-
* @returns {string | null} return address if valid, otherwise return null
|
|
47
|
-
*/
|
|
48
|
-
var getAddress = function (secret) {
|
|
49
|
-
secret = (0, jcc_common_1.filterOx)(secret);
|
|
50
|
-
if (!isValidSecret(secret)) {
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
53
|
-
var wallet = wallet_1.Wallet.fromPrivateKey(Buffer.from(secret, "hex"));
|
|
54
|
-
return wallet.getAddressString();
|
|
55
|
-
};
|
|
56
|
-
exports.getAddress = getAddress;
|
|
57
|
-
/**
|
|
58
|
-
* decrypt ethereum keystore file with ethereum password
|
|
59
|
-
*
|
|
60
|
-
* @param {string} password
|
|
61
|
-
* @param {*} encryptData
|
|
62
|
-
* @returns {string} return secret if success, otherwise throws `keystore is invalid` if the keystore is invalid or
|
|
63
|
-
* throws `ethereum password is wrong` if the password is wrong
|
|
64
|
-
*/
|
|
65
|
-
var decryptKeystore = function (password, encryptData) {
|
|
66
|
-
if (!isObject(encryptData)) {
|
|
67
|
-
throw new Error(constant_1.KEYSTORE_IS_INVALID);
|
|
68
|
-
}
|
|
69
|
-
var cryptoData = encryptData.Crypto || encryptData.crypto;
|
|
70
|
-
if ((0, jcc_common_1.isEmptyObject)(cryptoData) || (0, jcc_common_1.isEmptyObject)(cryptoData.cipherparams) || (0, jcc_common_1.isEmptyObject)(cryptoData.kdfparams)) {
|
|
71
|
-
throw new Error(constant_1.KEYSTORE_IS_INVALID);
|
|
72
|
-
}
|
|
73
|
-
var iv = Buffer.from(cryptoData.cipherparams.iv, "hex");
|
|
74
|
-
var kdfparams = cryptoData.kdfparams;
|
|
75
|
-
var derivedKey = (0, scryptsy_1.default)(Buffer.from(password), Buffer.from(kdfparams.salt, "hex"), kdfparams.n, kdfparams.r, kdfparams.p, kdfparams.dklen);
|
|
76
|
-
var ciphertext = Buffer.from(cryptoData.ciphertext, "hex");
|
|
77
|
-
var mac = (0, keccak_1.default)("keccak256")
|
|
78
|
-
.update(Buffer.concat([derivedKey.slice(16, 32), ciphertext]))
|
|
79
|
-
.digest();
|
|
80
|
-
if (mac.toString("hex") !== cryptoData.mac) {
|
|
81
|
-
throw new Error(constant_1.ETH_PASSWORD_IS_WRONG);
|
|
82
|
-
}
|
|
83
|
-
var decipher = crypto_1.default.createDecipheriv("aes-128-ctr", derivedKey.slice(0, 16), iv);
|
|
84
|
-
var seed = Buffer.concat([decipher.update(ciphertext), decipher.final()]);
|
|
85
|
-
return seed.toString("hex");
|
|
86
|
-
};
|
|
87
|
-
exports.decryptKeystore = decryptKeystore;
|
|
88
|
-
/**
|
|
89
|
-
* create eth wallet
|
|
90
|
-
*
|
|
91
|
-
* @returns {IWalletModel}
|
|
92
|
-
*/
|
|
93
|
-
var createWallet = function () {
|
|
94
|
-
var _w = wallet_1.Wallet.generate();
|
|
95
|
-
return { address: _w.getAddressString(), secret: _w.getPrivateKeyString() };
|
|
96
|
-
};
|
|
97
|
-
exports.createWallet = createWallet;
|
|
98
|
-
//# sourceMappingURL=index.js.map
|
package/lib/eth/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/eth/index.ts"],"names":[],"mappings":"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"}
|