@ledgerhq/hw-app-eth 7.0.0-nightly.2 → 7.0.0-nightly.20251120135143

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 (134) hide show
  1. package/.turbo/turbo-build.log +2 -2
  2. package/.unimportedrc.json +3 -28
  3. package/CHANGELOG.md +994 -17
  4. package/README.md +100 -0
  5. package/jest.config.ts +18 -0
  6. package/lib/Eth.d.ts +3 -18
  7. package/lib/Eth.d.ts.map +1 -1
  8. package/lib/Eth.js +160 -198
  9. package/lib/Eth.js.map +1 -1
  10. package/lib/errors.d.ts +3 -0
  11. package/lib/errors.d.ts.map +1 -1
  12. package/lib/errors.js +2 -1
  13. package/lib/errors.js.map +1 -1
  14. package/lib/modules/Domains/index.js +6 -15
  15. package/lib/modules/Domains/index.js.map +1 -1
  16. package/lib/modules/EIP712/index.d.ts.map +1 -1
  17. package/lib/modules/EIP712/index.js +112 -125
  18. package/lib/modules/EIP712/index.js.map +1 -1
  19. package/lib/modules/EIP712/types.d.ts +1 -0
  20. package/lib/modules/EIP712/types.d.ts.map +1 -1
  21. package/lib/modules/EIP712/utils.d.ts +1 -0
  22. package/lib/modules/EIP712/utils.d.ts.map +1 -1
  23. package/lib/modules/EIP712/utils.js +14 -24
  24. package/lib/modules/EIP712/utils.js.map +1 -1
  25. package/lib/modules/Uniswap/constants.d.ts.map +1 -1
  26. package/lib/modules/Uniswap/constants.js +1 -0
  27. package/lib/modules/Uniswap/constants.js.map +1 -1
  28. package/lib/modules/Uniswap/decoders.d.ts.map +1 -1
  29. package/lib/modules/Uniswap/decoders.js +8 -3
  30. package/lib/modules/Uniswap/decoders.js.map +1 -1
  31. package/lib/modules/Uniswap/index.d.ts +2 -1
  32. package/lib/modules/Uniswap/index.d.ts.map +1 -1
  33. package/lib/modules/Uniswap/index.js +11 -20
  34. package/lib/modules/Uniswap/index.js.map +1 -1
  35. package/lib/modules/Uniswap/types.d.ts +1 -1
  36. package/lib/modules/Uniswap/types.d.ts.map +1 -1
  37. package/lib/services/ledger/contracts.js +4 -13
  38. package/lib/services/ledger/contracts.js.map +1 -1
  39. package/lib/services/ledger/erc20.d.ts +2 -1
  40. package/lib/services/ledger/erc20.d.ts.map +1 -1
  41. package/lib/services/ledger/erc20.js +16 -32
  42. package/lib/services/ledger/erc20.js.map +1 -1
  43. package/lib/services/ledger/index.d.ts.map +1 -1
  44. package/lib/services/ledger/index.js +34 -32
  45. package/lib/services/ledger/index.js.map +1 -1
  46. package/lib/services/ledger/loadConfig.d.ts.map +1 -1
  47. package/lib/services/ledger/loadConfig.js +7 -1
  48. package/lib/services/ledger/loadConfig.js.map +1 -1
  49. package/lib/services/ledger/nfts.js +9 -19
  50. package/lib/services/ledger/nfts.js.map +1 -1
  51. package/lib/services/types.d.ts +3 -0
  52. package/lib/services/types.d.ts.map +1 -1
  53. package/lib/utils.d.ts +56 -9
  54. package/lib/utils.d.ts.map +1 -1
  55. package/lib/utils.js +175 -81
  56. package/lib/utils.js.map +1 -1
  57. package/lib-es/Eth.d.ts +3 -18
  58. package/lib-es/Eth.d.ts.map +1 -1
  59. package/lib-es/Eth.js +160 -198
  60. package/lib-es/Eth.js.map +1 -1
  61. package/lib-es/errors.d.ts +3 -0
  62. package/lib-es/errors.d.ts.map +1 -1
  63. package/lib-es/errors.js +1 -0
  64. package/lib-es/errors.js.map +1 -1
  65. package/lib-es/modules/Domains/index.js +6 -15
  66. package/lib-es/modules/Domains/index.js.map +1 -1
  67. package/lib-es/modules/EIP712/index.d.ts.map +1 -1
  68. package/lib-es/modules/EIP712/index.js +112 -125
  69. package/lib-es/modules/EIP712/index.js.map +1 -1
  70. package/lib-es/modules/EIP712/types.d.ts +1 -0
  71. package/lib-es/modules/EIP712/types.d.ts.map +1 -1
  72. package/lib-es/modules/EIP712/utils.d.ts +1 -0
  73. package/lib-es/modules/EIP712/utils.d.ts.map +1 -1
  74. package/lib-es/modules/EIP712/utils.js +14 -24
  75. package/lib-es/modules/EIP712/utils.js.map +1 -1
  76. package/lib-es/modules/Uniswap/constants.d.ts.map +1 -1
  77. package/lib-es/modules/Uniswap/constants.js +1 -0
  78. package/lib-es/modules/Uniswap/constants.js.map +1 -1
  79. package/lib-es/modules/Uniswap/decoders.d.ts.map +1 -1
  80. package/lib-es/modules/Uniswap/decoders.js +8 -3
  81. package/lib-es/modules/Uniswap/decoders.js.map +1 -1
  82. package/lib-es/modules/Uniswap/index.d.ts +2 -1
  83. package/lib-es/modules/Uniswap/index.d.ts.map +1 -1
  84. package/lib-es/modules/Uniswap/index.js +11 -20
  85. package/lib-es/modules/Uniswap/index.js.map +1 -1
  86. package/lib-es/modules/Uniswap/types.d.ts +1 -1
  87. package/lib-es/modules/Uniswap/types.d.ts.map +1 -1
  88. package/lib-es/services/ledger/contracts.js +4 -13
  89. package/lib-es/services/ledger/contracts.js.map +1 -1
  90. package/lib-es/services/ledger/erc20.d.ts +2 -1
  91. package/lib-es/services/ledger/erc20.d.ts.map +1 -1
  92. package/lib-es/services/ledger/erc20.js +16 -32
  93. package/lib-es/services/ledger/erc20.js.map +1 -1
  94. package/lib-es/services/ledger/index.d.ts.map +1 -1
  95. package/lib-es/services/ledger/index.js +34 -32
  96. package/lib-es/services/ledger/index.js.map +1 -1
  97. package/lib-es/services/ledger/loadConfig.d.ts.map +1 -1
  98. package/lib-es/services/ledger/loadConfig.js +7 -1
  99. package/lib-es/services/ledger/loadConfig.js.map +1 -1
  100. package/lib-es/services/ledger/nfts.js +9 -19
  101. package/lib-es/services/ledger/nfts.js.map +1 -1
  102. package/lib-es/services/types.d.ts +3 -0
  103. package/lib-es/services/types.d.ts.map +1 -1
  104. package/lib-es/utils.d.ts +56 -9
  105. package/lib-es/utils.d.ts.map +1 -1
  106. package/lib-es/utils.js +148 -81
  107. package/lib-es/utils.js.map +1 -1
  108. package/package.json +19 -15
  109. package/src/Eth.ts +51 -82
  110. package/src/errors.ts +3 -0
  111. package/src/modules/EIP712/index.ts +17 -4
  112. package/src/modules/Uniswap/constants.ts +1 -0
  113. package/src/modules/Uniswap/decoders.ts +10 -3
  114. package/src/modules/Uniswap/index.ts +9 -8
  115. package/src/modules/Uniswap/types.ts +2 -1
  116. package/src/services/ledger/erc20.ts +16 -19
  117. package/src/services/ledger/index.ts +50 -22
  118. package/src/services/ledger/loadConfig.ts +4 -1
  119. package/src/services/ledger/nfts.ts +1 -1
  120. package/src/services/types.ts +12 -0
  121. package/src/utils.ts +170 -85
  122. package/tests/EIP712/filtered-signMessage.unit.test.ts +28 -116
  123. package/tests/EIP712/noFilter-signMessage.unit.test.ts +0 -2
  124. package/tests/ERC20/ERC20-CAL-KO.unit.test.ts +14 -25
  125. package/tests/ERC20/ERC20-CAL-OK.unit.test.ts +15 -10
  126. package/tests/Eth.unit.test.ts +242 -314
  127. package/tests/Uniswap/decoders.unit.test.ts +10 -0
  128. package/tests/Uniswap/index.unit.test.ts +17 -26
  129. package/tests/fixtures/messages/15-permit.json +3 -3
  130. package/tests/fixtures/messages/16-permit2.json +3 -3
  131. package/tests/fixtures/messages/17-uniswapx.json +5 -5
  132. package/tests/fixtures/utils.ts +17 -18
  133. package/tests/ledgerService.unit.test.ts +5 -7
  134. package/tests/utils.unit.test.ts +341 -0
@@ -1,21 +1,13 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import { utils } from "ethers";
1
+ import { parse as parseTransaction } from "@ethersproject/transactions";
2
+ import { Interface } from "@ethersproject/abi";
11
3
  import { log } from "@ledgerhq/logs";
12
4
  import { signDomainResolution, signAddressResolution, } from "@ledgerhq/domain-service/signers/index";
13
- import { decodeTxInfo, tokenSelectors, nftSelectors, mergeResolutions } from "../../utils";
14
5
  import { UNISWAP_UNIVERSAL_ROUTER_ADDRESS } from "../../modules/Uniswap/constants";
15
6
  import { byContractAddressAndChainId, findERC20SignaturesInfo } from "./erc20";
16
7
  import { loadInfosForUniswap } from "../../modules/Uniswap";
17
8
  import { loadInfosForContractMethod } from "./contracts";
18
9
  import { getNFTInfo, loadNftPlugin } from "./nfts";
10
+ import { tokenSelectors, nftSelectors, mergeResolutions, getChainIdAsUint32, } from "../../utils";
19
11
  /**
20
12
  * @ignore for external documentation
21
13
  *
@@ -23,13 +15,13 @@ import { getNFTInfo, loadNftPlugin } from "./nfts";
23
15
  * of initially impossible to decode data.
24
16
  * This method will add necessary APDUs to the resolution paramter in order to provide this data to the nano app
25
17
  */
26
- const getAdditionalDataForContract = (contractAddress, chainIdTruncated, loadConfig, shouldResolve) => __awaiter(void 0, void 0, void 0, function* () {
18
+ const getAdditionalDataForContract = async (contractAddress, chainIdUint32, loadConfig, shouldResolve) => {
27
19
  const resolution = {
28
20
  nfts: [],
29
21
  erc20Tokens: [],
30
22
  };
31
23
  if (shouldResolve.nft) {
32
- const nftInfo = yield getNFTInfo(contractAddress, chainIdTruncated, loadConfig);
24
+ const nftInfo = await getNFTInfo(contractAddress, chainIdUint32, loadConfig);
33
25
  if (nftInfo) {
34
26
  log("ethereum", "loaded nft info for " + nftInfo.contractAddress + " (" + nftInfo.collectionName + ")");
35
27
  resolution.nfts.push(nftInfo.data);
@@ -39,8 +31,8 @@ const getAdditionalDataForContract = (contractAddress, chainIdTruncated, loadCon
39
31
  }
40
32
  }
41
33
  if (shouldResolve.token) {
42
- const erc20SignaturesBlob = yield findERC20SignaturesInfo(loadConfig, chainIdTruncated);
43
- const erc20Info = byContractAddressAndChainId(contractAddress, chainIdTruncated, erc20SignaturesBlob);
34
+ const erc20SignaturesBlob = await findERC20SignaturesInfo(loadConfig, chainIdUint32);
35
+ const erc20Info = byContractAddressAndChainId(contractAddress, chainIdUint32, erc20SignaturesBlob, loadConfig);
44
36
  if (erc20Info) {
45
37
  log("ethereum", "loaded erc20token info for " + erc20Info.contractAddress + " (" + erc20Info.ticker + ")");
46
38
  resolution.erc20Tokens.push(erc20Info.data.toString("hex"));
@@ -50,7 +42,7 @@ const getAdditionalDataForContract = (contractAddress, chainIdTruncated, loadCon
50
42
  }
51
43
  }
52
44
  return resolution;
53
- });
45
+ };
54
46
  /**
55
47
  * @ignore for external documentation
56
48
  *
@@ -58,7 +50,7 @@ const getAdditionalDataForContract = (contractAddress, chainIdTruncated, loadCon
58
50
  * in order to clear sign it.
59
51
  * This method will add necessary APDUs to the resolution parameter in order to load those internal plugins
60
52
  */
61
- const loadNanoAppPlugins = (contractAddress, selector, decodedTx, chainIdTruncated, loadConfig, shouldResolve) => __awaiter(void 0, void 0, void 0, function* () {
53
+ const loadNanoAppPlugins = async (contractAddress, selector, parsedTransaction, chainIdUint32, loadConfig, shouldResolve) => {
62
54
  let resolution = {
63
55
  externalPlugin: [],
64
56
  plugin: [],
@@ -67,7 +59,7 @@ const loadNanoAppPlugins = (contractAddress, selector, decodedTx, chainIdTruncat
67
59
  domains: [],
68
60
  };
69
61
  if (shouldResolve.nft) {
70
- const nftPluginPayload = yield loadNftPlugin(contractAddress, selector, chainIdTruncated, loadConfig);
62
+ const nftPluginPayload = await loadNftPlugin(contractAddress, selector, chainIdUint32, loadConfig);
71
63
  if (nftPluginPayload) {
72
64
  resolution.plugin.push(nftPluginPayload);
73
65
  }
@@ -78,7 +70,7 @@ const loadNanoAppPlugins = (contractAddress, selector, decodedTx, chainIdTruncat
78
70
  // Uniswap has its own way of working, so we need to handle it separately
79
71
  // This will prevent an error if we add Uniswap to the CAL service
80
72
  if (shouldResolve.externalPlugins && contractAddress !== UNISWAP_UNIVERSAL_ROUTER_ADDRESS) {
81
- const contractMethodInfos = yield loadInfosForContractMethod(contractAddress, selector, chainIdTruncated, loadConfig);
73
+ const contractMethodInfos = await loadInfosForContractMethod(contractAddress, selector, chainIdUint32, loadConfig);
82
74
  if (contractMethodInfos) {
83
75
  const { plugin, payload, signature, erc20OfInterest, abi } = contractMethodInfos;
84
76
  if (plugin) {
@@ -86,8 +78,8 @@ const loadNanoAppPlugins = (contractAddress, selector, decodedTx, chainIdTruncat
86
78
  resolution.externalPlugin.push({ payload, signature });
87
79
  }
88
80
  if (erc20OfInterest && erc20OfInterest.length && abi) {
89
- const contract = new utils.Interface(abi);
90
- const args = contract.parseTransaction(decodedTx).args;
81
+ const contract = new Interface(abi);
82
+ const args = contract.parseTransaction(parsedTransaction).args;
91
83
  for (const path of erc20OfInterest) {
92
84
  const erc20ContractAddress = path.split(".").reduce((value, seg) => {
93
85
  if (seg === "-1" && Array.isArray(value)) {
@@ -95,7 +87,7 @@ const loadNanoAppPlugins = (contractAddress, selector, decodedTx, chainIdTruncat
95
87
  }
96
88
  return value[seg];
97
89
  }, args); // impossible(?) to type correctly as the initializer is different from the returned type
98
- const externalPluginResolution = yield getAdditionalDataForContract(erc20ContractAddress, chainIdTruncated, loadConfig, {
90
+ const externalPluginResolution = await getAdditionalDataForContract(erc20ContractAddress, chainIdUint32, loadConfig, {
99
91
  nft: false,
100
92
  externalPlugins: false,
101
93
  token: true, // enforcing resolution of tokens for external plugins that need info on assets (e.g. for a swap)
@@ -110,7 +102,7 @@ const loadNanoAppPlugins = (contractAddress, selector, decodedTx, chainIdTruncat
110
102
  }
111
103
  }
112
104
  if (shouldResolve.uniswapV3) {
113
- const { pluginData, tokenDescriptors } = yield loadInfosForUniswap(decodedTx, chainIdTruncated);
105
+ const { pluginData, tokenDescriptors } = await loadInfosForUniswap(parsedTransaction, chainIdUint32);
114
106
  if (pluginData && tokenDescriptors) {
115
107
  resolution.externalPlugin.push({
116
108
  payload: pluginData.toString("hex"),
@@ -120,32 +112,42 @@ const loadNanoAppPlugins = (contractAddress, selector, decodedTx, chainIdTruncat
120
112
  }
121
113
  }
122
114
  return resolution;
123
- });
115
+ };
124
116
  /**
125
117
  * @ignore for external documentation
126
118
  *
127
119
  * In charge of collecting the different APDUs necessary for clear signing
128
120
  * a transaction based on a specified configuration.
129
121
  */
130
- const resolveTransaction = (rawTxHex, loadConfig, resolutionConfig) => __awaiter(void 0, void 0, void 0, function* () {
122
+ const resolveTransaction = async (rawTxHex, loadConfig, resolutionConfig) => {
131
123
  const rawTx = Buffer.from(rawTxHex, "hex");
132
- const { decodedTx, chainIdTruncated } = decodeTxInfo(rawTx);
124
+ const parsedTransaction = parseTransaction(`0x${rawTx.toString("hex")}`);
125
+ const chainIdUint32 = getChainIdAsUint32(parsedTransaction.chainId);
133
126
  const { domains } = resolutionConfig;
134
- const contractAddress = decodedTx.to;
135
- const selector = decodedTx.data.length >= 10 && decodedTx.data.substring(0, 10);
127
+ const contractAddress = parsedTransaction.to?.toLowerCase();
128
+ if (!contractAddress)
129
+ return {
130
+ nfts: [],
131
+ erc20Tokens: [],
132
+ externalPlugin: [],
133
+ plugin: [],
134
+ domains: [],
135
+ };
136
+ const selector = parsedTransaction.data.length >= 10 && parsedTransaction.data.substring(0, 10);
136
137
  const resolutions = [];
137
138
  if (selector) {
138
139
  const shouldResolve = {
139
140
  token: resolutionConfig.erc20 && tokenSelectors.includes(selector),
140
- nft: resolutionConfig.nft && nftSelectors.includes(selector),
141
+ nft: resolutionConfig.nft &&
142
+ nftSelectors.includes(selector),
141
143
  externalPlugins: resolutionConfig.externalPlugins,
142
144
  uniswapV3: resolutionConfig.uniswapV3,
143
145
  };
144
- const pluginsResolution = yield loadNanoAppPlugins(contractAddress, selector, decodedTx, chainIdTruncated, loadConfig, shouldResolve);
146
+ const pluginsResolution = await loadNanoAppPlugins(contractAddress, selector, parsedTransaction, chainIdUint32, loadConfig, shouldResolve);
145
147
  if (pluginsResolution) {
146
148
  resolutions.push(pluginsResolution);
147
149
  }
148
- const contractResolution = yield getAdditionalDataForContract(contractAddress, chainIdTruncated, loadConfig, shouldResolve);
150
+ const contractResolution = await getAdditionalDataForContract(contractAddress, chainIdUint32, loadConfig, shouldResolve);
149
151
  if (contractResolution) {
150
152
  resolutions.push(contractResolution);
151
153
  }
@@ -158,7 +160,7 @@ const resolveTransaction = (rawTxHex, loadConfig, resolutionConfig) => __awaiter
158
160
  resolutions.push(domainResolutions);
159
161
  }
160
162
  return mergeResolutions(resolutions);
161
- });
163
+ };
162
164
  export default {
163
165
  resolveTransaction,
164
166
  signDomainResolution,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/ledger/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/ledger/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,EACL,cAAc,EACd,YAAY,EACZ,gBAAgB,EAIhB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AASrB;;;;;;GAMG;AACH,MAAM,4BAA4B,GAAG,KAAK,EACxC,eAAuB,EACvB,aAAqB,EACrB,UAAsB,EACtB,aAAmC,EACoC,EAAE;IACzE,MAAM,UAAU,GAAiE;QAC/E,IAAI,EAAE,EAAE;QACR,WAAW,EAAE,EAAE;KAChB,CAAC;IAEF,IAAI,aAAa,CAAC,GAAG,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,eAAe,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;QAE7E,IAAI,OAAO,EAAE,CAAC;YACZ,GAAG,CACD,UAAU,EACV,sBAAsB,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,GAAG,OAAO,CAAC,cAAc,GAAG,GAAG,CACvF,CAAC;YACF,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,UAAU,EAAE,6BAA6B,GAAG,eAAe,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;QACxB,MAAM,mBAAmB,GAAG,MAAM,uBAAuB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QACrF,MAAM,SAAS,GAAG,2BAA2B,CAC3C,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,UAAU,CACX,CAAC;QAEF,IAAI,SAAS,EAAE,CAAC;YACd,GAAG,CACD,UAAU,EACV,6BAA6B,GAAG,SAAS,CAAC,eAAe,GAAG,IAAI,GAAG,SAAS,CAAC,MAAM,GAAG,GAAG,CAC1F,CAAC;YACF,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,UAAU,EAAE,oCAAoC,GAAG,eAAe,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,kBAAkB,GAAG,KAAK,EAC9B,eAAuB,EACvB,QAAgB,EAChB,iBAAiB,EACjB,aAAqB,EACrB,UAAsB,EACtB,aAAmC,EACM,EAAE;IAC3C,IAAI,UAAU,GAAmC;QAC/C,cAAc,EAAE,EAAE;QAClB,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,EAAE;QACR,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,EAAE;KACZ,CAAC;IAEF,IAAI,aAAa,CAAC,GAAG,EAAE,CAAC;QACtB,MAAM,gBAAgB,GAAG,MAAM,aAAa,CAC1C,eAAe,EACf,QAAQ,EACR,aAAa,EACb,UAAU,CACX,CAAC;QAEF,IAAI,gBAAgB,EAAE,CAAC;YACrB,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,GAAG,CACD,UAAU,EACV,qCAAqC,GAAG,QAAQ,GAAG,eAAe,GAAG,eAAe,CACrF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,kEAAkE;IAClE,IAAI,aAAa,CAAC,eAAe,IAAI,eAAe,KAAK,gCAAgC,EAAE,CAAC;QAC1F,MAAM,mBAAmB,GAAG,MAAM,0BAA0B,CAC1D,eAAe,EACf,QAAQ,EACR,aAAa,EACb,UAAU,CACX,CAAC;QAEF,IAAI,mBAAmB,EAAE,CAAC;YACxB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,EAAE,GAAG,mBAAmB,CAAC;YAEjF,IAAI,MAAM,EAAE,CAAC;gBACX,GAAG,CAAC,UAAU,EAAE,iBAAiB,MAAM,mBAAmB,QAAQ,EAAE,CAAC,CAAC;gBACtE,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YACzD,CAAC;YAED,IAAI,eAAe,IAAI,eAAe,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBACrD,MAAM,QAAQ,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;gBACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC;gBAE/D,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;oBACnC,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;wBACjE,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;4BACzC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBACjC,CAAC;wBACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;oBACpB,CAAC,EAAE,IAAI,CAAsB,CAAC,CAAC,yFAAyF;oBAExH,MAAM,wBAAwB,GAAG,MAAM,4BAA4B,CACjE,oBAAoB,EACpB,aAAa,EACb,UAAU,EACV;wBACE,GAAG,EAAE,KAAK;wBACV,eAAe,EAAE,KAAK;wBACtB,KAAK,EAAE,IAAI,EAAE,iGAAiG;wBAC9G,SAAS,EAAE,KAAK;qBACjB,CACF,CAAC;oBACF,UAAU,GAAG,gBAAgB,CAAC,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,UAAU,EAAE,wBAAwB,GAAG,QAAQ,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;QAC5B,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,MAAM,mBAAmB,CAChE,iBAAiB,EACjB,aAAa,CACd,CAAC;QACF,IAAI,UAAU,IAAI,gBAAgB,EAAE,CAAC;YACnC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC;gBAC7B,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACnC,SAAS,EAAE,EAAE;aACd,CAAC,CAAC;YACH,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,kBAAkB,GAAsD,KAAK,EACjF,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,EAAE;IACF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC3C,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzE,MAAM,aAAa,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACpE,MAAM,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC;IAErC,MAAM,eAAe,GAAG,iBAAiB,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC;IAC5D,IAAI,CAAC,eAAe;QAClB,OAAO;YACL,IAAI,EAAE,EAAE;YACR,WAAW,EAAE,EAAE;YACf,cAAc,EAAE,EAAE;YAClB,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;SACZ,CAAC;IAEJ,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhG,MAAM,WAAW,GAA8C,EAAE,CAAC;IAClE,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,aAAa,GAAyB;YAC1C,KAAK,EACH,gBAAgB,CAAC,KAAK,IAAI,cAAc,CAAC,QAAQ,CAAC,QAAwC,CAAC;YAC7F,GAAG,EACD,gBAAgB,CAAC,GAAG;gBACpB,YAAY,CAAC,QAAQ,CACnB,QAA0E,CAC3E;YACH,eAAe,EAAE,gBAAgB,CAAC,eAAe;YACjD,SAAS,EAAE,gBAAgB,CAAC,SAAS;SACtC,CAAC;QAEF,MAAM,iBAAiB,GAAG,MAAM,kBAAkB,CAChD,eAAe,EACf,QAAQ,EACR,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,aAAa,CACd,CAAC;QACF,IAAI,iBAAiB,EAAE,CAAC;YACtB,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,kBAAkB,GAAG,MAAM,4BAA4B,CAC3D,eAAe,EACf,aAAa,EACb,UAAU,EACV,aAAa,CACd,CAAC;QACF,IAAI,kBAAkB,EAAE,CAAC;YACvB,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,iBAAiB,GAA4C;YACjE,OAAO;SACR,CAAC;QACF,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,gBAAgB,CAAC,WAAW,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,eAAe;IACb,kBAAkB;IAClB,oBAAoB;IACpB,qBAAqB;CACS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"loadConfig.d.ts","sourceRoot":"","sources":["../../../src/services/ledger/loadConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAU3C,wBAAgB,aAAa,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,UAAU,CAKrE"}
1
+ {"version":3,"file":"loadConfig.d.ts","sourceRoot":"","sources":["../../../src/services/ledger/loadConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAa3C,wBAAgB,aAAa,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,UAAU,CAKrE"}
@@ -4,8 +4,14 @@ const defaultLoadConfig = {
4
4
  extraPlugins: null,
5
5
  cryptoassetsBaseURL: "https://cdn.live.ledger.com/cryptoassets",
6
6
  calServiceURL: "https://crypto-assets-service.api.ledger.com",
7
+ staticERC20Signatures: null,
8
+ staticEIP712SignaturesV1: null,
9
+ staticEIP712SignaturesV2: null,
7
10
  };
8
11
  export function getLoadConfig(userLoadConfig) {
9
- return Object.assign(Object.assign({}, defaultLoadConfig), userLoadConfig);
12
+ return {
13
+ ...defaultLoadConfig,
14
+ ...userLoadConfig,
15
+ };
10
16
  }
11
17
  //# sourceMappingURL=loadConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadConfig.js","sourceRoot":"","sources":["../../../src/services/ledger/loadConfig.ts"],"names":[],"mappings":"AAEA,MAAM,iBAAiB,GAAyB;IAC9C,kBAAkB,EAAE,6CAA6C;IACjE,aAAa,EAAE,6BAA6B;IAC5C,YAAY,EAAE,IAAI;IAClB,mBAAmB,EAAE,0CAA0C;IAC/D,aAAa,EAAE,8CAA8C;CAC9D,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,cAA2B;IACvD,uCACK,iBAAiB,GACjB,cAAc,EACjB;AACJ,CAAC"}
1
+ {"version":3,"file":"loadConfig.js","sourceRoot":"","sources":["../../../src/services/ledger/loadConfig.ts"],"names":[],"mappings":"AAEA,MAAM,iBAAiB,GAAe;IACpC,kBAAkB,EAAE,6CAA6C;IACjE,aAAa,EAAE,6BAA6B;IAC5C,YAAY,EAAE,IAAI;IAClB,mBAAmB,EAAE,0CAA0C;IAC/D,aAAa,EAAE,8CAA8C;IAC7D,qBAAqB,EAAE,IAAI;IAC3B,wBAAwB,EAAE,IAAI;IAC9B,wBAAwB,EAAE,IAAI;CAC/B,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,cAA2B;IACvD,OAAO;QACL,GAAG,iBAAiB;QACpB,GAAG,cAAc;KAClB,CAAC;AACJ,CAAC"}
@@ -1,22 +1,12 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import axios from "axios";
11
2
  import { getLoadConfig } from "./loadConfig";
12
3
  import { log } from "@ledgerhq/logs";
13
- export const getNFTInfo = (contractAddress, chainId, userLoadConfig) => __awaiter(void 0, void 0, void 0, function* () {
14
- var _a;
4
+ export const getNFTInfo = async (contractAddress, chainId, userLoadConfig) => {
15
5
  const { nftExplorerBaseURL } = getLoadConfig(userLoadConfig);
16
6
  if (!nftExplorerBaseURL)
17
7
  return;
18
8
  const url = `${nftExplorerBaseURL}/${chainId}/contracts/${contractAddress}`;
19
- const response = yield axios
9
+ const response = await axios
20
10
  .get(url)
21
11
  .then(r => r.data)
22
12
  .catch(e => {
@@ -30,21 +20,21 @@ export const getNFTInfo = (contractAddress, chainId, userLoadConfig) => __awaite
30
20
  // Collection name length position: 3rd byte -> caracter 4 to 6
31
21
  const collectionNameLength = parseInt(payload.slice(4, 6), 16);
32
22
  const collectionNameHex = payload.substr(6, collectionNameLength * 2);
33
- const collectionName = (_a = collectionNameHex
23
+ const collectionName = collectionNameHex
34
24
  .match(/.{2}/g) // split every 2 characters
35
- ) === null || _a === void 0 ? void 0 : _a.reduce((acc, curr) => (acc += String.fromCharCode(parseInt(curr, 16))), ""); // convert hex to string
25
+ ?.reduce((acc, curr) => (acc += String.fromCharCode(parseInt(curr, 16))), ""); // convert hex to string
36
26
  return {
37
- contractAddress: contractAddress,
27
+ contractAddress,
38
28
  collectionName: collectionName || "",
39
29
  data: payload,
40
30
  };
41
- });
42
- export const loadNftPlugin = (contractAddress, selector, chainId, userLoadConfig) => __awaiter(void 0, void 0, void 0, function* () {
31
+ };
32
+ export const loadNftPlugin = async (contractAddress, selector, chainId, userLoadConfig) => {
43
33
  const { nftExplorerBaseURL } = getLoadConfig(userLoadConfig);
44
34
  if (!nftExplorerBaseURL)
45
35
  return;
46
36
  const url = `${nftExplorerBaseURL}/${chainId}/contracts/${contractAddress}/plugin-selector/${selector}`;
47
- const response = yield axios
37
+ const response = await axios
48
38
  .get(url)
49
39
  .then(r => r.data)
50
40
  .catch(e => {
@@ -55,5 +45,5 @@ export const loadNftPlugin = (contractAddress, selector, chainId, userLoadConfig
55
45
  return;
56
46
  const payload = response["payload"];
57
47
  return payload;
58
- });
48
+ };
59
49
  //# sourceMappingURL=nfts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nfts.js","sourceRoot":"","sources":["../../../src/services/ledger/nfts.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAYrC,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,eAAuB,EACvB,OAAe,EACf,cAA0B,EACI,EAAE;;IAChC,MAAM,EAAE,kBAAkB,EAAE,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;IAC7D,IAAI,CAAC,kBAAkB;QAAE,OAAO;IAChC,MAAM,GAAG,GAAG,GAAG,kBAAkB,IAAI,OAAO,cAAc,eAAe,EAAE,CAAC;IAC5E,MAAM,QAAQ,GAAG,MAAM,KAAK;SACzB,GAAG,CAAkB,GAAG,CAAC;SACzB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SACjB,KAAK,CAAC,CAAC,CAAC,EAAE;QACT,GAAG,CAAC,OAAO,EAAE,uBAAuB,GAAG,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACL,IAAI,CAAC,QAAQ;QAAE,OAAO;IAEtB,+IAA+I;IAC/I,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IACpC,+DAA+D;IAC/D,MAAM,oBAAoB,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/D,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,oBAAoB,GAAG,CAAC,CAAC,CAAC;IACtE,MAAM,cAAc,GAAG,MAAA,iBAAiB;SACrC,KAAK,CAAC,OAAO,CAAC,CAAC,2BAA2B;8CACzC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,wBAAwB;IAEzG,OAAO;QACL,eAAe,EAAE,eAAe;QAChC,cAAc,EAAE,cAAc,IAAI,EAAE;QACpC,IAAI,EAAE,OAAO;KACd,CAAC;AACJ,CAAC,CAAA,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,eAAuB,EACvB,QAAgB,EAChB,OAAe,EACf,cAA0B,EACG,EAAE;IAC/B,MAAM,EAAE,kBAAkB,EAAE,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;IAC7D,IAAI,CAAC,kBAAkB;QAAE,OAAO;IAChC,MAAM,GAAG,GAAG,GAAG,kBAAkB,IAAI,OAAO,cAAc,eAAe,oBAAoB,QAAQ,EAAE,CAAC;IAExG,MAAM,QAAQ,GAAG,MAAM,KAAK;SACzB,GAAG,CAAkB,GAAG,CAAC;SACzB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SACjB,KAAK,CAAC,CAAC,CAAC,EAAE;QACT,GAAG,CAAC,OAAO,EAAE,uBAAuB,GAAG,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACL,IAAI,CAAC,QAAQ;QAAE,OAAO;IAEtB,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IACpC,OAAO,OAAO,CAAC;AACjB,CAAC,CAAA,CAAC"}
1
+ {"version":3,"file":"nfts.js","sourceRoot":"","sources":["../../../src/services/ledger/nfts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAYrC,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC7B,eAAuB,EACvB,OAAe,EACf,cAA0B,EACI,EAAE;IAChC,MAAM,EAAE,kBAAkB,EAAE,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;IAC7D,IAAI,CAAC,kBAAkB;QAAE,OAAO;IAChC,MAAM,GAAG,GAAG,GAAG,kBAAkB,IAAI,OAAO,cAAc,eAAe,EAAE,CAAC;IAC5E,MAAM,QAAQ,GAAG,MAAM,KAAK;SACzB,GAAG,CAAkB,GAAG,CAAC;SACzB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SACjB,KAAK,CAAC,CAAC,CAAC,EAAE;QACT,GAAG,CAAC,OAAO,EAAE,uBAAuB,GAAG,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACL,IAAI,CAAC,QAAQ;QAAE,OAAO;IAEtB,+IAA+I;IAC/I,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IACpC,+DAA+D;IAC/D,MAAM,oBAAoB,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/D,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,oBAAoB,GAAG,CAAC,CAAC,CAAC;IACtE,MAAM,cAAc,GAAG,iBAAiB;SACrC,KAAK,CAAC,OAAO,CAAC,CAAC,2BAA2B;QAC3C,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,wBAAwB;IAEzG,OAAO;QACL,eAAe;QACf,cAAc,EAAE,cAAc,IAAI,EAAE;QACpC,IAAI,EAAE,OAAO;KACd,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,eAAuB,EACvB,QAAgB,EAChB,OAAe,EACf,cAA0B,EACG,EAAE;IAC/B,MAAM,EAAE,kBAAkB,EAAE,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;IAC7D,IAAI,CAAC,kBAAkB;QAAE,OAAO;IAChC,MAAM,GAAG,GAAG,GAAG,kBAAkB,IAAI,OAAO,cAAc,eAAe,oBAAoB,QAAQ,EAAE,CAAC;IAExG,MAAM,QAAQ,GAAG,MAAM,KAAK;SACzB,GAAG,CAAkB,GAAG,CAAC;SACzB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SACjB,KAAK,CAAC,CAAC,CAAC,EAAE;QACT,GAAG,CAAC,OAAO,EAAE,uBAAuB,GAAG,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACL,IAAI,CAAC,QAAQ;QAAE,OAAO;IAEtB,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IACpC,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
@@ -16,6 +16,9 @@ export type LoadConfig = {
16
16
  extraPlugins?: any | null;
17
17
  cryptoassetsBaseURL?: string | null;
18
18
  calServiceURL?: string | null;
19
+ staticERC20Signatures?: Record<number, string> | null;
20
+ staticEIP712SignaturesV1?: Record<string, any> | null;
21
+ staticEIP712SignaturesV2?: Record<string, any> | null;
19
22
  };
20
23
  /**
21
24
  * Allows to configure precisely what the service need to resolve.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/services/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,IAAI,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAC7F,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,wCAAwC,CAAC;AAEhD,MAAM,MAAM,8BAA8B,GAAG;IAE3C,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAE3B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAEpB,cAAc,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE9D,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAEtB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IAEvB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAInC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAG9B,YAAY,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAE7B,GAAG,CAAC,EAAE,OAAO,CAAC;IAEd,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAE7B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,kBAAkB,EAAE,CAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,gBAAgB,KAC/B,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC7C,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;IAClD,qBAAqB,EAAE,OAAO,qBAAqB,CAAC;CACrD,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/services/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,IAAI,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAC7F,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,wCAAwC,CAAC;AAEhD,MAAM,MAAM,8BAA8B,GAAG;IAE3C,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAE3B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAEpB,cAAc,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE9D,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAEtB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IAEvB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAInC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAG9B,YAAY,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAI9B,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAItD,wBAAwB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAItD,wBAAwB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;CACvD,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAE7B,GAAG,CAAC,EAAE,OAAO,CAAC;IAEd,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAE7B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,kBAAkB,EAAE,CAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,gBAAgB,KAC/B,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC7C,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;IAClD,qBAAqB,EAAE,OAAO,qBAAqB,CAAC;CACrD,CAAC"}
package/lib-es/utils.d.ts CHANGED
@@ -1,19 +1,14 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  import { BigNumber } from "bignumber.js";
3
- import { ERC20_CLEAR_SIGNED_SELECTORS, ERC721_CLEAR_SIGNED_SELECTORS, ERC1155_CLEAR_SIGNED_SELECTORS } from "@ledgerhq/evm-tools/selectors/index";
4
+ import { ERC20_CLEAR_SIGNED_SELECTORS, ERC721_CLEAR_SIGNED_SELECTORS, ERC1155_CLEAR_SIGNED_SELECTORS, DAPP_SELECTORS } from "@ledgerhq/evm-tools/selectors/index";
5
+ import type { Transaction } from "@ethersproject/transactions";
4
6
  import { LedgerEthTransactionResolution } from "./services/types";
5
- export { ERC20_CLEAR_SIGNED_SELECTORS, ERC721_CLEAR_SIGNED_SELECTORS, ERC1155_CLEAR_SIGNED_SELECTORS, };
7
+ export { ERC20_CLEAR_SIGNED_SELECTORS, ERC721_CLEAR_SIGNED_SELECTORS, ERC1155_CLEAR_SIGNED_SELECTORS, DAPP_SELECTORS, };
6
8
  export declare const padHexString: (str: string) => string;
7
9
  export declare function splitPath(path: string): number[];
8
10
  export declare function hexBuffer(str: string): Buffer;
9
11
  export declare function maybeHexBuffer(str: string | null | undefined): Buffer | null | undefined;
10
- export declare const decodeTxInfo: (rawTx: Buffer) => {
11
- decodedTx: any;
12
- txType: number | null;
13
- chainId: BigNumber;
14
- chainIdTruncated: number;
15
- vrsOffset: number;
16
- };
17
12
  /**
18
13
  * @ignore for the README
19
14
  *
@@ -28,4 +23,56 @@ export declare const intAsHexBytes: (int: number, bytes: number) => string;
28
23
  export declare const tokenSelectors: ERC20_CLEAR_SIGNED_SELECTORS[];
29
24
  export declare const nftSelectors: (ERC721_CLEAR_SIGNED_SELECTORS | ERC1155_CLEAR_SIGNED_SELECTORS)[];
30
25
  export declare const mergeResolutions: (resolutionsArray: Partial<LedgerEthTransactionResolution>[]) => LedgerEthTransactionResolution;
26
+ /**
27
+ * @ignore for the README
28
+ *
29
+ * Ledger devices are returning v with potentially EIP-155 already applied when using legacy transactions.
30
+ * Because that v value is only represented as a single byte, we need to replicate what would be the
31
+ * overflow happening on the device while applying EIP-155 and recover the original parity.
32
+ *
33
+ * @param vFromDevice
34
+ * @param chainIdUint32
35
+ * @returns
36
+ */
37
+ export declare const getParity: (vFromDevice: number, chainId: BigNumber, transactionType: Transaction["type"]) => 0 | 1;
38
+ /**
39
+ * @ignore for the README
40
+ *
41
+ * Helper to convert a chainId from a BigNumber to a 4 bytes integer.
42
+ * ChainIds are uint256, but the device limits them to 4 bytes
43
+ *
44
+ * @param {Number|BigNumber} chainId
45
+ * @returns {Number}
46
+ */
47
+ export declare const getChainIdAsUint32: (chainId: BigNumber | number) => number;
48
+ /**
49
+ * @ignore for the README
50
+ *
51
+ * Depending on the transaction type you're trying to sign with the device, the v value will be different.
52
+ * For legacy transactions, the v value is used to store the chainId, and that chainId can be a uint256,
53
+ * and some math operation should be applied to it in order to comply with EIP-155 for replay attacks.
54
+ *
55
+ * In order to prevent breaking changes at the time, the `v` value has been kept as a single byte
56
+ * which forces us to replicate an overflow happening on the device to get the correct `v` value
57
+ *
58
+ * @param {number} vFromDevice
59
+ * @param {BigNumber} chainId
60
+ * @param {Transaction["type"]} transactionType
61
+ * @returns {string} hexa string of the v value
62
+ */
63
+ export declare const getV: (vFromDevice: number, chainId: BigNumber, transactionType: Transaction["type"]) => string;
64
+ /**
65
+ * @ignore for the README
66
+ *
67
+ * In order to prevent the device from considering a transaction RLP as complete before it actually is
68
+ * we need to split the RLP into chunks which could not be mistaken for a complete transaction.
69
+ * This is true for legacy transaction, where the `v` value is used to store the chainId
70
+ *
71
+ * @param {Buffer} transactionRlp
72
+ * @param {Buffer }derivationPath
73
+ * @param {Transaction["type"]} transactionType
74
+ *
75
+ * @returns {Buffer[]}
76
+ */
77
+ export declare const safeChunkTransaction: (transactionRlp: Buffer, derivationPath: Buffer, transactionType: Transaction["type"]) => Buffer[];
31
78
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,EAC7B,8BAA8B,EAC/B,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAElE,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,EAC7B,8BAA8B,GAC/B,CAAC;AAEF,eAAO,MAAM,YAAY,QAAS,MAAM,WAEvC,CAAC;AAEF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAchD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAGxF;AAED,eAAO,MAAM,YAAY,UAAW,MAAM;;;;;;CAyEzC,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,QAAS,MAAM,SAAS,MAAM,KAAG,MAChB,CAAC;AAE5C,eAAO,MAAM,cAAc,gCAA8C,CAAC;AAC1E,eAAO,MAAM,YAAY,oEAGxB,CAAC;AAEF,eAAO,MAAM,gBAAgB,qBACT,QAAQ,8BAA8B,CAAC,EAAE,KAC1D,8BAgBF,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,EAC7B,8BAA8B,EAC9B,cAAc,EACf,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAElE,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,EAC7B,8BAA8B,EAC9B,cAAc,GACf,CAAC;AAEF,eAAO,MAAM,YAAY,QAAS,MAAM,WAEvC,CAAC;AAEF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBhD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK7C;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAGxF;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,QAAS,MAAM,SAAS,MAAM,KAAG,MAChB,CAAC;AAE5C,eAAO,MAAM,cAAc,gCAA8C,CAAC;AAC1E,eAAO,MAAM,YAAY,oEAGxB,CAAC;AAEF,eAAO,MAAM,gBAAgB,qBACT,QAAQ,8BAA8B,CAAC,EAAE,KAC1D,8BAgBF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,gBACP,MAAM,WACV,SAAS,mBACD,WAAW,CAAC,MAAM,CAAC,KACnC,CAAC,GAAG,CAmBN,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,YAAa,SAAS,GAAG,MAAM,KAAG,MAKhE,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,IAAI,gBACF,MAAM,WACV,SAAS,mBACD,WAAW,CAAC,MAAM,CAAC,KACnC,MAcF,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,oBAAoB,mBACf,MAAM,kBACN,MAAM,mBACL,WAAW,CAAC,MAAM,CAAC,KACnC,MAAM,EA8CR,CAAC"}