@trezor/connect 9.7.0-beta.1 → 9.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (408) hide show
  1. package/CHANGELOG.md +49 -16
  2. package/README.md +1 -1
  3. package/lib/api/applyFlags.js +31 -26
  4. package/lib/api/applySettings.js +43 -40
  5. package/lib/api/authenticateDevice.js +82 -54
  6. package/lib/api/authorizeCoinjoin.js +35 -28
  7. package/lib/api/backupDevice.js +32 -27
  8. package/lib/api/bitcoin/TransactionComposer.js +131 -123
  9. package/lib/api/bitcoin/createPendingTx.js +55 -52
  10. package/lib/api/bitcoin/enhanceSignTx.js +57 -55
  11. package/lib/api/bitcoin/index.js +4 -1
  12. package/lib/api/bitcoin/inputs.js +71 -46
  13. package/lib/api/bitcoin/outputs.js +108 -85
  14. package/lib/api/bitcoin/refTx.d.ts +1 -1
  15. package/lib/api/bitcoin/refTx.js +233 -201
  16. package/lib/api/bitcoin/signtx.js +208 -152
  17. package/lib/api/bitcoin/signtxLegacy.js +169 -119
  18. package/lib/api/bitcoin/signtxVerify.js +80 -67
  19. package/lib/api/bitcoin/transactionBytes.js +61 -59
  20. package/lib/api/bleUnpair.js +28 -25
  21. package/lib/api/blockchainDisconnect.js +31 -24
  22. package/lib/api/blockchainEstimateFee.js +94 -61
  23. package/lib/api/blockchainEvmRpcCall.js +51 -34
  24. package/lib/api/blockchainGetAccountBalanceHistory.d.ts +1 -1
  25. package/lib/api/blockchainGetAccountBalanceHistory.js +50 -32
  26. package/lib/api/blockchainGetCurrentFiatRates.d.ts +1 -1
  27. package/lib/api/blockchainGetCurrentFiatRates.js +43 -29
  28. package/lib/api/blockchainGetFiatRatesForTimestamps.d.ts +1 -1
  29. package/lib/api/blockchainGetFiatRatesForTimestamps.js +49 -32
  30. package/lib/api/blockchainGetInfo.js +31 -22
  31. package/lib/api/blockchainGetTransactions.d.ts +1 -1
  32. package/lib/api/blockchainGetTransactions.js +36 -24
  33. package/lib/api/blockchainSetCustomBackend.js +34 -25
  34. package/lib/api/blockchainSubscribe.js +57 -36
  35. package/lib/api/blockchainSubscribeFiatRates.js +36 -24
  36. package/lib/api/blockchainUnsubscribe.js +57 -37
  37. package/lib/api/blockchainUnsubscribeFiatRates.js +31 -22
  38. package/lib/api/cancelCoinjoinAuthorization.js +26 -20
  39. package/lib/api/cardano/api/cardanoComposeTransaction.js +75 -50
  40. package/lib/api/cardano/api/cardanoGetAddress.js +105 -102
  41. package/lib/api/cardano/api/cardanoGetNativeScriptHash.js +59 -56
  42. package/lib/api/cardano/api/cardanoGetPublicKey.js +58 -58
  43. package/lib/api/cardano/api/cardanoSignMessage.js +81 -78
  44. package/lib/api/cardano/api/cardanoSignTransaction.js +269 -240
  45. package/lib/api/cardano/api/index.js +40 -7
  46. package/lib/api/cardano/cardanoAddressParameters.js +71 -65
  47. package/lib/api/cardano/cardanoAuxiliaryData.js +68 -63
  48. package/lib/api/cardano/cardanoCertificate.js +124 -119
  49. package/lib/api/cardano/cardanoInputs.js +33 -33
  50. package/lib/api/cardano/cardanoOutputs.d.ts +1 -1
  51. package/lib/api/cardano/cardanoOutputs.js +63 -61
  52. package/lib/api/cardano/cardanoTokenBundle.d.ts +2 -2
  53. package/lib/api/cardano/cardanoTokenBundle.js +18 -13
  54. package/lib/api/cardano/cardanoUtils.js +94 -89
  55. package/lib/api/cardano/cardanoWitnesses.js +46 -42
  56. package/lib/api/changeLanguage.js +40 -29
  57. package/lib/api/changePin.js +21 -16
  58. package/lib/api/changeWipeCode.js +24 -16
  59. package/lib/api/cipherKeyValue.js +42 -41
  60. package/lib/api/common/Discovery.js +114 -112
  61. package/lib/api/common/paramsValidator.js +110 -116
  62. package/lib/api/composeTransaction.d.ts +1 -1
  63. package/lib/api/composeTransaction.js +307 -256
  64. package/lib/api/discoverAccounts.js +291 -191
  65. package/lib/api/eos/api/eosGetPublicKey.js +56 -52
  66. package/lib/api/eos/api/eosSignTransaction.js +35 -26
  67. package/lib/api/eos/api/index.js +16 -3
  68. package/lib/api/eos/eosSignTx.js +308 -312
  69. package/lib/api/ethereum/api/ethereumGetAddress.js +106 -107
  70. package/lib/api/ethereum/api/ethereumGetPublicKey.js +72 -62
  71. package/lib/api/ethereum/api/ethereumSignMessage.js +55 -48
  72. package/lib/api/ethereum/api/ethereumSignTransaction.d.ts +33 -0
  73. package/lib/api/ethereum/api/ethereumSignTransaction.js +137 -132
  74. package/lib/api/ethereum/api/ethereumSignTypedData.d.ts +4 -4
  75. package/lib/api/ethereum/api/ethereumSignTypedData.js +183 -181
  76. package/lib/api/ethereum/api/ethereumVerifyMessage.js +27 -24
  77. package/lib/api/ethereum/api/index.js +40 -7
  78. package/lib/api/ethereum/ethereumDefinitions.js +94 -87
  79. package/lib/api/ethereum/ethereumSignTx.js +116 -111
  80. package/lib/api/ethereum/ethereumSignTypedData.js +98 -95
  81. package/lib/api/evoluGetDelegatedIdentityKey.js +30 -26
  82. package/lib/api/evoluGetNode.js +24 -19
  83. package/lib/api/evoluSignRegistrationRequest.js +26 -21
  84. package/lib/api/firmware/calculateFirmwareHash.js +44 -32
  85. package/lib/api/firmware/getBinary.js +30 -22
  86. package/lib/api/firmware/index.js +46 -8
  87. package/lib/api/firmware/modifyFirmware.js +13 -12
  88. package/lib/api/firmware/parseFirmwareHeaders.js +29 -30
  89. package/lib/api/firmware/uploadFirmware.js +84 -67
  90. package/lib/api/firmware/verifyEntropy.js +88 -83
  91. package/lib/api/getAccountDescriptor.js +118 -120
  92. package/lib/api/getAccountInfo.d.ts +14 -14
  93. package/lib/api/getAccountInfo.js +316 -287
  94. package/lib/api/getAddress.js +128 -118
  95. package/lib/api/getCoinInfo.js +22 -17
  96. package/lib/api/getDeviceState.js +16 -10
  97. package/lib/api/getFeatures.d.ts +1 -1
  98. package/lib/api/getFeatures.js +15 -12
  99. package/lib/api/getFirmwareHash.js +23 -18
  100. package/lib/api/getNonce.js +12 -9
  101. package/lib/api/getOwnershipId.js +57 -51
  102. package/lib/api/getOwnershipProof.js +66 -60
  103. package/lib/api/getPublicKey.js +72 -66
  104. package/lib/api/getSettings.js +12 -9
  105. package/lib/api/index.js +346 -58
  106. package/lib/api/loadDevice.js +40 -35
  107. package/lib/api/monero/api/index.js +28 -5
  108. package/lib/api/monero/api/moneroGetAddress.js +108 -97
  109. package/lib/api/monero/api/moneroGetWatchKey.js +37 -32
  110. package/lib/api/monero/api/moneroKeyImageSync.js +111 -107
  111. package/lib/api/monero/api/moneroSignTransaction.js +173 -185
  112. package/lib/api/nem/api/index.js +16 -3
  113. package/lib/api/nem/api/nemGetAddress.js +107 -102
  114. package/lib/api/nem/api/nemSignTransaction.js +25 -20
  115. package/lib/api/nem/nemSignTx.js +128 -125
  116. package/lib/api/pushTransaction.js +31 -27
  117. package/lib/api/recoveryDevice.js +44 -39
  118. package/lib/api/requestLogin.d.ts +0 -1
  119. package/lib/api/requestLogin.js +47 -52
  120. package/lib/api/resetDevice.js +100 -90
  121. package/lib/api/ripple/api/index.js +16 -3
  122. package/lib/api/ripple/api/rippleGetAddress.js +92 -88
  123. package/lib/api/ripple/api/rippleSignTransaction.js +44 -34
  124. package/lib/api/setBrightness.js +21 -16
  125. package/lib/api/setBusy.js +27 -20
  126. package/lib/api/setProxy.js +22 -15
  127. package/lib/api/showDeviceTutorial.js +18 -15
  128. package/lib/api/signMessage.js +50 -46
  129. package/lib/api/signTransaction.js +325 -238
  130. package/lib/api/solana/additionalInfo.js +17 -14
  131. package/lib/api/solana/api/index.js +28 -5
  132. package/lib/api/solana/api/solanaComposeTransaction.js +46 -50
  133. package/lib/api/solana/api/solanaGetAddress.js +92 -90
  134. package/lib/api/solana/api/solanaGetPublicKey.js +56 -52
  135. package/lib/api/solana/api/solanaSignTransaction.js +175 -168
  136. package/lib/api/solana/solanaDefinitions.js +32 -25
  137. package/lib/api/solana/solanaUtils.d.ts +2 -2
  138. package/lib/api/solana/solanaUtils.js +231 -177
  139. package/lib/api/stellar/api/index.js +16 -3
  140. package/lib/api/stellar/api/stellarGetAddress.js +92 -88
  141. package/lib/api/stellar/api/stellarSignTransaction.js +51 -44
  142. package/lib/api/stellar/stellarSignTx.js +184 -179
  143. package/lib/api/tezos/api/index.js +22 -4
  144. package/lib/api/tezos/api/tezosGetAddress.js +92 -88
  145. package/lib/api/tezos/api/tezosGetPublicKey.js +55 -51
  146. package/lib/api/tezos/api/tezosSignTransaction.js +23 -18
  147. package/lib/api/tezos/tezosSignTx.js +183 -169
  148. package/lib/api/thpGetCredentials.js +23 -20
  149. package/lib/api/thpRemoveCredentials.js +28 -21
  150. package/lib/api/unlockPath.js +28 -21
  151. package/lib/api/verifyMessage.js +35 -33
  152. package/lib/api/wipeDevice.js +39 -34
  153. package/lib/backend/BackendManager.js +127 -107
  154. package/lib/backend/Blockchain.d.ts +1 -1
  155. package/lib/backend/Blockchain.js +220 -205
  156. package/lib/backend/BlockchainLink.js +17 -5
  157. package/lib/backend/fees/BitcoinFeeLevels.js +41 -34
  158. package/lib/backend/fees/EthereumFeeLevels.js +51 -51
  159. package/lib/backend/fees/MiscFeeLevels.js +25 -24
  160. package/lib/backend/fees/index.js +28 -21
  161. package/lib/constants/cardano.js +11 -8
  162. package/lib/constants/errors.js +72 -65
  163. package/lib/constants/firmware.js +5 -5
  164. package/lib/constants/index.js +16 -3
  165. package/lib/constants/nem.js +19 -16
  166. package/lib/constants/network.js +15 -22
  167. package/lib/constants/utxo.js +4 -1
  168. package/lib/core/AbstractMethod.d.ts +1 -1
  169. package/lib/core/AbstractMethod.js +248 -224
  170. package/lib/core/index.js +936 -775
  171. package/lib/core/method.js +19 -16
  172. package/lib/core/method.native.js +28 -23
  173. package/lib/core/onCallFirmwareUpdate.js +368 -299
  174. package/lib/data/DataManager.js +85 -77
  175. package/lib/data/analyticsInfo.js +35 -29
  176. package/lib/data/coinInfo.js +154 -156
  177. package/lib/data/config.d.ts +1 -1
  178. package/lib/data/config.js +362 -330
  179. package/lib/data/connectSettings.js +131 -144
  180. package/lib/data/defaultFeeLevels.js +154 -108
  181. package/lib/data/firmwareInfo.d.ts +1 -0
  182. package/lib/data/firmwareInfo.js +407 -377
  183. package/lib/data/thpSettings.js +36 -35
  184. package/lib/data/udevInfo.js +24 -24
  185. package/lib/data/version.d.ts +1 -1
  186. package/lib/data/version.js +6 -5
  187. package/lib/device/Device.d.ts +6 -7
  188. package/lib/device/Device.js +731 -749
  189. package/lib/device/DeviceCommands.js +226 -194
  190. package/lib/device/DeviceCurrentSession.d.ts +333 -333
  191. package/lib/device/DeviceCurrentSession.js +235 -236
  192. package/lib/device/DeviceList.d.ts +2 -0
  193. package/lib/device/DeviceList.js +219 -181
  194. package/lib/device/StateStorage.js +32 -29
  195. package/lib/device/TransportList.d.ts +1 -1
  196. package/lib/device/TransportList.js +37 -36
  197. package/lib/device/TransportManager.js +136 -140
  198. package/lib/device/calculateRevisionForDevice.js +20 -14
  199. package/lib/device/checkFirmwareRevision.js +66 -54
  200. package/lib/device/resolveDescriptorForTaproot.js +26 -16
  201. package/lib/device/thp/handshake.js +95 -82
  202. package/lib/device/thp/index.js +53 -38
  203. package/lib/device/thp/pairing.js +209 -199
  204. package/lib/device/thp/session.js +27 -19
  205. package/lib/device/thp/thpCall.js +53 -43
  206. package/lib/device/workflow/checkFirmwareHash.js +77 -67
  207. package/lib/device/workflow/checkFirmwareHashWithRetries.js +32 -29
  208. package/lib/device/workflow/handshake.js +50 -41
  209. package/lib/device/workflow/index.js +10 -2
  210. package/lib/device/workflow/trezorPushNotification.js +68 -64
  211. package/lib/device/workflow/validateState.js +155 -129
  212. package/lib/events/blockchain.js +13 -10
  213. package/lib/events/call.d.ts +6 -4
  214. package/lib/events/call.js +14 -13
  215. package/lib/events/core.js +24 -21
  216. package/lib/events/device.d.ts +2 -2
  217. package/lib/events/device.js +32 -19
  218. package/lib/events/iframe.js +13 -10
  219. package/lib/events/index.d.ts +0 -1
  220. package/lib/events/index.js +6 -3
  221. package/lib/events/popup.js +20 -17
  222. package/lib/events/transport.d.ts +2 -2
  223. package/lib/events/transport.js +16 -11
  224. package/lib/events/ui-promise.js +4 -1
  225. package/lib/events/ui-request.d.ts +0 -4
  226. package/lib/events/ui-request.js +48 -46
  227. package/lib/events/ui-response.d.ts +2 -2
  228. package/lib/events/ui-response.js +20 -17
  229. package/lib/events/webextension.js +9 -6
  230. package/lib/exports.js +10 -2
  231. package/lib/factory.d.ts +3 -2
  232. package/lib/factory.js +34 -143
  233. package/lib/impl/core-in-module.d.ts +1 -6
  234. package/lib/impl/core-in-module.js +187 -191
  235. package/lib/impl/dynamic.d.ts +0 -1
  236. package/lib/impl/dynamic.js +108 -97
  237. package/lib/index-browser.d.ts +1 -0
  238. package/lib/index-browser.js +18 -16
  239. package/lib/index.d.ts +2 -0
  240. package/lib/index.js +144 -148
  241. package/lib/types/account.js +4 -1
  242. package/lib/types/api/applyFlags.js +4 -1
  243. package/lib/types/api/applySettings.d.ts +2 -2
  244. package/lib/types/api/applySettings.js +7 -7
  245. package/lib/types/api/authenticateDevice.js +7 -4
  246. package/lib/types/api/authorizeCoinjoin.js +13 -10
  247. package/lib/types/api/backupDevice.js +4 -1
  248. package/lib/types/api/bitcoin/index.d.ts +5 -2
  249. package/lib/types/api/bitcoin/index.js +14 -11
  250. package/lib/types/api/bleUnpair.js +4 -1
  251. package/lib/types/api/blockchainDisconnect.js +4 -1
  252. package/lib/types/api/blockchainEstimateFee.js +4 -1
  253. package/lib/types/api/blockchainEvmRpcCall.js +4 -1
  254. package/lib/types/api/blockchainGetAccountBalanceHistory.js +4 -1
  255. package/lib/types/api/blockchainGetCurrentFiatRates.js +4 -1
  256. package/lib/types/api/blockchainGetFiatRatesForTimestamps.js +4 -1
  257. package/lib/types/api/blockchainGetInfo.js +4 -1
  258. package/lib/types/api/blockchainGetTransactions.js +4 -1
  259. package/lib/types/api/blockchainSetCustomBackend.js +4 -1
  260. package/lib/types/api/blockchainSubscribe.js +4 -1
  261. package/lib/types/api/blockchainSubscribeFiatRates.js +4 -1
  262. package/lib/types/api/blockchainUnsubscribe.js +4 -1
  263. package/lib/types/api/blockchainUnsubscribeFiatRates.js +4 -1
  264. package/lib/types/api/cancel.js +4 -1
  265. package/lib/types/api/cancelCoinjoinAuthorization.js +5 -2
  266. package/lib/types/api/cardano/index.d.ts +4 -4
  267. package/lib/types/api/cardano/index.js +173 -180
  268. package/lib/types/api/cardanoComposeTransaction.js +76 -65
  269. package/lib/types/api/cardanoGetAddress.js +4 -1
  270. package/lib/types/api/cardanoGetNativeScriptHash.js +4 -1
  271. package/lib/types/api/cardanoGetPublicKey.js +4 -1
  272. package/lib/types/api/cardanoSignMessage.js +4 -1
  273. package/lib/types/api/cardanoSignTransaction.js +4 -1
  274. package/lib/types/api/changeLanguage.d.ts +1 -1
  275. package/lib/types/api/changeLanguage.js +13 -13
  276. package/lib/types/api/changePin.js +4 -1
  277. package/lib/types/api/changeWipeCode.js +4 -1
  278. package/lib/types/api/cipherKeyValue.d.ts +2 -2
  279. package/lib/types/api/cipherKeyValue.js +11 -8
  280. package/lib/types/api/composeTransaction.js +4 -1
  281. package/lib/types/api/device.js +1 -2
  282. package/lib/types/api/disableWebUSB.js +4 -1
  283. package/lib/types/api/discoverAccounts.js +204 -55
  284. package/lib/types/api/dispose.js +4 -1
  285. package/lib/types/api/eos/index.d.ts +3 -3
  286. package/lib/types/api/eos/index.js +106 -162
  287. package/lib/types/api/eosGetPublicKey.js +4 -1
  288. package/lib/types/api/eosSignTransaction.js +4 -1
  289. package/lib/types/api/ethereum/index.d.ts +7 -7
  290. package/lib/types/api/ethereum/index.js +70 -67
  291. package/lib/types/api/ethereumGetAddress.js +4 -1
  292. package/lib/types/api/ethereumGetPublicKey.js +4 -1
  293. package/lib/types/api/ethereumSignMessage.js +4 -1
  294. package/lib/types/api/ethereumSignTransaction.js +4 -1
  295. package/lib/types/api/ethereumSignTypedData.js +4 -1
  296. package/lib/types/api/ethereumVerifyMessage.js +4 -1
  297. package/lib/types/api/evoluGetDelegatedIdentityKey.js +4 -1
  298. package/lib/types/api/evoluGetNode.js +4 -1
  299. package/lib/types/api/evoluSignRegistrationRequest.js +4 -1
  300. package/lib/types/api/firmwareUpdate.d.ts +1 -1
  301. package/lib/types/api/firmwareUpdate.js +12 -12
  302. package/lib/types/api/getAccountDescriptor.js +8 -5
  303. package/lib/types/api/getAccountInfo.js +4 -1
  304. package/lib/types/api/getAddress.js +11 -11
  305. package/lib/types/api/getCoinInfo.js +4 -1
  306. package/lib/types/api/getDeviceState.js +4 -1
  307. package/lib/types/api/getFeatures.js +4 -1
  308. package/lib/types/api/getFirmwareHash.js +4 -1
  309. package/lib/types/api/getNonce.d.ts +1 -1
  310. package/lib/types/api/getNonce.js +4 -1
  311. package/lib/types/api/getOwnershipId.js +8 -5
  312. package/lib/types/api/getOwnershipProof.js +14 -9
  313. package/lib/types/api/getPublicKey.js +25 -28
  314. package/lib/types/api/getSettings.js +4 -1
  315. package/lib/types/api/index.js +4 -1
  316. package/lib/types/api/init.js +4 -1
  317. package/lib/types/api/loadDevice.js +4 -1
  318. package/lib/types/api/manifest.js +4 -1
  319. package/lib/types/api/monero/index.js +117 -114
  320. package/lib/types/api/moneroGetAddress.js +4 -1
  321. package/lib/types/api/moneroGetWatchKey.js +4 -1
  322. package/lib/types/api/moneroKeyImageSync.js +4 -1
  323. package/lib/types/api/moneroSignTransaction.js +4 -1
  324. package/lib/types/api/nem/index.d.ts +7 -7
  325. package/lib/types/api/nem/index.js +78 -112
  326. package/lib/types/api/nemGetAddress.js +7 -7
  327. package/lib/types/api/nemSignTransaction.js +4 -1
  328. package/lib/types/api/off.js +4 -1
  329. package/lib/types/api/on.js +4 -1
  330. package/lib/types/api/pushTransaction.js +10 -10
  331. package/lib/types/api/recoveryDevice.d.ts +1 -1
  332. package/lib/types/api/recoveryDevice.js +7 -7
  333. package/lib/types/api/removeAllListeners.js +4 -1
  334. package/lib/types/api/renderWebUSBButton.js +4 -1
  335. package/lib/types/api/requestLogin.d.ts +4 -24
  336. package/lib/types/api/requestLogin.js +11 -13
  337. package/lib/types/api/requestWebUSBDevice.js +4 -1
  338. package/lib/types/api/resetDevice.js +4 -1
  339. package/lib/types/api/ripple/index.js +17 -14
  340. package/lib/types/api/rippleGetAddress.js +4 -1
  341. package/lib/types/api/rippleSignTransaction.js +4 -1
  342. package/lib/types/api/setBrightness.js +4 -1
  343. package/lib/types/api/setBusy.js +4 -1
  344. package/lib/types/api/setProxy.js +4 -1
  345. package/lib/types/api/setTransports.js +4 -1
  346. package/lib/types/api/showDeviceTutorial.js +4 -1
  347. package/lib/types/api/signMessage.js +4 -1
  348. package/lib/types/api/signTransaction.js +4 -1
  349. package/lib/types/api/solana/index.js +55 -56
  350. package/lib/types/api/solanaComposeTransaction.js +4 -1
  351. package/lib/types/api/solanaGetAddress.js +4 -1
  352. package/lib/types/api/solanaGetPublicKey.js +4 -1
  353. package/lib/types/api/solanaSignTransaction.js +4 -1
  354. package/lib/types/api/stellar/index.d.ts +146 -146
  355. package/lib/types/api/stellar/index.js +151 -221
  356. package/lib/types/api/stellarGetAddress.js +4 -1
  357. package/lib/types/api/stellarSignTransaction.js +4 -1
  358. package/lib/types/api/tezos/index.js +46 -43
  359. package/lib/types/api/tezosGetAddress.js +4 -1
  360. package/lib/types/api/tezosGetPublicKey.js +4 -1
  361. package/lib/types/api/tezosSignTransaction.js +4 -1
  362. package/lib/types/api/thpGetCredentials.js +4 -1
  363. package/lib/types/api/thpRemoveCredentials.js +4 -1
  364. package/lib/types/api/uiResponse.js +4 -1
  365. package/lib/types/api/unlockPath.js +6 -3
  366. package/lib/types/api/verifyMessage.js +4 -1
  367. package/lib/types/api/wipeDevice.js +4 -1
  368. package/lib/types/coinInfo.js +62 -77
  369. package/lib/types/device.d.ts +7 -2
  370. package/lib/types/device.js +7 -4
  371. package/lib/types/fees.js +31 -37
  372. package/lib/types/firmware.js +4 -1
  373. package/lib/types/index.d.ts +1 -0
  374. package/lib/types/index.js +18 -3
  375. package/lib/types/params.js +25 -16
  376. package/lib/types/settings.js +4 -1
  377. package/lib/types/utils.js +4 -1
  378. package/lib/types/workflow.js +4 -1
  379. package/lib/utils/accountUtils.js +76 -81
  380. package/lib/utils/addressUtils.js +21 -21
  381. package/lib/utils/assetUtils.js +29 -26
  382. package/lib/utils/assets-browser.js +19 -13
  383. package/lib/utils/assets.js +10 -9
  384. package/lib/utils/assets.native.js +24 -23
  385. package/lib/utils/assetsTypes.js +4 -1
  386. package/lib/utils/debug.js +18 -13
  387. package/lib/utils/deviceFeaturesUtils.js +105 -127
  388. package/lib/utils/ethereumUtils.js +9 -6
  389. package/lib/utils/firmwareReleaseConfigUtils.js +69 -57
  390. package/lib/utils/firmwareUtils.js +45 -57
  391. package/lib/utils/formatUtils.d.ts +0 -1
  392. package/lib/utils/formatUtils.js +63 -62
  393. package/lib/utils/hdnodeUtils.d.ts +0 -1
  394. package/lib/utils/hdnodeUtils.js +51 -57
  395. package/lib/utils/interactionTimeout.js +26 -23
  396. package/lib/utils/pathUtils.js +132 -148
  397. package/lib/utils/popupPromiseManager.js +23 -14
  398. package/lib/utils/proxy-event-emitter.js +63 -60
  399. package/lib/utils/uiPromiseManager.js +55 -43
  400. package/lib/utils/urlUtils.js +20 -26
  401. package/lib/utils/versionCheck.js +10 -10
  402. package/lib/workers/workers-browser.d.ts +5 -5
  403. package/lib/workers/workers-browser.js +5 -2
  404. package/lib/workers/workers.d.ts +1 -1
  405. package/lib/workers/workers.js +49 -38
  406. package/lib/workers/workers.native.d.ts +5 -5
  407. package/lib/workers/workers.native.js +4 -1
  408. package/package.json +23 -20
@@ -1,35 +1,34 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.parseFirmwareHeaders = void 0;
4
- const parseFirmwareHeaders = (buff) => {
5
- const vendorHeader = buff.subarray(0, 4).toString('utf8');
6
- let trezorImageHeader = '';
7
- let restbuff;
8
- if (vendorHeader === 'TRZV') {
9
- const vendorHeaderLength = buff.readUInt32LE(4);
10
- trezorImageHeader = buff
11
- .subarray(vendorHeaderLength, vendorHeaderLength + 4)
12
- .toString('utf8');
13
- restbuff = buff.subarray(vendorHeaderLength + 4);
14
- }
15
- else if (vendorHeader === 'TRZR') {
16
- restbuff = buff.subarray(256 + 4);
17
- trezorImageHeader = buff.subarray(256, 256 + 4).toString('utf8');
18
- }
19
- else {
20
- restbuff = buff.subarray(4);
21
- trezorImageHeader = buff.subarray(0, 4).toString('utf8');
22
- }
23
- if (trezorImageHeader !== 'TRZF') {
24
- throw new Error(`unexpected header ${vendorHeader}`);
25
- }
26
- const version_major = restbuff.readInt8(12);
27
- const version_minor = restbuff.readInt8(13);
28
- const version_patch = restbuff.readInt8(14);
29
- const version = [version_major, version_minor, version_patch];
30
- return {
31
- version,
32
- };
7
+ const parseFirmwareHeaders = buff => {
8
+ const vendorHeader = buff.subarray(0, 4).toString('utf8');
9
+ let trezorImageHeader = '';
10
+ let restbuff;
11
+ if (vendorHeader === 'TRZV') {
12
+ const vendorHeaderLength = buff.readUInt32LE(4);
13
+ trezorImageHeader = buff.subarray(vendorHeaderLength, vendorHeaderLength + 4).toString('utf8');
14
+ restbuff = buff.subarray(vendorHeaderLength + 4);
15
+ } else if (vendorHeader === 'TRZR') {
16
+ restbuff = buff.subarray(256 + 4);
17
+ trezorImageHeader = buff.subarray(256, 256 + 4).toString('utf8');
18
+ } else {
19
+ restbuff = buff.subarray(4);
20
+ trezorImageHeader = buff.subarray(0, 4).toString('utf8');
21
+ }
22
+ if (trezorImageHeader !== 'TRZF') {
23
+ throw new Error(`unexpected header ${vendorHeader}`);
24
+ }
25
+ const version_major = restbuff.readInt8(12);
26
+ const version_minor = restbuff.readInt8(13);
27
+ const version_patch = restbuff.readInt8(14);
28
+ const version = [version_major, version_minor, version_patch];
29
+ return {
30
+ version
31
+ };
33
32
  };
34
33
  exports.parseFirmwareHeaders = parseFirmwareHeaders;
35
34
  //# sourceMappingURL=parseFirmwareHeaders.js.map
@@ -1,82 +1,99 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.uploadFirmware = void 0;
4
7
  const transport_1 = require("@trezor/transport");
5
8
  const constants_1 = require("../../constants");
6
9
  const events_1 = require("../../events");
7
10
  const postConfirmationMessage = (device, updateFlowType) => {
8
- const freshInstall = device.features.firmware_present === false;
9
- if (freshInstall || updateFlowType === 'reboot_and_upgrade')
10
- return;
11
- device.emit(events_1.DEVICE.BUTTON, { device, payload: { code: 'ButtonRequest_FirmwareUpdate' } });
11
+ const freshInstall = device.features.firmware_present === false;
12
+ if (freshInstall || updateFlowType === 'reboot_and_upgrade') return;
13
+ device.emit(events_1.DEVICE.BUTTON, {
14
+ device,
15
+ payload: {
16
+ code: 'ButtonRequest_FirmwareUpdate'
17
+ }
18
+ });
12
19
  };
13
20
  const postProgressMessage = (device, progress, postMessage) => {
14
- postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_PROGRESS, {
15
- device: device.toMessageObject(),
16
- operation: 'flashing',
17
- progress,
18
- }));
21
+ postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_PROGRESS, {
22
+ device: device.toMessageObject(),
23
+ operation: 'flashing',
24
+ progress
25
+ }));
19
26
  };
20
27
  const FIRMWARE_ERASE_TIMEOUT_MILLISECONDS = 15_000;
21
- const uploadFirmware = async ({ typedCall, postMessage, device, firmwareUploadRequest: { payload }, updateFlowType, }) => {
22
- if (device.features.major_version === 1) {
23
- postConfirmationMessage(device, updateFlowType);
24
- const timeoutId = setTimeout(() => {
25
- postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_PROGRESS_UNEXPECTED_DELAY, {}));
26
- }, FIRMWARE_ERASE_TIMEOUT_MILLISECONDS);
27
- await typedCall('FirmwareErase', 'Success', {});
28
- clearTimeout(timeoutId);
29
- postProgressMessage(device, 0, postMessage);
30
- let i = 0;
31
- const progressTimer = setInterval(() => {
32
- i++;
33
- postProgressMessage(device, Math.min(i * 2, 99), postMessage);
34
- }, 300);
35
- const message = await typedCall('FirmwareUpload', 'Success', {
36
- payload,
37
- }).finally(() => {
38
- clearInterval(progressTimer);
39
- });
40
- postProgressMessage(device, 100, postMessage);
41
- return message;
42
- }
43
- if (device.features.major_version === 2) {
44
- postConfirmationMessage(device, updateFlowType);
45
- const length = payload.byteLength;
46
- let progress = 0;
47
- let response = await typedCall('FirmwareErase', ['FirmwareRequest', 'Success'], { length });
48
- postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_PROGRESS, {
49
- device: device.toMessageObject(),
50
- operation: 'start-flashing',
51
- progress,
52
- }));
53
- while (response.type !== 'Success') {
54
- const start = response.message.offset;
55
- const end = response.message.offset + response.message.length;
56
- const chunk = payload.slice(start, end);
57
- const progressStart = Math.round((start / length) * 100);
58
- const progressEnd = Math.round((end / length) * 100);
59
- const progressDiff = progressEnd - progressStart;
60
- device.transport.on(transport_1.TRANSPORT.SEND_MESSAGE_PROGRESS, p => {
61
- const newProgress = progressStart + Math.floor(progressDiff * p);
62
- if (start > 0 && newProgress > progress) {
63
- progress = newProgress;
64
- postProgressMessage(device, progress, postMessage);
65
- }
66
- });
67
- if (start > 0) {
68
- postProgressMessage(device, progressStart, postMessage);
69
- }
70
- response = await typedCall('FirmwareUpload', ['FirmwareRequest', 'Success'], {
71
- payload: chunk,
72
- }).finally(() => {
73
- device.transport.removeAllListeners(transport_1.TRANSPORT.SEND_MESSAGE_PROGRESS);
74
- });
28
+ const uploadFirmware = async ({
29
+ typedCall,
30
+ postMessage,
31
+ device,
32
+ firmwareUploadRequest: {
33
+ payload
34
+ },
35
+ updateFlowType
36
+ }) => {
37
+ if (device.features.major_version === 1) {
38
+ postConfirmationMessage(device, updateFlowType);
39
+ const timeoutId = setTimeout(() => {
40
+ postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_PROGRESS_UNEXPECTED_DELAY, {}));
41
+ }, FIRMWARE_ERASE_TIMEOUT_MILLISECONDS);
42
+ await typedCall('FirmwareErase', 'Success', {});
43
+ clearTimeout(timeoutId);
44
+ postProgressMessage(device, 0, postMessage);
45
+ let i = 0;
46
+ const progressTimer = setInterval(() => {
47
+ i++;
48
+ postProgressMessage(device, Math.min(i * 2, 99), postMessage);
49
+ }, 300);
50
+ const message = await typedCall('FirmwareUpload', 'Success', {
51
+ payload
52
+ }).finally(() => {
53
+ clearInterval(progressTimer);
54
+ });
55
+ postProgressMessage(device, 100, postMessage);
56
+ return message;
57
+ }
58
+ if (device.features.major_version === 2) {
59
+ postConfirmationMessage(device, updateFlowType);
60
+ const length = payload.byteLength;
61
+ let progress = 0;
62
+ let response = await typedCall('FirmwareErase', ['FirmwareRequest', 'Success'], {
63
+ length
64
+ });
65
+ postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_PROGRESS, {
66
+ device: device.toMessageObject(),
67
+ operation: 'start-flashing',
68
+ progress
69
+ }));
70
+ while (response.type !== 'Success') {
71
+ const start = response.message.offset;
72
+ const end = response.message.offset + response.message.length;
73
+ const chunk = payload.slice(start, end);
74
+ const progressStart = Math.round(start / length * 100);
75
+ const progressEnd = Math.round(end / length * 100);
76
+ const progressDiff = progressEnd - progressStart;
77
+ device.transport.on(transport_1.TRANSPORT.SEND_MESSAGE_PROGRESS, p => {
78
+ const newProgress = progressStart + Math.floor(progressDiff * p);
79
+ if (start > 0 && newProgress > progress) {
80
+ progress = newProgress;
81
+ postProgressMessage(device, progress, postMessage);
75
82
  }
76
- postProgressMessage(device, 100, postMessage);
77
- return response.message;
83
+ });
84
+ if (start > 0) {
85
+ postProgressMessage(device, progressStart, postMessage);
86
+ }
87
+ response = await typedCall('FirmwareUpload', ['FirmwareRequest', 'Success'], {
88
+ payload: chunk
89
+ }).finally(() => {
90
+ device.transport.removeAllListeners(transport_1.TRANSPORT.SEND_MESSAGE_PROGRESS);
91
+ });
78
92
  }
79
- throw constants_1.ERRORS.TypedError('Runtime', 'uploadFirmware: unknown major_version');
93
+ postProgressMessage(device, 100, postMessage);
94
+ return response.message;
95
+ }
96
+ throw constants_1.ERRORS.TypedError('Runtime', 'uploadFirmware: unknown major_version');
80
97
  };
81
98
  exports.uploadFirmware = uploadFirmware;
82
99
  //# sourceMappingURL=uploadFirmware.js.map
@@ -1,5 +1,8 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.verifyEntropy = exports.generateEntropy = void 0;
4
7
  const crypto_1 = require("@noble/hashes/crypto");
5
8
  const hmac_1 = require("@noble/hashes/hmac");
@@ -9,104 +12,106 @@ const bip39_1 = require("@scure/bip39");
9
12
  const crypto_utils_1 = require("@trezor/crypto-utils");
10
13
  const utxo_lib_1 = require("@trezor/utxo-lib");
11
14
  const constants_1 = require("../../constants");
12
- const generateEntropy = (len) => {
13
- try {
14
- return Buffer.from((0, utils_1.randomBytes)(len));
15
- }
16
- catch {
17
- throw new Error('generateEntropy: Environment does not support crypto random');
18
- }
15
+ const generateEntropy = len => {
16
+ try {
17
+ return Buffer.from((0, utils_1.randomBytes)(len));
18
+ } catch {
19
+ throw new Error('generateEntropy: Environment does not support crypto random');
20
+ }
19
21
  };
20
22
  exports.generateEntropy = generateEntropy;
21
23
  const BASE_ITERATION_COUNT = 10000;
22
24
  const ROUND_COUNT = 4;
23
25
  const roundFunction = async (i, passphrase, e, salt, r) => {
24
- const data = Buffer.concat([Buffer.from([i]), passphrase]);
25
- const iterations = Math.floor((BASE_ITERATION_COUNT << e) / ROUND_COUNT);
26
- const { subtle } = crypto_1.crypto;
27
- const key = await subtle.importKey('raw', data, 'PBKDF2', false, ['deriveBits']);
28
- const bits = await subtle.deriveBits({
29
- name: 'PBKDF2',
30
- hash: 'SHA-256',
31
- salt: Buffer.concat([salt, r]),
32
- iterations,
33
- }, key, r.length * 8);
34
- return Buffer.from(bits);
26
+ const data = Buffer.concat([Buffer.from([i]), passphrase]);
27
+ const iterations = Math.floor((BASE_ITERATION_COUNT << e) / ROUND_COUNT);
28
+ const {
29
+ subtle
30
+ } = crypto_1.crypto;
31
+ const key = await subtle.importKey('raw', data, 'PBKDF2', false, ['deriveBits']);
32
+ const bits = await subtle.deriveBits({
33
+ name: 'PBKDF2',
34
+ hash: 'SHA-256',
35
+ salt: Buffer.concat([salt, r]),
36
+ iterations
37
+ }, key, r.length * 8);
38
+ return Buffer.from(bits);
35
39
  };
36
40
  const xor = (a, b) => {
37
- if (a.length !== b.length) {
38
- throw new Error('Buffers must be of equal length to XOR.');
39
- }
40
- const result = Buffer.alloc(a.length);
41
- for (let i = 0; i < a.length; i++) {
42
- result[i] = a[i] ^ b[i];
43
- }
44
- return result;
41
+ if (a.length !== b.length) {
42
+ throw new Error('Buffers must be of equal length to XOR.');
43
+ }
44
+ const result = Buffer.alloc(a.length);
45
+ for (let i = 0; i < a.length; i++) {
46
+ result[i] = a[i] ^ b[i];
47
+ }
48
+ return result;
45
49
  };
46
- const entropyToSeedSlip39 = async (encryptedSecret) => {
47
- const iterationExponent = 1;
48
- const passphrase = Buffer.from('', 'utf-8');
49
- const salt = Buffer.alloc(0);
50
- const half = Math.floor(encryptedSecret.length / 2);
51
- let l = encryptedSecret.subarray(0, half);
52
- let r = encryptedSecret.subarray(half);
53
- for (let round = ROUND_COUNT - 1; round >= 0; round--) {
54
- const f = await roundFunction(round, passphrase, iterationExponent, salt, r);
55
- const rr = xor(l, f);
56
- l = r;
57
- r = rr;
58
- }
59
- return Buffer.concat([r, l]);
50
+ const entropyToSeedSlip39 = async encryptedSecret => {
51
+ const iterationExponent = 1;
52
+ const passphrase = Buffer.from('', 'utf-8');
53
+ const salt = Buffer.alloc(0);
54
+ const half = Math.floor(encryptedSecret.length / 2);
55
+ let l = encryptedSecret.subarray(0, half);
56
+ let r = encryptedSecret.subarray(half);
57
+ for (let round = ROUND_COUNT - 1; round >= 0; round--) {
58
+ const f = await roundFunction(round, passphrase, iterationExponent, salt, r);
59
+ const rr = xor(l, f);
60
+ l = r;
61
+ r = rr;
62
+ }
63
+ return Buffer.concat([r, l]);
60
64
  };
61
65
  const getEntropy = (trezorEntropy, hostEntropy, strength) => {
62
- const data = Buffer.concat([
63
- Buffer.from(trezorEntropy, 'hex'),
64
- Buffer.from(hostEntropy, 'hex'),
65
- ]);
66
- const entropy = (0, sha256_1.sha256)(data);
67
- return Buffer.from(entropy.subarray(0, Math.floor(strength / 8)));
66
+ const data = Buffer.concat([Buffer.from(trezorEntropy, 'hex'), Buffer.from(hostEntropy, 'hex')]);
67
+ const entropy = (0, sha256_1.sha256)(data);
68
+ return Buffer.from(entropy.subarray(0, Math.floor(strength / 8)));
68
69
  };
69
70
  const computeSeed = (type, secret) => {
70
- const BackupType = constants_1.PROTO.Enum_BackupType;
71
- if (type &&
72
- [
73
- BackupType.Slip39_Basic,
74
- BackupType.Slip39_Advanced,
75
- BackupType.Slip39_Single_Extendable,
76
- BackupType.Slip39_Basic_Extendable,
77
- BackupType.Slip39_Advanced_Extendable,
78
- ].includes(type)) {
79
- return entropyToSeedSlip39(secret);
80
- }
81
- return (0, bip39_1.mnemonicToSeed)((0, bip39_1.entropyToMnemonic)(secret, [...crypto_utils_1.bip39])).then(seed => Buffer.from(seed));
71
+ const BackupType = constants_1.PROTO.Enum_BackupType;
72
+ if (type && [BackupType.Slip39_Basic, BackupType.Slip39_Advanced, BackupType.Slip39_Single_Extendable, BackupType.Slip39_Basic_Extendable, BackupType.Slip39_Advanced_Extendable].includes(type)) {
73
+ return entropyToSeedSlip39(secret);
74
+ }
75
+ return (0, bip39_1.mnemonicToSeed)((0, bip39_1.entropyToMnemonic)(secret, [...crypto_utils_1.bip39])).then(seed => Buffer.from(seed));
82
76
  };
83
77
  const verifyCommitment = (entropy, commitment) => {
84
- const hmacDigest = (0, hmac_1.hmac)(sha256_1.sha256, Buffer.from(entropy, 'hex'), Buffer.alloc(0));
85
- if (!Buffer.from(hmacDigest).equals(Buffer.from(commitment, 'hex'))) {
86
- throw new Error('Invalid entropy commitment');
87
- }
78
+ const hmacDigest = (0, hmac_1.hmac)(sha256_1.sha256, Buffer.from(entropy, 'hex'), Buffer.alloc(0));
79
+ if (!Buffer.from(hmacDigest).equals(Buffer.from(commitment, 'hex'))) {
80
+ throw new Error('Invalid entropy commitment');
81
+ }
88
82
  };
89
- const verifyEntropy = async ({ type, strength, trezorEntropy, hostEntropy, commitment, xpubs, }) => {
90
- try {
91
- if (!trezorEntropy || !commitment || !strength || Object.keys(xpubs).length < 1) {
92
- throw new Error('Missing verifyEntropy data');
93
- }
94
- verifyCommitment(trezorEntropy, commitment);
95
- const secret = getEntropy(trezorEntropy, hostEntropy, strength);
96
- const seed = await computeSeed(type, secret);
97
- const node = utxo_lib_1.bip32.fromSeed(seed);
98
- Object.keys(xpubs).forEach(path => {
99
- const pubKey = node.derivePath(path);
100
- const xpub = pubKey.neutered().toBase58();
101
- if (xpub !== xpubs[path]) {
102
- throw new Error('verifyEntropy xpub mismatch');
103
- }
104
- });
105
- return { success: true };
106
- }
107
- catch (error) {
108
- return { success: false, error: error.message };
83
+ const verifyEntropy = async ({
84
+ type,
85
+ strength,
86
+ trezorEntropy,
87
+ hostEntropy,
88
+ commitment,
89
+ xpubs
90
+ }) => {
91
+ try {
92
+ if (!trezorEntropy || !commitment || !strength || Object.keys(xpubs).length < 1) {
93
+ throw new Error('Missing verifyEntropy data');
109
94
  }
95
+ verifyCommitment(trezorEntropy, commitment);
96
+ const secret = getEntropy(trezorEntropy, hostEntropy, strength);
97
+ const seed = await computeSeed(type, secret);
98
+ const node = utxo_lib_1.bip32.fromSeed(seed);
99
+ Object.keys(xpubs).forEach(path => {
100
+ const pubKey = node.derivePath(path);
101
+ const xpub = pubKey.neutered().toBase58();
102
+ if (xpub !== xpubs[path]) {
103
+ throw new Error('verifyEntropy xpub mismatch');
104
+ }
105
+ });
106
+ return {
107
+ success: true
108
+ };
109
+ } catch (error) {
110
+ return {
111
+ success: false,
112
+ error: error.message
113
+ };
114
+ }
110
115
  };
111
116
  exports.verifyEntropy = verifyEntropy;
112
117
  //# sourceMappingURL=verifyEntropy.js.map