@ledgerhq/hw-app-eth 6.21.3 → 6.22.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/README.md +66 -100
  2. package/erc20.js +1 -1
  3. package/lib/Eth.d.ts +30 -33
  4. package/lib/Eth.d.ts.map +1 -1
  5. package/lib/Eth.js +282 -324
  6. package/lib/Eth.js.map +1 -1
  7. package/lib/errors.d.ts +7 -0
  8. package/lib/errors.d.ts.map +1 -0
  9. package/lib/errors.js +7 -0
  10. package/lib/errors.js.map +1 -0
  11. package/lib/services/ledger/contracts.d.ts +14 -0
  12. package/lib/services/ledger/contracts.d.ts.map +1 -0
  13. package/lib/{contracts.js → services/ledger/contracts.js} +0 -0
  14. package/lib/services/ledger/contracts.js.map +1 -0
  15. package/lib/services/ledger/erc20.d.ts +22 -0
  16. package/lib/services/ledger/erc20.d.ts.map +1 -0
  17. package/lib/{erc20.js → services/ledger/erc20.js} +0 -0
  18. package/lib/services/ledger/erc20.js.map +1 -0
  19. package/lib/services/ledger/index.d.ts +4 -0
  20. package/lib/services/ledger/index.d.ts.map +1 -0
  21. package/lib/services/ledger/index.js +191 -0
  22. package/lib/services/ledger/index.js.map +1 -0
  23. package/lib/services/ledger/loadConfig.d.ts +3 -0
  24. package/lib/services/ledger/loadConfig.d.ts.map +1 -0
  25. package/lib/{loadConfig.js → services/ledger/loadConfig.js} +0 -0
  26. package/lib/services/ledger/loadConfig.js.map +1 -0
  27. package/lib/services/ledger/nfts.d.ts +10 -0
  28. package/lib/services/ledger/nfts.d.ts.map +1 -0
  29. package/lib/{nfts.js → services/ledger/nfts.js} +10 -10
  30. package/lib/services/ledger/nfts.js.map +1 -0
  31. package/lib/services/types.d.ts +27 -0
  32. package/lib/services/types.d.ts.map +1 -0
  33. package/lib/services/types.js +3 -0
  34. package/lib/services/types.js.map +1 -0
  35. package/lib/utils.d.ts +8 -27
  36. package/lib/utils.d.ts.map +1 -1
  37. package/lib/utils.js +68 -68
  38. package/lib/utils.js.map +1 -1
  39. package/lib-es/Eth.d.ts +30 -33
  40. package/lib-es/Eth.d.ts.map +1 -1
  41. package/lib-es/Eth.js +271 -316
  42. package/lib-es/Eth.js.map +1 -1
  43. package/lib-es/errors.d.ts +7 -0
  44. package/lib-es/errors.d.ts.map +1 -0
  45. package/lib-es/errors.js +4 -0
  46. package/lib-es/errors.js.map +1 -0
  47. package/{lib → lib-es/services/ledger}/contracts.d.ts +1 -1
  48. package/lib-es/services/ledger/contracts.d.ts.map +1 -0
  49. package/lib-es/services/ledger/contracts.js +96 -0
  50. package/lib-es/services/ledger/contracts.js.map +1 -0
  51. package/{lib → lib-es/services/ledger}/erc20.d.ts +0 -0
  52. package/lib-es/services/ledger/erc20.d.ts.map +1 -0
  53. package/lib-es/services/ledger/erc20.js +64 -0
  54. package/lib-es/services/ledger/erc20.js.map +1 -0
  55. package/lib-es/services/ledger/index.d.ts +4 -0
  56. package/lib-es/services/ledger/index.d.ts.map +1 -0
  57. package/lib-es/services/ledger/index.js +189 -0
  58. package/lib-es/services/ledger/index.js.map +1 -0
  59. package/lib-es/services/ledger/loadConfig.d.ts +3 -0
  60. package/lib-es/services/ledger/loadConfig.d.ts.map +1 -0
  61. package/lib-es/services/ledger/loadConfig.js +20 -0
  62. package/lib-es/services/ledger/loadConfig.js.map +1 -0
  63. package/{lib → lib-es/services/ledger}/nfts.d.ts +2 -3
  64. package/lib-es/services/ledger/nfts.d.ts.map +1 -0
  65. package/lib-es/services/ledger/nfts.js +94 -0
  66. package/lib-es/services/ledger/nfts.js.map +1 -0
  67. package/lib-es/services/types.d.ts +27 -0
  68. package/lib-es/services/types.d.ts.map +1 -0
  69. package/lib-es/services/types.js +2 -0
  70. package/lib-es/services/types.js.map +1 -0
  71. package/lib-es/utils.d.ts +8 -27
  72. package/lib-es/utils.d.ts.map +1 -1
  73. package/lib-es/utils.js +66 -61
  74. package/lib-es/utils.js.map +1 -1
  75. package/package.json +3 -3
  76. package/src/Eth.ts +139 -261
  77. package/src/errors.ts +8 -0
  78. package/src/{contracts.ts → services/ledger/contracts.ts} +1 -1
  79. package/src/{erc20.ts → services/ledger/erc20.ts} +0 -0
  80. package/src/services/ledger/index.ts +125 -0
  81. package/src/services/ledger/loadConfig.ts +14 -0
  82. package/src/{nfts.ts → services/ledger/nfts.ts} +11 -12
  83. package/src/services/types.ts +42 -0
  84. package/src/utils.ts +72 -94
  85. package/tests/Eth.test.ts +2 -2
  86. package/lib/contracts.d.ts.map +0 -1
  87. package/lib/contracts.js.map +0 -1
  88. package/lib/erc20.d.ts.map +0 -1
  89. package/lib/erc20.js.map +0 -1
  90. package/lib/loadConfig.d.ts +0 -7
  91. package/lib/loadConfig.d.ts.map +0 -1
  92. package/lib/loadConfig.js.map +0 -1
  93. package/lib/nfts.d.ts.map +0 -1
  94. package/lib/nfts.js.map +0 -1
  95. package/src/loadConfig.ts +0 -23
package/lib/utils.js CHANGED
@@ -1,78 +1,78 @@
1
1
  "use strict";
2
2
  exports.__esModule = true;
3
- 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;
3
+ exports.decodeTxInfo = void 0;
4
+ var ethers_1 = require("ethers");
5
+ var bignumber_js_1 = require("bignumber.js");
6
+ function decodeTxInfo(rawTx) {
7
+ var VALID_TYPES = [1, 2];
8
+ var txType = VALID_TYPES.includes(rawTx[0]) ? rawTx[0] : null;
9
+ var rlpData = txType === null ? rawTx : rawTx.slice(1);
10
+ var rlpTx = ethers_1.ethers.utils.RLP.decode(rlpData).map(function (hex) {
11
+ return Buffer.from(hex.slice(2), "hex");
9
12
  });
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
- });
13
+ var chainIdTruncated = 0;
14
+ var rlpDecoded = ethers_1.ethers.utils.RLP.decode(rlpData);
15
+ var decodedTx;
16
+ if (txType === 2) {
17
+ // EIP1559
18
+ decodedTx = {
19
+ data: rlpDecoded[7],
20
+ to: rlpDecoded[5],
21
+ chainId: rlpTx[0]
22
+ };
51
23
  }
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;
24
+ else if (txType === 1) {
25
+ // EIP2930
26
+ decodedTx = {
27
+ data: rlpDecoded[6],
28
+ to: rlpDecoded[4],
29
+ chainId: rlpTx[0]
30
+ };
31
+ }
32
+ else {
33
+ // Legacy tx
34
+ decodedTx = {
35
+ data: rlpDecoded[5],
36
+ to: rlpDecoded[3],
37
+ // Default to 1 for non EIP 155 txs
38
+ chainId: rlpTx.length > 6 ? rlpTx[6] : Buffer.from("0x01", "hex")
39
+ };
40
+ }
41
+ var chainIdSrc = decodedTx.chainId;
42
+ var chainId = new bignumber_js_1.BigNumber(0);
43
+ if (chainIdSrc) {
44
+ // Using BigNumber because chainID could be any uint256.
45
+ chainId = new bignumber_js_1.BigNumber(chainIdSrc.toString("hex"), 16);
46
+ var chainIdTruncatedBuf = Buffer.alloc(4);
47
+ if (chainIdSrc.length > 4) {
48
+ chainIdSrc.copy(chainIdTruncatedBuf);
67
49
  }
68
50
  else {
69
- return callback().then(function (res) {
70
- result.push(res);
71
- return iterate(result);
72
- });
51
+ chainIdSrc.copy(chainIdTruncatedBuf, 4 - chainIdSrc.length);
73
52
  }
53
+ chainIdTruncated = chainIdTruncatedBuf.readUInt32BE(0);
74
54
  }
75
- return Promise.resolve([]).then(iterate);
55
+ var vrsOffset = 0;
56
+ if (txType === null && rlpTx.length > 6) {
57
+ var rlpVrs = Buffer.from(ethers_1.ethers.utils.RLP.encode(rlpTx.slice(-3)).slice(2), "hex");
58
+ vrsOffset = rawTx.length - (rlpVrs.length - 1);
59
+ // First byte > 0xf7 means the length of the list length doesn't fit in a single byte.
60
+ if (rlpVrs[0] > 0xf7) {
61
+ // Increment vrsOffset to account for that extra byte.
62
+ vrsOffset++;
63
+ // Compute size of the list length.
64
+ var sizeOfListLen = rlpVrs[0] - 0xf7;
65
+ // Increase rlpOffset by the size of the list length.
66
+ vrsOffset += sizeOfListLen - 1;
67
+ }
68
+ }
69
+ return {
70
+ decodedTx: decodedTx,
71
+ txType: txType,
72
+ chainId: chainId,
73
+ chainIdTruncated: chainIdTruncated,
74
+ vrsOffset: vrsOffset
75
+ };
76
76
  }
77
- exports.asyncWhile = asyncWhile;
77
+ exports.decodeTxInfo = decodeTxInfo;
78
78
  //# sourceMappingURL=utils.js.map
package/lib/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/lib-es/Eth.d.ts CHANGED
@@ -1,7 +1,23 @@
1
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
+ ********************************************************************************/
2
18
  import type Transport from "@ledgerhq/hw-transport";
3
19
  import { BigNumber } from "bignumber.js";
4
- import type { LoadConfig } from "./loadConfig";
20
+ import { LedgerEthTransactionResolution, LoadConfig } from "./services/types";
5
21
  export declare type StarkQuantizationType = "eth" | "erc20" | "erc721" | "erc20mintable" | "erc721mintable";
6
22
  /**
7
23
  * Ethereum API
@@ -30,29 +46,19 @@ export default class Eth {
30
46
  chainCode?: string;
31
47
  }>;
32
48
  /**
33
- * This commands provides a trusted description of an ERC 20 token
34
- * to associate a contract address with a ticker and number of decimals.
49
+ * You can sign a transaction and retrieve v, r, s given the raw transaction and the BIP 32 path of the account to sign.
35
50
  *
36
- * It shall be run immediately before performing a transaction involving a contract
37
- * calling this contract address to display the proper token information to the user if necessary.
38
- *
39
- * @param {*} info: a blob from "erc20.js" utilities that contains all token information.
40
- *
41
- * @example
42
- * import { byContractAddressAndChainId } from "@ledgerhq/hw-app-eth/erc20"
43
- * const zrxInfo = byContractAddressAndChainId("0xe41d2489571d322189246dafa5ebde1f4699f498", chainId)
44
- * if (zrxInfo) await appEth.provideERC20TokenInformation(zrxInfo)
45
- * const signed = await appEth.signTransaction(path, rawTxHex)
46
- */
47
- provideERC20TokenInformation({ data }: {
48
- data: Buffer;
49
- }): Promise<boolean>;
50
- /**
51
- * You can sign a transaction and retrieve v, r, s given the raw transaction and the BIP 32 path of the account to sign
51
+ * @param path: the BIP32 path to sign the transaction on
52
+ * @param rawTxHex: the raw ethereum transaction in hexadecimal to sign
53
+ * @param resolution: resolution is an object with all "resolved" metadata necessary to allow the device to clear sign information. This includes: ERC20 token information, plugins, contracts, NFT signatures,... You must explicitly provide something to avoid having a warning. By default, you can use Ledger's service or your own resolution service. See services/types.js for the contract. Setting the value to "null" will fallback everything to blind signing but will still allow the device to sign the transaction.
52
54
  * @example
53
- eth.signTransaction("44'/60'/0'/0/0", "e8018504e3b292008252089428ee52a8f3d6e5d15f8b131996950d7f296c7952872bd72a2487400080").then(result => ...)
55
+ import ledgerService from "@ledgerhq/hw-app-eth/lib/services/ledger"
56
+ const tx = "e8018504e3b292008252089428ee52a8f3d6e5d15f8b131996950d7f296c7952872bd72a2487400080"; // raw tx to sign
57
+ const resolution = await ledgerService.resolveTransaction(tx);
58
+ const result = eth.signTransaction("44'/60'/0'/0/0", tx, resolution);
59
+ console.log(result);
54
60
  */
55
- signTransaction(path: string, rawTxHex: string): Promise<{
61
+ signTransaction(path: string, rawTxHex: string, resolution?: LedgerEthTransactionResolution | null): Promise<{
56
62
  s: string;
57
63
  v: string;
58
64
  r: string;
@@ -238,19 +244,10 @@ export default class Eth {
238
244
  * @return True if the method was executed successfully
239
245
  */
240
246
  eth2SetWithdrawalIndex(withdrawalIndex: number): Promise<boolean>;
241
- /**
242
- * Set the name of the external plugin that should be used to parse the next transaction
243
- *
244
- * @param pluginName string containing the name of the plugin, must have length between 1 and 30 bytes
245
- * @return True if the method was executed successfully
246
- */
247
+ provideERC20TokenInformation({ data }: {
248
+ data: Buffer;
249
+ }): Promise<boolean>;
247
250
  setExternalPlugin(pluginName: string, contractAddress: string, selector: string): Promise<boolean>;
248
- /**
249
- * Set the plugin (internal or external) that should be used to parse the next transaction
250
- *
251
- * @param data string containing the payload and signature that will be parsed and verified by the device.
252
- * @return True if the method was executed successfully
253
- */
254
251
  setPlugin(data: string): Promise<boolean>;
255
252
  }
256
253
  //# sourceMappingURL=Eth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Eth.d.ts","sourceRoot":"","sources":["../src/Eth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Eth.d.ts","sourceRoot":"","sources":["../src/Eth.ts"],"names":[],"mappings":"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"}