@ledgerhq/hw-app-trx 6.24.2-monorepo.0 → 6.24.2-monorepo.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/.turbo/turbo-build.log +2 -2
- package/CHANGELOG.md +9 -0
- package/lib/Trx.d.ts +92 -0
- package/lib/Trx.d.ts.map +1 -0
- package/lib/Trx.js +314 -0
- package/lib/Trx.js.map +1 -0
- package/lib/utils.d.ts +35 -0
- package/lib/utils.d.ts.map +1 -0
- package/lib/utils.js +99 -0
- package/lib/utils.js.map +1 -0
- package/lib-es/Trx.d.ts +92 -0
- package/lib-es/Trx.d.ts.map +1 -0
- package/lib-es/Trx.js +312 -0
- package/lib-es/Trx.js.map +1 -0
- package/lib-es/utils.d.ts +35 -0
- package/lib-es/utils.d.ts.map +1 -0
- package/lib-es/utils.js +89 -0
- package/lib-es/utils.js.map +1 -0
- package/package.json +4 -4
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
[32m@ledgerhq/hw-app-trx:build: [0mcache hit, replaying output [
|
|
1
|
+
[32m@ledgerhq/hw-app-trx:build: [0mcache hit, replaying output [2m8dcacbb6a49789b9[0m
|
|
2
2
|
[32m@ledgerhq/hw-app-trx:build: [0m
|
|
3
|
-
[32m@ledgerhq/hw-app-trx:build: [0m> @ledgerhq/hw-app-trx@6.24.1 build /Users/valmeida/projects/live/ledger-live/libs/ledgerjs/packages/hw-app-trx
|
|
3
|
+
[32m@ledgerhq/hw-app-trx:build: [0m> @ledgerhq/hw-app-trx@6.24.2-monorepo.1 build /Users/valmeida/projects/live/ledger-live/libs/ledgerjs/packages/hw-app-trx
|
|
4
4
|
[32m@ledgerhq/hw-app-trx:build: [0m> bash ../../script/build.sh
|
|
5
5
|
[32m@ledgerhq/hw-app-trx:build: [0m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# @ledgerhq/hw-app-trx
|
|
2
2
|
|
|
3
|
+
## 6.24.2-monorepo.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 1b6fec9db: monorepo prelease 2
|
|
8
|
+
- Updated dependencies [1b6fec9db]
|
|
9
|
+
- @ledgerhq/errors@6.10.1-monorepo.1
|
|
10
|
+
- @ledgerhq/hw-transport@6.24.2-monorepo.1
|
|
11
|
+
|
|
3
12
|
## 6.24.2-monorepo.0
|
|
4
13
|
|
|
5
14
|
### Patch Changes
|
package/lib/Trx.d.ts
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type Transport from "@ledgerhq/hw-transport";
|
|
3
|
+
/**
|
|
4
|
+
* Tron API
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* import Trx from "@ledgerhq/hw-app-trx";
|
|
8
|
+
* const trx = new Trx(transport)
|
|
9
|
+
*/
|
|
10
|
+
export default class Trx {
|
|
11
|
+
transport: Transport;
|
|
12
|
+
constructor(transport: Transport, scrambleKey?: string);
|
|
13
|
+
/**
|
|
14
|
+
* get Tron address for a given BIP 32 path.
|
|
15
|
+
* @param path a path in BIP 32 format
|
|
16
|
+
* @option boolDisplay optionally enable or not the display
|
|
17
|
+
* @return an object with a publicKey and address
|
|
18
|
+
* @example
|
|
19
|
+
* const address = await tron.getAddress("44'/195'/0'/0/0").then(o => o.address)
|
|
20
|
+
*/
|
|
21
|
+
getAddress(path: string, boolDisplay?: boolean): Promise<{
|
|
22
|
+
publicKey: string;
|
|
23
|
+
address: string;
|
|
24
|
+
}>;
|
|
25
|
+
getNextLength(tx: Buffer): number;
|
|
26
|
+
/**
|
|
27
|
+
* sign a Tron transaction with a given BIP 32 path and Token Names
|
|
28
|
+
*
|
|
29
|
+
* @param path a path in BIP 32 format
|
|
30
|
+
* @param rawTxHex a raw transaction hex string
|
|
31
|
+
* @param tokenSignatures Tokens Signatures array
|
|
32
|
+
* @option version pack message based on ledger firmware version
|
|
33
|
+
* @option smartContract boolean hack to set limit buffer on ledger device
|
|
34
|
+
* @return a signature as hex string
|
|
35
|
+
* @example
|
|
36
|
+
* const signature = await tron.signTransaction("44'/195'/0'/0/0", "0a02f5942208704dda506d59dceb40f0f4978f802e5a69080112650a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412340a1541978dbd103cfe59c35e753d09dd44ae1ae64621c7121541e2ae49db6a70b9b4757d2137a43b69b24a445780188ef8b5ba0470cbb5948f802e", [], 105);
|
|
37
|
+
*/
|
|
38
|
+
signTransaction(path: string, rawTxHex: string, tokenSignatures: string[]): Promise<string>;
|
|
39
|
+
/**
|
|
40
|
+
* sign a Tron transaction hash with a given BIP 32 path
|
|
41
|
+
*
|
|
42
|
+
* @param path a path in BIP 32 format
|
|
43
|
+
* @param rawTxHex a raw transaction hex string
|
|
44
|
+
* @return a signature as hex string
|
|
45
|
+
* @example
|
|
46
|
+
* const signature = await tron.signTransactionHash("44'/195'/0'/0/0", "25b18a55f86afb10e7aca38d0073d04c80397c6636069193953fdefaea0b8369");
|
|
47
|
+
*/
|
|
48
|
+
signTransactionHash(path: string, rawTxHashHex: string): Promise<string>;
|
|
49
|
+
/**
|
|
50
|
+
* get the version of the Tron app installed on the hardware device
|
|
51
|
+
*
|
|
52
|
+
* @return an object with a version
|
|
53
|
+
* @example
|
|
54
|
+
* const result = await tron.getAppConfiguration();
|
|
55
|
+
* {
|
|
56
|
+
* "version": "0.1.5",
|
|
57
|
+
* "versionN": "105".
|
|
58
|
+
* "allowData": false,
|
|
59
|
+
* "allowContract": false,
|
|
60
|
+
* "truncateAddress": false,
|
|
61
|
+
* "signByHash": false
|
|
62
|
+
* }
|
|
63
|
+
*/
|
|
64
|
+
getAppConfiguration(): Promise<{
|
|
65
|
+
allowContract: boolean;
|
|
66
|
+
truncateAddress: boolean;
|
|
67
|
+
allowData: boolean;
|
|
68
|
+
signByHash: boolean;
|
|
69
|
+
version: string;
|
|
70
|
+
versionN: number;
|
|
71
|
+
}>;
|
|
72
|
+
/**
|
|
73
|
+
* sign a Tron Message with a given BIP 32 path
|
|
74
|
+
*
|
|
75
|
+
* @param path a path in BIP 32 format
|
|
76
|
+
* @param message hex string to sign
|
|
77
|
+
* @return a signature as hex string
|
|
78
|
+
* @example
|
|
79
|
+
* const signature = await tron.signPersonalMessage("44'/195'/0'/0/0", "43727970746f436861696e2d54726f6e5352204c6564676572205472616e73616374696f6e73205465737473");
|
|
80
|
+
*/
|
|
81
|
+
signPersonalMessage(path: string, messageHex: string): Promise<string>;
|
|
82
|
+
/**
|
|
83
|
+
* get Tron address for a given BIP 32 path.
|
|
84
|
+
* @param path a path in BIP 32 format
|
|
85
|
+
* @param publicKey address public key to generate pair key
|
|
86
|
+
* @return shared key hex string,
|
|
87
|
+
* @example
|
|
88
|
+
* const signature = await tron.getECDHPairKey("44'/195'/0'/0/0", "04ff21f8e64d3a3c0198edfbb7afdc79be959432e92e2f8a1984bb436a414b8edcec0345aad0c1bf7da04fd036dd7f9f617e30669224283d950fab9dd84831dc83");
|
|
89
|
+
*/
|
|
90
|
+
getECDHPairKey(path: string, publicKey: string): Promise<string>;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=Trx.d.ts.map
|
package/lib/Trx.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Trx.d.ts","sourceRoot":"","sources":["../src/Trx.ts"],"names":[],"mappings":";AAmBA,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAC;AAoBpD;;;;;;GAMG;AAEH,MAAM,CAAC,OAAO,OAAO,GAAG;IACtB,SAAS,EAAE,SAAS,CAAC;gBAET,SAAS,EAAE,SAAS,EAAE,WAAW,SAAQ;IAgBrD;;;;;;;OAOG;IACH,UAAU,CACR,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAyBF,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAOjC;;;;;;;;;;;OAWG;IACH,eAAe,CACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,MAAM,CAAC;IA4ElB;;;;;;;;OAQG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAexE;;;;;;;;;;;;;;OAcG;IACH,mBAAmB,IAAI,OAAO,CAAC;QAC7B,aAAa,EAAE,OAAO,CAAC;QACvB,eAAe,EAAE,OAAO,CAAC;QACzB,SAAS,EAAE,OAAO,CAAC;QACnB,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAgCF;;;;;;;;OAQG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA+CtE;;;;;;;OAOG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAajE"}
|
package/lib/Trx.js
ADDED
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
/********************************************************************************
|
|
4
|
+
* Ledger Node JS API
|
|
5
|
+
* (c) 2016-2017 Ledger
|
|
6
|
+
*
|
|
7
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
* you may not use this file except in compliance with the License.
|
|
9
|
+
* You may obtain a copy of the License at
|
|
10
|
+
*
|
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
*
|
|
13
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
* See the License for the specific language governing permissions and
|
|
17
|
+
* limitations under the License.
|
|
18
|
+
********************************************************************************/
|
|
19
|
+
// FIXME drop:
|
|
20
|
+
var utils_1 = require("./utils");
|
|
21
|
+
var remapTransactionRelatedErrors = function (e) {
|
|
22
|
+
if (e && e.statusCode === 0x6a80) {
|
|
23
|
+
// TODO:
|
|
24
|
+
}
|
|
25
|
+
return e;
|
|
26
|
+
};
|
|
27
|
+
var PATH_SIZE = 4;
|
|
28
|
+
var PATHS_LENGTH_SIZE = 1;
|
|
29
|
+
var CLA = 0xe0;
|
|
30
|
+
var ADDRESS = 0x02;
|
|
31
|
+
var SIGN = 0x04;
|
|
32
|
+
var SIGN_HASH = 0x05;
|
|
33
|
+
var SIGN_MESSAGE = 0x08;
|
|
34
|
+
var ECDH_SECRET = 0x0a;
|
|
35
|
+
var VERSION = 0x06;
|
|
36
|
+
var CHUNK_SIZE = 250;
|
|
37
|
+
/**
|
|
38
|
+
* Tron API
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* import Trx from "@ledgerhq/hw-app-trx";
|
|
42
|
+
* const trx = new Trx(transport)
|
|
43
|
+
*/
|
|
44
|
+
var Trx = /** @class */ (function () {
|
|
45
|
+
function Trx(transport, scrambleKey) {
|
|
46
|
+
if (scrambleKey === void 0) { scrambleKey = "TRX"; }
|
|
47
|
+
this.transport = transport;
|
|
48
|
+
transport.decorateAppAPIMethods(this, [
|
|
49
|
+
"getAddress",
|
|
50
|
+
"getECDHPairKey",
|
|
51
|
+
"signTransaction",
|
|
52
|
+
"signTransactionHash",
|
|
53
|
+
"signPersonalMessage",
|
|
54
|
+
"getAppConfiguration",
|
|
55
|
+
], scrambleKey);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* get Tron address for a given BIP 32 path.
|
|
59
|
+
* @param path a path in BIP 32 format
|
|
60
|
+
* @option boolDisplay optionally enable or not the display
|
|
61
|
+
* @return an object with a publicKey and address
|
|
62
|
+
* @example
|
|
63
|
+
* const address = await tron.getAddress("44'/195'/0'/0/0").then(o => o.address)
|
|
64
|
+
*/
|
|
65
|
+
Trx.prototype.getAddress = function (path, boolDisplay) {
|
|
66
|
+
var paths = (0, utils_1.splitPath)(path);
|
|
67
|
+
var buffer = Buffer.alloc(PATHS_LENGTH_SIZE + paths.length * PATH_SIZE);
|
|
68
|
+
buffer[0] = paths.length;
|
|
69
|
+
paths.forEach(function (element, index) {
|
|
70
|
+
buffer.writeUInt32BE(element, 1 + 4 * index);
|
|
71
|
+
});
|
|
72
|
+
return this.transport
|
|
73
|
+
.send(CLA, ADDRESS, boolDisplay ? 0x01 : 0x00, 0x00, buffer)
|
|
74
|
+
.then(function (response) {
|
|
75
|
+
var publicKeyLength = response[0];
|
|
76
|
+
var addressLength = response[1 + publicKeyLength];
|
|
77
|
+
return {
|
|
78
|
+
publicKey: response.slice(1, 1 + publicKeyLength).toString("hex"),
|
|
79
|
+
address: response
|
|
80
|
+
.slice(1 + publicKeyLength + 1, 1 + publicKeyLength + 1 + addressLength)
|
|
81
|
+
.toString("ascii")
|
|
82
|
+
};
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
Trx.prototype.getNextLength = function (tx) {
|
|
86
|
+
var field = (0, utils_1.decodeVarint)(tx, 0);
|
|
87
|
+
var data = (0, utils_1.decodeVarint)(tx, field.pos);
|
|
88
|
+
if ((field.value & 0x07) === 0)
|
|
89
|
+
return data.pos;
|
|
90
|
+
return data.value + data.pos;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* sign a Tron transaction with a given BIP 32 path and Token Names
|
|
94
|
+
*
|
|
95
|
+
* @param path a path in BIP 32 format
|
|
96
|
+
* @param rawTxHex a raw transaction hex string
|
|
97
|
+
* @param tokenSignatures Tokens Signatures array
|
|
98
|
+
* @option version pack message based on ledger firmware version
|
|
99
|
+
* @option smartContract boolean hack to set limit buffer on ledger device
|
|
100
|
+
* @return a signature as hex string
|
|
101
|
+
* @example
|
|
102
|
+
* const signature = await tron.signTransaction("44'/195'/0'/0/0", "0a02f5942208704dda506d59dceb40f0f4978f802e5a69080112650a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412340a1541978dbd103cfe59c35e753d09dd44ae1ae64621c7121541e2ae49db6a70b9b4757d2137a43b69b24a445780188ef8b5ba0470cbb5948f802e", [], 105);
|
|
103
|
+
*/
|
|
104
|
+
Trx.prototype.signTransaction = function (path, rawTxHex, tokenSignatures) {
|
|
105
|
+
var _this = this;
|
|
106
|
+
var paths = (0, utils_1.splitPath)(path);
|
|
107
|
+
var rawTx = Buffer.from(rawTxHex, "hex");
|
|
108
|
+
var toSend = [];
|
|
109
|
+
var data = Buffer.alloc(PATHS_LENGTH_SIZE + paths.length * PATH_SIZE);
|
|
110
|
+
// write path for first chuck only
|
|
111
|
+
data[0] = paths.length;
|
|
112
|
+
paths.forEach(function (element, index) {
|
|
113
|
+
data.writeUInt32BE(element, 1 + 4 * index);
|
|
114
|
+
});
|
|
115
|
+
while (rawTx.length > 0) {
|
|
116
|
+
// get next message field
|
|
117
|
+
var newpos = this.getNextLength(rawTx);
|
|
118
|
+
if (newpos > CHUNK_SIZE)
|
|
119
|
+
throw new Error("Too many bytes to encode.");
|
|
120
|
+
if (data.length + newpos > CHUNK_SIZE) {
|
|
121
|
+
toSend.push(data);
|
|
122
|
+
data = Buffer.alloc(0);
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
// append data
|
|
126
|
+
data = Buffer.concat([data, rawTx.slice(0, newpos)]);
|
|
127
|
+
rawTx = rawTx.slice(newpos, rawTx.length);
|
|
128
|
+
}
|
|
129
|
+
toSend.push(data);
|
|
130
|
+
var startBytes = [];
|
|
131
|
+
var response;
|
|
132
|
+
var tokenPos = toSend.length;
|
|
133
|
+
if (tokenSignatures !== undefined) {
|
|
134
|
+
for (var i = 0; i < tokenSignatures.length; i += 1) {
|
|
135
|
+
var buffer = Buffer.from(tokenSignatures[i], "hex");
|
|
136
|
+
toSend.push(buffer);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// get startBytes
|
|
140
|
+
if (toSend.length === 1) {
|
|
141
|
+
startBytes.push(0x10);
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
startBytes.push(0x00);
|
|
145
|
+
for (var i = 1; i < toSend.length - 1; i += 1) {
|
|
146
|
+
if (i >= tokenPos) {
|
|
147
|
+
startBytes.push(0xa0 | 0x00 | (i - tokenPos)); // eslint-disable-line no-bitwise
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
startBytes.push(0x80);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (tokenSignatures !== undefined && tokenSignatures.length) {
|
|
154
|
+
startBytes.push(0xa0 | 0x08 | (tokenSignatures.length - 1)); // eslint-disable-line no-bitwise
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
startBytes.push(0x90);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return (0, utils_1.foreach)(toSend, function (data, i) {
|
|
161
|
+
return _this.transport
|
|
162
|
+
.send(CLA, SIGN, startBytes[i], 0x00, data)
|
|
163
|
+
.then(function (apduResponse) {
|
|
164
|
+
response = apduResponse;
|
|
165
|
+
});
|
|
166
|
+
}).then(function () {
|
|
167
|
+
return response.slice(0, 65).toString("hex");
|
|
168
|
+
}, function (e) {
|
|
169
|
+
throw remapTransactionRelatedErrors(e);
|
|
170
|
+
});
|
|
171
|
+
};
|
|
172
|
+
/**
|
|
173
|
+
* sign a Tron transaction hash with a given BIP 32 path
|
|
174
|
+
*
|
|
175
|
+
* @param path a path in BIP 32 format
|
|
176
|
+
* @param rawTxHex a raw transaction hex string
|
|
177
|
+
* @return a signature as hex string
|
|
178
|
+
* @example
|
|
179
|
+
* const signature = await tron.signTransactionHash("44'/195'/0'/0/0", "25b18a55f86afb10e7aca38d0073d04c80397c6636069193953fdefaea0b8369");
|
|
180
|
+
*/
|
|
181
|
+
Trx.prototype.signTransactionHash = function (path, rawTxHashHex) {
|
|
182
|
+
var paths = (0, utils_1.splitPath)(path);
|
|
183
|
+
var data = Buffer.alloc(PATHS_LENGTH_SIZE + paths.length * PATH_SIZE);
|
|
184
|
+
data[0] = paths.length;
|
|
185
|
+
paths.forEach(function (element, index) {
|
|
186
|
+
data.writeUInt32BE(element, 1 + 4 * index);
|
|
187
|
+
});
|
|
188
|
+
data = Buffer.concat([data, Buffer.from(rawTxHashHex, "hex")]);
|
|
189
|
+
return this.transport
|
|
190
|
+
.send(CLA, SIGN_HASH, 0x00, 0x00, data)
|
|
191
|
+
.then(function (response) {
|
|
192
|
+
return response.slice(0, 65).toString("hex");
|
|
193
|
+
});
|
|
194
|
+
};
|
|
195
|
+
/**
|
|
196
|
+
* get the version of the Tron app installed on the hardware device
|
|
197
|
+
*
|
|
198
|
+
* @return an object with a version
|
|
199
|
+
* @example
|
|
200
|
+
* const result = await tron.getAppConfiguration();
|
|
201
|
+
* {
|
|
202
|
+
* "version": "0.1.5",
|
|
203
|
+
* "versionN": "105".
|
|
204
|
+
* "allowData": false,
|
|
205
|
+
* "allowContract": false,
|
|
206
|
+
* "truncateAddress": false,
|
|
207
|
+
* "signByHash": false
|
|
208
|
+
* }
|
|
209
|
+
*/
|
|
210
|
+
Trx.prototype.getAppConfiguration = function () {
|
|
211
|
+
return this.transport.send(CLA, VERSION, 0x00, 0x00).then(function (response) {
|
|
212
|
+
// eslint-disable-next-line no-bitwise
|
|
213
|
+
var signByHash = (response[0] & (1 << 3)) > 0;
|
|
214
|
+
// eslint-disable-next-line no-bitwise
|
|
215
|
+
var truncateAddress = (response[0] & (1 << 2)) > 0;
|
|
216
|
+
// eslint-disable-next-line no-bitwise
|
|
217
|
+
var allowContract = (response[0] & (1 << 1)) > 0;
|
|
218
|
+
// eslint-disable-next-line no-bitwise
|
|
219
|
+
var allowData = (response[0] & (1 << 0)) > 0;
|
|
220
|
+
if (response[1] === 0 && response[2] === 1 && response[3] < 2) {
|
|
221
|
+
allowData = true;
|
|
222
|
+
allowContract = false;
|
|
223
|
+
}
|
|
224
|
+
if (response[1] === 0 && response[2] === 1 && response[3] < 5) {
|
|
225
|
+
truncateAddress = false;
|
|
226
|
+
}
|
|
227
|
+
var result = {
|
|
228
|
+
version: "".concat(response[1], ".").concat(response[2], ".").concat(response[3]),
|
|
229
|
+
versionN: response[1] * 10000 + response[2] * 100 + response[3],
|
|
230
|
+
allowData: allowData,
|
|
231
|
+
allowContract: allowContract,
|
|
232
|
+
truncateAddress: truncateAddress,
|
|
233
|
+
signByHash: signByHash
|
|
234
|
+
};
|
|
235
|
+
return result;
|
|
236
|
+
});
|
|
237
|
+
};
|
|
238
|
+
/**
|
|
239
|
+
* sign a Tron Message with a given BIP 32 path
|
|
240
|
+
*
|
|
241
|
+
* @param path a path in BIP 32 format
|
|
242
|
+
* @param message hex string to sign
|
|
243
|
+
* @return a signature as hex string
|
|
244
|
+
* @example
|
|
245
|
+
* const signature = await tron.signPersonalMessage("44'/195'/0'/0/0", "43727970746f436861696e2d54726f6e5352204c6564676572205472616e73616374696f6e73205465737473");
|
|
246
|
+
*/
|
|
247
|
+
Trx.prototype.signPersonalMessage = function (path, messageHex) {
|
|
248
|
+
var _this = this;
|
|
249
|
+
var paths = (0, utils_1.splitPath)(path);
|
|
250
|
+
var message = Buffer.from(messageHex, "hex");
|
|
251
|
+
var offset = 0;
|
|
252
|
+
var toSend = [];
|
|
253
|
+
var size = message.length.toString(16);
|
|
254
|
+
var sizePack = "00000000".substr(size.length) + size;
|
|
255
|
+
var packed = Buffer.concat([Buffer.from(sizePack, "hex"), message]);
|
|
256
|
+
var _loop_1 = function () {
|
|
257
|
+
// Use small buffer to be compatible with old and new protocol
|
|
258
|
+
var maxChunkSize = offset === 0 ? CHUNK_SIZE - 1 - paths.length * 4 : CHUNK_SIZE;
|
|
259
|
+
var chunkSize = offset + maxChunkSize > packed.length
|
|
260
|
+
? packed.length - offset
|
|
261
|
+
: maxChunkSize;
|
|
262
|
+
var buffer = Buffer.alloc(offset === 0 ? 1 + paths.length * 4 + chunkSize : chunkSize);
|
|
263
|
+
if (offset === 0) {
|
|
264
|
+
buffer[0] = paths.length;
|
|
265
|
+
paths.forEach(function (element, index) {
|
|
266
|
+
buffer.writeUInt32BE(element, 1 + 4 * index);
|
|
267
|
+
});
|
|
268
|
+
packed.copy(buffer, 1 + 4 * paths.length, offset, offset + chunkSize);
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
packed.copy(buffer, 0, offset, offset + chunkSize);
|
|
272
|
+
}
|
|
273
|
+
toSend.push(buffer);
|
|
274
|
+
offset += chunkSize;
|
|
275
|
+
};
|
|
276
|
+
while (offset < packed.length) {
|
|
277
|
+
_loop_1();
|
|
278
|
+
}
|
|
279
|
+
var response;
|
|
280
|
+
return (0, utils_1.foreach)(toSend, function (data, i) {
|
|
281
|
+
return _this.transport
|
|
282
|
+
.send(CLA, SIGN_MESSAGE, i === 0 ? 0x00 : 0x80, 0x00, data)
|
|
283
|
+
.then(function (apduResponse) {
|
|
284
|
+
response = apduResponse;
|
|
285
|
+
});
|
|
286
|
+
}).then(function () {
|
|
287
|
+
return response.slice(0, 65).toString("hex");
|
|
288
|
+
});
|
|
289
|
+
};
|
|
290
|
+
/**
|
|
291
|
+
* get Tron address for a given BIP 32 path.
|
|
292
|
+
* @param path a path in BIP 32 format
|
|
293
|
+
* @param publicKey address public key to generate pair key
|
|
294
|
+
* @return shared key hex string,
|
|
295
|
+
* @example
|
|
296
|
+
* const signature = await tron.getECDHPairKey("44'/195'/0'/0/0", "04ff21f8e64d3a3c0198edfbb7afdc79be959432e92e2f8a1984bb436a414b8edcec0345aad0c1bf7da04fd036dd7f9f617e30669224283d950fab9dd84831dc83");
|
|
297
|
+
*/
|
|
298
|
+
Trx.prototype.getECDHPairKey = function (path, publicKey) {
|
|
299
|
+
var paths = (0, utils_1.splitPath)(path);
|
|
300
|
+
var data = Buffer.from(publicKey, "hex");
|
|
301
|
+
var buffer = Buffer.alloc(1 + paths.length * 4 + data.length);
|
|
302
|
+
buffer[0] = paths.length;
|
|
303
|
+
paths.forEach(function (element, index) {
|
|
304
|
+
buffer.writeUInt32BE(element, 1 + 4 * index);
|
|
305
|
+
});
|
|
306
|
+
data.copy(buffer, 1 + 4 * paths.length, 0, data.length);
|
|
307
|
+
return this.transport
|
|
308
|
+
.send(CLA, ECDH_SECRET, 0x00, 0x01, buffer)
|
|
309
|
+
.then(function (response) { return response.slice(0, 65).toString("hex"); });
|
|
310
|
+
};
|
|
311
|
+
return Trx;
|
|
312
|
+
}());
|
|
313
|
+
exports["default"] = Trx;
|
|
314
|
+
//# sourceMappingURL=Trx.js.map
|
package/lib/Trx.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Trx.js","sourceRoot":"","sources":["../src/Trx.ts"],"names":[],"mappings":"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"}
|
package/lib/utils.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/********************************************************************************
|
|
3
|
+
* Ledger Node JS API
|
|
4
|
+
* (c) 2016-2017 Ledger
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
********************************************************************************/
|
|
18
|
+
declare type Defer<T> = {
|
|
19
|
+
promise: Promise<T>;
|
|
20
|
+
resolve: (arg0: T) => void;
|
|
21
|
+
reject: (arg0: any) => void;
|
|
22
|
+
};
|
|
23
|
+
export declare function defer<T>(): Defer<T>;
|
|
24
|
+
export declare function splitPath(path: string): number[];
|
|
25
|
+
export declare function eachSeries<A>(arr: A[], fun: (arg0: A) => Promise<any>): Promise<any>;
|
|
26
|
+
export declare function foreach<T, A>(arr: T[], callback: (arg0: T, arg1: number) => Promise<A>): Promise<A[]>;
|
|
27
|
+
export declare function doIf(condition: boolean, callback: () => any | Promise<any>): Promise<void>;
|
|
28
|
+
export declare function asyncWhile<T>(predicate: () => boolean, callback: () => Promise<T>): Promise<Array<T>>;
|
|
29
|
+
interface DecodeResult {
|
|
30
|
+
value: number;
|
|
31
|
+
pos: number;
|
|
32
|
+
}
|
|
33
|
+
export declare function decodeVarint(stream: Buffer, index: number): DecodeResult;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;kFAekF;AAClF,aAAK,KAAK,CAAC,CAAC,IAAI;IACd,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC3B,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CAC7B,CAAC;AACF,wBAAgB,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAanC;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBhD;AAED,wBAAgB,UAAU,CAAC,CAAC,EAC1B,GAAG,EAAE,CAAC,EAAE,EACR,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,GAC7B,OAAO,CAAC,GAAG,CAAC,CAEd;AACD,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAC1B,GAAG,EAAE,CAAC,EAAE,EACR,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAC9C,OAAO,CAAC,CAAC,EAAE,CAAC,CAYd;AACD,wBAAgB,IAAI,CAClB,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC,CAMf;AACD,wBAAgB,UAAU,CAAC,CAAC,EAC1B,SAAS,EAAE,MAAM,OAAO,EACxB,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAanB;AACD,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AACD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAuBxE"}
|
package/lib/utils.js
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
exports.decodeVarint = exports.asyncWhile = exports.doIf = exports.foreach = exports.eachSeries = exports.splitPath = exports.defer = void 0;
|
|
4
|
+
function defer() {
|
|
5
|
+
var resolve, reject;
|
|
6
|
+
var promise = new Promise(function (success, failure) {
|
|
7
|
+
resolve = success;
|
|
8
|
+
reject = failure;
|
|
9
|
+
});
|
|
10
|
+
if (!resolve || !reject)
|
|
11
|
+
throw "defer() error"; // this never happens and is just to make flow happy
|
|
12
|
+
return {
|
|
13
|
+
promise: promise,
|
|
14
|
+
resolve: resolve,
|
|
15
|
+
reject: reject
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
exports.defer = defer;
|
|
19
|
+
// TODO use bip32-path library
|
|
20
|
+
function splitPath(path) {
|
|
21
|
+
var result = [];
|
|
22
|
+
var components = path.split("/");
|
|
23
|
+
components.forEach(function (element) {
|
|
24
|
+
var number = parseInt(element, 10);
|
|
25
|
+
if (isNaN(number)) {
|
|
26
|
+
return; // FIXME shouldn't it throws instead?
|
|
27
|
+
}
|
|
28
|
+
if (element.length > 1 && element[element.length - 1] === "'") {
|
|
29
|
+
number += 0x80000000;
|
|
30
|
+
}
|
|
31
|
+
result.push(number);
|
|
32
|
+
});
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
exports.splitPath = splitPath;
|
|
36
|
+
// TODO use async await
|
|
37
|
+
function eachSeries(arr, fun) {
|
|
38
|
+
return arr.reduce(function (p, e) { return p.then(function () { return fun(e); }); }, Promise.resolve());
|
|
39
|
+
}
|
|
40
|
+
exports.eachSeries = eachSeries;
|
|
41
|
+
function foreach(arr, callback) {
|
|
42
|
+
function iterate(index, array, result) {
|
|
43
|
+
if (index >= array.length) {
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
else
|
|
47
|
+
return callback(array[index], index).then(function (res) {
|
|
48
|
+
result.push(res);
|
|
49
|
+
return iterate(index + 1, array, result);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return Promise.resolve().then(function () { return iterate(0, arr, []); });
|
|
53
|
+
}
|
|
54
|
+
exports.foreach = foreach;
|
|
55
|
+
function doIf(condition, callback) {
|
|
56
|
+
return Promise.resolve().then(function () {
|
|
57
|
+
if (condition) {
|
|
58
|
+
return callback();
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
exports.doIf = doIf;
|
|
63
|
+
function asyncWhile(predicate, callback) {
|
|
64
|
+
function iterate(result) {
|
|
65
|
+
if (!predicate()) {
|
|
66
|
+
return result;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
return callback().then(function (res) {
|
|
70
|
+
result.push(res);
|
|
71
|
+
return iterate(result);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return Promise.resolve([]).then(iterate);
|
|
76
|
+
}
|
|
77
|
+
exports.asyncWhile = asyncWhile;
|
|
78
|
+
function decodeVarint(stream, index) {
|
|
79
|
+
var result = 0;
|
|
80
|
+
var shift = 0;
|
|
81
|
+
var pos = index;
|
|
82
|
+
// eslint-disable-next-line no-constant-condition
|
|
83
|
+
while (shift < 64) {
|
|
84
|
+
var b = stream[pos];
|
|
85
|
+
result |= (b & 0x7f) << shift;
|
|
86
|
+
pos += 1;
|
|
87
|
+
if (!(b & 0x80)) {
|
|
88
|
+
result &= 0xffffffff;
|
|
89
|
+
return {
|
|
90
|
+
value: result,
|
|
91
|
+
pos: pos
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
shift += 7;
|
|
95
|
+
}
|
|
96
|
+
throw new Error("Too many bytes when decoding varint.");
|
|
97
|
+
}
|
|
98
|
+
exports.decodeVarint = decodeVarint;
|
|
99
|
+
//# sourceMappingURL=utils.js.map
|
package/lib/utils.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/lib-es/Trx.d.ts
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type Transport from "@ledgerhq/hw-transport";
|
|
3
|
+
/**
|
|
4
|
+
* Tron API
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* import Trx from "@ledgerhq/hw-app-trx";
|
|
8
|
+
* const trx = new Trx(transport)
|
|
9
|
+
*/
|
|
10
|
+
export default class Trx {
|
|
11
|
+
transport: Transport;
|
|
12
|
+
constructor(transport: Transport, scrambleKey?: string);
|
|
13
|
+
/**
|
|
14
|
+
* get Tron address for a given BIP 32 path.
|
|
15
|
+
* @param path a path in BIP 32 format
|
|
16
|
+
* @option boolDisplay optionally enable or not the display
|
|
17
|
+
* @return an object with a publicKey and address
|
|
18
|
+
* @example
|
|
19
|
+
* const address = await tron.getAddress("44'/195'/0'/0/0").then(o => o.address)
|
|
20
|
+
*/
|
|
21
|
+
getAddress(path: string, boolDisplay?: boolean): Promise<{
|
|
22
|
+
publicKey: string;
|
|
23
|
+
address: string;
|
|
24
|
+
}>;
|
|
25
|
+
getNextLength(tx: Buffer): number;
|
|
26
|
+
/**
|
|
27
|
+
* sign a Tron transaction with a given BIP 32 path and Token Names
|
|
28
|
+
*
|
|
29
|
+
* @param path a path in BIP 32 format
|
|
30
|
+
* @param rawTxHex a raw transaction hex string
|
|
31
|
+
* @param tokenSignatures Tokens Signatures array
|
|
32
|
+
* @option version pack message based on ledger firmware version
|
|
33
|
+
* @option smartContract boolean hack to set limit buffer on ledger device
|
|
34
|
+
* @return a signature as hex string
|
|
35
|
+
* @example
|
|
36
|
+
* const signature = await tron.signTransaction("44'/195'/0'/0/0", "0a02f5942208704dda506d59dceb40f0f4978f802e5a69080112650a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412340a1541978dbd103cfe59c35e753d09dd44ae1ae64621c7121541e2ae49db6a70b9b4757d2137a43b69b24a445780188ef8b5ba0470cbb5948f802e", [], 105);
|
|
37
|
+
*/
|
|
38
|
+
signTransaction(path: string, rawTxHex: string, tokenSignatures: string[]): Promise<string>;
|
|
39
|
+
/**
|
|
40
|
+
* sign a Tron transaction hash with a given BIP 32 path
|
|
41
|
+
*
|
|
42
|
+
* @param path a path in BIP 32 format
|
|
43
|
+
* @param rawTxHex a raw transaction hex string
|
|
44
|
+
* @return a signature as hex string
|
|
45
|
+
* @example
|
|
46
|
+
* const signature = await tron.signTransactionHash("44'/195'/0'/0/0", "25b18a55f86afb10e7aca38d0073d04c80397c6636069193953fdefaea0b8369");
|
|
47
|
+
*/
|
|
48
|
+
signTransactionHash(path: string, rawTxHashHex: string): Promise<string>;
|
|
49
|
+
/**
|
|
50
|
+
* get the version of the Tron app installed on the hardware device
|
|
51
|
+
*
|
|
52
|
+
* @return an object with a version
|
|
53
|
+
* @example
|
|
54
|
+
* const result = await tron.getAppConfiguration();
|
|
55
|
+
* {
|
|
56
|
+
* "version": "0.1.5",
|
|
57
|
+
* "versionN": "105".
|
|
58
|
+
* "allowData": false,
|
|
59
|
+
* "allowContract": false,
|
|
60
|
+
* "truncateAddress": false,
|
|
61
|
+
* "signByHash": false
|
|
62
|
+
* }
|
|
63
|
+
*/
|
|
64
|
+
getAppConfiguration(): Promise<{
|
|
65
|
+
allowContract: boolean;
|
|
66
|
+
truncateAddress: boolean;
|
|
67
|
+
allowData: boolean;
|
|
68
|
+
signByHash: boolean;
|
|
69
|
+
version: string;
|
|
70
|
+
versionN: number;
|
|
71
|
+
}>;
|
|
72
|
+
/**
|
|
73
|
+
* sign a Tron Message with a given BIP 32 path
|
|
74
|
+
*
|
|
75
|
+
* @param path a path in BIP 32 format
|
|
76
|
+
* @param message hex string to sign
|
|
77
|
+
* @return a signature as hex string
|
|
78
|
+
* @example
|
|
79
|
+
* const signature = await tron.signPersonalMessage("44'/195'/0'/0/0", "43727970746f436861696e2d54726f6e5352204c6564676572205472616e73616374696f6e73205465737473");
|
|
80
|
+
*/
|
|
81
|
+
signPersonalMessage(path: string, messageHex: string): Promise<string>;
|
|
82
|
+
/**
|
|
83
|
+
* get Tron address for a given BIP 32 path.
|
|
84
|
+
* @param path a path in BIP 32 format
|
|
85
|
+
* @param publicKey address public key to generate pair key
|
|
86
|
+
* @return shared key hex string,
|
|
87
|
+
* @example
|
|
88
|
+
* const signature = await tron.getECDHPairKey("44'/195'/0'/0/0", "04ff21f8e64d3a3c0198edfbb7afdc79be959432e92e2f8a1984bb436a414b8edcec0345aad0c1bf7da04fd036dd7f9f617e30669224283d950fab9dd84831dc83");
|
|
89
|
+
*/
|
|
90
|
+
getECDHPairKey(path: string, publicKey: string): Promise<string>;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=Trx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Trx.d.ts","sourceRoot":"","sources":["../src/Trx.ts"],"names":[],"mappings":";AAmBA,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAC;AAoBpD;;;;;;GAMG;AAEH,MAAM,CAAC,OAAO,OAAO,GAAG;IACtB,SAAS,EAAE,SAAS,CAAC;gBAET,SAAS,EAAE,SAAS,EAAE,WAAW,SAAQ;IAgBrD;;;;;;;OAOG;IACH,UAAU,CACR,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAyBF,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAOjC;;;;;;;;;;;OAWG;IACH,eAAe,CACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,MAAM,CAAC;IA4ElB;;;;;;;;OAQG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAexE;;;;;;;;;;;;;;OAcG;IACH,mBAAmB,IAAI,OAAO,CAAC;QAC7B,aAAa,EAAE,OAAO,CAAC;QACvB,eAAe,EAAE,OAAO,CAAC;QACzB,SAAS,EAAE,OAAO,CAAC;QACnB,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAgCF;;;;;;;;OAQG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA+CtE;;;;;;;OAOG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAajE"}
|
package/lib-es/Trx.js
ADDED
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Ledger Node JS API
|
|
3
|
+
* (c) 2016-2017 Ledger
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
********************************************************************************/
|
|
17
|
+
// FIXME drop:
|
|
18
|
+
import { splitPath, foreach, decodeVarint } from "./utils";
|
|
19
|
+
var remapTransactionRelatedErrors = function (e) {
|
|
20
|
+
if (e && e.statusCode === 0x6a80) {
|
|
21
|
+
// TODO:
|
|
22
|
+
}
|
|
23
|
+
return e;
|
|
24
|
+
};
|
|
25
|
+
var PATH_SIZE = 4;
|
|
26
|
+
var PATHS_LENGTH_SIZE = 1;
|
|
27
|
+
var CLA = 0xe0;
|
|
28
|
+
var ADDRESS = 0x02;
|
|
29
|
+
var SIGN = 0x04;
|
|
30
|
+
var SIGN_HASH = 0x05;
|
|
31
|
+
var SIGN_MESSAGE = 0x08;
|
|
32
|
+
var ECDH_SECRET = 0x0a;
|
|
33
|
+
var VERSION = 0x06;
|
|
34
|
+
var CHUNK_SIZE = 250;
|
|
35
|
+
/**
|
|
36
|
+
* Tron API
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* import Trx from "@ledgerhq/hw-app-trx";
|
|
40
|
+
* const trx = new Trx(transport)
|
|
41
|
+
*/
|
|
42
|
+
var Trx = /** @class */ (function () {
|
|
43
|
+
function Trx(transport, scrambleKey) {
|
|
44
|
+
if (scrambleKey === void 0) { scrambleKey = "TRX"; }
|
|
45
|
+
this.transport = transport;
|
|
46
|
+
transport.decorateAppAPIMethods(this, [
|
|
47
|
+
"getAddress",
|
|
48
|
+
"getECDHPairKey",
|
|
49
|
+
"signTransaction",
|
|
50
|
+
"signTransactionHash",
|
|
51
|
+
"signPersonalMessage",
|
|
52
|
+
"getAppConfiguration",
|
|
53
|
+
], scrambleKey);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* get Tron address for a given BIP 32 path.
|
|
57
|
+
* @param path a path in BIP 32 format
|
|
58
|
+
* @option boolDisplay optionally enable or not the display
|
|
59
|
+
* @return an object with a publicKey and address
|
|
60
|
+
* @example
|
|
61
|
+
* const address = await tron.getAddress("44'/195'/0'/0/0").then(o => o.address)
|
|
62
|
+
*/
|
|
63
|
+
Trx.prototype.getAddress = function (path, boolDisplay) {
|
|
64
|
+
var paths = splitPath(path);
|
|
65
|
+
var buffer = Buffer.alloc(PATHS_LENGTH_SIZE + paths.length * PATH_SIZE);
|
|
66
|
+
buffer[0] = paths.length;
|
|
67
|
+
paths.forEach(function (element, index) {
|
|
68
|
+
buffer.writeUInt32BE(element, 1 + 4 * index);
|
|
69
|
+
});
|
|
70
|
+
return this.transport
|
|
71
|
+
.send(CLA, ADDRESS, boolDisplay ? 0x01 : 0x00, 0x00, buffer)
|
|
72
|
+
.then(function (response) {
|
|
73
|
+
var publicKeyLength = response[0];
|
|
74
|
+
var addressLength = response[1 + publicKeyLength];
|
|
75
|
+
return {
|
|
76
|
+
publicKey: response.slice(1, 1 + publicKeyLength).toString("hex"),
|
|
77
|
+
address: response
|
|
78
|
+
.slice(1 + publicKeyLength + 1, 1 + publicKeyLength + 1 + addressLength)
|
|
79
|
+
.toString("ascii")
|
|
80
|
+
};
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
Trx.prototype.getNextLength = function (tx) {
|
|
84
|
+
var field = decodeVarint(tx, 0);
|
|
85
|
+
var data = decodeVarint(tx, field.pos);
|
|
86
|
+
if ((field.value & 0x07) === 0)
|
|
87
|
+
return data.pos;
|
|
88
|
+
return data.value + data.pos;
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* sign a Tron transaction with a given BIP 32 path and Token Names
|
|
92
|
+
*
|
|
93
|
+
* @param path a path in BIP 32 format
|
|
94
|
+
* @param rawTxHex a raw transaction hex string
|
|
95
|
+
* @param tokenSignatures Tokens Signatures array
|
|
96
|
+
* @option version pack message based on ledger firmware version
|
|
97
|
+
* @option smartContract boolean hack to set limit buffer on ledger device
|
|
98
|
+
* @return a signature as hex string
|
|
99
|
+
* @example
|
|
100
|
+
* const signature = await tron.signTransaction("44'/195'/0'/0/0", "0a02f5942208704dda506d59dceb40f0f4978f802e5a69080112650a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412340a1541978dbd103cfe59c35e753d09dd44ae1ae64621c7121541e2ae49db6a70b9b4757d2137a43b69b24a445780188ef8b5ba0470cbb5948f802e", [], 105);
|
|
101
|
+
*/
|
|
102
|
+
Trx.prototype.signTransaction = function (path, rawTxHex, tokenSignatures) {
|
|
103
|
+
var _this = this;
|
|
104
|
+
var paths = splitPath(path);
|
|
105
|
+
var rawTx = Buffer.from(rawTxHex, "hex");
|
|
106
|
+
var toSend = [];
|
|
107
|
+
var data = Buffer.alloc(PATHS_LENGTH_SIZE + paths.length * PATH_SIZE);
|
|
108
|
+
// write path for first chuck only
|
|
109
|
+
data[0] = paths.length;
|
|
110
|
+
paths.forEach(function (element, index) {
|
|
111
|
+
data.writeUInt32BE(element, 1 + 4 * index);
|
|
112
|
+
});
|
|
113
|
+
while (rawTx.length > 0) {
|
|
114
|
+
// get next message field
|
|
115
|
+
var newpos = this.getNextLength(rawTx);
|
|
116
|
+
if (newpos > CHUNK_SIZE)
|
|
117
|
+
throw new Error("Too many bytes to encode.");
|
|
118
|
+
if (data.length + newpos > CHUNK_SIZE) {
|
|
119
|
+
toSend.push(data);
|
|
120
|
+
data = Buffer.alloc(0);
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
// append data
|
|
124
|
+
data = Buffer.concat([data, rawTx.slice(0, newpos)]);
|
|
125
|
+
rawTx = rawTx.slice(newpos, rawTx.length);
|
|
126
|
+
}
|
|
127
|
+
toSend.push(data);
|
|
128
|
+
var startBytes = [];
|
|
129
|
+
var response;
|
|
130
|
+
var tokenPos = toSend.length;
|
|
131
|
+
if (tokenSignatures !== undefined) {
|
|
132
|
+
for (var i = 0; i < tokenSignatures.length; i += 1) {
|
|
133
|
+
var buffer = Buffer.from(tokenSignatures[i], "hex");
|
|
134
|
+
toSend.push(buffer);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// get startBytes
|
|
138
|
+
if (toSend.length === 1) {
|
|
139
|
+
startBytes.push(0x10);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
startBytes.push(0x00);
|
|
143
|
+
for (var i = 1; i < toSend.length - 1; i += 1) {
|
|
144
|
+
if (i >= tokenPos) {
|
|
145
|
+
startBytes.push(0xa0 | 0x00 | (i - tokenPos)); // eslint-disable-line no-bitwise
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
startBytes.push(0x80);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
if (tokenSignatures !== undefined && tokenSignatures.length) {
|
|
152
|
+
startBytes.push(0xa0 | 0x08 | (tokenSignatures.length - 1)); // eslint-disable-line no-bitwise
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
startBytes.push(0x90);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return foreach(toSend, function (data, i) {
|
|
159
|
+
return _this.transport
|
|
160
|
+
.send(CLA, SIGN, startBytes[i], 0x00, data)
|
|
161
|
+
.then(function (apduResponse) {
|
|
162
|
+
response = apduResponse;
|
|
163
|
+
});
|
|
164
|
+
}).then(function () {
|
|
165
|
+
return response.slice(0, 65).toString("hex");
|
|
166
|
+
}, function (e) {
|
|
167
|
+
throw remapTransactionRelatedErrors(e);
|
|
168
|
+
});
|
|
169
|
+
};
|
|
170
|
+
/**
|
|
171
|
+
* sign a Tron transaction hash with a given BIP 32 path
|
|
172
|
+
*
|
|
173
|
+
* @param path a path in BIP 32 format
|
|
174
|
+
* @param rawTxHex a raw transaction hex string
|
|
175
|
+
* @return a signature as hex string
|
|
176
|
+
* @example
|
|
177
|
+
* const signature = await tron.signTransactionHash("44'/195'/0'/0/0", "25b18a55f86afb10e7aca38d0073d04c80397c6636069193953fdefaea0b8369");
|
|
178
|
+
*/
|
|
179
|
+
Trx.prototype.signTransactionHash = function (path, rawTxHashHex) {
|
|
180
|
+
var paths = splitPath(path);
|
|
181
|
+
var data = Buffer.alloc(PATHS_LENGTH_SIZE + paths.length * PATH_SIZE);
|
|
182
|
+
data[0] = paths.length;
|
|
183
|
+
paths.forEach(function (element, index) {
|
|
184
|
+
data.writeUInt32BE(element, 1 + 4 * index);
|
|
185
|
+
});
|
|
186
|
+
data = Buffer.concat([data, Buffer.from(rawTxHashHex, "hex")]);
|
|
187
|
+
return this.transport
|
|
188
|
+
.send(CLA, SIGN_HASH, 0x00, 0x00, data)
|
|
189
|
+
.then(function (response) {
|
|
190
|
+
return response.slice(0, 65).toString("hex");
|
|
191
|
+
});
|
|
192
|
+
};
|
|
193
|
+
/**
|
|
194
|
+
* get the version of the Tron app installed on the hardware device
|
|
195
|
+
*
|
|
196
|
+
* @return an object with a version
|
|
197
|
+
* @example
|
|
198
|
+
* const result = await tron.getAppConfiguration();
|
|
199
|
+
* {
|
|
200
|
+
* "version": "0.1.5",
|
|
201
|
+
* "versionN": "105".
|
|
202
|
+
* "allowData": false,
|
|
203
|
+
* "allowContract": false,
|
|
204
|
+
* "truncateAddress": false,
|
|
205
|
+
* "signByHash": false
|
|
206
|
+
* }
|
|
207
|
+
*/
|
|
208
|
+
Trx.prototype.getAppConfiguration = function () {
|
|
209
|
+
return this.transport.send(CLA, VERSION, 0x00, 0x00).then(function (response) {
|
|
210
|
+
// eslint-disable-next-line no-bitwise
|
|
211
|
+
var signByHash = (response[0] & (1 << 3)) > 0;
|
|
212
|
+
// eslint-disable-next-line no-bitwise
|
|
213
|
+
var truncateAddress = (response[0] & (1 << 2)) > 0;
|
|
214
|
+
// eslint-disable-next-line no-bitwise
|
|
215
|
+
var allowContract = (response[0] & (1 << 1)) > 0;
|
|
216
|
+
// eslint-disable-next-line no-bitwise
|
|
217
|
+
var allowData = (response[0] & (1 << 0)) > 0;
|
|
218
|
+
if (response[1] === 0 && response[2] === 1 && response[3] < 2) {
|
|
219
|
+
allowData = true;
|
|
220
|
+
allowContract = false;
|
|
221
|
+
}
|
|
222
|
+
if (response[1] === 0 && response[2] === 1 && response[3] < 5) {
|
|
223
|
+
truncateAddress = false;
|
|
224
|
+
}
|
|
225
|
+
var result = {
|
|
226
|
+
version: "".concat(response[1], ".").concat(response[2], ".").concat(response[3]),
|
|
227
|
+
versionN: response[1] * 10000 + response[2] * 100 + response[3],
|
|
228
|
+
allowData: allowData,
|
|
229
|
+
allowContract: allowContract,
|
|
230
|
+
truncateAddress: truncateAddress,
|
|
231
|
+
signByHash: signByHash
|
|
232
|
+
};
|
|
233
|
+
return result;
|
|
234
|
+
});
|
|
235
|
+
};
|
|
236
|
+
/**
|
|
237
|
+
* sign a Tron Message with a given BIP 32 path
|
|
238
|
+
*
|
|
239
|
+
* @param path a path in BIP 32 format
|
|
240
|
+
* @param message hex string to sign
|
|
241
|
+
* @return a signature as hex string
|
|
242
|
+
* @example
|
|
243
|
+
* const signature = await tron.signPersonalMessage("44'/195'/0'/0/0", "43727970746f436861696e2d54726f6e5352204c6564676572205472616e73616374696f6e73205465737473");
|
|
244
|
+
*/
|
|
245
|
+
Trx.prototype.signPersonalMessage = function (path, messageHex) {
|
|
246
|
+
var _this = this;
|
|
247
|
+
var paths = splitPath(path);
|
|
248
|
+
var message = Buffer.from(messageHex, "hex");
|
|
249
|
+
var offset = 0;
|
|
250
|
+
var toSend = [];
|
|
251
|
+
var size = message.length.toString(16);
|
|
252
|
+
var sizePack = "00000000".substr(size.length) + size;
|
|
253
|
+
var packed = Buffer.concat([Buffer.from(sizePack, "hex"), message]);
|
|
254
|
+
var _loop_1 = function () {
|
|
255
|
+
// Use small buffer to be compatible with old and new protocol
|
|
256
|
+
var maxChunkSize = offset === 0 ? CHUNK_SIZE - 1 - paths.length * 4 : CHUNK_SIZE;
|
|
257
|
+
var chunkSize = offset + maxChunkSize > packed.length
|
|
258
|
+
? packed.length - offset
|
|
259
|
+
: maxChunkSize;
|
|
260
|
+
var buffer = Buffer.alloc(offset === 0 ? 1 + paths.length * 4 + chunkSize : chunkSize);
|
|
261
|
+
if (offset === 0) {
|
|
262
|
+
buffer[0] = paths.length;
|
|
263
|
+
paths.forEach(function (element, index) {
|
|
264
|
+
buffer.writeUInt32BE(element, 1 + 4 * index);
|
|
265
|
+
});
|
|
266
|
+
packed.copy(buffer, 1 + 4 * paths.length, offset, offset + chunkSize);
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
packed.copy(buffer, 0, offset, offset + chunkSize);
|
|
270
|
+
}
|
|
271
|
+
toSend.push(buffer);
|
|
272
|
+
offset += chunkSize;
|
|
273
|
+
};
|
|
274
|
+
while (offset < packed.length) {
|
|
275
|
+
_loop_1();
|
|
276
|
+
}
|
|
277
|
+
var response;
|
|
278
|
+
return foreach(toSend, function (data, i) {
|
|
279
|
+
return _this.transport
|
|
280
|
+
.send(CLA, SIGN_MESSAGE, i === 0 ? 0x00 : 0x80, 0x00, data)
|
|
281
|
+
.then(function (apduResponse) {
|
|
282
|
+
response = apduResponse;
|
|
283
|
+
});
|
|
284
|
+
}).then(function () {
|
|
285
|
+
return response.slice(0, 65).toString("hex");
|
|
286
|
+
});
|
|
287
|
+
};
|
|
288
|
+
/**
|
|
289
|
+
* get Tron address for a given BIP 32 path.
|
|
290
|
+
* @param path a path in BIP 32 format
|
|
291
|
+
* @param publicKey address public key to generate pair key
|
|
292
|
+
* @return shared key hex string,
|
|
293
|
+
* @example
|
|
294
|
+
* const signature = await tron.getECDHPairKey("44'/195'/0'/0/0", "04ff21f8e64d3a3c0198edfbb7afdc79be959432e92e2f8a1984bb436a414b8edcec0345aad0c1bf7da04fd036dd7f9f617e30669224283d950fab9dd84831dc83");
|
|
295
|
+
*/
|
|
296
|
+
Trx.prototype.getECDHPairKey = function (path, publicKey) {
|
|
297
|
+
var paths = splitPath(path);
|
|
298
|
+
var data = Buffer.from(publicKey, "hex");
|
|
299
|
+
var buffer = Buffer.alloc(1 + paths.length * 4 + data.length);
|
|
300
|
+
buffer[0] = paths.length;
|
|
301
|
+
paths.forEach(function (element, index) {
|
|
302
|
+
buffer.writeUInt32BE(element, 1 + 4 * index);
|
|
303
|
+
});
|
|
304
|
+
data.copy(buffer, 1 + 4 * paths.length, 0, data.length);
|
|
305
|
+
return this.transport
|
|
306
|
+
.send(CLA, ECDH_SECRET, 0x00, 0x01, buffer)
|
|
307
|
+
.then(function (response) { return response.slice(0, 65).toString("hex"); });
|
|
308
|
+
};
|
|
309
|
+
return Trx;
|
|
310
|
+
}());
|
|
311
|
+
export default Trx;
|
|
312
|
+
//# sourceMappingURL=Trx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Trx.js","sourceRoot":"","sources":["../src/Trx.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/********************************************************************************
|
|
3
|
+
* Ledger Node JS API
|
|
4
|
+
* (c) 2016-2017 Ledger
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
********************************************************************************/
|
|
18
|
+
declare type Defer<T> = {
|
|
19
|
+
promise: Promise<T>;
|
|
20
|
+
resolve: (arg0: T) => void;
|
|
21
|
+
reject: (arg0: any) => void;
|
|
22
|
+
};
|
|
23
|
+
export declare function defer<T>(): Defer<T>;
|
|
24
|
+
export declare function splitPath(path: string): number[];
|
|
25
|
+
export declare function eachSeries<A>(arr: A[], fun: (arg0: A) => Promise<any>): Promise<any>;
|
|
26
|
+
export declare function foreach<T, A>(arr: T[], callback: (arg0: T, arg1: number) => Promise<A>): Promise<A[]>;
|
|
27
|
+
export declare function doIf(condition: boolean, callback: () => any | Promise<any>): Promise<void>;
|
|
28
|
+
export declare function asyncWhile<T>(predicate: () => boolean, callback: () => Promise<T>): Promise<Array<T>>;
|
|
29
|
+
interface DecodeResult {
|
|
30
|
+
value: number;
|
|
31
|
+
pos: number;
|
|
32
|
+
}
|
|
33
|
+
export declare function decodeVarint(stream: Buffer, index: number): DecodeResult;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;kFAekF;AAClF,aAAK,KAAK,CAAC,CAAC,IAAI;IACd,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC3B,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CAC7B,CAAC;AACF,wBAAgB,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAanC;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBhD;AAED,wBAAgB,UAAU,CAAC,CAAC,EAC1B,GAAG,EAAE,CAAC,EAAE,EACR,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,GAC7B,OAAO,CAAC,GAAG,CAAC,CAEd;AACD,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAC1B,GAAG,EAAE,CAAC,EAAE,EACR,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAC9C,OAAO,CAAC,CAAC,EAAE,CAAC,CAYd;AACD,wBAAgB,IAAI,CAClB,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC,CAMf;AACD,wBAAgB,UAAU,CAAC,CAAC,EAC1B,SAAS,EAAE,MAAM,OAAO,EACxB,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAanB;AACD,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AACD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAuBxE"}
|
package/lib-es/utils.js
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
export function defer() {
|
|
2
|
+
var resolve, reject;
|
|
3
|
+
var promise = new Promise(function (success, failure) {
|
|
4
|
+
resolve = success;
|
|
5
|
+
reject = failure;
|
|
6
|
+
});
|
|
7
|
+
if (!resolve || !reject)
|
|
8
|
+
throw "defer() error"; // this never happens and is just to make flow happy
|
|
9
|
+
return {
|
|
10
|
+
promise: promise,
|
|
11
|
+
resolve: resolve,
|
|
12
|
+
reject: reject
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
// TODO use bip32-path library
|
|
16
|
+
export function splitPath(path) {
|
|
17
|
+
var result = [];
|
|
18
|
+
var components = path.split("/");
|
|
19
|
+
components.forEach(function (element) {
|
|
20
|
+
var number = parseInt(element, 10);
|
|
21
|
+
if (isNaN(number)) {
|
|
22
|
+
return; // FIXME shouldn't it throws instead?
|
|
23
|
+
}
|
|
24
|
+
if (element.length > 1 && element[element.length - 1] === "'") {
|
|
25
|
+
number += 0x80000000;
|
|
26
|
+
}
|
|
27
|
+
result.push(number);
|
|
28
|
+
});
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
// TODO use async await
|
|
32
|
+
export function eachSeries(arr, fun) {
|
|
33
|
+
return arr.reduce(function (p, e) { return p.then(function () { return fun(e); }); }, Promise.resolve());
|
|
34
|
+
}
|
|
35
|
+
export function foreach(arr, callback) {
|
|
36
|
+
function iterate(index, array, result) {
|
|
37
|
+
if (index >= array.length) {
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
else
|
|
41
|
+
return callback(array[index], index).then(function (res) {
|
|
42
|
+
result.push(res);
|
|
43
|
+
return iterate(index + 1, array, result);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
return Promise.resolve().then(function () { return iterate(0, arr, []); });
|
|
47
|
+
}
|
|
48
|
+
export function doIf(condition, callback) {
|
|
49
|
+
return Promise.resolve().then(function () {
|
|
50
|
+
if (condition) {
|
|
51
|
+
return callback();
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
export function asyncWhile(predicate, callback) {
|
|
56
|
+
function iterate(result) {
|
|
57
|
+
if (!predicate()) {
|
|
58
|
+
return result;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
return callback().then(function (res) {
|
|
62
|
+
result.push(res);
|
|
63
|
+
return iterate(result);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return Promise.resolve([]).then(iterate);
|
|
68
|
+
}
|
|
69
|
+
export function decodeVarint(stream, index) {
|
|
70
|
+
var result = 0;
|
|
71
|
+
var shift = 0;
|
|
72
|
+
var pos = index;
|
|
73
|
+
// eslint-disable-next-line no-constant-condition
|
|
74
|
+
while (shift < 64) {
|
|
75
|
+
var b = stream[pos];
|
|
76
|
+
result |= (b & 0x7f) << shift;
|
|
77
|
+
pos += 1;
|
|
78
|
+
if (!(b & 0x80)) {
|
|
79
|
+
result &= 0xffffffff;
|
|
80
|
+
return {
|
|
81
|
+
value: result,
|
|
82
|
+
pos: pos
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
shift += 7;
|
|
86
|
+
}
|
|
87
|
+
throw new Error("Too many bytes when decoding varint.");
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/hw-app-trx",
|
|
3
|
-
"version": "6.24.2-monorepo.
|
|
3
|
+
"version": "6.24.2-monorepo.1",
|
|
4
4
|
"description": "Ledger Hardware Wallet Tron Application API",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Ledger",
|
|
@@ -27,11 +27,11 @@
|
|
|
27
27
|
"types": "lib/Trx.d.ts",
|
|
28
28
|
"license": "Apache-2.0",
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@ledgerhq/errors": "^6.10.1-monorepo.
|
|
31
|
-
"@ledgerhq/hw-transport": "^6.24.2-monorepo.
|
|
30
|
+
"@ledgerhq/errors": "^6.10.1-monorepo.1",
|
|
31
|
+
"@ledgerhq/hw-transport": "^6.24.2-monorepo.1"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@ledgerhq/hw-transport-mocker": "^6.24.2-monorepo.
|
|
34
|
+
"@ledgerhq/hw-transport-mocker": "^6.24.2-monorepo.1"
|
|
35
35
|
},
|
|
36
36
|
"gitHead": "dd0dea64b58e5a9125c8a422dcffd29e5ef6abec",
|
|
37
37
|
"scripts": {
|