@ledgerhq/device-trusted-app-kit-ledger-keyring-protocol 0.0.0-web-ble-29-08---20250829104351 → 0.0.0-wrong-error-when-in-experimental-provider-20251021162636

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 (467) hide show
  1. package/lib/cjs/api/LedgerKeyringProtocol.js +1 -1
  2. package/lib/cjs/api/LedgerKeyringProtocol.js.map +1 -1
  3. package/lib/cjs/api/LedgerKeyringProtocolBuilder.js +1 -1
  4. package/lib/cjs/api/LedgerKeyringProtocolBuilder.js.map +3 -3
  5. package/lib/cjs/api/app-binder/AddToTrustchainDeviceActionTypes.js.map +2 -2
  6. package/lib/cjs/api/app-binder/AuthenticateDeviceActionTypes.js.map +1 -1
  7. package/lib/cjs/api/app-binder/GetVersionCommandTypes.js +1 -1
  8. package/lib/cjs/api/app-binder/GetVersionCommandTypes.js.map +1 -1
  9. package/lib/cjs/api/crypto/CryptoService.js +2 -0
  10. package/lib/cjs/api/crypto/CryptoService.js.map +7 -0
  11. package/lib/cjs/api/crypto/Key.js +2 -0
  12. package/lib/cjs/api/crypto/Key.js.map +7 -0
  13. package/lib/cjs/api/crypto/KeyPair.js +2 -0
  14. package/lib/cjs/api/crypto/KeyPair.js.map +7 -0
  15. package/lib/cjs/api/crypto/noble/NobleCryptoService.js +2 -0
  16. package/lib/cjs/api/crypto/noble/NobleCryptoService.js.map +7 -0
  17. package/lib/cjs/api/crypto/noble/NobleCryptoService.test.js +2 -0
  18. package/lib/cjs/api/crypto/noble/NobleCryptoService.test.js.map +7 -0
  19. package/lib/cjs/api/crypto/noble/NobleKey.js +2 -0
  20. package/lib/cjs/api/crypto/noble/NobleKey.js.map +7 -0
  21. package/lib/cjs/api/crypto/noble/NobleKey.test.js +2 -0
  22. package/lib/cjs/api/crypto/noble/NobleKey.test.js.map +7 -0
  23. package/lib/cjs/api/crypto/noble/NobleKeyPair.js +2 -0
  24. package/lib/cjs/api/crypto/noble/NobleKeyPair.js.map +7 -0
  25. package/lib/cjs/api/crypto/noble/NobleKeyPair.test.js +2 -0
  26. package/lib/cjs/api/crypto/noble/NobleKeyPair.test.js.map +7 -0
  27. package/lib/cjs/api/index.js +1 -1
  28. package/lib/cjs/api/index.js.map +2 -2
  29. package/lib/cjs/api/model/Env.js +2 -0
  30. package/lib/cjs/api/model/Env.js.map +7 -0
  31. package/lib/cjs/api/{app-binder → model}/Errors.js.map +1 -1
  32. package/lib/cjs/api/model/JWT.js +2 -0
  33. package/lib/cjs/api/model/JWT.js.map +7 -0
  34. package/lib/cjs/api/model/Permissions.js +2 -0
  35. package/lib/cjs/api/model/Permissions.js.map +7 -0
  36. package/lib/cjs/internal/DefaultLedgerKeyringProtocol.js +1 -1
  37. package/lib/cjs/internal/DefaultLedgerKeyringProtocol.js.map +3 -3
  38. package/lib/cjs/internal/app-binder/LedgerKeyringProtocolBinder.js +1 -1
  39. package/lib/cjs/internal/app-binder/LedgerKeyringProtocolBinder.js.map +3 -3
  40. package/lib/cjs/internal/app-binder/command/GetAppNameCommand.js +1 -1
  41. package/lib/cjs/internal/app-binder/command/GetAppNameCommand.js.map +2 -2
  42. package/lib/cjs/internal/app-binder/command/GetSeedIdCommand.js +1 -1
  43. package/lib/cjs/internal/app-binder/command/GetSeedIdCommand.js.map +3 -3
  44. package/lib/cjs/internal/app-binder/command/GetSeedIdCommand.test.js +2 -2
  45. package/lib/cjs/internal/app-binder/command/GetSeedIdCommand.test.js.map +3 -3
  46. package/lib/cjs/internal/app-binder/command/GetVersionCommand.js.map +2 -2
  47. package/lib/cjs/internal/app-binder/command/InitCommand.js +1 -1
  48. package/lib/cjs/internal/app-binder/command/InitCommand.js.map +2 -2
  49. package/lib/cjs/internal/app-binder/command/InitCommand.test.js +1 -1
  50. package/lib/cjs/internal/app-binder/command/InitCommand.test.js.map +2 -2
  51. package/lib/cjs/internal/app-binder/command/ParseBlockSignatureCommand.js +1 -1
  52. package/lib/cjs/internal/app-binder/command/ParseBlockSignatureCommand.js.map +2 -2
  53. package/lib/cjs/internal/app-binder/command/ParseBlockSignatureCommand.test.js +1 -1
  54. package/lib/cjs/internal/app-binder/command/ParseBlockSignatureCommand.test.js.map +2 -2
  55. package/lib/cjs/internal/app-binder/command/ParseStreamBlockCommand.js.map +2 -2
  56. package/lib/cjs/internal/app-binder/command/ParseStreamBlockCommand.test.js +1 -1
  57. package/lib/cjs/internal/app-binder/command/ParseStreamBlockCommand.test.js.map +2 -2
  58. package/lib/cjs/internal/app-binder/command/ParseStreamBlockHeader.js +1 -1
  59. package/lib/cjs/internal/app-binder/command/ParseStreamBlockHeader.js.map +2 -2
  60. package/lib/cjs/internal/app-binder/command/ParseStreamBlockHeader.test.js.map +2 -2
  61. package/lib/cjs/internal/app-binder/command/SetTrustedMemberCommand.js +1 -1
  62. package/lib/cjs/internal/app-binder/command/SetTrustedMemberCommand.js.map +2 -2
  63. package/lib/cjs/internal/app-binder/command/SetTrustedMemberCommand.test.js.map +2 -2
  64. package/lib/cjs/internal/app-binder/command/SignBlockHeader.js +1 -1
  65. package/lib/cjs/internal/app-binder/command/SignBlockHeader.js.map +2 -2
  66. package/lib/cjs/internal/app-binder/command/SignBlockHeader.test.js +1 -1
  67. package/lib/cjs/internal/app-binder/command/SignBlockHeader.test.js.map +2 -2
  68. package/lib/cjs/internal/app-binder/command/SignBlockSignatureCommand.js +1 -1
  69. package/lib/cjs/internal/app-binder/command/SignBlockSignatureCommand.js.map +2 -2
  70. package/lib/cjs/internal/app-binder/command/SignBlockSignatureCommand.test.js +1 -1
  71. package/lib/cjs/internal/app-binder/command/SignBlockSignatureCommand.test.js.map +2 -2
  72. package/lib/cjs/internal/app-binder/command/SignBlockSingleCommand.js +1 -1
  73. package/lib/cjs/internal/app-binder/command/SignBlockSingleCommand.js.map +2 -2
  74. package/lib/cjs/internal/app-binder/command/SignBlockSingleCommand.test.js +1 -1
  75. package/lib/cjs/internal/app-binder/command/SignBlockSingleCommand.test.js.map +2 -2
  76. package/lib/cjs/internal/app-binder/device-action/AddToTrustchainDeviceAction.js +1 -1
  77. package/lib/cjs/internal/app-binder/device-action/AddToTrustchainDeviceAction.js.map +3 -3
  78. package/lib/cjs/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.js +1 -1
  79. package/lib/cjs/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.js.map +2 -2
  80. package/lib/cjs/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.js +1 -1
  81. package/lib/cjs/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.js.map +2 -2
  82. package/lib/cjs/internal/app-binder/device-action/models/AuthenticateWithDeviceDeviceActionTypes.js +1 -1
  83. package/lib/cjs/internal/app-binder/device-action/models/AuthenticateWithDeviceDeviceActionTypes.js.map +1 -1
  84. package/lib/cjs/internal/app-binder/device-action/models/AuthenticateWithKeypairDeviceActionTypes.js +1 -1
  85. package/lib/cjs/internal/app-binder/device-action/models/AuthenticateWithKeypairDeviceActionTypes.js.map +1 -1
  86. package/lib/cjs/internal/app-binder/task/ExtractEncryptionKeyTask.js +1 -1
  87. package/lib/cjs/internal/app-binder/task/ExtractEncryptionKeyTask.js.map +3 -3
  88. package/lib/cjs/internal/app-binder/task/InitTask.js +1 -1
  89. package/lib/cjs/internal/app-binder/task/InitTask.js.map +3 -3
  90. package/lib/cjs/internal/app-binder/task/ParseStreamToDeviceTask.js +1 -1
  91. package/lib/cjs/internal/app-binder/task/ParseStreamToDeviceTask.js.map +3 -3
  92. package/lib/cjs/internal/app-binder/task/SignBlockTask.js +1 -1
  93. package/lib/cjs/internal/app-binder/task/SignBlockTask.js.map +3 -3
  94. package/lib/cjs/internal/app-binder/task/SignChallengeWithKeypairTask.js +1 -1
  95. package/lib/cjs/internal/app-binder/task/SignChallengeWithKeypairTask.js.map +3 -3
  96. package/lib/cjs/internal/app-binder/task/SignChallengeWithKeypairTask.test.js +1 -1
  97. package/lib/cjs/internal/app-binder/task/SignChallengeWithKeypairTask.test.js.map +3 -3
  98. package/lib/cjs/internal/app-binder/task/utils/TrustedProperties.js +1 -1
  99. package/lib/cjs/internal/app-binder/task/utils/TrustedProperties.js.map +2 -2
  100. package/lib/cjs/internal/di.js +1 -1
  101. package/lib/cjs/internal/di.js.map +3 -3
  102. package/lib/cjs/internal/externalTypes.js +1 -1
  103. package/lib/cjs/internal/externalTypes.js.map +2 -2
  104. package/lib/cjs/internal/lkrp-datasource/data/HttpLKRPDataSource.js +1 -1
  105. package/lib/cjs/internal/lkrp-datasource/data/HttpLKRPDataSource.js.map +2 -2
  106. package/lib/cjs/internal/lkrp-datasource/data/HttpLKRPDataSource.test.js +1 -1
  107. package/lib/cjs/internal/lkrp-datasource/data/HttpLKRPDataSource.test.js.map +2 -2
  108. package/lib/cjs/internal/lkrp-datasource/data/LKRPDataSource.js.map +1 -1
  109. package/lib/cjs/internal/use-cases/authentication/AuthenticateUseCase.js +1 -1
  110. package/lib/cjs/internal/use-cases/authentication/AuthenticateUseCase.js.map +2 -2
  111. package/lib/cjs/internal/use-cases/authentication/DecryptDataUseCase.js +1 -1
  112. package/lib/cjs/internal/use-cases/authentication/DecryptDataUseCase.js.map +3 -3
  113. package/lib/cjs/internal/use-cases/authentication/EncryptDataUseCase.js +1 -1
  114. package/lib/cjs/internal/use-cases/authentication/EncryptDataUseCase.js.map +3 -3
  115. package/lib/cjs/internal/utils/LKRPBlock.js +4 -4
  116. package/lib/cjs/internal/utils/LKRPBlock.js.map +3 -3
  117. package/lib/cjs/internal/utils/LKRPBlock.test.js +3 -3
  118. package/lib/cjs/internal/utils/LKRPBlock.test.js.map +3 -3
  119. package/lib/cjs/internal/utils/LKRPBlockStream.js +2 -2
  120. package/lib/cjs/internal/utils/LKRPBlockStream.js.map +3 -3
  121. package/lib/cjs/internal/utils/LKRPBlockStream.test.js +2 -2
  122. package/lib/cjs/internal/utils/LKRPBlockStream.test.js.map +3 -3
  123. package/lib/cjs/internal/utils/LKRPCommand.js +2 -2
  124. package/lib/cjs/internal/utils/LKRPCommand.js.map +3 -3
  125. package/lib/cjs/internal/utils/LKRPCommand.test.js +2 -2
  126. package/lib/cjs/internal/utils/LKRPCommand.test.js.map +3 -3
  127. package/lib/cjs/internal/utils/TLVParser.js +1 -1
  128. package/lib/cjs/internal/utils/TLVParser.js.map +3 -3
  129. package/lib/cjs/internal/utils/TLVParser.test.js +1 -1
  130. package/lib/cjs/internal/utils/TLVParser.test.js.map +2 -2
  131. package/lib/cjs/internal/utils/required.js +1 -1
  132. package/lib/cjs/internal/utils/required.js.map +2 -2
  133. package/lib/cjs/package.json +2 -2
  134. package/lib/esm/api/LedgerKeyringProtocolBuilder.js +1 -1
  135. package/lib/esm/api/LedgerKeyringProtocolBuilder.js.map +3 -3
  136. package/lib/esm/api/app-binder/AddToTrustchainDeviceActionTypes.js.map +2 -2
  137. package/lib/esm/api/app-binder/AuthenticateDeviceActionTypes.js.map +1 -1
  138. package/lib/esm/api/crypto/CryptoService.js +2 -0
  139. package/lib/esm/api/crypto/CryptoService.js.map +7 -0
  140. package/lib/esm/api/crypto/Key.js +2 -0
  141. package/lib/esm/api/crypto/Key.js.map +7 -0
  142. package/lib/esm/api/crypto/KeyPair.js +2 -0
  143. package/lib/esm/api/crypto/KeyPair.js.map +7 -0
  144. package/lib/esm/api/crypto/noble/NobleCryptoService.js +2 -0
  145. package/lib/esm/api/crypto/noble/NobleCryptoService.js.map +7 -0
  146. package/lib/esm/api/crypto/noble/NobleCryptoService.test.js +2 -0
  147. package/lib/esm/api/crypto/noble/NobleCryptoService.test.js.map +7 -0
  148. package/lib/esm/api/crypto/noble/NobleKey.js +2 -0
  149. package/lib/esm/api/crypto/noble/NobleKey.js.map +7 -0
  150. package/lib/esm/api/crypto/noble/NobleKey.test.js +2 -0
  151. package/lib/esm/api/crypto/noble/NobleKey.test.js.map +7 -0
  152. package/lib/esm/api/crypto/noble/NobleKeyPair.js +2 -0
  153. package/lib/esm/api/crypto/noble/NobleKeyPair.js.map +7 -0
  154. package/lib/esm/api/crypto/noble/NobleKeyPair.test.js +2 -0
  155. package/lib/esm/api/crypto/noble/NobleKeyPair.test.js.map +7 -0
  156. package/lib/esm/api/index.js +1 -1
  157. package/lib/esm/api/index.js.map +2 -2
  158. package/lib/esm/api/model/Env.js +2 -0
  159. package/lib/esm/api/model/Env.js.map +7 -0
  160. package/lib/esm/api/{app-binder → model}/Errors.js.map +1 -1
  161. package/lib/esm/api/model/JWT.js +1 -0
  162. package/lib/esm/api/model/Permissions.js +2 -0
  163. package/lib/esm/api/model/Permissions.js.map +7 -0
  164. package/lib/esm/internal/DefaultLedgerKeyringProtocol.js +1 -1
  165. package/lib/esm/internal/DefaultLedgerKeyringProtocol.js.map +3 -3
  166. package/lib/esm/internal/app-binder/LedgerKeyringProtocolBinder.js +1 -1
  167. package/lib/esm/internal/app-binder/LedgerKeyringProtocolBinder.js.map +3 -3
  168. package/lib/esm/internal/app-binder/command/GetAppNameCommand.js +1 -1
  169. package/lib/esm/internal/app-binder/command/GetAppNameCommand.js.map +2 -2
  170. package/lib/esm/internal/app-binder/command/GetSeedIdCommand.js +1 -1
  171. package/lib/esm/internal/app-binder/command/GetSeedIdCommand.js.map +3 -3
  172. package/lib/esm/internal/app-binder/command/GetSeedIdCommand.test.js +1 -1
  173. package/lib/esm/internal/app-binder/command/GetSeedIdCommand.test.js.map +3 -3
  174. package/lib/esm/internal/app-binder/command/GetVersionCommand.js.map +2 -2
  175. package/lib/esm/internal/app-binder/command/InitCommand.js +1 -1
  176. package/lib/esm/internal/app-binder/command/InitCommand.js.map +2 -2
  177. package/lib/esm/internal/app-binder/command/InitCommand.test.js +1 -1
  178. package/lib/esm/internal/app-binder/command/InitCommand.test.js.map +2 -2
  179. package/lib/esm/internal/app-binder/command/ParseBlockSignatureCommand.js +1 -1
  180. package/lib/esm/internal/app-binder/command/ParseBlockSignatureCommand.js.map +2 -2
  181. package/lib/esm/internal/app-binder/command/ParseBlockSignatureCommand.test.js +1 -1
  182. package/lib/esm/internal/app-binder/command/ParseBlockSignatureCommand.test.js.map +2 -2
  183. package/lib/esm/internal/app-binder/command/ParseStreamBlockCommand.js.map +2 -2
  184. package/lib/esm/internal/app-binder/command/ParseStreamBlockCommand.test.js +1 -1
  185. package/lib/esm/internal/app-binder/command/ParseStreamBlockCommand.test.js.map +2 -2
  186. package/lib/esm/internal/app-binder/command/ParseStreamBlockHeader.js +1 -1
  187. package/lib/esm/internal/app-binder/command/ParseStreamBlockHeader.js.map +2 -2
  188. package/lib/esm/internal/app-binder/command/ParseStreamBlockHeader.test.js.map +2 -2
  189. package/lib/esm/internal/app-binder/command/SetTrustedMemberCommand.js +1 -1
  190. package/lib/esm/internal/app-binder/command/SetTrustedMemberCommand.js.map +2 -2
  191. package/lib/esm/internal/app-binder/command/SetTrustedMemberCommand.test.js +1 -1
  192. package/lib/esm/internal/app-binder/command/SetTrustedMemberCommand.test.js.map +2 -2
  193. package/lib/esm/internal/app-binder/command/SignBlockHeader.js +1 -1
  194. package/lib/esm/internal/app-binder/command/SignBlockHeader.js.map +2 -2
  195. package/lib/esm/internal/app-binder/command/SignBlockHeader.test.js +1 -1
  196. package/lib/esm/internal/app-binder/command/SignBlockHeader.test.js.map +2 -2
  197. package/lib/esm/internal/app-binder/command/SignBlockSignatureCommand.js +1 -1
  198. package/lib/esm/internal/app-binder/command/SignBlockSignatureCommand.js.map +2 -2
  199. package/lib/esm/internal/app-binder/command/SignBlockSignatureCommand.test.js +1 -1
  200. package/lib/esm/internal/app-binder/command/SignBlockSignatureCommand.test.js.map +2 -2
  201. package/lib/esm/internal/app-binder/command/SignBlockSingleCommand.js +1 -1
  202. package/lib/esm/internal/app-binder/command/SignBlockSingleCommand.js.map +2 -2
  203. package/lib/esm/internal/app-binder/command/SignBlockSingleCommand.test.js +1 -1
  204. package/lib/esm/internal/app-binder/command/SignBlockSingleCommand.test.js.map +2 -2
  205. package/lib/esm/internal/app-binder/device-action/AddToTrustchainDeviceAction.js +1 -1
  206. package/lib/esm/internal/app-binder/device-action/AddToTrustchainDeviceAction.js.map +3 -3
  207. package/lib/esm/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.js +1 -1
  208. package/lib/esm/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.js.map +2 -2
  209. package/lib/esm/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.js +1 -1
  210. package/lib/esm/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.js.map +2 -2
  211. package/lib/esm/internal/app-binder/task/ExtractEncryptionKeyTask.js +1 -1
  212. package/lib/esm/internal/app-binder/task/ExtractEncryptionKeyTask.js.map +3 -3
  213. package/lib/esm/internal/app-binder/task/InitTask.js +1 -1
  214. package/lib/esm/internal/app-binder/task/InitTask.js.map +3 -3
  215. package/lib/esm/internal/app-binder/task/ParseStreamToDeviceTask.js +1 -1
  216. package/lib/esm/internal/app-binder/task/ParseStreamToDeviceTask.js.map +3 -3
  217. package/lib/esm/internal/app-binder/task/SignBlockTask.js +1 -1
  218. package/lib/esm/internal/app-binder/task/SignBlockTask.js.map +3 -3
  219. package/lib/esm/internal/app-binder/task/SignChallengeWithKeypairTask.js +1 -1
  220. package/lib/esm/internal/app-binder/task/SignChallengeWithKeypairTask.js.map +3 -3
  221. package/lib/esm/internal/app-binder/task/SignChallengeWithKeypairTask.test.js +1 -1
  222. package/lib/esm/internal/app-binder/task/SignChallengeWithKeypairTask.test.js.map +3 -3
  223. package/lib/esm/internal/app-binder/task/utils/TrustedProperties.js +1 -1
  224. package/lib/esm/internal/app-binder/task/utils/TrustedProperties.js.map +2 -2
  225. package/lib/esm/internal/di.js +1 -1
  226. package/lib/esm/internal/di.js.map +3 -3
  227. package/lib/esm/internal/externalTypes.js +1 -1
  228. package/lib/esm/internal/externalTypes.js.map +2 -2
  229. package/lib/esm/internal/lkrp-datasource/data/HttpLKRPDataSource.js +1 -1
  230. package/lib/esm/internal/lkrp-datasource/data/HttpLKRPDataSource.js.map +2 -2
  231. package/lib/esm/internal/lkrp-datasource/data/HttpLKRPDataSource.test.js +1 -1
  232. package/lib/esm/internal/lkrp-datasource/data/HttpLKRPDataSource.test.js.map +2 -2
  233. package/lib/esm/internal/use-cases/authentication/AuthenticateUseCase.js +1 -1
  234. package/lib/esm/internal/use-cases/authentication/AuthenticateUseCase.js.map +2 -2
  235. package/lib/esm/internal/use-cases/authentication/DecryptDataUseCase.js +1 -1
  236. package/lib/esm/internal/use-cases/authentication/DecryptDataUseCase.js.map +3 -3
  237. package/lib/esm/internal/use-cases/authentication/EncryptDataUseCase.js +1 -1
  238. package/lib/esm/internal/use-cases/authentication/EncryptDataUseCase.js.map +3 -3
  239. package/lib/esm/internal/utils/LKRPBlock.js +3 -3
  240. package/lib/esm/internal/utils/LKRPBlock.js.map +3 -3
  241. package/lib/esm/internal/utils/LKRPBlock.test.js +2 -2
  242. package/lib/esm/internal/utils/LKRPBlock.test.js.map +3 -3
  243. package/lib/esm/internal/utils/LKRPBlockStream.js +2 -2
  244. package/lib/esm/internal/utils/LKRPBlockStream.js.map +3 -3
  245. package/lib/esm/internal/utils/LKRPBlockStream.test.js +1 -1
  246. package/lib/esm/internal/utils/LKRPBlockStream.test.js.map +3 -3
  247. package/lib/esm/internal/utils/LKRPCommand.js +2 -2
  248. package/lib/esm/internal/utils/LKRPCommand.js.map +3 -3
  249. package/lib/esm/internal/utils/LKRPCommand.test.js +2 -2
  250. package/lib/esm/internal/utils/LKRPCommand.test.js.map +3 -3
  251. package/lib/esm/internal/utils/TLVParser.js +1 -1
  252. package/lib/esm/internal/utils/TLVParser.js.map +3 -3
  253. package/lib/esm/internal/utils/TLVParser.test.js +1 -1
  254. package/lib/esm/internal/utils/TLVParser.test.js.map +2 -2
  255. package/lib/esm/internal/utils/required.js +1 -1
  256. package/lib/esm/internal/utils/required.js.map +2 -2
  257. package/lib/esm/package.json +2 -2
  258. package/lib/types/api/LedgerKeyringProtocol.d.ts +2 -2
  259. package/lib/types/api/LedgerKeyringProtocol.d.ts.map +1 -1
  260. package/lib/types/api/LedgerKeyringProtocolBuilder.d.ts +4 -1
  261. package/lib/types/api/LedgerKeyringProtocolBuilder.d.ts.map +1 -1
  262. package/lib/types/api/app-binder/AddToTrustchainDeviceActionTypes.d.ts +8 -4
  263. package/lib/types/api/app-binder/AddToTrustchainDeviceActionTypes.d.ts.map +1 -1
  264. package/lib/types/api/app-binder/AuthenticateDeviceActionTypes.d.ts +2 -2
  265. package/lib/types/api/app-binder/AuthenticateDeviceActionTypes.d.ts.map +1 -1
  266. package/lib/types/api/app-binder/GetVersionCommandTypes.d.ts +0 -1
  267. package/lib/types/api/app-binder/GetVersionCommandTypes.d.ts.map +1 -1
  268. package/lib/types/api/crypto/CryptoService.d.ts +22 -0
  269. package/lib/types/api/crypto/CryptoService.d.ts.map +1 -0
  270. package/lib/types/api/crypto/Key.d.ts +7 -0
  271. package/lib/types/api/crypto/Key.d.ts.map +1 -0
  272. package/lib/types/api/crypto/KeyPair.d.ts +13 -0
  273. package/lib/types/api/crypto/KeyPair.d.ts.map +1 -0
  274. package/lib/types/api/crypto/noble/NobleCryptoService.d.ts +13 -0
  275. package/lib/types/api/crypto/noble/NobleCryptoService.d.ts.map +1 -0
  276. package/lib/types/api/crypto/noble/NobleCryptoService.test.d.ts +2 -0
  277. package/lib/types/api/crypto/noble/NobleCryptoService.test.d.ts.map +1 -0
  278. package/lib/types/api/crypto/noble/NobleKey.d.ts +11 -0
  279. package/lib/types/api/crypto/noble/NobleKey.d.ts.map +1 -0
  280. package/lib/types/api/crypto/noble/NobleKey.test.d.ts +2 -0
  281. package/lib/types/api/crypto/noble/NobleKey.test.d.ts.map +1 -0
  282. package/lib/types/api/crypto/noble/NobleKeyPair.d.ts +18 -0
  283. package/lib/types/api/crypto/noble/NobleKeyPair.d.ts.map +1 -0
  284. package/lib/types/api/crypto/noble/NobleKeyPair.test.d.ts +2 -0
  285. package/lib/types/api/crypto/noble/NobleKeyPair.test.d.ts.map +1 -0
  286. package/lib/types/api/index.d.ts +10 -2
  287. package/lib/types/api/index.d.ts.map +1 -1
  288. package/lib/types/api/model/Env.d.ts +5 -0
  289. package/lib/types/api/model/Env.d.ts.map +1 -0
  290. package/lib/types/api/model/Errors.d.ts.map +1 -0
  291. package/lib/types/api/model/JWT.d.ts +9 -0
  292. package/lib/types/api/model/JWT.d.ts.map +1 -0
  293. package/lib/types/api/{app-binder/LKRPTypes.d.ts → model/Permissions.d.ts} +1 -19
  294. package/lib/types/api/model/Permissions.d.ts.map +1 -0
  295. package/lib/types/internal/DefaultLedgerKeyringProtocol.d.ts +6 -4
  296. package/lib/types/internal/DefaultLedgerKeyringProtocol.d.ts.map +1 -1
  297. package/lib/types/internal/app-binder/LedgerKeyringProtocolBinder.d.ts +7 -4
  298. package/lib/types/internal/app-binder/LedgerKeyringProtocolBinder.d.ts.map +1 -1
  299. package/lib/types/internal/app-binder/command/GetAppNameCommand.d.ts +4 -1
  300. package/lib/types/internal/app-binder/command/GetAppNameCommand.d.ts.map +1 -1
  301. package/lib/types/internal/app-binder/command/GetSeedIdCommand.d.ts +13 -1
  302. package/lib/types/internal/app-binder/command/GetSeedIdCommand.d.ts.map +1 -1
  303. package/lib/types/internal/app-binder/command/GetVersionCommand.d.ts +2 -1
  304. package/lib/types/internal/app-binder/command/GetVersionCommand.d.ts.map +1 -1
  305. package/lib/types/internal/app-binder/command/InitCommand.d.ts +4 -1
  306. package/lib/types/internal/app-binder/command/InitCommand.d.ts.map +1 -1
  307. package/lib/types/internal/app-binder/command/ParseBlockSignatureCommand.d.ts +4 -1
  308. package/lib/types/internal/app-binder/command/ParseBlockSignatureCommand.d.ts.map +1 -1
  309. package/lib/types/internal/app-binder/command/ParseStreamBlockCommand.d.ts +5 -1
  310. package/lib/types/internal/app-binder/command/ParseStreamBlockCommand.d.ts.map +1 -1
  311. package/lib/types/internal/app-binder/command/ParseStreamBlockHeader.d.ts +4 -1
  312. package/lib/types/internal/app-binder/command/ParseStreamBlockHeader.d.ts.map +1 -1
  313. package/lib/types/internal/app-binder/command/SetTrustedMemberCommand.d.ts +5 -1
  314. package/lib/types/internal/app-binder/command/SetTrustedMemberCommand.d.ts.map +1 -1
  315. package/lib/types/internal/app-binder/command/SignBlockHeader.d.ts +5 -1
  316. package/lib/types/internal/app-binder/command/SignBlockHeader.d.ts.map +1 -1
  317. package/lib/types/internal/app-binder/command/SignBlockSignatureCommand.d.ts +5 -1
  318. package/lib/types/internal/app-binder/command/SignBlockSignatureCommand.d.ts.map +1 -1
  319. package/lib/types/internal/app-binder/command/SignBlockSingleCommand.d.ts +4 -1
  320. package/lib/types/internal/app-binder/command/SignBlockSingleCommand.d.ts.map +1 -1
  321. package/lib/types/internal/app-binder/device-action/AddToTrustchainDeviceAction.d.ts +8 -4
  322. package/lib/types/internal/app-binder/device-action/AddToTrustchainDeviceAction.d.ts.map +1 -1
  323. package/lib/types/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.d.ts +5 -2
  324. package/lib/types/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.d.ts.map +1 -1
  325. package/lib/types/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.d.ts +5 -2
  326. package/lib/types/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.d.ts.map +1 -1
  327. package/lib/types/internal/app-binder/device-action/models/AuthenticateWithDeviceDeviceActionTypes.d.ts +5 -2
  328. package/lib/types/internal/app-binder/device-action/models/AuthenticateWithDeviceDeviceActionTypes.d.ts.map +1 -1
  329. package/lib/types/internal/app-binder/device-action/models/AuthenticateWithKeypairDeviceActionTypes.d.ts +5 -2
  330. package/lib/types/internal/app-binder/device-action/models/AuthenticateWithKeypairDeviceActionTypes.d.ts.map +1 -1
  331. package/lib/types/internal/app-binder/task/ExtractEncryptionKeyTask.d.ts +4 -7
  332. package/lib/types/internal/app-binder/task/ExtractEncryptionKeyTask.d.ts.map +1 -1
  333. package/lib/types/internal/app-binder/task/InitTask.d.ts +5 -3
  334. package/lib/types/internal/app-binder/task/InitTask.d.ts.map +1 -1
  335. package/lib/types/internal/app-binder/task/ParseStreamToDeviceTask.d.ts +1 -1
  336. package/lib/types/internal/app-binder/task/ParseStreamToDeviceTask.d.ts.map +1 -1
  337. package/lib/types/internal/app-binder/task/SignBlockTask.d.ts +11 -8
  338. package/lib/types/internal/app-binder/task/SignBlockTask.d.ts.map +1 -1
  339. package/lib/types/internal/app-binder/task/SignChallengeWithKeypairTask.d.ts +5 -3
  340. package/lib/types/internal/app-binder/task/SignChallengeWithKeypairTask.d.ts.map +1 -1
  341. package/lib/types/internal/app-binder/task/utils/TrustedProperties.d.ts +1 -1
  342. package/lib/types/internal/app-binder/task/utils/TrustedProperties.d.ts.map +1 -1
  343. package/lib/types/internal/di.d.ts +3 -1
  344. package/lib/types/internal/di.d.ts.map +1 -1
  345. package/lib/types/internal/externalTypes.d.ts +1 -0
  346. package/lib/types/internal/externalTypes.d.ts.map +1 -1
  347. package/lib/types/internal/lkrp-datasource/data/HttpLKRPDataSource.d.ts +2 -2
  348. package/lib/types/internal/lkrp-datasource/data/HttpLKRPDataSource.d.ts.map +1 -1
  349. package/lib/types/internal/lkrp-datasource/data/LKRPDataSource.d.ts +2 -2
  350. package/lib/types/internal/lkrp-datasource/data/LKRPDataSource.d.ts.map +1 -1
  351. package/lib/types/internal/use-cases/authentication/AuthenticateUseCase.d.ts +3 -2
  352. package/lib/types/internal/use-cases/authentication/AuthenticateUseCase.d.ts.map +1 -1
  353. package/lib/types/internal/use-cases/authentication/DecryptDataUseCase.d.ts +4 -1
  354. package/lib/types/internal/use-cases/authentication/DecryptDataUseCase.d.ts.map +1 -1
  355. package/lib/types/internal/use-cases/authentication/EncryptDataUseCase.d.ts +4 -1
  356. package/lib/types/internal/use-cases/authentication/EncryptDataUseCase.d.ts.map +1 -1
  357. package/lib/types/internal/utils/LKRPBlock.d.ts +1 -1
  358. package/lib/types/internal/utils/LKRPBlock.d.ts.map +1 -1
  359. package/lib/types/internal/utils/LKRPBlockStream.d.ts +4 -3
  360. package/lib/types/internal/utils/LKRPBlockStream.d.ts.map +1 -1
  361. package/lib/types/internal/utils/LKRPCommand.d.ts +1 -1
  362. package/lib/types/internal/utils/LKRPCommand.d.ts.map +1 -1
  363. package/lib/types/internal/utils/TLVParser.d.ts +1 -1
  364. package/lib/types/internal/utils/TLVParser.d.ts.map +1 -1
  365. package/lib/types/internal/utils/required.d.ts +1 -1
  366. package/lib/types/internal/utils/required.d.ts.map +1 -1
  367. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  368. package/package.json +5 -5
  369. package/lib/cjs/api/app-binder/GetAppNameCommandTypes.js +0 -2
  370. package/lib/cjs/api/app-binder/GetAppNameCommandTypes.js.map +0 -7
  371. package/lib/cjs/api/app-binder/GetSeedIdCommandTypes.js +0 -2
  372. package/lib/cjs/api/app-binder/GetSeedIdCommandTypes.js.map +0 -7
  373. package/lib/cjs/api/app-binder/InitCommandTypes.js +0 -2
  374. package/lib/cjs/api/app-binder/InitCommandTypes.js.map +0 -7
  375. package/lib/cjs/api/app-binder/KeypairFromBytes.js +0 -2
  376. package/lib/cjs/api/app-binder/KeypairFromBytes.js.map +0 -7
  377. package/lib/cjs/api/app-binder/LKRPTypes.js +0 -2
  378. package/lib/cjs/api/app-binder/LKRPTypes.js.map +0 -7
  379. package/lib/cjs/api/app-binder/ParseStreamBlockCommandCommandTypes.js +0 -2
  380. package/lib/cjs/api/app-binder/ParseStreamBlockCommandCommandTypes.js.map +0 -7
  381. package/lib/cjs/api/app-binder/ParseStreamBlockHeaderCommandTypes.js +0 -2
  382. package/lib/cjs/api/app-binder/ParseStreamBlockHeaderCommandTypes.js.map +0 -7
  383. package/lib/cjs/api/app-binder/ParseStreamBlockSignatureTypes.js +0 -2
  384. package/lib/cjs/api/app-binder/ParseStreamBlockSignatureTypes.js.map +0 -7
  385. package/lib/cjs/api/app-binder/SetTrustedMemberTypes.js +0 -2
  386. package/lib/cjs/api/app-binder/SetTrustedMemberTypes.js.map +0 -7
  387. package/lib/cjs/api/app-binder/SignBlockCommandTypes.js +0 -2
  388. package/lib/cjs/api/app-binder/SignBlockCommandTypes.js.map +0 -7
  389. package/lib/cjs/api/app-binder/SignBlockHeaderCommandTypes.js +0 -2
  390. package/lib/cjs/api/app-binder/SignBlockHeaderCommandTypes.js.map +0 -7
  391. package/lib/cjs/api/app-binder/SignBlockSignatureCommandTypes.js +0 -2
  392. package/lib/cjs/api/app-binder/SignBlockSignatureCommandTypes.js.map +0 -7
  393. package/lib/cjs/api/app-binder/SignBlockSingleCommandTypes.js +0 -2
  394. package/lib/cjs/api/app-binder/SignBlockSingleCommandTypes.js.map +0 -7
  395. package/lib/cjs/internal/utils/TLVBuilder.js +0 -2
  396. package/lib/cjs/internal/utils/TLVBuilder.js.map +0 -7
  397. package/lib/cjs/internal/utils/crypto.js +0 -2
  398. package/lib/cjs/internal/utils/crypto.js.map +0 -7
  399. package/lib/cjs/internal/utils/hex.js +0 -2
  400. package/lib/cjs/internal/utils/hex.js.map +0 -7
  401. package/lib/esm/api/app-binder/GetAppNameCommandTypes.js +0 -1
  402. package/lib/esm/api/app-binder/GetSeedIdCommandTypes.js +0 -1
  403. package/lib/esm/api/app-binder/GetSeedIdCommandTypes.js.map +0 -7
  404. package/lib/esm/api/app-binder/InitCommandTypes.js +0 -1
  405. package/lib/esm/api/app-binder/InitCommandTypes.js.map +0 -7
  406. package/lib/esm/api/app-binder/KeypairFromBytes.js +0 -2
  407. package/lib/esm/api/app-binder/KeypairFromBytes.js.map +0 -7
  408. package/lib/esm/api/app-binder/LKRPTypes.js +0 -2
  409. package/lib/esm/api/app-binder/LKRPTypes.js.map +0 -7
  410. package/lib/esm/api/app-binder/ParseStreamBlockCommandCommandTypes.js +0 -1
  411. package/lib/esm/api/app-binder/ParseStreamBlockCommandCommandTypes.js.map +0 -7
  412. package/lib/esm/api/app-binder/ParseStreamBlockHeaderCommandTypes.js +0 -1
  413. package/lib/esm/api/app-binder/ParseStreamBlockHeaderCommandTypes.js.map +0 -7
  414. package/lib/esm/api/app-binder/ParseStreamBlockSignatureTypes.js +0 -1
  415. package/lib/esm/api/app-binder/ParseStreamBlockSignatureTypes.js.map +0 -7
  416. package/lib/esm/api/app-binder/SetTrustedMemberTypes.js +0 -1
  417. package/lib/esm/api/app-binder/SetTrustedMemberTypes.js.map +0 -7
  418. package/lib/esm/api/app-binder/SignBlockCommandTypes.js +0 -1
  419. package/lib/esm/api/app-binder/SignBlockCommandTypes.js.map +0 -7
  420. package/lib/esm/api/app-binder/SignBlockHeaderCommandTypes.js +0 -1
  421. package/lib/esm/api/app-binder/SignBlockHeaderCommandTypes.js.map +0 -7
  422. package/lib/esm/api/app-binder/SignBlockSignatureCommandTypes.js +0 -1
  423. package/lib/esm/api/app-binder/SignBlockSignatureCommandTypes.js.map +0 -7
  424. package/lib/esm/api/app-binder/SignBlockSingleCommandTypes.js +0 -1
  425. package/lib/esm/api/app-binder/SignBlockSingleCommandTypes.js.map +0 -7
  426. package/lib/esm/internal/utils/TLVBuilder.js +0 -2
  427. package/lib/esm/internal/utils/TLVBuilder.js.map +0 -7
  428. package/lib/esm/internal/utils/crypto.js +0 -2
  429. package/lib/esm/internal/utils/crypto.js.map +0 -7
  430. package/lib/esm/internal/utils/hex.js +0 -2
  431. package/lib/esm/internal/utils/hex.js.map +0 -7
  432. package/lib/types/api/app-binder/Errors.d.ts.map +0 -1
  433. package/lib/types/api/app-binder/GetAppNameCommandTypes.d.ts +0 -5
  434. package/lib/types/api/app-binder/GetAppNameCommandTypes.d.ts.map +0 -1
  435. package/lib/types/api/app-binder/GetSeedIdCommandTypes.d.ts +0 -14
  436. package/lib/types/api/app-binder/GetSeedIdCommandTypes.d.ts.map +0 -1
  437. package/lib/types/api/app-binder/InitCommandTypes.d.ts +0 -5
  438. package/lib/types/api/app-binder/InitCommandTypes.d.ts.map +0 -1
  439. package/lib/types/api/app-binder/KeypairFromBytes.d.ts +0 -11
  440. package/lib/types/api/app-binder/KeypairFromBytes.d.ts.map +0 -1
  441. package/lib/types/api/app-binder/LKRPTypes.d.ts.map +0 -1
  442. package/lib/types/api/app-binder/ParseStreamBlockCommandCommandTypes.d.ts +0 -6
  443. package/lib/types/api/app-binder/ParseStreamBlockCommandCommandTypes.d.ts.map +0 -1
  444. package/lib/types/api/app-binder/ParseStreamBlockHeaderCommandTypes.d.ts +0 -5
  445. package/lib/types/api/app-binder/ParseStreamBlockHeaderCommandTypes.d.ts.map +0 -1
  446. package/lib/types/api/app-binder/ParseStreamBlockSignatureTypes.d.ts +0 -5
  447. package/lib/types/api/app-binder/ParseStreamBlockSignatureTypes.d.ts.map +0 -1
  448. package/lib/types/api/app-binder/SetTrustedMemberTypes.d.ts +0 -6
  449. package/lib/types/api/app-binder/SetTrustedMemberTypes.d.ts.map +0 -1
  450. package/lib/types/api/app-binder/SignBlockCommandTypes.d.ts +0 -9
  451. package/lib/types/api/app-binder/SignBlockCommandTypes.d.ts.map +0 -1
  452. package/lib/types/api/app-binder/SignBlockHeaderCommandTypes.d.ts +0 -6
  453. package/lib/types/api/app-binder/SignBlockHeaderCommandTypes.d.ts.map +0 -1
  454. package/lib/types/api/app-binder/SignBlockSignatureCommandTypes.d.ts +0 -6
  455. package/lib/types/api/app-binder/SignBlockSignatureCommandTypes.d.ts.map +0 -1
  456. package/lib/types/api/app-binder/SignBlockSingleCommandTypes.d.ts +0 -5
  457. package/lib/types/api/app-binder/SignBlockSingleCommandTypes.d.ts.map +0 -1
  458. package/lib/types/internal/utils/TLVBuilder.d.ts +0 -15
  459. package/lib/types/internal/utils/TLVBuilder.d.ts.map +0 -1
  460. package/lib/types/internal/utils/crypto.d.ts +0 -19
  461. package/lib/types/internal/utils/crypto.d.ts.map +0 -1
  462. package/lib/types/internal/utils/hex.d.ts +0 -3
  463. package/lib/types/internal/utils/hex.d.ts.map +0 -1
  464. /package/lib/cjs/api/{app-binder → model}/Errors.js +0 -0
  465. /package/lib/esm/api/{app-binder → model}/Errors.js +0 -0
  466. /package/lib/esm/api/{app-binder/GetAppNameCommandTypes.js.map → model/JWT.js.map} +0 -0
  467. /package/lib/types/api/{app-binder → model}/Errors.d.ts +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/SignBlockHeader.test.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n ApduResponse,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { describe, expect, it } from \"vitest\";\n\nimport {\n type SignBlockHeaderCommandArgs,\n type SignBlockHeaderCommandResponse,\n} from \"@api/app-binder/SignBlockHeaderCommandTypes\";\nimport { GeneralTags } from \"@internal/models/Tags\";\n\nimport {\n ISSUER_PLACEHOLDER_TLV,\n SignBlockHeaderCommand,\n} from \"./SignBlockHeader\";\n\nconst COMMAND_COUNT = 3;\nconst PARENT_BYTES = Uint8Array.from([0xf0, 0xca, 0xcc, 0x1a]);\nconst HEADER_BYTES = Uint8Array.from([\n ...[GeneralTags.Int, 1, 1], // version 1\n ...[GeneralTags.Hash, 4, ...PARENT_BYTES], // Parent hash\n ...ISSUER_PLACEHOLDER_TLV,\n ...[GeneralTags.Int, 1, COMMAND_COUNT], // command count\n]);\nconst TLV_VALUE = Uint8Array.from([0xf0, 0xca, 0xcc, 0x1a]);\nconst IV_TLV = Uint8Array.from([0x00, TLV_VALUE.length, ...TLV_VALUE]);\nconst ISSUER_TLV = Uint8Array.from([0x81, TLV_VALUE.length, ...TLV_VALUE]);\nconst FULL_TLV_PAYLOAD = new Uint8Array([...IV_TLV, ...ISSUER_TLV]);\n\ndescribe(\"SignBlockHeaderCommand\", () => {\n describe(\"getApdu()\", () => {\n it(\"should build the correct APDU for a parent hash and a commands count\", () => {\n // given\n const args: SignBlockHeaderCommandArgs = {\n parent: PARENT_BYTES,\n commandCount: COMMAND_COUNT,\n };\n const cmd = new SignBlockHeaderCommand(args);\n\n // when\n const apdu = cmd.getApdu();\n const expected = Uint8Array.from([\n 0xe0,\n 0x07,\n 0x00,\n 0x00,\n HEADER_BYTES.length,\n ...HEADER_BYTES,\n ]);\n\n // then\n expect(apdu.getRawApdu()).toEqual(expected);\n });\n });\n\n describe(\"parseResponse()\", () => {\n it(\"should return raw payload on success\", () => {\n // given\n const args: SignBlockHeaderCommandArgs = {\n parent: PARENT_BYTES,\n commandCount: COMMAND_COUNT,\n };\n const cmd = new SignBlockHeaderCommand(args);\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: FULL_TLV_PAYLOAD,\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(true);\n if (isSuccessCommandResult(result)) {\n const res: SignBlockHeaderCommandResponse = result.data;\n expect(res).toEqual(FULL_TLV_PAYLOAD);\n }\n });\n\n it(\"should map SW errors to CommandResult errors\", () => {\n // given\n const args: SignBlockHeaderCommandArgs = {\n parent: PARENT_BYTES,\n commandCount: COMMAND_COUNT,\n };\n const cmd = new SignBlockHeaderCommand(args);\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x6a, 0x86]),\n data: new Uint8Array(),\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(false);\n if (!isSuccessCommandResult(result)) {\n expect((result.error as any).errorCode).toBe(\"6a86\");\n }\n });\n\n it(\"should error if no data is returned\", () => {\n // given\n const args: SignBlockHeaderCommandArgs = {\n parent: PARENT_BYTES,\n commandCount: COMMAND_COUNT,\n };\n const cmd = new SignBlockHeaderCommand(args);\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array(),\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(true);\n if (isSuccessCommandResult(result)) {\n expect(result.data).toEqual(new Uint8Array([]));\n }\n });\n });\n});\n"],
5
- "mappings": "aAEA,IAAAA,EAGO,2CACPC,EAAqC,kBAMrCC,EAA4B,iCAE5BC,EAGO,6BAEP,MAAMC,EAAgB,EAChBC,EAAe,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAI,CAAC,EACvDC,EAAe,WAAW,KAAK,CAC/B,cAAY,IAAK,EAAG,EACpB,cAAY,KAAM,EAAG,GAAGD,EAC5B,GAAG,yBACC,cAAY,IAAK,EAAGD,CAC1B,CAAC,EACKG,EAAY,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAI,CAAC,EACpDC,EAAS,WAAW,KAAK,CAAC,EAAMD,EAAU,OAAQ,GAAGA,CAAS,CAAC,EAC/DE,EAAa,WAAW,KAAK,CAAC,IAAMF,EAAU,OAAQ,GAAGA,CAAS,CAAC,EACnEG,EAAmB,IAAI,WAAW,CAAC,GAAGF,EAAQ,GAAGC,CAAU,CAAC,KAElE,YAAS,yBAA0B,IAAM,IACvC,YAAS,YAAa,IAAM,IAC1B,MAAG,uEAAwE,IAAM,CAE/E,MAAME,EAAmC,CACvC,OAAQN,EACR,aAAcD,CAChB,EAIMQ,EAHM,IAAI,yBAAuBD,CAAI,EAG1B,QAAQ,EACnBE,EAAW,WAAW,KAAK,CAC/B,IACA,EACA,EACA,EACAP,EAAa,OACb,GAAGA,CACL,CAAC,KAGD,UAAOM,EAAK,WAAW,CAAC,EAAE,QAAQC,CAAQ,CAC5C,CAAC,CACH,CAAC,KAED,YAAS,kBAAmB,IAAM,IAChC,MAAG,uCAAwC,IAAM,CAE/C,MAAMF,EAAmC,CACvC,OAAQN,EACR,aAAcD,CAChB,EACMU,EAAM,IAAI,yBAAuBH,CAAI,EACrCI,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAML,CACR,CAAC,EAGKM,EAASF,EAAI,cAAcC,CAAQ,EAIzC,MADA,aAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAI,KAC5C,0BAAuBA,CAAM,EAAG,CAClC,MAAMC,EAAsCD,EAAO,QACnD,UAAOC,CAAG,EAAE,QAAQP,CAAgB,CACtC,CACF,CAAC,KAED,MAAG,+CAAgD,IAAM,CAEvD,MAAMC,EAAmC,CACvC,OAAQN,EACR,aAAcD,CAChB,EACMU,EAAM,IAAI,yBAAuBH,CAAI,EACrCI,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,GAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKC,EAASF,EAAI,cAAcC,CAAQ,KAGzC,aAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAK,KAC5C,0BAAuBA,CAAM,MAChC,UAAQA,EAAO,MAAc,SAAS,EAAE,KAAK,MAAM,CAEvD,CAAC,KAED,MAAG,sCAAuC,IAAM,CAE9C,MAAML,EAAmC,CACvC,OAAQN,EACR,aAAcD,CAChB,EACMU,EAAM,IAAI,yBAAuBH,CAAI,EACrCI,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKC,EAASF,EAAI,cAAcC,CAAQ,KAGzC,aAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAI,KAC5C,0BAAuBA,CAAM,MAC/B,UAAOA,EAAO,IAAI,EAAE,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,CAElD,CAAC,CACH,CAAC,CACH,CAAC",
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n ApduResponse,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { describe, expect, it } from \"vitest\";\n\nimport { GeneralTags } from \"@internal/models/Tags\";\n\nimport {\n ISSUER_PLACEHOLDER_TLV,\n SignBlockHeaderCommand,\n type SignBlockHeaderCommandArgs,\n type SignBlockHeaderCommandResponse,\n} from \"./SignBlockHeader\";\n\nconst COMMAND_COUNT = 3;\nconst PARENT_BYTES = Uint8Array.from([0xf0, 0xca, 0xcc, 0x1a]);\nconst HEADER_BYTES = Uint8Array.from([\n ...[GeneralTags.Int, 1, 1], // version 1\n ...[GeneralTags.Hash, 4, ...PARENT_BYTES], // Parent hash\n ...ISSUER_PLACEHOLDER_TLV,\n ...[GeneralTags.Int, 1, COMMAND_COUNT], // command count\n]);\nconst TLV_VALUE = Uint8Array.from([0xf0, 0xca, 0xcc, 0x1a]);\nconst IV_TLV = Uint8Array.from([0x00, TLV_VALUE.length, ...TLV_VALUE]);\nconst ISSUER_TLV = Uint8Array.from([0x81, TLV_VALUE.length, ...TLV_VALUE]);\nconst FULL_TLV_PAYLOAD = new Uint8Array([...IV_TLV, ...ISSUER_TLV]);\n\ndescribe(\"SignBlockHeaderCommand\", () => {\n describe(\"getApdu()\", () => {\n it(\"should build the correct APDU for a parent hash and a commands count\", () => {\n // given\n const args: SignBlockHeaderCommandArgs = {\n parent: PARENT_BYTES,\n commandCount: COMMAND_COUNT,\n };\n const cmd = new SignBlockHeaderCommand(args);\n\n // when\n const apdu = cmd.getApdu();\n const expected = Uint8Array.from([\n 0xe0,\n 0x07,\n 0x00,\n 0x00,\n HEADER_BYTES.length,\n ...HEADER_BYTES,\n ]);\n\n // then\n expect(apdu.getRawApdu()).toEqual(expected);\n });\n });\n\n describe(\"parseResponse()\", () => {\n it(\"should return raw payload on success\", () => {\n // given\n const args: SignBlockHeaderCommandArgs = {\n parent: PARENT_BYTES,\n commandCount: COMMAND_COUNT,\n };\n const cmd = new SignBlockHeaderCommand(args);\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: FULL_TLV_PAYLOAD,\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(true);\n if (isSuccessCommandResult(result)) {\n const res: SignBlockHeaderCommandResponse = result.data;\n expect(res).toEqual(FULL_TLV_PAYLOAD);\n }\n });\n\n it(\"should map SW errors to CommandResult errors\", () => {\n // given\n const args: SignBlockHeaderCommandArgs = {\n parent: PARENT_BYTES,\n commandCount: COMMAND_COUNT,\n };\n const cmd = new SignBlockHeaderCommand(args);\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x6a, 0x86]),\n data: new Uint8Array(),\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(false);\n if (!isSuccessCommandResult(result)) {\n expect((result.error as any).errorCode).toBe(\"6a86\");\n }\n });\n\n it(\"should error if no data is returned\", () => {\n // given\n const args: SignBlockHeaderCommandArgs = {\n parent: PARENT_BYTES,\n commandCount: COMMAND_COUNT,\n };\n const cmd = new SignBlockHeaderCommand(args);\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array(),\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(true);\n if (isSuccessCommandResult(result)) {\n expect(result.data).toEqual(new Uint8Array([]));\n }\n });\n });\n});\n"],
5
+ "mappings": "aAEA,IAAAA,EAGO,2CACPC,EAAqC,kBAErCC,EAA4B,iCAE5BC,EAKO,6BAEP,MAAMC,EAAgB,EAChBC,EAAe,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAI,CAAC,EACvDC,EAAe,WAAW,KAAK,CAC/B,cAAY,IAAK,EAAG,EACpB,cAAY,KAAM,EAAG,GAAGD,EAC5B,GAAG,yBACC,cAAY,IAAK,EAAGD,CAC1B,CAAC,EACKG,EAAY,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAI,CAAC,EACpDC,EAAS,WAAW,KAAK,CAAC,EAAMD,EAAU,OAAQ,GAAGA,CAAS,CAAC,EAC/DE,EAAa,WAAW,KAAK,CAAC,IAAMF,EAAU,OAAQ,GAAGA,CAAS,CAAC,EACnEG,EAAmB,IAAI,WAAW,CAAC,GAAGF,EAAQ,GAAGC,CAAU,CAAC,KAElE,YAAS,yBAA0B,IAAM,IACvC,YAAS,YAAa,IAAM,IAC1B,MAAG,uEAAwE,IAAM,CAE/E,MAAME,EAAmC,CACvC,OAAQN,EACR,aAAcD,CAChB,EAIMQ,EAHM,IAAI,yBAAuBD,CAAI,EAG1B,QAAQ,EACnBE,EAAW,WAAW,KAAK,CAC/B,IACA,EACA,EACA,EACAP,EAAa,OACb,GAAGA,CACL,CAAC,KAGD,UAAOM,EAAK,WAAW,CAAC,EAAE,QAAQC,CAAQ,CAC5C,CAAC,CACH,CAAC,KAED,YAAS,kBAAmB,IAAM,IAChC,MAAG,uCAAwC,IAAM,CAE/C,MAAMF,EAAmC,CACvC,OAAQN,EACR,aAAcD,CAChB,EACMU,EAAM,IAAI,yBAAuBH,CAAI,EACrCI,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAML,CACR,CAAC,EAGKM,EAASF,EAAI,cAAcC,CAAQ,EAIzC,MADA,aAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAI,KAC5C,0BAAuBA,CAAM,EAAG,CAClC,MAAMC,EAAsCD,EAAO,QACnD,UAAOC,CAAG,EAAE,QAAQP,CAAgB,CACtC,CACF,CAAC,KAED,MAAG,+CAAgD,IAAM,CAEvD,MAAMC,EAAmC,CACvC,OAAQN,EACR,aAAcD,CAChB,EACMU,EAAM,IAAI,yBAAuBH,CAAI,EACrCI,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,GAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKC,EAASF,EAAI,cAAcC,CAAQ,KAGzC,aAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAK,KAC5C,0BAAuBA,CAAM,MAChC,UAAQA,EAAO,MAAc,SAAS,EAAE,KAAK,MAAM,CAEvD,CAAC,KAED,MAAG,sCAAuC,IAAM,CAE9C,MAAML,EAAmC,CACvC,OAAQN,EACR,aAAcD,CAChB,EACMU,EAAM,IAAI,yBAAuBH,CAAI,EACrCI,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKC,EAASF,EAAI,cAAcC,CAAQ,KAGzC,aAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAI,KAC5C,0BAAuBA,CAAM,MAC/B,UAAOA,EAAO,IAAI,EAAE,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,CAElD,CAAC,CACH,CAAC,CACH,CAAC",
6
6
  "names": ["import_device_management_kit", "import_vitest", "import_Tags", "import_SignBlockHeader", "COMMAND_COUNT", "PARENT_BYTES", "HEADER_BYTES", "TLV_VALUE", "IV_TLV", "ISSUER_TLV", "FULL_TLV_PAYLOAD", "args", "apdu", "expected", "cmd", "response", "result", "res"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var d=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var C=(n,r)=>{for(var t in r)d(n,t,{get:r[t],enumerable:!0})},R=(n,r,t,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of y(r))!S.call(n,o)&&o!==t&&d(n,o,{get:()=>r[o],enumerable:!(s=c(r,o))||s.enumerable});return n};var f=n=>R(d({},"__esModule",{value:!0}),n);var B={};C(B,{SignBlockSignatureCommand:()=>E});module.exports=f(B);var e=require("@ledgerhq/device-management-kit"),m=require("@ledgerhq/signer-utils"),l=require("purify-ts"),a=require("./utils/ledgerKeyringProtocolErrors");class E{errorHelper=new m.CommandErrorHelper(a.LEDGER_SYNC_ERRORS,a.LedgerKeyringProtocolErrorFactory);constructor(){}getApdu(){return new e.ApduBuilder({cla:224,ins:7,p1:2,p2:0}).build()}parseResponse(r){return l.Maybe.fromNullable(this.errorHelper.getError(r)).orDefaultLazy(()=>{const t=new e.ApduParser(r),s=t.getUnparsedRemainingLength(),o=t.extractFieldByLength(s);if(!o)return(0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("No data returned by SignBlockSignatureCommand")});if(o.length<2)return(0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("Invalid response: missing signature length or reserved byte")});const g=o[0];if(g===void 0)return(0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("Invalid response: unable to read signature length")});const i=g;if(o.length<2+i)return(0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("Signature length out of bounds")});const u=o.slice(1,1+i),p=o.slice(1+i+1);return(0,e.CommandResultFactory)({data:{signature:u,deviceSessionKey:p}})})}}0&&(module.exports={SignBlockSignatureCommand});
1
+ "use strict";var d=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var C=(o,r)=>{for(var t in r)d(o,t,{get:r[t],enumerable:!0})},R=(o,r,t,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of y(r))!S.call(o,n)&&n!==t&&d(o,n,{get:()=>r[n],enumerable:!(i=c(r,n))||i.enumerable});return o};var f=o=>R(d({},"__esModule",{value:!0}),o);var E={};C(E,{SignBlockSignatureCommand:()=>A});module.exports=f(E);var e=require("@ledgerhq/device-management-kit"),m=require("@ledgerhq/signer-utils"),l=require("purify-ts"),s=require("./utils/ledgerKeyringProtocolErrors");class A{errorHelper=new m.CommandErrorHelper(s.LEDGER_SYNC_ERRORS,s.LedgerKeyringProtocolErrorFactory);constructor(){}getApdu(){return new e.ApduBuilder({cla:224,ins:7,p1:2,p2:0}).build()}parseResponse(r){return l.Maybe.fromNullable(this.errorHelper.getError(r)).orDefaultLazy(()=>{const t=new e.ApduParser(r),i=t.getUnparsedRemainingLength(),n=t.extractFieldByLength(i);if(!n)return(0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("No data returned by SignBlockSignatureCommand")});if(n.length<2)return(0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("Invalid response: missing signature length or reserved byte")});const g=n[0];if(g===void 0)return(0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("Invalid response: unable to read signature length")});const a=g;if(n.length<2+a)return(0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("Signature length out of bounds")});const u=n.slice(1,1+a),p=n.slice(1+a+1);return(0,e.CommandResultFactory)({data:{signature:u,deviceSessionKey:p}})})}}0&&(module.exports={SignBlockSignatureCommand});
2
2
  //# sourceMappingURL=SignBlockSignatureCommand.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/SignBlockSignatureCommand.ts"],
4
- "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n type SignBlockSignatureCommandArgs,\n type SignBlockSignatureCommandResponse,\n} from \"@api/app-binder/SignBlockSignatureCommandTypes\";\n\nimport {\n LEDGER_SYNC_ERRORS,\n type LedgerKeyringProtocolErrorCodes,\n LedgerKeyringProtocolErrorFactory,\n} from \"./utils/ledgerKeyringProtocolErrors\";\n\nexport class SignBlockSignatureCommand\n implements\n Command<\n SignBlockSignatureCommandResponse,\n SignBlockSignatureCommandArgs,\n LedgerKeyringProtocolErrorCodes\n >\n{\n private readonly errorHelper = new CommandErrorHelper<\n SignBlockSignatureCommandResponse,\n LedgerKeyringProtocolErrorCodes\n >(LEDGER_SYNC_ERRORS, LedgerKeyringProtocolErrorFactory);\n\n constructor() {}\n\n getApdu(): Apdu {\n return new ApduBuilder({\n cla: 0xe0,\n ins: 0x07,\n p1: 0x02,\n p2: 0x00,\n }).build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<\n SignBlockSignatureCommandResponse,\n LedgerKeyringProtocolErrorCodes\n > {\n return Maybe.fromNullable(\n this.errorHelper.getError(apduResponse),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(apduResponse);\n const rem = parser.getUnparsedRemainingLength();\n const data = parser.extractFieldByLength(rem);\n if (!data) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"No data returned by SignBlockSignatureCommand\",\n ),\n });\n }\n\n if (data.length < 2) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"Invalid response: missing signature length or reserved byte\",\n ),\n });\n }\n\n const raw = data[0];\n if (raw === undefined) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"Invalid response: unable to read signature length\",\n ),\n });\n }\n\n const sigLen = raw;\n if (data.length < 2 + sigLen) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Signature length out of bounds\"),\n });\n }\n\n const signature = data.slice(1, 1 + sigLen);\n const deviceSessionKey = data.slice(1 + sigLen + 1);\n\n return CommandResultFactory({ data: { signature, deviceSessionKey } });\n });\n }\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,+BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EASO,2CACPC,EAAmC,kCACnCC,EAAsB,qBAOtBC,EAIO,+CAEA,MAAML,CAOb,CACmB,YAAc,IAAI,qBAGjC,qBAAoB,mCAAiC,EAEvD,aAAc,CAAC,CAEf,SAAgB,CACd,OAAO,IAAI,cAAY,CACrB,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,CAAC,EAAE,MAAM,CACX,CAEA,cACEM,EAIA,CACA,OAAO,QAAM,aACX,KAAK,YAAY,SAASA,CAAY,CACxC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAS,IAAI,aAAWD,CAAY,EACpCE,EAAMD,EAAO,2BAA2B,EACxCE,EAAOF,EAAO,qBAAqBC,CAAG,EAC5C,GAAI,CAACC,EACH,SAAO,wBAAqB,CAC1B,MAAO,IAAI,yBACT,+CACF,CACF,CAAC,EAGH,GAAIA,EAAK,OAAS,EAChB,SAAO,wBAAqB,CAC1B,MAAO,IAAI,yBACT,6DACF,CACF,CAAC,EAGH,MAAMC,EAAMD,EAAK,CAAC,EAClB,GAAIC,IAAQ,OACV,SAAO,wBAAqB,CAC1B,MAAO,IAAI,yBACT,mDACF,CACF,CAAC,EAGH,MAAMC,EAASD,EACf,GAAID,EAAK,OAAS,EAAIE,EACpB,SAAO,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,gCAAgC,CACpE,CAAC,EAGH,MAAMC,EAAYH,EAAK,MAAM,EAAG,EAAIE,CAAM,EACpCE,EAAmBJ,EAAK,MAAM,EAAIE,EAAS,CAAC,EAElD,SAAO,wBAAqB,CAAE,KAAM,CAAE,UAAAC,EAAW,iBAAAC,CAAiB,CAAE,CAAC,CACvE,CAAC,CACH,CACF",
4
+ "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n LEDGER_SYNC_ERRORS,\n type LedgerKeyringProtocolErrorCodes,\n LedgerKeyringProtocolErrorFactory,\n} from \"./utils/ledgerKeyringProtocolErrors\";\n\nexport type SignBlockSignatureCommandArgs = Record<string, never>;\n\nexport interface SignBlockSignatureCommandResponse {\n signature: Uint8Array;\n deviceSessionKey: Uint8Array;\n}\n\nexport class SignBlockSignatureCommand\n implements\n Command<\n SignBlockSignatureCommandResponse,\n SignBlockSignatureCommandArgs,\n LedgerKeyringProtocolErrorCodes\n >\n{\n private readonly errorHelper = new CommandErrorHelper<\n SignBlockSignatureCommandResponse,\n LedgerKeyringProtocolErrorCodes\n >(LEDGER_SYNC_ERRORS, LedgerKeyringProtocolErrorFactory);\n\n constructor() {}\n\n getApdu(): Apdu {\n return new ApduBuilder({\n cla: 0xe0,\n ins: 0x07,\n p1: 0x02,\n p2: 0x00,\n }).build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<\n SignBlockSignatureCommandResponse,\n LedgerKeyringProtocolErrorCodes\n > {\n return Maybe.fromNullable(\n this.errorHelper.getError(apduResponse),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(apduResponse);\n const rem = parser.getUnparsedRemainingLength();\n const data = parser.extractFieldByLength(rem);\n if (!data) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"No data returned by SignBlockSignatureCommand\",\n ),\n });\n }\n\n if (data.length < 2) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"Invalid response: missing signature length or reserved byte\",\n ),\n });\n }\n\n const raw = data[0];\n if (raw === undefined) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"Invalid response: unable to read signature length\",\n ),\n });\n }\n\n const sigLen = raw;\n if (data.length < 2 + sigLen) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Signature length out of bounds\"),\n });\n }\n\n const signature = data.slice(1, 1 + sigLen);\n const deviceSessionKey = data.slice(1 + sigLen + 1);\n\n return CommandResultFactory({ data: { signature, deviceSessionKey } });\n });\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,+BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EASO,2CACPC,EAAmC,kCACnCC,EAAsB,qBAEtBC,EAIO,+CASA,MAAML,CAOb,CACmB,YAAc,IAAI,qBAGjC,qBAAoB,mCAAiC,EAEvD,aAAc,CAAC,CAEf,SAAgB,CACd,OAAO,IAAI,cAAY,CACrB,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,CAAC,EAAE,MAAM,CACX,CAEA,cACEM,EAIA,CACA,OAAO,QAAM,aACX,KAAK,YAAY,SAASA,CAAY,CACxC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAS,IAAI,aAAWD,CAAY,EACpCE,EAAMD,EAAO,2BAA2B,EACxCE,EAAOF,EAAO,qBAAqBC,CAAG,EAC5C,GAAI,CAACC,EACH,SAAO,wBAAqB,CAC1B,MAAO,IAAI,yBACT,+CACF,CACF,CAAC,EAGH,GAAIA,EAAK,OAAS,EAChB,SAAO,wBAAqB,CAC1B,MAAO,IAAI,yBACT,6DACF,CACF,CAAC,EAGH,MAAMC,EAAMD,EAAK,CAAC,EAClB,GAAIC,IAAQ,OACV,SAAO,wBAAqB,CAC1B,MAAO,IAAI,yBACT,mDACF,CACF,CAAC,EAGH,MAAMC,EAASD,EACf,GAAID,EAAK,OAAS,EAAIE,EACpB,SAAO,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,gCAAgC,CACpE,CAAC,EAGH,MAAMC,EAAYH,EAAK,MAAM,EAAG,EAAIE,CAAM,EACpCE,EAAmBJ,EAAK,MAAM,EAAIE,EAAS,CAAC,EAElD,SAAO,wBAAqB,CAAE,KAAM,CAAE,UAAAC,EAAW,iBAAAC,CAAiB,CAAE,CAAC,CACvE,CAAC,CACH,CACF",
6
6
  "names": ["SignBlockSignatureCommand_exports", "__export", "SignBlockSignatureCommand", "__toCommonJS", "import_device_management_kit", "import_signer_utils", "import_purify_ts", "import_ledgerKeyringProtocolErrors", "apduResponse", "parser", "rem", "data", "raw", "sigLen", "signature", "deviceSessionKey"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var r=require("@ledgerhq/device-management-kit"),e=require("vitest"),i=require("./SignBlockSignatureCommand");const a=Uint8Array.from([240,202,204,26]);(0,e.describe)("SignBlockSignatureCommand",()=>{(0,e.describe)("getApdu()",()=>{(0,e.it)("should build the correct APDU for finalize-signature",()=>{const s=new i.SignBlockSignatureCommand().getApdu();(0,e.expect)(s.getRawApdu()).toEqual(Uint8Array.from([224,7,2,0,0]))})}),(0,e.describe)("parseResponse()",()=>{(0,e.it)("should return signature and sessionKey on success",()=>{const t=new Uint8Array([a.length,...a,a.length,...a]),s=new i.SignBlockSignatureCommand,o=new r.ApduResponse({statusCode:Uint8Array.from([144,0]),data:t}),n=s.parseResponse(o);if((0,e.expect)((0,r.isSuccessCommandResult)(n)).toBe(!0),(0,r.isSuccessCommandResult)(n)){const d=n.data;(0,e.expect)(d.signature).toEqual(a),(0,e.expect)(d.deviceSessionKey).toEqual(a)}}),(0,e.it)("should map SW errors to CommandResult errors",()=>{const t=new i.SignBlockSignatureCommand,s=new r.ApduResponse({statusCode:Uint8Array.from([106,134]),data:new Uint8Array}),o=t.parseResponse(s);(0,e.expect)((0,r.isSuccessCommandResult)(o)).toBe(!1),(0,r.isSuccessCommandResult)(o)||(0,e.expect)(o.error.errorCode).toBe("6a86")}),(0,e.it)("should error if missing length or reserved byte",()=>{const t=new i.SignBlockSignatureCommand,s=new r.ApduResponse({statusCode:Uint8Array.from([144,0]),data:new Uint8Array}),o=t.parseResponse(s);(0,e.expect)((0,r.isSuccessCommandResult)(o)).toBe(!1),(0,r.isSuccessCommandResult)(o)||((0,e.expect)(o.error._tag).toBe("InvalidStatusWordError"),(0,e.expect)(o.error.originalError.message).toBe("Invalid response: missing signature length or reserved byte"))}),(0,e.it)("should error if signature length out of bounds",()=>{const t=Uint8Array.from([5,170,187]),s=new i.SignBlockSignatureCommand,o=new r.ApduResponse({statusCode:Uint8Array.from([144,0]),data:t}),n=s.parseResponse(o);(0,e.expect)((0,r.isSuccessCommandResult)(n)).toBe(!1),(0,r.isSuccessCommandResult)(n)||((0,e.expect)(n.error._tag).toBe("InvalidStatusWordError"),(0,e.expect)(n.error.originalError.message).toBe("Signature length out of bounds"))})})});
1
+ "use strict";var r=require("@ledgerhq/device-management-kit"),e=require("vitest"),i=require("./SignBlockSignatureCommand");const a=Uint8Array.from([240,202,204,26]);(0,e.describe)("SignBlockSignatureCommand",()=>{(0,e.describe)("getApdu()",()=>{(0,e.it)("should build the correct APDU for finalize-signature",()=>{const o=new i.SignBlockSignatureCommand().getApdu();(0,e.expect)(o.getRawApdu()).toEqual(Uint8Array.from([224,7,2,0,0]))})}),(0,e.describe)("parseResponse()",()=>{(0,e.it)("should return signature and sessionKey on success",()=>{const n=new Uint8Array([a.length,...a,a.length,...a]),o=new i.SignBlockSignatureCommand,s=new r.ApduResponse({statusCode:Uint8Array.from([144,0]),data:n}),t=o.parseResponse(s);if((0,e.expect)((0,r.isSuccessCommandResult)(t)).toBe(!0),(0,r.isSuccessCommandResult)(t)){const d=t.data;(0,e.expect)(d.signature).toEqual(a),(0,e.expect)(d.deviceSessionKey).toEqual(a)}}),(0,e.it)("should map SW errors to CommandResult errors",()=>{const n=new i.SignBlockSignatureCommand,o=new r.ApduResponse({statusCode:Uint8Array.from([106,134]),data:new Uint8Array}),s=n.parseResponse(o);(0,e.expect)((0,r.isSuccessCommandResult)(s)).toBe(!1),(0,r.isSuccessCommandResult)(s)||(0,e.expect)(s.error.errorCode).toBe("6a86")}),(0,e.it)("should error if missing length or reserved byte",()=>{const n=new i.SignBlockSignatureCommand,o=new r.ApduResponse({statusCode:Uint8Array.from([144,0]),data:new Uint8Array}),s=n.parseResponse(o);(0,e.expect)((0,r.isSuccessCommandResult)(s)).toBe(!1),(0,r.isSuccessCommandResult)(s)||((0,e.expect)(s.error._tag).toBe("InvalidStatusWordError"),(0,e.expect)(s.error.originalError.message).toBe("Invalid response: missing signature length or reserved byte"))}),(0,e.it)("should error if signature length out of bounds",()=>{const n=Uint8Array.from([5,170,187]),o=new i.SignBlockSignatureCommand,s=new r.ApduResponse({statusCode:Uint8Array.from([144,0]),data:n}),t=o.parseResponse(s);(0,e.expect)((0,r.isSuccessCommandResult)(t)).toBe(!1),(0,r.isSuccessCommandResult)(t)||((0,e.expect)(t.error._tag).toBe("InvalidStatusWordError"),(0,e.expect)(t.error.originalError.message).toBe("Signature length out of bounds"))})})});
2
2
  //# sourceMappingURL=SignBlockSignatureCommand.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/SignBlockSignatureCommand.test.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport {\n ApduResponse,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { describe, expect, it } from \"vitest\";\n\nimport { type SignBlockSignatureCommandResponse } from \"@api/app-binder/SignBlockSignatureCommandTypes\";\n\nimport { SignBlockSignatureCommand } from \"./SignBlockSignatureCommand\";\n\nconst SIG_AND_KEY = Uint8Array.from([0xf0, 0xca, 0xcc, 0x1a]);\n\ndescribe(\"SignBlockSignatureCommand\", () => {\n describe(\"getApdu()\", () => {\n it(\"should build the correct APDU for finalize-signature\", () => {\n const cmd = new SignBlockSignatureCommand();\n const apdu = cmd.getApdu();\n expect(apdu.getRawApdu()).toEqual(\n Uint8Array.from([0xe0, 0x07, 0x02, 0x00, 0x00]),\n );\n });\n });\n\n describe(\"parseResponse()\", () => {\n it(\"should return signature and sessionKey on success\", () => {\n // given\n const payload = new Uint8Array([\n SIG_AND_KEY.length,\n ...SIG_AND_KEY,\n SIG_AND_KEY.length,\n ...SIG_AND_KEY,\n ]);\n const cmd = new SignBlockSignatureCommand();\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: payload,\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(true);\n if (isSuccessCommandResult(result)) {\n const res: SignBlockSignatureCommandResponse = result.data;\n expect(res.signature).toEqual(SIG_AND_KEY);\n expect(res.deviceSessionKey).toEqual(SIG_AND_KEY);\n }\n });\n\n it(\"should map SW errors to CommandResult errors\", () => {\n // given\n const cmd = new SignBlockSignatureCommand();\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x6a, 0x86]),\n data: new Uint8Array(),\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(false);\n if (!isSuccessCommandResult(result)) {\n expect((result.error as any).errorCode).toBe(\"6a86\");\n }\n });\n\n it(\"should error if missing length or reserved byte\", () => {\n // given\n const cmd = new SignBlockSignatureCommand();\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array(),\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(false);\n if (!isSuccessCommandResult(result)) {\n expect((result.error as any)._tag).toBe(\"InvalidStatusWordError\");\n expect((result.error as any).originalError.message).toBe(\n \"Invalid response: missing signature length or reserved byte\",\n );\n }\n });\n\n it(\"should error if signature length out of bounds\", () => {\n // given\n const bad = Uint8Array.from([5, 0xaa, 0xbb]);\n const cmd = new SignBlockSignatureCommand();\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: bad,\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(false);\n if (!isSuccessCommandResult(result)) {\n expect((result.error as any)._tag).toBe(\"InvalidStatusWordError\");\n expect((result.error as any).originalError.message).toBe(\n \"Signature length out of bounds\",\n );\n }\n });\n });\n});\n"],
5
- "mappings": "aAGA,IAAAA,EAGO,2CACPC,EAAqC,kBAIrCC,EAA0C,uCAE1C,MAAMC,EAAc,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAI,CAAC,KAE5D,YAAS,4BAA6B,IAAM,IAC1C,YAAS,YAAa,IAAM,IAC1B,MAAG,uDAAwD,IAAM,CAE/D,MAAMC,EADM,IAAI,4BAA0B,EACzB,QAAQ,KACzB,UAAOA,EAAK,WAAW,CAAC,EAAE,QACxB,WAAW,KAAK,CAAC,IAAM,EAAM,EAAM,EAAM,CAAI,CAAC,CAChD,CACF,CAAC,CACH,CAAC,KAED,YAAS,kBAAmB,IAAM,IAChC,MAAG,oDAAqD,IAAM,CAE5D,MAAMC,EAAU,IAAI,WAAW,CAC7BF,EAAY,OACZ,GAAGA,EACHA,EAAY,OACZ,GAAGA,CACL,CAAC,EACKG,EAAM,IAAI,4BACVC,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMF,CACR,CAAC,EAGKG,EAASF,EAAI,cAAcC,CAAQ,EAIzC,MADA,aAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAI,KAC5C,0BAAuBA,CAAM,EAAG,CAClC,MAAMC,EAAyCD,EAAO,QACtD,UAAOC,EAAI,SAAS,EAAE,QAAQN,CAAW,KACzC,UAAOM,EAAI,gBAAgB,EAAE,QAAQN,CAAW,CAClD,CACF,CAAC,KAED,MAAG,+CAAgD,IAAM,CAEvD,MAAMG,EAAM,IAAI,4BACVC,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,GAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKC,EAASF,EAAI,cAAcC,CAAQ,KAGzC,aAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAK,KAC5C,0BAAuBA,CAAM,MAChC,UAAQA,EAAO,MAAc,SAAS,EAAE,KAAK,MAAM,CAEvD,CAAC,KAED,MAAG,kDAAmD,IAAM,CAE1D,MAAMF,EAAM,IAAI,4BACVC,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKC,EAASF,EAAI,cAAcC,CAAQ,KAGzC,aAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAK,KAC5C,0BAAuBA,CAAM,OAChC,UAAQA,EAAO,MAAc,IAAI,EAAE,KAAK,wBAAwB,KAChE,UAAQA,EAAO,MAAc,cAAc,OAAO,EAAE,KAClD,6DACF,EAEJ,CAAC,KAED,MAAG,iDAAkD,IAAM,CAEzD,MAAME,EAAM,WAAW,KAAK,CAAC,EAAG,IAAM,GAAI,CAAC,EACrCJ,EAAM,IAAI,4BACVC,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMG,CACR,CAAC,EAGKF,EAASF,EAAI,cAAcC,CAAQ,KAGzC,aAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAK,KAC5C,0BAAuBA,CAAM,OAChC,UAAQA,EAAO,MAAc,IAAI,EAAE,KAAK,wBAAwB,KAChE,UAAQA,EAAO,MAAc,cAAc,OAAO,EAAE,KAClD,gCACF,EAEJ,CAAC,CACH,CAAC,CACH,CAAC",
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport {\n ApduResponse,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { describe, expect, it } from \"vitest\";\n\nimport {\n SignBlockSignatureCommand,\n type SignBlockSignatureCommandResponse,\n} from \"./SignBlockSignatureCommand\";\n\nconst SIG_AND_KEY = Uint8Array.from([0xf0, 0xca, 0xcc, 0x1a]);\n\ndescribe(\"SignBlockSignatureCommand\", () => {\n describe(\"getApdu()\", () => {\n it(\"should build the correct APDU for finalize-signature\", () => {\n const cmd = new SignBlockSignatureCommand();\n const apdu = cmd.getApdu();\n expect(apdu.getRawApdu()).toEqual(\n Uint8Array.from([0xe0, 0x07, 0x02, 0x00, 0x00]),\n );\n });\n });\n\n describe(\"parseResponse()\", () => {\n it(\"should return signature and sessionKey on success\", () => {\n // given\n const payload = new Uint8Array([\n SIG_AND_KEY.length,\n ...SIG_AND_KEY,\n SIG_AND_KEY.length,\n ...SIG_AND_KEY,\n ]);\n const cmd = new SignBlockSignatureCommand();\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: payload,\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(true);\n if (isSuccessCommandResult(result)) {\n const res: SignBlockSignatureCommandResponse = result.data;\n expect(res.signature).toEqual(SIG_AND_KEY);\n expect(res.deviceSessionKey).toEqual(SIG_AND_KEY);\n }\n });\n\n it(\"should map SW errors to CommandResult errors\", () => {\n // given\n const cmd = new SignBlockSignatureCommand();\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x6a, 0x86]),\n data: new Uint8Array(),\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(false);\n if (!isSuccessCommandResult(result)) {\n expect((result.error as any).errorCode).toBe(\"6a86\");\n }\n });\n\n it(\"should error if missing length or reserved byte\", () => {\n // given\n const cmd = new SignBlockSignatureCommand();\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array(),\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(false);\n if (!isSuccessCommandResult(result)) {\n expect((result.error as any)._tag).toBe(\"InvalidStatusWordError\");\n expect((result.error as any).originalError.message).toBe(\n \"Invalid response: missing signature length or reserved byte\",\n );\n }\n });\n\n it(\"should error if signature length out of bounds\", () => {\n // given\n const bad = Uint8Array.from([5, 0xaa, 0xbb]);\n const cmd = new SignBlockSignatureCommand();\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: bad,\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(false);\n if (!isSuccessCommandResult(result)) {\n expect((result.error as any)._tag).toBe(\"InvalidStatusWordError\");\n expect((result.error as any).originalError.message).toBe(\n \"Signature length out of bounds\",\n );\n }\n });\n });\n});\n"],
5
+ "mappings": "aAGA,IAAAA,EAGO,2CACPC,EAAqC,kBAErCC,EAGO,uCAEP,MAAMC,EAAc,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAI,CAAC,KAE5D,YAAS,4BAA6B,IAAM,IAC1C,YAAS,YAAa,IAAM,IAC1B,MAAG,uDAAwD,IAAM,CAE/D,MAAMC,EADM,IAAI,4BAA0B,EACzB,QAAQ,KACzB,UAAOA,EAAK,WAAW,CAAC,EAAE,QACxB,WAAW,KAAK,CAAC,IAAM,EAAM,EAAM,EAAM,CAAI,CAAC,CAChD,CACF,CAAC,CACH,CAAC,KAED,YAAS,kBAAmB,IAAM,IAChC,MAAG,oDAAqD,IAAM,CAE5D,MAAMC,EAAU,IAAI,WAAW,CAC7BF,EAAY,OACZ,GAAGA,EACHA,EAAY,OACZ,GAAGA,CACL,CAAC,EACKG,EAAM,IAAI,4BACVC,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMF,CACR,CAAC,EAGKG,EAASF,EAAI,cAAcC,CAAQ,EAIzC,MADA,aAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAI,KAC5C,0BAAuBA,CAAM,EAAG,CAClC,MAAMC,EAAyCD,EAAO,QACtD,UAAOC,EAAI,SAAS,EAAE,QAAQN,CAAW,KACzC,UAAOM,EAAI,gBAAgB,EAAE,QAAQN,CAAW,CAClD,CACF,CAAC,KAED,MAAG,+CAAgD,IAAM,CAEvD,MAAMG,EAAM,IAAI,4BACVC,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,GAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKC,EAASF,EAAI,cAAcC,CAAQ,KAGzC,aAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAK,KAC5C,0BAAuBA,CAAM,MAChC,UAAQA,EAAO,MAAc,SAAS,EAAE,KAAK,MAAM,CAEvD,CAAC,KAED,MAAG,kDAAmD,IAAM,CAE1D,MAAMF,EAAM,IAAI,4BACVC,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKC,EAASF,EAAI,cAAcC,CAAQ,KAGzC,aAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAK,KAC5C,0BAAuBA,CAAM,OAChC,UAAQA,EAAO,MAAc,IAAI,EAAE,KAAK,wBAAwB,KAChE,UAAQA,EAAO,MAAc,cAAc,OAAO,EAAE,KAClD,6DACF,EAEJ,CAAC,KAED,MAAG,iDAAkD,IAAM,CAEzD,MAAME,EAAM,WAAW,KAAK,CAAC,EAAG,IAAM,GAAI,CAAC,EACrCJ,EAAM,IAAI,4BACVC,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMG,CACR,CAAC,EAGKF,EAASF,EAAI,cAAcC,CAAQ,KAGzC,aAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAK,KAC5C,0BAAuBA,CAAM,OAChC,UAAQA,EAAO,MAAc,IAAI,EAAE,KAAK,wBAAwB,KAChE,UAAQA,EAAO,MAAc,cAAc,OAAO,EAAE,KAClD,gCACF,EAEJ,CAAC,CACH,CAAC,CACH,CAAC",
6
6
  "names": ["import_device_management_kit", "import_vitest", "import_SignBlockSignatureCommand", "SIG_AND_KEY", "apdu", "payload", "cmd", "response", "result", "res", "bad"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var d=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var c=(o,r)=>{for(var t in r)d(o,t,{get:r[t],enumerable:!0})},u=(o,r,t,m)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of s(r))!p.call(o,n)&&n!==t&&d(o,n,{get:()=>r[n],enumerable:!(m=g(r,n))||m.enumerable});return o};var S=o=>u(d({},"__esModule",{value:!0}),o);var C={};c(C,{SignBlockSingleCommand:()=>y});module.exports=S(C);var e=require("@ledgerhq/device-management-kit"),l=require("@ledgerhq/signer-utils"),i=require("purify-ts"),a=require("./utils/ledgerKeyringProtocolErrors");class y{constructor(r){this.args=r}errorHelper=new l.CommandErrorHelper(a.LEDGER_SYNC_ERRORS,a.LedgerKeyringProtocolErrorFactory);getApdu(){return new e.ApduBuilder({cla:224,ins:7,p1:1,p2:0}).addBufferToData(this.args.command).build()}parseResponse(r){return i.Maybe.fromNullable(this.errorHelper.getError(r)).orDefaultLazy(()=>{const t=new e.ApduParser(r),m=t.getUnparsedRemainingLength(),n=t.extractFieldByLength(m);return n?(0,e.CommandResultFactory)({data:n}):(0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("No data returned by SignBlockSingleCommand")})})}}0&&(module.exports={SignBlockSingleCommand});
1
+ "use strict";var d=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var c=(o,r)=>{for(var t in r)d(o,t,{get:r[t],enumerable:!0})},u=(o,r,t,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of s(r))!p.call(o,n)&&n!==t&&d(o,n,{get:()=>r[n],enumerable:!(a=g(r,n))||a.enumerable});return o};var y=o=>u(d({},"__esModule",{value:!0}),o);var C={};c(C,{SignBlockSingleCommand:()=>S});module.exports=y(C);var e=require("@ledgerhq/device-management-kit"),i=require("@ledgerhq/signer-utils"),l=require("purify-ts"),m=require("./utils/ledgerKeyringProtocolErrors");class S{constructor(r){this.args=r}errorHelper=new i.CommandErrorHelper(m.LEDGER_SYNC_ERRORS,m.LedgerKeyringProtocolErrorFactory);getApdu(){return new e.ApduBuilder({cla:224,ins:7,p1:1,p2:0}).addBufferToData(this.args.command).build()}parseResponse(r){return l.Maybe.fromNullable(this.errorHelper.getError(r)).orDefaultLazy(()=>{const t=new e.ApduParser(r),a=t.getUnparsedRemainingLength(),n=t.extractFieldByLength(a);return n?(0,e.CommandResultFactory)({data:n}):(0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("No data returned by SignBlockSingleCommand")})})}}0&&(module.exports={SignBlockSingleCommand});
2
2
  //# sourceMappingURL=SignBlockSingleCommand.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/SignBlockSingleCommand.ts"],
4
- "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n type SignBlockSingleCommandArgs,\n type SignBlockSingleCommandResponse,\n} from \"@api/app-binder/SignBlockSingleCommandTypes\";\n\nimport {\n LEDGER_SYNC_ERRORS,\n type LedgerKeyringProtocolErrorCodes,\n LedgerKeyringProtocolErrorFactory,\n} from \"./utils/ledgerKeyringProtocolErrors\";\n\nexport class SignBlockSingleCommand\n implements\n Command<\n SignBlockSingleCommandResponse,\n SignBlockSingleCommandArgs,\n LedgerKeyringProtocolErrorCodes\n >\n{\n private readonly errorHelper = new CommandErrorHelper<\n SignBlockSingleCommandResponse,\n LedgerKeyringProtocolErrorCodes\n >(LEDGER_SYNC_ERRORS, LedgerKeyringProtocolErrorFactory);\n\n constructor(private readonly args: SignBlockSingleCommandArgs) {}\n\n getApdu(): Apdu {\n return new ApduBuilder({\n cla: 0xe0,\n ins: 0x07,\n p1: 0x01,\n p2: 0x00,\n })\n .addBufferToData(this.args.command)\n .build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<\n SignBlockSingleCommandResponse,\n LedgerKeyringProtocolErrorCodes\n > {\n return Maybe.fromNullable(\n this.errorHelper.getError(apduResponse),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(apduResponse);\n const remaining = parser.getUnparsedRemainingLength();\n const tlvBlob = parser.extractFieldByLength(remaining);\n if (!tlvBlob) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"No data returned by SignBlockSingleCommand\",\n ),\n });\n }\n return CommandResultFactory({ data: tlvBlob });\n });\n }\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EASO,2CACPC,EAAmC,kCACnCC,EAAsB,qBAOtBC,EAIO,+CAEA,MAAML,CAOb,CAME,YAA6BM,EAAkC,CAAlC,UAAAA,CAAmC,CAL/C,YAAc,IAAI,qBAGjC,qBAAoB,mCAAiC,EAIvD,SAAgB,CACd,OAAO,IAAI,cAAY,CACrB,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,CAAC,EACE,gBAAgB,KAAK,KAAK,OAAO,EACjC,MAAM,CACX,CAEA,cACEC,EAIA,CACA,OAAO,QAAM,aACX,KAAK,YAAY,SAASA,CAAY,CACxC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAS,IAAI,aAAWD,CAAY,EACpCE,EAAYD,EAAO,2BAA2B,EAC9CE,EAAUF,EAAO,qBAAqBC,CAAS,EACrD,OAAKC,KAOE,wBAAqB,CAAE,KAAMA,CAAQ,CAAC,KANpC,wBAAqB,CAC1B,MAAO,IAAI,yBACT,4CACF,CACF,CAAC,CAGL,CAAC,CACH,CACF",
4
+ "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n LEDGER_SYNC_ERRORS,\n type LedgerKeyringProtocolErrorCodes,\n LedgerKeyringProtocolErrorFactory,\n} from \"./utils/ledgerKeyringProtocolErrors\";\n\nexport interface SignBlockSingleCommandArgs {\n command: Uint8Array;\n}\n\nexport type SignBlockSingleCommandResponse = Uint8Array;\n\nexport class SignBlockSingleCommand\n implements\n Command<\n SignBlockSingleCommandResponse,\n SignBlockSingleCommandArgs,\n LedgerKeyringProtocolErrorCodes\n >\n{\n private readonly errorHelper = new CommandErrorHelper<\n SignBlockSingleCommandResponse,\n LedgerKeyringProtocolErrorCodes\n >(LEDGER_SYNC_ERRORS, LedgerKeyringProtocolErrorFactory);\n\n constructor(private readonly args: SignBlockSingleCommandArgs) {}\n\n getApdu(): Apdu {\n return new ApduBuilder({\n cla: 0xe0,\n ins: 0x07,\n p1: 0x01,\n p2: 0x00,\n })\n .addBufferToData(this.args.command)\n .build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<\n SignBlockSingleCommandResponse,\n LedgerKeyringProtocolErrorCodes\n > {\n return Maybe.fromNullable(\n this.errorHelper.getError(apduResponse),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(apduResponse);\n const remaining = parser.getUnparsedRemainingLength();\n const tlvBlob = parser.extractFieldByLength(remaining);\n if (!tlvBlob) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"No data returned by SignBlockSingleCommand\",\n ),\n });\n }\n return CommandResultFactory({ data: tlvBlob });\n });\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EASO,2CACPC,EAAmC,kCACnCC,EAAsB,qBAEtBC,EAIO,+CAQA,MAAML,CAOb,CAME,YAA6BM,EAAkC,CAAlC,UAAAA,CAAmC,CAL/C,YAAc,IAAI,qBAGjC,qBAAoB,mCAAiC,EAIvD,SAAgB,CACd,OAAO,IAAI,cAAY,CACrB,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,CAAC,EACE,gBAAgB,KAAK,KAAK,OAAO,EACjC,MAAM,CACX,CAEA,cACEC,EAIA,CACA,OAAO,QAAM,aACX,KAAK,YAAY,SAASA,CAAY,CACxC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAS,IAAI,aAAWD,CAAY,EACpCE,EAAYD,EAAO,2BAA2B,EAC9CE,EAAUF,EAAO,qBAAqBC,CAAS,EACrD,OAAKC,KAOE,wBAAqB,CAAE,KAAMA,CAAQ,CAAC,KANpC,wBAAqB,CAC1B,MAAO,IAAI,yBACT,4CACF,CACF,CAAC,CAGL,CAAC,CACH,CACF",
6
6
  "names": ["SignBlockSingleCommand_exports", "__export", "SignBlockSingleCommand", "__toCommonJS", "import_device_management_kit", "import_signer_utils", "import_purify_ts", "import_ledgerKeyringProtocolErrors", "args", "apduResponse", "parser", "remaining", "tlvBlob"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("@ledgerhq/device-management-kit"),o=require("vitest"),c=require("./SignBlockSingleCommand");const a=Uint8Array.from([240,202,204,26]),m=Uint8Array.from([240,202,204,26]);(0,o.describe)("SignBlockSingleCommand",()=>{(0,o.describe)("getApdu()",()=>{(0,o.it)("should build the correct APDU for a given command",()=>{const s={command:a},r=new c.SignBlockSingleCommand(s).getApdu(),n=Uint8Array.from([224,7,1,0,a.length,...a]);(0,o.expect)(r.getRawApdu()).toEqual(n)})}),(0,o.describe)("parseResponse()",()=>{(0,o.it)("should return the raw TLV blob on success",()=>{const s={command:a},t=new c.SignBlockSingleCommand(s),r=new e.ApduResponse({statusCode:Uint8Array.from([144,0]),data:m}),n=t.parseResponse(r);if((0,o.expect)((0,e.isSuccessCommandResult)(n)).toBe(!0),(0,e.isSuccessCommandResult)(n)){const d=n.data;(0,o.expect)(d).toEqual(m)}}),(0,o.it)("should map SW errors to CommandResult errors",()=>{const s={command:a},t=new c.SignBlockSingleCommand(s),r=new e.ApduResponse({statusCode:Uint8Array.from([106,134]),data:new Uint8Array}),n=t.parseResponse(r);(0,o.expect)((0,e.isSuccessCommandResult)(n)).toBe(!1),(0,e.isSuccessCommandResult)(n)||(0,o.expect)(n.error.errorCode).toBe("6a86")}),(0,o.it)("should return an empty Uint8Array if no data is returned",()=>{const s={command:a},t=new c.SignBlockSingleCommand(s),r=new e.ApduResponse({statusCode:Uint8Array.from([144,0]),data:new Uint8Array}),n=t.parseResponse(r);(0,o.expect)((0,e.isSuccessCommandResult)(n)).toBe(!0),(0,e.isSuccessCommandResult)(n)&&(0,o.expect)(n.data).toEqual(new Uint8Array)})})});
1
+ "use strict";var e=require("@ledgerhq/device-management-kit"),n=require("vitest"),c=require("./SignBlockSingleCommand");const a=Uint8Array.from([240,202,204,26]),m=Uint8Array.from([240,202,204,26]);(0,n.describe)("SignBlockSingleCommand",()=>{(0,n.describe)("getApdu()",()=>{(0,n.it)("should build the correct APDU for a given command",()=>{const s={command:a},r=new c.SignBlockSingleCommand(s).getApdu(),o=Uint8Array.from([224,7,1,0,a.length,...a]);(0,n.expect)(r.getRawApdu()).toEqual(o)})}),(0,n.describe)("parseResponse()",()=>{(0,n.it)("should return the raw TLV blob on success",()=>{const s={command:a},t=new c.SignBlockSingleCommand(s),r=new e.ApduResponse({statusCode:Uint8Array.from([144,0]),data:m}),o=t.parseResponse(r);if((0,n.expect)((0,e.isSuccessCommandResult)(o)).toBe(!0),(0,e.isSuccessCommandResult)(o)){const d=o.data;(0,n.expect)(d).toEqual(m)}}),(0,n.it)("should map SW errors to CommandResult errors",()=>{const s={command:a},t=new c.SignBlockSingleCommand(s),r=new e.ApduResponse({statusCode:Uint8Array.from([106,134]),data:new Uint8Array}),o=t.parseResponse(r);(0,n.expect)((0,e.isSuccessCommandResult)(o)).toBe(!1),(0,e.isSuccessCommandResult)(o)||(0,n.expect)(o.error.errorCode).toBe("6a86")}),(0,n.it)("should return an empty Uint8Array if no data is returned",()=>{const s={command:a},t=new c.SignBlockSingleCommand(s),r=new e.ApduResponse({statusCode:Uint8Array.from([144,0]),data:new Uint8Array}),o=t.parseResponse(r);(0,n.expect)((0,e.isSuccessCommandResult)(o)).toBe(!0),(0,e.isSuccessCommandResult)(o)&&(0,n.expect)(o.data).toEqual(new Uint8Array)})})});
2
2
  //# sourceMappingURL=SignBlockSingleCommand.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/SignBlockSingleCommand.test.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n ApduResponse,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { describe, expect, it } from \"vitest\";\n\nimport {\n type SignBlockSingleCommandArgs,\n type SignBlockSingleCommandResponse,\n} from \"@api/app-binder/SignBlockSingleCommandTypes\";\n\nimport { SignBlockSingleCommand } from \"./SignBlockSingleCommand\";\n\nconst COMMAND_BYTES = Uint8Array.from([0xf0, 0xca, 0xcc, 0x1a]);\nconst TLV_PAYLOAD = Uint8Array.from([0xf0, 0xca, 0xcc, 0x1a]);\n\ndescribe(\"SignBlockSingleCommand\", () => {\n describe(\"getApdu()\", () => {\n it(\"should build the correct APDU for a given command\", () => {\n // given\n const args: SignBlockSingleCommandArgs = { command: COMMAND_BYTES };\n const cmd = new SignBlockSingleCommand(args);\n\n // when\n const apdu = cmd.getApdu();\n const expected = Uint8Array.from([\n 0xe0,\n 0x07,\n 0x01,\n 0x00,\n COMMAND_BYTES.length,\n ...COMMAND_BYTES,\n ]);\n\n // then\n expect(apdu.getRawApdu()).toEqual(expected);\n });\n });\n\n describe(\"parseResponse()\", () => {\n it(\"should return the raw TLV blob on success\", () => {\n // given\n const args: SignBlockSingleCommandArgs = { command: COMMAND_BYTES };\n const cmd = new SignBlockSingleCommand(args);\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: TLV_PAYLOAD,\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(true);\n if (isSuccessCommandResult(result)) {\n const data: SignBlockSingleCommandResponse = result.data;\n expect(data).toEqual(TLV_PAYLOAD);\n }\n });\n\n it(\"should map SW errors to CommandResult errors\", () => {\n // given\n const args: SignBlockSingleCommandArgs = { command: COMMAND_BYTES };\n const cmd = new SignBlockSingleCommand(args);\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x6a, 0x86]),\n data: new Uint8Array(),\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(false);\n if (!isSuccessCommandResult(result)) {\n expect((result.error as any).errorCode).toBe(\"6a86\");\n }\n });\n\n it(\"should return an empty Uint8Array if no data is returned\", () => {\n // given\n const args: SignBlockSingleCommandArgs = { command: COMMAND_BYTES };\n const cmd = new SignBlockSingleCommand(args);\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array(),\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(true);\n if (isSuccessCommandResult(result)) {\n expect(result.data).toEqual(new Uint8Array());\n }\n });\n });\n});\n"],
5
- "mappings": "aAEA,IAAAA,EAGO,2CACPC,EAAqC,kBAOrCC,EAAuC,oCAEvC,MAAMC,EAAgB,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAI,CAAC,EACxDC,EAAc,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAI,CAAC,KAE5D,YAAS,yBAA0B,IAAM,IACvC,YAAS,YAAa,IAAM,IAC1B,MAAG,oDAAqD,IAAM,CAE5D,MAAMC,EAAmC,CAAE,QAASF,CAAc,EAI5DG,EAHM,IAAI,yBAAuBD,CAAI,EAG1B,QAAQ,EACnBE,EAAW,WAAW,KAAK,CAC/B,IACA,EACA,EACA,EACAJ,EAAc,OACd,GAAGA,CACL,CAAC,KAGD,UAAOG,EAAK,WAAW,CAAC,EAAE,QAAQC,CAAQ,CAC5C,CAAC,CACH,CAAC,KAED,YAAS,kBAAmB,IAAM,IAChC,MAAG,4CAA6C,IAAM,CAEpD,MAAMF,EAAmC,CAAE,QAASF,CAAc,EAC5DK,EAAM,IAAI,yBAAuBH,CAAI,EACrCI,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAML,CACR,CAAC,EAGKM,EAASF,EAAI,cAAcC,CAAQ,EAIzC,MADA,aAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAI,KAC5C,0BAAuBA,CAAM,EAAG,CAClC,MAAMC,EAAuCD,EAAO,QACpD,UAAOC,CAAI,EAAE,QAAQP,CAAW,CAClC,CACF,CAAC,KAED,MAAG,+CAAgD,IAAM,CAEvD,MAAMC,EAAmC,CAAE,QAASF,CAAc,EAC5DK,EAAM,IAAI,yBAAuBH,CAAI,EACrCI,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,GAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKC,EAASF,EAAI,cAAcC,CAAQ,KAGzC,aAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAK,KAC5C,0BAAuBA,CAAM,MAChC,UAAQA,EAAO,MAAc,SAAS,EAAE,KAAK,MAAM,CAEvD,CAAC,KAED,MAAG,2DAA4D,IAAM,CAEnE,MAAML,EAAmC,CAAE,QAASF,CAAc,EAC5DK,EAAM,IAAI,yBAAuBH,CAAI,EACrCI,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKC,EAASF,EAAI,cAAcC,CAAQ,KAGzC,aAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAI,KAC5C,0BAAuBA,CAAM,MAC/B,UAAOA,EAAO,IAAI,EAAE,QAAQ,IAAI,UAAY,CAEhD,CAAC,CACH,CAAC,CACH,CAAC",
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n ApduResponse,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { describe, expect, it } from \"vitest\";\n\nimport {\n SignBlockSingleCommand,\n type SignBlockSingleCommandArgs,\n type SignBlockSingleCommandResponse,\n} from \"./SignBlockSingleCommand\";\n\nconst COMMAND_BYTES = Uint8Array.from([0xf0, 0xca, 0xcc, 0x1a]);\nconst TLV_PAYLOAD = Uint8Array.from([0xf0, 0xca, 0xcc, 0x1a]);\n\ndescribe(\"SignBlockSingleCommand\", () => {\n describe(\"getApdu()\", () => {\n it(\"should build the correct APDU for a given command\", () => {\n // given\n const args: SignBlockSingleCommandArgs = { command: COMMAND_BYTES };\n const cmd = new SignBlockSingleCommand(args);\n\n // when\n const apdu = cmd.getApdu();\n const expected = Uint8Array.from([\n 0xe0,\n 0x07,\n 0x01,\n 0x00,\n COMMAND_BYTES.length,\n ...COMMAND_BYTES,\n ]);\n\n // then\n expect(apdu.getRawApdu()).toEqual(expected);\n });\n });\n\n describe(\"parseResponse()\", () => {\n it(\"should return the raw TLV blob on success\", () => {\n // given\n const args: SignBlockSingleCommandArgs = { command: COMMAND_BYTES };\n const cmd = new SignBlockSingleCommand(args);\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: TLV_PAYLOAD,\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(true);\n if (isSuccessCommandResult(result)) {\n const data: SignBlockSingleCommandResponse = result.data;\n expect(data).toEqual(TLV_PAYLOAD);\n }\n });\n\n it(\"should map SW errors to CommandResult errors\", () => {\n // given\n const args: SignBlockSingleCommandArgs = { command: COMMAND_BYTES };\n const cmd = new SignBlockSingleCommand(args);\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x6a, 0x86]),\n data: new Uint8Array(),\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(false);\n if (!isSuccessCommandResult(result)) {\n expect((result.error as any).errorCode).toBe(\"6a86\");\n }\n });\n\n it(\"should return an empty Uint8Array if no data is returned\", () => {\n // given\n const args: SignBlockSingleCommandArgs = { command: COMMAND_BYTES };\n const cmd = new SignBlockSingleCommand(args);\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array(),\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(true);\n if (isSuccessCommandResult(result)) {\n expect(result.data).toEqual(new Uint8Array());\n }\n });\n });\n});\n"],
5
+ "mappings": "aAEA,IAAAA,EAGO,2CACPC,EAAqC,kBAErCC,EAIO,oCAEP,MAAMC,EAAgB,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAI,CAAC,EACxDC,EAAc,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAI,CAAC,KAE5D,YAAS,yBAA0B,IAAM,IACvC,YAAS,YAAa,IAAM,IAC1B,MAAG,oDAAqD,IAAM,CAE5D,MAAMC,EAAmC,CAAE,QAASF,CAAc,EAI5DG,EAHM,IAAI,yBAAuBD,CAAI,EAG1B,QAAQ,EACnBE,EAAW,WAAW,KAAK,CAC/B,IACA,EACA,EACA,EACAJ,EAAc,OACd,GAAGA,CACL,CAAC,KAGD,UAAOG,EAAK,WAAW,CAAC,EAAE,QAAQC,CAAQ,CAC5C,CAAC,CACH,CAAC,KAED,YAAS,kBAAmB,IAAM,IAChC,MAAG,4CAA6C,IAAM,CAEpD,MAAMF,EAAmC,CAAE,QAASF,CAAc,EAC5DK,EAAM,IAAI,yBAAuBH,CAAI,EACrCI,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAML,CACR,CAAC,EAGKM,EAASF,EAAI,cAAcC,CAAQ,EAIzC,MADA,aAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAI,KAC5C,0BAAuBA,CAAM,EAAG,CAClC,MAAMC,EAAuCD,EAAO,QACpD,UAAOC,CAAI,EAAE,QAAQP,CAAW,CAClC,CACF,CAAC,KAED,MAAG,+CAAgD,IAAM,CAEvD,MAAMC,EAAmC,CAAE,QAASF,CAAc,EAC5DK,EAAM,IAAI,yBAAuBH,CAAI,EACrCI,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,GAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKC,EAASF,EAAI,cAAcC,CAAQ,KAGzC,aAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAK,KAC5C,0BAAuBA,CAAM,MAChC,UAAQA,EAAO,MAAc,SAAS,EAAE,KAAK,MAAM,CAEvD,CAAC,KAED,MAAG,2DAA4D,IAAM,CAEnE,MAAML,EAAmC,CAAE,QAASF,CAAc,EAC5DK,EAAM,IAAI,yBAAuBH,CAAI,EACrCI,EAAW,IAAI,eAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKC,EAASF,EAAI,cAAcC,CAAQ,KAGzC,aAAO,0BAAuBC,CAAM,CAAC,EAAE,KAAK,EAAI,KAC5C,0BAAuBA,CAAM,MAC/B,UAAOA,EAAO,IAAI,EAAE,QAAQ,IAAI,UAAY,CAEhD,CAAC,CACH,CAAC,CACH,CAAC",
6
6
  "names": ["import_device_management_kit", "import_vitest", "import_SignBlockSingleCommand", "COMMAND_BYTES", "TLV_PAYLOAD", "args", "apdu", "expected", "cmd", "response", "result", "data"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var S=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var b=(o,r)=>{for(var i in r)S(o,i,{get:r[i],enumerable:!0})},f=(o,r,i,c)=>{if(r&&typeof r=="object"||typeof r=="function")for(let m of k(r))!I.call(o,m)&&m!==i&&S(o,m,{get:()=>r[m],enumerable:!(c=g(r,m))||c.enumerable});return o};var M=o=>f(S({},"__esModule",{value:!0}),o);var w={};b(w,{AddToTrustchainDeviceAction:()=>v});module.exports=M(w);var s=require("@ledgerhq/device-management-kit"),u=require("purify-ts"),a=require("xstate"),d=require("../../../api/app-binder/AddToTrustchainDeviceActionTypes"),A=require("../../../api/app-binder/Errors"),y=require("../../app-binder/task/InitTask"),D=require("../../app-binder/task/ParseStreamToDeviceTask"),E=require("../../app-binder/task/SignBlockTask"),l=require("../../utils/eitherSeqRecord"),p=require("../../utils/required"),T=require("./utils/raiseAndAssign");class v extends s.XStateDeviceAction{makeStateMachine(r){const{initCommand:i,parseStream:c,signBlock:m}=this.extractDependencies(r);return(0,a.setup)({types:{input:{},context:{},output:{}},actors:{initCommand:(0,a.fromPromise)(i),parseStream:(0,a.fromPromise)(c),signBlock:(0,a.fromPromise)(m)},actions:{assignErrorFromEvent:(0,T.raiseAndAssign)(({event:t})=>(0,u.Left)(new A.LKRPUnknownError(String(t.error))))},guards:{isTustchainEmpty:({context:t})=>t.input.toMaybe().chain(e=>e.trustchain.getAppStream(e.appId)).chain(e=>e.parse().toMaybe()).map(e=>e.length===0).orDefault(!0)}}).createMachine({id:"AddToTrustchainDeviceAction",context:({input:t})=>({input:t,intermediateValue:{requiredUserInteraction:s.UserInteractionRequired.None},_internalState:(0,u.Right)({sessionKeypair:null})}),initial:"InitSession",states:{InitSession:{entry:(0,a.assign)({intermediateValue:{requiredUserInteraction:s.UserInteractionRequired.None,step:d.AddToTrustchaineDAStep.Initialize}}),on:{success:"ParseStream",error:"Error"},invoke:{id:"initCommand",src:"initCommand",onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,T.raiseAndAssign)(({event:t})=>t.output.map(e=>({raise:"success",assign:{sessionKeypair:e}})))}}},ParseStream:{entry:(0,a.assign)({intermediateValue:{requiredUserInteraction:s.UserInteractionRequired.None,step:d.AddToTrustchaineDAStep.ParseStream}}),on:{success:"CheckApplicationStreamExist",error:"Error"},invoke:{id:"parseStream",src:"parseStream",input:({context:t})=>t.input.chain(e=>(0,l.eitherSeqRecord)({seedBlock:()=>(0,p.required)(e.trustchain.getRootStream().chain(n=>n.parse().toMaybe()).extract()?.[0],"Missing seed block to parse"),applicationStream:()=>(0,p.required)(e.trustchain.getAppStream(e.appId).extract(),"Missing application stream to parse")})),onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,T.raiseAndAssign)(({event:t})=>t.output.map(()=>({raise:"success"})))}}},CheckApplicationStreamExist:{always:[{target:"AddToNewStream",guard:"isTustchainEmpty"},{target:"AddToExistingStream"}]},AddToExistingStream:{entry:(0,a.assign)({intermediateValue:{requiredUserInteraction:d.AddToTrustchainDAState.AddMember,step:d.AddToTrustchaineDAStep.AddMember}}),on:{success:"Success",error:"Error"},invoke:{id:"signBlock",src:"signBlock",input:({context:t})=>t.input.chain(e=>{const n=e.trustchain.getAppStream(e.appId);return(0,l.eitherSeqRecord)({lkrpDataSource:e.lkrpDataSource,trustchainId:e.trustchain.getId(),jwt:e.jwt,clientName:e.clientName,sessionKeypair:()=>t._internalState.chain(({sessionKeypair:h})=>(0,p.required)(h,"Missing session keypair")),path:()=>(0,p.required)(n.chain(h=>h.getPath()).extract(),"Missing application path"),parent:()=>(0,p.required)(n.chain(h=>h.parse().toMaybe()).chainNullable(h=>h.at(-1)?.hash()).chainNullable(s.hexaStringToBuffer).extract(),"Missing parent block"),blockFlow:{type:"addMember",data:{name:e.clientName,publicKey:e.keypair.pubKeyToU8a(),permissions:e.permissions}}})}),onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,T.raiseAndAssign)(({event:t})=>t.output.map(()=>({raise:"success"})))}}},AddToNewStream:{entry:(0,a.assign)({intermediateValue:{requiredUserInteraction:d.AddToTrustchainDAState.AddMember,step:d.AddToTrustchaineDAStep.AddMember}}),on:{success:"Success",error:"Error"},invoke:{id:"signBlock",src:"signBlock",input:({context:t})=>t.input.chain(e=>(0,l.eitherSeqRecord)({lkrpDataSource:e.lkrpDataSource,trustchainId:e.trustchain.getId(),jwt:e.jwt,clientName:e.clientName,sessionKeypair:()=>t._internalState.chain(({sessionKeypair:n})=>(0,p.required)(n,"Missing session keypair")),path:`m/0'/${e.appId}'/0'`,parent:()=>(0,p.required)(e.trustchain.getRootStream().chain(n=>n.parse().toMaybe()).chainNullable(n=>n[0]?.hash()).chainNullable(s.hexaStringToBuffer).extract(),"Missing init block"),blockFlow:{type:"derive",data:{name:e.clientName,publicKey:e.keypair.pubKeyToU8a(),permissions:e.permissions}}}).chain(()=>(0,u.Left)(new A.LKRPTrustchainNotReady))),onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,T.raiseAndAssign)(({event:t})=>t.output.map(()=>({raise:"success"})))}}},Success:{type:"final"},Error:{type:"final"}},output:({context:t})=>t._internalState.map(e=>{})})}extractDependencies(r){return{initCommand:()=>new y.InitTask(r).run(),parseStream:async i=>u.EitherAsync.liftEither(i.input).chain(c=>new D.ParseStreamToDeviceTask(r).run(c)).run(),signBlock:i=>u.EitherAsync.liftEither(i.input).chain(c=>new E.SignBlockTask(r).run(c)).run()}}}0&&(module.exports={AddToTrustchainDeviceAction});
1
+ "use strict";var S=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var v=(p,r)=>{for(var a in r)S(p,a,{get:r[a],enumerable:!0})},f=(p,r,a,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let m of k(r))!I.call(p,m)&&m!==a&&S(p,m,{get:()=>r[m],enumerable:!(i=g(r,m))||i.enumerable});return p};var b=p=>f(S({},"__esModule",{value:!0}),p);var w={};v(w,{AddToTrustchainDeviceAction:()=>M});module.exports=b(w);var o=require("@ledgerhq/device-management-kit"),c=require("purify-ts"),n=require("xstate"),u=require("../../../api/app-binder/AddToTrustchainDeviceActionTypes"),T=require("../../../api/model/Errors"),y=require("../../app-binder/task/InitTask"),D=require("../../app-binder/task/ParseStreamToDeviceTask"),E=require("../../app-binder/task/SignBlockTask"),A=require("../../utils/eitherSeqRecord"),d=require("../../utils/required"),l=require("./utils/raiseAndAssign");class M extends o.XStateDeviceAction{makeStateMachine(r){const{initCommand:a,parseStream:i,signBlock:m}=this.extractDependencies(r);return(0,n.setup)({types:{input:{},context:{},output:{}},actors:{initCommand:(0,n.fromPromise)(a),parseStream:(0,n.fromPromise)(i),signBlock:(0,n.fromPromise)(m)},actions:{assignErrorFromEvent:(0,l.raiseAndAssign)(({event:t})=>(0,c.Left)(new T.LKRPUnknownError(String(t.error))))},guards:{isTustchainEmpty:({context:t})=>t.input.toMaybe().chain(e=>e.trustchain.getAppStream(e.appId)).chain(e=>e.parse().toMaybe()).map(e=>e.length===0).orDefault(!0)}}).createMachine({id:"AddToTrustchainDeviceAction",context:({input:t})=>({input:t,intermediateValue:{requiredUserInteraction:o.UserInteractionRequired.None},_internalState:(0,c.Right)({sessionKeypair:null})}),initial:"InitSession",states:{InitSession:{entry:(0,n.assign)({intermediateValue:{requiredUserInteraction:o.UserInteractionRequired.None,step:u.AddToTrustchaineDAStep.Initialize}}),on:{success:"ParseStream",error:"Error"},invoke:{id:"initCommand",src:"initCommand",input:({context:t})=>t.input.map(e=>e.cryptoService),onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,l.raiseAndAssign)(({event:t})=>t.output.map(e=>({raise:"success",assign:{sessionKeypair:e}})))}}},ParseStream:{entry:(0,n.assign)({intermediateValue:{requiredUserInteraction:o.UserInteractionRequired.None,step:u.AddToTrustchaineDAStep.ParseStream}}),on:{success:"CheckApplicationStreamExist",error:"Error"},invoke:{id:"parseStream",src:"parseStream",input:({context:t})=>t.input.chain(e=>(0,A.eitherSeqRecord)({seedBlock:()=>(0,d.required)(e.trustchain.getRootStream().chain(s=>s.parse().toMaybe()).extract()?.[0],"Missing seed block to parse"),applicationStream:()=>(0,d.required)(e.trustchain.getAppStream(e.appId).extract(),"Missing application stream to parse")})),onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,l.raiseAndAssign)(({event:t})=>t.output.map(()=>({raise:"success"})))}}},CheckApplicationStreamExist:{always:[{target:"AddToNewStream",guard:"isTustchainEmpty"},{target:"AddToExistingStream"}]},AddToExistingStream:{entry:(0,n.assign)({intermediateValue:{requiredUserInteraction:u.AddToTrustchainDAState.AddMember,step:u.AddToTrustchaineDAStep.AddMember}}),on:{success:"Success",error:"Error"},invoke:{id:"signBlock",src:"signBlock",input:({context:t})=>t.input.chain(e=>{const s=e.trustchain.getAppStream(e.appId);return(0,A.eitherSeqRecord)({cryptoService:e.cryptoService,lkrpDataSource:e.lkrpDataSource,trustchainId:e.trustchain.getId(),jwt:e.jwt,clientName:e.clientName,sessionKeypair:()=>t._internalState.chain(({sessionKeypair:h})=>(0,d.required)(h,"Missing session keypair")),path:()=>(0,d.required)(s.chain(h=>h.getPath()).extract(),"Missing application path"),parent:()=>(0,d.required)(s.chain(h=>h.parse().toMaybe()).chainNullable(h=>h.at(-1)?.hash()).chainNullable(o.hexaStringToBuffer).extract(),"Missing parent block"),blockFlow:{type:"addMember",data:{name:e.clientName,publicKey:e.keypair.getPublicKey(),permissions:e.permissions}}})}),onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,l.raiseAndAssign)(({event:t})=>t.output.map(()=>({raise:"success"})))}}},AddToNewStream:{entry:(0,n.assign)({intermediateValue:{requiredUserInteraction:u.AddToTrustchainDAState.AddMember,step:u.AddToTrustchaineDAStep.AddMember}}),on:{success:"Success",error:"Error"},invoke:{id:"signBlock",src:"signBlock",input:({context:t})=>t.input.chain(e=>(0,A.eitherSeqRecord)({lkrpDataSource:e.lkrpDataSource,trustchainId:e.trustchain.getId(),jwt:e.jwt,clientName:e.clientName,sessionKeypair:()=>t._internalState.chain(({sessionKeypair:s})=>(0,d.required)(s,"Missing session keypair")),path:`m/0'/${e.appId}'/0'`,parent:()=>(0,d.required)(e.trustchain.getRootStream().chain(s=>s.parse().toMaybe()).chainNullable(s=>s[0]?.hash()).chainNullable(o.hexaStringToBuffer).extract(),"Missing init block"),blockFlow:{type:"derive",data:{name:e.clientName,publicKey:e.keypair.getPublicKey(),permissions:e.permissions}}}).chain(()=>(0,c.Left)(new T.LKRPTrustchainNotReady))),onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,l.raiseAndAssign)(({event:t})=>t.output.map(()=>({raise:"success"})))}}},Success:{type:"final"},Error:{type:"final"}},output:({context:t})=>t._internalState.map(e=>{})})}extractDependencies(r){return{initCommand:async a=>c.EitherAsync.liftEither(a.input).chain(i=>new y.InitTask(r,i).run()).run(),parseStream:async a=>c.EitherAsync.liftEither(a.input).chain(i=>new D.ParseStreamToDeviceTask(r).run(i)).run(),signBlock:a=>c.EitherAsync.liftEither(a.input).chain(i=>new E.SignBlockTask(r,i.cryptoService).run(i)).run()}}}0&&(module.exports={AddToTrustchainDeviceAction});
2
2
  //# sourceMappingURL=AddToTrustchainDeviceAction.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/device-action/AddToTrustchainDeviceAction.ts"],
4
- "sourcesContent": ["import {\n type DeviceActionStateMachine,\n hexaStringToBuffer,\n type InternalApi,\n type StateMachineTypes,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Either, EitherAsync, Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport {\n type AddToTrustchainDAError,\n type AddToTrustchainDAInput,\n type AddToTrustchainDAIntermediateValue,\n type AddToTrustchainDAInternalState,\n type AddToTrustchainDAOutput,\n AddToTrustchainDAState,\n AddToTrustchaineDAStep,\n} from \"@api/app-binder/AddToTrustchainDeviceActionTypes\";\nimport {\n LKRPTrustchainNotReady,\n LKRPUnknownError,\n} from \"@api/app-binder/Errors\";\nimport { type Keypair } from \"@api/index\";\nimport { type LKRPDeviceCommandError } from \"@internal/app-binder/command/utils/ledgerKeyringProtocolErrors\";\nimport { InitTask } from \"@internal/app-binder/task/InitTask\";\nimport {\n ParseStreamToDeviceTask,\n type ParseStreamToDeviceTaskInput,\n} from \"@internal/app-binder/task/ParseStreamToDeviceTask\";\nimport {\n SignBlockTask,\n type SignBlockTaskInput,\n} from \"@internal/app-binder/task/SignBlockTask\";\nimport { eitherSeqRecord } from \"@internal/utils/eitherSeqRecord\";\nimport { required } from \"@internal/utils/required\";\n\nimport { raiseAndAssign } from \"./utils/raiseAndAssign\";\n\nexport class AddToTrustchainDeviceAction extends XStateDeviceAction<\n AddToTrustchainDAOutput,\n AddToTrustchainDAInput,\n AddToTrustchainDAError,\n AddToTrustchainDAIntermediateValue,\n AddToTrustchainDAInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n AddToTrustchainDAOutput,\n AddToTrustchainDAInput,\n AddToTrustchainDAError,\n AddToTrustchainDAIntermediateValue,\n AddToTrustchainDAInternalState\n > {\n type types = StateMachineTypes<\n AddToTrustchainDAOutput,\n AddToTrustchainDAInput,\n AddToTrustchainDAError,\n AddToTrustchainDAIntermediateValue,\n AddToTrustchainDAInternalState\n >;\n\n const { initCommand, parseStream, signBlock } =\n this.extractDependencies(internalApi);\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n\n actors: {\n initCommand: fromPromise(initCommand),\n parseStream: fromPromise(parseStream),\n signBlock: fromPromise(signBlock),\n },\n\n actions: {\n assignErrorFromEvent: raiseAndAssign(\n ({ event }) =>\n Left(\n new LKRPUnknownError(\n String((event as { error?: unknown }).error),\n ),\n ), // NOTE: it should never happen, the error is not typed anymore here\n ),\n },\n\n guards: {\n isTustchainEmpty: ({ context }) =>\n context.input\n .toMaybe()\n .chain((input) => input.trustchain.getAppStream(input.appId))\n .chain((appStream) => appStream.parse().toMaybe())\n .map((blocks) => blocks.length === 0)\n .orDefault(true),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QEEIQCoHt0CcCusALgMYAWAhgJYB2AImAG6XFjLGGWbUB0AktZUIBlOLE7UAxBC5huNBpgDWsmoIDCmALaby1CAG0ADAF1EoAA6YxHLmZAAPRAEZDAdm6unAFgAcXpwBsAKwAzL7+TgA0IACezq4AnB6GIU4ATAFeaUEBuT5pAL4F0agY2PhEZFR0jMys7OJ8AsKi4hJgODiYONzmADbkhABm3ZpyzRraugYmdpbW4naOCAlJaS4JXgGpCZ6r0XEIPgHc2YaGXiEhOdlXTkUlaFi4BCQUNPRMLGw2PPyCIlgYi4ElgeGILCBRlMSBA80Ei1hy2uXm4IVcXlWZwS5xChiCB0QaQSQW4QVcxMC63SCTShWKIFKzwqb2qnzqP0a-xaQLaHS6OGhcysCNsSMQKLRGKxQUMOJS+MJKzlaPSXlcPkSPkMaQxD0ZT3KryqH1q3waXG4AAVyDhYGAhIQcGByJopDJxgplL1bfbHc7XULYfDfktEKETgEnJ4coZMkEsUqnNqySFgtGgsmsWkvPqmUbKu8al96r9rb6HU6XW7+d1egNhqMfXbKwHNEGLCLQ+KEEEMmTdvHXEFjj4-ErNdxDD4wviciT8gEfHnDS9C2yzaXGjaW-7q6DwZDYB24V3EaBlq4NR4wmnpylvCEfEriScvHHdX4cwF1gEV2U11ZU0S05S0dz9KtXXaTpuhPENzwcRArx8G9LgCe9UkuZ9YiQscyR-LwEwCDVzice4GXzQCTWLDkLR4NRSDAYhFGQcx+mYQZxD3V0AFF7EoIgJDgs8xQvZxozSU4NnxK5sl2KIcIQYlJLSEIFx8Mj0PVcjHgAllqPZc0ywYpiWLYvoON+bjND4gTCCEpwYU7BZRMQhAyIpKS5RkkI5M8JUo1JeN8hHVwdQCBI-wo1d9KLQyt0tfNbKIGgoGs91qBUagvVkMQoGoAAhPpMGY4SXOoMN3KyFC3AfBN0jpLwlUxFDrgSdEwoTTVEn-ZljTizdQJ4JL+JS6g0sgmsYJ6fpBhGHAxjywritK2ZgxEiqe28aduCyZMlzTA7NWai5uBxH90xcLYZ16gsgJoozGhGuzUvSsEIVEMrRU2sT3MyJxTkinxIqvNJRzSALvFOSl1QTdYKSi3S+vXYDaLLZ6xomttoIFL7u1+wJ-EBpcQYpcGAsyDxKXnPs6QSW6qIGkC6O4fMADkwAAd3S6RMs9JRcsofKipKxQ8YQ5ZvDBqcwtSeq6RzJMMTO0JvGB3zfOnBnYo3Zn0cNDnucmnG61mxsFu4JaRdWpzT3KyrtpQvbR0OmdjsUjSyXOc4NJ1BInFp7X+t1tGnoNrm3sPT61uc76Hf+4ngeIsmlwhxTiUMbh8mJJ9PESLZAiDlGHoS4bw6N7Ha0FGO7bjraE9fJPQfJxSwgB3zKX9hJtTjIIigZahMAgOA7EonXUce1z4Nc5YAFoFMOWfSVWVZNXnVxtm8Eki-u+KhqaAFWinjbKvVF9rwDi6KSCWUKVzaK9ODifS-LXdJuFe2e3Vdx-HfBMtnRLSNOhxPxnSTucEcfh8TLgfsjXeg0WYmWYqxdixBOJcGsslQgH866-RxADK8Vxu7dXahFF8kUzofkxEELwWxsg3x3gZBB+syhYNeu-dan8CboidivXYCYUiZFcEqIiWc1TA3OLSTU98kZ3SYXrMOZRDbWRwfjNyTgeG7T4cOHEaYz7p1cCEXaH50JjmjHiNMjCmah0tEIKOQJVES3iLsKcN9fCqU-JcAkiltJkllvkQxtV1gyINI-Yue8WY8Wmo4me8RMy7RzFSK6cZ0gUyMeqf2tDpxpnJH3fuQA */\n\n id: \"AddToTrustchainDeviceAction\",\n context: ({ input }) => ({\n input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: Right({\n sessionKeypair: null,\n }),\n }),\n\n initial: \"InitSession\",\n states: {\n InitSession: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: AddToTrustchaineDAStep.Initialize,\n },\n }),\n on: { success: \"ParseStream\", error: \"Error\" },\n invoke: {\n id: \"initCommand\",\n src: \"initCommand\",\n onError: { actions: \"assignErrorFromEvent\" },\n onDone: {\n actions: raiseAndAssign(({ event }) =>\n event.output.map((sessionKeypair) => ({\n raise: \"success\",\n assign: { sessionKeypair },\n })),\n ),\n },\n },\n },\n\n ParseStream: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: AddToTrustchaineDAStep.ParseStream,\n },\n }),\n on: { success: \"CheckApplicationStreamExist\", error: \"Error\" },\n invoke: {\n id: \"parseStream\",\n src: \"parseStream\",\n input: ({ context }) =>\n context.input.chain((input) =>\n eitherSeqRecord({\n seedBlock: () =>\n required(\n input.trustchain\n .getRootStream()\n .chain((stream) => stream.parse().toMaybe())\n .extract()?.[0],\n \"Missing seed block to parse\",\n ),\n applicationStream: () =>\n required(\n input.trustchain.getAppStream(input.appId).extract(),\n \"Missing application stream to parse\",\n ),\n }),\n ),\n onError: { actions: \"assignErrorFromEvent\" },\n onDone: {\n actions: raiseAndAssign(({ event }) =>\n event.output.map(() => ({ raise: \"success\" })),\n ),\n },\n },\n },\n\n CheckApplicationStreamExist: {\n always: [\n { target: \"AddToNewStream\", guard: \"isTustchainEmpty\" },\n { target: \"AddToExistingStream\" },\n ],\n },\n\n AddToExistingStream: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: AddToTrustchainDAState.AddMember,\n step: AddToTrustchaineDAStep.AddMember,\n },\n }),\n on: { success: \"Success\", error: \"Error\" },\n invoke: {\n id: \"signBlock\",\n src: \"signBlock\",\n input: ({ context }) =>\n context.input.chain((input) => {\n const appStream = input.trustchain.getAppStream(input.appId);\n return eitherSeqRecord({\n lkrpDataSource: input.lkrpDataSource,\n trustchainId: input.trustchain.getId(),\n jwt: input.jwt,\n clientName: input.clientName,\n sessionKeypair: () =>\n context._internalState.chain(({ sessionKeypair }) =>\n required(sessionKeypair, \"Missing session keypair\"),\n ),\n path: () =>\n required(\n appStream.chain((stream) => stream.getPath()).extract(),\n \"Missing application path\",\n ),\n parent: () =>\n required(\n appStream\n .chain((stream) => stream.parse().toMaybe())\n .chainNullable((blocks) => blocks.at(-1)?.hash())\n .chainNullable(hexaStringToBuffer)\n .extract(),\n \"Missing parent block\",\n ),\n blockFlow: {\n type: \"addMember\",\n data: {\n name: input.clientName,\n publicKey: input.keypair.pubKeyToU8a(),\n permissions: input.permissions,\n },\n },\n });\n }),\n onError: { actions: \"assignErrorFromEvent\" },\n onDone: {\n actions: raiseAndAssign(({ event }) =>\n event.output.map(() => ({ raise: \"success\" })),\n ),\n },\n },\n },\n\n AddToNewStream: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: AddToTrustchainDAState.AddMember,\n step: AddToTrustchaineDAStep.AddMember,\n },\n }),\n on: { success: \"Success\", error: \"Error\" },\n invoke: {\n id: \"signBlock\",\n src: \"signBlock\",\n input: ({ context }) =>\n context.input.chain((input) =>\n eitherSeqRecord({\n lkrpDataSource: input.lkrpDataSource,\n trustchainId: input.trustchain.getId(),\n jwt: input.jwt,\n clientName: input.clientName,\n sessionKeypair: () =>\n context._internalState.chain(({ sessionKeypair }) =>\n required(sessionKeypair, \"Missing session keypair\"),\n ),\n path: `m/0'/${input.appId}'/0'`,\n parent: () =>\n required(\n input.trustchain\n .getRootStream()\n .chain((stream) => stream.parse().toMaybe())\n .chainNullable((blocks) => blocks[0]?.hash())\n .chainNullable(hexaStringToBuffer)\n .extract(),\n \"Missing init block\",\n ),\n blockFlow: {\n type: \"derive\",\n data: {\n name: input.clientName,\n publicKey: input.keypair.pubKeyToU8a(),\n permissions: input.permissions,\n },\n },\n }).chain(() => Left(new LKRPTrustchainNotReady())),\n ),\n onError: { actions: \"assignErrorFromEvent\" },\n onDone: {\n actions: raiseAndAssign(({ event }) =>\n event.output.map(() => ({ raise: \"success\" })),\n ),\n },\n },\n },\n\n Success: { type: \"final\" },\n\n Error: { type: \"final\" },\n },\n\n output: ({ context }) => context._internalState.map((_) => undefined),\n });\n }\n\n extractDependencies(internalApi: InternalApi) {\n return {\n initCommand: (): Promise<Either<LKRPDeviceCommandError, Keypair>> =>\n new InitTask(internalApi).run(),\n\n parseStream: async (args: {\n input: Either<AddToTrustchainDAError, ParseStreamToDeviceTaskInput>;\n }) =>\n EitherAsync.liftEither(args.input)\n .chain<AddToTrustchainDAError, unknown>((input) =>\n new ParseStreamToDeviceTask(internalApi).run(input),\n )\n .run(),\n\n signBlock: (args: {\n input: Either<AddToTrustchainDAError, SignBlockTaskInput>;\n }): Promise<Either<AddToTrustchainDAError, void>> =>\n EitherAsync.liftEither(args.input)\n .chain((input) => new SignBlockTask(internalApi).run(input))\n .run(),\n };\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["AddToTrustchainDeviceAction_exports", "__export", "AddToTrustchainDeviceAction", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "import_xstate", "import_AddToTrustchainDeviceActionTypes", "import_Errors", "import_InitTask", "import_ParseStreamToDeviceTask", "import_SignBlockTask", "import_eitherSeqRecord", "import_required", "import_raiseAndAssign", "internalApi", "initCommand", "parseStream", "signBlock", "event", "context", "input", "appStream", "blocks", "sessionKeypair", "stream", "_", "args"]
4
+ "sourcesContent": ["import {\n type DeviceActionStateMachine,\n hexaStringToBuffer,\n type InternalApi,\n type StateMachineTypes,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Either, EitherAsync, Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport {\n type AddToTrustchainDAError,\n type AddToTrustchainDAInput,\n type AddToTrustchainDAIntermediateValue,\n type AddToTrustchainDAInternalState,\n type AddToTrustchainDAOutput,\n AddToTrustchainDAState,\n AddToTrustchaineDAStep,\n} from \"@api/app-binder/AddToTrustchainDeviceActionTypes\";\nimport { type CryptoService } from \"@api/crypto/CryptoService\";\nimport { type KeyPair } from \"@api/crypto/KeyPair\";\nimport { LKRPTrustchainNotReady, LKRPUnknownError } from \"@api/model/Errors\";\nimport { InitTask } from \"@internal/app-binder/task/InitTask\";\nimport {\n ParseStreamToDeviceTask,\n type ParseStreamToDeviceTaskInput,\n} from \"@internal/app-binder/task/ParseStreamToDeviceTask\";\nimport {\n SignBlockTask,\n type SignBlockTaskInput,\n} from \"@internal/app-binder/task/SignBlockTask\";\nimport { eitherSeqRecord } from \"@internal/utils/eitherSeqRecord\";\nimport { required } from \"@internal/utils/required\";\n\nimport { raiseAndAssign } from \"./utils/raiseAndAssign\";\n\nexport class AddToTrustchainDeviceAction extends XStateDeviceAction<\n AddToTrustchainDAOutput,\n AddToTrustchainDAInput,\n AddToTrustchainDAError,\n AddToTrustchainDAIntermediateValue,\n AddToTrustchainDAInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n AddToTrustchainDAOutput,\n AddToTrustchainDAInput,\n AddToTrustchainDAError,\n AddToTrustchainDAIntermediateValue,\n AddToTrustchainDAInternalState\n > {\n type types = StateMachineTypes<\n AddToTrustchainDAOutput,\n AddToTrustchainDAInput,\n AddToTrustchainDAError,\n AddToTrustchainDAIntermediateValue,\n AddToTrustchainDAInternalState\n >;\n\n const { initCommand, parseStream, signBlock } =\n this.extractDependencies(internalApi);\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n\n actors: {\n initCommand: fromPromise(initCommand),\n parseStream: fromPromise(parseStream),\n signBlock: fromPromise(signBlock),\n },\n\n actions: {\n assignErrorFromEvent: raiseAndAssign(\n ({ event }) =>\n Left(\n new LKRPUnknownError(\n String((event as { error?: unknown }).error),\n ),\n ), // NOTE: it should never happen, the error is not typed anymore here\n ),\n },\n\n guards: {\n isTustchainEmpty: ({ context }) =>\n context.input\n .toMaybe()\n .chain((input) => input.trustchain.getAppStream(input.appId))\n .chain((appStream) => appStream.parse().toMaybe())\n .map((blocks) => blocks.length === 0)\n .orDefault(true),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QEEIQCoHt0CcCusALgMYAWAhgJYB2AImAG6XFjLGGWbUB0AktZUIBlOLE7UAxBC5huNBpgDWsmoIDCmALaby1CAG0ADAF1EoAA6YxHLmZAAPRAEZDAdm6unAFgAcXpwBsAKwAzL7+TgA0IACezq4AnB6GIU4ATAFeaUEBuT5pAL4F0agY2PhEZFR0jMys7OJ8AsKi4hJgODiYONzmADbkhABm3ZpyzRraugYmdpbW4naOCAlJaS4JXgGpCZ6r0XEIPgHc2YaGXiEhOdlXTkUlaFi4BCQUNPRMLGw2PPyCIlgYi4ElgeGILCBRlMSBA80Ei1hy2uXm4IVcXlWZwS5xChiCB0QaQSQW4QVcxMC63SCTShWKIFKzwqb2qnzqP0a-xaQLaHS6OGhcysCNsSMQKLRGKxQUMOJS+MJKzlaPSXlcPkSPkMaQxD0ZT3KryqH1q3waXG4AAVyDhYGAhIQcGByJopDJxgplL1bfbHc7XULYfDfktEKETgEnJ4coZMkEsUqnNqySFgtGgsmsWkvPqmUbKu8al96r9rb6HU6XW7+d1egNhqMfXbKwHNEGLCLQ+KEEEMmTdvHXEFjj4-ErNdxDD4wviciT8gEfHnDS9C2yzaXGjaW-7q6DwZDYB24V3EaBlq4NR4wmnpylvCEfEriScvHHdX4cwF1gEV2U11ZU0S05S0dz9KtXXaTpuhPENzwcRArx8G9LgCe9UkuZ9YiQscyR-LwEwCDVzice4GXzQCTWLDkLR4NRSDAYhFGQcx+mYQZxD3V0AFF7EoIgJDgs8xQvZxozSU4NnxK5sl2KIcIQYlJLSEIFx8Mj0PVcjHgAllqPZc0ywYpiWLYvoON+bjND4gTCCEpwYU7BZRMQhAyIpKS5RkkI5M8JUo1JeN8hHVwdQCBI-wo1d9KLQyt0tfNbKIGgoGs91qBUagvVkMQoGoAAhPpMGY4SXOoMN3KyFC3AfBN0jpLwlUxFDrgSdEwoTTVEn-ZljTizdQJ4JL+JS6g0sgmsYJ6fpBhGHAxjywritK2ZgxEiqe28aduCyZMlzTA7NWai5uBxH90xcLYZ16gsgJoozGhGuzUvSsEIVEMrRU2sT3MyJxTkinxIqvNJRzSALvFOSl1QTdYKSi3S+vXYDaLLZ6xomttoIFL7u1+wJ-EBpcQYpcGAsyDxKXnPs6QSW6qIGkC6O4fMADkwAAd3S6RMs9JRcsofKipKxQ8YQ5ZvDBqcwtSeq6RzJMMTO0JvGB3zfOnBnYo3Zn0cNDnucmnG61mxsFu4JaRdWpzT3KyrtpQvbR0OmdjsUjSyXOc4NJ1BInFp7X+t1tGnoNrm3sPT61uc76Hf+4ngeIsmlwhxTiUMbh8mJJ9PESLZAiDlGHoS4bw6N7Ha0FGO7bjraE9fJPQfJxSwgB3zKX9hJtTjIIigZahMAgOA7EonXUce1z4Nc5YAFoFMOWfSVWVZNXnVxtm8Eki-u+KhqaAFWinjbKvVF9rwDi6KSCWUKVzaK9ODifS-LXdJuFe2e3Vdx-HfBMtnRLSNOhxPxnSTucEcfh8TLgfsjXeg0WYmWYqxdixBOJcGsslQgH866-RxADK8Vxu7dXahFF8kUzofkxEELwWxsg3x3gZBB+syhYNeu-dan8CboidivXYCYUiZFcEqIiWc1TA3OLSTU98kZ3SYXrMOZRDbWRwfjNyTgeG7T4cOHEaYz7p1cCEXaH50JjmjHiNMjCmah0tEIKOQJVES3iLsKcN9fCqU-JcAkiltJkllvkQxtV1gyINI-Yue8WY8Wmo4me8RMy7RzFSK6cZ0gUyMeqf2tDpxpnJH3fuQA */\n\n id: \"AddToTrustchainDeviceAction\",\n context: ({ input }) => ({\n input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: Right({\n sessionKeypair: null,\n }),\n }),\n\n initial: \"InitSession\",\n states: {\n InitSession: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: AddToTrustchaineDAStep.Initialize,\n },\n }),\n on: { success: \"ParseStream\", error: \"Error\" },\n invoke: {\n id: \"initCommand\",\n src: \"initCommand\",\n input: ({ context }) =>\n context.input.map((input) => input.cryptoService),\n onError: { actions: \"assignErrorFromEvent\" },\n onDone: {\n actions: raiseAndAssign(({ event }) =>\n event.output.map((sessionKeypair) => ({\n raise: \"success\",\n assign: { sessionKeypair },\n })),\n ),\n },\n },\n },\n\n ParseStream: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: AddToTrustchaineDAStep.ParseStream,\n },\n }),\n on: { success: \"CheckApplicationStreamExist\", error: \"Error\" },\n invoke: {\n id: \"parseStream\",\n src: \"parseStream\",\n input: ({ context }) =>\n context.input.chain((input) =>\n eitherSeqRecord({\n seedBlock: () =>\n required(\n input.trustchain\n .getRootStream()\n .chain((stream) => stream.parse().toMaybe())\n .extract()?.[0],\n \"Missing seed block to parse\",\n ),\n applicationStream: () =>\n required(\n input.trustchain.getAppStream(input.appId).extract(),\n \"Missing application stream to parse\",\n ),\n }),\n ),\n onError: { actions: \"assignErrorFromEvent\" },\n onDone: {\n actions: raiseAndAssign(({ event }) =>\n event.output.map(() => ({ raise: \"success\" })),\n ),\n },\n },\n },\n\n CheckApplicationStreamExist: {\n always: [\n { target: \"AddToNewStream\", guard: \"isTustchainEmpty\" },\n { target: \"AddToExistingStream\" },\n ],\n },\n\n AddToExistingStream: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: AddToTrustchainDAState.AddMember,\n step: AddToTrustchaineDAStep.AddMember,\n },\n }),\n on: { success: \"Success\", error: \"Error\" },\n invoke: {\n id: \"signBlock\",\n src: \"signBlock\",\n input: ({ context }) =>\n context.input.chain((input) => {\n const appStream = input.trustchain.getAppStream(input.appId);\n return eitherSeqRecord({\n cryptoService: input.cryptoService,\n lkrpDataSource: input.lkrpDataSource,\n trustchainId: input.trustchain.getId(),\n jwt: input.jwt,\n clientName: input.clientName,\n sessionKeypair: () =>\n context._internalState.chain(({ sessionKeypair }) =>\n required(sessionKeypair, \"Missing session keypair\"),\n ),\n path: () =>\n required(\n appStream.chain((stream) => stream.getPath()).extract(),\n \"Missing application path\",\n ),\n parent: () =>\n required(\n appStream\n .chain((stream) => stream.parse().toMaybe())\n .chainNullable((blocks) => blocks.at(-1)?.hash())\n .chainNullable(hexaStringToBuffer)\n .extract(),\n \"Missing parent block\",\n ),\n blockFlow: {\n type: \"addMember\",\n data: {\n name: input.clientName,\n publicKey: input.keypair.getPublicKey(),\n permissions: input.permissions,\n },\n },\n });\n }),\n onError: { actions: \"assignErrorFromEvent\" },\n onDone: {\n actions: raiseAndAssign(({ event }) =>\n event.output.map(() => ({ raise: \"success\" })),\n ),\n },\n },\n },\n\n AddToNewStream: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: AddToTrustchainDAState.AddMember,\n step: AddToTrustchaineDAStep.AddMember,\n },\n }),\n on: { success: \"Success\", error: \"Error\" },\n invoke: {\n id: \"signBlock\",\n src: \"signBlock\",\n input: ({ context }) =>\n context.input.chain((input) =>\n eitherSeqRecord({\n lkrpDataSource: input.lkrpDataSource,\n trustchainId: input.trustchain.getId(),\n jwt: input.jwt,\n clientName: input.clientName,\n sessionKeypair: () =>\n context._internalState.chain(({ sessionKeypair }) =>\n required(sessionKeypair, \"Missing session keypair\"),\n ),\n path: `m/0'/${input.appId}'/0'`,\n parent: () =>\n required(\n input.trustchain\n .getRootStream()\n .chain((stream) => stream.parse().toMaybe())\n .chainNullable((blocks) => blocks[0]?.hash())\n .chainNullable(hexaStringToBuffer)\n .extract(),\n \"Missing init block\",\n ),\n blockFlow: {\n type: \"derive\",\n data: {\n name: input.clientName,\n publicKey: input.keypair.getPublicKey(),\n permissions: input.permissions,\n },\n },\n }).chain(() => Left(new LKRPTrustchainNotReady())),\n ),\n onError: { actions: \"assignErrorFromEvent\" },\n onDone: {\n actions: raiseAndAssign(({ event }) =>\n event.output.map(() => ({ raise: \"success\" })),\n ),\n },\n },\n },\n\n Success: { type: \"final\" },\n\n Error: { type: \"final\" },\n },\n\n output: ({ context }) => context._internalState.map((_) => undefined),\n });\n }\n\n extractDependencies(internalApi: InternalApi) {\n return {\n initCommand: async (args: {\n input: Either<AddToTrustchainDAError, CryptoService>;\n }): Promise<Either<AddToTrustchainDAError, KeyPair>> =>\n EitherAsync.liftEither(args.input)\n .chain((cryptoService) =>\n new InitTask(internalApi, cryptoService).run(),\n )\n .run(),\n\n parseStream: async (args: {\n input: Either<AddToTrustchainDAError, ParseStreamToDeviceTaskInput>;\n }) =>\n EitherAsync.liftEither(args.input)\n .chain<AddToTrustchainDAError, unknown>((input) =>\n new ParseStreamToDeviceTask(internalApi).run(input),\n )\n .run(),\n\n signBlock: (args: {\n input: Either<\n AddToTrustchainDAError,\n SignBlockTaskInput & { cryptoService: CryptoService }\n >;\n }): Promise<Either<AddToTrustchainDAError, void>> =>\n EitherAsync.liftEither(args.input)\n .chain((input) =>\n new SignBlockTask(internalApi, input.cryptoService).run(input),\n )\n .run(),\n };\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAOO,2CACPC,EAAsD,qBACtDC,EAA2C,kBAE3CC,EAQO,4DAGPC,EAAyD,6BACzDC,EAAyB,8CACzBC,EAGO,6DACPC,EAGO,mDACPC,EAAgC,2CAChCC,EAAyB,oCAEzBC,EAA+B,kCAExB,MAAMZ,UAAoC,oBAM/C,CACA,iBACEa,EAOA,CASA,KAAM,CAAE,YAAAC,EAAa,YAAAC,EAAa,UAAAC,CAAU,EAC1C,KAAK,oBAAoBH,CAAW,EAEtC,SAAO,SAAM,CACX,MAAO,CACL,MAAO,CAAC,EACR,QAAS,CAAC,EACV,OAAQ,CAAC,CACX,EAEA,OAAQ,CACN,eAAa,eAAYC,CAAW,EACpC,eAAa,eAAYC,CAAW,EACpC,aAAW,eAAYC,CAAS,CAClC,EAEA,QAAS,CACP,wBAAsB,kBACpB,CAAC,CAAE,MAAAC,CAAM,OACP,QACE,IAAI,mBACF,OAAQA,EAA8B,KAAK,CAC7C,CACF,CACJ,CACF,EAEA,OAAQ,CACN,iBAAkB,CAAC,CAAE,QAAAC,CAAQ,IAC3BA,EAAQ,MACL,QAAQ,EACR,MAAOC,GAAUA,EAAM,WAAW,aAAaA,EAAM,KAAK,CAAC,EAC3D,MAAOC,GAAcA,EAAU,MAAM,EAAE,QAAQ,CAAC,EAChD,IAAKC,GAAWA,EAAO,SAAW,CAAC,EACnC,UAAU,EAAI,CACrB,CACF,CAAC,EAAE,cAAc,CAGf,GAAI,8BACJ,QAAS,CAAC,CAAE,MAAAF,CAAM,KAAO,CACvB,MAAAA,EACA,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,EACA,kBAAgB,SAAM,CACpB,eAAgB,IAClB,CAAC,CACH,GAEA,QAAS,cACT,OAAQ,CACN,YAAa,CACX,SAAO,UAAO,CACZ,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,KAAM,yBAAuB,UAC/B,CACF,CAAC,EACD,GAAI,CAAE,QAAS,cAAe,MAAO,OAAQ,EAC7C,OAAQ,CACN,GAAI,cACJ,IAAK,cACL,MAAO,CAAC,CAAE,QAAAD,CAAQ,IAChBA,EAAQ,MAAM,IAAKC,GAAUA,EAAM,aAAa,EAClD,QAAS,CAAE,QAAS,sBAAuB,EAC3C,OAAQ,CACN,WAAS,kBAAe,CAAC,CAAE,MAAAF,CAAM,IAC/BA,EAAM,OAAO,IAAKK,IAAoB,CACpC,MAAO,UACP,OAAQ,CAAE,eAAAA,CAAe,CAC3B,EAAE,CACJ,CACF,CACF,CACF,EAEA,YAAa,CACX,SAAO,UAAO,CACZ,kBAAmB,CACjB,wBAAyB,0BAAwB,KACjD,KAAM,yBAAuB,WAC/B,CACF,CAAC,EACD,GAAI,CAAE,QAAS,8BAA+B,MAAO,OAAQ,EAC7D,OAAQ,CACN,GAAI,cACJ,IAAK,cACL,MAAO,CAAC,CAAE,QAAAJ,CAAQ,IAChBA,EAAQ,MAAM,MAAOC,MACnB,mBAAgB,CACd,UAAW,OACT,YACEA,EAAM,WACH,cAAc,EACd,MAAOI,GAAWA,EAAO,MAAM,EAAE,QAAQ,CAAC,EAC1C,QAAQ,IAAI,CAAC,EAChB,6BACF,EACF,kBAAmB,OACjB,YACEJ,EAAM,WAAW,aAAaA,EAAM,KAAK,EAAE,QAAQ,EACnD,qCACF,CACJ,CAAC,CACH,EACF,QAAS,CAAE,QAAS,sBAAuB,EAC3C,OAAQ,CACN,WAAS,kBAAe,CAAC,CAAE,MAAAF,CAAM,IAC/BA,EAAM,OAAO,IAAI,KAAO,CAAE,MAAO,SAAU,EAAE,CAC/C,CACF,CACF,CACF,EAEA,4BAA6B,CAC3B,OAAQ,CACN,CAAE,OAAQ,iBAAkB,MAAO,kBAAmB,EACtD,CAAE,OAAQ,qBAAsB,CAClC,CACF,EAEA,oBAAqB,CACnB,SAAO,UAAO,CACZ,kBAAmB,CACjB,wBAAyB,yBAAuB,UAChD,KAAM,yBAAuB,SAC/B,CACF,CAAC,EACD,GAAI,CAAE,QAAS,UAAW,MAAO,OAAQ,EACzC,OAAQ,CACN,GAAI,YACJ,IAAK,YACL,MAAO,CAAC,CAAE,QAAAC,CAAQ,IAChBA,EAAQ,MAAM,MAAOC,GAAU,CAC7B,MAAMC,EAAYD,EAAM,WAAW,aAAaA,EAAM,KAAK,EAC3D,SAAO,mBAAgB,CACrB,cAAeA,EAAM,cACrB,eAAgBA,EAAM,eACtB,aAAcA,EAAM,WAAW,MAAM,EACrC,IAAKA,EAAM,IACX,WAAYA,EAAM,WAClB,eAAgB,IACdD,EAAQ,eAAe,MAAM,CAAC,CAAE,eAAAI,CAAe,OAC7C,YAASA,EAAgB,yBAAyB,CACpD,EACF,KAAM,OACJ,YACEF,EAAU,MAAOG,GAAWA,EAAO,QAAQ,CAAC,EAAE,QAAQ,EACtD,0BACF,EACF,OAAQ,OACN,YACEH,EACG,MAAOG,GAAWA,EAAO,MAAM,EAAE,QAAQ,CAAC,EAC1C,cAAeF,GAAWA,EAAO,GAAG,EAAE,GAAG,KAAK,CAAC,EAC/C,cAAc,oBAAkB,EAChC,QAAQ,EACX,sBACF,EACF,UAAW,CACT,KAAM,YACN,KAAM,CACJ,KAAMF,EAAM,WACZ,UAAWA,EAAM,QAAQ,aAAa,EACtC,YAAaA,EAAM,WACrB,CACF,CACF,CAAC,CACH,CAAC,EACH,QAAS,CAAE,QAAS,sBAAuB,EAC3C,OAAQ,CACN,WAAS,kBAAe,CAAC,CAAE,MAAAF,CAAM,IAC/BA,EAAM,OAAO,IAAI,KAAO,CAAE,MAAO,SAAU,EAAE,CAC/C,CACF,CACF,CACF,EAEA,eAAgB,CACd,SAAO,UAAO,CACZ,kBAAmB,CACjB,wBAAyB,yBAAuB,UAChD,KAAM,yBAAuB,SAC/B,CACF,CAAC,EACD,GAAI,CAAE,QAAS,UAAW,MAAO,OAAQ,EACzC,OAAQ,CACN,GAAI,YACJ,IAAK,YACL,MAAO,CAAC,CAAE,QAAAC,CAAQ,IAChBA,EAAQ,MAAM,MAAOC,MACnB,mBAAgB,CACd,eAAgBA,EAAM,eACtB,aAAcA,EAAM,WAAW,MAAM,EACrC,IAAKA,EAAM,IACX,WAAYA,EAAM,WAClB,eAAgB,IACdD,EAAQ,eAAe,MAAM,CAAC,CAAE,eAAAI,CAAe,OAC7C,YAASA,EAAgB,yBAAyB,CACpD,EACF,KAAM,QAAQH,EAAM,KAAK,OACzB,OAAQ,OACN,YACEA,EAAM,WACH,cAAc,EACd,MAAOI,GAAWA,EAAO,MAAM,EAAE,QAAQ,CAAC,EAC1C,cAAeF,GAAWA,EAAO,CAAC,GAAG,KAAK,CAAC,EAC3C,cAAc,oBAAkB,EAChC,QAAQ,EACX,oBACF,EACF,UAAW,CACT,KAAM,SACN,KAAM,CACJ,KAAMF,EAAM,WACZ,UAAWA,EAAM,QAAQ,aAAa,EACtC,YAAaA,EAAM,WACrB,CACF,CACF,CAAC,EAAE,MAAM,OAAM,QAAK,IAAI,wBAAwB,CAAC,CACnD,EACF,QAAS,CAAE,QAAS,sBAAuB,EAC3C,OAAQ,CACN,WAAS,kBAAe,CAAC,CAAE,MAAAF,CAAM,IAC/BA,EAAM,OAAO,IAAI,KAAO,CAAE,MAAO,SAAU,EAAE,CAC/C,CACF,CACF,CACF,EAEA,QAAS,CAAE,KAAM,OAAQ,EAEzB,MAAO,CAAE,KAAM,OAAQ,CACzB,EAEA,OAAQ,CAAC,CAAE,QAAAC,CAAQ,IAAMA,EAAQ,eAAe,IAAKM,GAAG,EAAY,CACtE,CAAC,CACH,CAEA,oBAAoBX,EAA0B,CAC5C,MAAO,CACL,YAAa,MAAOY,GAGlB,cAAY,WAAWA,EAAK,KAAK,EAC9B,MAAOC,GACN,IAAI,WAASb,EAAaa,CAAa,EAAE,IAAI,CAC/C,EACC,IAAI,EAET,YAAa,MAAOD,GAGlB,cAAY,WAAWA,EAAK,KAAK,EAC9B,MAAwCN,GACvC,IAAI,0BAAwBN,CAAW,EAAE,IAAIM,CAAK,CACpD,EACC,IAAI,EAET,UAAYM,GAMV,cAAY,WAAWA,EAAK,KAAK,EAC9B,MAAON,GACN,IAAI,gBAAcN,EAAaM,EAAM,aAAa,EAAE,IAAIA,CAAK,CAC/D,EACC,IAAI,CACX,CACF,CACF",
6
+ "names": ["AddToTrustchainDeviceAction_exports", "__export", "AddToTrustchainDeviceAction", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "import_xstate", "import_AddToTrustchainDeviceActionTypes", "import_Errors", "import_InitTask", "import_ParseStreamToDeviceTask", "import_SignBlockTask", "import_eitherSeqRecord", "import_required", "import_raiseAndAssign", "internalApi", "initCommand", "parseStream", "signBlock", "event", "context", "input", "appStream", "blocks", "sessionKeypair", "stream", "_", "args", "cryptoService"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var D=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var k=(s,i)=>{for(var o in i)D(s,o,{get:i[o],enumerable:!0})},M=(s,i,o,d)=>{if(i&&typeof i=="object"||typeof i=="function")for(let n of v(i))!f.call(s,n)&&n!==o&&D(s,n,{get:()=>i[n],enumerable:!(d=I(i,n))||d.enumerable});return s};var w=s=>M(D({},"__esModule",{value:!0}),s);var W={};k(W,{AuthenticateWithDeviceDeviceAction:()=>K});module.exports=w(W);var u=require("@ledgerhq/device-management-kit"),c=require("purify-ts"),r=require("xstate"),A=require("../../../api/app-binder/AuthenticateDeviceActionTypes"),m=require("../../../api/app-binder/Errors"),E=require("../../app-binder/task/AuthenticateTask"),T=require("../../app-binder/task/ExtractEncryptionKeyTask"),g=require("../../app-binder/task/SignChallengeWithDeviceTask"),y=require("../../utils/eitherSeqRecord"),a=require("../../utils/required"),h=require("./utils/raiseAndAssign"),S=require("./AddToTrustchainDeviceAction");const l="Ledger Sync";class K extends u.XStateDeviceAction{makeStateMachine(i){const{deviceAuth:o,getTrustchain:d,extractEncryptionKey:n}=this.extractDependencies(i);return(0,r.setup)({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new u.OpenAppDeviceAction({input:{appName:l}}).makeStateMachine(i),deviceAuth:(0,r.fromPromise)(o),getTrustchain:(0,r.fromPromise)(d),addToTrustchainStateMachine:new S.AddToTrustchainDeviceAction({input:(0,c.Left)(new m.LKRPMissingDataError("Missing input for GetEncryptionKey"))}).makeStateMachine(i),extractEncryptionKey:(0,r.fromPromise)(n)},actions:{assignErrorFromEvent:(0,h.raiseAndAssign)(({event:t})=>(0,c.Left)(new m.LKRPUnknownError(String(t.error))))},guards:{isTrustchainMember:({context:t})=>t._internalState.toMaybe().map(e=>e.wasAddedToTrustchain||e.trustchain?.getAppStream(t.input.appId).mapOrDefault(p=>p.hasMember(t.input.keypair.pubKeyToHex()),!1)).extract()??!1}}).createMachine({id:"AuthenticateWithDeviceDeviceAction",context:({input:t})=>({input:t,intermediateValue:{requiredUserInteraction:u.UserInteractionRequired.None},_internalState:(0,c.Right)({trustchainId:null,jwt:null,trustchain:null,encryptionKey:null,wasAddedToTrustchain:!1})}),initial:"OpenApp",states:{OpenApp:{on:{success:"DeviceAuth",error:"Error"},invoke:{id:"openApp",src:"openAppStateMachine",onSnapshot:{actions:(0,r.assign)({intermediateValue:({event:t})=>({step:A.AuthenticateDAStep.OpenApp,...t.snapshot.context.intermediateValue})})},input:{appName:l},onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,h.raiseAndAssign)(({event:t})=>t.output.map(()=>({raise:"success"})))}}},DeviceAuth:{entry:(0,r.assign)({intermediateValue:{step:A.AuthenticateDAStep.Authenticate,requiredUserInteraction:A.AuthenticateDAState.Authenticate}}),on:{success:"GetTrustchain",error:"Error"},invoke:{id:"deviceAuth",src:"deviceAuth",input:({context:t})=>t.input,onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,h.raiseAndAssign)(({event:t})=>t.output.chain(e=>e.trustchainId.caseOf({Nothing:()=>(0,c.Left)(new m.LKRPTrustchainNotReady),Just:p=>(0,c.Right)({raise:"success",assign:{jwt:e.jwt,trustchainId:p}})})))}}},GetTrustchain:{entry:(0,r.assign)({intermediateValue:{step:A.AuthenticateDAStep.GetTrustchain,requiredUserInteraction:u.UserInteractionRequired.None}}),on:{success:"CheckIsMembers",error:"Error"},invoke:{id:"getTrustchain",src:"getTrustchain",input:({context:t})=>t._internalState.chain(e=>(0,y.eitherSeqRecord)({lkrpDataSource:t.input.lkrpDataSource,trustchainId:()=>(0,a.required)(e.trustchainId,"Missing Trustchain ID for GetTrustchain"),jwt:()=>(0,a.required)(e.jwt,"Missing JWT for GetTrustchain")})),onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,h.raiseAndAssign)(({event:t})=>t.output.map(e=>({raise:"success",assign:{trustchain:e}})))}}},CheckIsMembers:{always:[{target:"ExtractEncryptionKey",guard:"isTrustchainMember"},{target:"AddToTrustchain"}]},AddToTrustchain:{on:{success:"GetTrustchain",error:"Error"},invoke:{id:"AddToTrustchain",src:"addToTrustchainStateMachine",onSnapshot:{actions:(0,r.assign)({intermediateValue:({event:t})=>t.snapshot.context.intermediateValue})},input:({context:t})=>t._internalState.mapLeft(()=>new m.LKRPMissingDataError("Missing data in the input for AddToTrustchain")).chain(e=>(0,y.eitherSeqRecord)({lkrpDataSource:t.input.lkrpDataSource,keypair:t.input.keypair,clientName:t.input.clientName,permissions:t.input.permissions,jwt:()=>(0,a.required)(e.jwt,"Missing JWT for AddToTrustchain"),appId:t.input.appId,trustchain:()=>(0,a.required)(e.trustchain,"Missing Trustchain for AddToTrustchain")})),onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,h.raiseAndAssign)(({event:t})=>t.output.map(()=>({raise:"success",assign:{wasAddedToTrustchain:!0}})))}}},ExtractEncryptionKey:{entry:(0,r.assign)({intermediateValue:{step:A.AuthenticateDAStep.ExtractEncryptionKey,requiredUserInteraction:u.UserInteractionRequired.None}}),on:{success:"Success",error:"Error"},invoke:{id:"ExtractEncryptionKey",src:"extractEncryptionKey",input:({context:t})=>({keypair:t.input.keypair,stream:t._internalState.chain(({trustchain:e})=>(0,a.required)(e?.getAppStream(t.input.appId).extract(),"Missing application stream for ExtractEncryptionKey"))}),onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,h.raiseAndAssign)(({event:t})=>t.output.map(e=>({raise:"success",assign:{encryptionKey:e}})))}}},Success:{type:"final"},Error:{type:"final"}},output:({context:t})=>t._internalState.chain(e=>(0,y.eitherSeqRecord)({trustchainId:()=>(0,a.required)(e.trustchainId,"Missing Trustchain ID in the output"),jwt:()=>(0,a.required)(e.jwt,"Missing JWT in the output"),applicationPath:()=>(0,a.required)(e.trustchain?.getAppStream(t.input.appId).chain(p=>p.getPath()).extract(),"Missing application path in the output"),encryptionKey:()=>(0,a.required)(e.encryptionKey,"Missing encryption key in the output")}))})}extractDependencies(i){const o=new E.AuthenticateTask,d=new T.ExtractEncryptionKeyTask;return{deviceAuth:({input:n})=>o.run(n.lkrpDataSource,new g.SignChallengeWithDeviceTask(i)),getTrustchain:n=>c.EitherAsync.liftEither(n.input).chain(({lkrpDataSource:t,trustchainId:e,jwt:p})=>t.getTrustchainById(e,p)).run(),extractEncryptionKey:async({input:n})=>c.EitherAsync.liftEither(n.stream).chain(t=>d.run(n.keypair,t))}}}0&&(module.exports={AuthenticateWithDeviceDeviceAction});
1
+ "use strict";var D=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var k=(s,i)=>{for(var o in i)D(s,o,{get:i[o],enumerable:!0})},M=(s,i,o,y)=>{if(i&&typeof i=="object"||typeof i=="function")for(let r of I(i))!f.call(s,r)&&r!==o&&D(s,r,{get:()=>i[r],enumerable:!(y=v(i,r))||y.enumerable});return s};var w=s=>M(D({},"__esModule",{value:!0}),s);var W={};k(W,{AuthenticateWithDeviceDeviceAction:()=>K});module.exports=w(W);var u=require("@ledgerhq/device-management-kit"),c=require("purify-ts"),n=require("xstate"),A=require("../../../api/app-binder/AuthenticateDeviceActionTypes"),m=require("../../../api/model/Errors"),E=require("../../app-binder/task/AuthenticateTask"),S=require("../../app-binder/task/ExtractEncryptionKeyTask"),T=require("../../app-binder/task/SignChallengeWithDeviceTask"),d=require("../../utils/eitherSeqRecord"),a=require("../../utils/required"),h=require("./utils/raiseAndAssign"),g=require("./AddToTrustchainDeviceAction");const l="Ledger Sync";class K extends u.XStateDeviceAction{makeStateMachine(i){const{deviceAuth:o,getTrustchain:y,extractEncryptionKey:r}=this.extractDependencies(i);return(0,n.setup)({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new u.OpenAppDeviceAction({input:{appName:l}}).makeStateMachine(i),deviceAuth:(0,n.fromPromise)(o),getTrustchain:(0,n.fromPromise)(y),addToTrustchainStateMachine:new g.AddToTrustchainDeviceAction({input:(0,c.Left)(new m.LKRPMissingDataError("Missing input for GetEncryptionKey"))}).makeStateMachine(i),extractEncryptionKey:(0,n.fromPromise)(r)},actions:{assignErrorFromEvent:(0,h.raiseAndAssign)(({event:t})=>(0,c.Left)(new m.LKRPUnknownError(String(t.error))))},guards:{isTrustchainMember:({context:t})=>t._internalState.toMaybe().map(e=>e.wasAddedToTrustchain||e.trustchain?.getAppStream(t.input.appId).mapOrDefault(p=>p.hasMember(t.input.keypair.getPublicKeyToHex()),!1)).extract()??!1}}).createMachine({id:"AuthenticateWithDeviceDeviceAction",context:({input:t})=>({input:t,intermediateValue:{requiredUserInteraction:u.UserInteractionRequired.None},_internalState:(0,c.Right)({trustchainId:null,jwt:null,trustchain:null,encryptionKey:null,wasAddedToTrustchain:!1})}),initial:"OpenApp",states:{OpenApp:{on:{success:"DeviceAuth",error:"Error"},invoke:{id:"openApp",src:"openAppStateMachine",onSnapshot:{actions:(0,n.assign)({intermediateValue:({event:t})=>({step:A.AuthenticateDAStep.OpenApp,...t.snapshot.context.intermediateValue})})},input:{appName:l},onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,h.raiseAndAssign)(({event:t})=>t.output.map(()=>({raise:"success"})))}}},DeviceAuth:{entry:(0,n.assign)({intermediateValue:{step:A.AuthenticateDAStep.Authenticate,requiredUserInteraction:A.AuthenticateDAState.Authenticate}}),on:{success:"GetTrustchain",error:"Error"},invoke:{id:"deviceAuth",src:"deviceAuth",input:({context:t})=>t.input,onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,h.raiseAndAssign)(({event:t})=>t.output.chain(e=>e.trustchainId.caseOf({Nothing:()=>(0,c.Left)(new m.LKRPTrustchainNotReady),Just:p=>(0,c.Right)({raise:"success",assign:{jwt:e.jwt,trustchainId:p}})})))}}},GetTrustchain:{entry:(0,n.assign)({intermediateValue:{step:A.AuthenticateDAStep.GetTrustchain,requiredUserInteraction:u.UserInteractionRequired.None}}),on:{success:"CheckIsMembers",error:"Error"},invoke:{id:"getTrustchain",src:"getTrustchain",input:({context:t})=>t._internalState.chain(e=>(0,d.eitherSeqRecord)({lkrpDataSource:t.input.lkrpDataSource,trustchainId:()=>(0,a.required)(e.trustchainId,"Missing Trustchain ID for GetTrustchain"),jwt:()=>(0,a.required)(e.jwt,"Missing JWT for GetTrustchain")})),onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,h.raiseAndAssign)(({event:t})=>t.output.map(e=>({raise:"success",assign:{trustchain:e}})))}}},CheckIsMembers:{always:[{target:"ExtractEncryptionKey",guard:"isTrustchainMember"},{target:"AddToTrustchain"}]},AddToTrustchain:{on:{success:"GetTrustchain",error:"Error"},invoke:{id:"AddToTrustchain",src:"addToTrustchainStateMachine",onSnapshot:{actions:(0,n.assign)({intermediateValue:({event:t})=>t.snapshot.context.intermediateValue})},input:({context:t})=>t._internalState.mapLeft(()=>new m.LKRPMissingDataError("Missing data in the input for AddToTrustchain")).chain(e=>(0,d.eitherSeqRecord)({lkrpDataSource:t.input.lkrpDataSource,cryptoService:t.input.cryptoService,keypair:t.input.keypair,clientName:t.input.clientName,permissions:t.input.permissions,jwt:()=>(0,a.required)(e.jwt,"Missing JWT for AddToTrustchain"),appId:t.input.appId,trustchain:()=>(0,a.required)(e.trustchain,"Missing Trustchain for AddToTrustchain")})),onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,h.raiseAndAssign)(({event:t})=>t.output.map(()=>({raise:"success",assign:{wasAddedToTrustchain:!0}})))}}},ExtractEncryptionKey:{entry:(0,n.assign)({intermediateValue:{step:A.AuthenticateDAStep.ExtractEncryptionKey,requiredUserInteraction:u.UserInteractionRequired.None}}),on:{success:"Success",error:"Error"},invoke:{id:"ExtractEncryptionKey",src:"extractEncryptionKey",input:({context:t})=>({cryptoService:t.input.cryptoService,keypair:t.input.keypair,stream:t._internalState.chain(({trustchain:e})=>(0,a.required)(e?.getAppStream(t.input.appId).extract(),"Missing application stream for ExtractEncryptionKey"))}),onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,h.raiseAndAssign)(({event:t})=>t.output.map(e=>({raise:"success",assign:{encryptionKey:e}})))}}},Success:{type:"final"},Error:{type:"final"}},output:({context:t})=>t._internalState.chain(e=>(0,d.eitherSeqRecord)({trustchainId:()=>(0,a.required)(e.trustchainId,"Missing Trustchain ID in the output"),jwt:()=>(0,a.required)(e.jwt,"Missing JWT in the output"),applicationPath:()=>(0,a.required)(e.trustchain?.getAppStream(t.input.appId).chain(p=>p.getPath()).extract(),"Missing application path in the output"),encryptionKey:()=>(0,a.required)(e.encryptionKey,"Missing encryption key in the output")}))})}extractDependencies(i){const o=new E.AuthenticateTask,y=new S.ExtractEncryptionKeyTask;return{deviceAuth:({input:r})=>o.run(r.lkrpDataSource,new T.SignChallengeWithDeviceTask(i)),getTrustchain:r=>c.EitherAsync.liftEither(r.input).chain(({lkrpDataSource:t,trustchainId:e,jwt:p})=>t.getTrustchainById(e,p)).run(),extractEncryptionKey:async({input:r})=>c.EitherAsync.liftEither(r.stream).chain(t=>y.run(r.cryptoService,r.keypair,t))}}}0&&(module.exports={AuthenticateWithDeviceDeviceAction});
2
2
  //# sourceMappingURL=AuthenticateWithDeviceDeviceAction.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.ts"],
4
- "sourcesContent": ["import {\n type DeviceActionStateMachine,\n type InternalApi,\n OpenAppDeviceAction,\n type StateMachineTypes,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Either, EitherAsync, Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport {\n type AuthenticateDAError,\n type AuthenticateDAIntermediateValue,\n type AuthenticateDAOutput,\n AuthenticateDAState,\n AuthenticateDAStep,\n} from \"@api/app-binder/AuthenticateDeviceActionTypes\";\nimport {\n LKRPMissingDataError,\n LKRPTrustchainNotReady,\n LKRPUnknownError,\n} from \"@api/app-binder/Errors\";\nimport { type JWT, type Keypair } from \"@api/index\";\nimport { AuthenticateTask } from \"@internal/app-binder/task/AuthenticateTask\";\nimport { ExtractEncryptionKeyTask } from \"@internal/app-binder/task/ExtractEncryptionKeyTask\";\nimport { SignChallengeWithDeviceTask } from \"@internal/app-binder/task/SignChallengeWithDeviceTask\";\nimport { type LKRPDataSource } from \"@internal/lkrp-datasource/data/LKRPDataSource\";\nimport { eitherSeqRecord } from \"@internal/utils/eitherSeqRecord\";\nimport { type LKRPBlockStream } from \"@internal/utils/LKRPBlockStream\";\nimport { required } from \"@internal/utils/required\";\n\nimport {\n type AuthenticateWithDeviceDAInput,\n type AuthenticateWithDeviceDAInternalState,\n} from \"./models/AuthenticateWithDeviceDeviceActionTypes\";\nimport { raiseAndAssign } from \"./utils/raiseAndAssign\";\nimport { AddToTrustchainDeviceAction } from \"./AddToTrustchainDeviceAction\";\n\nconst APP_NAME = \"Ledger Sync\";\n\nexport class AuthenticateWithDeviceDeviceAction extends XStateDeviceAction<\n AuthenticateDAOutput,\n AuthenticateWithDeviceDAInput,\n AuthenticateDAError,\n AuthenticateDAIntermediateValue,\n AuthenticateWithDeviceDAInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n AuthenticateDAOutput,\n AuthenticateWithDeviceDAInput,\n AuthenticateDAError,\n AuthenticateDAIntermediateValue,\n AuthenticateWithDeviceDAInternalState\n > {\n type types = StateMachineTypes<\n AuthenticateDAOutput,\n AuthenticateWithDeviceDAInput,\n AuthenticateDAError,\n AuthenticateDAIntermediateValue,\n AuthenticateWithDeviceDAInternalState\n >;\n\n const { deviceAuth, getTrustchain, extractEncryptionKey } =\n this.extractDependencies(internalApi);\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n\n actors: {\n openAppStateMachine: new OpenAppDeviceAction({\n input: { appName: APP_NAME },\n }).makeStateMachine(internalApi),\n\n deviceAuth: fromPromise(deviceAuth),\n\n getTrustchain: fromPromise(getTrustchain),\n\n addToTrustchainStateMachine: new AddToTrustchainDeviceAction({\n input: Left(\n new LKRPMissingDataError(\"Missing input for GetEncryptionKey\"),\n ),\n }).makeStateMachine(internalApi),\n\n extractEncryptionKey: fromPromise(extractEncryptionKey),\n },\n\n actions: {\n assignErrorFromEvent: raiseAndAssign(\n ({ event }) =>\n Left(\n new LKRPUnknownError(\n String((event as { error?: unknown }).error),\n ),\n ), // NOTE: it should never happen, the error is not typed anymore here\n ),\n },\n\n guards: {\n isTrustchainMember: ({ context }) =>\n context._internalState\n .toMaybe()\n .map(\n (state) =>\n state.wasAddedToTrustchain ||\n state.trustchain\n ?.getAppStream(context.input.appId)\n .mapOrDefault(\n (stream) =>\n stream.hasMember(context.input.keypair.pubKeyToHex()),\n false,\n ),\n )\n .extract() ?? false,\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QEECuAXAFmAduglgMYCG6YA6vlgCJgBuRYtDhYyhBA9jgHQDyAB1zIBAgMQRuYHvhx1OAa2mchOEQIDaABgC6iUAM6wq+bvpAAPRAEYAzADYeATgAcAFltuntrdYBMAfYANCAAnogA7G6OttYREU5aWgERyQC+aSFoWLgEJGSUNPSMzIzsXLyCwqJiYABOdZx1PAIANqQAZk0Atjwq1Zq65obGFeZWCNbWAKw80-Z+Xvb2ni5OEdPWIeEI9tN+PC720RtuyU52GVkY2HhEpBRUmKWsL2wcppWq6mKwqISsWCwbR6JAgEYmMxgia2FwRHhaCIuaxaLz7ZbTLTBMKIFwuA7JLTePwJVxRCJXEDZW55B6FZ7FV6M94VfjfGr1Rp1EHDIyQnDjRAOA7WPGYiLHaxOab47Y2GVaHheOKiiVOAIBSnU3L3ApPN5vcqfHiGm4SKQyOSKaQQZnUnlgiFjaGIeZuQ62Py+PxSrQucVyhASxyuNzRRKI3wrLU3HX5R5FFhMO0fbgmu1mzlNFrtdBdOq9W1J+1DR1852gCbTTE8WyuWFReyIhJbHG7CK2OaxPx4tz+bzTGM5O7x+kGlOs01YX7-QHA0sGcufQVB7w8FYk6XS6YRaxuaaB9WKwlraJe+z4txDmm6hMMpOG1O8KeYWoNJoOxejZcuoMJBH2FEdbVlM+5uIGMyxOuixaJi0wOLY0xXpkVKxiOdL6syj6sgA4mA6AACp1KgsDoIQmDELI5o4NIsjyEoPAwIRxGkeRlE4J+4JLlClaIOsLg8I2sE+CqTYuIGLios47jRLCe7rL415xhhiYlBOxp4cxJFkRRVFZs0bSdD0jH4UR2lsbInFOj+vEIOs1jrru+IbBcWJrIGu4OfBdjKtKorWEp6F6qpTLFk+PCaWZrG6TgM4AnA86gl+-Irv4YbQWiGpNmSh4XnMCz7P5vhgYFtLBfealhbhpksTp7FvlyVncQKv5TPiCKwU2iKLIkfgQW4ErOOSThhiiixuC4pW3mOWHqWmADC2CEAoACSsAALJgN0ABG9SwGITXfjxljyhNzj7n48G2J6+J+oe8Q8AE6r7vYTgFR2U2jphD5zbwi1gMta2bTte0HdYSVcUdLW2TMSKCZ4N3TL1SHYjs-h4jwUqgXWCwUih2pBXe45VcayAQBABGcFFdVUZINGWvR0hkxTVO1RZHELpDKWtUcswokhiIyv5tgQV6IoXlEqL+j6TifSpFWhWU4XM5T1Psw12aGXmxkq6z5kxYd3Mw7zgkdnWEQ9k4VthhBUyKvYe62Kk5w+D2cvlcTSusrrasxXFc6GxWJ0ID6r3OH4iFhscZywf1UpKgs1gO2sF51u7ROzSTaY+2zfv6YHNnB6H8KIcS6oW69cIQddnaJ5JhLddG+NoWVGc-VnvAAKIWOgdTEBwnc4IQdShAIFQANJgKE1G0VaDHd73-foIPw+jxPU8F8dEyijW7gSqinhaA44Ftv6tdEk7l37DuH3N8Orcze3XvGgvfcD0PI9j58k-T-pOZGQWHgr8l4r0-uvUIm9obBx3l5GY8wUQOzrNKDyTZMbwIuNKdwb106P0qs-NMwD36ry-twH+-sEqQJXKHJw4dI7RDDEkfY913TrHVDKDwCwr44O+ng1gRoCE9zfsvD+a9v5Tw1tyTm1kt6IGLrWJGnpy5+Ern1NsKIzjriOHvJGfZ1QZBQjgTgtp4BggJg-Hhis+FPl5FDFcABaVsOx5izGPhbUayJYiDjvjeL6IVkwdzZAMGxRtg4DQkuleIRJUTHB6kSbhfjsLGhfMEoOVYUSYxVPMBYPhOoST2EqJ2MphQXlgn4eJCt-H4N4JFXO7EUmFwmBcRwgFRQDQWE2ECh4j4FI2EiDwA0kYBW8cpD2mcqk8H+oDDaW1dp1BMclVJNgHDwmWDHWEb0PDqlyjQrEV8BrrD8E08pnsrHe3JqrWpsh6kyMmPEBypdrpiVcHsauSRoJxDWHYREMxJrDMJrgyxLIX6CJASIkhOAf7XKgdvO58jvAOD9M8g8bZpQEgKt5aIex-THLGac40ABlWcCUoVUNiJ2RYGx5gBD7E2CI91OwW2eohAI1YJo4qfnigh746gkt-AESSj1E5JAri4bs1dPS1l3EifYcJYI7n0WkIAA */\n\n id: \"AuthenticateWithDeviceDeviceAction\",\n context: ({ input }): types[\"context\"] => ({\n input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: Right({\n trustchainId: null,\n jwt: null,\n trustchain: null,\n encryptionKey: null,\n wasAddedToTrustchain: false,\n }),\n }),\n\n initial: \"OpenApp\",\n states: {\n OpenApp: {\n on: { success: \"DeviceAuth\", error: \"Error\" },\n invoke: {\n id: \"openApp\",\n src: \"openAppStateMachine\",\n onSnapshot: {\n actions: assign({\n intermediateValue: ({ event }) => ({\n step: AuthenticateDAStep.OpenApp,\n ...event.snapshot.context.intermediateValue,\n }),\n }),\n },\n input: { appName: APP_NAME },\n onError: { actions: \"assignErrorFromEvent\" },\n onDone: {\n actions: raiseAndAssign(({ event }) =>\n event.output.map(() => ({ raise: \"success\" })),\n ),\n },\n },\n },\n\n DeviceAuth: {\n entry: assign({\n intermediateValue: {\n step: AuthenticateDAStep.Authenticate,\n requiredUserInteraction: AuthenticateDAState.Authenticate,\n },\n }),\n on: { success: \"GetTrustchain\", error: \"Error\" },\n invoke: {\n id: \"deviceAuth\",\n src: \"deviceAuth\",\n input: ({ context }) => context.input,\n onError: { actions: \"assignErrorFromEvent\" },\n onDone: {\n actions: raiseAndAssign(({ event }) =>\n event.output.chain((payload) =>\n payload.trustchainId.caseOf({\n Nothing: () => Left(new LKRPTrustchainNotReady()),\n Just: (trustchainId) =>\n Right({\n raise: \"success\",\n assign: { jwt: payload.jwt, trustchainId },\n }),\n }),\n ),\n ),\n },\n },\n },\n\n GetTrustchain: {\n entry: assign({\n intermediateValue: {\n step: AuthenticateDAStep.GetTrustchain,\n requiredUserInteraction: UserInteractionRequired.None,\n },\n }),\n on: { success: \"CheckIsMembers\", error: \"Error\" },\n invoke: {\n id: \"getTrustchain\",\n src: \"getTrustchain\",\n input: ({ context }) =>\n context._internalState.chain((state) =>\n eitherSeqRecord({\n lkrpDataSource: context.input.lkrpDataSource,\n trustchainId: () =>\n required(\n state.trustchainId,\n \"Missing Trustchain ID for GetTrustchain\",\n ),\n jwt: () =>\n required(state.jwt, \"Missing JWT for GetTrustchain\"),\n }),\n ),\n onError: { actions: \"assignErrorFromEvent\" },\n onDone: {\n actions: raiseAndAssign(({ event }) =>\n event.output.map((trustchain) => ({\n raise: \"success\",\n assign: { trustchain },\n })),\n ),\n },\n },\n },\n\n CheckIsMembers: {\n always: [\n { target: \"ExtractEncryptionKey\", guard: \"isTrustchainMember\" },\n { target: \"AddToTrustchain\" },\n ],\n },\n\n AddToTrustchain: {\n on: {\n success: \"GetTrustchain\",\n error: \"Error\",\n },\n invoke: {\n id: \"AddToTrustchain\",\n src: \"addToTrustchainStateMachine\",\n onSnapshot: {\n actions: assign({\n intermediateValue: ({ event }) =>\n event.snapshot.context.intermediateValue,\n }),\n },\n input: ({ context }) =>\n context._internalState\n .mapLeft(\n () =>\n new LKRPMissingDataError(\n \"Missing data in the input for AddToTrustchain\",\n ),\n )\n .chain((state) =>\n eitherSeqRecord({\n lkrpDataSource: context.input.lkrpDataSource,\n keypair: context.input.keypair,\n clientName: context.input.clientName,\n permissions: context.input.permissions,\n jwt: () =>\n required(state.jwt, \"Missing JWT for AddToTrustchain\"),\n appId: context.input.appId,\n trustchain: () =>\n required(\n state.trustchain,\n \"Missing Trustchain for AddToTrustchain\",\n ),\n }),\n ),\n onError: { actions: \"assignErrorFromEvent\" },\n onDone: {\n actions: raiseAndAssign(({ event }) =>\n event.output.map(() => ({\n raise: \"success\",\n assign: { wasAddedToTrustchain: true },\n })),\n ),\n },\n },\n },\n\n ExtractEncryptionKey: {\n entry: assign({\n intermediateValue: {\n step: AuthenticateDAStep.ExtractEncryptionKey,\n requiredUserInteraction: UserInteractionRequired.None,\n },\n }),\n on: { success: \"Success\", error: \"Error\" },\n invoke: {\n id: \"ExtractEncryptionKey\",\n src: \"extractEncryptionKey\",\n input: ({ context }) => ({\n keypair: context.input.keypair,\n stream: context._internalState.chain(({ trustchain }) =>\n required(\n trustchain?.getAppStream(context.input.appId).extract(),\n \"Missing application stream for ExtractEncryptionKey\",\n ),\n ),\n }),\n onError: { actions: \"assignErrorFromEvent\" },\n onDone: {\n actions: raiseAndAssign(({ event }) =>\n event.output.map((encryptionKey) => ({\n raise: \"success\",\n assign: { encryptionKey },\n })),\n ),\n },\n },\n },\n\n Success: { type: \"final\" },\n\n Error: { type: \"final\" },\n },\n\n output: ({ context }) =>\n context._internalState.chain((state) =>\n eitherSeqRecord({\n trustchainId: () =>\n required(\n state.trustchainId,\n \"Missing Trustchain ID in the output\",\n ),\n jwt: () => required(state.jwt, \"Missing JWT in the output\"),\n applicationPath: () =>\n required(\n state.trustchain\n ?.getAppStream(context.input.appId)\n .chain((stream) => stream.getPath())\n .extract(),\n \"Missing application path in the output\",\n ),\n encryptionKey: () =>\n required(\n state.encryptionKey,\n \"Missing encryption key in the output\",\n ),\n }),\n ),\n });\n }\n\n extractDependencies(internalApi: InternalApi) {\n const authentication = new AuthenticateTask();\n const encryptionKeyExtraction = new ExtractEncryptionKeyTask();\n\n return {\n deviceAuth: ({ input }: { input: AuthenticateWithDeviceDAInput }) =>\n authentication.run(\n input.lkrpDataSource,\n new SignChallengeWithDeviceTask(internalApi),\n ),\n\n getTrustchain: (args: {\n input: Either<\n AuthenticateDAError,\n {\n lkrpDataSource: LKRPDataSource;\n trustchainId: string;\n jwt: JWT;\n }\n >;\n }) =>\n EitherAsync.liftEither(args.input)\n .chain(({ lkrpDataSource, trustchainId, jwt }) =>\n lkrpDataSource.getTrustchainById(trustchainId, jwt),\n )\n .run(),\n\n extractEncryptionKey: async ({\n input,\n }: {\n input: {\n keypair: Keypair;\n stream: Either<AuthenticateDAError, LKRPBlockStream>;\n };\n }) =>\n EitherAsync.liftEither(input.stream).chain((stream) =>\n encryptionKeyExtraction.run(input.keypair, stream),\n ),\n };\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n type DeviceActionStateMachine,\n type InternalApi,\n OpenAppDeviceAction,\n type StateMachineTypes,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Either, EitherAsync, Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport {\n type AuthenticateDAError,\n type AuthenticateDAIntermediateValue,\n type AuthenticateDAOutput,\n AuthenticateDAState,\n AuthenticateDAStep,\n} from \"@api/app-binder/AuthenticateDeviceActionTypes\";\nimport { type CryptoService } from \"@api/crypto/CryptoService\";\nimport { type KeyPair } from \"@api/crypto/KeyPair\";\nimport {\n LKRPMissingDataError,\n LKRPTrustchainNotReady,\n LKRPUnknownError,\n} from \"@api/model/Errors\";\nimport { type JWT } from \"@api/model/JWT\";\nimport { AuthenticateTask } from \"@internal/app-binder/task/AuthenticateTask\";\nimport { ExtractEncryptionKeyTask } from \"@internal/app-binder/task/ExtractEncryptionKeyTask\";\nimport { SignChallengeWithDeviceTask } from \"@internal/app-binder/task/SignChallengeWithDeviceTask\";\nimport { type LKRPDataSource } from \"@internal/lkrp-datasource/data/LKRPDataSource\";\nimport { eitherSeqRecord } from \"@internal/utils/eitherSeqRecord\";\nimport { type LKRPBlockStream } from \"@internal/utils/LKRPBlockStream\";\nimport { required } from \"@internal/utils/required\";\n\nimport {\n type AuthenticateWithDeviceDAInput,\n type AuthenticateWithDeviceDAInternalState,\n} from \"./models/AuthenticateWithDeviceDeviceActionTypes\";\nimport { raiseAndAssign } from \"./utils/raiseAndAssign\";\nimport { AddToTrustchainDeviceAction } from \"./AddToTrustchainDeviceAction\";\n\nconst APP_NAME = \"Ledger Sync\";\n\nexport class AuthenticateWithDeviceDeviceAction extends XStateDeviceAction<\n AuthenticateDAOutput,\n AuthenticateWithDeviceDAInput,\n AuthenticateDAError,\n AuthenticateDAIntermediateValue,\n AuthenticateWithDeviceDAInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n AuthenticateDAOutput,\n AuthenticateWithDeviceDAInput,\n AuthenticateDAError,\n AuthenticateDAIntermediateValue,\n AuthenticateWithDeviceDAInternalState\n > {\n type types = StateMachineTypes<\n AuthenticateDAOutput,\n AuthenticateWithDeviceDAInput,\n AuthenticateDAError,\n AuthenticateDAIntermediateValue,\n AuthenticateWithDeviceDAInternalState\n >;\n\n const { deviceAuth, getTrustchain, extractEncryptionKey } =\n this.extractDependencies(internalApi);\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n\n actors: {\n openAppStateMachine: new OpenAppDeviceAction({\n input: { appName: APP_NAME },\n }).makeStateMachine(internalApi),\n\n deviceAuth: fromPromise(deviceAuth),\n\n getTrustchain: fromPromise(getTrustchain),\n\n addToTrustchainStateMachine: new AddToTrustchainDeviceAction({\n input: Left(\n new LKRPMissingDataError(\"Missing input for GetEncryptionKey\"),\n ),\n }).makeStateMachine(internalApi),\n\n extractEncryptionKey: fromPromise(extractEncryptionKey),\n },\n\n actions: {\n assignErrorFromEvent: raiseAndAssign(\n ({ event }) =>\n Left(\n new LKRPUnknownError(\n String((event as { error?: unknown }).error),\n ),\n ), // NOTE: it should never happen, the error is not typed anymore here\n ),\n },\n\n guards: {\n isTrustchainMember: ({ context }) =>\n context._internalState\n .toMaybe()\n .map(\n (state) =>\n state.wasAddedToTrustchain ||\n state.trustchain\n ?.getAppStream(context.input.appId)\n .mapOrDefault(\n (stream) =>\n stream.hasMember(\n context.input.keypair.getPublicKeyToHex(),\n ),\n false,\n ),\n )\n .extract() ?? false,\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QEECuAXAFmAduglgMYCG6YA6vlgCJgBuRYtDhYyhBA9jgHQDyAB1zIBAgMQRuYHvhx1OAa2mchOEQIDaABgC6iUAM6wq+bvpAAPRAEYAzADYeATgAcAFltuntrdYBMAfYANCAAnogA7G6OttYREU5aWgERyQC+aSFoWLgEJGSUNPSMzIzsXLyCwqJiYABOdZx1PAIANqQAZk0Atjwq1Zq65obGFeZWCNbWAKw80-Z+Xvb2ni5OEdPWIeEI9tN+PC720RtuyU52GVkY2HhEpBRUmKWsL2wcppWq6mKwqISsWCwbR6JAgEYmMxgia2FwRHhaCIuaxaLz7ZbTLTBMKIFwuA7JLTePwJVxRCJXEDZW55B6FZ7FV6M94VfjfGr1Rp1EHDIyQnDjRAOA7WPGYiLHaxOab47Y2GVaHheOKiiVOAIBSnU3L3ApPN5vcqfHiGm4SKQyOSKaQQZnUnlgiFjaGIeZuQ62Py+PxSrQucVyhASxyuNzRRKI3wrLU3HX5R5FFhMO0fbgmu1mzlNFrtdBdOq9W1J+1DR1852gCbTTE8WyuWFReyIhJbHG7CK2OaxPx4tz+bzTGM5O7x+kGlOs01YX7-QHA0sGcufQVB7w8FYk6XS6YRaxuaaB9WKwlraJe+z4txDmm6hMMpOG1O8KeYWoNJoOxejZcuoMJBH2FEdbVlM+5uIGMyxOuixaJi0wOLY0xXpkVKxiOdL6syj6sgA4mA6AACp1KgsDoIQmDELI5o4NIsjyEoPAwIRxGkeRlE4J+4JLlClaIOsLg8I2sE+CqTYuIGLios47jRLCe7rL415xhhiYlBOxp4cxJFkRRVFZs0bSdD0jH4UR2lsbInFOj+vEIOs1jrru+IbBcWJrIGu4OfBdjKtKorWEp6F6qpTLFk+PCaWZrG6TgM4AnA86gl+-Irv4YbQWiGpNmSh4XnMCz7P5vhgYFtLBfealhbhpksTp7FvlyVncQKv5TPiCKwU2iKLIkfgQW4ErOOSThhiiixuC4pW3mOWHqWmADC2CEAoACSsAALJgN0ABG9SwGITXfjxljyhNzj7n48G2J6+J+oe8Q8AE6r7vYTgFR2U2jphD5zbwi1gMta2bTte0HdYSVcUdLW2TMSKCZ4N3TL1SHYjs-h4jwUqgXWCwUih2pBXe45VcayAQBABGcFFdVUZINGWvR0hkxTVO1RZHELpDKWtUcswokhiIyv5tgQV6IoXlEqL+j6TifSpFWhWU4XM5T1Psw12aGXmxkq6z5kxYd3Mw7zgkdnWEQ9k4VthhBUyKvYe62Kk5w+D2cvlcTSusrrasxXFc6GxWJ0ID6r3OH4iFhscZywf1UpKgs1gO2sF51u7ROzSTaY+2zfv6YHNnB6H8KIcS6oW69cIQddnaJ5JhLddG+NoWVGc-VnvAAKIWOgdTEBwnc4IQdShAIFQANJgKE1G0VaDHd73-foIPw+jxPU8F8dEyijW7gSqinhaA44Ftv6tdEk7l37DuH3N8Orcze3XvGgvfcD0PI9j58k-T-pOZGQWHgr8l4r0-uvUIm9obBx3l5GY8wUQOzrNKDyTZMbwIuNKdwb106P0qs-NMwD36ry-twH+-sEqQJXKHJw4dI7RDDEkfY913TrHVDKDwCwr44O+ng1gRoCE9zfsvD+a9v5Tw1tyTm1kt6IGLrWJGnpy5+Ern1NsKIzjriOHvJGfZ1QZBQjgTgtp4BggJg-Hhis+FPl5FDFcABaVsOx5izGPhbUayJYiDjvjeL6IVkwdzZAMGxRtg4DQkuleIRJUTHB6kSbhfjsLGhfMEoOVYUSYxVPMBYPhOoST2EqJ2MphQXlgn4eJCt-H4N4JFXO7EUmFwmBcRwgFRQDQWE2ECh4j4FI2EiDwA0kYBW8cpD2mcqk8H+oDDaW1dp1BMclVJNgHDwmWDHWEb0PDqlyjQrEV8BrrD8E08pnsrHe3JqrWpsh6kyMmPEBypdrpiVcHsauSRoJxDWHYREMxJrDMJrgyxLIX6CJASIkhOAf7XKgdvO58jvAOD9M8g8bZpQEgKt5aIex-THLGac40ABlWcCUoVUNiJ2RYGx5gBD7E2CI91OwW2eohAI1YJo4qfnigh746gkt-AESSj1E5JAri4bs1dPS1l3EifYcJYI7n0WkIAA */\n\n id: \"AuthenticateWithDeviceDeviceAction\",\n context: ({ input }): types[\"context\"] => ({\n input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: Right({\n trustchainId: null,\n jwt: null,\n trustchain: null,\n encryptionKey: null,\n wasAddedToTrustchain: false,\n }),\n }),\n\n initial: \"OpenApp\",\n states: {\n OpenApp: {\n on: { success: \"DeviceAuth\", error: \"Error\" },\n invoke: {\n id: \"openApp\",\n src: \"openAppStateMachine\",\n onSnapshot: {\n actions: assign({\n intermediateValue: ({ event }) => ({\n step: AuthenticateDAStep.OpenApp,\n ...event.snapshot.context.intermediateValue,\n }),\n }),\n },\n input: { appName: APP_NAME },\n onError: { actions: \"assignErrorFromEvent\" },\n onDone: {\n actions: raiseAndAssign(({ event }) =>\n event.output.map(() => ({ raise: \"success\" })),\n ),\n },\n },\n },\n\n DeviceAuth: {\n entry: assign({\n intermediateValue: {\n step: AuthenticateDAStep.Authenticate,\n requiredUserInteraction: AuthenticateDAState.Authenticate,\n },\n }),\n on: { success: \"GetTrustchain\", error: \"Error\" },\n invoke: {\n id: \"deviceAuth\",\n src: \"deviceAuth\",\n input: ({ context }) => context.input,\n onError: { actions: \"assignErrorFromEvent\" },\n onDone: {\n actions: raiseAndAssign(({ event }) =>\n event.output.chain((payload) =>\n payload.trustchainId.caseOf({\n Nothing: () => Left(new LKRPTrustchainNotReady()),\n Just: (trustchainId) =>\n Right({\n raise: \"success\",\n assign: { jwt: payload.jwt, trustchainId },\n }),\n }),\n ),\n ),\n },\n },\n },\n\n GetTrustchain: {\n entry: assign({\n intermediateValue: {\n step: AuthenticateDAStep.GetTrustchain,\n requiredUserInteraction: UserInteractionRequired.None,\n },\n }),\n on: { success: \"CheckIsMembers\", error: \"Error\" },\n invoke: {\n id: \"getTrustchain\",\n src: \"getTrustchain\",\n input: ({ context }) =>\n context._internalState.chain((state) =>\n eitherSeqRecord({\n lkrpDataSource: context.input.lkrpDataSource,\n trustchainId: () =>\n required(\n state.trustchainId,\n \"Missing Trustchain ID for GetTrustchain\",\n ),\n jwt: () =>\n required(state.jwt, \"Missing JWT for GetTrustchain\"),\n }),\n ),\n onError: { actions: \"assignErrorFromEvent\" },\n onDone: {\n actions: raiseAndAssign(({ event }) =>\n event.output.map((trustchain) => ({\n raise: \"success\",\n assign: { trustchain },\n })),\n ),\n },\n },\n },\n\n CheckIsMembers: {\n always: [\n { target: \"ExtractEncryptionKey\", guard: \"isTrustchainMember\" },\n { target: \"AddToTrustchain\" },\n ],\n },\n\n AddToTrustchain: {\n on: {\n success: \"GetTrustchain\",\n error: \"Error\",\n },\n invoke: {\n id: \"AddToTrustchain\",\n src: \"addToTrustchainStateMachine\",\n onSnapshot: {\n actions: assign({\n intermediateValue: ({ event }) =>\n event.snapshot.context.intermediateValue,\n }),\n },\n input: ({ context }) =>\n context._internalState\n .mapLeft(\n () =>\n new LKRPMissingDataError(\n \"Missing data in the input for AddToTrustchain\",\n ),\n )\n .chain((state) =>\n eitherSeqRecord({\n lkrpDataSource: context.input.lkrpDataSource,\n cryptoService: context.input.cryptoService,\n keypair: context.input.keypair,\n clientName: context.input.clientName,\n permissions: context.input.permissions,\n jwt: () =>\n required(state.jwt, \"Missing JWT for AddToTrustchain\"),\n appId: context.input.appId,\n trustchain: () =>\n required(\n state.trustchain,\n \"Missing Trustchain for AddToTrustchain\",\n ),\n }),\n ),\n onError: { actions: \"assignErrorFromEvent\" },\n onDone: {\n actions: raiseAndAssign(({ event }) =>\n event.output.map(() => ({\n raise: \"success\",\n assign: { wasAddedToTrustchain: true },\n })),\n ),\n },\n },\n },\n\n ExtractEncryptionKey: {\n entry: assign({\n intermediateValue: {\n step: AuthenticateDAStep.ExtractEncryptionKey,\n requiredUserInteraction: UserInteractionRequired.None,\n },\n }),\n on: { success: \"Success\", error: \"Error\" },\n invoke: {\n id: \"ExtractEncryptionKey\",\n src: \"extractEncryptionKey\",\n input: ({ context }) => ({\n cryptoService: context.input.cryptoService,\n keypair: context.input.keypair,\n stream: context._internalState.chain(({ trustchain }) =>\n required(\n trustchain?.getAppStream(context.input.appId).extract(),\n \"Missing application stream for ExtractEncryptionKey\",\n ),\n ),\n }),\n onError: { actions: \"assignErrorFromEvent\" },\n onDone: {\n actions: raiseAndAssign(({ event }) =>\n event.output.map((encryptionKey) => ({\n raise: \"success\",\n assign: { encryptionKey },\n })),\n ),\n },\n },\n },\n\n Success: { type: \"final\" },\n\n Error: { type: \"final\" },\n },\n\n output: ({ context }) =>\n context._internalState.chain((state) =>\n eitherSeqRecord({\n trustchainId: () =>\n required(\n state.trustchainId,\n \"Missing Trustchain ID in the output\",\n ),\n jwt: () => required(state.jwt, \"Missing JWT in the output\"),\n applicationPath: () =>\n required(\n state.trustchain\n ?.getAppStream(context.input.appId)\n .chain((stream) => stream.getPath())\n .extract(),\n \"Missing application path in the output\",\n ),\n encryptionKey: () =>\n required(\n state.encryptionKey,\n \"Missing encryption key in the output\",\n ),\n }),\n ),\n });\n }\n\n extractDependencies(internalApi: InternalApi) {\n const authentication = new AuthenticateTask();\n const encryptionKeyExtraction = new ExtractEncryptionKeyTask();\n\n return {\n deviceAuth: ({ input }: { input: AuthenticateWithDeviceDAInput }) =>\n authentication.run(\n input.lkrpDataSource,\n new SignChallengeWithDeviceTask(internalApi),\n ),\n\n getTrustchain: (args: {\n input: Either<\n AuthenticateDAError,\n {\n lkrpDataSource: LKRPDataSource;\n trustchainId: string;\n jwt: JWT;\n }\n >;\n }) =>\n EitherAsync.liftEither(args.input)\n .chain(({ lkrpDataSource, trustchainId, jwt }) =>\n lkrpDataSource.getTrustchainById(trustchainId, jwt),\n )\n .run(),\n\n extractEncryptionKey: async ({\n input,\n }: {\n input: {\n cryptoService: CryptoService;\n keypair: KeyPair;\n stream: Either<AuthenticateDAError, LKRPBlockStream>;\n };\n }) =>\n EitherAsync.liftEither(input.stream).chain((stream) =>\n encryptionKeyExtraction.run(\n input.cryptoService,\n input.keypair,\n stream,\n ),\n ),\n };\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["AuthenticateWithDeviceDeviceAction_exports", "__export", "AuthenticateWithDeviceDeviceAction", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "import_xstate", "import_AuthenticateDeviceActionTypes", "import_Errors", "import_AuthenticateTask", "import_ExtractEncryptionKeyTask", "import_SignChallengeWithDeviceTask", "import_eitherSeqRecord", "import_required", "import_raiseAndAssign", "import_AddToTrustchainDeviceAction", "APP_NAME", "internalApi", "deviceAuth", "getTrustchain", "extractEncryptionKey", "event", "context", "state", "stream", "input", "payload", "trustchainId", "trustchain", "encryptionKey", "authentication", "encryptionKeyExtraction", "args", "lkrpDataSource", "jwt"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var m=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var g=(a,e)=>{for(var c in e)m(a,c,{get:e[c],enumerable:!0})},k=(a,e,c,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of S(e))!I.call(a,t)&&t!==c&&m(a,t,{get:()=>e[t],enumerable:!(r=d(e,t))||r.enumerable});return a};var f=a=>k(m({},"__esModule",{value:!0}),a);var x={};g(x,{AuthenticateWithKeypairDeviceAction:()=>T});module.exports=f(x);var o=require("@ledgerhq/device-management-kit"),p=require("purify-ts"),n=require("xstate"),A=require("../../../api/app-binder/AuthenticateDeviceActionTypes"),h=require("../../../api/app-binder/Errors"),E=require("../../app-binder/task/AuthenticateTask"),D=require("../../app-binder/task/ExtractEncryptionKeyTask"),l=require("../../app-binder/task/SignChallengeWithKeypairTask"),K=require("../../utils/eitherSeqRecord"),s=require("../../utils/required"),y=require("./utils/raiseAndAssign");class T extends o.XStateDeviceAction{execute(){const e=this.makeStateMachine();return this._subscribeToStateMachine(e)}makeStateMachine(){const{keypairAuth:e,getTrustchain:c,extractEncryptionKey:r}=this.extractDependencies();return(0,n.setup)({types:{input:{},context:{},output:{}},actors:{keypairAuth:(0,n.fromPromise)(e),getTrustchain:(0,n.fromPromise)(c),extractEncryptionKey:(0,n.fromPromise)(r)},actions:{assignErrorFromEvent:(0,y.raiseAndAssign)(({event:t})=>(0,p.Left)(new h.LKRPUnknownError(String(t.error))))}}).createMachine({id:"AuthenticateWithKeypairDeviceAction",context:({input:t})=>({input:t,intermediateValue:{requiredUserInteraction:o.UserInteractionRequired.None},_internalState:(0,p.Right)({jwt:null,trustchain:null,encryptionKey:null})}),initial:"KeypairAuth",states:{KeypairAuth:{entry:(0,n.assign)({intermediateValue:{requiredUserInteraction:o.UserInteractionRequired.None,step:A.AuthenticateDAStep.Authenticate}}),on:{success:"GetTrustchain",error:"Error"},invoke:{id:"keypairAuth",src:"keypairAuth",input:({context:t})=>t.input,onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,y.raiseAndAssign)(({context:t,event:i})=>i.output.map(({jwt:u})=>({raise:"success",assign:{jwt:u}})).mapLeft(u=>u instanceof h.LKRPDataSourceError&&u.status==="UNAUTHORIZED"?new h.LKRPUnauthorizedError(t.input.trustchainId):u))}}},GetTrustchain:{entry:(0,n.assign)({intermediateValue:{requiredUserInteraction:o.UserInteractionRequired.None,step:A.AuthenticateDAStep.GetTrustchain}}),on:{success:"ExtractEncryptionKey",error:"Error"},invoke:{id:"getTrustchain",src:"getTrustchain",input:({context:t})=>({lkrpDataSource:t.input.lkrpDataSource,trustchainId:t.input.trustchainId,jwt:t._internalState.chain(({jwt:i})=>(0,s.required)(i,"Missing JWT for GetTrustchain"))}),onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,y.raiseAndAssign)(({event:t})=>t.output.map(i=>({raise:"success",assign:{trustchain:i}})))}}},ExtractEncryptionKey:{entry:(0,n.assign)({intermediateValue:{requiredUserInteraction:o.UserInteractionRequired.None,step:A.AuthenticateDAStep.ExtractEncryptionKey}}),on:{success:"Success",error:"Error"},invoke:{id:"ExtractEncryptionKey",src:"extractEncryptionKey",input:({context:t})=>({keypair:t.input.keypair,stream:t._internalState.chain(({trustchain:i})=>(0,s.required)(i?.getAppStream(t.input.appId).extract(),"Missing application stream for ExtractEncryptionKey"))}),onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,y.raiseAndAssign)(({event:t})=>t.output.map(i=>({raise:"success",assign:{encryptionKey:i}})))}}},Success:{type:"final"},Error:{type:"final"}},output:({context:t})=>t._internalState.chain(i=>(0,K.eitherSeqRecord)({trustchainId:t.input.trustchainId,jwt:()=>(0,s.required)(i.jwt,"Missing JWT in the output"),applicationPath:()=>(0,s.required)(i.trustchain?.getAppStream(t.input.appId).chain(u=>u.getPath()).extract(),"Missing application path in the output"),encryptionKey:()=>(0,s.required)(i.encryptionKey,"Missing encryption key in the output")}))})}extractDependencies(){const e=new E.AuthenticateTask,c=new D.ExtractEncryptionKeyTask;return{keypairAuth:({input:r})=>e.run(r.lkrpDataSource,new l.SignChallengeWithKeypairTask(r.keypair,r.trustchainId)),getTrustchain:({input:r})=>p.EitherAsync.liftEither(r.jwt).chain(t=>r.lkrpDataSource.getTrustchainById(r.trustchainId,t)).run(),extractEncryptionKey:async({input:r})=>p.EitherAsync.liftEither(r.stream).chain(t=>c.run(r.keypair,t))}}}0&&(module.exports={AuthenticateWithKeypairDeviceAction});
1
+ "use strict";var m=Object.defineProperty;var K=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var g=(a,r)=>{for(var c in r)m(a,c,{get:r[c],enumerable:!0})},k=(a,r,c,e)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of d(r))!I.call(a,t)&&t!==c&&m(a,t,{get:()=>r[t],enumerable:!(e=K(r,t))||e.enumerable});return a};var f=a=>k(m({},"__esModule",{value:!0}),a);var v={};g(v,{AuthenticateWithKeypairDeviceAction:()=>T});module.exports=f(v);var u=require("@ledgerhq/device-management-kit"),p=require("purify-ts"),n=require("xstate"),A=require("../../../api/app-binder/AuthenticateDeviceActionTypes"),h=require("../../../api/model/Errors"),E=require("../../app-binder/task/AuthenticateTask"),D=require("../../app-binder/task/ExtractEncryptionKeyTask"),l=require("../../app-binder/task/SignChallengeWithKeypairTask"),S=require("../../utils/eitherSeqRecord"),s=require("../../utils/required"),y=require("./utils/raiseAndAssign");class T extends u.XStateDeviceAction{execute(){const r=this.makeStateMachine();return this._subscribeToStateMachine(r)}makeStateMachine(){const{keypairAuth:r,getTrustchain:c,extractEncryptionKey:e}=this.extractDependencies();return(0,n.setup)({types:{input:{},context:{},output:{}},actors:{keypairAuth:(0,n.fromPromise)(r),getTrustchain:(0,n.fromPromise)(c),extractEncryptionKey:(0,n.fromPromise)(e)},actions:{assignErrorFromEvent:(0,y.raiseAndAssign)(({event:t})=>(0,p.Left)(new h.LKRPUnknownError(String(t.error))))}}).createMachine({id:"AuthenticateWithKeypairDeviceAction",context:({input:t})=>({input:t,intermediateValue:{requiredUserInteraction:u.UserInteractionRequired.None},_internalState:(0,p.Right)({jwt:null,trustchain:null,encryptionKey:null})}),initial:"KeypairAuth",states:{KeypairAuth:{entry:(0,n.assign)({intermediateValue:{requiredUserInteraction:u.UserInteractionRequired.None,step:A.AuthenticateDAStep.Authenticate}}),on:{success:"GetTrustchain",error:"Error"},invoke:{id:"keypairAuth",src:"keypairAuth",input:({context:t})=>t.input,onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,y.raiseAndAssign)(({context:t,event:i})=>i.output.map(({jwt:o})=>({raise:"success",assign:{jwt:o}})).mapLeft(o=>o instanceof h.LKRPDataSourceError&&o.status==="UNAUTHORIZED"?new h.LKRPUnauthorizedError(t.input.trustchainId):o))}}},GetTrustchain:{entry:(0,n.assign)({intermediateValue:{requiredUserInteraction:u.UserInteractionRequired.None,step:A.AuthenticateDAStep.GetTrustchain}}),on:{success:"ExtractEncryptionKey",error:"Error"},invoke:{id:"getTrustchain",src:"getTrustchain",input:({context:t})=>({lkrpDataSource:t.input.lkrpDataSource,trustchainId:t.input.trustchainId,jwt:t._internalState.chain(({jwt:i})=>(0,s.required)(i,"Missing JWT for GetTrustchain"))}),onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,y.raiseAndAssign)(({event:t})=>t.output.map(i=>({raise:"success",assign:{trustchain:i}})))}}},ExtractEncryptionKey:{entry:(0,n.assign)({intermediateValue:{requiredUserInteraction:u.UserInteractionRequired.None,step:A.AuthenticateDAStep.ExtractEncryptionKey}}),on:{success:"Success",error:"Error"},invoke:{id:"ExtractEncryptionKey",src:"extractEncryptionKey",input:({context:t})=>({cryptoService:t.input.cryptoService,keypair:t.input.keypair,stream:t._internalState.chain(({trustchain:i})=>(0,s.required)(i?.getAppStream(t.input.appId).extract(),"Missing application stream for ExtractEncryptionKey"))}),onError:{actions:"assignErrorFromEvent"},onDone:{actions:(0,y.raiseAndAssign)(({event:t})=>t.output.map(i=>({raise:"success",assign:{encryptionKey:i}})))}}},Success:{type:"final"},Error:{type:"final"}},output:({context:t})=>t._internalState.chain(i=>(0,S.eitherSeqRecord)({trustchainId:t.input.trustchainId,jwt:()=>(0,s.required)(i.jwt,"Missing JWT in the output"),applicationPath:()=>(0,s.required)(i.trustchain?.getAppStream(t.input.appId).chain(o=>o.getPath()).extract(),"Missing application path in the output"),encryptionKey:()=>(0,s.required)(i.encryptionKey,"Missing encryption key in the output")}))})}extractDependencies(){const r=new E.AuthenticateTask,c=new D.ExtractEncryptionKeyTask;return{keypairAuth:({input:e})=>r.run(e.lkrpDataSource,new l.SignChallengeWithKeypairTask(e.cryptoService,e.keypair,e.trustchainId)),getTrustchain:({input:e})=>p.EitherAsync.liftEither(e.jwt).chain(t=>e.lkrpDataSource.getTrustchainById(e.trustchainId,t)).run(),extractEncryptionKey:async({input:e})=>p.EitherAsync.liftEither(e.stream).chain(t=>c.run(e.cryptoService,e.keypair,t))}}}0&&(module.exports={AuthenticateWithKeypairDeviceAction});
2
2
  //# sourceMappingURL=AuthenticateWithKeypairDeviceAction.js.map