@com-chain/jsc3l 2.0.1-rc.0
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/LICENSE +661 -0
- package/README.md +45 -0
- package/build/bcRead.d.ts +15 -0
- package/build/bcRead.js +123 -0
- package/build/bcRead.js.map +1 -0
- package/build/bcTransaction.d.ts +10 -0
- package/build/bcTransaction.js +135 -0
- package/build/bcTransaction.js.map +1 -0
- package/build/blockies.d.ts +1 -0
- package/build/blockies.js +91 -0
- package/build/blockies.js.map +1 -0
- package/build/config.d.ts +6 -0
- package/build/config.js +25 -0
- package/build/config.js.map +1 -0
- package/build/connection.d.ts +58 -0
- package/build/connection.js +204 -0
- package/build/connection.js.map +1 -0
- package/build/customization.d.ts +37 -0
- package/build/customization.js +129 -0
- package/build/customization.js.map +1 -0
- package/build/ethereum/cipher.d.ts +3 -0
- package/build/ethereum/cipher.js +94 -0
- package/build/ethereum/cipher.js.map +1 -0
- package/build/ethereum/ethFuncs.d.ts +12 -0
- package/build/ethereum/ethFuncs.js +70 -0
- package/build/ethereum/ethFuncs.js.map +1 -0
- package/build/ethereum/etherUnits.d.ts +5 -0
- package/build/ethereum/etherUnits.js +60 -0
- package/build/ethereum/etherUnits.js.map +1 -0
- package/build/ethereum/myetherwallet.d.ts +47 -0
- package/build/ethereum/myetherwallet.js +294 -0
- package/build/ethereum/myetherwallet.js.map +1 -0
- package/build/ethereum/uiFuncs.d.ts +3 -0
- package/build/ethereum/uiFuncs.js +51 -0
- package/build/ethereum/uiFuncs.js.map +1 -0
- package/build/index.d.ts +111 -0
- package/build/index.js +310 -0
- package/build/index.js.map +1 -0
- package/build/memo.d.ts +6 -0
- package/build/memo.js +24 -0
- package/build/memo.js.map +1 -0
- package/build/qr.d.ts +8 -0
- package/build/qr.js +35 -0
- package/build/qr.js.map +1 -0
- package/build/rest/ajaxReq.d.ts +31 -0
- package/build/rest/ajaxReq.js +127 -0
- package/build/rest/ajaxReq.js.map +1 -0
- package/build/rest/endpoint.d.ts +18 -0
- package/build/rest/endpoint.js +26 -0
- package/build/rest/endpoint.js.map +1 -0
- package/build/rest/http.d.ts +10 -0
- package/build/rest/http.js +60 -0
- package/build/rest/http.js.map +1 -0
- package/build/rest/serializer.d.ts +1 -0
- package/build/rest/serializer.js +94 -0
- package/build/rest/serializer.js.map +1 -0
- package/build/type.d.ts +24 -0
- package/build/type.js +9 -0
- package/build/type.js.map +1 -0
- package/build/wallet.d.ts +35 -0
- package/build/wallet.js +162 -0
- package/build/wallet.js.map +1 -0
- package/package.json +41 -0
- package/src/bcRead.ts +184 -0
- package/src/bcTransaction.ts +157 -0
- package/src/blockies.ts +113 -0
- package/src/config.ts +33 -0
- package/src/connection.ts +243 -0
- package/src/customization.ts +156 -0
- package/src/ethereum/cipher.ts +118 -0
- package/src/ethereum/ethFuncs.ts +73 -0
- package/src/ethereum/etherUnits.ts +66 -0
- package/src/ethereum/myetherwallet.ts +354 -0
- package/src/ethereum/uiFuncs.ts +55 -0
- package/src/index.ts +366 -0
- package/src/memo.ts +37 -0
- package/src/qr.ts +34 -0
- package/src/rest/ajaxReq.ts +160 -0
- package/src/rest/endpoint.ts +31 -0
- package/src/rest/http.ts +69 -0
- package/src/rest/serializer.ts +99 -0
- package/src/type.ts +37 -0
- package/src/wallet.ts +200 -0
- package/tsconfig.json +31 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
export default class Wallet {
|
|
3
|
+
privKey: any;
|
|
4
|
+
constructor(priv?: any);
|
|
5
|
+
static generate(icapDirect: any): Wallet;
|
|
6
|
+
static fromPrivateKey(priv: any): Wallet;
|
|
7
|
+
getPrivateKey(): any;
|
|
8
|
+
getPrivateKeyString(): any;
|
|
9
|
+
getPublicKey(): any;
|
|
10
|
+
getPublicKeyString(): string;
|
|
11
|
+
getAddress(): any;
|
|
12
|
+
getAddressString(): string;
|
|
13
|
+
getChecksumAddressString(): any;
|
|
14
|
+
toV3(password: any, opts: any): {
|
|
15
|
+
[k: string]: any;
|
|
16
|
+
};
|
|
17
|
+
cipher(password: any, data: any, kdfparams: any): {
|
|
18
|
+
crypto: {
|
|
19
|
+
ciphertext: string;
|
|
20
|
+
cipherparams: {
|
|
21
|
+
iv: string;
|
|
22
|
+
};
|
|
23
|
+
cipher: string;
|
|
24
|
+
kdf: string;
|
|
25
|
+
kdfparams: any;
|
|
26
|
+
mac: any;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
decifer(input: any, password: any): Buffer;
|
|
30
|
+
toJSON(): {
|
|
31
|
+
address: string;
|
|
32
|
+
checksumAddress: any;
|
|
33
|
+
privKey: any;
|
|
34
|
+
pubKey: string;
|
|
35
|
+
publisher: string;
|
|
36
|
+
encrypted: boolean;
|
|
37
|
+
version: number;
|
|
38
|
+
};
|
|
39
|
+
static fromMyEtherWallet(input: any, password: any): Wallet;
|
|
40
|
+
static fromMyEtherWalletV2(input: any): Wallet;
|
|
41
|
+
static fromEthSale(input: any, password: any): Wallet;
|
|
42
|
+
static fromMyEtherWalletKey(input: any, password: any): Wallet;
|
|
43
|
+
static fromV3(input: any, password: any, nonStrict: any): Wallet;
|
|
44
|
+
toV3String(password: any, opts: any): string;
|
|
45
|
+
getV3Filename(timestamp: any): string;
|
|
46
|
+
signMessage(msg: any): any;
|
|
47
|
+
}
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import crypto from 'crypto';
|
|
2
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
3
|
+
import ethUtil from 'ethereumjs-util';
|
|
4
|
+
import scrypt from 'scryptsy';
|
|
5
|
+
function decipherBuffer(decipher, data) {
|
|
6
|
+
return Buffer.concat([decipher.update(data), decipher.final()]);
|
|
7
|
+
}
|
|
8
|
+
function decodeCryptojsSalt(input) {
|
|
9
|
+
const ciphertext = Buffer.from(input, 'base64');
|
|
10
|
+
if (ciphertext.slice(0, 8).toString() === 'Salted__') {
|
|
11
|
+
return {
|
|
12
|
+
salt: ciphertext.slice(8, 16),
|
|
13
|
+
ciphertext: ciphertext.slice(16)
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
return {
|
|
18
|
+
ciphertext: ciphertext
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function evpKdf(data, salt, opts) {
|
|
23
|
+
// A single EVP iteration, returns `D_i`, where block equlas to `D_(i-1)`
|
|
24
|
+
function iter(block) {
|
|
25
|
+
let hash = crypto.createHash(opts.digest || 'md5');
|
|
26
|
+
hash.update(block);
|
|
27
|
+
hash.update(data);
|
|
28
|
+
hash.update(salt);
|
|
29
|
+
block = hash.digest();
|
|
30
|
+
for (let i = 1; i < (opts.count || 1); i++) {
|
|
31
|
+
hash = crypto.createHash(opts.digest || 'md5');
|
|
32
|
+
hash.update(block);
|
|
33
|
+
block = hash.digest();
|
|
34
|
+
}
|
|
35
|
+
return block;
|
|
36
|
+
}
|
|
37
|
+
const keysize = opts.keysize || 16;
|
|
38
|
+
const ivsize = opts.ivsize || 16;
|
|
39
|
+
const ret = [];
|
|
40
|
+
let i = 0;
|
|
41
|
+
while (Buffer.concat(ret).length < (keysize + ivsize)) {
|
|
42
|
+
ret[i] = iter((i === 0) ? Buffer.alloc(0) : ret[i - 1]);
|
|
43
|
+
i++;
|
|
44
|
+
}
|
|
45
|
+
const tmp = Buffer.concat(ret);
|
|
46
|
+
return {
|
|
47
|
+
key: tmp.slice(0, keysize),
|
|
48
|
+
iv: tmp.slice(keysize, keysize + ivsize)
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export default class Wallet {
|
|
52
|
+
constructor(priv) {
|
|
53
|
+
if (!priv) {
|
|
54
|
+
priv = crypto.randomBytes(32);
|
|
55
|
+
}
|
|
56
|
+
this.privKey = priv.length === 32 ? priv : Buffer.from(priv, 'hex');
|
|
57
|
+
}
|
|
58
|
+
static generate(icapDirect) {
|
|
59
|
+
if (!icapDirect) {
|
|
60
|
+
return new this();
|
|
61
|
+
}
|
|
62
|
+
while (true) {
|
|
63
|
+
const privKey = crypto.randomBytes(32);
|
|
64
|
+
if (ethUtil.privateToAddress(privKey)[0] === 0) {
|
|
65
|
+
return new this(privKey);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
static fromPrivateKey(priv) {
|
|
70
|
+
return new this(priv);
|
|
71
|
+
}
|
|
72
|
+
getPrivateKey() { return this.privKey; }
|
|
73
|
+
getPrivateKeyString() { return this.getPrivateKey().toString('hex'); }
|
|
74
|
+
getPublicKey() { return ethUtil.privateToPublic(this.privKey); }
|
|
75
|
+
getPublicKeyString() { return '0x' + this.getPublicKey().toString('hex'); }
|
|
76
|
+
getAddress() { return ethUtil.privateToAddress(this.privKey); }
|
|
77
|
+
getAddressString() { return '0x' + this.getAddress().toString('hex'); }
|
|
78
|
+
getChecksumAddressString() {
|
|
79
|
+
return ethUtil.toChecksumAddress(this.getAddressString());
|
|
80
|
+
}
|
|
81
|
+
toV3(password, opts) {
|
|
82
|
+
opts = opts || {};
|
|
83
|
+
const salt = opts.salt || crypto.randomBytes(32);
|
|
84
|
+
const iv = opts.iv || crypto.randomBytes(16);
|
|
85
|
+
let derivedKey;
|
|
86
|
+
const kdf = opts.kdf || 'scrypt';
|
|
87
|
+
const kdfparams = {
|
|
88
|
+
dklen: opts.dklen || 32,
|
|
89
|
+
salt: salt.toString('hex')
|
|
90
|
+
};
|
|
91
|
+
if (kdf === 'pbkdf2') {
|
|
92
|
+
kdfparams.c = opts.c || 262144;
|
|
93
|
+
kdfparams.prf = 'hmac-sha256';
|
|
94
|
+
derivedKey = crypto.pbkdf2Sync(Buffer.from(password), salt, kdfparams.c, kdfparams.dklen, 'sha256');
|
|
95
|
+
}
|
|
96
|
+
else if (kdf === 'scrypt') {
|
|
97
|
+
// FIXME: support progress reporting callback
|
|
98
|
+
kdfparams.n = opts.n || 262144;
|
|
99
|
+
kdfparams.r = opts.r || 8;
|
|
100
|
+
kdfparams.p = opts.p || 1;
|
|
101
|
+
derivedKey = scrypt(Buffer.from(password), salt, kdfparams.n, kdfparams.r, kdfparams.p, kdfparams.dklen);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
throw new Error('Unsupported kdf');
|
|
105
|
+
}
|
|
106
|
+
const cipher = crypto.createCipheriv(opts.cipher || 'aes-128-ctr', derivedKey.slice(0, 16), iv);
|
|
107
|
+
if (!cipher) {
|
|
108
|
+
throw new Error('Unsupported cipher');
|
|
109
|
+
}
|
|
110
|
+
const ciphertext = Buffer.concat([cipher.update(this.privKey), cipher.final()]);
|
|
111
|
+
const mac = ethUtil.keccak(Buffer.concat([derivedKey.slice(16, 32), ciphertext]));
|
|
112
|
+
const obj = {
|
|
113
|
+
version: 3,
|
|
114
|
+
id: uuidv4({
|
|
115
|
+
random: opts.uuid || crypto.randomBytes(16)
|
|
116
|
+
}),
|
|
117
|
+
address: this.getAddress().toString('hex'),
|
|
118
|
+
Crypto: {
|
|
119
|
+
ciphertext: ciphertext.toString('hex'),
|
|
120
|
+
cipherparams: {
|
|
121
|
+
iv: iv.toString('hex')
|
|
122
|
+
},
|
|
123
|
+
cipher: opts.cipher || 'aes-128-ctr',
|
|
124
|
+
kdf: kdf,
|
|
125
|
+
kdfparams: kdfparams,
|
|
126
|
+
mac: mac.toString('hex')
|
|
127
|
+
},
|
|
128
|
+
// ComChain addition:
|
|
129
|
+
server: { name: opts.server_name }
|
|
130
|
+
};
|
|
131
|
+
if (typeof opts.message_key !== 'undefined') {
|
|
132
|
+
obj.message_key = opts.message_key;
|
|
133
|
+
}
|
|
134
|
+
return obj;
|
|
135
|
+
}
|
|
136
|
+
cipher(password, data, kdfparams) {
|
|
137
|
+
if (!kdfparams) {
|
|
138
|
+
throw new Error('Wallet.cipher(..) requires a 3rd parameter kdfparams.');
|
|
139
|
+
}
|
|
140
|
+
const iv = crypto.randomBytes(16);
|
|
141
|
+
const derivedKey = scrypt(Buffer.from(password), Buffer.from(kdfparams.salt, 'hex'), kdfparams.n, kdfparams.r, kdfparams.p, kdfparams.dklen);
|
|
142
|
+
const cipher = crypto.createCipheriv('aes-128-ctr', derivedKey.slice(0, 16), iv);
|
|
143
|
+
const ciphertext = Buffer.concat([cipher.update(data), cipher.final()]);
|
|
144
|
+
const mac = ethUtil.keccak(Buffer.concat([derivedKey.slice(16, 32), ciphertext]));
|
|
145
|
+
return {
|
|
146
|
+
crypto: {
|
|
147
|
+
ciphertext: ciphertext.toString('hex'),
|
|
148
|
+
cipherparams: {
|
|
149
|
+
iv: iv.toString('hex')
|
|
150
|
+
},
|
|
151
|
+
cipher: 'aes-128-ctr',
|
|
152
|
+
kdf: 'scrypt',
|
|
153
|
+
kdfparams: kdfparams,
|
|
154
|
+
mac: mac.toString('hex')
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
decifer(input, password) {
|
|
159
|
+
const json = (typeof input === 'object')
|
|
160
|
+
? input
|
|
161
|
+
: JSON.parse(input.toLowerCase());
|
|
162
|
+
const kdfparams = json.crypto.kdfparams;
|
|
163
|
+
const derivedKey = scrypt(Buffer.from(password), Buffer.from(kdfparams.salt, 'hex'), kdfparams.n, kdfparams.r, kdfparams.p, kdfparams.dklen);
|
|
164
|
+
const ciphertext = Buffer.from(json.crypto.ciphertext, 'hex');
|
|
165
|
+
const mac = ethUtil.keccak(Buffer.concat([derivedKey.slice(16, 32), ciphertext]));
|
|
166
|
+
if (mac.toString('hex') !== json.crypto.mac) {
|
|
167
|
+
throw new Error('Key derivation failed - possibly wrong passphrase');
|
|
168
|
+
}
|
|
169
|
+
const decipher = crypto.createDecipheriv(json.crypto.cipher, derivedKey.slice(0, 16), Buffer.from(json.crypto.cipherparams.iv, 'hex'));
|
|
170
|
+
return decipherBuffer(decipher, ciphertext);
|
|
171
|
+
}
|
|
172
|
+
toJSON() {
|
|
173
|
+
return {
|
|
174
|
+
address: this.getAddressString(),
|
|
175
|
+
checksumAddress: this.getChecksumAddressString(),
|
|
176
|
+
privKey: this.getPrivateKeyString(),
|
|
177
|
+
pubKey: this.getPublicKeyString(),
|
|
178
|
+
publisher: 'MyEtherWallet',
|
|
179
|
+
encrypted: false,
|
|
180
|
+
version: 2
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
static fromMyEtherWallet(input, password) {
|
|
184
|
+
const json = (typeof input === 'object') ? input : JSON.parse(input);
|
|
185
|
+
let privKey;
|
|
186
|
+
if (!json.locked) {
|
|
187
|
+
if (json.private.length !== 64) {
|
|
188
|
+
throw new Error('Invalid private key length');
|
|
189
|
+
}
|
|
190
|
+
privKey = Buffer.from(json.private, 'hex');
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
if (typeof password !== 'string') {
|
|
194
|
+
throw new Error('Password required');
|
|
195
|
+
}
|
|
196
|
+
if (password.length < 7) {
|
|
197
|
+
throw new Error('Password must be at least 7 characters');
|
|
198
|
+
}
|
|
199
|
+
let cipher = json.encrypted ? json.private.slice(0, 128) : json.private;
|
|
200
|
+
cipher = decodeCryptojsSalt(cipher);
|
|
201
|
+
const evp = evpKdf(Buffer.from(password), cipher.salt, {
|
|
202
|
+
keysize: 32,
|
|
203
|
+
ivsize: 16
|
|
204
|
+
});
|
|
205
|
+
const decipher = crypto.createDecipheriv('aes-256-cbc', evp.key, evp.iv);
|
|
206
|
+
privKey = decipherBuffer(decipher, Buffer.from(cipher.ciphertext));
|
|
207
|
+
privKey = Buffer.from((privKey.toString()), 'hex');
|
|
208
|
+
}
|
|
209
|
+
const wallet = new this(privKey);
|
|
210
|
+
if (wallet.getAddressString() !== json.address) {
|
|
211
|
+
throw new Error('Invalid private key or address');
|
|
212
|
+
}
|
|
213
|
+
return wallet;
|
|
214
|
+
}
|
|
215
|
+
static fromMyEtherWalletV2(input) {
|
|
216
|
+
const json = (typeof input === 'object') ? input : JSON.parse(input);
|
|
217
|
+
if (json.privKey.length !== 64) {
|
|
218
|
+
throw new Error('Invalid private key length');
|
|
219
|
+
}
|
|
220
|
+
;
|
|
221
|
+
const privKey = Buffer.from(json.privKey, 'hex');
|
|
222
|
+
return new this(privKey);
|
|
223
|
+
}
|
|
224
|
+
static fromEthSale(input, password) {
|
|
225
|
+
const json = (typeof input === 'object') ? input : JSON.parse(input);
|
|
226
|
+
const encseed = Buffer.from(json.encseed, 'hex');
|
|
227
|
+
const derivedKey = crypto.pbkdf2Sync(Buffer.from(password), Buffer.from(password), 2000, 32, 'sha256')
|
|
228
|
+
.slice(0, 16);
|
|
229
|
+
const decipher = crypto.createDecipheriv('aes-128-cbc', derivedKey, encseed.slice(0, 16));
|
|
230
|
+
const seed = decipherBuffer(decipher, encseed.slice(16));
|
|
231
|
+
const wallet = new this(ethUtil.keccak(seed));
|
|
232
|
+
if (wallet.getAddress().toString('hex') !== json.ethaddr) {
|
|
233
|
+
throw new Error('Decoded key mismatch - possibly wrong passphrase');
|
|
234
|
+
}
|
|
235
|
+
return wallet;
|
|
236
|
+
}
|
|
237
|
+
static fromMyEtherWalletKey(input, password) {
|
|
238
|
+
let cipher = input.slice(0, 128);
|
|
239
|
+
cipher = decodeCryptojsSalt(cipher);
|
|
240
|
+
const evp = evpKdf(Buffer.from(password), cipher.salt, {
|
|
241
|
+
keysize: 32,
|
|
242
|
+
ivsize: 16
|
|
243
|
+
});
|
|
244
|
+
const decipher = crypto.createDecipheriv('aes-256-cbc', evp.key, evp.iv);
|
|
245
|
+
let privKey = decipherBuffer(decipher, Buffer.from(cipher.ciphertext));
|
|
246
|
+
privKey = Buffer.from((privKey.toString()), 'hex');
|
|
247
|
+
return new this(privKey);
|
|
248
|
+
}
|
|
249
|
+
static fromV3(input, password, nonStrict) {
|
|
250
|
+
const json = (typeof input === 'object')
|
|
251
|
+
? input
|
|
252
|
+
: JSON.parse(nonStrict ? input.toLowerCase() : input);
|
|
253
|
+
if (json.version !== 3) {
|
|
254
|
+
throw new Error('Not a V3 wallet');
|
|
255
|
+
}
|
|
256
|
+
let derivedKey;
|
|
257
|
+
let kdfparams;
|
|
258
|
+
if (json.crypto.kdf === 'scrypt') {
|
|
259
|
+
kdfparams = json.crypto.kdfparams;
|
|
260
|
+
derivedKey = scrypt(Buffer.from(password), Buffer.from(kdfparams.salt, 'hex'), kdfparams.n, kdfparams.r, kdfparams.p, kdfparams.dklen);
|
|
261
|
+
}
|
|
262
|
+
else if (json.crypto.kdf === 'pbkdf2') {
|
|
263
|
+
kdfparams = json.crypto.kdfparams;
|
|
264
|
+
if (kdfparams.prf !== 'hmac-sha256') {
|
|
265
|
+
throw new Error('Unsupported parameters to PBKDF2');
|
|
266
|
+
}
|
|
267
|
+
derivedKey = crypto.pbkdf2Sync(Buffer.from(password), Buffer.from(kdfparams.salt, 'hex'), kdfparams.c, kdfparams.dklen, 'sha256');
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
throw new Error('Unsupported key derivation scheme');
|
|
271
|
+
}
|
|
272
|
+
const ciphertext = Buffer.from(json.crypto.ciphertext, 'hex');
|
|
273
|
+
const mac = ethUtil.keccak(Buffer.concat([derivedKey.slice(16, 32), ciphertext]));
|
|
274
|
+
if (mac.toString('hex') !== json.crypto.mac) {
|
|
275
|
+
throw new Error('Key derivation failed - possibly wrong passphrase');
|
|
276
|
+
}
|
|
277
|
+
const decipher = crypto.createDecipheriv(json.crypto.cipher, derivedKey.slice(0, 16), Buffer.from(json.crypto.cipherparams.iv, 'hex'));
|
|
278
|
+
const seed = decipherBuffer(decipher, ciphertext);
|
|
279
|
+
return new this(seed);
|
|
280
|
+
}
|
|
281
|
+
toV3String(password, opts) {
|
|
282
|
+
return JSON.stringify(this.toV3(password, opts));
|
|
283
|
+
}
|
|
284
|
+
getV3Filename(timestamp) {
|
|
285
|
+
const ts = timestamp ? new Date(timestamp) : new Date();
|
|
286
|
+
return `UTC--${ts.toJSON().replace(/:/g, '-')}--${this.getAddress().toString('hex')}`;
|
|
287
|
+
}
|
|
288
|
+
signMessage(msg) {
|
|
289
|
+
const msgHash = ethUtil.hashPersonalMessage(ethUtil.toBuffer(msg));
|
|
290
|
+
const signature = ethUtil.ecsign(msgHash, this.privKey);
|
|
291
|
+
return ethUtil.bufferToHex(Buffer.concat([signature.r, signature.s, ethUtil.toBuffer(signature.v)]));
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
//# sourceMappingURL=myetherwallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"myetherwallet.js","sourceRoot":"","sources":["../../src/ethereum/myetherwallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import Tx from 'ethereumjs-tx';
|
|
2
|
+
import * as ethFuncs from './ethFuncs';
|
|
3
|
+
import * as etherUnits from './etherUnits';
|
|
4
|
+
function isNumeric(n) {
|
|
5
|
+
return !isNaN(parseFloat(n)) && isFinite(n);
|
|
6
|
+
}
|
|
7
|
+
function isTxDataValid(txData) {
|
|
8
|
+
if (txData.to !== '0xCONTRACT' &&
|
|
9
|
+
!ethFuncs.validateEtherAddress(txData.to)) {
|
|
10
|
+
throw new Error('ERROR_6');
|
|
11
|
+
}
|
|
12
|
+
else if (!isNumeric(txData.value) ||
|
|
13
|
+
parseFloat(txData.value) < 0) {
|
|
14
|
+
throw new Error('ERROR_8');
|
|
15
|
+
}
|
|
16
|
+
else if (!isNumeric(txData.gasLimit) ||
|
|
17
|
+
parseFloat(txData.gasLimit) <= 0) {
|
|
18
|
+
throw new Error('ERROR_9');
|
|
19
|
+
}
|
|
20
|
+
else if (!ethFuncs.validateHexString(txData.data)) {
|
|
21
|
+
throw new Error('ERROR_10');
|
|
22
|
+
}
|
|
23
|
+
if (txData.to === '0xCONTRACT')
|
|
24
|
+
txData.to = '';
|
|
25
|
+
}
|
|
26
|
+
export function generateTx(txData, data) {
|
|
27
|
+
try {
|
|
28
|
+
isTxDataValid(txData);
|
|
29
|
+
const rawTx = {
|
|
30
|
+
nonce: ethFuncs.sanitizeHex(data.nonce),
|
|
31
|
+
gasPrice: ethFuncs.sanitizeHex(ethFuncs.addTinyMoreToGas(data.gasprice)),
|
|
32
|
+
gasLimit: ethFuncs.sanitizeHex(ethFuncs.decimalToHex(txData.gasLimit)),
|
|
33
|
+
to: ethFuncs.sanitizeHex(txData.to),
|
|
34
|
+
value: ethFuncs.sanitizeHex(ethFuncs.decimalToHex(etherUnits.toWei(txData.value, txData.unit))),
|
|
35
|
+
data: ethFuncs.sanitizeHex(txData.data)
|
|
36
|
+
};
|
|
37
|
+
const eTx = new Tx(rawTx);
|
|
38
|
+
eTx.sign(Buffer.from(txData.key, 'hex'));
|
|
39
|
+
rawTx.rawTx = JSON.stringify(rawTx);
|
|
40
|
+
rawTx.signedTx = '0x' + eTx.serialize().toString('hex');
|
|
41
|
+
rawTx.isError = false;
|
|
42
|
+
return rawTx;
|
|
43
|
+
}
|
|
44
|
+
catch (e) {
|
|
45
|
+
return {
|
|
46
|
+
isError: true,
|
|
47
|
+
error: e
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=uiFuncs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uiFuncs.js","sourceRoot":"","sources":["../../src/ethereum/uiFuncs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,eAAe,CAAA;AAC9B,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAA;AAG1C,SAAS,SAAS,CAAE,CAAC;IACnB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAA;AAC7C,CAAC;AAED,SAAS,aAAa,CAAE,MAAM;IAC5B,IAAI,MAAM,CAAC,EAAE,KAAK,YAAY;QAC1B,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;QAC7C,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAA;KAC3B;SAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;QACxB,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACvC,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAA;KAC3B;SAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC3B,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QAC3C,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAA;KAC3B;SAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QACnD,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAA;KAC5B;IACD,IAAI,MAAM,CAAC,EAAE,KAAK,YAAY;QAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAA;AAChD,CAAC;AAED,MAAM,UAAU,UAAU,CAAE,MAAM,EAAE,IAAI;IACtC,IAAI;QACF,aAAa,CAAC,MAAM,CAAC,CAAA;QAErB,MAAM,KAAK,GAAuB;YAChC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;YACvC,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAC5B,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3C,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAC5B,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACzC,EAAE,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,KAAK,EAAE,QAAQ,CAAC,WAAW,CACzB,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACrE,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;SACxC,CAAA;QACD,MAAM,GAAG,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,CAAA;QAEzB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;QACxC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QACnC,KAAK,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACvD,KAAK,CAAC,OAAO,GAAG,KAAK,CAAA;QACrB,OAAO,KAAK,CAAA;KACb;IAAC,OAAO,CAAC,EAAE;QACV,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,CAAC;SACT,CAAA;KACF;AACH,CAAC"}
|
package/build/index.d.ts
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import * as t from './type';
|
|
2
|
+
import HttpAbstract from './rest/http';
|
|
3
|
+
import EndpointAbstract from './rest/endpoint';
|
|
4
|
+
import AjaxReqAbstract from './rest/ajaxReq';
|
|
5
|
+
import ConnectionMgrAbstract from './connection';
|
|
6
|
+
import CustomizationAbstract from './customization';
|
|
7
|
+
import MessagingWalletAbstract from './wallet';
|
|
8
|
+
import BcReadAbstract from './bcRead';
|
|
9
|
+
import BcTransactionAbstract from './bcTransaction';
|
|
10
|
+
declare abstract class AbstractJsc3l {
|
|
11
|
+
protected abstract httpRequest: t.HttpRequest;
|
|
12
|
+
protected abstract persistentStore: t.IPersistentStore;
|
|
13
|
+
localDefaultConf: {};
|
|
14
|
+
endpoint: string;
|
|
15
|
+
_Endpoint: new (baseUrl: any) => EndpointAbstract;
|
|
16
|
+
_connection: null | ConnectionMgrAbstract;
|
|
17
|
+
_http: null | HttpAbstract;
|
|
18
|
+
constructor(localDefaultConf?: any);
|
|
19
|
+
/**
|
|
20
|
+
* `connection` facility needs to be lazy loaded as `this` and
|
|
21
|
+
* abstract `httpRequest` is not available in constructor.
|
|
22
|
+
*/
|
|
23
|
+
get connection(): ConnectionMgrAbstract;
|
|
24
|
+
/**
|
|
25
|
+
* `Endpoint` class is a facility that needs to be lazy loaded as
|
|
26
|
+
* `this` and abstract `httpRequest` is not available in
|
|
27
|
+
* constructor.
|
|
28
|
+
*/
|
|
29
|
+
get Endpoint(): new (baseUrl: any) => EndpointAbstract;
|
|
30
|
+
/**
|
|
31
|
+
* 'http' facility needs to be lazy loaded as 'this' and abstract
|
|
32
|
+
* httpRequest is not available in constructor.
|
|
33
|
+
*/
|
|
34
|
+
get http(): HttpAbstract;
|
|
35
|
+
getAjaxReq(endpointUrl: string): AjaxReqAbstract;
|
|
36
|
+
/**
|
|
37
|
+
* `getConfJson` check persistent storage for configuration for
|
|
38
|
+
* given currency, otherwise will use the given repo to fetch
|
|
39
|
+
* it (and save it in persistent storage).
|
|
40
|
+
*/
|
|
41
|
+
getConfig(repo: string, currencyName: string): Promise<any>;
|
|
42
|
+
/**
|
|
43
|
+
* `getConfJson` check persistent storage for configuration for
|
|
44
|
+
* given currency, otherwise will use the given repo to fetch
|
|
45
|
+
* it (and save it in persistent storage).
|
|
46
|
+
*/
|
|
47
|
+
getCustomization(config: any): CustomizationAbstract;
|
|
48
|
+
getWallet(endpointUrl: string, currencyName: string, unlockUrl: string): new () => MessagingWalletAbstract;
|
|
49
|
+
getBcRead(endpointUrl: any, contracts: any): BcReadAbstract;
|
|
50
|
+
getBcTransaction(endpointUrl: any, contracts: any): BcTransactionAbstract;
|
|
51
|
+
_currencyMgrPromises: {};
|
|
52
|
+
getCurrencyMgr(currencyName: string, endpointUrl?: string, repoUrl?: string): Promise<any>;
|
|
53
|
+
_getCurrencyMgr(currencyName: string, endpointUrl?: string, repoUrl?: string): Promise<any>;
|
|
54
|
+
}
|
|
55
|
+
declare abstract class IntegratedJsc3lAbstract extends AbstractJsc3l {
|
|
56
|
+
/**
|
|
57
|
+
* `ajaxReq` depends on a loaded endpoint in
|
|
58
|
+
* `this.connection.endpoint` obtained through
|
|
59
|
+
* `this.endpoint.acquireEndPoint(..)`. XXXvlab: We could cache the
|
|
60
|
+
* result with endpoint being a key.
|
|
61
|
+
*/
|
|
62
|
+
get ajaxReq(): AjaxReqAbstract;
|
|
63
|
+
/**
|
|
64
|
+
* `customization` depends on a local configuration being available
|
|
65
|
+
* through a previous call to `this.connection.getConfJSON(..)`
|
|
66
|
+
*
|
|
67
|
+
* XXXvlab: We could cache the result with result of
|
|
68
|
+
* `connection.getLocalConf()` being the key.
|
|
69
|
+
*/
|
|
70
|
+
get customization(): CustomizationAbstract;
|
|
71
|
+
/**
|
|
72
|
+
* `wallet` depends on both:
|
|
73
|
+
* - a local configuration (only for the `currencyName`) being
|
|
74
|
+
* available through a previous call to
|
|
75
|
+
* `this.connection.getConfJSON(..)`
|
|
76
|
+
* - a loaded endpoint in `this.connection.endpoint` obtained
|
|
77
|
+
* through `this.endpoint.acquireEndPoint(..)`.
|
|
78
|
+
*
|
|
79
|
+
* XXXvlab: We could cache the result with result of
|
|
80
|
+
* `connection.getLocalConf()` and `this.connection.endpoint` being
|
|
81
|
+
* the keys.
|
|
82
|
+
*/
|
|
83
|
+
get wallet(): MessagingWalletAbstract["constructor"];
|
|
84
|
+
/**
|
|
85
|
+
* `bcRead` access depends on both:
|
|
86
|
+
* - a local configuration (only for contracts information) being
|
|
87
|
+
* available through a previous call to
|
|
88
|
+
* `this.connection.getConfJSON(..)`
|
|
89
|
+
* - a loaded endpoint in `this.connection.endpoint` obtained through
|
|
90
|
+
* `this.endpoint.acquireEndPoint(..)`.
|
|
91
|
+
*
|
|
92
|
+
* XXXvlab: We could cache the result with result of
|
|
93
|
+
* `connection.getLocalConf()` and `this.connection.endpoint` being
|
|
94
|
+
* the keys.
|
|
95
|
+
*/
|
|
96
|
+
get bcRead(): BcReadAbstract;
|
|
97
|
+
/**
|
|
98
|
+
* `bcTransaction` access depends on both:
|
|
99
|
+
* - a local configuration (only for contracts information) being
|
|
100
|
+
* available through a previous call to
|
|
101
|
+
* `this.connection.getConfJSON(..)`
|
|
102
|
+
* - a loaded endpoint in `this.connection.endpoint` obtained through
|
|
103
|
+
* `this.endpoint.acquireEndPoint(..)`.
|
|
104
|
+
*
|
|
105
|
+
* XXXvlab: We could cache the result with result of
|
|
106
|
+
* `connection.getLocalConf()` and `this.connection.endpoint` being
|
|
107
|
+
* the keys.
|
|
108
|
+
*/
|
|
109
|
+
get bcTransaction(): BcTransactionAbstract;
|
|
110
|
+
}
|
|
111
|
+
export default IntegratedJsc3lAbstract;
|