@trezor/connect 10.0.0-beta.1 → 10.0.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 (429) hide show
  1. package/CHANGELOG.md +56 -9
  2. package/README.md +4 -2
  3. package/lib/exports.d.ts +1 -3
  4. package/lib/exports.js +1 -3
  5. package/lib/impl/core-in-module-native.d.ts +7 -0
  6. package/lib/impl/core-in-module-native.js +11 -0
  7. package/lib/impl/core-in-module-node.d.ts +8 -0
  8. package/lib/impl/core-in-module-node.js +12 -0
  9. package/lib/impl/core-in-module-web.d.ts +9 -0
  10. package/lib/impl/core-in-module-web.js +26 -0
  11. package/lib/index.browser.js +2 -26
  12. package/lib/index.js +1 -11
  13. package/lib/index.native.d.ts +4 -0
  14. package/lib/index.native.js +5 -0
  15. package/package.json +16 -67
  16. package/lib/api/applyFlags.d.ts +0 -20
  17. package/lib/api/applyFlags.js +0 -38
  18. package/lib/api/applySettings.d.ts +0 -20
  19. package/lib/api/applySettings.js +0 -57
  20. package/lib/api/authenticateDevice.d.ts +0 -25
  21. package/lib/api/authenticateDevice.js +0 -195
  22. package/lib/api/authorizeCoinjoin.d.ts +0 -11
  23. package/lib/api/authorizeCoinjoin.js +0 -44
  24. package/lib/api/backupDevice.d.ts +0 -19
  25. package/lib/api/backupDevice.js +0 -39
  26. package/lib/api/bitcoin/TransactionComposer.d.ts +0 -46
  27. package/lib/api/bitcoin/TransactionComposer.js +0 -147
  28. package/lib/api/bitcoin/createPendingTx.d.ts +0 -37
  29. package/lib/api/bitcoin/createPendingTx.js +0 -55
  30. package/lib/api/bitcoin/enhanceSignTx.d.ts +0 -2
  31. package/lib/api/bitcoin/enhanceSignTx.js +0 -23
  32. package/lib/api/bitcoin/index.d.ts +0 -9
  33. package/lib/api/bitcoin/index.js +0 -9
  34. package/lib/api/bitcoin/inputs.d.ts +0 -4
  35. package/lib/api/bitcoin/inputs.js +0 -63
  36. package/lib/api/bitcoin/outputs.d.ts +0 -5
  37. package/lib/api/bitcoin/outputs.js +0 -128
  38. package/lib/api/bitcoin/refTx.d.ts +0 -23
  39. package/lib/api/bitcoin/refTx.js +0 -249
  40. package/lib/api/bitcoin/signtx.d.ts +0 -30
  41. package/lib/api/bitcoin/signtx.js +0 -229
  42. package/lib/api/bitcoin/signtxLegacy.d.ts +0 -10
  43. package/lib/api/bitcoin/signtxLegacy.js +0 -186
  44. package/lib/api/bitcoin/signtxVerify.d.ts +0 -12
  45. package/lib/api/bitcoin/signtxVerify.js +0 -95
  46. package/lib/api/bitcoin/transactionBytes.d.ts +0 -3
  47. package/lib/api/bitcoin/transactionBytes.js +0 -65
  48. package/lib/api/bleUnpair.d.ts +0 -11
  49. package/lib/api/bleUnpair.js +0 -37
  50. package/lib/api/blockchainDisconnect.d.ts +0 -16
  51. package/lib/api/blockchainDisconnect.js +0 -37
  52. package/lib/api/blockchainEstimateFee.d.ts +0 -16
  53. package/lib/api/blockchainEstimateFee.js +0 -102
  54. package/lib/api/blockchainEvmRpcCall.d.ts +0 -19
  55. package/lib/api/blockchainEvmRpcCall.js +0 -57
  56. package/lib/api/blockchainGetAccountBalanceHistory.d.ts +0 -16
  57. package/lib/api/blockchainGetAccountBalanceHistory.js +0 -60
  58. package/lib/api/blockchainGetContractInfo.d.ts +0 -16
  59. package/lib/api/blockchainGetContractInfo.js +0 -46
  60. package/lib/api/blockchainGetCurrentFiatRates.d.ts +0 -20
  61. package/lib/api/blockchainGetCurrentFiatRates.js +0 -49
  62. package/lib/api/blockchainGetFiatRatesForTimestamps.d.ts +0 -23
  63. package/lib/api/blockchainGetFiatRatesForTimestamps.js +0 -55
  64. package/lib/api/blockchainGetInfo.d.ts +0 -15
  65. package/lib/api/blockchainGetInfo.js +0 -37
  66. package/lib/api/blockchainGetTransactions.d.ts +0 -18
  67. package/lib/api/blockchainGetTransactions.js +0 -47
  68. package/lib/api/blockchainSetCustomBackend.d.ts +0 -17
  69. package/lib/api/blockchainSetCustomBackend.js +0 -43
  70. package/lib/api/blockchainSubscribe.d.ts +0 -19
  71. package/lib/api/blockchainSubscribe.js +0 -66
  72. package/lib/api/blockchainSubscribeFiatRates.d.ts +0 -19
  73. package/lib/api/blockchainSubscribeFiatRates.js +0 -43
  74. package/lib/api/blockchainUnsubscribe.d.ts +0 -19
  75. package/lib/api/blockchainUnsubscribe.js +0 -66
  76. package/lib/api/blockchainUnsubscribeFiatRates.d.ts +0 -17
  77. package/lib/api/blockchainUnsubscribeFiatRates.js +0 -37
  78. package/lib/api/blockchainValidateEvmRpcUrl.d.ts +0 -17
  79. package/lib/api/blockchainValidateEvmRpcUrl.js +0 -54
  80. package/lib/api/cancelCoinjoinAuthorization.d.ts +0 -11
  81. package/lib/api/cancelCoinjoinAuthorization.js +0 -33
  82. package/lib/api/cardano/api/cardanoComposeTransaction.d.ts +0 -10
  83. package/lib/api/cardano/api/cardanoComposeTransaction.js +0 -84
  84. package/lib/api/cardano/api/cardanoGetAddress.d.ts +0 -34
  85. package/lib/api/cardano/api/cardanoGetAddress.js +0 -130
  86. package/lib/api/cardano/api/cardanoGetNativeScriptHash.d.ts +0 -12
  87. package/lib/api/cardano/api/cardanoGetNativeScriptHash.js +0 -66
  88. package/lib/api/cardano/api/cardanoGetPublicKey.d.ts +0 -22
  89. package/lib/api/cardano/api/cardanoGetPublicKey.js +0 -92
  90. package/lib/api/cardano/api/cardanoSignMessage.d.ts +0 -22
  91. package/lib/api/cardano/api/cardanoSignMessage.js +0 -90
  92. package/lib/api/cardano/api/cardanoSignTransaction.d.ts +0 -81
  93. package/lib/api/cardano/api/cardanoSignTransaction.js +0 -301
  94. package/lib/api/cardano/api/index.d.ts +0 -6
  95. package/lib/api/cardano/api/index.js +0 -6
  96. package/lib/api/cardano/cardanoAddressParameters.d.ts +0 -6
  97. package/lib/api/cardano/cardanoAddressParameters.js +0 -79
  98. package/lib/api/cardano/cardanoAuxiliaryData.d.ts +0 -4
  99. package/lib/api/cardano/cardanoAuxiliaryData.js +0 -74
  100. package/lib/api/cardano/cardanoCertificate.d.ts +0 -13
  101. package/lib/api/cardano/cardanoCertificate.js +0 -142
  102. package/lib/api/cardano/cardanoInputs.d.ts +0 -25
  103. package/lib/api/cardano/cardanoInputs.js +0 -39
  104. package/lib/api/cardano/cardanoOutputs.d.ts +0 -40
  105. package/lib/api/cardano/cardanoOutputs.js +0 -70
  106. package/lib/api/cardano/cardanoTokenBundle.d.ts +0 -12
  107. package/lib/api/cardano/cardanoTokenBundle.js +0 -21
  108. package/lib/api/cardano/cardanoUtils.d.ts +0 -17
  109. package/lib/api/cardano/cardanoUtils.js +0 -100
  110. package/lib/api/cardano/cardanoWitnesses.d.ts +0 -4
  111. package/lib/api/cardano/cardanoWitnesses.js +0 -47
  112. package/lib/api/changeLanguage.d.ts +0 -18
  113. package/lib/api/changeLanguage.js +0 -49
  114. package/lib/api/changePin.d.ts +0 -11
  115. package/lib/api/changePin.js +0 -27
  116. package/lib/api/changeWipeCode.d.ts +0 -11
  117. package/lib/api/changeWipeCode.js +0 -29
  118. package/lib/api/cipherKeyValue.d.ts +0 -17
  119. package/lib/api/cipherKeyValue.js +0 -58
  120. package/lib/api/common/AbstractMiscGetAddress.d.ts +0 -37
  121. package/lib/api/common/AbstractMiscGetAddress.js +0 -126
  122. package/lib/api/common/Discovery.d.ts +0 -33
  123. package/lib/api/common/Discovery.js +0 -119
  124. package/lib/api/common/paramsValidator.d.ts +0 -24
  125. package/lib/api/common/paramsValidator.js +0 -136
  126. package/lib/api/common/requestExistingAccounts.d.ts +0 -14
  127. package/lib/api/common/requestExistingAccounts.js +0 -20
  128. package/lib/api/composeTransaction.d.ts +0 -36
  129. package/lib/api/composeTransaction.js +0 -404
  130. package/lib/api/discoverAccounts.d.ts +0 -40
  131. package/lib/api/discoverAccounts.js +0 -360
  132. package/lib/api/ethereum/api/ethereumGetAddress.d.ts +0 -30
  133. package/lib/api/ethereum/api/ethereumGetAddress.js +0 -150
  134. package/lib/api/ethereum/api/ethereumGetPublicKey.d.ts +0 -52
  135. package/lib/api/ethereum/api/ethereumGetPublicKey.js +0 -100
  136. package/lib/api/ethereum/api/ethereumSignMessage.d.ts +0 -27
  137. package/lib/api/ethereum/api/ethereumSignMessage.js +0 -64
  138. package/lib/api/ethereum/api/ethereumSignTransaction.d.ts +0 -83
  139. package/lib/api/ethereum/api/ethereumSignTransaction.js +0 -148
  140. package/lib/api/ethereum/api/ethereumSignTypedData.d.ts +0 -117
  141. package/lib/api/ethereum/api/ethereumSignTypedData.js +0 -203
  142. package/lib/api/ethereum/api/ethereumVerifyMessage.d.ts +0 -12
  143. package/lib/api/ethereum/api/ethereumVerifyMessage.js +0 -35
  144. package/lib/api/ethereum/api/index.d.ts +0 -6
  145. package/lib/api/ethereum/api/index.js +0 -6
  146. package/lib/api/ethereum/ethereumDefinitions.d.ts +0 -53
  147. package/lib/api/ethereum/ethereumDefinitions.js +0 -135
  148. package/lib/api/ethereum/ethereumSignTx.d.ts +0 -16
  149. package/lib/api/ethereum/ethereumSignTx.js +0 -144
  150. package/lib/api/ethereum/ethereumSignTypedData.d.ts +0 -32
  151. package/lib/api/ethereum/ethereumSignTypedData.js +0 -175
  152. package/lib/api/evoluGetDelegatedIdentityKey.d.ts +0 -14
  153. package/lib/api/evoluGetDelegatedIdentityKey.js +0 -29
  154. package/lib/api/evoluGetNode.d.ts +0 -13
  155. package/lib/api/evoluGetNode.js +0 -29
  156. package/lib/api/evoluSignRegistrationRequest.d.ts +0 -16
  157. package/lib/api/evoluSignRegistrationRequest.js +0 -33
  158. package/lib/api/firmware/calculateFirmwareHash.d.ts +0 -18
  159. package/lib/api/firmware/calculateFirmwareHash.js +0 -56
  160. package/lib/api/firmware/calculateXPubHash.d.ts +0 -14
  161. package/lib/api/firmware/calculateXPubHash.js +0 -16
  162. package/lib/api/firmware/getBinary.d.ts +0 -14
  163. package/lib/api/firmware/getBinary.js +0 -33
  164. package/lib/api/firmware/index.d.ts +0 -6
  165. package/lib/api/firmware/index.js +0 -6
  166. package/lib/api/firmware/modifyFirmware.d.ts +0 -3
  167. package/lib/api/firmware/modifyFirmware.js +0 -13
  168. package/lib/api/firmware/parseFirmwareHeaders.d.ts +0 -4
  169. package/lib/api/firmware/parseFirmwareHeaders.js +0 -26
  170. package/lib/api/firmware/uploadFirmware.d.ts +0 -27
  171. package/lib/api/firmware/uploadFirmware.js +0 -99
  172. package/lib/api/firmware/verifyEntropy.d.ts +0 -25
  173. package/lib/api/firmware/verifyEntropy.js +0 -110
  174. package/lib/api/getAccountInfo.d.ts +0 -21
  175. package/lib/api/getAccountInfo.js +0 -253
  176. package/lib/api/getAddress.d.ts +0 -45
  177. package/lib/api/getAddress.js +0 -153
  178. package/lib/api/getCoinInfo.d.ts +0 -148
  179. package/lib/api/getCoinInfo.js +0 -25
  180. package/lib/api/getDeviceState.d.ts +0 -8
  181. package/lib/api/getDeviceState.js +0 -18
  182. package/lib/api/getFeatures.d.ts +0 -71
  183. package/lib/api/getFeatures.js +0 -22
  184. package/lib/api/getFirmwareHash.d.ts +0 -11
  185. package/lib/api/getFirmwareHash.js +0 -29
  186. package/lib/api/getNonce.d.ts +0 -10
  187. package/lib/api/getNonce.js +0 -18
  188. package/lib/api/getOwnershipId.d.ts +0 -17
  189. package/lib/api/getOwnershipId.js +0 -88
  190. package/lib/api/getOwnershipProof.d.ts +0 -17
  191. package/lib/api/getOwnershipProof.js +0 -95
  192. package/lib/api/getPublicKey.d.ts +0 -54
  193. package/lib/api/getPublicKey.js +0 -106
  194. package/lib/api/getSettings.d.ts +0 -24
  195. package/lib/api/getSettings.js +0 -21
  196. package/lib/api/index.d.ts +0 -62
  197. package/lib/api/index.js +0 -62
  198. package/lib/api/loadDevice.d.ts +0 -16
  199. package/lib/api/loadDevice.js +0 -46
  200. package/lib/api/monero/api/index.d.ts +0 -4
  201. package/lib/api/monero/api/index.js +0 -4
  202. package/lib/api/monero/api/moneroGetAddress.d.ts +0 -32
  203. package/lib/api/monero/api/moneroGetAddress.js +0 -117
  204. package/lib/api/monero/api/moneroGetWatchKey.d.ts +0 -14
  205. package/lib/api/monero/api/moneroGetWatchKey.js +0 -45
  206. package/lib/api/monero/api/moneroKeyImageSync.d.ts +0 -17
  207. package/lib/api/monero/api/moneroKeyImageSync.js +0 -128
  208. package/lib/api/monero/api/moneroSignTransaction.d.ts +0 -17
  209. package/lib/api/monero/api/moneroSignTransaction.js +0 -218
  210. package/lib/api/nostr/nostrGetPublicKey.d.ts +0 -15
  211. package/lib/api/nostr/nostrGetPublicKey.js +0 -38
  212. package/lib/api/nostr/nostrSignEvent.d.ts +0 -13
  213. package/lib/api/nostr/nostrSignEvent.js +0 -36
  214. package/lib/api/pingDevice.d.ts +0 -11
  215. package/lib/api/pingDevice.js +0 -29
  216. package/lib/api/pushTransaction.d.ts +0 -19
  217. package/lib/api/pushTransaction.js +0 -39
  218. package/lib/api/recoveryDevice.d.ts +0 -20
  219. package/lib/api/recoveryDevice.js +0 -52
  220. package/lib/api/requestLogin.d.ts +0 -14
  221. package/lib/api/requestLogin.js +0 -53
  222. package/lib/api/resetDevice.d.ts +0 -22
  223. package/lib/api/resetDevice.js +0 -133
  224. package/lib/api/ripple/api/index.d.ts +0 -2
  225. package/lib/api/ripple/api/index.js +0 -2
  226. package/lib/api/ripple/api/rippleGetAddress.d.ts +0 -17
  227. package/lib/api/ripple/api/rippleGetAddress.js +0 -22
  228. package/lib/api/ripple/api/rippleSignTransaction.d.ts +0 -13
  229. package/lib/api/ripple/api/rippleSignTransaction.js +0 -52
  230. package/lib/api/selectAccount.d.ts +0 -15
  231. package/lib/api/selectAccount.js +0 -42
  232. package/lib/api/setBrightness.d.ts +0 -12
  233. package/lib/api/setBrightness.js +0 -28
  234. package/lib/api/setBusy.d.ts +0 -11
  235. package/lib/api/setBusy.js +0 -31
  236. package/lib/api/showDeviceTutorial.d.ts +0 -11
  237. package/lib/api/showDeviceTutorial.js +0 -21
  238. package/lib/api/signMessage.d.ts +0 -25
  239. package/lib/api/signMessage.js +0 -75
  240. package/lib/api/signTransaction.d.ts +0 -199
  241. package/lib/api/signTransaction.js +0 -331
  242. package/lib/api/solana/api/index.d.ts +0 -4
  243. package/lib/api/solana/api/index.js +0 -4
  244. package/lib/api/solana/api/solanaComposeTransaction.d.ts +0 -33
  245. package/lib/api/solana/api/solanaComposeTransaction.js +0 -73
  246. package/lib/api/solana/api/solanaGetAddress.d.ts +0 -17
  247. package/lib/api/solana/api/solanaGetAddress.js +0 -22
  248. package/lib/api/solana/api/solanaGetPublicKey.d.ts +0 -32
  249. package/lib/api/solana/api/solanaGetPublicKey.js +0 -86
  250. package/lib/api/solana/api/solanaSignTransaction.d.ts +0 -41
  251. package/lib/api/solana/api/solanaSignTransaction.js +0 -204
  252. package/lib/api/solana/solanaDefinitions.d.ts +0 -9
  253. package/lib/api/solana/solanaDefinitions.js +0 -33
  254. package/lib/api/stellar/api/index.d.ts +0 -2
  255. package/lib/api/stellar/api/index.js +0 -2
  256. package/lib/api/stellar/api/stellarGetAddress.d.ts +0 -17
  257. package/lib/api/stellar/api/stellarGetAddress.js +0 -22
  258. package/lib/api/stellar/api/stellarSignTransaction.d.ts +0 -20
  259. package/lib/api/stellar/api/stellarSignTransaction.js +0 -65
  260. package/lib/api/stellar/stellarSignTx.d.ts +0 -7
  261. package/lib/api/stellar/stellarSignTx.js +0 -183
  262. package/lib/api/telemetryGet.d.ts +0 -14
  263. package/lib/api/telemetryGet.js +0 -26
  264. package/lib/api/tezos/api/index.d.ts +0 -3
  265. package/lib/api/tezos/api/index.js +0 -3
  266. package/lib/api/tezos/api/tezosGetAddress.d.ts +0 -17
  267. package/lib/api/tezos/api/tezosGetAddress.js +0 -22
  268. package/lib/api/tezos/api/tezosGetPublicKey.d.ts +0 -28
  269. package/lib/api/tezos/api/tezosGetPublicKey.js +0 -84
  270. package/lib/api/tezos/api/tezosSignTransaction.d.ts +0 -14
  271. package/lib/api/tezos/api/tezosSignTransaction.js +0 -30
  272. package/lib/api/tezos/tezosSignTx.d.ts +0 -71
  273. package/lib/api/tezos/tezosSignTx.js +0 -204
  274. package/lib/api/thpGetCredentials.d.ts +0 -13
  275. package/lib/api/thpGetCredentials.js +0 -30
  276. package/lib/api/thpRemoveCredentials.d.ts +0 -15
  277. package/lib/api/thpRemoveCredentials.js +0 -44
  278. package/lib/api/tron/api/index.d.ts +0 -3
  279. package/lib/api/tron/api/index.js +0 -3
  280. package/lib/api/tron/api/tronComposeTransaction.d.ts +0 -17
  281. package/lib/api/tron/api/tronComposeTransaction.js +0 -52
  282. package/lib/api/tron/api/tronGetAddress.d.ts +0 -17
  283. package/lib/api/tron/api/tronGetAddress.js +0 -22
  284. package/lib/api/tron/api/tronSignTransaction.d.ts +0 -20
  285. package/lib/api/tron/api/tronSignTransaction.js +0 -137
  286. package/lib/api/tron/tronEncode.d.ts +0 -11
  287. package/lib/api/tron/tronEncode.js +0 -157
  288. package/lib/api/tron/tronProtobuf.d.ts +0 -5
  289. package/lib/api/tron/tronProtobuf.js +0 -28
  290. package/lib/api/unlockPath.d.ts +0 -12
  291. package/lib/api/unlockPath.js +0 -33
  292. package/lib/api/verifyMessage.d.ts +0 -16
  293. package/lib/api/verifyMessage.js +0 -46
  294. package/lib/api/wipeDevice.d.ts +0 -21
  295. package/lib/api/wipeDevice.js +0 -49
  296. package/lib/backend/BackendManager.d.ts +0 -30
  297. package/lib/backend/BackendManager.js +0 -145
  298. package/lib/backend/Blockchain.d.ts +0 -81
  299. package/lib/backend/Blockchain.js +0 -235
  300. package/lib/backend/BlockchainLink.d.ts +0 -10
  301. package/lib/backend/BlockchainLink.js +0 -19
  302. package/lib/backend/fees/BitcoinFeeLevels.d.ts +0 -19
  303. package/lib/backend/fees/BitcoinFeeLevels.js +0 -44
  304. package/lib/backend/fees/EthereumFeeLevels.d.ts +0 -17
  305. package/lib/backend/fees/EthereumFeeLevels.js +0 -63
  306. package/lib/backend/fees/MiscFeeLevels.d.ts +0 -18
  307. package/lib/backend/fees/MiscFeeLevels.js +0 -30
  308. package/lib/backend/fees/index.d.ts +0 -5
  309. package/lib/backend/fees/index.js +0 -31
  310. package/lib/core/AbstractMethod.d.ts +0 -63
  311. package/lib/core/AbstractMethod.js +0 -189
  312. package/lib/core/index.d.ts +0 -29
  313. package/lib/core/index.js +0 -805
  314. package/lib/core/method.d.ts +0 -3
  315. package/lib/core/method.js +0 -19
  316. package/lib/core/method.native.d.ts +0 -2
  317. package/lib/core/method.native.js +0 -29
  318. package/lib/core/onCallFirmwareUpdate.d.ts +0 -42
  319. package/lib/core/onCallFirmwareUpdate.js +0 -436
  320. package/lib/data/coinInfo.d.ts +0 -101
  321. package/lib/data/coinInfo.js +0 -195
  322. package/lib/data/config.d.ts +0 -8
  323. package/lib/data/config.js +0 -273
  324. package/lib/data/defaultFeeLevels.d.ts +0 -18
  325. package/lib/data/defaultFeeLevels.js +0 -200
  326. package/lib/data/enabledNetworksStore.d.ts +0 -5
  327. package/lib/data/enabledNetworksStore.js +0 -20
  328. package/lib/data/firmwareInfo.d.ts +0 -55
  329. package/lib/data/firmwareInfo.js +0 -413
  330. package/lib/data/firmwareReleaseStore.d.ts +0 -10
  331. package/lib/data/firmwareReleaseStore.js +0 -16
  332. package/lib/data/localFirmwareStore.d.ts +0 -3
  333. package/lib/data/localFirmwareStore.js +0 -8
  334. package/lib/data/protobufLoader.d.ts +0 -1
  335. package/lib/data/protobufLoader.js +0 -30
  336. package/lib/data/settingsStore.d.ts +0 -6
  337. package/lib/data/settingsStore.js +0 -21
  338. package/lib/device/Device.d.ts +0 -259
  339. package/lib/device/Device.js +0 -765
  340. package/lib/device/DeviceCommands.d.ts +0 -87
  341. package/lib/device/DeviceCommands.js +0 -248
  342. package/lib/device/DeviceCurrentSession.d.ts +0 -750
  343. package/lib/device/DeviceCurrentSession.js +0 -239
  344. package/lib/device/DeviceList.d.ts +0 -75
  345. package/lib/device/DeviceList.js +0 -243
  346. package/lib/device/TransportList.d.ts +0 -3
  347. package/lib/device/TransportList.js +0 -13
  348. package/lib/device/TransportManager.d.ts +0 -33
  349. package/lib/device/TransportManager.js +0 -144
  350. package/lib/device/calculateRevisionForDevice.d.ts +0 -10
  351. package/lib/device/calculateRevisionForDevice.js +0 -19
  352. package/lib/device/checkFirmwareRevision.d.ts +0 -22
  353. package/lib/device/checkFirmwareRevision.js +0 -104
  354. package/lib/device/resolveDescriptorForTaproot.d.ts +0 -17
  355. package/lib/device/resolveDescriptorForTaproot.js +0 -27
  356. package/lib/device/thp/handshake.d.ts +0 -3
  357. package/lib/device/thp/handshake.js +0 -100
  358. package/lib/device/thp/index.d.ts +0 -5
  359. package/lib/device/thp/index.js +0 -65
  360. package/lib/device/thp/pairing.d.ts +0 -16
  361. package/lib/device/thp/pairing.js +0 -242
  362. package/lib/device/thp/session.d.ts +0 -2
  363. package/lib/device/thp/session.js +0 -27
  364. package/lib/device/thp/thpCall.d.ts +0 -31
  365. package/lib/device/thp/thpCall.js +0 -58
  366. package/lib/device/validateMessageSize.d.ts +0 -2
  367. package/lib/device/validateMessageSize.js +0 -9
  368. package/lib/device/workflow/changeLanguage.d.ts +0 -18
  369. package/lib/device/workflow/changeLanguage.js +0 -62
  370. package/lib/device/workflow/checkFirmwareHash.d.ts +0 -12
  371. package/lib/device/workflow/checkFirmwareHash.js +0 -86
  372. package/lib/device/workflow/checkFirmwareHashWithRetries.d.ts +0 -8
  373. package/lib/device/workflow/checkFirmwareHashWithRetries.js +0 -36
  374. package/lib/device/workflow/handshake.d.ts +0 -13
  375. package/lib/device/workflow/handshake.js +0 -55
  376. package/lib/device/workflow/trezorPushNotification.d.ts +0 -5
  377. package/lib/device/workflow/trezorPushNotification.js +0 -73
  378. package/lib/device/workflow/validateState.d.ts +0 -2
  379. package/lib/device/workflow/validateState.js +0 -152
  380. package/lib/events/ui-promise.d.ts +0 -20
  381. package/lib/events/ui-promise.js +0 -1
  382. package/lib/impl/core-in-module.d.ts +0 -33
  383. package/lib/impl/core-in-module.js +0 -194
  384. package/lib/types/idevice.d.ts +0 -110
  385. package/lib/types/idevice.js +0 -1
  386. package/lib/types/typed-call-provider.d.ts +0 -29
  387. package/lib/types/typed-call-provider.js +0 -1
  388. package/lib/types/workflow.d.ts +0 -16
  389. package/lib/types/workflow.js +0 -1
  390. package/lib/utils/accountUtils.d.ts +0 -10
  391. package/lib/utils/accountUtils.js +0 -90
  392. package/lib/utils/addressUtils.d.ts +0 -2
  393. package/lib/utils/addressUtils.js +0 -24
  394. package/lib/utils/assetUtils.d.ts +0 -13
  395. package/lib/utils/assetUtils.js +0 -55
  396. package/lib/utils/assets.browser.d.ts +0 -1
  397. package/lib/utils/assets.browser.js +0 -1
  398. package/lib/utils/assets.d.ts +0 -2
  399. package/lib/utils/assets.js +0 -13
  400. package/lib/utils/assets.native.d.ts +0 -2
  401. package/lib/utils/assets.native.js +0 -23
  402. package/lib/utils/assetsTypes.d.ts +0 -5
  403. package/lib/utils/assetsTypes.js +0 -1
  404. package/lib/utils/buildOutputDescriptor.d.ts +0 -20
  405. package/lib/utils/buildOutputDescriptor.js +0 -67
  406. package/lib/utils/deviceFeaturesUtils.d.ts +0 -7
  407. package/lib/utils/deviceFeaturesUtils.js +0 -109
  408. package/lib/utils/ethereumUtils.d.ts +0 -3
  409. package/lib/utils/ethereumUtils.js +0 -7
  410. package/lib/utils/firmwareReleaseConfigUtils.d.ts +0 -19
  411. package/lib/utils/firmwareReleaseConfigUtils.js +0 -131
  412. package/lib/utils/firmwareUtils.d.ts +0 -15
  413. package/lib/utils/firmwareUtils.js +0 -57
  414. package/lib/utils/formatUtils.d.ts +0 -13
  415. package/lib/utils/formatUtils.js +0 -45
  416. package/lib/utils/hdnodeUtils.d.ts +0 -6
  417. package/lib/utils/hdnodeUtils.js +0 -62
  418. package/lib/utils/pathUtils.d.ts +0 -1
  419. package/lib/utils/pathUtils.js +0 -1
  420. package/lib/utils/paymentRequest.d.ts +0 -8
  421. package/lib/utils/paymentRequest.js +0 -25
  422. package/lib/utils/uiPromiseManager.d.ts +0 -8
  423. package/lib/utils/uiPromiseManager.js +0 -51
  424. package/lib/workers/workers.browser.d.ts +0 -10
  425. package/lib/workers/workers.browser.js +0 -16
  426. package/lib/workers/workers.d.ts +0 -10
  427. package/lib/workers/workers.js +0 -8
  428. package/lib/workers/workers.native.d.ts +0 -7
  429. package/lib/workers/workers.native.js +0 -7
@@ -1,242 +0,0 @@
1
- import { sha256 } from "@noble/hashes/sha2.js";
2
- import { bytesToHex, concatBytes, randomBytes } from "@noble/hashes/utils.js";
3
- import { DEVICE } from "@trezor/connect-common";
4
- import { ERRORS } from "@trezor/connect-common/lib/constants/index.js";
5
- import { ThpPairingMethod, thp as protocolThp } from "@trezor/protocol";
6
- import { createDeferred, resolveAfter } from "@trezor/utils";
7
- import { abortThpWorkflow, thpCall } from "./thpCall.js";
8
- import * as settingsStore from "../../data/settingsStore.js";
9
- import { sanitizeString } from "../../utils/formatUtils.js";
10
- const sha256Hex = (...parts) => bytesToHex(sha256(concatBytes(...parts)));
11
- const processQrCodeTag = async (device, value) => {
12
- const thpState = device.getThpState();
13
- if (!thpState?.handshakeCredentials) {
14
- throw ERRORS.TypedError('Device_ThpStateMissing');
15
- }
16
- const tagSha = sha256Hex(thpState.handshakeCredentials.handshakeHash, Buffer.from(value, 'hex'));
17
- const qrCodeSecret = await thpCall(device, 'ThpQrCodeTag', {
18
- tag: tagSha
19
- });
20
- protocolThp.validateQrCodeTag(thpState.handshakeCredentials, value, qrCodeSecret.message.secret);
21
- return qrCodeSecret;
22
- };
23
- const processNfcTag = async (device, value) => {
24
- const thpState = device.getThpState();
25
- if (!thpState?.handshakeCredentials) {
26
- throw ERRORS.TypedError('Device_ThpStateMissing');
27
- }
28
- if (!thpState?.nfcSecret) {
29
- throw new Error('missing nfcSecret');
30
- }
31
- const tagSha = sha256Hex(Buffer.from([protocolThp.ThpPairingMethod.NFC]), thpState.handshakeCredentials.handshakeHash, Buffer.from(value, 'hex'));
32
- const nfcTagTrezor = await thpCall(device, 'ThpNfcTagHost', {
33
- tag: tagSha
34
- });
35
- protocolThp.validateNfcTag(thpState.handshakeCredentials, nfcTagTrezor.message.tag, thpState.nfcSecret);
36
- return nfcTagTrezor;
37
- };
38
- const processCodeEntry = async (device, value) => {
39
- const codeValue = Buffer.from(value, 'ascii');
40
- const thpState = device.getThpState();
41
- if (!thpState?.handshakeCredentials) {
42
- throw ERRORS.TypedError('Device_ThpStateMissing');
43
- }
44
- const hostKeys = protocolThp.getCpaceHostKeys(codeValue, thpState.handshakeCredentials.handshakeHash);
45
- const tag = protocolThp.getSharedSecret(thpState.handshakeCredentials.trezorCpacePublicKey, hostKeys.privateKey).toString('hex');
46
- const codeEntrySecret = await thpCall(device, 'ThpCodeEntryCpaceHostTag', {
47
- tag,
48
- cpace_host_public_key: hostKeys.publicKey.toString('hex')
49
- });
50
- protocolThp.validateCodeEntryTag(thpState.handshakeCredentials, value, codeEntrySecret.message.secret);
51
- return codeEntrySecret;
52
- };
53
- const processThpPairingResponse = (device, payload) => {
54
- if ('selectedMethod' in payload) {
55
- const selectedMethod = protocolThp.getThpPairingMethod(payload.selectedMethod);
56
- device.getThpState()?.setPairingMethod(selectedMethod);
57
- return thpCall(device, 'ThpSelectMethod', {
58
- selected_pairing_method: selectedMethod
59
- });
60
- }
61
- const selectedMethod = device.getThpState()?.pairingMethod;
62
- if (selectedMethod === ThpPairingMethod.QrCode) {
63
- return processQrCodeTag(device, payload.tag);
64
- }
65
- if (selectedMethod === ThpPairingMethod.NFC) {
66
- return processNfcTag(device, payload.tag);
67
- }
68
- if (selectedMethod === ThpPairingMethod.CodeEntry) {
69
- return processCodeEntry(device, payload.tag);
70
- }
71
- throw ERRORS.TypedError('Device_ThpPairingMethodsException');
72
- };
73
- const waitForPairingCancel = device => {
74
- const readAbort = new AbortController();
75
- device.getThpState()?.setExpectedResponses([0x04]);
76
- const readCancel = device.getCurrentSession().receive({
77
- signal: readAbort.signal
78
- });
79
- return {
80
- readAbort,
81
- readCancel
82
- };
83
- };
84
- const waitForPairingTag = async device => {
85
- const thpState = device.getThpState();
86
- if (!thpState?.handshakeCredentials) {
87
- throw ERRORS.TypedError('Device_ThpStateMissing');
88
- }
89
- if (thpState.pairingMethod === undefined) {
90
- throw ERRORS.TypedError('Device_ThpPairingMethodsException');
91
- }
92
- const dfd = createDeferred();
93
- const {
94
- readAbort,
95
- readCancel
96
- } = waitForPairingCancel(device);
97
- const cancelResult = readCancel.then(readResult => {
98
- if (readResult.success) {
99
- let code, message;
100
- const {
101
- payload
102
- } = readResult;
103
- if (payload.type === 'Failure') {
104
- code = payload.message.code;
105
- message = payload.message.message;
106
- } else {
107
- message = `Unexpected message type: ${readResult.payload.type}`;
108
- }
109
- dfd.resolve({
110
- error: ERRORS.TypedError(code || 'ThpUnknownError', message)
111
- });
112
- }
113
- }).catch(() => {});
114
- thpState.setPairingTagPromise({
115
- abort: async () => {
116
- readAbort.abort();
117
- await cancelResult;
118
- }
119
- });
120
- const payload = {
121
- availableMethods: thpState.handshakeCredentials.pairingMethods,
122
- selectedMethod: thpState.pairingMethod,
123
- nfcData: thpState.nfcData?.toString('hex')
124
- };
125
- device.prompt(DEVICE.THP_PAIRING, {
126
- payload
127
- }).then(response => {
128
- if (response.success) {
129
- dfd.resolve(response.payload);
130
- } else {
131
- abortThpWorkflow(device).then(() => {
132
- dfd.resolve({
133
- error: ERRORS.TypedError('ThpUnknownError', response.error.message)
134
- });
135
- });
136
- }
137
- });
138
- const pairingResponse = await dfd.promise;
139
- readAbort.abort();
140
- await readCancel;
141
- thpState.setPairingTagPromise(undefined);
142
- if ('error' in pairingResponse) {
143
- throw pairingResponse.error;
144
- }
145
- await resolveAfter(500);
146
- return processThpPairingResponse(device, pairingResponse).catch(e => {
147
- if (e.code === 'Failure_FirmwareError' || e.code === 'Failure_DataError') {
148
- if ('tag' in pairingResponse) {
149
- device.emit(DEVICE.THP_PAIRING_STATUS_CHANGED, {
150
- status: 'invalid-tag',
151
- tag: pairingResponse.tag
152
- });
153
- }
154
- throw ERRORS.TypedError('Device_ThpPairingTagInvalid', e.message);
155
- }
156
- throw ERRORS.TypedError(e.code, e.message);
157
- });
158
- };
159
- export const getThpCredentials = async (device, autoconnect = false) => {
160
- const thpState = device.getThpState();
161
- if (!thpState?.handshakeCredentials) {
162
- throw ERRORS.TypedError('Device_ThpStateMissing');
163
- }
164
- const credentials = await thpCall(device, 'ThpCredentialRequest', {
165
- autoconnect,
166
- host_static_public_key: thpState.handshakeCredentials.hostStaticPublicKey.toString('hex'),
167
- credential: thpState.pairingCredentials[0]?.credential
168
- });
169
- const host_static_key = thpState.handshakeCredentials.staticKey.toString('hex');
170
- return {
171
- ...credentials.message,
172
- autoconnect,
173
- host_static_key
174
- };
175
- };
176
- export const thpPairingEnd = async device => {
177
- const result = await thpCall(device, 'ThpEndRequest', {});
178
- device.getThpState()?.setPhase('paired');
179
- return result;
180
- };
181
- export const thpPairing = async device => {
182
- const thpState = device.getThpState();
183
- if (!thpState?.handshakeCredentials) {
184
- throw ERRORS.TypedError('Device_ThpStateMissing');
185
- }
186
- if (thpState.isPaired && thpState.pairingMethod !== protocolThp.ThpPairingMethod.SkipPairing) {
187
- if (!thpState.isAutoconnectPaired) {
188
- await getThpCredentials(device, false);
189
- }
190
- return thpPairingEnd(device);
191
- }
192
- const {
193
- pairingMethods
194
- } = thpState.handshakeCredentials;
195
- const selected_pairing_method = pairingMethods[0];
196
- thpState.setPairingMethod(selected_pairing_method);
197
- const settings = settingsStore.get('thp');
198
- await thpCall(device, 'ThpPairingRequest', {
199
- host_name: sanitizeString(settings?.hostName) || 'Unknown hostName',
200
- app_name: sanitizeString(settings?.appName) || 'Unknown appName'
201
- });
202
- const selectMethod = await thpCall(device, 'ThpSelectMethod', {
203
- selected_pairing_method
204
- });
205
- if (selectMethod.type === 'ThpEndResponse') {
206
- thpState.setIsPaired(true);
207
- device.getThpState()?.setPhase('paired');
208
- return;
209
- }
210
- if (selectMethod.type === 'ThpCodeEntryCommitment') {
211
- const codeEntryChallenge = Buffer.from(randomBytes(32));
212
- const handshakeCommitment = Buffer.from(selectMethod.message.commitment, 'hex');
213
- thpState.updateHandshakeCredentials({
214
- handshakeCommitment,
215
- codeEntryChallenge
216
- });
217
- const codeEntryCpace = await thpCall(device, 'ThpCodeEntryChallenge', {
218
- challenge: codeEntryChallenge.toString('hex')
219
- });
220
- thpState.updateHandshakeCredentials({
221
- trezorCpacePublicKey: Buffer.from(codeEntryCpace.message.cpace_trezor_public_key, 'hex')
222
- });
223
- await waitForPairingTag(device);
224
- }
225
- if (selectMethod.type === 'ThpPairingPreparationsFinished') {
226
- if (thpState.pairingMethod === protocolThp.ThpPairingMethod.NFC) {
227
- thpState.setNfcSecret(Buffer.from(randomBytes(16)));
228
- }
229
- await waitForPairingTag(device);
230
- }
231
- const credentials = await getThpCredentials(device, false);
232
- device.emit(DEVICE.THP_CREDENTIALS_CHANGED, {
233
- credentials
234
- });
235
- const settings1 = settingsStore.get('thp');
236
- if (settings1) {
237
- settings1.knownCredentials?.push(credentials);
238
- }
239
- thpState.setPairingCredentials([credentials]);
240
- thpState.setIsPaired(true);
241
- await thpPairingEnd(device);
242
- };
@@ -1,2 +0,0 @@
1
- import type { IDevice } from "../../types/idevice.js";
2
- export declare const createThpSession: (device: IDevice, deriveCardano: boolean) => Promise<number>;
@@ -1,27 +0,0 @@
1
- import { thpCall } from "./thpCall.js";
2
- export const createThpSession = async (device, deriveCardano) => {
3
- let passphrase;
4
- if (device.features.passphrase_protection === false) {
5
- passphrase = {
6
- passphrase: ''
7
- };
8
- } else {
9
- passphrase = await device.prompt('passphrase', {}).then(promptRes => {
10
- if (!promptRes.success) {
11
- return {
12
- passphrase: ''
13
- };
14
- }
15
- return promptRes.payload.passphraseOnDevice ? {
16
- on_device: true
17
- } : {
18
- passphrase: promptRes.payload.value.normalize('NFKD')
19
- };
20
- });
21
- }
22
- await thpCall(device, 'ThpCreateNewSession', {
23
- ...passphrase,
24
- derive_cardano: deriveCardano
25
- });
26
- return 0;
27
- };
@@ -1,31 +0,0 @@
1
- import type { thp as protocolThp } from '@trezor/protocol';
2
- import type { IDevice } from "../../types/idevice.js";
3
- type ThpTypedCall = {
4
- ThpCreateChannelRequest: 'ThpCreateChannelResponse';
5
- ThpHandshakeInitRequest: 'ThpHandshakeInitResponse';
6
- ThpHandshakeCompletionRequest: 'ThpHandshakeCompletionResponse';
7
- ThpPairingRequest: 'ThpPairingRequestApproved';
8
- ThpSelectMethod: ['ThpCodeEntryCommitment', 'ThpEndResponse', 'ThpPairingRequestApproved', 'ThpPairingPreparationsFinished'];
9
- ThpCodeEntryChallenge: ['ThpCodeEntryCpaceTrezor'];
10
- ThpCodeEntryCpaceHostTag: 'ThpCodeEntrySecret';
11
- ThpQrCodeTag: 'ThpQrCodeSecret';
12
- ThpNfcTagHost: 'ThpNfcTagTrezor';
13
- ThpCredentialRequest: 'ThpCredentialResponse';
14
- ThpEndRequest: 'ThpEndResponse';
15
- ThpCreateNewSession: 'Success';
16
- };
17
- type ThpMessage = protocolThp.ThpMessageType & {
18
- Success: Record<never, never>;
19
- };
20
- type TypedPayloadItem<K> = K extends keyof ThpMessage ? {
21
- type: K;
22
- message: ThpMessage[K];
23
- } : never;
24
- type ExtractFromArray<A extends any[]> = { [K in keyof A]: TypedPayloadItem<A[K]> }[number];
25
- type MessageKey = keyof ThpTypedCall;
26
- type TypedPayload<T extends MessageKey> = ThpTypedCall[T] extends any[] ? ExtractFromArray<ThpTypedCall[T]> : TypedPayloadItem<ThpTypedCall[T]>;
27
- type ThpCallResponse = { [K in keyof ThpTypedCall]: TypedPayload<K> };
28
- type ThpMessagePayload<T extends MessageKey = MessageKey> = ThpMessage[T];
29
- export declare const thpCall: <T extends MessageKey>(device: IDevice, name: T, data: ThpMessagePayload<T>) => Promise<ThpCallResponse[T]>;
30
- export declare const abortThpWorkflow: (device: IDevice) => Promise<void>;
31
- export {};
@@ -1,58 +0,0 @@
1
- import { DEVICE } from "@trezor/connect-common";
2
- import { TypedError } from "@trezor/connect-common/lib/constants/errors.js";
3
- export const thpCall = async (device, name, data) => {
4
- const thpState = device.getThpState();
5
- if (!thpState) {
6
- throw TypedError('Device_ThpStateMissing');
7
- }
8
- const result = await device.getCurrentSession().call(name, data);
9
- if (!result.success) {
10
- throw result.error;
11
- }
12
- thpState.setCancelablePromise(false);
13
- if (result.payload.type === 'ButtonRequest') {
14
- thpState.setCancelablePromise(true);
15
- if (result.payload.message.code === 'ButtonRequest_PassphraseEntry') {
16
- device.emit(DEVICE.PASSPHRASE_ON_DEVICE);
17
- } else {
18
- device.emit(DEVICE.BUTTON, {
19
- device,
20
- payload: result.payload.message
21
- });
22
- }
23
- return thpCall(device, 'ButtonAck', {});
24
- }
25
- if (result.payload.type === 'Failure') {
26
- const {
27
- code,
28
- message
29
- } = result.payload.message;
30
- throw TypedError(code || 'Failure_UnknownCode', message);
31
- }
32
- if (result.payload.type === 'ThpError') {
33
- const {
34
- code,
35
- message
36
- } = result.payload.message;
37
- throw TypedError(code, message);
38
- }
39
- return result.payload;
40
- };
41
- export const abortThpWorkflow = async device => {
42
- const thpState = device.getThpState();
43
- if (!thpState || !device.currentRun) {
44
- return Promise.resolve();
45
- }
46
- if (thpState.pairingTagPromise) {
47
- await thpState.pairingTagPromise.abort();
48
- await device.getCurrentSession().cancelCall();
49
- thpState.resetState();
50
- device.emit(DEVICE.THP_PAIRING_STATUS_CHANGED, {
51
- status: 'canceled'
52
- });
53
- } else if (thpState.cancelablePromise) {
54
- thpState.sync('send', 'Cancel');
55
- await device.getCurrentSession().send('Cancel', {});
56
- await device.currentRun;
57
- }
58
- };
@@ -1,2 +0,0 @@
1
- import type { Device } from "./Device.js";
2
- export declare const validateModelOneMessageSize: (device: Device, messageHex: string) => void;
@@ -1,9 +0,0 @@
1
- import { TypedError } from "@trezor/connect-common/lib/constants/errors.js";
2
- export const validateModelOneMessageSize = (device, messageHex) => {
3
- if (device.features?.major_version === 1) {
4
- const byteSize = messageHex.length / 2;
5
- if (byteSize > 1024) {
6
- throw TypedError('Method_DataOverflowModelOne');
7
- }
8
- }
9
- };
@@ -1,18 +0,0 @@
1
- import type { IDevice } from "../../types/idevice.js";
2
- type Context = {
3
- device: IDevice;
4
- } & ({
5
- language?: undefined;
6
- binary: ArrayBuffer;
7
- } | {
8
- language: string;
9
- binary?: undefined;
10
- });
11
- export declare const changeLanguage: ({
12
- device,
13
- language,
14
- binary
15
- }: Context) => Promise<{
16
- message: string;
17
- }>;
18
- export {};
@@ -1,62 +0,0 @@
1
- import { ERRORS } from "@trezor/connect-common/lib/constants/index.js";
2
- import { getLanguage } from "../../data/firmwareInfo.js";
3
- const uploadTranslationData = async (device, payload) => {
4
- if (payload === null) {
5
- const response = await device.getCurrentSession().typedCall('ChangeLanguage', ['Success'], {
6
- data_length: 0
7
- });
8
- return response.message;
9
- }
10
- const length = payload.byteLength;
11
- device.startPiggybackAck();
12
- let response = await device.getCurrentSession().typedCall('ChangeLanguage', ['DataChunkRequest', 'Success'], {
13
- data_length: length
14
- });
15
- while (response.type !== 'Success') {
16
- const start = response.message.data_offset;
17
- const end = response.message.data_offset + response.message.data_length;
18
- const chunk = payload.slice(start, end);
19
- response = await device.getCurrentSession().typedCall('DataChunkAck', ['DataChunkRequest', 'Success'], {
20
- data_chunk: Buffer.from(chunk).toString('hex')
21
- });
22
- }
23
- await device.stopPiggybackAck();
24
- return response.message;
25
- };
26
- export const changeLanguage = async ({
27
- device,
28
- language,
29
- binary
30
- }) => {
31
- if (language === 'en-US') {
32
- return uploadTranslationData(device, null);
33
- }
34
- if (binary) {
35
- return uploadTranslationData(device, binary);
36
- }
37
- const version = device.getVersion();
38
- if (!version) {
39
- throw ERRORS.TypedError('Runtime', 'changeLanguage: device version unknown');
40
- }
41
- if (!device.firmwareType) {
42
- throw ERRORS.TypedError('Runtime', 'changeLanguage: firmware type unknown');
43
- }
44
- if (!device.currentRelease) {
45
- throw ERRORS.TypedError('Runtime', 'changeLanguage: release not found');
46
- }
47
- const {
48
- translations
49
- } = device.currentRelease;
50
- const languageBinPath = translations[language];
51
- const downloadedBinary = await getLanguage(languageBinPath);
52
- if (!downloadedBinary) {
53
- throw ERRORS.TypedError('Runtime', 'changeLanguage: translation not found');
54
- }
55
- let dataToSend;
56
- if (Buffer.isBuffer(downloadedBinary)) {
57
- dataToSend = new Uint8Array(downloadedBinary).buffer;
58
- } else {
59
- dataToSend = downloadedBinary;
60
- }
61
- return uploadTranslationData(device, dataToSend);
62
- };
@@ -1,12 +0,0 @@
1
- import type { FirmwareHashCheckResult } from '@trezor/connect-common';
2
- import { type Logger } from '@trezor/utils';
3
- import type { IDevice } from "../../types/idevice.js";
4
- type Context = {
5
- device: IDevice;
6
- logger: Logger;
7
- };
8
- export declare const checkFirmwareHash: ({
9
- device,
10
- logger
11
- }: Context) => Promise<FirmwareHashCheckResult | null>;
12
- export {};
@@ -1,86 +0,0 @@
1
- import { randomBytes } from "@noble/hashes/utils.js";
2
- import { serializeError } from "@trezor/utils";
3
- import { calculateFirmwareHash, getBinaryOptional, stripFwHeaders } from "../../api/firmware/index.js";
4
- import { getFirmwareLocation, getReleaseByVersion } from "../../data/firmwareInfo.js";
5
- import * as settingsStore from "../../data/settingsStore.js";
6
- import { getFirmwareType } from "../../utils/firmwareUtils.js";
7
- const createFailResult = (error, errorPayload) => ({
8
- success: false,
9
- error,
10
- errorPayload
11
- });
12
- export const checkFirmwareHash = async ({
13
- device,
14
- logger
15
- }) => {
16
- const enabled = settingsStore.get('enableFirmwareHashCheck');
17
- if (!enabled) return createFailResult('check-skipped');
18
- const firmwareVersion = device.getVersion();
19
- if (firmwareVersion === undefined || !device.features || device.features.bootloader_mode) {
20
- return null;
21
- }
22
- const firmwareType = getFirmwareType(device.features);
23
- const release = await getReleaseByVersion(device.features, firmwareVersion, firmwareType);
24
- if (!release) return createFailResult('unknown-release');
25
- const firmwareLocation = getFirmwareLocation({
26
- firmwareVersion,
27
- remotePath: release.url,
28
- deviceModel: device.features.internal_model,
29
- firmwareType: getFirmwareType(device.features)
30
- });
31
- const {
32
- baseUrl,
33
- path
34
- } = firmwareLocation;
35
- const timeoutThresholdsPerModel = settingsStore.get('firmwareHashCheckTimeouts');
36
- if (firmwareVersion === undefined || !device.features || device.features.bootloader_mode) {
37
- return null;
38
- }
39
- const checkSupported = !device.unavailableCapabilities.getFirmwareHash;
40
- if (!checkSupported) return createFailResult('check-unsupported');
41
- const firmwareBinary = await getBinaryOptional({
42
- baseUrl,
43
- path,
44
- release
45
- });
46
- if (firmwareBinary === null) {
47
- return createFailResult('check-unsupported');
48
- }
49
- if (firmwareBinary.binary.byteLength < 200) {
50
- logger.warn(`Firmware binary for hash check suspiciously small (< 200 b)`);
51
- return createFailResult('check-unsupported');
52
- }
53
- const strippedBinary = stripFwHeaders(firmwareBinary.binary);
54
- const {
55
- hash: expectedHash,
56
- challenge
57
- } = calculateFirmwareHash({
58
- internal_model: device.features.internal_model,
59
- firmwareVersion,
60
- fw: Buffer.from(strippedBinary),
61
- key: Buffer.from(randomBytes(32))
62
- });
63
- try {
64
- const ts = performance.now();
65
- const deviceResponse = await device.getCurrentSession().typedCall('GetFirmwareHash', 'FirmwareHash', {
66
- challenge
67
- });
68
- if (!deviceResponse?.message?.hash) {
69
- return createFailResult('other-error', 'Device response is missing hash');
70
- }
71
- if (deviceResponse.message.hash !== expectedHash) {
72
- return createFailResult('hash-mismatch');
73
- }
74
- const duration = performance.now() - ts;
75
- logger.debug('GetFirmwareHash time', duration);
76
- const timeoutThreshold = timeoutThresholdsPerModel?.[device.features.internal_model];
77
- if (timeoutThreshold !== undefined && duration > timeoutThreshold) {
78
- return createFailResult('takes-too-long');
79
- }
80
- return {
81
- success: true
82
- };
83
- } catch (errorPayload) {
84
- return createFailResult('other-error', serializeError(errorPayload));
85
- }
86
- };
@@ -1,8 +0,0 @@
1
- import { type Logger } from '@trezor/utils';
2
- import type { IDevice } from "../../types/idevice.js";
3
- type Context = {
4
- device: IDevice;
5
- logger: Logger;
6
- };
7
- export declare const checkFirmwareHashWithRetries: (context: Context) => Promise<void>;
8
- export {};
@@ -1,36 +0,0 @@
1
- import { FIRMWARE } from "@trezor/connect-common";
2
- import { isArrayMember } from "@trezor/utils";
3
- import { checkFirmwareHash } from "./checkFirmwareHash.js";
4
- const PROBE_CHECK_TIME_RETRIES = 4;
5
- const probeCheckTime = async context => {
6
- for (let i = 0; i < PROBE_CHECK_TIME_RETRIES; i++) {
7
- const result = await checkFirmwareHash(context);
8
- if (result !== null && (result.success || result.error !== 'takes-too-long')) {
9
- context.device.setAuthenticityChecks(result);
10
- return;
11
- }
12
- }
13
- };
14
- export const checkFirmwareHashWithRetries = async context => {
15
- const lastResult = context.device.getAuthenticityChecks().firmwareHash;
16
- const notDoneYet = lastResult === null;
17
- const attemptsDone = lastResult?.attemptCount ?? 0;
18
- if (attemptsDone >= FIRMWARE.HASH_CHECK_MAX_ATTEMPTS) return;
19
- const wasError = lastResult !== null && !lastResult.success;
20
- const wasErrorRetriable = wasError && isArrayMember(lastResult.error, FIRMWARE.HASH_CHECK_RETRIABLE_ERRORS);
21
- const lastErrorPayload = wasError ? lastResult?.errorPayload : null;
22
- if (notDoneYet || wasErrorRetriable) {
23
- const result = await checkFirmwareHash(context);
24
- context.device.setAuthenticityChecks(result);
25
- if (result === null) return;
26
- result.attemptCount = attemptsDone + 1;
27
- if (!result.success && result.error === 'takes-too-long') {
28
- await probeCheckTime(context);
29
- }
30
- if (result.success && lastErrorPayload) {
31
- result.warningPayload = {
32
- lastErrorPayload
33
- };
34
- }
35
- }
36
- };
@@ -1,13 +0,0 @@
1
- import { type Logger } from '@trezor/utils';
2
- import type { WorkflowContext } from "../../types/workflow.js";
3
- type Context = {
4
- device: WorkflowContext['device'];
5
- signal: AbortSignal;
6
- logger?: Logger;
7
- };
8
- export declare const handshakeCancel: ({
9
- device,
10
- logger,
11
- signal
12
- }: Context) => Promise<void>;
13
- export {};
@@ -1,55 +0,0 @@
1
- import { TypedError } from "@trezor/connect-common/lib/constants/errors.js";
2
- import { PROTOCOL_MALFORMED } from "@trezor/protocol/lib/errors.js";
3
- import { TRANSPORT_ERROR } from "@trezor/transport-common";
4
- import { resolveAfter, versionUtils } from "@trezor/utils";
5
- const CANCEL_TIMEOUT = 1_000;
6
- const ATTEMPTS_LIMIT = 10;
7
- const isLegacyBridge = transport => transport.name === 'BridgeTransport' && !versionUtils.isNewerOrEqual(transport.version, '3.0.0');
8
- export const handshakeCancel = async ({
9
- device,
10
- logger,
11
- signal
12
- }) => {
13
- if (device.features || device.getThpState()?.properties) {
14
- return;
15
- }
16
- const timeout = device.possibleT1 ? CANCEL_TIMEOUT : undefined;
17
- logger?.debug('handshake Cancel start');
18
- const send = await device.getCurrentSession().send('Cancel', {}, {
19
- signal,
20
- timeout
21
- });
22
- if (!send.success) {
23
- logger?.debug(`handshake Cancel send error ${send.error}`);
24
- return;
25
- }
26
- logger?.debug('handshake Cancel sent');
27
- for (let attempt = 0; attempt < ATTEMPTS_LIMIT; ++attempt) {
28
- logger?.debug(`handshake Cancel read attempt ${attempt}`);
29
- const result = await device.getCurrentSession().receive({
30
- signal,
31
- timeout: CANCEL_TIMEOUT
32
- });
33
- if (!result.success && result.error.message === TRANSPORT_ERROR.ABORTED_BY_TIMEOUT) {
34
- if (isLegacyBridge(device.transport)) {
35
- await resolveAfter(501);
36
- }
37
- await device.acquire();
38
- }
39
- if (!result.success && result.error.message !== PROTOCOL_MALFORMED) {
40
- logger?.debug(`handshake Cancel read error: ${result.error}`);
41
- return;
42
- } else if (result.success) {
43
- logger?.debug(`handshake Cancel read success: ${result.payload.type}`);
44
- if (result.payload.type === 'Failure' && result.payload.message.code === 'Failure_InvalidProtocol') {
45
- logger?.debug(`handshake Cancel protocol v2 detected`);
46
- device.setupThp();
47
- }
48
- if (result.payload.type === 'Failure' && result.payload.message.code === 'Failure_Busy') {
49
- throw TypedError(result.payload.message.code, result.payload.message.message);
50
- }
51
- return;
52
- }
53
- }
54
- logger?.debug(`handshake Cancel attempts limit reached`);
55
- };