@ledgerhq/device-trusted-app-kit-ledger-keyring-protocol 0.0.0-multisig-20250822145545 → 0.0.0-web-ble-29-08---20250829104351

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/{model → app-binder}/Errors.js.map +1 -1
  8. package/lib/cjs/api/app-binder/GetAppNameCommandTypes.js +2 -0
  9. package/lib/cjs/api/app-binder/GetAppNameCommandTypes.js.map +7 -0
  10. package/lib/cjs/api/app-binder/GetSeedIdCommandTypes.js +2 -0
  11. package/lib/cjs/api/app-binder/GetSeedIdCommandTypes.js.map +7 -0
  12. package/lib/cjs/api/app-binder/GetVersionCommandTypes.js +1 -1
  13. package/lib/cjs/api/app-binder/GetVersionCommandTypes.js.map +1 -1
  14. package/lib/cjs/api/app-binder/InitCommandTypes.js +2 -0
  15. package/lib/cjs/api/app-binder/InitCommandTypes.js.map +7 -0
  16. package/lib/cjs/api/app-binder/KeypairFromBytes.js +2 -0
  17. package/lib/cjs/api/app-binder/KeypairFromBytes.js.map +7 -0
  18. package/lib/cjs/api/app-binder/LKRPTypes.js +2 -0
  19. package/lib/cjs/api/app-binder/LKRPTypes.js.map +7 -0
  20. package/lib/cjs/api/app-binder/ParseStreamBlockCommandCommandTypes.js +2 -0
  21. package/lib/cjs/api/app-binder/ParseStreamBlockCommandCommandTypes.js.map +7 -0
  22. package/lib/cjs/api/app-binder/ParseStreamBlockHeaderCommandTypes.js +2 -0
  23. package/lib/cjs/api/app-binder/ParseStreamBlockHeaderCommandTypes.js.map +7 -0
  24. package/lib/cjs/api/app-binder/ParseStreamBlockSignatureTypes.js +2 -0
  25. package/lib/cjs/api/app-binder/ParseStreamBlockSignatureTypes.js.map +7 -0
  26. package/lib/cjs/api/app-binder/SetTrustedMemberTypes.js +2 -0
  27. package/lib/cjs/api/app-binder/SetTrustedMemberTypes.js.map +7 -0
  28. package/lib/cjs/api/app-binder/SignBlockCommandTypes.js +2 -0
  29. package/lib/cjs/api/app-binder/SignBlockCommandTypes.js.map +7 -0
  30. package/lib/cjs/api/app-binder/SignBlockHeaderCommandTypes.js +2 -0
  31. package/lib/cjs/api/app-binder/SignBlockHeaderCommandTypes.js.map +7 -0
  32. package/lib/cjs/api/app-binder/SignBlockSignatureCommandTypes.js +2 -0
  33. package/lib/cjs/api/app-binder/SignBlockSignatureCommandTypes.js.map +7 -0
  34. package/lib/cjs/api/app-binder/SignBlockSingleCommandTypes.js +2 -0
  35. package/lib/cjs/api/app-binder/SignBlockSingleCommandTypes.js.map +7 -0
  36. package/lib/cjs/api/index.js +1 -1
  37. package/lib/cjs/api/index.js.map +2 -2
  38. package/lib/cjs/internal/DefaultLedgerKeyringProtocol.js +1 -1
  39. package/lib/cjs/internal/DefaultLedgerKeyringProtocol.js.map +3 -3
  40. package/lib/cjs/internal/app-binder/LedgerKeyringProtocolBinder.js +1 -1
  41. package/lib/cjs/internal/app-binder/LedgerKeyringProtocolBinder.js.map +3 -3
  42. package/lib/cjs/internal/app-binder/command/GetAppNameCommand.js +1 -1
  43. package/lib/cjs/internal/app-binder/command/GetAppNameCommand.js.map +2 -2
  44. package/lib/cjs/internal/app-binder/command/GetSeedIdCommand.js +1 -1
  45. package/lib/cjs/internal/app-binder/command/GetSeedIdCommand.js.map +3 -3
  46. package/lib/cjs/internal/app-binder/command/GetSeedIdCommand.test.js +2 -2
  47. package/lib/cjs/internal/app-binder/command/GetSeedIdCommand.test.js.map +3 -3
  48. package/lib/cjs/internal/app-binder/command/GetVersionCommand.js.map +2 -2
  49. package/lib/cjs/internal/app-binder/command/InitCommand.js +1 -1
  50. package/lib/cjs/internal/app-binder/command/InitCommand.js.map +2 -2
  51. package/lib/cjs/internal/app-binder/command/InitCommand.test.js +1 -1
  52. package/lib/cjs/internal/app-binder/command/InitCommand.test.js.map +2 -2
  53. package/lib/cjs/internal/app-binder/command/ParseBlockSignatureCommand.js +1 -1
  54. package/lib/cjs/internal/app-binder/command/ParseBlockSignatureCommand.js.map +2 -2
  55. package/lib/cjs/internal/app-binder/command/ParseBlockSignatureCommand.test.js +1 -1
  56. package/lib/cjs/internal/app-binder/command/ParseBlockSignatureCommand.test.js.map +2 -2
  57. package/lib/cjs/internal/app-binder/command/ParseStreamBlockCommand.js.map +2 -2
  58. package/lib/cjs/internal/app-binder/command/ParseStreamBlockCommand.test.js +1 -1
  59. package/lib/cjs/internal/app-binder/command/ParseStreamBlockCommand.test.js.map +2 -2
  60. package/lib/cjs/internal/app-binder/command/ParseStreamBlockHeader.js +1 -1
  61. package/lib/cjs/internal/app-binder/command/ParseStreamBlockHeader.js.map +2 -2
  62. package/lib/cjs/internal/app-binder/command/ParseStreamBlockHeader.test.js.map +2 -2
  63. package/lib/cjs/internal/app-binder/command/SetTrustedMemberCommand.js +1 -1
  64. package/lib/cjs/internal/app-binder/command/SetTrustedMemberCommand.js.map +2 -2
  65. package/lib/cjs/internal/app-binder/command/SetTrustedMemberCommand.test.js.map +2 -2
  66. package/lib/cjs/internal/app-binder/command/SignBlockHeader.js +1 -1
  67. package/lib/cjs/internal/app-binder/command/SignBlockHeader.js.map +2 -2
  68. package/lib/cjs/internal/app-binder/command/SignBlockHeader.test.js +1 -1
  69. package/lib/cjs/internal/app-binder/command/SignBlockHeader.test.js.map +2 -2
  70. package/lib/cjs/internal/app-binder/command/SignBlockSignatureCommand.js +1 -1
  71. package/lib/cjs/internal/app-binder/command/SignBlockSignatureCommand.js.map +2 -2
  72. package/lib/cjs/internal/app-binder/command/SignBlockSignatureCommand.test.js +1 -1
  73. package/lib/cjs/internal/app-binder/command/SignBlockSignatureCommand.test.js.map +2 -2
  74. package/lib/cjs/internal/app-binder/command/SignBlockSingleCommand.js +1 -1
  75. package/lib/cjs/internal/app-binder/command/SignBlockSingleCommand.js.map +2 -2
  76. package/lib/cjs/internal/app-binder/command/SignBlockSingleCommand.test.js +1 -1
  77. package/lib/cjs/internal/app-binder/command/SignBlockSingleCommand.test.js.map +2 -2
  78. package/lib/cjs/internal/app-binder/device-action/AddToTrustchainDeviceAction.js +1 -1
  79. package/lib/cjs/internal/app-binder/device-action/AddToTrustchainDeviceAction.js.map +3 -3
  80. package/lib/cjs/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.js +1 -1
  81. package/lib/cjs/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.js.map +2 -2
  82. package/lib/cjs/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.js +1 -1
  83. package/lib/cjs/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.js.map +2 -2
  84. package/lib/cjs/internal/app-binder/device-action/models/AuthenticateWithDeviceDeviceActionTypes.js +1 -1
  85. package/lib/cjs/internal/app-binder/device-action/models/AuthenticateWithDeviceDeviceActionTypes.js.map +1 -1
  86. package/lib/cjs/internal/app-binder/device-action/models/AuthenticateWithKeypairDeviceActionTypes.js +1 -1
  87. package/lib/cjs/internal/app-binder/device-action/models/AuthenticateWithKeypairDeviceActionTypes.js.map +1 -1
  88. package/lib/cjs/internal/app-binder/task/ExtractEncryptionKeyTask.js +1 -1
  89. package/lib/cjs/internal/app-binder/task/ExtractEncryptionKeyTask.js.map +3 -3
  90. package/lib/cjs/internal/app-binder/task/InitTask.js +1 -1
  91. package/lib/cjs/internal/app-binder/task/InitTask.js.map +3 -3
  92. package/lib/cjs/internal/app-binder/task/ParseStreamToDeviceTask.js +1 -1
  93. package/lib/cjs/internal/app-binder/task/ParseStreamToDeviceTask.js.map +3 -3
  94. package/lib/cjs/internal/app-binder/task/SignBlockTask.js +1 -1
  95. package/lib/cjs/internal/app-binder/task/SignBlockTask.js.map +3 -3
  96. package/lib/cjs/internal/app-binder/task/SignChallengeWithKeypairTask.js +1 -1
  97. package/lib/cjs/internal/app-binder/task/SignChallengeWithKeypairTask.js.map +3 -3
  98. package/lib/cjs/internal/app-binder/task/SignChallengeWithKeypairTask.test.js +1 -1
  99. package/lib/cjs/internal/app-binder/task/SignChallengeWithKeypairTask.test.js.map +3 -3
  100. package/lib/cjs/internal/app-binder/task/utils/TrustedProperties.js +1 -1
  101. package/lib/cjs/internal/app-binder/task/utils/TrustedProperties.js.map +2 -2
  102. package/lib/cjs/internal/di.js +1 -1
  103. package/lib/cjs/internal/di.js.map +3 -3
  104. package/lib/cjs/internal/externalTypes.js +1 -1
  105. package/lib/cjs/internal/externalTypes.js.map +2 -2
  106. package/lib/cjs/internal/lkrp-datasource/data/HttpLKRPDataSource.js +1 -1
  107. package/lib/cjs/internal/lkrp-datasource/data/HttpLKRPDataSource.js.map +2 -2
  108. package/lib/cjs/internal/lkrp-datasource/data/HttpLKRPDataSource.test.js +1 -1
  109. package/lib/cjs/internal/lkrp-datasource/data/HttpLKRPDataSource.test.js.map +2 -2
  110. package/lib/cjs/internal/lkrp-datasource/data/LKRPDataSource.js.map +1 -1
  111. package/lib/cjs/internal/use-cases/authentication/AuthenticateUseCase.js +1 -1
  112. package/lib/cjs/internal/use-cases/authentication/AuthenticateUseCase.js.map +2 -2
  113. package/lib/cjs/internal/use-cases/authentication/DecryptDataUseCase.js +1 -1
  114. package/lib/cjs/internal/use-cases/authentication/DecryptDataUseCase.js.map +3 -3
  115. package/lib/cjs/internal/use-cases/authentication/EncryptDataUseCase.js +1 -1
  116. package/lib/cjs/internal/use-cases/authentication/EncryptDataUseCase.js.map +3 -3
  117. package/lib/cjs/internal/utils/LKRPBlock.js +4 -4
  118. package/lib/cjs/internal/utils/LKRPBlock.js.map +3 -3
  119. package/lib/cjs/internal/utils/LKRPBlock.test.js +3 -3
  120. package/lib/cjs/internal/utils/LKRPBlock.test.js.map +3 -3
  121. package/lib/cjs/internal/utils/LKRPBlockStream.js +2 -2
  122. package/lib/cjs/internal/utils/LKRPBlockStream.js.map +3 -3
  123. package/lib/cjs/internal/utils/LKRPBlockStream.test.js +2 -2
  124. package/lib/cjs/internal/utils/LKRPBlockStream.test.js.map +3 -3
  125. package/lib/cjs/internal/utils/LKRPCommand.js +2 -2
  126. package/lib/cjs/internal/utils/LKRPCommand.js.map +3 -3
  127. package/lib/cjs/internal/utils/LKRPCommand.test.js +1 -1
  128. package/lib/cjs/internal/utils/LKRPCommand.test.js.map +2 -2
  129. package/lib/cjs/internal/utils/TLVBuilder.js +2 -0
  130. package/lib/cjs/internal/utils/TLVBuilder.js.map +7 -0
  131. package/lib/cjs/internal/utils/TLVParser.js +1 -1
  132. package/lib/cjs/internal/utils/TLVParser.js.map +3 -3
  133. package/lib/cjs/internal/utils/TLVParser.test.js +1 -1
  134. package/lib/cjs/internal/utils/TLVParser.test.js.map +2 -2
  135. package/lib/cjs/internal/utils/crypto.js +2 -0
  136. package/lib/cjs/internal/utils/crypto.js.map +7 -0
  137. package/lib/cjs/internal/utils/hex.js +2 -0
  138. package/lib/cjs/internal/utils/hex.js.map +7 -0
  139. package/lib/cjs/internal/utils/required.js +1 -1
  140. package/lib/cjs/internal/utils/required.js.map +2 -2
  141. package/lib/cjs/package.json +2 -2
  142. package/lib/esm/api/LedgerKeyringProtocolBuilder.js +1 -1
  143. package/lib/esm/api/LedgerKeyringProtocolBuilder.js.map +3 -3
  144. package/lib/esm/api/app-binder/AddToTrustchainDeviceActionTypes.js.map +2 -2
  145. package/lib/esm/api/app-binder/AuthenticateDeviceActionTypes.js.map +1 -1
  146. package/lib/esm/api/{model → app-binder}/Errors.js.map +1 -1
  147. package/lib/esm/api/app-binder/GetAppNameCommandTypes.js +1 -0
  148. package/lib/esm/api/app-binder/GetSeedIdCommandTypes.js +1 -0
  149. package/lib/esm/api/app-binder/GetSeedIdCommandTypes.js.map +7 -0
  150. package/lib/esm/api/app-binder/InitCommandTypes.js +1 -0
  151. package/lib/esm/api/app-binder/InitCommandTypes.js.map +7 -0
  152. package/lib/esm/api/app-binder/KeypairFromBytes.js +2 -0
  153. package/lib/esm/api/app-binder/KeypairFromBytes.js.map +7 -0
  154. package/lib/esm/api/app-binder/LKRPTypes.js +2 -0
  155. package/lib/esm/api/app-binder/LKRPTypes.js.map +7 -0
  156. package/lib/esm/api/app-binder/ParseStreamBlockCommandCommandTypes.js +1 -0
  157. package/lib/esm/api/app-binder/ParseStreamBlockCommandCommandTypes.js.map +7 -0
  158. package/lib/esm/api/app-binder/ParseStreamBlockHeaderCommandTypes.js +1 -0
  159. package/lib/esm/api/app-binder/ParseStreamBlockHeaderCommandTypes.js.map +7 -0
  160. package/lib/esm/api/app-binder/ParseStreamBlockSignatureTypes.js +1 -0
  161. package/lib/esm/api/app-binder/ParseStreamBlockSignatureTypes.js.map +7 -0
  162. package/lib/esm/api/app-binder/SetTrustedMemberTypes.js +1 -0
  163. package/lib/esm/api/app-binder/SetTrustedMemberTypes.js.map +7 -0
  164. package/lib/esm/api/app-binder/SignBlockCommandTypes.js +1 -0
  165. package/lib/esm/api/app-binder/SignBlockCommandTypes.js.map +7 -0
  166. package/lib/esm/api/app-binder/SignBlockHeaderCommandTypes.js +1 -0
  167. package/lib/esm/api/app-binder/SignBlockHeaderCommandTypes.js.map +7 -0
  168. package/lib/esm/api/app-binder/SignBlockSignatureCommandTypes.js +1 -0
  169. package/lib/esm/api/app-binder/SignBlockSignatureCommandTypes.js.map +7 -0
  170. package/lib/esm/api/app-binder/SignBlockSingleCommandTypes.js +1 -0
  171. package/lib/esm/api/app-binder/SignBlockSingleCommandTypes.js.map +7 -0
  172. package/lib/esm/api/index.js +1 -1
  173. package/lib/esm/api/index.js.map +2 -2
  174. package/lib/esm/internal/DefaultLedgerKeyringProtocol.js +1 -1
  175. package/lib/esm/internal/DefaultLedgerKeyringProtocol.js.map +3 -3
  176. package/lib/esm/internal/app-binder/LedgerKeyringProtocolBinder.js +1 -1
  177. package/lib/esm/internal/app-binder/LedgerKeyringProtocolBinder.js.map +3 -3
  178. package/lib/esm/internal/app-binder/command/GetAppNameCommand.js +1 -1
  179. package/lib/esm/internal/app-binder/command/GetAppNameCommand.js.map +2 -2
  180. package/lib/esm/internal/app-binder/command/GetSeedIdCommand.js +1 -1
  181. package/lib/esm/internal/app-binder/command/GetSeedIdCommand.js.map +3 -3
  182. package/lib/esm/internal/app-binder/command/GetSeedIdCommand.test.js +1 -1
  183. package/lib/esm/internal/app-binder/command/GetSeedIdCommand.test.js.map +3 -3
  184. package/lib/esm/internal/app-binder/command/GetVersionCommand.js.map +2 -2
  185. package/lib/esm/internal/app-binder/command/InitCommand.js +1 -1
  186. package/lib/esm/internal/app-binder/command/InitCommand.js.map +2 -2
  187. package/lib/esm/internal/app-binder/command/InitCommand.test.js +1 -1
  188. package/lib/esm/internal/app-binder/command/InitCommand.test.js.map +2 -2
  189. package/lib/esm/internal/app-binder/command/ParseBlockSignatureCommand.js +1 -1
  190. package/lib/esm/internal/app-binder/command/ParseBlockSignatureCommand.js.map +2 -2
  191. package/lib/esm/internal/app-binder/command/ParseBlockSignatureCommand.test.js +1 -1
  192. package/lib/esm/internal/app-binder/command/ParseBlockSignatureCommand.test.js.map +2 -2
  193. package/lib/esm/internal/app-binder/command/ParseStreamBlockCommand.js.map +2 -2
  194. package/lib/esm/internal/app-binder/command/ParseStreamBlockCommand.test.js +1 -1
  195. package/lib/esm/internal/app-binder/command/ParseStreamBlockCommand.test.js.map +2 -2
  196. package/lib/esm/internal/app-binder/command/ParseStreamBlockHeader.js +1 -1
  197. package/lib/esm/internal/app-binder/command/ParseStreamBlockHeader.js.map +2 -2
  198. package/lib/esm/internal/app-binder/command/ParseStreamBlockHeader.test.js.map +2 -2
  199. package/lib/esm/internal/app-binder/command/SetTrustedMemberCommand.js +1 -1
  200. package/lib/esm/internal/app-binder/command/SetTrustedMemberCommand.js.map +2 -2
  201. package/lib/esm/internal/app-binder/command/SetTrustedMemberCommand.test.js +1 -1
  202. package/lib/esm/internal/app-binder/command/SetTrustedMemberCommand.test.js.map +2 -2
  203. package/lib/esm/internal/app-binder/command/SignBlockHeader.js +1 -1
  204. package/lib/esm/internal/app-binder/command/SignBlockHeader.js.map +2 -2
  205. package/lib/esm/internal/app-binder/command/SignBlockHeader.test.js +1 -1
  206. package/lib/esm/internal/app-binder/command/SignBlockHeader.test.js.map +2 -2
  207. package/lib/esm/internal/app-binder/command/SignBlockSignatureCommand.js +1 -1
  208. package/lib/esm/internal/app-binder/command/SignBlockSignatureCommand.js.map +2 -2
  209. package/lib/esm/internal/app-binder/command/SignBlockSignatureCommand.test.js +1 -1
  210. package/lib/esm/internal/app-binder/command/SignBlockSignatureCommand.test.js.map +2 -2
  211. package/lib/esm/internal/app-binder/command/SignBlockSingleCommand.js +1 -1
  212. package/lib/esm/internal/app-binder/command/SignBlockSingleCommand.js.map +2 -2
  213. package/lib/esm/internal/app-binder/command/SignBlockSingleCommand.test.js +1 -1
  214. package/lib/esm/internal/app-binder/command/SignBlockSingleCommand.test.js.map +2 -2
  215. package/lib/esm/internal/app-binder/device-action/AddToTrustchainDeviceAction.js +1 -1
  216. package/lib/esm/internal/app-binder/device-action/AddToTrustchainDeviceAction.js.map +3 -3
  217. package/lib/esm/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.js +1 -1
  218. package/lib/esm/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.js.map +2 -2
  219. package/lib/esm/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.js +1 -1
  220. package/lib/esm/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.js.map +2 -2
  221. package/lib/esm/internal/app-binder/task/ExtractEncryptionKeyTask.js +1 -1
  222. package/lib/esm/internal/app-binder/task/ExtractEncryptionKeyTask.js.map +3 -3
  223. package/lib/esm/internal/app-binder/task/InitTask.js +1 -1
  224. package/lib/esm/internal/app-binder/task/InitTask.js.map +3 -3
  225. package/lib/esm/internal/app-binder/task/ParseStreamToDeviceTask.js +1 -1
  226. package/lib/esm/internal/app-binder/task/ParseStreamToDeviceTask.js.map +3 -3
  227. package/lib/esm/internal/app-binder/task/SignBlockTask.js +1 -1
  228. package/lib/esm/internal/app-binder/task/SignBlockTask.js.map +3 -3
  229. package/lib/esm/internal/app-binder/task/SignChallengeWithKeypairTask.js +1 -1
  230. package/lib/esm/internal/app-binder/task/SignChallengeWithKeypairTask.js.map +3 -3
  231. package/lib/esm/internal/app-binder/task/SignChallengeWithKeypairTask.test.js +1 -1
  232. package/lib/esm/internal/app-binder/task/SignChallengeWithKeypairTask.test.js.map +3 -3
  233. package/lib/esm/internal/app-binder/task/utils/TrustedProperties.js +1 -1
  234. package/lib/esm/internal/app-binder/task/utils/TrustedProperties.js.map +2 -2
  235. package/lib/esm/internal/di.js +1 -1
  236. package/lib/esm/internal/di.js.map +3 -3
  237. package/lib/esm/internal/externalTypes.js +1 -1
  238. package/lib/esm/internal/externalTypes.js.map +2 -2
  239. package/lib/esm/internal/lkrp-datasource/data/HttpLKRPDataSource.js +1 -1
  240. package/lib/esm/internal/lkrp-datasource/data/HttpLKRPDataSource.js.map +2 -2
  241. package/lib/esm/internal/lkrp-datasource/data/HttpLKRPDataSource.test.js +1 -1
  242. package/lib/esm/internal/lkrp-datasource/data/HttpLKRPDataSource.test.js.map +2 -2
  243. package/lib/esm/internal/use-cases/authentication/AuthenticateUseCase.js +1 -1
  244. package/lib/esm/internal/use-cases/authentication/AuthenticateUseCase.js.map +2 -2
  245. package/lib/esm/internal/use-cases/authentication/DecryptDataUseCase.js +1 -1
  246. package/lib/esm/internal/use-cases/authentication/DecryptDataUseCase.js.map +3 -3
  247. package/lib/esm/internal/use-cases/authentication/EncryptDataUseCase.js +1 -1
  248. package/lib/esm/internal/use-cases/authentication/EncryptDataUseCase.js.map +3 -3
  249. package/lib/esm/internal/utils/LKRPBlock.js +3 -3
  250. package/lib/esm/internal/utils/LKRPBlock.js.map +3 -3
  251. package/lib/esm/internal/utils/LKRPBlock.test.js +2 -2
  252. package/lib/esm/internal/utils/LKRPBlock.test.js.map +3 -3
  253. package/lib/esm/internal/utils/LKRPBlockStream.js +2 -2
  254. package/lib/esm/internal/utils/LKRPBlockStream.js.map +3 -3
  255. package/lib/esm/internal/utils/LKRPBlockStream.test.js +1 -1
  256. package/lib/esm/internal/utils/LKRPBlockStream.test.js.map +3 -3
  257. package/lib/esm/internal/utils/LKRPCommand.js +2 -2
  258. package/lib/esm/internal/utils/LKRPCommand.js.map +3 -3
  259. package/lib/esm/internal/utils/LKRPCommand.test.js +1 -1
  260. package/lib/esm/internal/utils/LKRPCommand.test.js.map +2 -2
  261. package/lib/esm/internal/utils/TLVBuilder.js +2 -0
  262. package/lib/esm/internal/utils/TLVBuilder.js.map +7 -0
  263. package/lib/esm/internal/utils/TLVParser.js +1 -1
  264. package/lib/esm/internal/utils/TLVParser.js.map +3 -3
  265. package/lib/esm/internal/utils/TLVParser.test.js +1 -1
  266. package/lib/esm/internal/utils/TLVParser.test.js.map +2 -2
  267. package/lib/esm/internal/utils/crypto.js +2 -0
  268. package/lib/esm/internal/utils/crypto.js.map +7 -0
  269. package/lib/esm/internal/utils/hex.js +2 -0
  270. package/lib/esm/internal/utils/hex.js.map +7 -0
  271. package/lib/esm/internal/utils/required.js +1 -1
  272. package/lib/esm/internal/utils/required.js.map +2 -2
  273. package/lib/esm/package.json +2 -2
  274. package/lib/types/api/LedgerKeyringProtocol.d.ts +2 -2
  275. package/lib/types/api/LedgerKeyringProtocol.d.ts.map +1 -1
  276. package/lib/types/api/LedgerKeyringProtocolBuilder.d.ts +1 -4
  277. package/lib/types/api/LedgerKeyringProtocolBuilder.d.ts.map +1 -1
  278. package/lib/types/api/app-binder/AddToTrustchainDeviceActionTypes.d.ts +4 -8
  279. package/lib/types/api/app-binder/AddToTrustchainDeviceActionTypes.d.ts.map +1 -1
  280. package/lib/types/api/app-binder/AuthenticateDeviceActionTypes.d.ts +2 -2
  281. package/lib/types/api/app-binder/AuthenticateDeviceActionTypes.d.ts.map +1 -1
  282. package/lib/types/api/app-binder/Errors.d.ts.map +1 -0
  283. package/lib/types/api/app-binder/GetAppNameCommandTypes.d.ts +5 -0
  284. package/lib/types/api/app-binder/GetAppNameCommandTypes.d.ts.map +1 -0
  285. package/lib/types/api/app-binder/GetSeedIdCommandTypes.d.ts +14 -0
  286. package/lib/types/api/app-binder/GetSeedIdCommandTypes.d.ts.map +1 -0
  287. package/lib/types/api/app-binder/GetVersionCommandTypes.d.ts +1 -0
  288. package/lib/types/api/app-binder/GetVersionCommandTypes.d.ts.map +1 -1
  289. package/lib/types/api/app-binder/InitCommandTypes.d.ts +5 -0
  290. package/lib/types/api/app-binder/InitCommandTypes.d.ts.map +1 -0
  291. package/lib/types/api/app-binder/KeypairFromBytes.d.ts +11 -0
  292. package/lib/types/api/app-binder/KeypairFromBytes.d.ts.map +1 -0
  293. package/lib/types/api/{model/Permissions.d.ts → app-binder/LKRPTypes.d.ts} +19 -1
  294. package/lib/types/api/app-binder/LKRPTypes.d.ts.map +1 -0
  295. package/lib/types/api/app-binder/ParseStreamBlockCommandCommandTypes.d.ts +6 -0
  296. package/lib/types/api/app-binder/ParseStreamBlockCommandCommandTypes.d.ts.map +1 -0
  297. package/lib/types/api/app-binder/ParseStreamBlockHeaderCommandTypes.d.ts +5 -0
  298. package/lib/types/api/app-binder/ParseStreamBlockHeaderCommandTypes.d.ts.map +1 -0
  299. package/lib/types/api/app-binder/ParseStreamBlockSignatureTypes.d.ts +5 -0
  300. package/lib/types/api/app-binder/ParseStreamBlockSignatureTypes.d.ts.map +1 -0
  301. package/lib/types/api/app-binder/SetTrustedMemberTypes.d.ts +6 -0
  302. package/lib/types/api/app-binder/SetTrustedMemberTypes.d.ts.map +1 -0
  303. package/lib/types/api/app-binder/SignBlockCommandTypes.d.ts +9 -0
  304. package/lib/types/api/app-binder/SignBlockCommandTypes.d.ts.map +1 -0
  305. package/lib/types/api/app-binder/SignBlockHeaderCommandTypes.d.ts +6 -0
  306. package/lib/types/api/app-binder/SignBlockHeaderCommandTypes.d.ts.map +1 -0
  307. package/lib/types/api/app-binder/SignBlockSignatureCommandTypes.d.ts +6 -0
  308. package/lib/types/api/app-binder/SignBlockSignatureCommandTypes.d.ts.map +1 -0
  309. package/lib/types/api/app-binder/SignBlockSingleCommandTypes.d.ts +5 -0
  310. package/lib/types/api/app-binder/SignBlockSingleCommandTypes.d.ts.map +1 -0
  311. package/lib/types/api/index.d.ts +2 -10
  312. package/lib/types/api/index.d.ts.map +1 -1
  313. package/lib/types/internal/DefaultLedgerKeyringProtocol.d.ts +4 -6
  314. package/lib/types/internal/DefaultLedgerKeyringProtocol.d.ts.map +1 -1
  315. package/lib/types/internal/app-binder/LedgerKeyringProtocolBinder.d.ts +4 -7
  316. package/lib/types/internal/app-binder/LedgerKeyringProtocolBinder.d.ts.map +1 -1
  317. package/lib/types/internal/app-binder/command/GetAppNameCommand.d.ts +1 -4
  318. package/lib/types/internal/app-binder/command/GetAppNameCommand.d.ts.map +1 -1
  319. package/lib/types/internal/app-binder/command/GetSeedIdCommand.d.ts +1 -13
  320. package/lib/types/internal/app-binder/command/GetSeedIdCommand.d.ts.map +1 -1
  321. package/lib/types/internal/app-binder/command/GetVersionCommand.d.ts +1 -2
  322. package/lib/types/internal/app-binder/command/GetVersionCommand.d.ts.map +1 -1
  323. package/lib/types/internal/app-binder/command/InitCommand.d.ts +1 -4
  324. package/lib/types/internal/app-binder/command/InitCommand.d.ts.map +1 -1
  325. package/lib/types/internal/app-binder/command/ParseBlockSignatureCommand.d.ts +1 -4
  326. package/lib/types/internal/app-binder/command/ParseBlockSignatureCommand.d.ts.map +1 -1
  327. package/lib/types/internal/app-binder/command/ParseStreamBlockCommand.d.ts +1 -5
  328. package/lib/types/internal/app-binder/command/ParseStreamBlockCommand.d.ts.map +1 -1
  329. package/lib/types/internal/app-binder/command/ParseStreamBlockHeader.d.ts +1 -4
  330. package/lib/types/internal/app-binder/command/ParseStreamBlockHeader.d.ts.map +1 -1
  331. package/lib/types/internal/app-binder/command/SetTrustedMemberCommand.d.ts +1 -5
  332. package/lib/types/internal/app-binder/command/SetTrustedMemberCommand.d.ts.map +1 -1
  333. package/lib/types/internal/app-binder/command/SignBlockHeader.d.ts +1 -5
  334. package/lib/types/internal/app-binder/command/SignBlockHeader.d.ts.map +1 -1
  335. package/lib/types/internal/app-binder/command/SignBlockSignatureCommand.d.ts +1 -5
  336. package/lib/types/internal/app-binder/command/SignBlockSignatureCommand.d.ts.map +1 -1
  337. package/lib/types/internal/app-binder/command/SignBlockSingleCommand.d.ts +1 -4
  338. package/lib/types/internal/app-binder/command/SignBlockSingleCommand.d.ts.map +1 -1
  339. package/lib/types/internal/app-binder/device-action/AddToTrustchainDeviceAction.d.ts +4 -8
  340. package/lib/types/internal/app-binder/device-action/AddToTrustchainDeviceAction.d.ts.map +1 -1
  341. package/lib/types/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.d.ts +2 -5
  342. package/lib/types/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.d.ts.map +1 -1
  343. package/lib/types/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.d.ts +2 -5
  344. package/lib/types/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.d.ts.map +1 -1
  345. package/lib/types/internal/app-binder/device-action/models/AuthenticateWithDeviceDeviceActionTypes.d.ts +2 -5
  346. package/lib/types/internal/app-binder/device-action/models/AuthenticateWithDeviceDeviceActionTypes.d.ts.map +1 -1
  347. package/lib/types/internal/app-binder/device-action/models/AuthenticateWithKeypairDeviceActionTypes.d.ts +2 -5
  348. package/lib/types/internal/app-binder/device-action/models/AuthenticateWithKeypairDeviceActionTypes.d.ts.map +1 -1
  349. package/lib/types/internal/app-binder/task/ExtractEncryptionKeyTask.d.ts +7 -4
  350. package/lib/types/internal/app-binder/task/ExtractEncryptionKeyTask.d.ts.map +1 -1
  351. package/lib/types/internal/app-binder/task/InitTask.d.ts +3 -5
  352. package/lib/types/internal/app-binder/task/InitTask.d.ts.map +1 -1
  353. package/lib/types/internal/app-binder/task/ParseStreamToDeviceTask.d.ts +1 -1
  354. package/lib/types/internal/app-binder/task/ParseStreamToDeviceTask.d.ts.map +1 -1
  355. package/lib/types/internal/app-binder/task/SignBlockTask.d.ts +8 -11
  356. package/lib/types/internal/app-binder/task/SignBlockTask.d.ts.map +1 -1
  357. package/lib/types/internal/app-binder/task/SignChallengeWithKeypairTask.d.ts +3 -5
  358. package/lib/types/internal/app-binder/task/SignChallengeWithKeypairTask.d.ts.map +1 -1
  359. package/lib/types/internal/app-binder/task/utils/TrustedProperties.d.ts +1 -1
  360. package/lib/types/internal/app-binder/task/utils/TrustedProperties.d.ts.map +1 -1
  361. package/lib/types/internal/di.d.ts +1 -3
  362. package/lib/types/internal/di.d.ts.map +1 -1
  363. package/lib/types/internal/externalTypes.d.ts +0 -1
  364. package/lib/types/internal/externalTypes.d.ts.map +1 -1
  365. package/lib/types/internal/lkrp-datasource/data/HttpLKRPDataSource.d.ts +2 -2
  366. package/lib/types/internal/lkrp-datasource/data/HttpLKRPDataSource.d.ts.map +1 -1
  367. package/lib/types/internal/lkrp-datasource/data/LKRPDataSource.d.ts +2 -2
  368. package/lib/types/internal/lkrp-datasource/data/LKRPDataSource.d.ts.map +1 -1
  369. package/lib/types/internal/use-cases/authentication/AuthenticateUseCase.d.ts +2 -3
  370. package/lib/types/internal/use-cases/authentication/AuthenticateUseCase.d.ts.map +1 -1
  371. package/lib/types/internal/use-cases/authentication/DecryptDataUseCase.d.ts +1 -4
  372. package/lib/types/internal/use-cases/authentication/DecryptDataUseCase.d.ts.map +1 -1
  373. package/lib/types/internal/use-cases/authentication/EncryptDataUseCase.d.ts +1 -4
  374. package/lib/types/internal/use-cases/authentication/EncryptDataUseCase.d.ts.map +1 -1
  375. package/lib/types/internal/utils/LKRPBlock.d.ts +1 -1
  376. package/lib/types/internal/utils/LKRPBlock.d.ts.map +1 -1
  377. package/lib/types/internal/utils/LKRPBlockStream.d.ts +3 -4
  378. package/lib/types/internal/utils/LKRPBlockStream.d.ts.map +1 -1
  379. package/lib/types/internal/utils/LKRPCommand.d.ts +1 -1
  380. package/lib/types/internal/utils/LKRPCommand.d.ts.map +1 -1
  381. package/lib/types/internal/utils/TLVBuilder.d.ts +15 -0
  382. package/lib/types/internal/utils/TLVBuilder.d.ts.map +1 -0
  383. package/lib/types/internal/utils/TLVParser.d.ts +1 -1
  384. package/lib/types/internal/utils/TLVParser.d.ts.map +1 -1
  385. package/lib/types/internal/utils/crypto.d.ts +19 -0
  386. package/lib/types/internal/utils/crypto.d.ts.map +1 -0
  387. package/lib/types/internal/utils/hex.d.ts +3 -0
  388. package/lib/types/internal/utils/hex.d.ts.map +1 -0
  389. package/lib/types/internal/utils/required.d.ts +1 -1
  390. package/lib/types/internal/utils/required.d.ts.map +1 -1
  391. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  392. package/package.json +5 -5
  393. package/lib/cjs/api/crypto/CryptoService.js +0 -2
  394. package/lib/cjs/api/crypto/CryptoService.js.map +0 -7
  395. package/lib/cjs/api/crypto/Key.js +0 -2
  396. package/lib/cjs/api/crypto/Key.js.map +0 -7
  397. package/lib/cjs/api/crypto/KeyPair.js +0 -2
  398. package/lib/cjs/api/crypto/KeyPair.js.map +0 -7
  399. package/lib/cjs/api/crypto/noble/NobleCryptoService.js +0 -2
  400. package/lib/cjs/api/crypto/noble/NobleCryptoService.js.map +0 -7
  401. package/lib/cjs/api/crypto/noble/NobleCryptoService.test.js +0 -2
  402. package/lib/cjs/api/crypto/noble/NobleCryptoService.test.js.map +0 -7
  403. package/lib/cjs/api/crypto/noble/NobleKey.js +0 -2
  404. package/lib/cjs/api/crypto/noble/NobleKey.js.map +0 -7
  405. package/lib/cjs/api/crypto/noble/NobleKey.test.js +0 -2
  406. package/lib/cjs/api/crypto/noble/NobleKey.test.js.map +0 -7
  407. package/lib/cjs/api/crypto/noble/NobleKeyPair.js +0 -2
  408. package/lib/cjs/api/crypto/noble/NobleKeyPair.js.map +0 -7
  409. package/lib/cjs/api/crypto/noble/NobleKeyPair.test.js +0 -2
  410. package/lib/cjs/api/crypto/noble/NobleKeyPair.test.js.map +0 -7
  411. package/lib/cjs/api/model/Env.js +0 -2
  412. package/lib/cjs/api/model/Env.js.map +0 -7
  413. package/lib/cjs/api/model/JWT.js +0 -2
  414. package/lib/cjs/api/model/JWT.js.map +0 -7
  415. package/lib/cjs/api/model/Permissions.js +0 -2
  416. package/lib/cjs/api/model/Permissions.js.map +0 -7
  417. package/lib/esm/api/crypto/CryptoService.js +0 -2
  418. package/lib/esm/api/crypto/CryptoService.js.map +0 -7
  419. package/lib/esm/api/crypto/Key.js +0 -2
  420. package/lib/esm/api/crypto/Key.js.map +0 -7
  421. package/lib/esm/api/crypto/KeyPair.js +0 -2
  422. package/lib/esm/api/crypto/KeyPair.js.map +0 -7
  423. package/lib/esm/api/crypto/noble/NobleCryptoService.js +0 -2
  424. package/lib/esm/api/crypto/noble/NobleCryptoService.js.map +0 -7
  425. package/lib/esm/api/crypto/noble/NobleCryptoService.test.js +0 -2
  426. package/lib/esm/api/crypto/noble/NobleCryptoService.test.js.map +0 -7
  427. package/lib/esm/api/crypto/noble/NobleKey.js +0 -2
  428. package/lib/esm/api/crypto/noble/NobleKey.js.map +0 -7
  429. package/lib/esm/api/crypto/noble/NobleKey.test.js +0 -2
  430. package/lib/esm/api/crypto/noble/NobleKey.test.js.map +0 -7
  431. package/lib/esm/api/crypto/noble/NobleKeyPair.js +0 -2
  432. package/lib/esm/api/crypto/noble/NobleKeyPair.js.map +0 -7
  433. package/lib/esm/api/crypto/noble/NobleKeyPair.test.js +0 -2
  434. package/lib/esm/api/crypto/noble/NobleKeyPair.test.js.map +0 -7
  435. package/lib/esm/api/model/Env.js +0 -2
  436. package/lib/esm/api/model/Env.js.map +0 -7
  437. package/lib/esm/api/model/JWT.js +0 -1
  438. package/lib/esm/api/model/Permissions.js +0 -2
  439. package/lib/esm/api/model/Permissions.js.map +0 -7
  440. package/lib/types/api/crypto/CryptoService.d.ts +0 -22
  441. package/lib/types/api/crypto/CryptoService.d.ts.map +0 -1
  442. package/lib/types/api/crypto/Key.d.ts +0 -7
  443. package/lib/types/api/crypto/Key.d.ts.map +0 -1
  444. package/lib/types/api/crypto/KeyPair.d.ts +0 -12
  445. package/lib/types/api/crypto/KeyPair.d.ts.map +0 -1
  446. package/lib/types/api/crypto/noble/NobleCryptoService.d.ts +0 -13
  447. package/lib/types/api/crypto/noble/NobleCryptoService.d.ts.map +0 -1
  448. package/lib/types/api/crypto/noble/NobleCryptoService.test.d.ts +0 -2
  449. package/lib/types/api/crypto/noble/NobleCryptoService.test.d.ts.map +0 -1
  450. package/lib/types/api/crypto/noble/NobleKey.d.ts +0 -11
  451. package/lib/types/api/crypto/noble/NobleKey.d.ts.map +0 -1
  452. package/lib/types/api/crypto/noble/NobleKey.test.d.ts +0 -2
  453. package/lib/types/api/crypto/noble/NobleKey.test.d.ts.map +0 -1
  454. package/lib/types/api/crypto/noble/NobleKeyPair.d.ts +0 -17
  455. package/lib/types/api/crypto/noble/NobleKeyPair.d.ts.map +0 -1
  456. package/lib/types/api/crypto/noble/NobleKeyPair.test.d.ts +0 -2
  457. package/lib/types/api/crypto/noble/NobleKeyPair.test.d.ts.map +0 -1
  458. package/lib/types/api/model/Env.d.ts +0 -5
  459. package/lib/types/api/model/Env.d.ts.map +0 -1
  460. package/lib/types/api/model/Errors.d.ts.map +0 -1
  461. package/lib/types/api/model/JWT.d.ts +0 -9
  462. package/lib/types/api/model/JWT.d.ts.map +0 -1
  463. package/lib/types/api/model/Permissions.d.ts.map +0 -1
  464. /package/lib/cjs/api/{model → app-binder}/Errors.js +0 -0
  465. /package/lib/esm/api/{model → app-binder}/Errors.js +0 -0
  466. /package/lib/esm/api/{model/JWT.js.map → app-binder/GetAppNameCommandTypes.js.map} +0 -0
  467. /package/lib/types/api/{model → app-binder}/Errors.d.ts +0 -0
@@ -1,2 +1,2 @@
1
- import{ApduBuilder as m,ApduParser as s,CommandResultFactory as t,InvalidStatusWordError as i}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as p}from"@ledgerhq/signer-utils";import{Maybe as l}from"purify-ts";import{GeneralTags as o}from"../../models/Tags";import{LEDGER_SYNC_ERRORS as g,LedgerKeyringProtocolErrorFactory as c}from"./utils/ledgerKeyringProtocolErrors";const d=[3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],u=Uint8Array.from([o.PublicKey,d.length,...d]);class S{constructor(r){this.args=r}errorHelper=new p(g,c);getApdu(){const{parent:r,commandCount:e}=this.args,n=Uint8Array.from([o.Hash,r.length,...r]);return new m({cla:224,ins:7,p1:0,p2:0}).addBufferToData(Uint8Array.from([o.Int,1,1])).addBufferToData(Uint8Array.from(n)).addBufferToData(u).addBufferToData(Uint8Array.from([o.Int,1,e])).build()}parseResponse(r){return l.fromNullable(this.errorHelper.getError(r)).orDefaultLazy(()=>{const e=new s(r),n=e.getUnparsedRemainingLength(),a=e.extractFieldByLength(n);return a?t({data:a}):t({error:new i("No data returned by SignBlockHeaderCommand")})})}}export{u as ISSUER_PLACEHOLDER_TLV,S as SignBlockHeaderCommand};
1
+ import{ApduBuilder as m,ApduParser as s,CommandResultFactory as t,InvalidStatusWordError as i}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as p}from"@ledgerhq/signer-utils";import{Maybe as l}from"purify-ts";import{GeneralTags as o}from"../../models/Tags";import{LEDGER_SYNC_ERRORS as g,LedgerKeyringProtocolErrorFactory as c}from"./utils/ledgerKeyringProtocolErrors";const d=[3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],y=Uint8Array.from([o.PublicKey,d.length,...d]);class S{constructor(r){this.args=r}errorHelper=new p(g,c);getApdu(){const{parent:r,commandCount:e}=this.args,n=Uint8Array.from([o.Hash,r.length,...r]);return new m({cla:224,ins:7,p1:0,p2:0}).addBufferToData(Uint8Array.from([o.Int,1,1])).addBufferToData(Uint8Array.from(n)).addBufferToData(y).addBufferToData(Uint8Array.from([o.Int,1,e])).build()}parseResponse(r){return l.fromNullable(this.errorHelper.getError(r)).orDefaultLazy(()=>{const e=new s(r),n=e.getUnparsedRemainingLength(),a=e.extractFieldByLength(n);return a?t({data:a}):t({error:new i("No data returned by SignBlockHeaderCommand")})})}}export{y as ISSUER_PLACEHOLDER_TLV,S as SignBlockHeaderCommand};
2
2
  //# sourceMappingURL=SignBlockHeader.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/SignBlockHeader.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 { GeneralTags } from \"@internal/models/Tags\";\n\nimport {\n LEDGER_SYNC_ERRORS,\n type LedgerKeyringProtocolErrorCodes,\n LedgerKeyringProtocolErrorFactory,\n} from \"./utils/ledgerKeyringProtocolErrors\";\n\nexport interface SignBlockHeaderCommandArgs {\n parent: Uint8Array;\n commandCount: number;\n}\n\nexport type SignBlockHeaderCommandResponse = Uint8Array;\n\nconst ISSUER_PLACEHOLDER = [\n 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0,\n];\nexport const ISSUER_PLACEHOLDER_TLV = Uint8Array.from([\n GeneralTags.PublicKey,\n ISSUER_PLACEHOLDER.length,\n ...ISSUER_PLACEHOLDER,\n]);\n\nexport class SignBlockHeaderCommand\n implements\n Command<\n SignBlockHeaderCommandResponse,\n SignBlockHeaderCommandArgs,\n LedgerKeyringProtocolErrorCodes\n >\n{\n private readonly errorHelper = new CommandErrorHelper<\n SignBlockHeaderCommandResponse,\n LedgerKeyringProtocolErrorCodes\n >(LEDGER_SYNC_ERRORS, LedgerKeyringProtocolErrorFactory);\n\n constructor(private readonly args: SignBlockHeaderCommandArgs) {}\n\n getApdu(): Apdu {\n const { parent, commandCount } = this.args;\n const parentTlv = Uint8Array.from([\n GeneralTags.Hash,\n parent.length,\n ...parent,\n ]);\n\n return new ApduBuilder({\n cla: 0xe0,\n ins: 0x07,\n p1: 0x00,\n p2: 0x00,\n })\n .addBufferToData(Uint8Array.from([GeneralTags.Int, 1, 1])) // Version 1\n .addBufferToData(Uint8Array.from(parentTlv)) // Parent block hash\n .addBufferToData(ISSUER_PLACEHOLDER_TLV) // Placeholder for issuer public key (will be replaced by the device)\n .addBufferToData(Uint8Array.from([GeneralTags.Int, 1, commandCount])) // Command count\n .build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<\n SignBlockHeaderCommandResponse,\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 payload = parser.extractFieldByLength(remaining);\n if (!payload) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"No data returned by SignBlockHeaderCommand\",\n ),\n });\n }\n return CommandResultFactory({ data: payload });\n });\n }\n}\n"],
5
- "mappings": "AAAA,OAEE,eAAAA,EACA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAEtB,OAAS,eAAAC,MAAmB,wBAE5B,OACE,sBAAAC,EAEA,qCAAAC,MACK,sCASP,MAAMC,EAAqB,CACzB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CACpB,EACaC,EAAyB,WAAW,KAAK,CACpDJ,EAAY,UACZG,EAAmB,OACnB,GAAGA,CACL,CAAC,EAEM,MAAME,CAOb,CAME,YAA6BC,EAAkC,CAAlC,UAAAA,CAAmC,CAL/C,YAAc,IAAIR,EAGjCG,EAAoBC,CAAiC,EAIvD,SAAgB,CACd,KAAM,CAAE,OAAAK,EAAQ,aAAAC,CAAa,EAAI,KAAK,KAChCC,EAAY,WAAW,KAAK,CAChCT,EAAY,KACZO,EAAO,OACP,GAAGA,CACL,CAAC,EAED,OAAO,IAAIb,EAAY,CACrB,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,CAAC,EACE,gBAAgB,WAAW,KAAK,CAACM,EAAY,IAAK,EAAG,CAAC,CAAC,CAAC,EACxD,gBAAgB,WAAW,KAAKS,CAAS,CAAC,EAC1C,gBAAgBL,CAAsB,EACtC,gBAAgB,WAAW,KAAK,CAACJ,EAAY,IAAK,EAAGQ,CAAY,CAAC,CAAC,EACnE,MAAM,CACX,CAEA,cACEE,EAIA,CACA,OAAOX,EAAM,aACX,KAAK,YAAY,SAASW,CAAY,CACxC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAS,IAAIhB,EAAWe,CAAY,EACpCE,EAAYD,EAAO,2BAA2B,EAC9CE,EAAUF,EAAO,qBAAqBC,CAAS,EACrD,OAAKC,EAOEjB,EAAqB,CAAE,KAAMiB,CAAQ,CAAC,EANpCjB,EAAqB,CAC1B,MAAO,IAAIC,EACT,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 type SignBlockHeaderCommandArgs,\n type SignBlockHeaderCommandResponse,\n} from \"@api/app-binder/SignBlockHeaderCommandTypes\";\nimport { GeneralTags } from \"@internal/models/Tags\";\n\nimport {\n LEDGER_SYNC_ERRORS,\n type LedgerKeyringProtocolErrorCodes,\n LedgerKeyringProtocolErrorFactory,\n} from \"./utils/ledgerKeyringProtocolErrors\";\n\nconst ISSUER_PLACEHOLDER = [\n 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0,\n];\nexport const ISSUER_PLACEHOLDER_TLV = Uint8Array.from([\n GeneralTags.PublicKey,\n ISSUER_PLACEHOLDER.length,\n ...ISSUER_PLACEHOLDER,\n]);\n\nexport class SignBlockHeaderCommand\n implements\n Command<\n SignBlockHeaderCommandResponse,\n SignBlockHeaderCommandArgs,\n LedgerKeyringProtocolErrorCodes\n >\n{\n private readonly errorHelper = new CommandErrorHelper<\n SignBlockHeaderCommandResponse,\n LedgerKeyringProtocolErrorCodes\n >(LEDGER_SYNC_ERRORS, LedgerKeyringProtocolErrorFactory);\n\n constructor(private readonly args: SignBlockHeaderCommandArgs) {}\n\n getApdu(): Apdu {\n const { parent, commandCount } = this.args;\n const parentTlv = Uint8Array.from([\n GeneralTags.Hash,\n parent.length,\n ...parent,\n ]);\n\n return new ApduBuilder({\n cla: 0xe0,\n ins: 0x07,\n p1: 0x00,\n p2: 0x00,\n })\n .addBufferToData(Uint8Array.from([GeneralTags.Int, 1, 1])) // Version 1\n .addBufferToData(Uint8Array.from(parentTlv)) // Parent block hash\n .addBufferToData(ISSUER_PLACEHOLDER_TLV) // Placeholder for issuer public key (will be replaced by the device)\n .addBufferToData(Uint8Array.from([GeneralTags.Int, 1, commandCount])) // Command count\n .build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<\n SignBlockHeaderCommandResponse,\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 payload = parser.extractFieldByLength(remaining);\n if (!payload) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"No data returned by SignBlockHeaderCommand\",\n ),\n });\n }\n return CommandResultFactory({ data: payload });\n });\n }\n}\n"],
5
+ "mappings": "AAAA,OAEE,eAAAA,EACA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAMtB,OAAS,eAAAC,MAAmB,wBAE5B,OACE,sBAAAC,EAEA,qCAAAC,MACK,sCAEP,MAAMC,EAAqB,CACzB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CACpB,EACaC,EAAyB,WAAW,KAAK,CACpDJ,EAAY,UACZG,EAAmB,OACnB,GAAGA,CACL,CAAC,EAEM,MAAME,CAOb,CAME,YAA6BC,EAAkC,CAAlC,UAAAA,CAAmC,CAL/C,YAAc,IAAIR,EAGjCG,EAAoBC,CAAiC,EAIvD,SAAgB,CACd,KAAM,CAAE,OAAAK,EAAQ,aAAAC,CAAa,EAAI,KAAK,KAChCC,EAAY,WAAW,KAAK,CAChCT,EAAY,KACZO,EAAO,OACP,GAAGA,CACL,CAAC,EAED,OAAO,IAAIb,EAAY,CACrB,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,CAAC,EACE,gBAAgB,WAAW,KAAK,CAACM,EAAY,IAAK,EAAG,CAAC,CAAC,CAAC,EACxD,gBAAgB,WAAW,KAAKS,CAAS,CAAC,EAC1C,gBAAgBL,CAAsB,EACtC,gBAAgB,WAAW,KAAK,CAACJ,EAAY,IAAK,EAAGQ,CAAY,CAAC,CAAC,EACnE,MAAM,CACX,CAEA,cACEE,EAIA,CACA,OAAOX,EAAM,aACX,KAAK,YAAY,SAASW,CAAY,CACxC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAS,IAAIhB,EAAWe,CAAY,EACpCE,EAAYD,EAAO,2BAA2B,EAC9CE,EAAUF,EAAO,qBAAqBC,CAAS,EACrD,OAAKC,EAOEjB,EAAqB,CAAE,KAAMiB,CAAQ,CAAC,EANpCjB,EAAqB,CAC1B,MAAO,IAAIC,EACT,4CACF,CACF,CAAC,CAGL,CAAC,CACH,CACF",
6
6
  "names": ["ApduBuilder", "ApduParser", "CommandResultFactory", "InvalidStatusWordError", "CommandErrorHelper", "Maybe", "GeneralTags", "LEDGER_SYNC_ERRORS", "LedgerKeyringProtocolErrorFactory", "ISSUER_PLACEHOLDER", "ISSUER_PLACEHOLDER_TLV", "SignBlockHeaderCommand", "args", "parent", "commandCount", "parentTlv", "apduResponse", "parser", "remaining", "payload"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ApduResponse as p,isSuccessCommandResult as a}from"@ledgerhq/device-management-kit";import{describe as u,expect as r,it as d}from"vitest";import{GeneralTags as A}from"../../models/Tags";import{ISSUER_PLACEHOLDER_TLV as C,SignBlockHeaderCommand as m}from"./SignBlockHeader";const s=3,c=Uint8Array.from([240,202,204,26]),l=Uint8Array.from([A.Int,1,1,A.Hash,4,...c,...C,A.Int,1,s]),i=Uint8Array.from([240,202,204,26]),f=Uint8Array.from([0,i.length,...i]),U=Uint8Array.from([129,i.length,...i]),g=new Uint8Array([...f,...U]);u("SignBlockHeaderCommand",()=>{u("getApdu()",()=>{d("should build the correct APDU for a parent hash and a commands count",()=>{const e={parent:c,commandCount:s},n=new m(e).getApdu(),o=Uint8Array.from([224,7,0,0,l.length,...l]);r(n.getRawApdu()).toEqual(o)})}),u("parseResponse()",()=>{d("should return raw payload on success",()=>{const e={parent:c,commandCount:s},t=new m(e),n=new p({statusCode:Uint8Array.from([144,0]),data:g}),o=t.parseResponse(n);if(r(a(o)).toBe(!0),a(o)){const x=o.data;r(x).toEqual(g)}}),d("should map SW errors to CommandResult errors",()=>{const e={parent:c,commandCount:s},t=new m(e),n=new p({statusCode:Uint8Array.from([106,134]),data:new Uint8Array}),o=t.parseResponse(n);r(a(o)).toBe(!1),a(o)||r(o.error.errorCode).toBe("6a86")}),d("should error if no data is returned",()=>{const e={parent:c,commandCount:s},t=new m(e),n=new p({statusCode:Uint8Array.from([144,0]),data:new Uint8Array}),o=t.parseResponse(n);r(a(o)).toBe(!0),a(o)&&r(o.data).toEqual(new Uint8Array([]))})})});
1
+ import{ApduResponse as p,isSuccessCommandResult as a}from"@ledgerhq/device-management-kit";import{describe as u,expect as n,it as m}from"vitest";import{GeneralTags as A}from"../../models/Tags";import{ISSUER_PLACEHOLDER_TLV as x,SignBlockHeaderCommand as d}from"./SignBlockHeader";const s=3,c=Uint8Array.from([240,202,204,26]),l=Uint8Array.from([A.Int,1,1,A.Hash,4,...c,...x,A.Int,1,s]),i=Uint8Array.from([240,202,204,26]),C=Uint8Array.from([0,i.length,...i]),U=Uint8Array.from([129,i.length,...i]),g=new Uint8Array([...C,...U]);u("SignBlockHeaderCommand",()=>{u("getApdu()",()=>{m("should build the correct APDU for a parent hash and a commands count",()=>{const r={parent:c,commandCount:s},e=new d(r).getApdu(),o=Uint8Array.from([224,7,0,0,l.length,...l]);n(e.getRawApdu()).toEqual(o)})}),u("parseResponse()",()=>{m("should return raw payload on success",()=>{const r={parent:c,commandCount:s},t=new d(r),e=new p({statusCode:Uint8Array.from([144,0]),data:g}),o=t.parseResponse(e);if(n(a(o)).toBe(!0),a(o)){const f=o.data;n(f).toEqual(g)}}),m("should map SW errors to CommandResult errors",()=>{const r={parent:c,commandCount:s},t=new d(r),e=new p({statusCode:Uint8Array.from([106,134]),data:new Uint8Array}),o=t.parseResponse(e);n(a(o)).toBe(!1),a(o)||n(o.error.errorCode).toBe("6a86")}),m("should error if no data is returned",()=>{const r={parent:c,commandCount:s},t=new d(r),e=new p({statusCode:Uint8Array.from([144,0]),data:new Uint8Array}),o=t.parseResponse(e);n(a(o)).toBe(!0),a(o)&&n(o.data).toEqual(new Uint8Array([]))})})});
2
2
  //# sourceMappingURL=SignBlockHeader.test.js.map
@@ -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 { 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,OACE,gBAAAA,EACA,0BAAAC,MACK,kCACP,OAAS,YAAAC,EAAU,UAAAC,EAAQ,MAAAC,MAAU,SAErC,OAAS,eAAAC,MAAmB,wBAE5B,OACE,0BAAAC,EACA,0BAAAC,MAGK,oBAEP,MAAMC,EAAgB,EAChBC,EAAe,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAI,CAAC,EACvDC,EAAe,WAAW,KAAK,CAC/BL,EAAY,IAAK,EAAG,EACpBA,EAAY,KAAM,EAAG,GAAGI,EAC5B,GAAGH,EACCD,EAAY,IAAK,EAAGG,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,EAElEX,EAAS,yBAA0B,IAAM,CACvCA,EAAS,YAAa,IAAM,CAC1BE,EAAG,uEAAwE,IAAM,CAE/E,MAAMW,EAAmC,CACvC,OAAQN,EACR,aAAcD,CAChB,EAIMQ,EAHM,IAAIT,EAAuBQ,CAAI,EAG1B,QAAQ,EACnBE,EAAW,WAAW,KAAK,CAC/B,IACA,EACA,EACA,EACAP,EAAa,OACb,GAAGA,CACL,CAAC,EAGDP,EAAOa,EAAK,WAAW,CAAC,EAAE,QAAQC,CAAQ,CAC5C,CAAC,CACH,CAAC,EAEDf,EAAS,kBAAmB,IAAM,CAChCE,EAAG,uCAAwC,IAAM,CAE/C,MAAMW,EAAmC,CACvC,OAAQN,EACR,aAAcD,CAChB,EACMU,EAAM,IAAIX,EAAuBQ,CAAI,EACrCI,EAAW,IAAInB,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMc,CACR,CAAC,EAGKM,EAASF,EAAI,cAAcC,CAAQ,EAIzC,GADAhB,EAAOF,EAAuBmB,CAAM,CAAC,EAAE,KAAK,EAAI,EAC5CnB,EAAuBmB,CAAM,EAAG,CAClC,MAAMC,EAAsCD,EAAO,KACnDjB,EAAOkB,CAAG,EAAE,QAAQP,CAAgB,CACtC,CACF,CAAC,EAEDV,EAAG,+CAAgD,IAAM,CAEvD,MAAMW,EAAmC,CACvC,OAAQN,EACR,aAAcD,CAChB,EACMU,EAAM,IAAIX,EAAuBQ,CAAI,EACrCI,EAAW,IAAInB,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,GAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKoB,EAASF,EAAI,cAAcC,CAAQ,EAGzChB,EAAOF,EAAuBmB,CAAM,CAAC,EAAE,KAAK,EAAK,EAC5CnB,EAAuBmB,CAAM,GAChCjB,EAAQiB,EAAO,MAAc,SAAS,EAAE,KAAK,MAAM,CAEvD,CAAC,EAEDhB,EAAG,sCAAuC,IAAM,CAE9C,MAAMW,EAAmC,CACvC,OAAQN,EACR,aAAcD,CAChB,EACMU,EAAM,IAAIX,EAAuBQ,CAAI,EACrCI,EAAW,IAAInB,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKoB,EAASF,EAAI,cAAcC,CAAQ,EAGzChB,EAAOF,EAAuBmB,CAAM,CAAC,EAAE,KAAK,EAAI,EAC5CnB,EAAuBmB,CAAM,GAC/BjB,EAAOiB,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 {\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,OACE,gBAAAA,EACA,0BAAAC,MACK,kCACP,OAAS,YAAAC,EAAU,UAAAC,EAAQ,MAAAC,MAAU,SAMrC,OAAS,eAAAC,MAAmB,wBAE5B,OACE,0BAAAC,EACA,0BAAAC,MACK,oBAEP,MAAMC,EAAgB,EAChBC,EAAe,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAI,CAAC,EACvDC,EAAe,WAAW,KAAK,CAC/BL,EAAY,IAAK,EAAG,EACpBA,EAAY,KAAM,EAAG,GAAGI,EAC5B,GAAGH,EACCD,EAAY,IAAK,EAAGG,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,EAElEX,EAAS,yBAA0B,IAAM,CACvCA,EAAS,YAAa,IAAM,CAC1BE,EAAG,uEAAwE,IAAM,CAE/E,MAAMW,EAAmC,CACvC,OAAQN,EACR,aAAcD,CAChB,EAIMQ,EAHM,IAAIT,EAAuBQ,CAAI,EAG1B,QAAQ,EACnBE,EAAW,WAAW,KAAK,CAC/B,IACA,EACA,EACA,EACAP,EAAa,OACb,GAAGA,CACL,CAAC,EAGDP,EAAOa,EAAK,WAAW,CAAC,EAAE,QAAQC,CAAQ,CAC5C,CAAC,CACH,CAAC,EAEDf,EAAS,kBAAmB,IAAM,CAChCE,EAAG,uCAAwC,IAAM,CAE/C,MAAMW,EAAmC,CACvC,OAAQN,EACR,aAAcD,CAChB,EACMU,EAAM,IAAIX,EAAuBQ,CAAI,EACrCI,EAAW,IAAInB,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMc,CACR,CAAC,EAGKM,EAASF,EAAI,cAAcC,CAAQ,EAIzC,GADAhB,EAAOF,EAAuBmB,CAAM,CAAC,EAAE,KAAK,EAAI,EAC5CnB,EAAuBmB,CAAM,EAAG,CAClC,MAAMC,EAAsCD,EAAO,KACnDjB,EAAOkB,CAAG,EAAE,QAAQP,CAAgB,CACtC,CACF,CAAC,EAEDV,EAAG,+CAAgD,IAAM,CAEvD,MAAMW,EAAmC,CACvC,OAAQN,EACR,aAAcD,CAChB,EACMU,EAAM,IAAIX,EAAuBQ,CAAI,EACrCI,EAAW,IAAInB,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,GAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKoB,EAASF,EAAI,cAAcC,CAAQ,EAGzChB,EAAOF,EAAuBmB,CAAM,CAAC,EAAE,KAAK,EAAK,EAC5CnB,EAAuBmB,CAAM,GAChCjB,EAAQiB,EAAO,MAAc,SAAS,EAAE,KAAK,MAAM,CAEvD,CAAC,EAEDhB,EAAG,sCAAuC,IAAM,CAE9C,MAAMW,EAAmC,CACvC,OAAQN,EACR,aAAcD,CAChB,EACMU,EAAM,IAAIX,EAAuBQ,CAAI,EACrCI,EAAW,IAAInB,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKoB,EAASF,EAAI,cAAcC,CAAQ,EAGzChB,EAAOF,EAAuBmB,CAAM,CAAC,EAAE,KAAK,EAAI,EAC5CnB,EAAuBmB,CAAM,GAC/BjB,EAAOiB,EAAO,IAAI,EAAE,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,CAElD,CAAC,CACH,CAAC,CACH,CAAC",
6
6
  "names": ["ApduResponse", "isSuccessCommandResult", "describe", "expect", "it", "GeneralTags", "ISSUER_PLACEHOLDER_TLV", "SignBlockHeaderCommand", "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
- import{ApduBuilder as m,ApduParser as l,CommandResultFactory as r,InvalidStatusWordError as n}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as u}from"@ledgerhq/signer-utils";import{Maybe as p}from"purify-ts";import{LEDGER_SYNC_ERRORS as c,LedgerKeyringProtocolErrorFactory as y}from"./utils/ledgerKeyringProtocolErrors";class E{errorHelper=new u(c,y);constructor(){}getApdu(){return new m({cla:224,ins:7,p1:2,p2:0}).build()}parseResponse(t){return p.fromNullable(this.errorHelper.getError(t)).orDefaultLazy(()=>{const i=new l(t),a=i.getUnparsedRemainingLength(),e=i.extractFieldByLength(a);if(!e)return r({error:new n("No data returned by SignBlockSignatureCommand")});if(e.length<2)return r({error:new n("Invalid response: missing signature length or reserved byte")});const s=e[0];if(s===void 0)return r({error:new n("Invalid response: unable to read signature length")});const o=s;if(e.length<2+o)return r({error:new n("Signature length out of bounds")});const d=e.slice(1,1+o),g=e.slice(1+o+1);return r({data:{signature:d,deviceSessionKey:g}})})}}export{E as SignBlockSignatureCommand};
1
+ import{ApduBuilder as m,ApduParser as l,CommandResultFactory as r,InvalidStatusWordError as o}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as u}from"@ledgerhq/signer-utils";import{Maybe as p}from"purify-ts";import{LEDGER_SYNC_ERRORS as c,LedgerKeyringProtocolErrorFactory as y}from"./utils/ledgerKeyringProtocolErrors";class B{errorHelper=new u(c,y);constructor(){}getApdu(){return new m({cla:224,ins:7,p1:2,p2:0}).build()}parseResponse(t){return p.fromNullable(this.errorHelper.getError(t)).orDefaultLazy(()=>{const s=new l(t),i=s.getUnparsedRemainingLength(),e=s.extractFieldByLength(i);if(!e)return r({error:new o("No data returned by SignBlockSignatureCommand")});if(e.length<2)return r({error:new o("Invalid response: missing signature length or reserved byte")});const a=e[0];if(a===void 0)return r({error:new o("Invalid response: unable to read signature length")});const n=a;if(e.length<2+n)return r({error:new o("Signature length out of bounds")});const d=e.slice(1,1+n),g=e.slice(1+n+1);return r({data:{signature:d,deviceSessionKey:g}})})}}export{B as 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 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": "AAAA,OAEE,eAAAA,EACA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAEtB,OACE,sBAAAC,EAEA,qCAAAC,MACK,sCASA,MAAMC,CAOb,CACmB,YAAc,IAAIJ,EAGjCE,EAAoBC,CAAiC,EAEvD,aAAc,CAAC,CAEf,SAAgB,CACd,OAAO,IAAIP,EAAY,CACrB,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,CAAC,EAAE,MAAM,CACX,CAEA,cACES,EAIA,CACA,OAAOJ,EAAM,aACX,KAAK,YAAY,SAASI,CAAY,CACxC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAS,IAAIT,EAAWQ,CAAY,EACpCE,EAAMD,EAAO,2BAA2B,EACxCE,EAAOF,EAAO,qBAAqBC,CAAG,EAC5C,GAAI,CAACC,EACH,OAAOV,EAAqB,CAC1B,MAAO,IAAIC,EACT,+CACF,CACF,CAAC,EAGH,GAAIS,EAAK,OAAS,EAChB,OAAOV,EAAqB,CAC1B,MAAO,IAAIC,EACT,6DACF,CACF,CAAC,EAGH,MAAMU,EAAMD,EAAK,CAAC,EAClB,GAAIC,IAAQ,OACV,OAAOX,EAAqB,CAC1B,MAAO,IAAIC,EACT,mDACF,CACF,CAAC,EAGH,MAAMW,EAASD,EACf,GAAID,EAAK,OAAS,EAAIE,EACpB,OAAOZ,EAAqB,CAC1B,MAAO,IAAIC,EAAuB,gCAAgC,CACpE,CAAC,EAGH,MAAMY,EAAYH,EAAK,MAAM,EAAG,EAAIE,CAAM,EACpCE,EAAmBJ,EAAK,MAAM,EAAIE,EAAS,CAAC,EAElD,OAAOZ,EAAqB,CAAE,KAAM,CAAE,UAAAa,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 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": "AAAA,OAEE,eAAAA,EACA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAOtB,OACE,sBAAAC,EAEA,qCAAAC,MACK,sCAEA,MAAMC,CAOb,CACmB,YAAc,IAAIJ,EAGjCE,EAAoBC,CAAiC,EAEvD,aAAc,CAAC,CAEf,SAAgB,CACd,OAAO,IAAIP,EAAY,CACrB,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,CAAC,EAAE,MAAM,CACX,CAEA,cACES,EAIA,CACA,OAAOJ,EAAM,aACX,KAAK,YAAY,SAASI,CAAY,CACxC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAS,IAAIT,EAAWQ,CAAY,EACpCE,EAAMD,EAAO,2BAA2B,EACxCE,EAAOF,EAAO,qBAAqBC,CAAG,EAC5C,GAAI,CAACC,EACH,OAAOV,EAAqB,CAC1B,MAAO,IAAIC,EACT,+CACF,CACF,CAAC,EAGH,GAAIS,EAAK,OAAS,EAChB,OAAOV,EAAqB,CAC1B,MAAO,IAAIC,EACT,6DACF,CACF,CAAC,EAGH,MAAMU,EAAMD,EAAK,CAAC,EAClB,GAAIC,IAAQ,OACV,OAAOX,EAAqB,CAC1B,MAAO,IAAIC,EACT,mDACF,CACF,CAAC,EAGH,MAAMW,EAASD,EACf,GAAID,EAAK,OAAS,EAAIE,EACpB,OAAOZ,EAAqB,CAC1B,MAAO,IAAIC,EAAuB,gCAAgC,CACpE,CAAC,EAGH,MAAMY,EAAYH,EAAK,MAAM,EAAG,EAAIE,CAAM,EACpCE,EAAmBJ,EAAK,MAAM,EAAIE,EAAS,CAAC,EAElD,OAAOZ,EAAqB,CAAE,KAAM,CAAE,UAAAa,EAAW,iBAAAC,CAAiB,CAAE,CAAC,CACvE,CAAC,CACH,CACF",
6
6
  "names": ["ApduBuilder", "ApduParser", "CommandResultFactory", "InvalidStatusWordError", "CommandErrorHelper", "Maybe", "LEDGER_SYNC_ERRORS", "LedgerKeyringProtocolErrorFactory", "SignBlockSignatureCommand", "apduResponse", "parser", "rem", "data", "raw", "sigLen", "signature", "deviceSessionKey"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ApduResponse as u,isSuccessCommandResult as t}from"@ledgerhq/device-management-kit";import{describe as c,expect as r,it as i}from"vitest";import{SignBlockSignatureCommand as d}from"./SignBlockSignatureCommand";const a=Uint8Array.from([240,202,204,26]);c("SignBlockSignatureCommand",()=>{c("getApdu()",()=>{i("should build the correct APDU for finalize-signature",()=>{const s=new d().getApdu();r(s.getRawApdu()).toEqual(Uint8Array.from([224,7,2,0,0]))})}),c("parseResponse()",()=>{i("should return signature and sessionKey on success",()=>{const o=new Uint8Array([a.length,...a,a.length,...a]),s=new d,e=new u({statusCode:Uint8Array.from([144,0]),data:o}),n=s.parseResponse(e);if(r(t(n)).toBe(!0),t(n)){const m=n.data;r(m.signature).toEqual(a),r(m.deviceSessionKey).toEqual(a)}}),i("should map SW errors to CommandResult errors",()=>{const o=new d,s=new u({statusCode:Uint8Array.from([106,134]),data:new Uint8Array}),e=o.parseResponse(s);r(t(e)).toBe(!1),t(e)||r(e.error.errorCode).toBe("6a86")}),i("should error if missing length or reserved byte",()=>{const o=new d,s=new u({statusCode:Uint8Array.from([144,0]),data:new Uint8Array}),e=o.parseResponse(s);r(t(e)).toBe(!1),t(e)||(r(e.error._tag).toBe("InvalidStatusWordError"),r(e.error.originalError.message).toBe("Invalid response: missing signature length or reserved byte"))}),i("should error if signature length out of bounds",()=>{const o=Uint8Array.from([5,170,187]),s=new d,e=new u({statusCode:Uint8Array.from([144,0]),data:o}),n=s.parseResponse(e);r(t(n)).toBe(!1),t(n)||(r(n.error._tag).toBe("InvalidStatusWordError"),r(n.error.originalError.message).toBe("Signature length out of bounds"))})})});
1
+ import{ApduResponse as u,isSuccessCommandResult as n}from"@ledgerhq/device-management-kit";import{describe as c,expect as r,it as i}from"vitest";import{SignBlockSignatureCommand as d}from"./SignBlockSignatureCommand";const a=Uint8Array.from([240,202,204,26]);c("SignBlockSignatureCommand",()=>{c("getApdu()",()=>{i("should build the correct APDU for finalize-signature",()=>{const o=new d().getApdu();r(o.getRawApdu()).toEqual(Uint8Array.from([224,7,2,0,0]))})}),c("parseResponse()",()=>{i("should return signature and sessionKey on success",()=>{const s=new Uint8Array([a.length,...a,a.length,...a]),o=new d,e=new u({statusCode:Uint8Array.from([144,0]),data:s}),t=o.parseResponse(e);if(r(n(t)).toBe(!0),n(t)){const m=t.data;r(m.signature).toEqual(a),r(m.deviceSessionKey).toEqual(a)}}),i("should map SW errors to CommandResult errors",()=>{const s=new d,o=new u({statusCode:Uint8Array.from([106,134]),data:new Uint8Array}),e=s.parseResponse(o);r(n(e)).toBe(!1),n(e)||r(e.error.errorCode).toBe("6a86")}),i("should error if missing length or reserved byte",()=>{const s=new d,o=new u({statusCode:Uint8Array.from([144,0]),data:new Uint8Array}),e=s.parseResponse(o);r(n(e)).toBe(!1),n(e)||(r(e.error._tag).toBe("InvalidStatusWordError"),r(e.error.originalError.message).toBe("Invalid response: missing signature length or reserved byte"))}),i("should error if signature length out of bounds",()=>{const s=Uint8Array.from([5,170,187]),o=new d,e=new u({statusCode:Uint8Array.from([144,0]),data:s}),t=o.parseResponse(e);r(n(t)).toBe(!1),n(t)||(r(t.error._tag).toBe("InvalidStatusWordError"),r(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 {\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,OACE,gBAAAA,EACA,0BAAAC,MACK,kCACP,OAAS,YAAAC,EAAU,UAAAC,EAAQ,MAAAC,MAAU,SAErC,OACE,6BAAAC,MAEK,8BAEP,MAAMC,EAAc,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAI,CAAC,EAE5DJ,EAAS,4BAA6B,IAAM,CAC1CA,EAAS,YAAa,IAAM,CAC1BE,EAAG,uDAAwD,IAAM,CAE/D,MAAMG,EADM,IAAIF,EAA0B,EACzB,QAAQ,EACzBF,EAAOI,EAAK,WAAW,CAAC,EAAE,QACxB,WAAW,KAAK,CAAC,IAAM,EAAM,EAAM,EAAM,CAAI,CAAC,CAChD,CACF,CAAC,CACH,CAAC,EAEDL,EAAS,kBAAmB,IAAM,CAChCE,EAAG,oDAAqD,IAAM,CAE5D,MAAMI,EAAU,IAAI,WAAW,CAC7BF,EAAY,OACZ,GAAGA,EACHA,EAAY,OACZ,GAAGA,CACL,CAAC,EACKG,EAAM,IAAIJ,EACVK,EAAW,IAAIV,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMQ,CACR,CAAC,EAGKG,EAASF,EAAI,cAAcC,CAAQ,EAIzC,GADAP,EAAOF,EAAuBU,CAAM,CAAC,EAAE,KAAK,EAAI,EAC5CV,EAAuBU,CAAM,EAAG,CAClC,MAAMC,EAAyCD,EAAO,KACtDR,EAAOS,EAAI,SAAS,EAAE,QAAQN,CAAW,EACzCH,EAAOS,EAAI,gBAAgB,EAAE,QAAQN,CAAW,CAClD,CACF,CAAC,EAEDF,EAAG,+CAAgD,IAAM,CAEvD,MAAMK,EAAM,IAAIJ,EACVK,EAAW,IAAIV,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,GAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKW,EAASF,EAAI,cAAcC,CAAQ,EAGzCP,EAAOF,EAAuBU,CAAM,CAAC,EAAE,KAAK,EAAK,EAC5CV,EAAuBU,CAAM,GAChCR,EAAQQ,EAAO,MAAc,SAAS,EAAE,KAAK,MAAM,CAEvD,CAAC,EAEDP,EAAG,kDAAmD,IAAM,CAE1D,MAAMK,EAAM,IAAIJ,EACVK,EAAW,IAAIV,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKW,EAASF,EAAI,cAAcC,CAAQ,EAGzCP,EAAOF,EAAuBU,CAAM,CAAC,EAAE,KAAK,EAAK,EAC5CV,EAAuBU,CAAM,IAChCR,EAAQQ,EAAO,MAAc,IAAI,EAAE,KAAK,wBAAwB,EAChER,EAAQQ,EAAO,MAAc,cAAc,OAAO,EAAE,KAClD,6DACF,EAEJ,CAAC,EAEDP,EAAG,iDAAkD,IAAM,CAEzD,MAAMS,EAAM,WAAW,KAAK,CAAC,EAAG,IAAM,GAAI,CAAC,EACrCJ,EAAM,IAAIJ,EACVK,EAAW,IAAIV,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMa,CACR,CAAC,EAGKF,EAASF,EAAI,cAAcC,CAAQ,EAGzCP,EAAOF,EAAuBU,CAAM,CAAC,EAAE,KAAK,EAAK,EAC5CV,EAAuBU,CAAM,IAChCR,EAAQQ,EAAO,MAAc,IAAI,EAAE,KAAK,wBAAwB,EAChER,EAAQQ,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 { 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,OACE,gBAAAA,EACA,0BAAAC,MACK,kCACP,OAAS,YAAAC,EAAU,UAAAC,EAAQ,MAAAC,MAAU,SAIrC,OAAS,6BAAAC,MAAiC,8BAE1C,MAAMC,EAAc,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAI,CAAC,EAE5DJ,EAAS,4BAA6B,IAAM,CAC1CA,EAAS,YAAa,IAAM,CAC1BE,EAAG,uDAAwD,IAAM,CAE/D,MAAMG,EADM,IAAIF,EAA0B,EACzB,QAAQ,EACzBF,EAAOI,EAAK,WAAW,CAAC,EAAE,QACxB,WAAW,KAAK,CAAC,IAAM,EAAM,EAAM,EAAM,CAAI,CAAC,CAChD,CACF,CAAC,CACH,CAAC,EAEDL,EAAS,kBAAmB,IAAM,CAChCE,EAAG,oDAAqD,IAAM,CAE5D,MAAMI,EAAU,IAAI,WAAW,CAC7BF,EAAY,OACZ,GAAGA,EACHA,EAAY,OACZ,GAAGA,CACL,CAAC,EACKG,EAAM,IAAIJ,EACVK,EAAW,IAAIV,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMQ,CACR,CAAC,EAGKG,EAASF,EAAI,cAAcC,CAAQ,EAIzC,GADAP,EAAOF,EAAuBU,CAAM,CAAC,EAAE,KAAK,EAAI,EAC5CV,EAAuBU,CAAM,EAAG,CAClC,MAAMC,EAAyCD,EAAO,KACtDR,EAAOS,EAAI,SAAS,EAAE,QAAQN,CAAW,EACzCH,EAAOS,EAAI,gBAAgB,EAAE,QAAQN,CAAW,CAClD,CACF,CAAC,EAEDF,EAAG,+CAAgD,IAAM,CAEvD,MAAMK,EAAM,IAAIJ,EACVK,EAAW,IAAIV,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,GAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKW,EAASF,EAAI,cAAcC,CAAQ,EAGzCP,EAAOF,EAAuBU,CAAM,CAAC,EAAE,KAAK,EAAK,EAC5CV,EAAuBU,CAAM,GAChCR,EAAQQ,EAAO,MAAc,SAAS,EAAE,KAAK,MAAM,CAEvD,CAAC,EAEDP,EAAG,kDAAmD,IAAM,CAE1D,MAAMK,EAAM,IAAIJ,EACVK,EAAW,IAAIV,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKW,EAASF,EAAI,cAAcC,CAAQ,EAGzCP,EAAOF,EAAuBU,CAAM,CAAC,EAAE,KAAK,EAAK,EAC5CV,EAAuBU,CAAM,IAChCR,EAAQQ,EAAO,MAAc,IAAI,EAAE,KAAK,wBAAwB,EAChER,EAAQQ,EAAO,MAAc,cAAc,OAAO,EAAE,KAClD,6DACF,EAEJ,CAAC,EAEDP,EAAG,iDAAkD,IAAM,CAEzD,MAAMS,EAAM,WAAW,KAAK,CAAC,EAAG,IAAM,GAAI,CAAC,EACrCJ,EAAM,IAAIJ,EACVK,EAAW,IAAIV,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMa,CACR,CAAC,EAGKF,EAASF,EAAI,cAAcC,CAAQ,EAGzCP,EAAOF,EAAuBU,CAAM,CAAC,EAAE,KAAK,EAAK,EAC5CV,EAAuBU,CAAM,IAChCR,EAAQQ,EAAO,MAAc,IAAI,EAAE,KAAK,wBAAwB,EAChER,EAAQQ,EAAO,MAAc,cAAc,OAAO,EAAE,KAClD,gCACF,EAEJ,CAAC,CACH,CAAC,CACH,CAAC",
6
6
  "names": ["ApduResponse", "isSuccessCommandResult", "describe", "expect", "it", "SignBlockSignatureCommand", "SIG_AND_KEY", "apdu", "payload", "cmd", "response", "result", "res", "bad"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ApduBuilder as a,ApduParser as m,CommandResultFactory as n,InvalidStatusWordError as d}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as i}from"@ledgerhq/signer-utils";import{Maybe as l}from"purify-ts";import{LEDGER_SYNC_ERRORS as g,LedgerKeyringProtocolErrorFactory as s}from"./utils/ledgerKeyringProtocolErrors";class C{constructor(r){this.args=r}errorHelper=new i(g,s);getApdu(){return new a({cla:224,ins:7,p1:1,p2:0}).addBufferToData(this.args.command).build()}parseResponse(r){return l.fromNullable(this.errorHelper.getError(r)).orDefaultLazy(()=>{const e=new m(r),t=e.getUnparsedRemainingLength(),o=e.extractFieldByLength(t);return o?n({data:o}):n({error:new d("No data returned by SignBlockSingleCommand")})})}}export{C as SignBlockSingleCommand};
1
+ import{ApduBuilder as m,ApduParser as a,CommandResultFactory as n,InvalidStatusWordError as d}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as l}from"@ledgerhq/signer-utils";import{Maybe as i}from"purify-ts";import{LEDGER_SYNC_ERRORS as g,LedgerKeyringProtocolErrorFactory as s}from"./utils/ledgerKeyringProtocolErrors";class C{constructor(r){this.args=r}errorHelper=new l(g,s);getApdu(){return new m({cla:224,ins:7,p1:1,p2:0}).addBufferToData(this.args.command).build()}parseResponse(r){return i.fromNullable(this.errorHelper.getError(r)).orDefaultLazy(()=>{const e=new a(r),t=e.getUnparsedRemainingLength(),o=e.extractFieldByLength(t);return o?n({data:o}):n({error:new d("No data returned by SignBlockSingleCommand")})})}}export{C as 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 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": "AAAA,OAEE,eAAAA,EACA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAEtB,OACE,sBAAAC,EAEA,qCAAAC,MACK,sCAQA,MAAMC,CAOb,CAME,YAA6BC,EAAkC,CAAlC,UAAAA,CAAmC,CAL/C,YAAc,IAAIL,EAGjCE,EAAoBC,CAAiC,EAIvD,SAAgB,CACd,OAAO,IAAIP,EAAY,CACrB,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,CAAC,EACE,gBAAgB,KAAK,KAAK,OAAO,EACjC,MAAM,CACX,CAEA,cACEU,EAIA,CACA,OAAOL,EAAM,aACX,KAAK,YAAY,SAASK,CAAY,CACxC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAS,IAAIV,EAAWS,CAAY,EACpCE,EAAYD,EAAO,2BAA2B,EAC9CE,EAAUF,EAAO,qBAAqBC,CAAS,EACrD,OAAKC,EAOEX,EAAqB,CAAE,KAAMW,CAAQ,CAAC,EANpCX,EAAqB,CAC1B,MAAO,IAAIC,EACT,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 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": "AAAA,OAEE,eAAAA,EACA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAOtB,OACE,sBAAAC,EAEA,qCAAAC,MACK,sCAEA,MAAMC,CAOb,CAME,YAA6BC,EAAkC,CAAlC,UAAAA,CAAmC,CAL/C,YAAc,IAAIL,EAGjCE,EAAoBC,CAAiC,EAIvD,SAAgB,CACd,OAAO,IAAIP,EAAY,CACrB,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,CAAC,EACE,gBAAgB,KAAK,KAAK,OAAO,EACjC,MAAM,CACX,CAEA,cACEU,EAIA,CACA,OAAOL,EAAM,aACX,KAAK,YAAY,SAASK,CAAY,CACxC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAS,IAAIV,EAAWS,CAAY,EACpCE,EAAYD,EAAO,2BAA2B,EAC9CE,EAAUF,EAAO,qBAAqBC,CAAS,EACrD,OAAKC,EAOEX,EAAqB,CAAE,KAAMW,CAAQ,CAAC,EANpCX,EAAqB,CAC1B,MAAO,IAAIC,EACT,4CACF,CACF,CAAC,CAGL,CAAC,CACH,CACF",
6
6
  "names": ["ApduBuilder", "ApduParser", "CommandResultFactory", "InvalidStatusWordError", "CommandErrorHelper", "Maybe", "LEDGER_SYNC_ERRORS", "LedgerKeyringProtocolErrorFactory", "SignBlockSingleCommand", "args", "apduResponse", "parser", "remaining", "tlvBlob"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ApduResponse as d,isSuccessCommandResult as t}from"@ledgerhq/device-management-kit";import{describe as i,expect as s,it as c}from"vitest";import{SignBlockSingleCommand as m}from"./SignBlockSingleCommand";const a=Uint8Array.from([240,202,204,26]),l=Uint8Array.from([240,202,204,26]);i("SignBlockSingleCommand",()=>{i("getApdu()",()=>{c("should build the correct APDU for a given command",()=>{const o={command:a},e=new m(o).getApdu(),n=Uint8Array.from([224,7,1,0,a.length,...a]);s(e.getRawApdu()).toEqual(n)})}),i("parseResponse()",()=>{c("should return the raw TLV blob on success",()=>{const o={command:a},r=new m(o),e=new d({statusCode:Uint8Array.from([144,0]),data:l}),n=r.parseResponse(e);if(s(t(n)).toBe(!0),t(n)){const g=n.data;s(g).toEqual(l)}}),c("should map SW errors to CommandResult errors",()=>{const o={command:a},r=new m(o),e=new d({statusCode:Uint8Array.from([106,134]),data:new Uint8Array}),n=r.parseResponse(e);s(t(n)).toBe(!1),t(n)||s(n.error.errorCode).toBe("6a86")}),c("should return an empty Uint8Array if no data is returned",()=>{const o={command:a},r=new m(o),e=new d({statusCode:Uint8Array.from([144,0]),data:new Uint8Array}),n=r.parseResponse(e);s(t(n)).toBe(!0),t(n)&&s(n.data).toEqual(new Uint8Array)})})});
1
+ import{ApduResponse as d,isSuccessCommandResult as t}from"@ledgerhq/device-management-kit";import{describe as i,expect as s,it as c}from"vitest";import{SignBlockSingleCommand as m}from"./SignBlockSingleCommand";const a=Uint8Array.from([240,202,204,26]),l=Uint8Array.from([240,202,204,26]);i("SignBlockSingleCommand",()=>{i("getApdu()",()=>{c("should build the correct APDU for a given command",()=>{const n={command:a},e=new m(n).getApdu(),o=Uint8Array.from([224,7,1,0,a.length,...a]);s(e.getRawApdu()).toEqual(o)})}),i("parseResponse()",()=>{c("should return the raw TLV blob on success",()=>{const n={command:a},r=new m(n),e=new d({statusCode:Uint8Array.from([144,0]),data:l}),o=r.parseResponse(e);if(s(t(o)).toBe(!0),t(o)){const g=o.data;s(g).toEqual(l)}}),c("should map SW errors to CommandResult errors",()=>{const n={command:a},r=new m(n),e=new d({statusCode:Uint8Array.from([106,134]),data:new Uint8Array}),o=r.parseResponse(e);s(t(o)).toBe(!1),t(o)||s(o.error.errorCode).toBe("6a86")}),c("should return an empty Uint8Array if no data is returned",()=>{const n={command:a},r=new m(n),e=new d({statusCode:Uint8Array.from([144,0]),data:new Uint8Array}),o=r.parseResponse(e);s(t(o)).toBe(!0),t(o)&&s(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 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,OACE,gBAAAA,EACA,0BAAAC,MACK,kCACP,OAAS,YAAAC,EAAU,UAAAC,EAAQ,MAAAC,MAAU,SAErC,OACE,0BAAAC,MAGK,2BAEP,MAAMC,EAAgB,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAI,CAAC,EACxDC,EAAc,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAI,CAAC,EAE5DL,EAAS,yBAA0B,IAAM,CACvCA,EAAS,YAAa,IAAM,CAC1BE,EAAG,oDAAqD,IAAM,CAE5D,MAAMI,EAAmC,CAAE,QAASF,CAAc,EAI5DG,EAHM,IAAIJ,EAAuBG,CAAI,EAG1B,QAAQ,EACnBE,EAAW,WAAW,KAAK,CAC/B,IACA,EACA,EACA,EACAJ,EAAc,OACd,GAAGA,CACL,CAAC,EAGDH,EAAOM,EAAK,WAAW,CAAC,EAAE,QAAQC,CAAQ,CAC5C,CAAC,CACH,CAAC,EAEDR,EAAS,kBAAmB,IAAM,CAChCE,EAAG,4CAA6C,IAAM,CAEpD,MAAMI,EAAmC,CAAE,QAASF,CAAc,EAC5DK,EAAM,IAAIN,EAAuBG,CAAI,EACrCI,EAAW,IAAIZ,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMO,CACR,CAAC,EAGKM,EAASF,EAAI,cAAcC,CAAQ,EAIzC,GADAT,EAAOF,EAAuBY,CAAM,CAAC,EAAE,KAAK,EAAI,EAC5CZ,EAAuBY,CAAM,EAAG,CAClC,MAAMC,EAAuCD,EAAO,KACpDV,EAAOW,CAAI,EAAE,QAAQP,CAAW,CAClC,CACF,CAAC,EAEDH,EAAG,+CAAgD,IAAM,CAEvD,MAAMI,EAAmC,CAAE,QAASF,CAAc,EAC5DK,EAAM,IAAIN,EAAuBG,CAAI,EACrCI,EAAW,IAAIZ,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,GAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKa,EAASF,EAAI,cAAcC,CAAQ,EAGzCT,EAAOF,EAAuBY,CAAM,CAAC,EAAE,KAAK,EAAK,EAC5CZ,EAAuBY,CAAM,GAChCV,EAAQU,EAAO,MAAc,SAAS,EAAE,KAAK,MAAM,CAEvD,CAAC,EAEDT,EAAG,2DAA4D,IAAM,CAEnE,MAAMI,EAAmC,CAAE,QAASF,CAAc,EAC5DK,EAAM,IAAIN,EAAuBG,CAAI,EACrCI,EAAW,IAAIZ,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKa,EAASF,EAAI,cAAcC,CAAQ,EAGzCT,EAAOF,EAAuBY,CAAM,CAAC,EAAE,KAAK,EAAI,EAC5CZ,EAAuBY,CAAM,GAC/BV,EAAOU,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 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,OACE,gBAAAA,EACA,0BAAAC,MACK,kCACP,OAAS,YAAAC,EAAU,UAAAC,EAAQ,MAAAC,MAAU,SAOrC,OAAS,0BAAAC,MAA8B,2BAEvC,MAAMC,EAAgB,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAI,CAAC,EACxDC,EAAc,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAI,CAAC,EAE5DL,EAAS,yBAA0B,IAAM,CACvCA,EAAS,YAAa,IAAM,CAC1BE,EAAG,oDAAqD,IAAM,CAE5D,MAAMI,EAAmC,CAAE,QAASF,CAAc,EAI5DG,EAHM,IAAIJ,EAAuBG,CAAI,EAG1B,QAAQ,EACnBE,EAAW,WAAW,KAAK,CAC/B,IACA,EACA,EACA,EACAJ,EAAc,OACd,GAAGA,CACL,CAAC,EAGDH,EAAOM,EAAK,WAAW,CAAC,EAAE,QAAQC,CAAQ,CAC5C,CAAC,CACH,CAAC,EAEDR,EAAS,kBAAmB,IAAM,CAChCE,EAAG,4CAA6C,IAAM,CAEpD,MAAMI,EAAmC,CAAE,QAASF,CAAc,EAC5DK,EAAM,IAAIN,EAAuBG,CAAI,EACrCI,EAAW,IAAIZ,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMO,CACR,CAAC,EAGKM,EAASF,EAAI,cAAcC,CAAQ,EAIzC,GADAT,EAAOF,EAAuBY,CAAM,CAAC,EAAE,KAAK,EAAI,EAC5CZ,EAAuBY,CAAM,EAAG,CAClC,MAAMC,EAAuCD,EAAO,KACpDV,EAAOW,CAAI,EAAE,QAAQP,CAAW,CAClC,CACF,CAAC,EAEDH,EAAG,+CAAgD,IAAM,CAEvD,MAAMI,EAAmC,CAAE,QAASF,CAAc,EAC5DK,EAAM,IAAIN,EAAuBG,CAAI,EACrCI,EAAW,IAAIZ,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,GAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKa,EAASF,EAAI,cAAcC,CAAQ,EAGzCT,EAAOF,EAAuBY,CAAM,CAAC,EAAE,KAAK,EAAK,EAC5CZ,EAAuBY,CAAM,GAChCV,EAAQU,EAAO,MAAc,SAAS,EAAE,KAAK,MAAM,CAEvD,CAAC,EAEDT,EAAG,2DAA4D,IAAM,CAEnE,MAAMI,EAAmC,CAAE,QAASF,CAAc,EAC5DK,EAAM,IAAIN,EAAuBG,CAAI,EACrCI,EAAW,IAAIZ,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKa,EAASF,EAAI,cAAcC,CAAQ,EAGzCT,EAAOF,EAAuBY,CAAM,CAAC,EAAE,KAAK,EAAI,EAC5CZ,EAAuBY,CAAM,GAC/BV,EAAOU,EAAO,IAAI,EAAE,QAAQ,IAAI,UAAY,CAEhD,CAAC,CACH,CAAC,CACH,CAAC",
6
6
  "names": ["ApduResponse", "isSuccessCommandResult", "describe", "expect", "it", "SignBlockSingleCommand", "COMMAND_BYTES", "TLV_PAYLOAD", "args", "apdu", "expected", "cmd", "response", "result", "data"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{hexaStringToBuffer as A,UserInteractionRequired as u,XStateDeviceAction as D}from"@ledgerhq/device-management-kit";import{EitherAsync as m,Left as T,Right as E}from"purify-ts";import{assign as p,fromPromise as h,setup as g}from"xstate";import{AddToTrustchainDAState as S,AddToTrustchaineDAStep as d}from"../../../api/app-binder/AddToTrustchainDeviceActionTypes";import{LKRPTrustchainNotReady as k,LKRPUnknownError as I}from"../../../api/model/Errors";import{InitTask as v}from"../../app-binder/task/InitTask";import{ParseStreamToDeviceTask as f}from"../../app-binder/task/ParseStreamToDeviceTask";import{SignBlockTask as b}from"../../app-binder/task/SignBlockTask";import{eitherSeqRecord as l}from"../../utils/eitherSeqRecord";import{required as s}from"../../utils/required";import{raiseAndAssign as c}from"./utils/raiseAndAssign";class U extends D{makeStateMachine(o){const{initCommand:i,parseStream:a,signBlock:y}=this.extractDependencies(o);return g({types:{input:{},context:{},output:{}},actors:{initCommand:h(i),parseStream:h(a),signBlock:h(y)},actions:{assignErrorFromEvent:c(({event:t})=>T(new I(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:u.None},_internalState:E({sessionKeypair:null})}),initial:"InitSession",states:{InitSession:{entry:p({intermediateValue:{requiredUserInteraction:u.None,step:d.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:c(({event:t})=>t.output.map(e=>({raise:"success",assign:{sessionKeypair:e}})))}}},ParseStream:{entry:p({intermediateValue:{requiredUserInteraction:u.None,step:d.ParseStream}}),on:{success:"CheckApplicationStreamExist",error:"Error"},invoke:{id:"parseStream",src:"parseStream",input:({context:t})=>t.input.chain(e=>l({seedBlock:()=>s(e.trustchain.getRootStream().chain(r=>r.parse().toMaybe()).extract()?.[0],"Missing seed block to parse"),applicationStream:()=>s(e.trustchain.getAppStream(e.appId).extract(),"Missing application stream to parse")})),onError:{actions:"assignErrorFromEvent"},onDone:{actions:c(({event:t})=>t.output.map(()=>({raise:"success"})))}}},CheckApplicationStreamExist:{always:[{target:"AddToNewStream",guard:"isTustchainEmpty"},{target:"AddToExistingStream"}]},AddToExistingStream:{entry:p({intermediateValue:{requiredUserInteraction:S.AddMember,step:d.AddMember}}),on:{success:"Success",error:"Error"},invoke:{id:"signBlock",src:"signBlock",input:({context:t})=>t.input.chain(e=>{const r=e.trustchain.getAppStream(e.appId);return l({cryptoService:e.cryptoService,lkrpDataSource:e.lkrpDataSource,trustchainId:e.trustchain.getId(),jwt:e.jwt,clientName:e.clientName,sessionKeypair:()=>t._internalState.chain(({sessionKeypair:n})=>s(n,"Missing session keypair")),path:()=>s(r.chain(n=>n.getPath()).extract(),"Missing application path"),parent:()=>s(r.chain(n=>n.parse().toMaybe()).chainNullable(n=>n.at(-1)?.hash()).chainNullable(A).extract(),"Missing parent block"),blockFlow:{type:"addMember",data:{name:e.clientName,publicKey:e.keypair.getPublicKey(),permissions:e.permissions}}})}),onError:{actions:"assignErrorFromEvent"},onDone:{actions:c(({event:t})=>t.output.map(()=>({raise:"success"})))}}},AddToNewStream:{entry:p({intermediateValue:{requiredUserInteraction:S.AddMember,step:d.AddMember}}),on:{success:"Success",error:"Error"},invoke:{id:"signBlock",src:"signBlock",input:({context:t})=>t.input.chain(e=>l({lkrpDataSource:e.lkrpDataSource,trustchainId:e.trustchain.getId(),jwt:e.jwt,clientName:e.clientName,sessionKeypair:()=>t._internalState.chain(({sessionKeypair:r})=>s(r,"Missing session keypair")),path:`m/0'/${e.appId}'/0'`,parent:()=>s(e.trustchain.getRootStream().chain(r=>r.parse().toMaybe()).chainNullable(r=>r[0]?.hash()).chainNullable(A).extract(),"Missing init block"),blockFlow:{type:"derive",data:{name:e.clientName,publicKey:e.keypair.getPublicKey(),permissions:e.permissions}}}).chain(()=>T(new k))),onError:{actions:"assignErrorFromEvent"},onDone:{actions:c(({event:t})=>t.output.map(()=>({raise:"success"})))}}},Success:{type:"final"},Error:{type:"final"}},output:({context:t})=>t._internalState.map(e=>{})})}extractDependencies(o){return{initCommand:async i=>m.liftEither(i.input).chain(a=>new v(o,a).run()).run(),parseStream:async i=>m.liftEither(i.input).chain(a=>new f(o).run(a)).run(),signBlock:i=>m.liftEither(i.input).chain(a=>new b(o,a.cryptoService).run(a)).run()}}}export{U as AddToTrustchainDeviceAction};
1
+ import{hexaStringToBuffer as T,UserInteractionRequired as u,XStateDeviceAction as D}from"@ledgerhq/device-management-kit";import{EitherAsync as l,Left as A,Right as E}from"purify-ts";import{assign as p,fromPromise as m,setup as g}from"xstate";import{AddToTrustchainDAState as S,AddToTrustchaineDAStep as d}from"../../../api/app-binder/AddToTrustchainDeviceActionTypes";import{LKRPTrustchainNotReady as k,LKRPUnknownError as I}from"../../../api/app-binder/Errors";import{InitTask as b}from"../../app-binder/task/InitTask";import{ParseStreamToDeviceTask as f}from"../../app-binder/task/ParseStreamToDeviceTask";import{SignBlockTask as M}from"../../app-binder/task/SignBlockTask";import{eitherSeqRecord as h}from"../../utils/eitherSeqRecord";import{required as i}from"../../utils/required";import{raiseAndAssign as c}from"./utils/raiseAndAssign";class F extends D{makeStateMachine(n){const{initCommand:s,parseStream:o,signBlock:y}=this.extractDependencies(n);return g({types:{input:{},context:{},output:{}},actors:{initCommand:m(s),parseStream:m(o),signBlock:m(y)},actions:{assignErrorFromEvent:c(({event:t})=>A(new I(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:u.None},_internalState:E({sessionKeypair:null})}),initial:"InitSession",states:{InitSession:{entry:p({intermediateValue:{requiredUserInteraction:u.None,step:d.Initialize}}),on:{success:"ParseStream",error:"Error"},invoke:{id:"initCommand",src:"initCommand",onError:{actions:"assignErrorFromEvent"},onDone:{actions:c(({event:t})=>t.output.map(e=>({raise:"success",assign:{sessionKeypair:e}})))}}},ParseStream:{entry:p({intermediateValue:{requiredUserInteraction:u.None,step:d.ParseStream}}),on:{success:"CheckApplicationStreamExist",error:"Error"},invoke:{id:"parseStream",src:"parseStream",input:({context:t})=>t.input.chain(e=>h({seedBlock:()=>i(e.trustchain.getRootStream().chain(r=>r.parse().toMaybe()).extract()?.[0],"Missing seed block to parse"),applicationStream:()=>i(e.trustchain.getAppStream(e.appId).extract(),"Missing application stream to parse")})),onError:{actions:"assignErrorFromEvent"},onDone:{actions:c(({event:t})=>t.output.map(()=>({raise:"success"})))}}},CheckApplicationStreamExist:{always:[{target:"AddToNewStream",guard:"isTustchainEmpty"},{target:"AddToExistingStream"}]},AddToExistingStream:{entry:p({intermediateValue:{requiredUserInteraction:S.AddMember,step:d.AddMember}}),on:{success:"Success",error:"Error"},invoke:{id:"signBlock",src:"signBlock",input:({context:t})=>t.input.chain(e=>{const r=e.trustchain.getAppStream(e.appId);return h({lkrpDataSource:e.lkrpDataSource,trustchainId:e.trustchain.getId(),jwt:e.jwt,clientName:e.clientName,sessionKeypair:()=>t._internalState.chain(({sessionKeypair:a})=>i(a,"Missing session keypair")),path:()=>i(r.chain(a=>a.getPath()).extract(),"Missing application path"),parent:()=>i(r.chain(a=>a.parse().toMaybe()).chainNullable(a=>a.at(-1)?.hash()).chainNullable(T).extract(),"Missing parent block"),blockFlow:{type:"addMember",data:{name:e.clientName,publicKey:e.keypair.pubKeyToU8a(),permissions:e.permissions}}})}),onError:{actions:"assignErrorFromEvent"},onDone:{actions:c(({event:t})=>t.output.map(()=>({raise:"success"})))}}},AddToNewStream:{entry:p({intermediateValue:{requiredUserInteraction:S.AddMember,step:d.AddMember}}),on:{success:"Success",error:"Error"},invoke:{id:"signBlock",src:"signBlock",input:({context:t})=>t.input.chain(e=>h({lkrpDataSource:e.lkrpDataSource,trustchainId:e.trustchain.getId(),jwt:e.jwt,clientName:e.clientName,sessionKeypair:()=>t._internalState.chain(({sessionKeypair:r})=>i(r,"Missing session keypair")),path:`m/0'/${e.appId}'/0'`,parent:()=>i(e.trustchain.getRootStream().chain(r=>r.parse().toMaybe()).chainNullable(r=>r[0]?.hash()).chainNullable(T).extract(),"Missing init block"),blockFlow:{type:"derive",data:{name:e.clientName,publicKey:e.keypair.pubKeyToU8a(),permissions:e.permissions}}}).chain(()=>A(new k))),onError:{actions:"assignErrorFromEvent"},onDone:{actions:c(({event:t})=>t.output.map(()=>({raise:"success"})))}}},Success:{type:"final"},Error:{type:"final"}},output:({context:t})=>t._internalState.map(e=>{})})}extractDependencies(n){return{initCommand:()=>new b(n).run(),parseStream:async s=>l.liftEither(s.input).chain(o=>new f(n).run(o)).run(),signBlock:s=>l.liftEither(s.input).chain(o=>new M(n).run(o)).run()}}}export{F as 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 { 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": "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",
6
- "names": ["hexaStringToBuffer", "UserInteractionRequired", "XStateDeviceAction", "EitherAsync", "Left", "Right", "assign", "fromPromise", "setup", "AddToTrustchainDAState", "AddToTrustchaineDAStep", "LKRPTrustchainNotReady", "LKRPUnknownError", "InitTask", "ParseStreamToDeviceTask", "SignBlockTask", "eitherSeqRecord", "required", "raiseAndAssign", "AddToTrustchainDeviceAction", "internalApi", "initCommand", "parseStream", "signBlock", "event", "context", "input", "appStream", "blocks", "sessionKeypair", "stream", "_", "args", "cryptoService"]
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": ["hexaStringToBuffer", "UserInteractionRequired", "XStateDeviceAction", "EitherAsync", "Left", "Right", "assign", "fromPromise", "setup", "AddToTrustchainDAState", "AddToTrustchaineDAStep", "LKRPTrustchainNotReady", "LKRPUnknownError", "InitTask", "ParseStreamToDeviceTask", "SignBlockTask", "eitherSeqRecord", "required", "raiseAndAssign", "AddToTrustchainDeviceAction", "internalApi", "initCommand", "parseStream", "signBlock", "event", "context", "input", "appStream", "blocks", "sessionKeypair", "stream", "_", "args"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{OpenAppDeviceAction as S,UserInteractionRequired as h,XStateDeviceAction as T}from"@ledgerhq/device-management-kit";import{EitherAsync as d,Left as A,Right as D}from"purify-ts";import{assign as s,fromPromise as m,setup as g}from"xstate";import{AuthenticateDAState as v,AuthenticateDAStep as o}from"../../../api/app-binder/AuthenticateDeviceActionTypes";import{LKRPMissingDataError as l,LKRPTrustchainNotReady as I,LKRPUnknownError as f}from"../../../api/model/Errors";import{AuthenticateTask as k}from"../../app-binder/task/AuthenticateTask";import{ExtractEncryptionKeyTask as M}from"../../app-binder/task/ExtractEncryptionKeyTask";import{SignChallengeWithDeviceTask as w}from"../../app-binder/task/SignChallengeWithDeviceTask";import{eitherSeqRecord as y}from"../../utils/eitherSeqRecord";import{required as r}from"../../utils/required";import{raiseAndAssign as a}from"./utils/raiseAndAssign";import{AddToTrustchainDeviceAction as K}from"./AddToTrustchainDeviceAction";const E="Ledger Sync";class F extends T{makeStateMachine(c){const{deviceAuth:u,getTrustchain:p,extractEncryptionKey:i}=this.extractDependencies(c);return g({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new S({input:{appName:E}}).makeStateMachine(c),deviceAuth:m(u),getTrustchain:m(p),addToTrustchainStateMachine:new K({input:A(new l("Missing input for GetEncryptionKey"))}).makeStateMachine(c),extractEncryptionKey:m(i)},actions:{assignErrorFromEvent:a(({event:t})=>A(new f(String(t.error))))},guards:{isTrustchainMember:({context:t})=>t._internalState.toMaybe().map(e=>e.wasAddedToTrustchain||e.trustchain?.getAppStream(t.input.appId).mapOrDefault(n=>n.hasMember(t.input.keypair.getPublicKeyToHex()),!1)).extract()??!1}}).createMachine({id:"AuthenticateWithDeviceDeviceAction",context:({input:t})=>({input:t,intermediateValue:{requiredUserInteraction:h.None},_internalState:D({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:s({intermediateValue:({event:t})=>({step:o.OpenApp,...t.snapshot.context.intermediateValue})})},input:{appName:E},onError:{actions:"assignErrorFromEvent"},onDone:{actions:a(({event:t})=>t.output.map(()=>({raise:"success"})))}}},DeviceAuth:{entry:s({intermediateValue:{step:o.Authenticate,requiredUserInteraction:v.Authenticate}}),on:{success:"GetTrustchain",error:"Error"},invoke:{id:"deviceAuth",src:"deviceAuth",input:({context:t})=>t.input,onError:{actions:"assignErrorFromEvent"},onDone:{actions:a(({event:t})=>t.output.chain(e=>e.trustchainId.caseOf({Nothing:()=>A(new I),Just:n=>D({raise:"success",assign:{jwt:e.jwt,trustchainId:n}})})))}}},GetTrustchain:{entry:s({intermediateValue:{step:o.GetTrustchain,requiredUserInteraction:h.None}}),on:{success:"CheckIsMembers",error:"Error"},invoke:{id:"getTrustchain",src:"getTrustchain",input:({context:t})=>t._internalState.chain(e=>y({lkrpDataSource:t.input.lkrpDataSource,trustchainId:()=>r(e.trustchainId,"Missing Trustchain ID for GetTrustchain"),jwt:()=>r(e.jwt,"Missing JWT for GetTrustchain")})),onError:{actions:"assignErrorFromEvent"},onDone:{actions:a(({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:s({intermediateValue:({event:t})=>t.snapshot.context.intermediateValue})},input:({context:t})=>t._internalState.mapLeft(()=>new l("Missing data in the input for AddToTrustchain")).chain(e=>y({lkrpDataSource:t.input.lkrpDataSource,cryptoService:t.input.cryptoService,keypair:t.input.keypair,clientName:t.input.clientName,permissions:t.input.permissions,jwt:()=>r(e.jwt,"Missing JWT for AddToTrustchain"),appId:t.input.appId,trustchain:()=>r(e.trustchain,"Missing Trustchain for AddToTrustchain")})),onError:{actions:"assignErrorFromEvent"},onDone:{actions:a(({event:t})=>t.output.map(()=>({raise:"success",assign:{wasAddedToTrustchain:!0}})))}}},ExtractEncryptionKey:{entry:s({intermediateValue:{step:o.ExtractEncryptionKey,requiredUserInteraction:h.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})=>r(e?.getAppStream(t.input.appId).extract(),"Missing application stream for ExtractEncryptionKey"))}),onError:{actions:"assignErrorFromEvent"},onDone:{actions:a(({event:t})=>t.output.map(e=>({raise:"success",assign:{encryptionKey:e}})))}}},Success:{type:"final"},Error:{type:"final"}},output:({context:t})=>t._internalState.chain(e=>y({trustchainId:()=>r(e.trustchainId,"Missing Trustchain ID in the output"),jwt:()=>r(e.jwt,"Missing JWT in the output"),applicationPath:()=>r(e.trustchain?.getAppStream(t.input.appId).chain(n=>n.getPath()).extract(),"Missing application path in the output"),encryptionKey:()=>r(e.encryptionKey,"Missing encryption key in the output")}))})}extractDependencies(c){const u=new k,p=new M;return{deviceAuth:({input:i})=>u.run(i.lkrpDataSource,new w(c)),getTrustchain:i=>d.liftEither(i.input).chain(({lkrpDataSource:t,trustchainId:e,jwt:n})=>t.getTrustchainById(e,n)).run(),extractEncryptionKey:async({input:i})=>d.liftEither(i.stream).chain(t=>p.run(i.cryptoService,i.keypair,t))}}}export{F as AuthenticateWithDeviceDeviceAction};
1
+ import{OpenAppDeviceAction as T,UserInteractionRequired as h,XStateDeviceAction as g}from"@ledgerhq/device-management-kit";import{EitherAsync as y,Left as A,Right as D}from"purify-ts";import{assign as s,fromPromise as m,setup as S}from"xstate";import{AuthenticateDAState as I,AuthenticateDAStep as o}from"../../../api/app-binder/AuthenticateDeviceActionTypes";import{LKRPMissingDataError as l,LKRPTrustchainNotReady as v,LKRPUnknownError as f}from"../../../api/app-binder/Errors";import{AuthenticateTask as k}from"../../app-binder/task/AuthenticateTask";import{ExtractEncryptionKeyTask as M}from"../../app-binder/task/ExtractEncryptionKeyTask";import{SignChallengeWithDeviceTask as w}from"../../app-binder/task/SignChallengeWithDeviceTask";import{eitherSeqRecord as d}from"../../utils/eitherSeqRecord";import{required as i}from"../../utils/required";import{raiseAndAssign as a}from"./utils/raiseAndAssign";import{AddToTrustchainDeviceAction as K}from"./AddToTrustchainDeviceAction";const E="Ledger Sync";class F extends g{makeStateMachine(c){const{deviceAuth:u,getTrustchain:p,extractEncryptionKey:n}=this.extractDependencies(c);return S({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new T({input:{appName:E}}).makeStateMachine(c),deviceAuth:m(u),getTrustchain:m(p),addToTrustchainStateMachine:new K({input:A(new l("Missing input for GetEncryptionKey"))}).makeStateMachine(c),extractEncryptionKey:m(n)},actions:{assignErrorFromEvent:a(({event:t})=>A(new f(String(t.error))))},guards:{isTrustchainMember:({context:t})=>t._internalState.toMaybe().map(e=>e.wasAddedToTrustchain||e.trustchain?.getAppStream(t.input.appId).mapOrDefault(r=>r.hasMember(t.input.keypair.pubKeyToHex()),!1)).extract()??!1}}).createMachine({id:"AuthenticateWithDeviceDeviceAction",context:({input:t})=>({input:t,intermediateValue:{requiredUserInteraction:h.None},_internalState:D({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:s({intermediateValue:({event:t})=>({step:o.OpenApp,...t.snapshot.context.intermediateValue})})},input:{appName:E},onError:{actions:"assignErrorFromEvent"},onDone:{actions:a(({event:t})=>t.output.map(()=>({raise:"success"})))}}},DeviceAuth:{entry:s({intermediateValue:{step:o.Authenticate,requiredUserInteraction:I.Authenticate}}),on:{success:"GetTrustchain",error:"Error"},invoke:{id:"deviceAuth",src:"deviceAuth",input:({context:t})=>t.input,onError:{actions:"assignErrorFromEvent"},onDone:{actions:a(({event:t})=>t.output.chain(e=>e.trustchainId.caseOf({Nothing:()=>A(new v),Just:r=>D({raise:"success",assign:{jwt:e.jwt,trustchainId:r}})})))}}},GetTrustchain:{entry:s({intermediateValue:{step:o.GetTrustchain,requiredUserInteraction:h.None}}),on:{success:"CheckIsMembers",error:"Error"},invoke:{id:"getTrustchain",src:"getTrustchain",input:({context:t})=>t._internalState.chain(e=>d({lkrpDataSource:t.input.lkrpDataSource,trustchainId:()=>i(e.trustchainId,"Missing Trustchain ID for GetTrustchain"),jwt:()=>i(e.jwt,"Missing JWT for GetTrustchain")})),onError:{actions:"assignErrorFromEvent"},onDone:{actions:a(({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:s({intermediateValue:({event:t})=>t.snapshot.context.intermediateValue})},input:({context:t})=>t._internalState.mapLeft(()=>new l("Missing data in the input for AddToTrustchain")).chain(e=>d({lkrpDataSource:t.input.lkrpDataSource,keypair:t.input.keypair,clientName:t.input.clientName,permissions:t.input.permissions,jwt:()=>i(e.jwt,"Missing JWT for AddToTrustchain"),appId:t.input.appId,trustchain:()=>i(e.trustchain,"Missing Trustchain for AddToTrustchain")})),onError:{actions:"assignErrorFromEvent"},onDone:{actions:a(({event:t})=>t.output.map(()=>({raise:"success",assign:{wasAddedToTrustchain:!0}})))}}},ExtractEncryptionKey:{entry:s({intermediateValue:{step:o.ExtractEncryptionKey,requiredUserInteraction:h.None}}),on:{success:"Success",error:"Error"},invoke:{id:"ExtractEncryptionKey",src:"extractEncryptionKey",input:({context:t})=>({keypair:t.input.keypair,stream:t._internalState.chain(({trustchain:e})=>i(e?.getAppStream(t.input.appId).extract(),"Missing application stream for ExtractEncryptionKey"))}),onError:{actions:"assignErrorFromEvent"},onDone:{actions:a(({event:t})=>t.output.map(e=>({raise:"success",assign:{encryptionKey:e}})))}}},Success:{type:"final"},Error:{type:"final"}},output:({context:t})=>t._internalState.chain(e=>d({trustchainId:()=>i(e.trustchainId,"Missing Trustchain ID in the output"),jwt:()=>i(e.jwt,"Missing JWT in the output"),applicationPath:()=>i(e.trustchain?.getAppStream(t.input.appId).chain(r=>r.getPath()).extract(),"Missing application path in the output"),encryptionKey:()=>i(e.encryptionKey,"Missing encryption key in the output")}))})}extractDependencies(c){const u=new k,p=new M;return{deviceAuth:({input:n})=>u.run(n.lkrpDataSource,new w(c)),getTrustchain:n=>y.liftEither(n.input).chain(({lkrpDataSource:t,trustchainId:e,jwt:r})=>t.getTrustchainById(e,r)).run(),extractEncryptionKey:async({input:n})=>y.liftEither(n.stream).chain(t=>p.run(n.keypair,t))}}}export{F as 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 { 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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",
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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",
6
6
  "names": ["OpenAppDeviceAction", "UserInteractionRequired", "XStateDeviceAction", "EitherAsync", "Left", "Right", "assign", "fromPromise", "setup", "AuthenticateDAState", "AuthenticateDAStep", "LKRPMissingDataError", "LKRPTrustchainNotReady", "LKRPUnknownError", "AuthenticateTask", "ExtractEncryptionKeyTask", "SignChallengeWithDeviceTask", "eitherSeqRecord", "required", "raiseAndAssign", "AddToTrustchainDeviceAction", "APP_NAME", "AuthenticateWithDeviceDeviceAction", "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
- import{UserInteractionRequired as c,XStateDeviceAction as A}from"@ledgerhq/device-management-kit";import{EitherAsync as y,Left as m,Right as E}from"purify-ts";import{assign as p,fromPromise as s,setup as D}from"xstate";import{AuthenticateDAStep as h}from"../../../api/app-binder/AuthenticateDeviceActionTypes";import{LKRPDataSourceError as l,LKRPUnauthorizedError as S,LKRPUnknownError as K}from"../../../api/model/Errors";import{AuthenticateTask as d}from"../../app-binder/task/AuthenticateTask";import{ExtractEncryptionKeyTask as I}from"../../app-binder/task/ExtractEncryptionKeyTask";import{SignChallengeWithKeypairTask as g}from"../../app-binder/task/SignChallengeWithKeypairTask";import{eitherSeqRecord as k}from"../../utils/eitherSeqRecord";import{required as a}from"../../utils/required";import{raiseAndAssign as o}from"./utils/raiseAndAssign";class q extends A{execute(){const n=this.makeStateMachine();return this._subscribeToStateMachine(n)}makeStateMachine(){const{keypairAuth:n,getTrustchain:u,extractEncryptionKey:e}=this.extractDependencies();return D({types:{input:{},context:{},output:{}},actors:{keypairAuth:s(n),getTrustchain:s(u),extractEncryptionKey:s(e)},actions:{assignErrorFromEvent:o(({event:t})=>m(new K(String(t.error))))}}).createMachine({id:"AuthenticateWithKeypairDeviceAction",context:({input:t})=>({input:t,intermediateValue:{requiredUserInteraction:c.None},_internalState:E({jwt:null,trustchain:null,encryptionKey:null})}),initial:"KeypairAuth",states:{KeypairAuth:{entry:p({intermediateValue:{requiredUserInteraction:c.None,step:h.Authenticate}}),on:{success:"GetTrustchain",error:"Error"},invoke:{id:"keypairAuth",src:"keypairAuth",input:({context:t})=>t.input,onError:{actions:"assignErrorFromEvent"},onDone:{actions:o(({context:t,event:r})=>r.output.map(({jwt:i})=>({raise:"success",assign:{jwt:i}})).mapLeft(i=>i instanceof l&&i.status==="UNAUTHORIZED"?new S(t.input.trustchainId):i))}}},GetTrustchain:{entry:p({intermediateValue:{requiredUserInteraction:c.None,step:h.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:r})=>a(r,"Missing JWT for GetTrustchain"))}),onError:{actions:"assignErrorFromEvent"},onDone:{actions:o(({event:t})=>t.output.map(r=>({raise:"success",assign:{trustchain:r}})))}}},ExtractEncryptionKey:{entry:p({intermediateValue:{requiredUserInteraction:c.None,step:h.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:r})=>a(r?.getAppStream(t.input.appId).extract(),"Missing application stream for ExtractEncryptionKey"))}),onError:{actions:"assignErrorFromEvent"},onDone:{actions:o(({event:t})=>t.output.map(r=>({raise:"success",assign:{encryptionKey:r}})))}}},Success:{type:"final"},Error:{type:"final"}},output:({context:t})=>t._internalState.chain(r=>k({trustchainId:t.input.trustchainId,jwt:()=>a(r.jwt,"Missing JWT in the output"),applicationPath:()=>a(r.trustchain?.getAppStream(t.input.appId).chain(i=>i.getPath()).extract(),"Missing application path in the output"),encryptionKey:()=>a(r.encryptionKey,"Missing encryption key in the output")}))})}extractDependencies(){const n=new d,u=new I;return{keypairAuth:({input:e})=>n.run(e.lkrpDataSource,new g(e.cryptoService,e.keypair,e.trustchainId)),getTrustchain:({input:e})=>y.liftEither(e.jwt).chain(t=>e.lkrpDataSource.getTrustchainById(e.trustchainId,t)).run(),extractEncryptionKey:async({input:e})=>y.liftEither(e.stream).chain(t=>u.run(e.cryptoService,e.keypair,t))}}}export{q as AuthenticateWithKeypairDeviceAction};
1
+ import{UserInteractionRequired as c,XStateDeviceAction as A}from"@ledgerhq/device-management-kit";import{EitherAsync as y,Left as m,Right as E}from"purify-ts";import{assign as p,fromPromise as s,setup as D}from"xstate";import{AuthenticateDAStep as h}from"../../../api/app-binder/AuthenticateDeviceActionTypes";import{LKRPDataSourceError as l,LKRPUnauthorizedError as K,LKRPUnknownError as d}from"../../../api/app-binder/Errors";import{AuthenticateTask as S}from"../../app-binder/task/AuthenticateTask";import{ExtractEncryptionKeyTask as I}from"../../app-binder/task/ExtractEncryptionKeyTask";import{SignChallengeWithKeypairTask as g}from"../../app-binder/task/SignChallengeWithKeypairTask";import{eitherSeqRecord as k}from"../../utils/eitherSeqRecord";import{required as a}from"../../utils/required";import{raiseAndAssign as u}from"./utils/raiseAndAssign";class q extends A{execute(){const n=this.makeStateMachine();return this._subscribeToStateMachine(n)}makeStateMachine(){const{keypairAuth:n,getTrustchain:o,extractEncryptionKey:r}=this.extractDependencies();return D({types:{input:{},context:{},output:{}},actors:{keypairAuth:s(n),getTrustchain:s(o),extractEncryptionKey:s(r)},actions:{assignErrorFromEvent:u(({event:t})=>m(new d(String(t.error))))}}).createMachine({id:"AuthenticateWithKeypairDeviceAction",context:({input:t})=>({input:t,intermediateValue:{requiredUserInteraction:c.None},_internalState:E({jwt:null,trustchain:null,encryptionKey:null})}),initial:"KeypairAuth",states:{KeypairAuth:{entry:p({intermediateValue:{requiredUserInteraction:c.None,step:h.Authenticate}}),on:{success:"GetTrustchain",error:"Error"},invoke:{id:"keypairAuth",src:"keypairAuth",input:({context:t})=>t.input,onError:{actions:"assignErrorFromEvent"},onDone:{actions:u(({context:t,event:e})=>e.output.map(({jwt:i})=>({raise:"success",assign:{jwt:i}})).mapLeft(i=>i instanceof l&&i.status==="UNAUTHORIZED"?new K(t.input.trustchainId):i))}}},GetTrustchain:{entry:p({intermediateValue:{requiredUserInteraction:c.None,step:h.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:e})=>a(e,"Missing JWT for GetTrustchain"))}),onError:{actions:"assignErrorFromEvent"},onDone:{actions:u(({event:t})=>t.output.map(e=>({raise:"success",assign:{trustchain:e}})))}}},ExtractEncryptionKey:{entry:p({intermediateValue:{requiredUserInteraction:c.None,step:h.ExtractEncryptionKey}}),on:{success:"Success",error:"Error"},invoke:{id:"ExtractEncryptionKey",src:"extractEncryptionKey",input:({context:t})=>({keypair:t.input.keypair,stream:t._internalState.chain(({trustchain:e})=>a(e?.getAppStream(t.input.appId).extract(),"Missing application stream for ExtractEncryptionKey"))}),onError:{actions:"assignErrorFromEvent"},onDone:{actions:u(({event:t})=>t.output.map(e=>({raise:"success",assign:{encryptionKey:e}})))}}},Success:{type:"final"},Error:{type:"final"}},output:({context:t})=>t._internalState.chain(e=>k({trustchainId:t.input.trustchainId,jwt:()=>a(e.jwt,"Missing JWT in the output"),applicationPath:()=>a(e.trustchain?.getAppStream(t.input.appId).chain(i=>i.getPath()).extract(),"Missing application path in the output"),encryptionKey:()=>a(e.encryptionKey,"Missing encryption key in the output")}))})}extractDependencies(){const n=new S,o=new I;return{keypairAuth:({input:r})=>n.run(r.lkrpDataSource,new g(r.keypair,r.trustchainId)),getTrustchain:({input:r})=>y.liftEither(r.jwt).chain(t=>r.lkrpDataSource.getTrustchainById(r.trustchainId,t)).run(),extractEncryptionKey:async({input:r})=>y.liftEither(r.stream).chain(t=>o.run(r.keypair,t))}}}export{q as AuthenticateWithKeypairDeviceAction};
2
2
  //# sourceMappingURL=AuthenticateWithKeypairDeviceAction.js.map