@trezor/connect 9.6.5-beta.2 → 9.7.0-beta.2

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 (415) hide show
  1. package/CHANGELOG.md +43 -15
  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 +6 -4
  75. package/lib/api/ethereum/api/ethereumSignTypedData.js +183 -171
  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.d.ts +11 -0
  82. package/lib/api/evoluGetDelegatedIdentityKey.js +41 -0
  83. package/lib/api/evoluGetNode.js +24 -17
  84. package/lib/api/evoluSignRegistrationRequest.d.ts +12 -0
  85. package/lib/api/evoluSignRegistrationRequest.js +35 -0
  86. package/lib/api/firmware/calculateFirmwareHash.js +44 -32
  87. package/lib/api/firmware/getBinary.js +30 -22
  88. package/lib/api/firmware/index.js +46 -8
  89. package/lib/api/firmware/modifyFirmware.js +13 -12
  90. package/lib/api/firmware/parseFirmwareHeaders.js +29 -30
  91. package/lib/api/firmware/uploadFirmware.js +84 -67
  92. package/lib/api/firmware/verifyEntropy.js +88 -83
  93. package/lib/api/getAccountDescriptor.js +118 -120
  94. package/lib/api/getAccountInfo.d.ts +14 -14
  95. package/lib/api/getAccountInfo.js +316 -287
  96. package/lib/api/getAddress.js +128 -118
  97. package/lib/api/getCoinInfo.js +22 -17
  98. package/lib/api/getDeviceState.js +16 -10
  99. package/lib/api/getFeatures.d.ts +5 -1
  100. package/lib/api/getFeatures.js +15 -12
  101. package/lib/api/getFirmwareHash.js +23 -18
  102. package/lib/api/getNonce.js +12 -9
  103. package/lib/api/getOwnershipId.js +57 -51
  104. package/lib/api/getOwnershipProof.js +66 -60
  105. package/lib/api/getPublicKey.js +72 -66
  106. package/lib/api/getSettings.js +12 -9
  107. package/lib/api/index.d.ts +2 -0
  108. package/lib/api/index.js +350 -58
  109. package/lib/api/loadDevice.js +40 -35
  110. package/lib/api/monero/api/index.js +28 -5
  111. package/lib/api/monero/api/moneroGetAddress.js +108 -82
  112. package/lib/api/monero/api/moneroGetWatchKey.js +37 -32
  113. package/lib/api/monero/api/moneroKeyImageSync.js +111 -107
  114. package/lib/api/monero/api/moneroSignTransaction.js +173 -185
  115. package/lib/api/nem/api/index.js +16 -3
  116. package/lib/api/nem/api/nemGetAddress.js +107 -102
  117. package/lib/api/nem/api/nemSignTransaction.js +25 -20
  118. package/lib/api/nem/nemSignTx.js +128 -125
  119. package/lib/api/pushTransaction.js +31 -27
  120. package/lib/api/recoveryDevice.js +44 -39
  121. package/lib/api/requestLogin.d.ts +0 -1
  122. package/lib/api/requestLogin.js +47 -52
  123. package/lib/api/resetDevice.js +100 -90
  124. package/lib/api/ripple/api/index.js +16 -3
  125. package/lib/api/ripple/api/rippleGetAddress.js +92 -88
  126. package/lib/api/ripple/api/rippleSignTransaction.js +44 -34
  127. package/lib/api/setBrightness.js +21 -16
  128. package/lib/api/setBusy.js +27 -20
  129. package/lib/api/setProxy.js +22 -15
  130. package/lib/api/showDeviceTutorial.js +18 -15
  131. package/lib/api/signMessage.js +50 -46
  132. package/lib/api/signTransaction.js +325 -238
  133. package/lib/api/solana/additionalInfo.js +17 -14
  134. package/lib/api/solana/api/index.js +28 -5
  135. package/lib/api/solana/api/solanaComposeTransaction.js +46 -50
  136. package/lib/api/solana/api/solanaGetAddress.js +92 -90
  137. package/lib/api/solana/api/solanaGetPublicKey.js +56 -52
  138. package/lib/api/solana/api/solanaSignTransaction.js +175 -168
  139. package/lib/api/solana/solanaDefinitions.js +32 -25
  140. package/lib/api/solana/solanaUtils.d.ts +2 -2
  141. package/lib/api/solana/solanaUtils.js +231 -177
  142. package/lib/api/stellar/api/index.js +16 -3
  143. package/lib/api/stellar/api/stellarGetAddress.js +92 -88
  144. package/lib/api/stellar/api/stellarSignTransaction.js +51 -44
  145. package/lib/api/stellar/stellarSignTx.js +184 -179
  146. package/lib/api/tezos/api/index.js +22 -4
  147. package/lib/api/tezos/api/tezosGetAddress.js +92 -88
  148. package/lib/api/tezos/api/tezosGetPublicKey.js +55 -51
  149. package/lib/api/tezos/api/tezosSignTransaction.js +23 -18
  150. package/lib/api/tezos/tezosSignTx.js +183 -169
  151. package/lib/api/thpGetCredentials.js +23 -20
  152. package/lib/api/thpRemoveCredentials.js +28 -21
  153. package/lib/api/unlockPath.js +28 -21
  154. package/lib/api/verifyMessage.js +35 -33
  155. package/lib/api/wipeDevice.js +39 -34
  156. package/lib/backend/BackendManager.js +127 -107
  157. package/lib/backend/Blockchain.d.ts +1 -1
  158. package/lib/backend/Blockchain.js +220 -205
  159. package/lib/backend/BlockchainLink.js +17 -5
  160. package/lib/backend/fees/BitcoinFeeLevels.js +41 -34
  161. package/lib/backend/fees/EthereumFeeLevels.js +51 -51
  162. package/lib/backend/fees/MiscFeeLevels.js +25 -24
  163. package/lib/backend/fees/index.js +28 -21
  164. package/lib/constants/cardano.js +11 -8
  165. package/lib/constants/errors.js +72 -65
  166. package/lib/constants/firmware.js +5 -5
  167. package/lib/constants/index.js +16 -3
  168. package/lib/constants/nem.js +19 -16
  169. package/lib/constants/network.js +15 -22
  170. package/lib/constants/utxo.js +4 -1
  171. package/lib/core/AbstractMethod.d.ts +1 -1
  172. package/lib/core/AbstractMethod.js +248 -224
  173. package/lib/core/index.js +936 -775
  174. package/lib/core/method.js +19 -16
  175. package/lib/core/method.native.js +28 -23
  176. package/lib/core/onCallFirmwareUpdate.js +368 -299
  177. package/lib/data/DataManager.js +85 -77
  178. package/lib/data/analyticsInfo.js +35 -29
  179. package/lib/data/coinInfo.js +154 -156
  180. package/lib/data/config.d.ts +1 -1
  181. package/lib/data/config.js +362 -326
  182. package/lib/data/connectSettings.js +131 -144
  183. package/lib/data/defaultFeeLevels.js +154 -108
  184. package/lib/data/firmwareInfo.d.ts +1 -0
  185. package/lib/data/firmwareInfo.js +407 -377
  186. package/lib/data/thpSettings.js +36 -35
  187. package/lib/data/udevInfo.js +24 -24
  188. package/lib/data/version.d.ts +1 -1
  189. package/lib/data/version.js +6 -5
  190. package/lib/device/Device.d.ts +10 -7
  191. package/lib/device/Device.js +731 -749
  192. package/lib/device/DeviceCommands.js +226 -194
  193. package/lib/device/DeviceCurrentSession.d.ts +427 -337
  194. package/lib/device/DeviceCurrentSession.js +235 -236
  195. package/lib/device/DeviceList.d.ts +2 -0
  196. package/lib/device/DeviceList.js +219 -181
  197. package/lib/device/StateStorage.js +32 -29
  198. package/lib/device/TransportList.d.ts +1 -1
  199. package/lib/device/TransportList.js +37 -36
  200. package/lib/device/TransportManager.js +136 -140
  201. package/lib/device/calculateRevisionForDevice.js +20 -14
  202. package/lib/device/checkFirmwareRevision.js +66 -53
  203. package/lib/device/resolveDescriptorForTaproot.js +26 -16
  204. package/lib/device/thp/handshake.js +95 -82
  205. package/lib/device/thp/index.js +53 -38
  206. package/lib/device/thp/pairing.js +209 -199
  207. package/lib/device/thp/session.js +27 -19
  208. package/lib/device/thp/thpCall.js +53 -43
  209. package/lib/device/workflow/checkFirmwareHash.js +77 -67
  210. package/lib/device/workflow/checkFirmwareHashWithRetries.js +32 -29
  211. package/lib/device/workflow/handshake.js +50 -41
  212. package/lib/device/workflow/index.js +10 -2
  213. package/lib/device/workflow/trezorPushNotification.js +68 -63
  214. package/lib/device/workflow/validateState.js +156 -123
  215. package/lib/events/blockchain.js +13 -10
  216. package/lib/events/call.d.ts +6 -4
  217. package/lib/events/call.js +14 -13
  218. package/lib/events/core.js +24 -21
  219. package/lib/events/device.d.ts +2 -2
  220. package/lib/events/device.js +32 -19
  221. package/lib/events/iframe.js +13 -10
  222. package/lib/events/index.d.ts +0 -1
  223. package/lib/events/index.js +6 -3
  224. package/lib/events/popup.js +20 -17
  225. package/lib/events/transport.d.ts +2 -2
  226. package/lib/events/transport.js +16 -11
  227. package/lib/events/ui-promise.js +4 -1
  228. package/lib/events/ui-request.d.ts +0 -4
  229. package/lib/events/ui-request.js +48 -46
  230. package/lib/events/ui-response.d.ts +2 -2
  231. package/lib/events/ui-response.js +20 -17
  232. package/lib/events/webextension.js +9 -6
  233. package/lib/exports.js +10 -2
  234. package/lib/factory.d.ts +3 -2
  235. package/lib/factory.js +34 -141
  236. package/lib/impl/core-in-module.d.ts +1 -8
  237. package/lib/impl/core-in-module.js +186 -211
  238. package/lib/impl/dynamic.d.ts +0 -1
  239. package/lib/impl/dynamic.js +108 -97
  240. package/lib/index-browser.d.ts +1 -0
  241. package/lib/index-browser.js +18 -16
  242. package/lib/index.d.ts +2 -0
  243. package/lib/index.js +144 -148
  244. package/lib/tsconfig.lib.tsbuildinfo +1 -1
  245. package/lib/types/account.js +4 -1
  246. package/lib/types/api/applyFlags.js +4 -1
  247. package/lib/types/api/applySettings.d.ts +3 -3
  248. package/lib/types/api/applySettings.js +7 -7
  249. package/lib/types/api/authenticateDevice.js +7 -4
  250. package/lib/types/api/authorizeCoinjoin.js +13 -10
  251. package/lib/types/api/backupDevice.js +4 -1
  252. package/lib/types/api/bitcoin/index.d.ts +5 -2
  253. package/lib/types/api/bitcoin/index.js +14 -11
  254. package/lib/types/api/bleUnpair.js +4 -1
  255. package/lib/types/api/blockchainDisconnect.js +4 -1
  256. package/lib/types/api/blockchainEstimateFee.js +4 -1
  257. package/lib/types/api/blockchainEvmRpcCall.js +4 -1
  258. package/lib/types/api/blockchainGetAccountBalanceHistory.js +4 -1
  259. package/lib/types/api/blockchainGetCurrentFiatRates.js +4 -1
  260. package/lib/types/api/blockchainGetFiatRatesForTimestamps.js +4 -1
  261. package/lib/types/api/blockchainGetInfo.js +4 -1
  262. package/lib/types/api/blockchainGetTransactions.js +4 -1
  263. package/lib/types/api/blockchainSetCustomBackend.js +4 -1
  264. package/lib/types/api/blockchainSubscribe.js +4 -1
  265. package/lib/types/api/blockchainSubscribeFiatRates.js +4 -1
  266. package/lib/types/api/blockchainUnsubscribe.js +4 -1
  267. package/lib/types/api/blockchainUnsubscribeFiatRates.js +4 -1
  268. package/lib/types/api/cancel.js +4 -1
  269. package/lib/types/api/cancelCoinjoinAuthorization.js +5 -2
  270. package/lib/types/api/cardano/index.d.ts +4 -4
  271. package/lib/types/api/cardano/index.js +173 -180
  272. package/lib/types/api/cardanoComposeTransaction.js +76 -65
  273. package/lib/types/api/cardanoGetAddress.js +4 -1
  274. package/lib/types/api/cardanoGetNativeScriptHash.js +4 -1
  275. package/lib/types/api/cardanoGetPublicKey.js +4 -1
  276. package/lib/types/api/cardanoSignMessage.js +4 -1
  277. package/lib/types/api/cardanoSignTransaction.js +4 -1
  278. package/lib/types/api/changeLanguage.d.ts +1 -1
  279. package/lib/types/api/changeLanguage.js +13 -13
  280. package/lib/types/api/changePin.js +4 -1
  281. package/lib/types/api/changeWipeCode.js +4 -1
  282. package/lib/types/api/cipherKeyValue.d.ts +2 -2
  283. package/lib/types/api/cipherKeyValue.js +11 -8
  284. package/lib/types/api/composeTransaction.js +4 -1
  285. package/lib/types/api/device.js +1 -2
  286. package/lib/types/api/disableWebUSB.js +4 -1
  287. package/lib/types/api/discoverAccounts.js +204 -55
  288. package/lib/types/api/dispose.js +4 -1
  289. package/lib/types/api/eos/index.d.ts +3 -3
  290. package/lib/types/api/eos/index.js +106 -162
  291. package/lib/types/api/eosGetPublicKey.js +4 -1
  292. package/lib/types/api/eosSignTransaction.js +4 -1
  293. package/lib/types/api/ethereum/index.d.ts +11 -7
  294. package/lib/types/api/ethereum/index.js +70 -65
  295. package/lib/types/api/ethereumGetAddress.js +4 -1
  296. package/lib/types/api/ethereumGetPublicKey.js +4 -1
  297. package/lib/types/api/ethereumSignMessage.js +4 -1
  298. package/lib/types/api/ethereumSignTransaction.js +4 -1
  299. package/lib/types/api/ethereumSignTypedData.js +4 -1
  300. package/lib/types/api/ethereumVerifyMessage.js +4 -1
  301. package/lib/types/api/evoluGetDelegatedIdentityKey.d.ts +9 -0
  302. package/lib/types/api/evoluGetDelegatedIdentityKey.js +6 -0
  303. package/lib/types/api/evoluGetNode.js +4 -1
  304. package/lib/types/api/evoluSignRegistrationRequest.d.ts +4 -0
  305. package/lib/types/api/evoluSignRegistrationRequest.js +6 -0
  306. package/lib/types/api/firmwareUpdate.d.ts +1 -1
  307. package/lib/types/api/firmwareUpdate.js +12 -12
  308. package/lib/types/api/getAccountDescriptor.js +8 -5
  309. package/lib/types/api/getAccountInfo.js +4 -1
  310. package/lib/types/api/getAddress.js +11 -11
  311. package/lib/types/api/getCoinInfo.js +4 -1
  312. package/lib/types/api/getDeviceState.js +4 -1
  313. package/lib/types/api/getFeatures.js +4 -1
  314. package/lib/types/api/getFirmwareHash.js +4 -1
  315. package/lib/types/api/getNonce.d.ts +1 -1
  316. package/lib/types/api/getNonce.js +4 -1
  317. package/lib/types/api/getOwnershipId.js +8 -5
  318. package/lib/types/api/getOwnershipProof.js +14 -9
  319. package/lib/types/api/getPublicKey.js +25 -28
  320. package/lib/types/api/getSettings.js +4 -1
  321. package/lib/types/api/index.d.ts +4 -0
  322. package/lib/types/api/index.js +4 -1
  323. package/lib/types/api/init.js +4 -1
  324. package/lib/types/api/loadDevice.js +4 -1
  325. package/lib/types/api/manifest.js +4 -1
  326. package/lib/types/api/monero/index.js +117 -114
  327. package/lib/types/api/moneroGetAddress.js +4 -1
  328. package/lib/types/api/moneroGetWatchKey.js +4 -1
  329. package/lib/types/api/moneroKeyImageSync.js +4 -1
  330. package/lib/types/api/moneroSignTransaction.js +4 -1
  331. package/lib/types/api/nem/index.d.ts +7 -7
  332. package/lib/types/api/nem/index.js +78 -112
  333. package/lib/types/api/nemGetAddress.js +7 -7
  334. package/lib/types/api/nemSignTransaction.js +4 -1
  335. package/lib/types/api/off.js +4 -1
  336. package/lib/types/api/on.js +4 -1
  337. package/lib/types/api/pushTransaction.js +10 -10
  338. package/lib/types/api/recoveryDevice.d.ts +1 -1
  339. package/lib/types/api/recoveryDevice.js +7 -7
  340. package/lib/types/api/removeAllListeners.js +4 -1
  341. package/lib/types/api/renderWebUSBButton.js +4 -1
  342. package/lib/types/api/requestLogin.d.ts +4 -24
  343. package/lib/types/api/requestLogin.js +11 -13
  344. package/lib/types/api/requestWebUSBDevice.js +4 -1
  345. package/lib/types/api/resetDevice.js +4 -1
  346. package/lib/types/api/ripple/index.js +17 -14
  347. package/lib/types/api/rippleGetAddress.js +4 -1
  348. package/lib/types/api/rippleSignTransaction.js +4 -1
  349. package/lib/types/api/setBrightness.js +4 -1
  350. package/lib/types/api/setBusy.js +4 -1
  351. package/lib/types/api/setProxy.js +4 -1
  352. package/lib/types/api/setTransports.js +4 -1
  353. package/lib/types/api/showDeviceTutorial.js +4 -1
  354. package/lib/types/api/signMessage.js +4 -1
  355. package/lib/types/api/signTransaction.js +4 -1
  356. package/lib/types/api/solana/index.js +55 -56
  357. package/lib/types/api/solanaComposeTransaction.js +4 -1
  358. package/lib/types/api/solanaGetAddress.js +4 -1
  359. package/lib/types/api/solanaGetPublicKey.js +4 -1
  360. package/lib/types/api/solanaSignTransaction.js +4 -1
  361. package/lib/types/api/stellar/index.d.ts +146 -146
  362. package/lib/types/api/stellar/index.js +151 -221
  363. package/lib/types/api/stellarGetAddress.js +4 -1
  364. package/lib/types/api/stellarSignTransaction.js +4 -1
  365. package/lib/types/api/tezos/index.js +46 -43
  366. package/lib/types/api/tezosGetAddress.js +4 -1
  367. package/lib/types/api/tezosGetPublicKey.js +4 -1
  368. package/lib/types/api/tezosSignTransaction.js +4 -1
  369. package/lib/types/api/thpGetCredentials.js +4 -1
  370. package/lib/types/api/thpRemoveCredentials.js +4 -1
  371. package/lib/types/api/uiResponse.js +4 -1
  372. package/lib/types/api/unlockPath.js +6 -3
  373. package/lib/types/api/verifyMessage.js +4 -1
  374. package/lib/types/api/wipeDevice.js +4 -1
  375. package/lib/types/coinInfo.js +62 -77
  376. package/lib/types/device.d.ts +11 -2
  377. package/lib/types/device.js +9 -4
  378. package/lib/types/fees.js +31 -37
  379. package/lib/types/firmware.js +4 -1
  380. package/lib/types/index.d.ts +1 -0
  381. package/lib/types/index.js +18 -3
  382. package/lib/types/params.js +25 -16
  383. package/lib/types/settings.js +4 -1
  384. package/lib/types/utils.js +4 -1
  385. package/lib/types/workflow.js +4 -1
  386. package/lib/utils/accountUtils.js +76 -81
  387. package/lib/utils/addressUtils.js +21 -21
  388. package/lib/utils/assetUtils.js +29 -26
  389. package/lib/utils/assets-browser.js +19 -13
  390. package/lib/utils/assets.js +10 -9
  391. package/lib/utils/assets.native.js +24 -23
  392. package/lib/utils/assetsTypes.js +4 -1
  393. package/lib/utils/debug.js +18 -13
  394. package/lib/utils/deviceFeaturesUtils.js +105 -127
  395. package/lib/utils/ethereumUtils.js +9 -6
  396. package/lib/utils/firmwareReleaseConfigUtils.js +69 -57
  397. package/lib/utils/firmwareUtils.js +45 -57
  398. package/lib/utils/formatUtils.d.ts +0 -1
  399. package/lib/utils/formatUtils.js +63 -62
  400. package/lib/utils/hdnodeUtils.d.ts +0 -1
  401. package/lib/utils/hdnodeUtils.js +51 -57
  402. package/lib/utils/interactionTimeout.js +26 -23
  403. package/lib/utils/pathUtils.js +132 -148
  404. package/lib/utils/popupPromiseManager.js +23 -14
  405. package/lib/utils/proxy-event-emitter.js +63 -60
  406. package/lib/utils/uiPromiseManager.js +55 -43
  407. package/lib/utils/urlUtils.js +20 -26
  408. package/lib/utils/versionCheck.js +10 -10
  409. package/lib/workers/workers-browser.d.ts +5 -5
  410. package/lib/workers/workers-browser.js +5 -2
  411. package/lib/workers/workers.d.ts +1 -1
  412. package/lib/workers/workers.js +49 -38
  413. package/lib/workers/workers.native.d.ts +5 -5
  414. package/lib/workers/workers.native.js +4 -1
  415. package/package.json +26 -23
@@ -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