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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (467) hide show
  1. package/lib/cjs/api/LedgerKeyringProtocol.js +1 -1
  2. package/lib/cjs/api/LedgerKeyringProtocol.js.map +1 -1
  3. package/lib/cjs/api/LedgerKeyringProtocolBuilder.js +1 -1
  4. package/lib/cjs/api/LedgerKeyringProtocolBuilder.js.map +3 -3
  5. package/lib/cjs/api/app-binder/AddToTrustchainDeviceActionTypes.js.map +2 -2
  6. package/lib/cjs/api/app-binder/AuthenticateDeviceActionTypes.js.map +1 -1
  7. package/lib/cjs/api/app-binder/GetVersionCommandTypes.js +1 -1
  8. package/lib/cjs/api/app-binder/GetVersionCommandTypes.js.map +1 -1
  9. package/lib/cjs/api/crypto/CryptoService.js +2 -0
  10. package/lib/cjs/api/crypto/CryptoService.js.map +7 -0
  11. package/lib/cjs/api/crypto/Key.js +2 -0
  12. package/lib/cjs/api/crypto/Key.js.map +7 -0
  13. package/lib/cjs/api/crypto/KeyPair.js +2 -0
  14. package/lib/cjs/api/crypto/KeyPair.js.map +7 -0
  15. package/lib/cjs/api/crypto/noble/NobleCryptoService.js +2 -0
  16. package/lib/cjs/api/crypto/noble/NobleCryptoService.js.map +7 -0
  17. package/lib/cjs/api/crypto/noble/NobleCryptoService.test.js +2 -0
  18. package/lib/cjs/api/crypto/noble/NobleCryptoService.test.js.map +7 -0
  19. package/lib/cjs/api/crypto/noble/NobleKey.js +2 -0
  20. package/lib/cjs/api/crypto/noble/NobleKey.js.map +7 -0
  21. package/lib/cjs/api/crypto/noble/NobleKey.test.js +2 -0
  22. package/lib/cjs/api/crypto/noble/NobleKey.test.js.map +7 -0
  23. package/lib/cjs/api/crypto/noble/NobleKeyPair.js +2 -0
  24. package/lib/cjs/api/crypto/noble/NobleKeyPair.js.map +7 -0
  25. package/lib/cjs/api/crypto/noble/NobleKeyPair.test.js +2 -0
  26. package/lib/cjs/api/crypto/noble/NobleKeyPair.test.js.map +7 -0
  27. package/lib/cjs/api/index.js +1 -1
  28. package/lib/cjs/api/index.js.map +2 -2
  29. package/lib/cjs/api/model/Env.js +2 -0
  30. package/lib/cjs/api/model/Env.js.map +7 -0
  31. package/lib/cjs/api/{app-binder → model}/Errors.js.map +1 -1
  32. package/lib/cjs/api/model/JWT.js +2 -0
  33. package/lib/cjs/api/model/JWT.js.map +7 -0
  34. package/lib/cjs/api/model/Permissions.js +2 -0
  35. package/lib/cjs/api/model/Permissions.js.map +7 -0
  36. package/lib/cjs/internal/DefaultLedgerKeyringProtocol.js +1 -1
  37. package/lib/cjs/internal/DefaultLedgerKeyringProtocol.js.map +3 -3
  38. package/lib/cjs/internal/app-binder/LedgerKeyringProtocolBinder.js +1 -1
  39. package/lib/cjs/internal/app-binder/LedgerKeyringProtocolBinder.js.map +3 -3
  40. package/lib/cjs/internal/app-binder/command/GetAppNameCommand.js +1 -1
  41. package/lib/cjs/internal/app-binder/command/GetAppNameCommand.js.map +2 -2
  42. package/lib/cjs/internal/app-binder/command/GetSeedIdCommand.js +1 -1
  43. package/lib/cjs/internal/app-binder/command/GetSeedIdCommand.js.map +3 -3
  44. package/lib/cjs/internal/app-binder/command/GetSeedIdCommand.test.js +2 -2
  45. package/lib/cjs/internal/app-binder/command/GetSeedIdCommand.test.js.map +3 -3
  46. package/lib/cjs/internal/app-binder/command/GetVersionCommand.js.map +2 -2
  47. package/lib/cjs/internal/app-binder/command/InitCommand.js +1 -1
  48. package/lib/cjs/internal/app-binder/command/InitCommand.js.map +2 -2
  49. package/lib/cjs/internal/app-binder/command/InitCommand.test.js +1 -1
  50. package/lib/cjs/internal/app-binder/command/InitCommand.test.js.map +2 -2
  51. package/lib/cjs/internal/app-binder/command/ParseBlockSignatureCommand.js +1 -1
  52. package/lib/cjs/internal/app-binder/command/ParseBlockSignatureCommand.js.map +2 -2
  53. package/lib/cjs/internal/app-binder/command/ParseBlockSignatureCommand.test.js +1 -1
  54. package/lib/cjs/internal/app-binder/command/ParseBlockSignatureCommand.test.js.map +2 -2
  55. package/lib/cjs/internal/app-binder/command/ParseStreamBlockCommand.js.map +2 -2
  56. package/lib/cjs/internal/app-binder/command/ParseStreamBlockCommand.test.js +1 -1
  57. package/lib/cjs/internal/app-binder/command/ParseStreamBlockCommand.test.js.map +2 -2
  58. package/lib/cjs/internal/app-binder/command/ParseStreamBlockHeader.js +1 -1
  59. package/lib/cjs/internal/app-binder/command/ParseStreamBlockHeader.js.map +2 -2
  60. package/lib/cjs/internal/app-binder/command/ParseStreamBlockHeader.test.js.map +2 -2
  61. package/lib/cjs/internal/app-binder/command/SetTrustedMemberCommand.js +1 -1
  62. package/lib/cjs/internal/app-binder/command/SetTrustedMemberCommand.js.map +2 -2
  63. package/lib/cjs/internal/app-binder/command/SetTrustedMemberCommand.test.js.map +2 -2
  64. package/lib/cjs/internal/app-binder/command/SignBlockHeader.js +1 -1
  65. package/lib/cjs/internal/app-binder/command/SignBlockHeader.js.map +2 -2
  66. package/lib/cjs/internal/app-binder/command/SignBlockHeader.test.js +1 -1
  67. package/lib/cjs/internal/app-binder/command/SignBlockHeader.test.js.map +2 -2
  68. package/lib/cjs/internal/app-binder/command/SignBlockSignatureCommand.js +1 -1
  69. package/lib/cjs/internal/app-binder/command/SignBlockSignatureCommand.js.map +2 -2
  70. package/lib/cjs/internal/app-binder/command/SignBlockSignatureCommand.test.js +1 -1
  71. package/lib/cjs/internal/app-binder/command/SignBlockSignatureCommand.test.js.map +2 -2
  72. package/lib/cjs/internal/app-binder/command/SignBlockSingleCommand.js +1 -1
  73. package/lib/cjs/internal/app-binder/command/SignBlockSingleCommand.js.map +2 -2
  74. package/lib/cjs/internal/app-binder/command/SignBlockSingleCommand.test.js +1 -1
  75. package/lib/cjs/internal/app-binder/command/SignBlockSingleCommand.test.js.map +2 -2
  76. package/lib/cjs/internal/app-binder/device-action/AddToTrustchainDeviceAction.js +1 -1
  77. package/lib/cjs/internal/app-binder/device-action/AddToTrustchainDeviceAction.js.map +3 -3
  78. package/lib/cjs/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.js +1 -1
  79. package/lib/cjs/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.js.map +2 -2
  80. package/lib/cjs/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.js +1 -1
  81. package/lib/cjs/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.js.map +2 -2
  82. package/lib/cjs/internal/app-binder/device-action/models/AuthenticateWithDeviceDeviceActionTypes.js +1 -1
  83. package/lib/cjs/internal/app-binder/device-action/models/AuthenticateWithDeviceDeviceActionTypes.js.map +1 -1
  84. package/lib/cjs/internal/app-binder/device-action/models/AuthenticateWithKeypairDeviceActionTypes.js +1 -1
  85. package/lib/cjs/internal/app-binder/device-action/models/AuthenticateWithKeypairDeviceActionTypes.js.map +1 -1
  86. package/lib/cjs/internal/app-binder/task/ExtractEncryptionKeyTask.js +1 -1
  87. package/lib/cjs/internal/app-binder/task/ExtractEncryptionKeyTask.js.map +3 -3
  88. package/lib/cjs/internal/app-binder/task/InitTask.js +1 -1
  89. package/lib/cjs/internal/app-binder/task/InitTask.js.map +3 -3
  90. package/lib/cjs/internal/app-binder/task/ParseStreamToDeviceTask.js +1 -1
  91. package/lib/cjs/internal/app-binder/task/ParseStreamToDeviceTask.js.map +3 -3
  92. package/lib/cjs/internal/app-binder/task/SignBlockTask.js +1 -1
  93. package/lib/cjs/internal/app-binder/task/SignBlockTask.js.map +3 -3
  94. package/lib/cjs/internal/app-binder/task/SignChallengeWithKeypairTask.js +1 -1
  95. package/lib/cjs/internal/app-binder/task/SignChallengeWithKeypairTask.js.map +3 -3
  96. package/lib/cjs/internal/app-binder/task/SignChallengeWithKeypairTask.test.js +1 -1
  97. package/lib/cjs/internal/app-binder/task/SignChallengeWithKeypairTask.test.js.map +3 -3
  98. package/lib/cjs/internal/app-binder/task/utils/TrustedProperties.js +1 -1
  99. package/lib/cjs/internal/app-binder/task/utils/TrustedProperties.js.map +2 -2
  100. package/lib/cjs/internal/di.js +1 -1
  101. package/lib/cjs/internal/di.js.map +3 -3
  102. package/lib/cjs/internal/externalTypes.js +1 -1
  103. package/lib/cjs/internal/externalTypes.js.map +2 -2
  104. package/lib/cjs/internal/lkrp-datasource/data/HttpLKRPDataSource.js +1 -1
  105. package/lib/cjs/internal/lkrp-datasource/data/HttpLKRPDataSource.js.map +2 -2
  106. package/lib/cjs/internal/lkrp-datasource/data/HttpLKRPDataSource.test.js +1 -1
  107. package/lib/cjs/internal/lkrp-datasource/data/HttpLKRPDataSource.test.js.map +2 -2
  108. package/lib/cjs/internal/lkrp-datasource/data/LKRPDataSource.js.map +1 -1
  109. package/lib/cjs/internal/use-cases/authentication/AuthenticateUseCase.js +1 -1
  110. package/lib/cjs/internal/use-cases/authentication/AuthenticateUseCase.js.map +2 -2
  111. package/lib/cjs/internal/use-cases/authentication/DecryptDataUseCase.js +1 -1
  112. package/lib/cjs/internal/use-cases/authentication/DecryptDataUseCase.js.map +3 -3
  113. package/lib/cjs/internal/use-cases/authentication/EncryptDataUseCase.js +1 -1
  114. package/lib/cjs/internal/use-cases/authentication/EncryptDataUseCase.js.map +3 -3
  115. package/lib/cjs/internal/utils/LKRPBlock.js +4 -4
  116. package/lib/cjs/internal/utils/LKRPBlock.js.map +3 -3
  117. package/lib/cjs/internal/utils/LKRPBlock.test.js +3 -3
  118. package/lib/cjs/internal/utils/LKRPBlock.test.js.map +3 -3
  119. package/lib/cjs/internal/utils/LKRPBlockStream.js +2 -2
  120. package/lib/cjs/internal/utils/LKRPBlockStream.js.map +3 -3
  121. package/lib/cjs/internal/utils/LKRPBlockStream.test.js +2 -2
  122. package/lib/cjs/internal/utils/LKRPBlockStream.test.js.map +3 -3
  123. package/lib/cjs/internal/utils/LKRPCommand.js +2 -2
  124. package/lib/cjs/internal/utils/LKRPCommand.js.map +3 -3
  125. package/lib/cjs/internal/utils/LKRPCommand.test.js +2 -2
  126. package/lib/cjs/internal/utils/LKRPCommand.test.js.map +3 -3
  127. package/lib/cjs/internal/utils/TLVParser.js +1 -1
  128. package/lib/cjs/internal/utils/TLVParser.js.map +3 -3
  129. package/lib/cjs/internal/utils/TLVParser.test.js +1 -1
  130. package/lib/cjs/internal/utils/TLVParser.test.js.map +2 -2
  131. package/lib/cjs/internal/utils/required.js +1 -1
  132. package/lib/cjs/internal/utils/required.js.map +2 -2
  133. package/lib/cjs/package.json +2 -2
  134. package/lib/esm/api/LedgerKeyringProtocolBuilder.js +1 -1
  135. package/lib/esm/api/LedgerKeyringProtocolBuilder.js.map +3 -3
  136. package/lib/esm/api/app-binder/AddToTrustchainDeviceActionTypes.js.map +2 -2
  137. package/lib/esm/api/app-binder/AuthenticateDeviceActionTypes.js.map +1 -1
  138. package/lib/esm/api/crypto/CryptoService.js +2 -0
  139. package/lib/esm/api/crypto/CryptoService.js.map +7 -0
  140. package/lib/esm/api/crypto/Key.js +2 -0
  141. package/lib/esm/api/crypto/Key.js.map +7 -0
  142. package/lib/esm/api/crypto/KeyPair.js +2 -0
  143. package/lib/esm/api/crypto/KeyPair.js.map +7 -0
  144. package/lib/esm/api/crypto/noble/NobleCryptoService.js +2 -0
  145. package/lib/esm/api/crypto/noble/NobleCryptoService.js.map +7 -0
  146. package/lib/esm/api/crypto/noble/NobleCryptoService.test.js +2 -0
  147. package/lib/esm/api/crypto/noble/NobleCryptoService.test.js.map +7 -0
  148. package/lib/esm/api/crypto/noble/NobleKey.js +2 -0
  149. package/lib/esm/api/crypto/noble/NobleKey.js.map +7 -0
  150. package/lib/esm/api/crypto/noble/NobleKey.test.js +2 -0
  151. package/lib/esm/api/crypto/noble/NobleKey.test.js.map +7 -0
  152. package/lib/esm/api/crypto/noble/NobleKeyPair.js +2 -0
  153. package/lib/esm/api/crypto/noble/NobleKeyPair.js.map +7 -0
  154. package/lib/esm/api/crypto/noble/NobleKeyPair.test.js +2 -0
  155. package/lib/esm/api/crypto/noble/NobleKeyPair.test.js.map +7 -0
  156. package/lib/esm/api/index.js +1 -1
  157. package/lib/esm/api/index.js.map +2 -2
  158. package/lib/esm/api/model/Env.js +2 -0
  159. package/lib/esm/api/model/Env.js.map +7 -0
  160. package/lib/esm/api/{app-binder → model}/Errors.js.map +1 -1
  161. package/lib/esm/api/model/JWT.js +1 -0
  162. package/lib/esm/api/model/Permissions.js +2 -0
  163. package/lib/esm/api/model/Permissions.js.map +7 -0
  164. package/lib/esm/internal/DefaultLedgerKeyringProtocol.js +1 -1
  165. package/lib/esm/internal/DefaultLedgerKeyringProtocol.js.map +3 -3
  166. package/lib/esm/internal/app-binder/LedgerKeyringProtocolBinder.js +1 -1
  167. package/lib/esm/internal/app-binder/LedgerKeyringProtocolBinder.js.map +3 -3
  168. package/lib/esm/internal/app-binder/command/GetAppNameCommand.js +1 -1
  169. package/lib/esm/internal/app-binder/command/GetAppNameCommand.js.map +2 -2
  170. package/lib/esm/internal/app-binder/command/GetSeedIdCommand.js +1 -1
  171. package/lib/esm/internal/app-binder/command/GetSeedIdCommand.js.map +3 -3
  172. package/lib/esm/internal/app-binder/command/GetSeedIdCommand.test.js +1 -1
  173. package/lib/esm/internal/app-binder/command/GetSeedIdCommand.test.js.map +3 -3
  174. package/lib/esm/internal/app-binder/command/GetVersionCommand.js.map +2 -2
  175. package/lib/esm/internal/app-binder/command/InitCommand.js +1 -1
  176. package/lib/esm/internal/app-binder/command/InitCommand.js.map +2 -2
  177. package/lib/esm/internal/app-binder/command/InitCommand.test.js +1 -1
  178. package/lib/esm/internal/app-binder/command/InitCommand.test.js.map +2 -2
  179. package/lib/esm/internal/app-binder/command/ParseBlockSignatureCommand.js +1 -1
  180. package/lib/esm/internal/app-binder/command/ParseBlockSignatureCommand.js.map +2 -2
  181. package/lib/esm/internal/app-binder/command/ParseBlockSignatureCommand.test.js +1 -1
  182. package/lib/esm/internal/app-binder/command/ParseBlockSignatureCommand.test.js.map +2 -2
  183. package/lib/esm/internal/app-binder/command/ParseStreamBlockCommand.js.map +2 -2
  184. package/lib/esm/internal/app-binder/command/ParseStreamBlockCommand.test.js +1 -1
  185. package/lib/esm/internal/app-binder/command/ParseStreamBlockCommand.test.js.map +2 -2
  186. package/lib/esm/internal/app-binder/command/ParseStreamBlockHeader.js +1 -1
  187. package/lib/esm/internal/app-binder/command/ParseStreamBlockHeader.js.map +2 -2
  188. package/lib/esm/internal/app-binder/command/ParseStreamBlockHeader.test.js.map +2 -2
  189. package/lib/esm/internal/app-binder/command/SetTrustedMemberCommand.js +1 -1
  190. package/lib/esm/internal/app-binder/command/SetTrustedMemberCommand.js.map +2 -2
  191. package/lib/esm/internal/app-binder/command/SetTrustedMemberCommand.test.js +1 -1
  192. package/lib/esm/internal/app-binder/command/SetTrustedMemberCommand.test.js.map +2 -2
  193. package/lib/esm/internal/app-binder/command/SignBlockHeader.js +1 -1
  194. package/lib/esm/internal/app-binder/command/SignBlockHeader.js.map +2 -2
  195. package/lib/esm/internal/app-binder/command/SignBlockHeader.test.js +1 -1
  196. package/lib/esm/internal/app-binder/command/SignBlockHeader.test.js.map +2 -2
  197. package/lib/esm/internal/app-binder/command/SignBlockSignatureCommand.js +1 -1
  198. package/lib/esm/internal/app-binder/command/SignBlockSignatureCommand.js.map +2 -2
  199. package/lib/esm/internal/app-binder/command/SignBlockSignatureCommand.test.js +1 -1
  200. package/lib/esm/internal/app-binder/command/SignBlockSignatureCommand.test.js.map +2 -2
  201. package/lib/esm/internal/app-binder/command/SignBlockSingleCommand.js +1 -1
  202. package/lib/esm/internal/app-binder/command/SignBlockSingleCommand.js.map +2 -2
  203. package/lib/esm/internal/app-binder/command/SignBlockSingleCommand.test.js +1 -1
  204. package/lib/esm/internal/app-binder/command/SignBlockSingleCommand.test.js.map +2 -2
  205. package/lib/esm/internal/app-binder/device-action/AddToTrustchainDeviceAction.js +1 -1
  206. package/lib/esm/internal/app-binder/device-action/AddToTrustchainDeviceAction.js.map +3 -3
  207. package/lib/esm/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.js +1 -1
  208. package/lib/esm/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.js.map +2 -2
  209. package/lib/esm/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.js +1 -1
  210. package/lib/esm/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.js.map +2 -2
  211. package/lib/esm/internal/app-binder/task/ExtractEncryptionKeyTask.js +1 -1
  212. package/lib/esm/internal/app-binder/task/ExtractEncryptionKeyTask.js.map +3 -3
  213. package/lib/esm/internal/app-binder/task/InitTask.js +1 -1
  214. package/lib/esm/internal/app-binder/task/InitTask.js.map +3 -3
  215. package/lib/esm/internal/app-binder/task/ParseStreamToDeviceTask.js +1 -1
  216. package/lib/esm/internal/app-binder/task/ParseStreamToDeviceTask.js.map +3 -3
  217. package/lib/esm/internal/app-binder/task/SignBlockTask.js +1 -1
  218. package/lib/esm/internal/app-binder/task/SignBlockTask.js.map +3 -3
  219. package/lib/esm/internal/app-binder/task/SignChallengeWithKeypairTask.js +1 -1
  220. package/lib/esm/internal/app-binder/task/SignChallengeWithKeypairTask.js.map +3 -3
  221. package/lib/esm/internal/app-binder/task/SignChallengeWithKeypairTask.test.js +1 -1
  222. package/lib/esm/internal/app-binder/task/SignChallengeWithKeypairTask.test.js.map +3 -3
  223. package/lib/esm/internal/app-binder/task/utils/TrustedProperties.js +1 -1
  224. package/lib/esm/internal/app-binder/task/utils/TrustedProperties.js.map +2 -2
  225. package/lib/esm/internal/di.js +1 -1
  226. package/lib/esm/internal/di.js.map +3 -3
  227. package/lib/esm/internal/externalTypes.js +1 -1
  228. package/lib/esm/internal/externalTypes.js.map +2 -2
  229. package/lib/esm/internal/lkrp-datasource/data/HttpLKRPDataSource.js +1 -1
  230. package/lib/esm/internal/lkrp-datasource/data/HttpLKRPDataSource.js.map +2 -2
  231. package/lib/esm/internal/lkrp-datasource/data/HttpLKRPDataSource.test.js +1 -1
  232. package/lib/esm/internal/lkrp-datasource/data/HttpLKRPDataSource.test.js.map +2 -2
  233. package/lib/esm/internal/use-cases/authentication/AuthenticateUseCase.js +1 -1
  234. package/lib/esm/internal/use-cases/authentication/AuthenticateUseCase.js.map +2 -2
  235. package/lib/esm/internal/use-cases/authentication/DecryptDataUseCase.js +1 -1
  236. package/lib/esm/internal/use-cases/authentication/DecryptDataUseCase.js.map +3 -3
  237. package/lib/esm/internal/use-cases/authentication/EncryptDataUseCase.js +1 -1
  238. package/lib/esm/internal/use-cases/authentication/EncryptDataUseCase.js.map +3 -3
  239. package/lib/esm/internal/utils/LKRPBlock.js +3 -3
  240. package/lib/esm/internal/utils/LKRPBlock.js.map +3 -3
  241. package/lib/esm/internal/utils/LKRPBlock.test.js +2 -2
  242. package/lib/esm/internal/utils/LKRPBlock.test.js.map +3 -3
  243. package/lib/esm/internal/utils/LKRPBlockStream.js +2 -2
  244. package/lib/esm/internal/utils/LKRPBlockStream.js.map +3 -3
  245. package/lib/esm/internal/utils/LKRPBlockStream.test.js +1 -1
  246. package/lib/esm/internal/utils/LKRPBlockStream.test.js.map +3 -3
  247. package/lib/esm/internal/utils/LKRPCommand.js +2 -2
  248. package/lib/esm/internal/utils/LKRPCommand.js.map +3 -3
  249. package/lib/esm/internal/utils/LKRPCommand.test.js +2 -2
  250. package/lib/esm/internal/utils/LKRPCommand.test.js.map +3 -3
  251. package/lib/esm/internal/utils/TLVParser.js +1 -1
  252. package/lib/esm/internal/utils/TLVParser.js.map +3 -3
  253. package/lib/esm/internal/utils/TLVParser.test.js +1 -1
  254. package/lib/esm/internal/utils/TLVParser.test.js.map +2 -2
  255. package/lib/esm/internal/utils/required.js +1 -1
  256. package/lib/esm/internal/utils/required.js.map +2 -2
  257. package/lib/esm/package.json +2 -2
  258. package/lib/types/api/LedgerKeyringProtocol.d.ts +2 -2
  259. package/lib/types/api/LedgerKeyringProtocol.d.ts.map +1 -1
  260. package/lib/types/api/LedgerKeyringProtocolBuilder.d.ts +4 -1
  261. package/lib/types/api/LedgerKeyringProtocolBuilder.d.ts.map +1 -1
  262. package/lib/types/api/app-binder/AddToTrustchainDeviceActionTypes.d.ts +8 -4
  263. package/lib/types/api/app-binder/AddToTrustchainDeviceActionTypes.d.ts.map +1 -1
  264. package/lib/types/api/app-binder/AuthenticateDeviceActionTypes.d.ts +2 -2
  265. package/lib/types/api/app-binder/AuthenticateDeviceActionTypes.d.ts.map +1 -1
  266. package/lib/types/api/app-binder/GetVersionCommandTypes.d.ts +0 -1
  267. package/lib/types/api/app-binder/GetVersionCommandTypes.d.ts.map +1 -1
  268. package/lib/types/api/crypto/CryptoService.d.ts +22 -0
  269. package/lib/types/api/crypto/CryptoService.d.ts.map +1 -0
  270. package/lib/types/api/crypto/Key.d.ts +7 -0
  271. package/lib/types/api/crypto/Key.d.ts.map +1 -0
  272. package/lib/types/api/crypto/KeyPair.d.ts +13 -0
  273. package/lib/types/api/crypto/KeyPair.d.ts.map +1 -0
  274. package/lib/types/api/crypto/noble/NobleCryptoService.d.ts +13 -0
  275. package/lib/types/api/crypto/noble/NobleCryptoService.d.ts.map +1 -0
  276. package/lib/types/api/crypto/noble/NobleCryptoService.test.d.ts +2 -0
  277. package/lib/types/api/crypto/noble/NobleCryptoService.test.d.ts.map +1 -0
  278. package/lib/types/api/crypto/noble/NobleKey.d.ts +11 -0
  279. package/lib/types/api/crypto/noble/NobleKey.d.ts.map +1 -0
  280. package/lib/types/api/crypto/noble/NobleKey.test.d.ts +2 -0
  281. package/lib/types/api/crypto/noble/NobleKey.test.d.ts.map +1 -0
  282. package/lib/types/api/crypto/noble/NobleKeyPair.d.ts +18 -0
  283. package/lib/types/api/crypto/noble/NobleKeyPair.d.ts.map +1 -0
  284. package/lib/types/api/crypto/noble/NobleKeyPair.test.d.ts +2 -0
  285. package/lib/types/api/crypto/noble/NobleKeyPair.test.d.ts.map +1 -0
  286. package/lib/types/api/index.d.ts +10 -2
  287. package/lib/types/api/index.d.ts.map +1 -1
  288. package/lib/types/api/model/Env.d.ts +5 -0
  289. package/lib/types/api/model/Env.d.ts.map +1 -0
  290. package/lib/types/api/model/Errors.d.ts.map +1 -0
  291. package/lib/types/api/model/JWT.d.ts +9 -0
  292. package/lib/types/api/model/JWT.d.ts.map +1 -0
  293. package/lib/types/api/{app-binder/LKRPTypes.d.ts → model/Permissions.d.ts} +1 -19
  294. package/lib/types/api/model/Permissions.d.ts.map +1 -0
  295. package/lib/types/internal/DefaultLedgerKeyringProtocol.d.ts +6 -4
  296. package/lib/types/internal/DefaultLedgerKeyringProtocol.d.ts.map +1 -1
  297. package/lib/types/internal/app-binder/LedgerKeyringProtocolBinder.d.ts +7 -4
  298. package/lib/types/internal/app-binder/LedgerKeyringProtocolBinder.d.ts.map +1 -1
  299. package/lib/types/internal/app-binder/command/GetAppNameCommand.d.ts +4 -1
  300. package/lib/types/internal/app-binder/command/GetAppNameCommand.d.ts.map +1 -1
  301. package/lib/types/internal/app-binder/command/GetSeedIdCommand.d.ts +13 -1
  302. package/lib/types/internal/app-binder/command/GetSeedIdCommand.d.ts.map +1 -1
  303. package/lib/types/internal/app-binder/command/GetVersionCommand.d.ts +2 -1
  304. package/lib/types/internal/app-binder/command/GetVersionCommand.d.ts.map +1 -1
  305. package/lib/types/internal/app-binder/command/InitCommand.d.ts +4 -1
  306. package/lib/types/internal/app-binder/command/InitCommand.d.ts.map +1 -1
  307. package/lib/types/internal/app-binder/command/ParseBlockSignatureCommand.d.ts +4 -1
  308. package/lib/types/internal/app-binder/command/ParseBlockSignatureCommand.d.ts.map +1 -1
  309. package/lib/types/internal/app-binder/command/ParseStreamBlockCommand.d.ts +5 -1
  310. package/lib/types/internal/app-binder/command/ParseStreamBlockCommand.d.ts.map +1 -1
  311. package/lib/types/internal/app-binder/command/ParseStreamBlockHeader.d.ts +4 -1
  312. package/lib/types/internal/app-binder/command/ParseStreamBlockHeader.d.ts.map +1 -1
  313. package/lib/types/internal/app-binder/command/SetTrustedMemberCommand.d.ts +5 -1
  314. package/lib/types/internal/app-binder/command/SetTrustedMemberCommand.d.ts.map +1 -1
  315. package/lib/types/internal/app-binder/command/SignBlockHeader.d.ts +5 -1
  316. package/lib/types/internal/app-binder/command/SignBlockHeader.d.ts.map +1 -1
  317. package/lib/types/internal/app-binder/command/SignBlockSignatureCommand.d.ts +5 -1
  318. package/lib/types/internal/app-binder/command/SignBlockSignatureCommand.d.ts.map +1 -1
  319. package/lib/types/internal/app-binder/command/SignBlockSingleCommand.d.ts +4 -1
  320. package/lib/types/internal/app-binder/command/SignBlockSingleCommand.d.ts.map +1 -1
  321. package/lib/types/internal/app-binder/device-action/AddToTrustchainDeviceAction.d.ts +8 -4
  322. package/lib/types/internal/app-binder/device-action/AddToTrustchainDeviceAction.d.ts.map +1 -1
  323. package/lib/types/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.d.ts +5 -2
  324. package/lib/types/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.d.ts.map +1 -1
  325. package/lib/types/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.d.ts +5 -2
  326. package/lib/types/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.d.ts.map +1 -1
  327. package/lib/types/internal/app-binder/device-action/models/AuthenticateWithDeviceDeviceActionTypes.d.ts +5 -2
  328. package/lib/types/internal/app-binder/device-action/models/AuthenticateWithDeviceDeviceActionTypes.d.ts.map +1 -1
  329. package/lib/types/internal/app-binder/device-action/models/AuthenticateWithKeypairDeviceActionTypes.d.ts +5 -2
  330. package/lib/types/internal/app-binder/device-action/models/AuthenticateWithKeypairDeviceActionTypes.d.ts.map +1 -1
  331. package/lib/types/internal/app-binder/task/ExtractEncryptionKeyTask.d.ts +4 -7
  332. package/lib/types/internal/app-binder/task/ExtractEncryptionKeyTask.d.ts.map +1 -1
  333. package/lib/types/internal/app-binder/task/InitTask.d.ts +5 -3
  334. package/lib/types/internal/app-binder/task/InitTask.d.ts.map +1 -1
  335. package/lib/types/internal/app-binder/task/ParseStreamToDeviceTask.d.ts +1 -1
  336. package/lib/types/internal/app-binder/task/ParseStreamToDeviceTask.d.ts.map +1 -1
  337. package/lib/types/internal/app-binder/task/SignBlockTask.d.ts +11 -8
  338. package/lib/types/internal/app-binder/task/SignBlockTask.d.ts.map +1 -1
  339. package/lib/types/internal/app-binder/task/SignChallengeWithKeypairTask.d.ts +5 -3
  340. package/lib/types/internal/app-binder/task/SignChallengeWithKeypairTask.d.ts.map +1 -1
  341. package/lib/types/internal/app-binder/task/utils/TrustedProperties.d.ts +1 -1
  342. package/lib/types/internal/app-binder/task/utils/TrustedProperties.d.ts.map +1 -1
  343. package/lib/types/internal/di.d.ts +3 -1
  344. package/lib/types/internal/di.d.ts.map +1 -1
  345. package/lib/types/internal/externalTypes.d.ts +1 -0
  346. package/lib/types/internal/externalTypes.d.ts.map +1 -1
  347. package/lib/types/internal/lkrp-datasource/data/HttpLKRPDataSource.d.ts +2 -2
  348. package/lib/types/internal/lkrp-datasource/data/HttpLKRPDataSource.d.ts.map +1 -1
  349. package/lib/types/internal/lkrp-datasource/data/LKRPDataSource.d.ts +2 -2
  350. package/lib/types/internal/lkrp-datasource/data/LKRPDataSource.d.ts.map +1 -1
  351. package/lib/types/internal/use-cases/authentication/AuthenticateUseCase.d.ts +3 -2
  352. package/lib/types/internal/use-cases/authentication/AuthenticateUseCase.d.ts.map +1 -1
  353. package/lib/types/internal/use-cases/authentication/DecryptDataUseCase.d.ts +4 -1
  354. package/lib/types/internal/use-cases/authentication/DecryptDataUseCase.d.ts.map +1 -1
  355. package/lib/types/internal/use-cases/authentication/EncryptDataUseCase.d.ts +4 -1
  356. package/lib/types/internal/use-cases/authentication/EncryptDataUseCase.d.ts.map +1 -1
  357. package/lib/types/internal/utils/LKRPBlock.d.ts +1 -1
  358. package/lib/types/internal/utils/LKRPBlock.d.ts.map +1 -1
  359. package/lib/types/internal/utils/LKRPBlockStream.d.ts +4 -3
  360. package/lib/types/internal/utils/LKRPBlockStream.d.ts.map +1 -1
  361. package/lib/types/internal/utils/LKRPCommand.d.ts +1 -1
  362. package/lib/types/internal/utils/LKRPCommand.d.ts.map +1 -1
  363. package/lib/types/internal/utils/TLVParser.d.ts +1 -1
  364. package/lib/types/internal/utils/TLVParser.d.ts.map +1 -1
  365. package/lib/types/internal/utils/required.d.ts +1 -1
  366. package/lib/types/internal/utils/required.d.ts.map +1 -1
  367. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  368. package/package.json +5 -5
  369. package/lib/cjs/api/app-binder/GetAppNameCommandTypes.js +0 -2
  370. package/lib/cjs/api/app-binder/GetAppNameCommandTypes.js.map +0 -7
  371. package/lib/cjs/api/app-binder/GetSeedIdCommandTypes.js +0 -2
  372. package/lib/cjs/api/app-binder/GetSeedIdCommandTypes.js.map +0 -7
  373. package/lib/cjs/api/app-binder/InitCommandTypes.js +0 -2
  374. package/lib/cjs/api/app-binder/InitCommandTypes.js.map +0 -7
  375. package/lib/cjs/api/app-binder/KeypairFromBytes.js +0 -2
  376. package/lib/cjs/api/app-binder/KeypairFromBytes.js.map +0 -7
  377. package/lib/cjs/api/app-binder/LKRPTypes.js +0 -2
  378. package/lib/cjs/api/app-binder/LKRPTypes.js.map +0 -7
  379. package/lib/cjs/api/app-binder/ParseStreamBlockCommandCommandTypes.js +0 -2
  380. package/lib/cjs/api/app-binder/ParseStreamBlockCommandCommandTypes.js.map +0 -7
  381. package/lib/cjs/api/app-binder/ParseStreamBlockHeaderCommandTypes.js +0 -2
  382. package/lib/cjs/api/app-binder/ParseStreamBlockHeaderCommandTypes.js.map +0 -7
  383. package/lib/cjs/api/app-binder/ParseStreamBlockSignatureTypes.js +0 -2
  384. package/lib/cjs/api/app-binder/ParseStreamBlockSignatureTypes.js.map +0 -7
  385. package/lib/cjs/api/app-binder/SetTrustedMemberTypes.js +0 -2
  386. package/lib/cjs/api/app-binder/SetTrustedMemberTypes.js.map +0 -7
  387. package/lib/cjs/api/app-binder/SignBlockCommandTypes.js +0 -2
  388. package/lib/cjs/api/app-binder/SignBlockCommandTypes.js.map +0 -7
  389. package/lib/cjs/api/app-binder/SignBlockHeaderCommandTypes.js +0 -2
  390. package/lib/cjs/api/app-binder/SignBlockHeaderCommandTypes.js.map +0 -7
  391. package/lib/cjs/api/app-binder/SignBlockSignatureCommandTypes.js +0 -2
  392. package/lib/cjs/api/app-binder/SignBlockSignatureCommandTypes.js.map +0 -7
  393. package/lib/cjs/api/app-binder/SignBlockSingleCommandTypes.js +0 -2
  394. package/lib/cjs/api/app-binder/SignBlockSingleCommandTypes.js.map +0 -7
  395. package/lib/cjs/internal/utils/TLVBuilder.js +0 -2
  396. package/lib/cjs/internal/utils/TLVBuilder.js.map +0 -7
  397. package/lib/cjs/internal/utils/crypto.js +0 -2
  398. package/lib/cjs/internal/utils/crypto.js.map +0 -7
  399. package/lib/cjs/internal/utils/hex.js +0 -2
  400. package/lib/cjs/internal/utils/hex.js.map +0 -7
  401. package/lib/esm/api/app-binder/GetAppNameCommandTypes.js +0 -1
  402. package/lib/esm/api/app-binder/GetSeedIdCommandTypes.js +0 -1
  403. package/lib/esm/api/app-binder/GetSeedIdCommandTypes.js.map +0 -7
  404. package/lib/esm/api/app-binder/InitCommandTypes.js +0 -1
  405. package/lib/esm/api/app-binder/InitCommandTypes.js.map +0 -7
  406. package/lib/esm/api/app-binder/KeypairFromBytes.js +0 -2
  407. package/lib/esm/api/app-binder/KeypairFromBytes.js.map +0 -7
  408. package/lib/esm/api/app-binder/LKRPTypes.js +0 -2
  409. package/lib/esm/api/app-binder/LKRPTypes.js.map +0 -7
  410. package/lib/esm/api/app-binder/ParseStreamBlockCommandCommandTypes.js +0 -1
  411. package/lib/esm/api/app-binder/ParseStreamBlockCommandCommandTypes.js.map +0 -7
  412. package/lib/esm/api/app-binder/ParseStreamBlockHeaderCommandTypes.js +0 -1
  413. package/lib/esm/api/app-binder/ParseStreamBlockHeaderCommandTypes.js.map +0 -7
  414. package/lib/esm/api/app-binder/ParseStreamBlockSignatureTypes.js +0 -1
  415. package/lib/esm/api/app-binder/ParseStreamBlockSignatureTypes.js.map +0 -7
  416. package/lib/esm/api/app-binder/SetTrustedMemberTypes.js +0 -1
  417. package/lib/esm/api/app-binder/SetTrustedMemberTypes.js.map +0 -7
  418. package/lib/esm/api/app-binder/SignBlockCommandTypes.js +0 -1
  419. package/lib/esm/api/app-binder/SignBlockCommandTypes.js.map +0 -7
  420. package/lib/esm/api/app-binder/SignBlockHeaderCommandTypes.js +0 -1
  421. package/lib/esm/api/app-binder/SignBlockHeaderCommandTypes.js.map +0 -7
  422. package/lib/esm/api/app-binder/SignBlockSignatureCommandTypes.js +0 -1
  423. package/lib/esm/api/app-binder/SignBlockSignatureCommandTypes.js.map +0 -7
  424. package/lib/esm/api/app-binder/SignBlockSingleCommandTypes.js +0 -1
  425. package/lib/esm/api/app-binder/SignBlockSingleCommandTypes.js.map +0 -7
  426. package/lib/esm/internal/utils/TLVBuilder.js +0 -2
  427. package/lib/esm/internal/utils/TLVBuilder.js.map +0 -7
  428. package/lib/esm/internal/utils/crypto.js +0 -2
  429. package/lib/esm/internal/utils/crypto.js.map +0 -7
  430. package/lib/esm/internal/utils/hex.js +0 -2
  431. package/lib/esm/internal/utils/hex.js.map +0 -7
  432. package/lib/types/api/app-binder/Errors.d.ts.map +0 -1
  433. package/lib/types/api/app-binder/GetAppNameCommandTypes.d.ts +0 -5
  434. package/lib/types/api/app-binder/GetAppNameCommandTypes.d.ts.map +0 -1
  435. package/lib/types/api/app-binder/GetSeedIdCommandTypes.d.ts +0 -14
  436. package/lib/types/api/app-binder/GetSeedIdCommandTypes.d.ts.map +0 -1
  437. package/lib/types/api/app-binder/InitCommandTypes.d.ts +0 -5
  438. package/lib/types/api/app-binder/InitCommandTypes.d.ts.map +0 -1
  439. package/lib/types/api/app-binder/KeypairFromBytes.d.ts +0 -11
  440. package/lib/types/api/app-binder/KeypairFromBytes.d.ts.map +0 -1
  441. package/lib/types/api/app-binder/LKRPTypes.d.ts.map +0 -1
  442. package/lib/types/api/app-binder/ParseStreamBlockCommandCommandTypes.d.ts +0 -6
  443. package/lib/types/api/app-binder/ParseStreamBlockCommandCommandTypes.d.ts.map +0 -1
  444. package/lib/types/api/app-binder/ParseStreamBlockHeaderCommandTypes.d.ts +0 -5
  445. package/lib/types/api/app-binder/ParseStreamBlockHeaderCommandTypes.d.ts.map +0 -1
  446. package/lib/types/api/app-binder/ParseStreamBlockSignatureTypes.d.ts +0 -5
  447. package/lib/types/api/app-binder/ParseStreamBlockSignatureTypes.d.ts.map +0 -1
  448. package/lib/types/api/app-binder/SetTrustedMemberTypes.d.ts +0 -6
  449. package/lib/types/api/app-binder/SetTrustedMemberTypes.d.ts.map +0 -1
  450. package/lib/types/api/app-binder/SignBlockCommandTypes.d.ts +0 -9
  451. package/lib/types/api/app-binder/SignBlockCommandTypes.d.ts.map +0 -1
  452. package/lib/types/api/app-binder/SignBlockHeaderCommandTypes.d.ts +0 -6
  453. package/lib/types/api/app-binder/SignBlockHeaderCommandTypes.d.ts.map +0 -1
  454. package/lib/types/api/app-binder/SignBlockSignatureCommandTypes.d.ts +0 -6
  455. package/lib/types/api/app-binder/SignBlockSignatureCommandTypes.d.ts.map +0 -1
  456. package/lib/types/api/app-binder/SignBlockSingleCommandTypes.d.ts +0 -5
  457. package/lib/types/api/app-binder/SignBlockSingleCommandTypes.d.ts.map +0 -1
  458. package/lib/types/internal/utils/TLVBuilder.d.ts +0 -15
  459. package/lib/types/internal/utils/TLVBuilder.d.ts.map +0 -1
  460. package/lib/types/internal/utils/crypto.d.ts +0 -19
  461. package/lib/types/internal/utils/crypto.d.ts.map +0 -1
  462. package/lib/types/internal/utils/hex.d.ts +0 -3
  463. package/lib/types/internal/utils/hex.d.ts.map +0 -1
  464. /package/lib/cjs/api/{app-binder → model}/Errors.js +0 -0
  465. /package/lib/esm/api/{app-binder → model}/Errors.js +0 -0
  466. /package/lib/esm/api/{app-binder/GetAppNameCommandTypes.js.map → model/JWT.js.map} +0 -0
  467. /package/lib/types/api/{app-binder → model}/Errors.d.ts +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/task/SignChallengeWithKeypairTask.test.ts"],
4
- "sourcesContent": ["import { LKRPMissingDataError } from \"@api/app-binder/Errors\";\nimport { KeypairFromBytes } from \"@api/app-binder/KeypairFromBytes\";\nimport { type Challenge } from \"@internal/lkrp-datasource/data/LKRPDataSource\";\nimport { hexToBytes } from \"@internal/utils/hex\";\n\nimport { SignChallengeWithKeypairTask } from \"./SignChallengeWithKeypairTask\";\n\ndescribe(\"SignChallengeWithKeypairTask\", () => {\n it(\"should sign a challenge with a keypair\", async () => {\n // GIVEN\n const { challenge, keypair, trustchainId } = getParameters();\n\n // WHEN\n const task = new SignChallengeWithKeypairTask(keypair, trustchainId);\n const result = await task.run(challenge).run();\n\n // THEN\n expect(result.isRight()).toBe(true);\n result.ifRight((payload) => {\n expect(payload.challenge).toBe(challenge.json);\n expect(payload.signature.credential).toEqual({\n version: 0,\n curveId: 33,\n signAlgorithm: 1,\n publicKey: keypair.pubKeyToHex(),\n });\n expect(payload.signature.attestation).toBe(\n \"0242303062373538386231393136633036373635343632656266343530363734346665323565643164623831393635326532646562613732313338393738396364633337\",\n );\n expect(payload.signature.signature).toBe(\n \"3045022100e9fead4e341f4e145f8888d7897184ff585e23c832a4c7acd15b5a2e53c58d2902204c58596d039960ab9b56ba4f9d27dbc5e647dbe779089e5e7e608501c5270049\",\n );\n });\n });\n\n it(\"should handle invalid challenge\", async () => {\n // GIVEN\n const { challenge, keypair, trustchainId } = getParameters({\n tlv: \"invalid-tlv\", // Invalid TLV\n });\n\n // WHEN\n const task = new SignChallengeWithKeypairTask(keypair, trustchainId);\n const result = await task.run(challenge).run();\n\n // THEN\n result.ifLeft((error) =>\n expect(error).toBeInstanceOf(LKRPMissingDataError),\n );\n });\n});\n\nfunction getParameters({\n privateKey = \"b21ef366414b1aaba29b9576b7c1a661d663cfd8b4f998257dddbf7dc60d315d\",\n trustchainId = \"00b7588b1916c06765462ebf4506744fe25ed1db819652e2deba721389789cdc37\",\n tlv = \"0101070201001210bb1ea0c98526e1ea2deb7c7537f2989514010115473045022038632e8fa245483f0ecdbaa4ca0d455a03e7510da269d2089fed0d5cfa69d3d6022100c2f938d60bf1c34e96a2d332822a86059d90ec26ea222189cd9731834a5c151216046878ab74202b7472757374636861696e2d6261636b656e642e6170692e6177732e7374672e6c64672d746563682e636f6d320121332103cb7628e7248ddf9c07da54b979f16bf081fb3d173aac0992ad2a44ef6a388ae2600401000000\",\n} = {}) {\n return {\n challenge: { tlv, json: {} as Challenge[\"json\"] },\n keypair: new KeypairFromBytes(hexToBytes(privateKey)),\n trustchainId,\n };\n}\n"],
5
- "mappings": "AAAA,OAAS,wBAAAA,MAA4B,yBACrC,OAAS,oBAAAC,MAAwB,mCAEjC,OAAS,cAAAC,MAAkB,sBAE3B,OAAS,gCAAAC,MAAoC,iCAE7C,SAAS,+BAAgC,IAAM,CAC7C,GAAG,yCAA0C,SAAY,CAEvD,KAAM,CAAE,UAAAC,EAAW,QAAAC,EAAS,aAAAC,CAAa,EAAIC,EAAc,EAIrDC,EAAS,MADF,IAAIL,EAA6BE,EAASC,CAAY,EACzC,IAAIF,CAAS,EAAE,IAAI,EAG7C,OAAOI,EAAO,QAAQ,CAAC,EAAE,KAAK,EAAI,EAClCA,EAAO,QAASC,GAAY,CAC1B,OAAOA,EAAQ,SAAS,EAAE,KAAKL,EAAU,IAAI,EAC7C,OAAOK,EAAQ,UAAU,UAAU,EAAE,QAAQ,CAC3C,QAAS,EACT,QAAS,GACT,cAAe,EACf,UAAWJ,EAAQ,YAAY,CACjC,CAAC,EACD,OAAOI,EAAQ,UAAU,WAAW,EAAE,KACpC,0IACF,EACA,OAAOA,EAAQ,UAAU,SAAS,EAAE,KAClC,gJACF,CACF,CAAC,CACH,CAAC,EAED,GAAG,kCAAmC,SAAY,CAEhD,KAAM,CAAE,UAAAL,EAAW,QAAAC,EAAS,aAAAC,CAAa,EAAIC,EAAc,CACzD,IAAK,aACP,CAAC,GAIc,MADF,IAAIJ,EAA6BE,EAASC,CAAY,EACzC,IAAIF,CAAS,EAAE,IAAI,GAGtC,OAAQM,GACb,OAAOA,CAAK,EAAE,eAAeV,CAAoB,CACnD,CACF,CAAC,CACH,CAAC,EAED,SAASO,EAAc,CACrB,WAAAI,EAAa,mEACb,aAAAL,EAAe,qEACf,IAAAM,EAAM,wYACR,EAAI,CAAC,EAAG,CACN,MAAO,CACL,UAAW,CAAE,IAAAA,EAAK,KAAM,CAAC,CAAuB,EAChD,QAAS,IAAIX,EAAiBC,EAAWS,CAAU,CAAC,EACpD,aAAAL,CACF,CACF",
6
- "names": ["LKRPMissingDataError", "KeypairFromBytes", "hexToBytes", "SignChallengeWithKeypairTask", "challenge", "keypair", "trustchainId", "getParameters", "result", "payload", "error", "privateKey", "tlv"]
4
+ "sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\n\nimport { Curve } from \"@api/crypto/CryptoService\";\nimport { NobleCryptoService } from \"@api/crypto/noble/NobleCryptoService\";\nimport { LKRPMissingDataError } from \"@api/model/Errors\";\nimport { type Challenge } from \"@internal/lkrp-datasource/data/LKRPDataSource\";\n\nimport { SignChallengeWithKeypairTask } from \"./SignChallengeWithKeypairTask\";\n\nconst cryptoService = new NobleCryptoService();\n\ndescribe(\"SignChallengeWithKeypairTask\", () => {\n it(\"should sign a challenge with a keypair\", async () => {\n // GIVEN\n const { challenge, keypair, trustchainId } = getParameters();\n\n // WHEN\n const task = new SignChallengeWithKeypairTask(\n cryptoService,\n keypair,\n trustchainId,\n );\n const result = await task.run(challenge).run();\n\n // THEN\n expect(result.isRight()).toBe(true);\n result.ifRight((payload) => {\n expect(payload.challenge).toBe(challenge.json);\n expect(payload.signature.credential).toEqual({\n version: 0,\n curveId: 33,\n signAlgorithm: 1,\n publicKey: keypair.getPublicKeyToHex(),\n });\n expect(payload.signature.attestation).toBe(\n \"0242303062373538386231393136633036373635343632656266343530363734346665323565643164623831393635326532646562613732313338393738396364633337\",\n );\n expect(payload.signature.signature).toBe(\n \"3045022100e9fead4e341f4e145f8888d7897184ff585e23c832a4c7acd15b5a2e53c58d2902204c58596d039960ab9b56ba4f9d27dbc5e647dbe779089e5e7e608501c5270049\",\n );\n });\n });\n\n it(\"should handle invalid challenge\", async () => {\n // GIVEN\n const { challenge, keypair, trustchainId } = getParameters({\n tlv: \"invalid-tlv\", // Invalid TLV\n });\n\n // WHEN\n const task = new SignChallengeWithKeypairTask(\n cryptoService,\n keypair,\n trustchainId,\n );\n const result = await task.run(challenge).run();\n\n // THEN\n result.ifLeft((error) =>\n expect(error).toBeInstanceOf(LKRPMissingDataError),\n );\n });\n});\n\nfunction getParameters({\n privateKey = \"b21ef366414b1aaba29b9576b7c1a661d663cfd8b4f998257dddbf7dc60d315d\",\n trustchainId = \"00b7588b1916c06765462ebf4506744fe25ed1db819652e2deba721389789cdc37\",\n tlv = \"0101070201001210bb1ea0c98526e1ea2deb7c7537f2989514010115473045022038632e8fa245483f0ecdbaa4ca0d455a03e7510da269d2089fed0d5cfa69d3d6022100c2f938d60bf1c34e96a2d332822a86059d90ec26ea222189cd9731834a5c151216046878ab74202b7472757374636861696e2d6261636b656e642e6170692e6177732e7374672e6c64672d746563682e636f6d320121332103cb7628e7248ddf9c07da54b979f16bf081fb3d173aac0992ad2a44ef6a388ae2600401000000\",\n} = {}) {\n return {\n challenge: { tlv, json: {} as Challenge[\"json\"] },\n keypair: cryptoService.importKeyPair(\n hexaStringToBuffer(privateKey)!,\n Curve.K256,\n ),\n trustchainId,\n };\n}\n"],
5
+ "mappings": "AAAA,OAAS,sBAAAA,MAA0B,kCAEnC,OAAS,SAAAC,MAAa,4BACtB,OAAS,sBAAAC,MAA0B,uCACnC,OAAS,wBAAAC,MAA4B,oBAGrC,OAAS,gCAAAC,MAAoC,iCAE7C,MAAMC,EAAgB,IAAIH,EAE1B,SAAS,+BAAgC,IAAM,CAC7C,GAAG,yCAA0C,SAAY,CAEvD,KAAM,CAAE,UAAAI,EAAW,QAAAC,EAAS,aAAAC,CAAa,EAAIC,EAAc,EAQrDC,EAAS,MALF,IAAIN,EACfC,EACAE,EACAC,CACF,EAC0B,IAAIF,CAAS,EAAE,IAAI,EAG7C,OAAOI,EAAO,QAAQ,CAAC,EAAE,KAAK,EAAI,EAClCA,EAAO,QAASC,GAAY,CAC1B,OAAOA,EAAQ,SAAS,EAAE,KAAKL,EAAU,IAAI,EAC7C,OAAOK,EAAQ,UAAU,UAAU,EAAE,QAAQ,CAC3C,QAAS,EACT,QAAS,GACT,cAAe,EACf,UAAWJ,EAAQ,kBAAkB,CACvC,CAAC,EACD,OAAOI,EAAQ,UAAU,WAAW,EAAE,KACpC,0IACF,EACA,OAAOA,EAAQ,UAAU,SAAS,EAAE,KAClC,gJACF,CACF,CAAC,CACH,CAAC,EAED,GAAG,kCAAmC,SAAY,CAEhD,KAAM,CAAE,UAAAL,EAAW,QAAAC,EAAS,aAAAC,CAAa,EAAIC,EAAc,CACzD,IAAK,aACP,CAAC,GAQc,MALF,IAAIL,EACfC,EACAE,EACAC,CACF,EAC0B,IAAIF,CAAS,EAAE,IAAI,GAGtC,OAAQM,GACb,OAAOA,CAAK,EAAE,eAAeT,CAAoB,CACnD,CACF,CAAC,CACH,CAAC,EAED,SAASM,EAAc,CACrB,WAAAI,EAAa,mEACb,aAAAL,EAAe,qEACf,IAAAM,EAAM,wYACR,EAAI,CAAC,EAAG,CACN,MAAO,CACL,UAAW,CAAE,IAAAA,EAAK,KAAM,CAAC,CAAuB,EAChD,QAAST,EAAc,cACrBL,EAAmBa,CAAU,EAC7BZ,EAAM,IACR,EACA,aAAAO,CACF,CACF",
6
+ "names": ["hexaStringToBuffer", "Curve", "NobleCryptoService", "LKRPMissingDataError", "SignChallengeWithKeypairTask", "cryptoService", "challenge", "keypair", "trustchainId", "getParameters", "result", "payload", "error", "privateKey", "tlv"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ByteArrayParser as a}from"@ledgerhq/device-management-kit";import{Either as p,Left as o,Right as i}from"purify-ts";import{LKRPParsingError as P}from"../../../../api/app-binder/Errors";import{TPTags as e}from"../../../models/Tags";import{required as t}from"../../../utils/required";class h{constructor(r){this.bytes=r;this.parser=new a(r)}parser;iv=null;encryptedProps=null;getIv(){if(!this.iv){const r=this.parser.extractFieldTLVEncoded();if(!r||r.tag!==0)return o(new P("Invalid trusted property: missing IV"));this.iv=r.value}return i(this.iv)}getIssuer(){return this.parseEncryptedProps().chain(r=>t(r.get(e.ISSUER)?.value,"Missing issuer in trusted properties"))}getXPriv(){return this.parseEncryptedProps().chain(r=>t(r.get(e.XPRIV)?.value,"Missing xpriv in trusted properties"))}getEphemeralPublicKey(){return this.parseEncryptedProps().chain(r=>t(r.get(e.EPHEMERAL_PUBLIC_KEY)?.value,"Missing ephemeral public key in trusted properties"))}getCommandIv(){return this.parseEncryptedProps().chain(r=>t(r.get(e.COMMAND_IV)?.value,"Missing command IV in trusted properties"))}getGroupKey(){return this.parseEncryptedProps().chain(r=>t(r.get(e.GROUPKEY)?.value,"Missing group key in trusted properties"))}getNewMember(){return this.parseEncryptedProps().chain(r=>t(r.get(e.NEW_MEMBER)?.tlv,"Missing new member in trusted properties"))}parseEncryptedProps(){return this.encryptedProps?i(this.encryptedProps):this.getIv().chain(()=>p.sequence(Array.from(E(this.parser)))).map(r=>new Map(r.map(n=>[n.tag,n]))).ifRight(r=>{this.encryptedProps=r})}}function*E(s){for(;;){const r=s.extractFieldTLVEncoded();if(!r)return;yield i(r)}}export{h as TrustedProperties};
1
+ import{ByteArrayParser as a}from"@ledgerhq/device-management-kit";import{Either as p,Left as o,Right as i}from"purify-ts";import{LKRPParsingError as P}from"../../../../api/model/Errors";import{TPTags as e}from"../../../models/Tags";import{required as t}from"../../../utils/required";class h{constructor(r){this.bytes=r;this.parser=new a(r)}parser;iv=null;encryptedProps=null;getIv(){if(!this.iv){const r=this.parser.extractFieldTLVEncoded();if(!r||r.tag!==0)return o(new P("Invalid trusted property: missing IV"));this.iv=r.value}return i(this.iv)}getIssuer(){return this.parseEncryptedProps().chain(r=>t(r.get(e.ISSUER)?.value,"Missing issuer in trusted properties"))}getXPriv(){return this.parseEncryptedProps().chain(r=>t(r.get(e.XPRIV)?.value,"Missing xpriv in trusted properties"))}getEphemeralPublicKey(){return this.parseEncryptedProps().chain(r=>t(r.get(e.EPHEMERAL_PUBLIC_KEY)?.value,"Missing ephemeral public key in trusted properties"))}getCommandIv(){return this.parseEncryptedProps().chain(r=>t(r.get(e.COMMAND_IV)?.value,"Missing command IV in trusted properties"))}getGroupKey(){return this.parseEncryptedProps().chain(r=>t(r.get(e.GROUPKEY)?.value,"Missing group key in trusted properties"))}getNewMember(){return this.parseEncryptedProps().chain(r=>t(r.get(e.NEW_MEMBER)?.tlv,"Missing new member in trusted properties"))}parseEncryptedProps(){return this.encryptedProps?i(this.encryptedProps):this.getIv().chain(()=>p.sequence(Array.from(E(this.parser)))).map(r=>new Map(r.map(n=>[n.tag,n]))).ifRight(r=>{this.encryptedProps=r})}}function*E(s){for(;;){const r=s.extractFieldTLVEncoded();if(!r)return;yield i(r)}}export{h as TrustedProperties};
2
2
  //# sourceMappingURL=TrustedProperties.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/app-binder/task/utils/TrustedProperties.ts"],
4
- "sourcesContent": ["import { ByteArrayParser } from \"@ledgerhq/device-management-kit\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport {\n type LKRPMissingDataError,\n LKRPParsingError,\n} from \"@api/app-binder/Errors\";\nimport { TPTags } from \"@internal/models/Tags\";\nimport { required } from \"@internal/utils/required\";\n\ntype EncryptedTPTag = Exclude<TPTags, TPTags.IV>;\ntype EncryptedTP = { tag: EncryptedTPTag; value: Uint8Array; tlv: Uint8Array };\n\nexport class TrustedProperties {\n private readonly parser: ByteArrayParser;\n private iv: Uint8Array | null = null;\n private encryptedProps: Map<EncryptedTPTag, EncryptedTP> | null = null;\n\n constructor(public readonly bytes: Uint8Array) {\n this.parser = new ByteArrayParser(bytes);\n }\n\n getIv(): Either<LKRPParsingError, Uint8Array> {\n if (!this.iv) {\n const field = this.parser.extractFieldTLVEncoded();\n if (!field || field.tag !== 0x00) {\n return Left(\n new LKRPParsingError(\"Invalid trusted property: missing IV\"),\n );\n }\n\n this.iv = field.value;\n }\n return Right(this.iv);\n }\n\n getIssuer(): Either<LKRPParsingError | LKRPMissingDataError, Uint8Array> {\n return this.parseEncryptedProps().chain((props) =>\n required(\n props.get(TPTags.ISSUER)?.value,\n \"Missing issuer in trusted properties\",\n ),\n );\n }\n\n getXPriv(): Either<LKRPParsingError | LKRPMissingDataError, Uint8Array> {\n return this.parseEncryptedProps().chain((props) =>\n required(\n props.get(TPTags.XPRIV)?.value,\n \"Missing xpriv in trusted properties\",\n ),\n );\n }\n\n getEphemeralPublicKey(): Either<\n LKRPParsingError | LKRPMissingDataError,\n Uint8Array\n > {\n return this.parseEncryptedProps().chain((props) =>\n required(\n props.get(TPTags.EPHEMERAL_PUBLIC_KEY)?.value,\n \"Missing ephemeral public key in trusted properties\",\n ),\n );\n }\n\n getCommandIv(): Either<LKRPParsingError | LKRPMissingDataError, Uint8Array> {\n return this.parseEncryptedProps().chain((props) =>\n required(\n props.get(TPTags.COMMAND_IV)?.value,\n \"Missing command IV in trusted properties\",\n ),\n );\n }\n\n getGroupKey(): Either<LKRPParsingError | LKRPMissingDataError, Uint8Array> {\n return this.parseEncryptedProps().chain((props) =>\n required(\n props.get(TPTags.GROUPKEY)?.value,\n \"Missing group key in trusted properties\",\n ),\n );\n }\n\n getNewMember(): Either<LKRPParsingError | LKRPMissingDataError, Uint8Array> {\n return this.parseEncryptedProps().chain((props) =>\n required(\n props.get(TPTags.NEW_MEMBER)?.tlv,\n \"Missing new member in trusted properties\",\n ),\n );\n }\n\n parseEncryptedProps(): Either<\n LKRPParsingError,\n Map<EncryptedTPTag, EncryptedTP>\n > {\n return this.encryptedProps\n ? Right(this.encryptedProps)\n : this.getIv()\n .chain(() => Either.sequence(Array.from(parseTPs(this.parser))))\n .map((fields) => new Map(fields.map((field) => [field.tag, field])))\n .ifRight((props) => {\n this.encryptedProps = props;\n });\n }\n}\n\nfunction* parseTPs(\n parser: ByteArrayParser,\n): Generator<Either<LKRPParsingError, EncryptedTP>> {\n while (true) {\n const field = parser.extractFieldTLVEncoded();\n if (!field) return;\n yield Right(field);\n }\n}\n"],
5
- "mappings": "AAAA,OAAS,mBAAAA,MAAuB,kCAChC,OAAS,UAAAC,EAAQ,QAAAC,EAAM,SAAAC,MAAa,YAEpC,OAEE,oBAAAC,MACK,yBACP,OAAS,UAAAC,MAAc,wBACvB,OAAS,YAAAC,MAAgB,2BAKlB,MAAMC,CAAkB,CAK7B,YAA4BC,EAAmB,CAAnB,WAAAA,EAC1B,KAAK,OAAS,IAAIR,EAAgBQ,CAAK,CACzC,CANiB,OACT,GAAwB,KACxB,eAA0D,KAMlE,OAA8C,CAC5C,GAAI,CAAC,KAAK,GAAI,CACZ,MAAMC,EAAQ,KAAK,OAAO,uBAAuB,EACjD,GAAI,CAACA,GAASA,EAAM,MAAQ,EAC1B,OAAOP,EACL,IAAIE,EAAiB,sCAAsC,CAC7D,EAGF,KAAK,GAAKK,EAAM,KAClB,CACA,OAAON,EAAM,KAAK,EAAE,CACtB,CAEA,WAAyE,CACvE,OAAO,KAAK,oBAAoB,EAAE,MAAOO,GACvCJ,EACEI,EAAM,IAAIL,EAAO,MAAM,GAAG,MAC1B,sCACF,CACF,CACF,CAEA,UAAwE,CACtE,OAAO,KAAK,oBAAoB,EAAE,MAAOK,GACvCJ,EACEI,EAAM,IAAIL,EAAO,KAAK,GAAG,MACzB,qCACF,CACF,CACF,CAEA,uBAGE,CACA,OAAO,KAAK,oBAAoB,EAAE,MAAOK,GACvCJ,EACEI,EAAM,IAAIL,EAAO,oBAAoB,GAAG,MACxC,oDACF,CACF,CACF,CAEA,cAA4E,CAC1E,OAAO,KAAK,oBAAoB,EAAE,MAAOK,GACvCJ,EACEI,EAAM,IAAIL,EAAO,UAAU,GAAG,MAC9B,0CACF,CACF,CACF,CAEA,aAA2E,CACzE,OAAO,KAAK,oBAAoB,EAAE,MAAOK,GACvCJ,EACEI,EAAM,IAAIL,EAAO,QAAQ,GAAG,MAC5B,yCACF,CACF,CACF,CAEA,cAA4E,CAC1E,OAAO,KAAK,oBAAoB,EAAE,MAAOK,GACvCJ,EACEI,EAAM,IAAIL,EAAO,UAAU,GAAG,IAC9B,0CACF,CACF,CACF,CAEA,qBAGE,CACA,OAAO,KAAK,eACRF,EAAM,KAAK,cAAc,EACzB,KAAK,MAAM,EACR,MAAM,IAAMF,EAAO,SAAS,MAAM,KAAKU,EAAS,KAAK,MAAM,CAAC,CAAC,CAAC,EAC9D,IAAKC,GAAW,IAAI,IAAIA,EAAO,IAAKH,GAAU,CAACA,EAAM,IAAKA,CAAK,CAAC,CAAC,CAAC,EAClE,QAASC,GAAU,CAClB,KAAK,eAAiBA,CACxB,CAAC,CACT,CACF,CAEA,SAAUC,EACRE,EACkD,CAClD,OAAa,CACX,MAAMJ,EAAQI,EAAO,uBAAuB,EAC5C,GAAI,CAACJ,EAAO,OACZ,MAAMN,EAAMM,CAAK,CACnB,CACF",
4
+ "sourcesContent": ["import { ByteArrayParser } from \"@ledgerhq/device-management-kit\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { type LKRPMissingDataError, LKRPParsingError } from \"@api/model/Errors\";\nimport { TPTags } from \"@internal/models/Tags\";\nimport { required } from \"@internal/utils/required\";\n\ntype EncryptedTPTag = Exclude<TPTags, TPTags.IV>;\ntype EncryptedTP = { tag: EncryptedTPTag; value: Uint8Array; tlv: Uint8Array };\n\nexport class TrustedProperties {\n private readonly parser: ByteArrayParser;\n private iv: Uint8Array | null = null;\n private encryptedProps: Map<EncryptedTPTag, EncryptedTP> | null = null;\n\n constructor(public readonly bytes: Uint8Array) {\n this.parser = new ByteArrayParser(bytes);\n }\n\n getIv(): Either<LKRPParsingError, Uint8Array> {\n if (!this.iv) {\n const field = this.parser.extractFieldTLVEncoded();\n if (!field || field.tag !== 0x00) {\n return Left(\n new LKRPParsingError(\"Invalid trusted property: missing IV\"),\n );\n }\n\n this.iv = field.value;\n }\n return Right(this.iv);\n }\n\n getIssuer(): Either<LKRPParsingError | LKRPMissingDataError, Uint8Array> {\n return this.parseEncryptedProps().chain((props) =>\n required(\n props.get(TPTags.ISSUER)?.value,\n \"Missing issuer in trusted properties\",\n ),\n );\n }\n\n getXPriv(): Either<LKRPParsingError | LKRPMissingDataError, Uint8Array> {\n return this.parseEncryptedProps().chain((props) =>\n required(\n props.get(TPTags.XPRIV)?.value,\n \"Missing xpriv in trusted properties\",\n ),\n );\n }\n\n getEphemeralPublicKey(): Either<\n LKRPParsingError | LKRPMissingDataError,\n Uint8Array\n > {\n return this.parseEncryptedProps().chain((props) =>\n required(\n props.get(TPTags.EPHEMERAL_PUBLIC_KEY)?.value,\n \"Missing ephemeral public key in trusted properties\",\n ),\n );\n }\n\n getCommandIv(): Either<LKRPParsingError | LKRPMissingDataError, Uint8Array> {\n return this.parseEncryptedProps().chain((props) =>\n required(\n props.get(TPTags.COMMAND_IV)?.value,\n \"Missing command IV in trusted properties\",\n ),\n );\n }\n\n getGroupKey(): Either<LKRPParsingError | LKRPMissingDataError, Uint8Array> {\n return this.parseEncryptedProps().chain((props) =>\n required(\n props.get(TPTags.GROUPKEY)?.value,\n \"Missing group key in trusted properties\",\n ),\n );\n }\n\n getNewMember(): Either<LKRPParsingError | LKRPMissingDataError, Uint8Array> {\n return this.parseEncryptedProps().chain((props) =>\n required(\n props.get(TPTags.NEW_MEMBER)?.tlv,\n \"Missing new member in trusted properties\",\n ),\n );\n }\n\n parseEncryptedProps(): Either<\n LKRPParsingError,\n Map<EncryptedTPTag, EncryptedTP>\n > {\n return this.encryptedProps\n ? Right(this.encryptedProps)\n : this.getIv()\n .chain(() => Either.sequence(Array.from(parseTPs(this.parser))))\n .map((fields) => new Map(fields.map((field) => [field.tag, field])))\n .ifRight((props) => {\n this.encryptedProps = props;\n });\n }\n}\n\nfunction* parseTPs(\n parser: ByteArrayParser,\n): Generator<Either<LKRPParsingError, EncryptedTP>> {\n while (true) {\n const field = parser.extractFieldTLVEncoded();\n if (!field) return;\n yield Right(field);\n }\n}\n"],
5
+ "mappings": "AAAA,OAAS,mBAAAA,MAAuB,kCAChC,OAAS,UAAAC,EAAQ,QAAAC,EAAM,SAAAC,MAAa,YAEpC,OAAoC,oBAAAC,MAAwB,oBAC5D,OAAS,UAAAC,MAAc,wBACvB,OAAS,YAAAC,MAAgB,2BAKlB,MAAMC,CAAkB,CAK7B,YAA4BC,EAAmB,CAAnB,WAAAA,EAC1B,KAAK,OAAS,IAAIR,EAAgBQ,CAAK,CACzC,CANiB,OACT,GAAwB,KACxB,eAA0D,KAMlE,OAA8C,CAC5C,GAAI,CAAC,KAAK,GAAI,CACZ,MAAMC,EAAQ,KAAK,OAAO,uBAAuB,EACjD,GAAI,CAACA,GAASA,EAAM,MAAQ,EAC1B,OAAOP,EACL,IAAIE,EAAiB,sCAAsC,CAC7D,EAGF,KAAK,GAAKK,EAAM,KAClB,CACA,OAAON,EAAM,KAAK,EAAE,CACtB,CAEA,WAAyE,CACvE,OAAO,KAAK,oBAAoB,EAAE,MAAOO,GACvCJ,EACEI,EAAM,IAAIL,EAAO,MAAM,GAAG,MAC1B,sCACF,CACF,CACF,CAEA,UAAwE,CACtE,OAAO,KAAK,oBAAoB,EAAE,MAAOK,GACvCJ,EACEI,EAAM,IAAIL,EAAO,KAAK,GAAG,MACzB,qCACF,CACF,CACF,CAEA,uBAGE,CACA,OAAO,KAAK,oBAAoB,EAAE,MAAOK,GACvCJ,EACEI,EAAM,IAAIL,EAAO,oBAAoB,GAAG,MACxC,oDACF,CACF,CACF,CAEA,cAA4E,CAC1E,OAAO,KAAK,oBAAoB,EAAE,MAAOK,GACvCJ,EACEI,EAAM,IAAIL,EAAO,UAAU,GAAG,MAC9B,0CACF,CACF,CACF,CAEA,aAA2E,CACzE,OAAO,KAAK,oBAAoB,EAAE,MAAOK,GACvCJ,EACEI,EAAM,IAAIL,EAAO,QAAQ,GAAG,MAC5B,yCACF,CACF,CACF,CAEA,cAA4E,CAC1E,OAAO,KAAK,oBAAoB,EAAE,MAAOK,GACvCJ,EACEI,EAAM,IAAIL,EAAO,UAAU,GAAG,IAC9B,0CACF,CACF,CACF,CAEA,qBAGE,CACA,OAAO,KAAK,eACRF,EAAM,KAAK,cAAc,EACzB,KAAK,MAAM,EACR,MAAM,IAAMF,EAAO,SAAS,MAAM,KAAKU,EAAS,KAAK,MAAM,CAAC,CAAC,CAAC,EAC9D,IAAKC,GAAW,IAAI,IAAIA,EAAO,IAAKH,GAAU,CAACA,EAAM,IAAKA,CAAK,CAAC,CAAC,CAAC,EAClE,QAASC,GAAU,CAClB,KAAK,eAAiBA,CACxB,CAAC,CACT,CACF,CAEA,SAAUC,EACRE,EACkD,CAClD,OAAa,CACX,MAAMJ,EAAQI,EAAO,uBAAuB,EAC5C,GAAI,CAACJ,EAAO,OACZ,MAAMN,EAAMM,CAAK,CACnB,CACF",
6
6
  "names": ["ByteArrayParser", "Either", "Left", "Right", "LKRPParsingError", "TPTags", "required", "TrustedProperties", "bytes", "field", "props", "parseTPs", "fields", "parser"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Container as s}from"inversify";import{LKRPEnv as e}from"../api/index";import{appBindingModuleFactory as m}from"./app-binder/di/appBinderModule";import{lkrpDatasourceModuleFactory as c}from"./lkrp-datasource/di/lkrpDatasourceModuleFactory";import{useCasesModuleFactory as l}from"./use-cases/di/useCasesModule";import{externalTypes as n}from"./externalTypes";const f=({dmk:o,applicationId:a,env:r=e.PROD,baseUrl:i,stub:p})=>{const t=new s;return t.bind(n.Dmk).toConstantValue(o),t.bind(n.ApplicationId).toConstantValue(a),t.loadSync(m(),c({baseUrl:i??d.get(r),stub:p}),l()),t},d=new Map([[e.PROD,"https://trustchain.api.live.ledger.com/v1"],[e.STAGING,"https://trustchain-backend.api.aws.stg.ldg-tech.com/v1"]]);export{f as makeContainer};
1
+ import{Container as m}from"inversify";import{LKRPEnv as o}from"../api/index";import{appBindingModuleFactory as s}from"./app-binder/di/appBinderModule";import{lkrpDatasourceModuleFactory as l}from"./lkrp-datasource/di/lkrpDatasourceModuleFactory";import{useCasesModuleFactory as v}from"./use-cases/di/useCasesModule";import{externalTypes as e}from"./externalTypes";const f=({dmk:r,applicationId:n,cryptoService:a,env:i=o.PROD,baseUrl:p,stub:c})=>{const t=new m;return t.bind(e.Dmk).toConstantValue(r),t.bind(e.ApplicationId).toConstantValue(n),t.bind(e.CryptoService).toConstantValue(a),t.loadSync(s(),l({baseUrl:p??d.get(i),stub:c}),v()),t},d=new Map([[o.PROD,"https://trustchain.api.live.ledger.com/v1"],[o.STAGING,"https://trustchain-backend.api.aws.stg.ldg-tech.com/v1"]]);export{f as makeContainer};
2
2
  //# sourceMappingURL=di.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/internal/di.ts"],
4
- "sourcesContent": ["import { type DeviceManagementKit } from \"@ledgerhq/device-management-kit\";\nimport { Container } from \"inversify\";\n\nimport { LKRPEnv } from \"@api/index\";\nimport { appBindingModuleFactory } from \"@internal/app-binder/di/appBinderModule\";\n\nimport { lkrpDatasourceModuleFactory } from \"./lkrp-datasource/di/lkrpDatasourceModuleFactory\";\nimport { useCasesModuleFactory } from \"./use-cases/di/useCasesModule\";\nimport { externalTypes } from \"./externalTypes\";\n\nexport type MakeContainerProps = {\n dmk: DeviceManagementKit;\n applicationId: number;\n env?: LKRPEnv;\n baseUrl?: string; // Optional base URL for the LKRP network requests\n stub?: boolean;\n};\n\nexport const makeContainer = ({\n dmk,\n applicationId,\n env = LKRPEnv.PROD,\n baseUrl,\n stub,\n}: MakeContainerProps) => {\n const container = new Container();\n\n container.bind<DeviceManagementKit>(externalTypes.Dmk).toConstantValue(dmk);\n container.bind(externalTypes.ApplicationId).toConstantValue(applicationId);\n\n container.loadSync(\n appBindingModuleFactory(),\n lkrpDatasourceModuleFactory({\n baseUrl: baseUrl ?? lkrpBaseUrlMap.get(env),\n stub,\n }),\n useCasesModuleFactory(),\n );\n\n return container;\n};\n\nconst lkrpBaseUrlMap = new Map<LKRPEnv, string>([\n [LKRPEnv.PROD, \"https://trustchain.api.live.ledger.com/v1\"],\n [LKRPEnv.STAGING, \"https://trustchain-backend.api.aws.stg.ldg-tech.com/v1\"],\n]);\n"],
5
- "mappings": "AACA,OAAS,aAAAA,MAAiB,YAE1B,OAAS,WAAAC,MAAe,aACxB,OAAS,2BAAAC,MAA+B,0CAExC,OAAS,+BAAAC,MAAmC,mDAC5C,OAAS,yBAAAC,MAA6B,gCACtC,OAAS,iBAAAC,MAAqB,kBAUvB,MAAMC,EAAgB,CAAC,CAC5B,IAAAC,EACA,cAAAC,EACA,IAAAC,EAAMR,EAAQ,KACd,QAAAS,EACA,KAAAC,CACF,IAA0B,CACxB,MAAMC,EAAY,IAAIZ,EAEtB,OAAAY,EAAU,KAA0BP,EAAc,GAAG,EAAE,gBAAgBE,CAAG,EAC1EK,EAAU,KAAKP,EAAc,aAAa,EAAE,gBAAgBG,CAAa,EAEzEI,EAAU,SACRV,EAAwB,EACxBC,EAA4B,CAC1B,QAASO,GAAWG,EAAe,IAAIJ,CAAG,EAC1C,KAAAE,CACF,CAAC,EACDP,EAAsB,CACxB,EAEOQ,CACT,EAEMC,EAAiB,IAAI,IAAqB,CAC9C,CAACZ,EAAQ,KAAM,2CAA2C,EAC1D,CAACA,EAAQ,QAAS,wDAAwD,CAC5E,CAAC",
6
- "names": ["Container", "LKRPEnv", "appBindingModuleFactory", "lkrpDatasourceModuleFactory", "useCasesModuleFactory", "externalTypes", "makeContainer", "dmk", "applicationId", "env", "baseUrl", "stub", "container", "lkrpBaseUrlMap"]
4
+ "sourcesContent": ["import { type DeviceManagementKit } from \"@ledgerhq/device-management-kit\";\nimport { Container } from \"inversify\";\n\nimport { type CryptoService } from \"@api/crypto/CryptoService\";\nimport { LKRPEnv } from \"@api/index\";\nimport { appBindingModuleFactory } from \"@internal/app-binder/di/appBinderModule\";\n\nimport { lkrpDatasourceModuleFactory } from \"./lkrp-datasource/di/lkrpDatasourceModuleFactory\";\nimport { useCasesModuleFactory } from \"./use-cases/di/useCasesModule\";\nimport { externalTypes } from \"./externalTypes\";\n\nexport type MakeContainerProps = {\n dmk: DeviceManagementKit;\n applicationId: number;\n cryptoService: CryptoService;\n env?: LKRPEnv;\n baseUrl?: string; // Optional base URL for the LKRP network requests\n stub?: boolean;\n};\n\nexport const makeContainer = ({\n dmk,\n applicationId,\n cryptoService,\n env = LKRPEnv.PROD,\n baseUrl,\n stub,\n}: MakeContainerProps) => {\n const container = new Container();\n\n container.bind<DeviceManagementKit>(externalTypes.Dmk).toConstantValue(dmk);\n container.bind(externalTypes.ApplicationId).toConstantValue(applicationId);\n container\n .bind<CryptoService>(externalTypes.CryptoService)\n .toConstantValue(cryptoService);\n\n container.loadSync(\n appBindingModuleFactory(),\n lkrpDatasourceModuleFactory({\n baseUrl: baseUrl ?? lkrpBaseUrlMap.get(env),\n stub,\n }),\n useCasesModuleFactory(),\n );\n\n return container;\n};\n\nconst lkrpBaseUrlMap = new Map<LKRPEnv, string>([\n [LKRPEnv.PROD, \"https://trustchain.api.live.ledger.com/v1\"],\n [LKRPEnv.STAGING, \"https://trustchain-backend.api.aws.stg.ldg-tech.com/v1\"],\n]);\n"],
5
+ "mappings": "AACA,OAAS,aAAAA,MAAiB,YAG1B,OAAS,WAAAC,MAAe,aACxB,OAAS,2BAAAC,MAA+B,0CAExC,OAAS,+BAAAC,MAAmC,mDAC5C,OAAS,yBAAAC,MAA6B,gCACtC,OAAS,iBAAAC,MAAqB,kBAWvB,MAAMC,EAAgB,CAAC,CAC5B,IAAAC,EACA,cAAAC,EACA,cAAAC,EACA,IAAAC,EAAMT,EAAQ,KACd,QAAAU,EACA,KAAAC,CACF,IAA0B,CACxB,MAAMC,EAAY,IAAIb,EAEtB,OAAAa,EAAU,KAA0BR,EAAc,GAAG,EAAE,gBAAgBE,CAAG,EAC1EM,EAAU,KAAKR,EAAc,aAAa,EAAE,gBAAgBG,CAAa,EACzEK,EACG,KAAoBR,EAAc,aAAa,EAC/C,gBAAgBI,CAAa,EAEhCI,EAAU,SACRX,EAAwB,EACxBC,EAA4B,CAC1B,QAASQ,GAAWG,EAAe,IAAIJ,CAAG,EAC1C,KAAAE,CACF,CAAC,EACDR,EAAsB,CACxB,EAEOS,CACT,EAEMC,EAAiB,IAAI,IAAqB,CAC9C,CAACb,EAAQ,KAAM,2CAA2C,EAC1D,CAACA,EAAQ,QAAS,wDAAwD,CAC5E,CAAC",
6
+ "names": ["Container", "LKRPEnv", "appBindingModuleFactory", "lkrpDatasourceModuleFactory", "useCasesModuleFactory", "externalTypes", "makeContainer", "dmk", "applicationId", "cryptoService", "env", "baseUrl", "stub", "container", "lkrpBaseUrlMap"]
7
7
  }
@@ -1,2 +1,2 @@
1
- const r={Dmk:Symbol.for("Dmk"),ApplicationId:Symbol.for("ApplicationId")};export{r as externalTypes};
1
+ const r={Dmk:Symbol.for("Dmk"),ApplicationId:Symbol.for("ApplicationId"),CryptoService:Symbol.for("CryptoService")};export{r as externalTypes};
2
2
  //# sourceMappingURL=externalTypes.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/internal/externalTypes.ts"],
4
- "sourcesContent": ["export const externalTypes = {\n Dmk: Symbol.for(\"Dmk\"),\n ApplicationId: Symbol.for(\"ApplicationId\"),\n};\n\nexport type TrustedProperty = {\n iv: Uint8Array;\n issuer: Uint8Array;\n xpriv: Uint8Array;\n ephemeralPubKey: Uint8Array;\n commandIV: Uint8Array;\n groupKey: Uint8Array;\n newMember: Uint8Array;\n};\n"],
5
- "mappings": "AAAO,MAAMA,EAAgB,CAC3B,IAAK,OAAO,IAAI,KAAK,EACrB,cAAe,OAAO,IAAI,eAAe,CAC3C",
4
+ "sourcesContent": ["export const externalTypes = {\n Dmk: Symbol.for(\"Dmk\"),\n ApplicationId: Symbol.for(\"ApplicationId\"),\n CryptoService: Symbol.for(\"CryptoService\"),\n};\n\nexport type TrustedProperty = {\n iv: Uint8Array;\n issuer: Uint8Array;\n xpriv: Uint8Array;\n ephemeralPubKey: Uint8Array;\n commandIV: Uint8Array;\n groupKey: Uint8Array;\n newMember: Uint8Array;\n};\n"],
5
+ "mappings": "AAAO,MAAMA,EAAgB,CAC3B,IAAK,OAAO,IAAI,KAAK,EACrB,cAAe,OAAO,IAAI,eAAe,EACzC,cAAe,OAAO,IAAI,eAAe,CAC3C",
6
6
  "names": ["externalTypes"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var d=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var g=(s,t,e,r)=>{for(var i=r>1?void 0:r?y(t,e):t,o=s.length-1,n;o>=0;o--)(n=s[o])&&(i=(r?n(t,e,i):n(i))||i);return r&&i&&d(t,e,i),i},f=(s,t)=>(e,r)=>t(e,r,s);import{inject as S,injectable as T}from"inversify";import{EitherAsync as c,Just as m,Left as R,Maybe as b,Nothing as l,Right as p}from"purify-ts";import{LKRPDataSourceError as N}from"../../../api/app-binder/Errors";import{lkrpDatasourceTypes as k}from"../../lkrp-datasource/di/lkrpDatasourceTypes";import{Trustchain as L}from"../../utils/Trustchain";let u=class{constructor(t){this.baseUrl=t}getChallenge(){return this.request("/challenge",l)}authenticate(t){return this.request("/authenticate",l,{method:"POST",body:JSON.stringify(t)}).map(e=>({jwt:e,trustchainId:b.fromNullable(Object.keys(e.permissions).find(r=>!!e.permissions[r]?.["m/"]))}))}getTrustchainById(t,e){return this.request(`/trustchain/${t}`,m(e)).map(r=>new L(t,r))}postDerivation(t,e,r){return this.request(`/trustchain/${t}/derivation`,m(r),{method:"POST",body:JSON.stringify(e.toString())})}putCommands(t,e,r,i){return this.request(`/trustchain/${t}/commands`,m(i),{method:"PUT",body:JSON.stringify({path:e,blocks:[r.toString()]})})}request(t,e,r){const i=this.baseUrl+t,o={...r?.headers,"Content-Type":"application/json",...e.mapOrDefault(({access_token:n})=>({Authorization:`Bearer ${n}`}),{})};return c(()=>fetch(i,{...r,headers:o})).mapLeft(n=>({status:"UNKNOWN",message:h(n)})).chain(async n=>{switch(n.status){case 204:return p(void 0);default:return c(()=>n.json()).mapLeft(h).map(a=>n.ok?p(a):R(h(a))).chain(c.liftEither).mapLeft(a=>({status:P.get(n.status)??"UNKNOWN",message:`[${n.status}] ${a||n.statusText}`}))}}).mapLeft(({status:n,message:a})=>new N({status:n,message:`${a||"Unknown error"} (from: ${i})`}))}};u=g([T(),f(0,S(k.BaseUrl))],u);const P=new Map([[400,"BAD_REQUEST"],[401,"UNAUTHORIZED"]]);function h(s){if(s){if(typeof s!="object"||s.toString!=={}.toString)return String(s);if("message"in s)return String(s.message)}}export{u as HttpLKRPDataSource};
1
+ var d=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var g=(s,t,e,r)=>{for(var i=r>1?void 0:r?y(t,e):t,o=s.length-1,n;o>=0;o--)(n=s[o])&&(i=(r?n(t,e,i):n(i))||i);return r&&i&&d(t,e,i),i},f=(s,t)=>(e,r)=>t(e,r,s);import{inject as S,injectable as T}from"inversify";import{EitherAsync as c,Just as m,Left as R,Maybe as b,Nothing as l,Right as p}from"purify-ts";import{LKRPDataSourceError as N}from"../../../api/model/Errors";import{lkrpDatasourceTypes as k}from"../../lkrp-datasource/di/lkrpDatasourceTypes";import{Trustchain as L}from"../../utils/Trustchain";let u=class{constructor(t){this.baseUrl=t}getChallenge(){return this.request("/challenge",l)}authenticate(t){return this.request("/authenticate",l,{method:"POST",body:JSON.stringify(t)}).map(e=>({jwt:e,trustchainId:b.fromNullable(Object.keys(e.permissions).find(r=>!!e.permissions[r]?.["m/"]))}))}getTrustchainById(t,e){return this.request(`/trustchain/${t}`,m(e)).map(r=>new L(t,r))}postDerivation(t,e,r){return this.request(`/trustchain/${t}/derivation`,m(r),{method:"POST",body:JSON.stringify(e.toString())})}putCommands(t,e,r,i){return this.request(`/trustchain/${t}/commands`,m(i),{method:"PUT",body:JSON.stringify({path:e,blocks:[r.toString()]})})}request(t,e,r){const i=this.baseUrl+t,o={...r?.headers,"Content-Type":"application/json",...e.mapOrDefault(({access_token:n})=>({Authorization:`Bearer ${n}`}),{})};return c(()=>fetch(i,{...r,headers:o})).mapLeft(n=>({status:"UNKNOWN",message:h(n)})).chain(async n=>{switch(n.status){case 204:return p(void 0);default:return c(()=>n.json()).mapLeft(h).map(a=>n.ok?p(a):R(h(a))).chain(c.liftEither).mapLeft(a=>({status:P.get(n.status)??"UNKNOWN",message:`[${n.status}] ${a||n.statusText}`}))}}).mapLeft(({status:n,message:a})=>new N({status:n,message:`${a||"Unknown error"} (from: ${i})`}))}};u=g([T(),f(0,S(k.BaseUrl))],u);const P=new Map([[400,"BAD_REQUEST"],[401,"UNAUTHORIZED"]]);function h(s){if(s){if(typeof s!="object"||s.toString!=={}.toString)return String(s);if("message"in s)return String(s.message)}}export{u as HttpLKRPDataSource};
2
2
  //# sourceMappingURL=HttpLKRPDataSource.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/lkrp-datasource/data/HttpLKRPDataSource.ts"],
4
- "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport { EitherAsync, Just, Left, Maybe, Nothing, Right } from \"purify-ts\";\n\nimport {\n LKRPDataSourceError,\n LKRPDataSourceErrorStatus,\n} from \"@api/app-binder/Errors\";\nimport { JWT } from \"@api/app-binder/LKRPTypes\";\nimport { lkrpDatasourceTypes } from \"@internal/lkrp-datasource/di/lkrpDatasourceTypes\";\nimport { LKRPBlock } from \"@internal/utils/LKRPBlock\";\nimport { Trustchain } from \"@internal/utils/Trustchain\";\n\nimport {\n AuthenticationPayload,\n Challenge,\n LKRPDataSource,\n} from \"./LKRPDataSource\";\n\n@injectable()\nexport class HttpLKRPDataSource implements LKRPDataSource {\n constructor(\n @inject(lkrpDatasourceTypes.BaseUrl) private readonly baseUrl: string,\n ) {}\n\n getChallenge() {\n return this.request<Challenge>(\"/challenge\", Nothing);\n }\n\n authenticate(payload: AuthenticationPayload) {\n return this.request<JWT>(\"/authenticate\", Nothing, {\n method: \"POST\",\n body: JSON.stringify(payload),\n }).map((jwt) => ({\n jwt,\n trustchainId: Maybe.fromNullable(\n Object.keys(jwt.permissions).find((id) =>\n Boolean(jwt.permissions[id]?.[\"m/\"]),\n ),\n ),\n }));\n }\n\n getTrustchainById(id: string, jwt: JWT) {\n return this.request<{ [path: string]: string }>(\n `/trustchain/${id}`,\n Just(jwt),\n ).map((serialized) => new Trustchain(id, serialized));\n }\n\n postDerivation(id: string, block: LKRPBlock, jwt: JWT) {\n return this.request<void>(`/trustchain/${id}/derivation`, Just(jwt), {\n method: \"POST\",\n body: JSON.stringify(block.toString()),\n });\n }\n\n putCommands(id: string, path: string, block: LKRPBlock, jwt: JWT) {\n return this.request<void>(`/trustchain/${id}/commands`, Just(jwt), {\n method: \"PUT\",\n body: JSON.stringify({ path, blocks: [block.toString()] }),\n });\n }\n\n private request<Res>(\n endpoint: `/${string}`,\n jwt: Maybe<{ access_token: string }>,\n init?: RequestInit,\n ): EitherAsync<LKRPDataSourceError, Res> {\n const href = this.baseUrl + endpoint;\n const headers = {\n ...init?.headers,\n \"Content-Type\": \"application/json\",\n ...jwt.mapOrDefault<{ Authorization?: string }>(\n ({ access_token }) => ({ Authorization: `Bearer ${access_token}` }),\n {},\n ),\n };\n\n return EitherAsync(() => fetch(href, { ...init, headers }))\n .mapLeft((err) => ({\n status: \"UNKNOWN\" as const,\n message: errToString(err),\n }))\n .chain(async (response) => {\n switch (response.status) {\n case 204:\n return Right(undefined as Res);\n\n default:\n return EitherAsync(() => response.json())\n .mapLeft(errToString)\n .map((data) =>\n response.ok ? Right(data as Res) : Left(errToString(data)),\n )\n .chain(EitherAsync.liftEither)\n .mapLeft((message) => ({\n status: statusMap.get(response.status) ?? \"UNKNOWN\",\n message: `[${response.status}] ${message || response.statusText}`,\n }));\n }\n })\n .mapLeft(\n ({ status, message }) =>\n new LKRPDataSourceError({\n status,\n message: `${message || \"Unknown error\"} (from: ${href})`,\n }),\n );\n }\n}\n\nconst statusMap = new Map<unknown, LKRPDataSourceErrorStatus>([\n [400, \"BAD_REQUEST\"],\n [401, \"UNAUTHORIZED\"],\n]);\n\nfunction errToString(error: unknown): string | void {\n if (!error) return undefined;\n if (typeof error !== \"object\") return String(error);\n if (error.toString !== {}.toString) return String(error);\n if (\"message\" in error) return String(error.message);\n}\n"],
5
- "mappings": "iOAAA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,OAAS,eAAAC,EAAa,QAAAC,EAAM,QAAAC,EAAM,SAAAC,EAAO,WAAAC,EAAS,SAAAC,MAAa,YAE/D,OACE,uBAAAC,MAEK,yBAEP,OAAS,uBAAAC,MAA2B,mDAEpC,OAAS,cAAAC,MAAkB,6BASpB,IAAMC,EAAN,KAAmD,CACxD,YACwDC,EACtD,CADsD,aAAAA,CACrD,CAEH,cAAe,CACb,OAAO,KAAK,QAAmB,aAAcC,CAAO,CACtD,CAEA,aAAaC,EAAgC,CAC3C,OAAO,KAAK,QAAa,gBAAiBD,EAAS,CACjD,OAAQ,OACR,KAAM,KAAK,UAAUC,CAAO,CAC9B,CAAC,EAAE,IAAKC,IAAS,CACf,IAAAA,EACA,aAAcC,EAAM,aAClB,OAAO,KAAKD,EAAI,WAAW,EAAE,KAAME,GACjC,EAAQF,EAAI,YAAYE,CAAE,IAAI,IAAI,CACpC,CACF,CACF,EAAE,CACJ,CAEA,kBAAkBA,EAAYF,EAAU,CACtC,OAAO,KAAK,QACV,eAAeE,CAAE,GACjBC,EAAKH,CAAG,CACV,EAAE,IAAKI,GAAe,IAAIC,EAAWH,EAAIE,CAAU,CAAC,CACtD,CAEA,eAAeF,EAAYI,EAAkBN,EAAU,CACrD,OAAO,KAAK,QAAc,eAAeE,CAAE,cAAeC,EAAKH,CAAG,EAAG,CACnE,OAAQ,OACR,KAAM,KAAK,UAAUM,EAAM,SAAS,CAAC,CACvC,CAAC,CACH,CAEA,YAAYJ,EAAYK,EAAcD,EAAkBN,EAAU,CAChE,OAAO,KAAK,QAAc,eAAeE,CAAE,YAAaC,EAAKH,CAAG,EAAG,CACjE,OAAQ,MACR,KAAM,KAAK,UAAU,CAAE,KAAAO,EAAM,OAAQ,CAACD,EAAM,SAAS,CAAC,CAAE,CAAC,CAC3D,CAAC,CACH,CAEQ,QACNE,EACAR,EACAS,EACuC,CACvC,MAAMC,EAAO,KAAK,QAAUF,EACtBG,EAAU,CACd,GAAGF,GAAM,QACT,eAAgB,mBAChB,GAAGT,EAAI,aACL,CAAC,CAAE,aAAAY,CAAa,KAAO,CAAE,cAAe,UAAUA,CAAY,EAAG,GACjE,CAAC,CACH,CACF,EAEA,OAAOC,EAAY,IAAM,MAAMH,EAAM,CAAE,GAAGD,EAAM,QAAAE,CAAQ,CAAC,CAAC,EACvD,QAASG,IAAS,CACjB,OAAQ,UACR,QAASC,EAAYD,CAAG,CAC1B,EAAE,EACD,MAAM,MAAOE,GAAa,CACzB,OAAQA,EAAS,OAAQ,CACvB,IAAK,KACH,OAAOC,EAAM,MAAgB,EAE/B,QACE,OAAOJ,EAAY,IAAMG,EAAS,KAAK,CAAC,EACrC,QAAQD,CAAW,EACnB,IAAKG,GACJF,EAAS,GAAKC,EAAMC,CAAW,EAAIC,EAAKJ,EAAYG,CAAI,CAAC,CAC3D,EACC,MAAML,EAAY,UAAU,EAC5B,QAASO,IAAa,CACrB,OAAQC,EAAU,IAAIL,EAAS,MAAM,GAAK,UAC1C,QAAS,IAAIA,EAAS,MAAM,KAAKI,GAAWJ,EAAS,UAAU,EACjE,EAAE,CACR,CACF,CAAC,EACA,QACC,CAAC,CAAE,OAAAM,EAAQ,QAAAF,CAAQ,IACjB,IAAIG,EAAoB,CACtB,OAAAD,EACA,QAAS,GAAGF,GAAW,eAAe,WAAWV,CAAI,GACvD,CAAC,CACL,CACJ,CACF,EA1Fad,EAAN4B,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAoB,OAAO,IAF1BhC,GA4Fb,MAAMyB,EAAY,IAAI,IAAwC,CAC5D,CAAC,IAAK,aAAa,EACnB,CAAC,IAAK,cAAc,CACtB,CAAC,EAED,SAASN,EAAYc,EAA+B,CAClD,GAAKA,EAEL,IADI,OAAOA,GAAU,UACjBA,EAAM,WAAa,CAAC,EAAE,SAAU,OAAO,OAAOA,CAAK,EACvD,GAAI,YAAaA,EAAO,OAAO,OAAOA,EAAM,OAAO,EACrD",
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport { EitherAsync, Just, Left, Maybe, Nothing, Right } from \"purify-ts\";\n\nimport {\n LKRPDataSourceError,\n LKRPDataSourceErrorStatus,\n} from \"@api/model/Errors\";\nimport { JWT } from \"@api/model/JWT\";\nimport { lkrpDatasourceTypes } from \"@internal/lkrp-datasource/di/lkrpDatasourceTypes\";\nimport { LKRPBlock } from \"@internal/utils/LKRPBlock\";\nimport { Trustchain } from \"@internal/utils/Trustchain\";\n\nimport {\n AuthenticationPayload,\n Challenge,\n LKRPDataSource,\n} from \"./LKRPDataSource\";\n\n@injectable()\nexport class HttpLKRPDataSource implements LKRPDataSource {\n constructor(\n @inject(lkrpDatasourceTypes.BaseUrl) private readonly baseUrl: string,\n ) {}\n\n getChallenge() {\n return this.request<Challenge>(\"/challenge\", Nothing);\n }\n\n authenticate(payload: AuthenticationPayload) {\n return this.request<JWT>(\"/authenticate\", Nothing, {\n method: \"POST\",\n body: JSON.stringify(payload),\n }).map((jwt) => ({\n jwt,\n trustchainId: Maybe.fromNullable(\n Object.keys(jwt.permissions).find((id) =>\n Boolean(jwt.permissions[id]?.[\"m/\"]),\n ),\n ),\n }));\n }\n\n getTrustchainById(id: string, jwt: JWT) {\n return this.request<{ [path: string]: string }>(\n `/trustchain/${id}`,\n Just(jwt),\n ).map((serialized) => new Trustchain(id, serialized));\n }\n\n postDerivation(id: string, block: LKRPBlock, jwt: JWT) {\n return this.request<void>(`/trustchain/${id}/derivation`, Just(jwt), {\n method: \"POST\",\n body: JSON.stringify(block.toString()),\n });\n }\n\n putCommands(id: string, path: string, block: LKRPBlock, jwt: JWT) {\n return this.request<void>(`/trustchain/${id}/commands`, Just(jwt), {\n method: \"PUT\",\n body: JSON.stringify({ path, blocks: [block.toString()] }),\n });\n }\n\n private request<Res>(\n endpoint: `/${string}`,\n jwt: Maybe<{ access_token: string }>,\n init?: RequestInit,\n ): EitherAsync<LKRPDataSourceError, Res> {\n const href = this.baseUrl + endpoint;\n const headers = {\n ...init?.headers,\n \"Content-Type\": \"application/json\",\n ...jwt.mapOrDefault<{ Authorization?: string }>(\n ({ access_token }) => ({ Authorization: `Bearer ${access_token}` }),\n {},\n ),\n };\n\n return EitherAsync(() => fetch(href, { ...init, headers }))\n .mapLeft((err) => ({\n status: \"UNKNOWN\" as const,\n message: errToString(err),\n }))\n .chain(async (response) => {\n switch (response.status) {\n case 204:\n return Right(undefined as Res);\n\n default:\n return EitherAsync(() => response.json())\n .mapLeft(errToString)\n .map((data) =>\n response.ok ? Right(data as Res) : Left(errToString(data)),\n )\n .chain(EitherAsync.liftEither)\n .mapLeft((message) => ({\n status: statusMap.get(response.status) ?? \"UNKNOWN\",\n message: `[${response.status}] ${message || response.statusText}`,\n }));\n }\n })\n .mapLeft(\n ({ status, message }) =>\n new LKRPDataSourceError({\n status,\n message: `${message || \"Unknown error\"} (from: ${href})`,\n }),\n );\n }\n}\n\nconst statusMap = new Map<unknown, LKRPDataSourceErrorStatus>([\n [400, \"BAD_REQUEST\"],\n [401, \"UNAUTHORIZED\"],\n]);\n\nfunction errToString(error: unknown): string | void {\n if (!error) return undefined;\n if (typeof error !== \"object\") return String(error);\n if (error.toString !== {}.toString) return String(error);\n if (\"message\" in error) return String(error.message);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["inject", "injectable", "EitherAsync", "Just", "Left", "Maybe", "Nothing", "Right", "LKRPDataSourceError", "lkrpDatasourceTypes", "Trustchain", "HttpLKRPDataSource", "baseUrl", "Nothing", "payload", "jwt", "Maybe", "id", "Just", "serialized", "Trustchain", "block", "path", "endpoint", "init", "href", "headers", "access_token", "EitherAsync", "err", "errToString", "response", "Right", "data", "Left", "message", "statusMap", "status", "LKRPDataSourceError", "__decorateClass", "injectable", "__decorateParam", "inject", "lkrpDatasourceTypes", "error"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Just as p,Left as d,Nothing as b,Right as r}from"purify-ts";import{LKRPDataSourceError as h}from"../../../api/app-binder/Errors";import{LKRPBlock as m}from"../../utils/LKRPBlock";import{Trustchain as S}from"../../utils/Trustchain";import{HttpLKRPDataSource as c}from"./HttpLKRPDataSource";const n={access_token:"ACCESS TOKEN",permissions:{TRUSTCHAIN_ID:{"m/":["owner"]}}},i={version:0,challenge:{data:"1010101010010101010",expiry:"2025-06-30T10:00:00Z"},host:"example.com",rp:[{credential:{version:0,curveId:33,signAlgorithm:1,publicKey:"aaaaaaaaaaaaaaaaaaaaaaaaaa"},signature:"abababababababab"}],protocolVersion:{major:1,minor:0,patch:0}},u={credential:{version:0,curveId:33,signAlgorithm:1,publicKey:"bbbbbbbbbbbbbbbbbbbbbbbbbbb"},signature:"acacacacacacacac",attestation:"0000000000000000"};describe("HttpLKRPDataSource",()=>{const a=vi.spyOn(global,"fetch"),t="https://example.com";afterEach(()=>{a.mockClear()}),describe("getChallenge",()=>{it("should fetch challenge successfully",async()=>{const e={tlv:"0f1234567890",json:i};a.mockResolvedValueOnce({ok:!0,json:()=>Promise.resolve(e)});const s=await new c(t).getChallenge();expect(a).toHaveBeenCalledWith(`${t}/challenge`,{headers:{"Content-Type":"application/json"}}),expect(s).toEqual(r(e))}),it("should handle fetch error",async()=>{const e={status:"UNKNOWN",message:"Random error"};a.mockRejectedValueOnce(e);const s=await new c(t).getChallenge();expect(s).toEqual(d(new h({status:"UNKNOWN",message:`Random error (from: ${t}/challenge)`})))})}),describe("authenticate",()=>{it("should fetch a JWT when the authentication is successful",async()=>{a.mockResolvedValueOnce({ok:!0,json:()=>Promise.resolve(n)});const o=await new c(t).authenticate({challenge:i,signature:u});expect(a).toHaveBeenCalledWith(`${t}/authenticate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({challenge:i,signature:u})}),expect(o).toEqual(r({jwt:n,trustchainId:p("TRUSTCHAIN_ID")}))}),it("should return no trustchainId the returned JWT does not contain one",async()=>{const e={access_token:"ACCESS TOKEN",permissions:{}};a.mockResolvedValueOnce({ok:!0,json:()=>Promise.resolve(e)});const s=await new c(t).authenticate({challenge:i,signature:u});expect(s).toEqual(r({jwt:e,trustchainId:b}))}),it("should handle authentication error",async()=>{a.mockResolvedValueOnce({ok:!1,status:401,statusText:"Unauthorized",json:()=>Promise.resolve({message:"Unauthorized access"})});const o=await new c(t).authenticate({challenge:i,signature:u});expect(o).toEqual(d(new h({status:"UNAUTHORIZED",message:`[401] Unauthorized access (from: ${t}/authenticate)`})))})}),describe("getTrustchainById",()=>{it("should fetch trustchain by ID successfully",async()=>{const e={"m/":"0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1e1d","m/16'":"1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b"};a.mockResolvedValueOnce({ok:!0,json:()=>Promise.resolve(e)});const s=await new c(t).getTrustchainById("TRUSTCHAIN_ID",n);expect(a).toHaveBeenCalledWith(`${t}/trustchain/TRUSTCHAIN_ID`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${n.access_token}`}}),expect(s).toEqual(r(new S("TRUSTCHAIN_ID",e)))}),it("should handle errors",async()=>{a.mockResolvedValueOnce({ok:!1,status:500,statusText:"Internal Server Error",json:()=>Promise.resolve({})});const o=await new c(t).getTrustchainById("TRUSTCHAIN_ID",n);expect(o).toEqual(d(new h({status:"UNKNOWN",message:`[500] Internal Server Error (from: ${t}/trustchain/TRUSTCHAIN_ID)`})))})}),describe("postDerivation",()=>{it("should post derivation successfully",async()=>{const e="0102030405060708090a0b0c0d0e0f",o=m.fromHex(e);a.mockResolvedValueOnce({ok:!0,status:204});const l=await new c(t).postDerivation("TRUSTCHAIN_ID",o,n);expect(a).toHaveBeenCalledWith(`${t}/trustchain/TRUSTCHAIN_ID/derivation`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${n.access_token}`},body:JSON.stringify(e)}),expect(l).toEqual(r(void 0))})}),describe("putCommands",()=>{it("should put commands successfully",async()=>{const e="0102030405060708090a0b0c0d0e0f",o=m.fromHex(e);a.mockResolvedValueOnce({ok:!0,status:204});const l=await new c(t).putCommands("TRUSTCHAIN_ID","m/0'/16'/0'",o,n);expect(a).toHaveBeenCalledWith(`${t}/trustchain/TRUSTCHAIN_ID/commands`,{method:"PUT",headers:{"Content-Type":"application/json",Authorization:`Bearer ${n.access_token}`},body:JSON.stringify({path:"m/0'/16'/0'",blocks:[e]})}),expect(l).toEqual(r(void 0))})})});
1
+ import{Just as p,Left as d,Nothing as b,Right as r}from"purify-ts";import{LKRPDataSourceError as h}from"../../../api/model/Errors";import{LKRPBlock as m}from"../../utils/LKRPBlock";import{Trustchain as S}from"../../utils/Trustchain";import{HttpLKRPDataSource as c}from"./HttpLKRPDataSource";const n={access_token:"ACCESS TOKEN",permissions:{TRUSTCHAIN_ID:{"m/":["owner"]}}},i={version:0,challenge:{data:"1010101010010101010",expiry:"2025-06-30T10:00:00Z"},host:"example.com",rp:[{credential:{version:0,curveId:33,signAlgorithm:1,publicKey:"aaaaaaaaaaaaaaaaaaaaaaaaaa"},signature:"abababababababab"}],protocolVersion:{major:1,minor:0,patch:0}},u={credential:{version:0,curveId:33,signAlgorithm:1,publicKey:"bbbbbbbbbbbbbbbbbbbbbbbbbbb"},signature:"acacacacacacacac",attestation:"0000000000000000"};describe("HttpLKRPDataSource",()=>{const a=vi.spyOn(global,"fetch"),t="https://example.com";afterEach(()=>{a.mockClear()}),describe("getChallenge",()=>{it("should fetch challenge successfully",async()=>{const e={tlv:"0f1234567890",json:i};a.mockResolvedValueOnce({ok:!0,json:()=>Promise.resolve(e)});const s=await new c(t).getChallenge();expect(a).toHaveBeenCalledWith(`${t}/challenge`,{headers:{"Content-Type":"application/json"}}),expect(s).toEqual(r(e))}),it("should handle fetch error",async()=>{const e={status:"UNKNOWN",message:"Random error"};a.mockRejectedValueOnce(e);const s=await new c(t).getChallenge();expect(s).toEqual(d(new h({status:"UNKNOWN",message:`Random error (from: ${t}/challenge)`})))})}),describe("authenticate",()=>{it("should fetch a JWT when the authentication is successful",async()=>{a.mockResolvedValueOnce({ok:!0,json:()=>Promise.resolve(n)});const o=await new c(t).authenticate({challenge:i,signature:u});expect(a).toHaveBeenCalledWith(`${t}/authenticate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({challenge:i,signature:u})}),expect(o).toEqual(r({jwt:n,trustchainId:p("TRUSTCHAIN_ID")}))}),it("should return no trustchainId the returned JWT does not contain one",async()=>{const e={access_token:"ACCESS TOKEN",permissions:{}};a.mockResolvedValueOnce({ok:!0,json:()=>Promise.resolve(e)});const s=await new c(t).authenticate({challenge:i,signature:u});expect(s).toEqual(r({jwt:e,trustchainId:b}))}),it("should handle authentication error",async()=>{a.mockResolvedValueOnce({ok:!1,status:401,statusText:"Unauthorized",json:()=>Promise.resolve({message:"Unauthorized access"})});const o=await new c(t).authenticate({challenge:i,signature:u});expect(o).toEqual(d(new h({status:"UNAUTHORIZED",message:`[401] Unauthorized access (from: ${t}/authenticate)`})))})}),describe("getTrustchainById",()=>{it("should fetch trustchain by ID successfully",async()=>{const e={"m/":"0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1e1d","m/16'":"1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b"};a.mockResolvedValueOnce({ok:!0,json:()=>Promise.resolve(e)});const s=await new c(t).getTrustchainById("TRUSTCHAIN_ID",n);expect(a).toHaveBeenCalledWith(`${t}/trustchain/TRUSTCHAIN_ID`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${n.access_token}`}}),expect(s).toEqual(r(new S("TRUSTCHAIN_ID",e)))}),it("should handle errors",async()=>{a.mockResolvedValueOnce({ok:!1,status:500,statusText:"Internal Server Error",json:()=>Promise.resolve({})});const o=await new c(t).getTrustchainById("TRUSTCHAIN_ID",n);expect(o).toEqual(d(new h({status:"UNKNOWN",message:`[500] Internal Server Error (from: ${t}/trustchain/TRUSTCHAIN_ID)`})))})}),describe("postDerivation",()=>{it("should post derivation successfully",async()=>{const e="0102030405060708090a0b0c0d0e0f",o=m.fromHex(e);a.mockResolvedValueOnce({ok:!0,status:204});const l=await new c(t).postDerivation("TRUSTCHAIN_ID",o,n);expect(a).toHaveBeenCalledWith(`${t}/trustchain/TRUSTCHAIN_ID/derivation`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${n.access_token}`},body:JSON.stringify(e)}),expect(l).toEqual(r(void 0))})}),describe("putCommands",()=>{it("should put commands successfully",async()=>{const e="0102030405060708090a0b0c0d0e0f",o=m.fromHex(e);a.mockResolvedValueOnce({ok:!0,status:204});const l=await new c(t).putCommands("TRUSTCHAIN_ID","m/0'/16'/0'",o,n);expect(a).toHaveBeenCalledWith(`${t}/trustchain/TRUSTCHAIN_ID/commands`,{method:"PUT",headers:{"Content-Type":"application/json",Authorization:`Bearer ${n.access_token}`},body:JSON.stringify({path:"m/0'/16'/0'",blocks:[e]})}),expect(l).toEqual(r(void 0))})})});
2
2
  //# sourceMappingURL=HttpLKRPDataSource.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/lkrp-datasource/data/HttpLKRPDataSource.test.ts"],
4
- "sourcesContent": ["import { Just, Left, Nothing, Right } from \"purify-ts\";\n\nimport { LKRPDataSourceError } from \"@api/app-binder/Errors\";\nimport { LKRPBlock } from \"@internal/utils/LKRPBlock\";\nimport { Trustchain } from \"@internal/utils/Trustchain\";\n\nimport { HttpLKRPDataSource } from \"./HttpLKRPDataSource\";\n\nconst mockJwt = {\n access_token: \"ACCESS TOKEN\",\n permissions: { TRUSTCHAIN_ID: { \"m/\": [\"owner\"] } },\n};\n\nconst mockChallengeJSON = {\n version: 0,\n challenge: {\n data: \"1010101010010101010\",\n expiry: \"2025-06-30T10:00:00Z\",\n },\n host: \"example.com\",\n rp: [\n {\n credential: {\n version: 0,\n curveId: 33,\n signAlgorithm: 1,\n publicKey: \"aaaaaaaaaaaaaaaaaaaaaaaaaa\",\n },\n signature: \"abababababababab\",\n },\n ],\n protocolVersion: { major: 1, minor: 0, patch: 0 },\n};\n\nconst mockSignature = {\n credential: {\n version: 0,\n curveId: 33,\n signAlgorithm: 1,\n publicKey: \"bbbbbbbbbbbbbbbbbbbbbbbbbbb\",\n },\n signature: \"acacacacacacacac\",\n attestation: \"0000000000000000\",\n};\n\ndescribe(\"HttpLKRPDataSource\", () => {\n const fetchSpy = vi.spyOn(global, \"fetch\");\n const baseUrl = \"https://example.com\";\n\n afterEach(() => {\n fetchSpy.mockClear();\n });\n\n describe(\"getChallenge\", () => {\n it(\"should fetch challenge successfully\", async () => {\n // GIVEN\n const mockChallenge = {\n tlv: \"0f1234567890\",\n json: mockChallengeJSON,\n };\n\n fetchSpy.mockResolvedValueOnce({\n ok: true,\n json: () => Promise.resolve(mockChallenge),\n } as Response);\n\n // WHEN\n const dataSource = new HttpLKRPDataSource(baseUrl);\n const result = await dataSource.getChallenge();\n expect(fetchSpy).toHaveBeenCalledWith(`${baseUrl}/challenge`, {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n\n // THEN\n expect(result).toEqual(Right(mockChallenge));\n });\n\n it(\"should handle fetch error\", async () => {\n // GIVEN\n const error = { status: \"UNKNOWN\", message: \"Random error\" } as const;\n fetchSpy.mockRejectedValueOnce(error);\n\n // WHEN\n const dataSource = new HttpLKRPDataSource(baseUrl);\n const result = await dataSource.getChallenge();\n\n // THEN\n expect(result).toEqual(\n Left(\n new LKRPDataSourceError({\n status: \"UNKNOWN\",\n message: `Random error (from: ${baseUrl}/challenge)`,\n }),\n ),\n );\n });\n });\n\n describe(\"authenticate\", () => {\n it(\"should fetch a JWT when the authentication is successful\", async () => {\n // GIVEN\n fetchSpy.mockResolvedValueOnce({\n ok: true,\n json: () => Promise.resolve(mockJwt),\n } as Response);\n\n // WHEN\n const dataSource = new HttpLKRPDataSource(baseUrl);\n const result = await dataSource.authenticate({\n challenge: mockChallengeJSON,\n signature: mockSignature,\n });\n\n // THEN\n expect(fetchSpy).toHaveBeenCalledWith(`${baseUrl}/authenticate`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n challenge: mockChallengeJSON,\n signature: mockSignature,\n }),\n });\n expect(result).toEqual(\n Right({ jwt: mockJwt, trustchainId: Just(\"TRUSTCHAIN_ID\") }),\n );\n });\n\n it(\"should return no trustchainId the returned JWT does not contain one\", async () => {\n // GIVEN\n const jwtWithoutTrustchainId = {\n access_token: \"ACCESS TOKEN\",\n permissions: {},\n };\n fetchSpy.mockResolvedValueOnce({\n ok: true,\n json: () => Promise.resolve(jwtWithoutTrustchainId),\n } as Response);\n\n // WHEN\n const dataSource = new HttpLKRPDataSource(baseUrl);\n const result = await dataSource.authenticate({\n challenge: mockChallengeJSON,\n signature: mockSignature,\n });\n\n // THEN\n expect(result).toEqual(\n Right({ jwt: jwtWithoutTrustchainId, trustchainId: Nothing }),\n );\n });\n\n it(\"should handle authentication error\", async () => {\n // GIVEN\n fetchSpy.mockResolvedValueOnce({\n ok: false,\n status: 401,\n statusText: \"Unauthorized\",\n json: () => Promise.resolve({ message: \"Unauthorized access\" }),\n } as Response);\n\n // WHEN\n const dataSource = new HttpLKRPDataSource(baseUrl);\n const result = await dataSource.authenticate({\n challenge: mockChallengeJSON,\n signature: mockSignature,\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new LKRPDataSourceError({\n status: \"UNAUTHORIZED\",\n message: `[401] Unauthorized access (from: ${baseUrl}/authenticate)`,\n }),\n ),\n );\n });\n });\n\n describe(\"getTrustchainById\", () => {\n it(\"should fetch trustchain by ID successfully\", async () => {\n // GIVEN\n const mockTrustchainData = {\n \"m/\": \"0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1e1d\",\n \"m/16'\": \"1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b\",\n };\n fetchSpy.mockResolvedValueOnce({\n ok: true,\n json: () => Promise.resolve(mockTrustchainData),\n } as Response);\n\n // WHEN\n const dataSource = new HttpLKRPDataSource(baseUrl);\n const result = await dataSource.getTrustchainById(\n \"TRUSTCHAIN_ID\",\n mockJwt,\n );\n\n // THEN\n expect(fetchSpy).toHaveBeenCalledWith(\n `${baseUrl}/trustchain/TRUSTCHAIN_ID`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${mockJwt.access_token}`,\n },\n },\n );\n expect(result).toEqual(\n Right(new Trustchain(\"TRUSTCHAIN_ID\", mockTrustchainData)),\n );\n });\n\n it(\"should handle errors\", async () => {\n // GIVEN\n fetchSpy.mockResolvedValueOnce({\n ok: false,\n status: 500,\n statusText: \"Internal Server Error\",\n json: () => Promise.resolve({}),\n } as Response);\n\n // WHEN\n const dataSource = new HttpLKRPDataSource(baseUrl);\n const result = await dataSource.getTrustchainById(\n \"TRUSTCHAIN_ID\",\n mockJwt,\n );\n\n // THEN\n expect(result).toEqual(\n Left(\n new LKRPDataSourceError({\n status: \"UNKNOWN\",\n message: `[500] Internal Server Error (from: ${baseUrl}/trustchain/TRUSTCHAIN_ID)`,\n }),\n ),\n );\n });\n });\n\n describe(\"postDerivation\", () => {\n it(\"should post derivation successfully\", async () => {\n // GIVEN\n const hex = \"0102030405060708090a0b0c0d0e0f\";\n const mockBlock = LKRPBlock.fromHex(hex);\n fetchSpy.mockResolvedValueOnce({\n ok: true,\n status: 204,\n } as Response);\n\n // WHEN\n const dataSource = new HttpLKRPDataSource(baseUrl);\n const result = await dataSource.postDerivation(\n \"TRUSTCHAIN_ID\",\n mockBlock,\n mockJwt,\n );\n\n // THEN\n expect(fetchSpy).toHaveBeenCalledWith(\n `${baseUrl}/trustchain/TRUSTCHAIN_ID/derivation`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${mockJwt.access_token}`,\n },\n body: JSON.stringify(hex),\n },\n );\n expect(result).toEqual(Right(undefined));\n });\n });\n\n describe(\"putCommands\", () => {\n it(\"should put commands successfully\", async () => {\n // GIVEN\n const hex = \"0102030405060708090a0b0c0d0e0f\";\n const mockBlock = LKRPBlock.fromHex(hex);\n fetchSpy.mockResolvedValueOnce({\n ok: true,\n status: 204,\n } as Response);\n\n // WHEN\n const dataSource = new HttpLKRPDataSource(baseUrl);\n const result = await dataSource.putCommands(\n \"TRUSTCHAIN_ID\",\n \"m/0'/16'/0'\",\n mockBlock,\n mockJwt,\n );\n\n // THEN\n expect(fetchSpy).toHaveBeenCalledWith(\n `${baseUrl}/trustchain/TRUSTCHAIN_ID/commands`,\n {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${mockJwt.access_token}`,\n },\n body: JSON.stringify({ path: \"m/0'/16'/0'\", blocks: [hex] }),\n },\n );\n expect(result).toEqual(Right(undefined));\n });\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Just, Left, Nothing, Right } from \"purify-ts\";\n\nimport { LKRPDataSourceError } from \"@api/model/Errors\";\nimport { LKRPBlock } from \"@internal/utils/LKRPBlock\";\nimport { Trustchain } from \"@internal/utils/Trustchain\";\n\nimport { HttpLKRPDataSource } from \"./HttpLKRPDataSource\";\n\nconst mockJwt = {\n access_token: \"ACCESS TOKEN\",\n permissions: { TRUSTCHAIN_ID: { \"m/\": [\"owner\"] } },\n};\n\nconst mockChallengeJSON = {\n version: 0,\n challenge: {\n data: \"1010101010010101010\",\n expiry: \"2025-06-30T10:00:00Z\",\n },\n host: \"example.com\",\n rp: [\n {\n credential: {\n version: 0,\n curveId: 33,\n signAlgorithm: 1,\n publicKey: \"aaaaaaaaaaaaaaaaaaaaaaaaaa\",\n },\n signature: \"abababababababab\",\n },\n ],\n protocolVersion: { major: 1, minor: 0, patch: 0 },\n};\n\nconst mockSignature = {\n credential: {\n version: 0,\n curveId: 33,\n signAlgorithm: 1,\n publicKey: \"bbbbbbbbbbbbbbbbbbbbbbbbbbb\",\n },\n signature: \"acacacacacacacac\",\n attestation: \"0000000000000000\",\n};\n\ndescribe(\"HttpLKRPDataSource\", () => {\n const fetchSpy = vi.spyOn(global, \"fetch\");\n const baseUrl = \"https://example.com\";\n\n afterEach(() => {\n fetchSpy.mockClear();\n });\n\n describe(\"getChallenge\", () => {\n it(\"should fetch challenge successfully\", async () => {\n // GIVEN\n const mockChallenge = {\n tlv: \"0f1234567890\",\n json: mockChallengeJSON,\n };\n\n fetchSpy.mockResolvedValueOnce({\n ok: true,\n json: () => Promise.resolve(mockChallenge),\n } as Response);\n\n // WHEN\n const dataSource = new HttpLKRPDataSource(baseUrl);\n const result = await dataSource.getChallenge();\n expect(fetchSpy).toHaveBeenCalledWith(`${baseUrl}/challenge`, {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n\n // THEN\n expect(result).toEqual(Right(mockChallenge));\n });\n\n it(\"should handle fetch error\", async () => {\n // GIVEN\n const error = { status: \"UNKNOWN\", message: \"Random error\" } as const;\n fetchSpy.mockRejectedValueOnce(error);\n\n // WHEN\n const dataSource = new HttpLKRPDataSource(baseUrl);\n const result = await dataSource.getChallenge();\n\n // THEN\n expect(result).toEqual(\n Left(\n new LKRPDataSourceError({\n status: \"UNKNOWN\",\n message: `Random error (from: ${baseUrl}/challenge)`,\n }),\n ),\n );\n });\n });\n\n describe(\"authenticate\", () => {\n it(\"should fetch a JWT when the authentication is successful\", async () => {\n // GIVEN\n fetchSpy.mockResolvedValueOnce({\n ok: true,\n json: () => Promise.resolve(mockJwt),\n } as Response);\n\n // WHEN\n const dataSource = new HttpLKRPDataSource(baseUrl);\n const result = await dataSource.authenticate({\n challenge: mockChallengeJSON,\n signature: mockSignature,\n });\n\n // THEN\n expect(fetchSpy).toHaveBeenCalledWith(`${baseUrl}/authenticate`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n challenge: mockChallengeJSON,\n signature: mockSignature,\n }),\n });\n expect(result).toEqual(\n Right({ jwt: mockJwt, trustchainId: Just(\"TRUSTCHAIN_ID\") }),\n );\n });\n\n it(\"should return no trustchainId the returned JWT does not contain one\", async () => {\n // GIVEN\n const jwtWithoutTrustchainId = {\n access_token: \"ACCESS TOKEN\",\n permissions: {},\n };\n fetchSpy.mockResolvedValueOnce({\n ok: true,\n json: () => Promise.resolve(jwtWithoutTrustchainId),\n } as Response);\n\n // WHEN\n const dataSource = new HttpLKRPDataSource(baseUrl);\n const result = await dataSource.authenticate({\n challenge: mockChallengeJSON,\n signature: mockSignature,\n });\n\n // THEN\n expect(result).toEqual(\n Right({ jwt: jwtWithoutTrustchainId, trustchainId: Nothing }),\n );\n });\n\n it(\"should handle authentication error\", async () => {\n // GIVEN\n fetchSpy.mockResolvedValueOnce({\n ok: false,\n status: 401,\n statusText: \"Unauthorized\",\n json: () => Promise.resolve({ message: \"Unauthorized access\" }),\n } as Response);\n\n // WHEN\n const dataSource = new HttpLKRPDataSource(baseUrl);\n const result = await dataSource.authenticate({\n challenge: mockChallengeJSON,\n signature: mockSignature,\n });\n\n // THEN\n expect(result).toEqual(\n Left(\n new LKRPDataSourceError({\n status: \"UNAUTHORIZED\",\n message: `[401] Unauthorized access (from: ${baseUrl}/authenticate)`,\n }),\n ),\n );\n });\n });\n\n describe(\"getTrustchainById\", () => {\n it(\"should fetch trustchain by ID successfully\", async () => {\n // GIVEN\n const mockTrustchainData = {\n \"m/\": \"0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1e1d\",\n \"m/16'\": \"1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b\",\n };\n fetchSpy.mockResolvedValueOnce({\n ok: true,\n json: () => Promise.resolve(mockTrustchainData),\n } as Response);\n\n // WHEN\n const dataSource = new HttpLKRPDataSource(baseUrl);\n const result = await dataSource.getTrustchainById(\n \"TRUSTCHAIN_ID\",\n mockJwt,\n );\n\n // THEN\n expect(fetchSpy).toHaveBeenCalledWith(\n `${baseUrl}/trustchain/TRUSTCHAIN_ID`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${mockJwt.access_token}`,\n },\n },\n );\n expect(result).toEqual(\n Right(new Trustchain(\"TRUSTCHAIN_ID\", mockTrustchainData)),\n );\n });\n\n it(\"should handle errors\", async () => {\n // GIVEN\n fetchSpy.mockResolvedValueOnce({\n ok: false,\n status: 500,\n statusText: \"Internal Server Error\",\n json: () => Promise.resolve({}),\n } as Response);\n\n // WHEN\n const dataSource = new HttpLKRPDataSource(baseUrl);\n const result = await dataSource.getTrustchainById(\n \"TRUSTCHAIN_ID\",\n mockJwt,\n );\n\n // THEN\n expect(result).toEqual(\n Left(\n new LKRPDataSourceError({\n status: \"UNKNOWN\",\n message: `[500] Internal Server Error (from: ${baseUrl}/trustchain/TRUSTCHAIN_ID)`,\n }),\n ),\n );\n });\n });\n\n describe(\"postDerivation\", () => {\n it(\"should post derivation successfully\", async () => {\n // GIVEN\n const hex = \"0102030405060708090a0b0c0d0e0f\";\n const mockBlock = LKRPBlock.fromHex(hex);\n fetchSpy.mockResolvedValueOnce({\n ok: true,\n status: 204,\n } as Response);\n\n // WHEN\n const dataSource = new HttpLKRPDataSource(baseUrl);\n const result = await dataSource.postDerivation(\n \"TRUSTCHAIN_ID\",\n mockBlock,\n mockJwt,\n );\n\n // THEN\n expect(fetchSpy).toHaveBeenCalledWith(\n `${baseUrl}/trustchain/TRUSTCHAIN_ID/derivation`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${mockJwt.access_token}`,\n },\n body: JSON.stringify(hex),\n },\n );\n expect(result).toEqual(Right(undefined));\n });\n });\n\n describe(\"putCommands\", () => {\n it(\"should put commands successfully\", async () => {\n // GIVEN\n const hex = \"0102030405060708090a0b0c0d0e0f\";\n const mockBlock = LKRPBlock.fromHex(hex);\n fetchSpy.mockResolvedValueOnce({\n ok: true,\n status: 204,\n } as Response);\n\n // WHEN\n const dataSource = new HttpLKRPDataSource(baseUrl);\n const result = await dataSource.putCommands(\n \"TRUSTCHAIN_ID\",\n \"m/0'/16'/0'\",\n mockBlock,\n mockJwt,\n );\n\n // THEN\n expect(fetchSpy).toHaveBeenCalledWith(\n `${baseUrl}/trustchain/TRUSTCHAIN_ID/commands`,\n {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${mockJwt.access_token}`,\n },\n body: JSON.stringify({ path: \"m/0'/16'/0'\", blocks: [hex] }),\n },\n );\n expect(result).toEqual(Right(undefined));\n });\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["Just", "Left", "Nothing", "Right", "LKRPDataSourceError", "LKRPBlock", "Trustchain", "HttpLKRPDataSource", "mockJwt", "mockChallengeJSON", "mockSignature", "fetchSpy", "baseUrl", "mockChallenge", "result", "error", "jwtWithoutTrustchainId", "mockTrustchainData", "hex", "mockBlock"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var d=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var c=(n,e,r,t)=>{for(var i=t>1?void 0:t?m(e,r):e,s=n.length-1,a;s>=0;s--)(a=n[s])&&(i=(t?a(e,r,i):a(i))||i);return t&&i&&d(e,r,i),i},p=(n,e)=>(r,t)=>e(r,t,n);import{DeviceActionStatus as u}from"@ledgerhq/device-management-kit";import{inject as f,injectable as h}from"inversify";import{of as I}from"rxjs";import{LKRPMissingDataError as y}from"../../../api/app-binder/Errors";import{appBinderTypes as g}from"../../app-binder/di/appBinderTypes";let o=class{constructor(e){this.appBinder=e}execute(e){if(e.trustchainId)return this.appBinder.authenticateWithKeypair(e);const r=e.sessionId;return r?this.appBinder.authenticateWithDevice({...e,sessionId:r}):{observable:I({status:u.Error,error:new y("Either a trustchainId or a device is required for authentication.")}),cancel:()=>{}}}};o=c([h(),p(0,f(g.AppBinding))],o);export{o as AuthenticateUseCase};
1
+ var d=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var c=(n,e,r,t)=>{for(var i=t>1?void 0:t?m(e,r):e,s=n.length-1,a;s>=0;s--)(a=n[s])&&(i=(t?a(e,r,i):a(i))||i);return t&&i&&d(e,r,i),i},p=(n,e)=>(r,t)=>e(r,t,n);import{DeviceActionStatus as u}from"@ledgerhq/device-management-kit";import{inject as f,injectable as h}from"inversify";import{of as I}from"rxjs";import{LKRPMissingDataError as y}from"../../../api/model/Errors";import{appBinderTypes as g}from"../../app-binder/di/appBinderTypes";let o=class{constructor(e){this.appBinder=e}execute(e){if(e.trustchainId)return this.appBinder.authenticateWithKeypair(e);const r=e.sessionId;return r?this.appBinder.authenticateWithDevice({...e,sessionId:r}):{observable:I({status:u.Error,error:new y("Either a trustchainId or a device is required for authentication.")}),cancel:()=>{}}}};o=c([h(),p(0,f(g.AppBinding))],o);export{o as AuthenticateUseCase};
2
2
  //# sourceMappingURL=AuthenticateUseCase.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/use-cases/authentication/AuthenticateUseCase.ts"],
4
- "sourcesContent": ["import {\n DeviceActionStatus,\n DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { of } from \"rxjs\";\n\nimport { AuthenticateDAReturnType } from \"@api/app-binder/AuthenticateDeviceActionTypes\";\nimport { LKRPMissingDataError } from \"@api/app-binder/Errors\";\nimport { Keypair, Permissions } from \"@api/app-binder/LKRPTypes\";\nimport { appBinderTypes } from \"@internal/app-binder/di/appBinderTypes\";\nimport { LedgerKeyringProtocolBinder } from \"@internal/app-binder/LedgerKeyringProtocolBinder\";\n\nexport type AuthenticateUsecaseInput = {\n keypair: Keypair;\n clientName: string;\n permissions: Permissions;\n} & (\n | { trustchainId: string; sessionId?: DeviceSessionId }\n | { trustchainId?: undefined; sessionId: DeviceSessionId }\n);\n\n@injectable()\nexport class AuthenticateUseCase {\n constructor(\n @inject(appBinderTypes.AppBinding)\n private appBinder: LedgerKeyringProtocolBinder,\n ) {}\n\n execute(input: AuthenticateUsecaseInput): AuthenticateDAReturnType {\n if (input.trustchainId) {\n return this.appBinder.authenticateWithKeypair(input);\n }\n\n const sessionId = input.sessionId;\n if (sessionId) {\n return this.appBinder.authenticateWithDevice({ ...input, sessionId });\n }\n\n // The AuthenticateUsecaseInput type should prevent this case\n return {\n observable: of({\n status: DeviceActionStatus.Error,\n error: new LKRPMissingDataError(\n \"Either a trustchainId or a device is required for authentication.\",\n ),\n }),\n cancel: () => undefined,\n };\n }\n}\n"],
5
- "mappings": "iOAAA,OACE,sBAAAA,MAEK,kCACP,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YACnC,OAAS,MAAAC,MAAU,OAGnB,OAAS,wBAAAC,MAA4B,yBAErC,OAAS,kBAAAC,MAAsB,yCAaxB,IAAMC,EAAN,KAA0B,CAC/B,YAEUC,EACR,CADQ,eAAAA,CACP,CAEH,QAAQC,EAA2D,CACjE,GAAIA,EAAM,aACR,OAAO,KAAK,UAAU,wBAAwBA,CAAK,EAGrD,MAAMC,EAAYD,EAAM,UACxB,OAAIC,EACK,KAAK,UAAU,uBAAuB,CAAE,GAAGD,EAAO,UAAAC,CAAU,CAAC,EAI/D,CACL,WAAYC,EAAG,CACb,OAAQC,EAAmB,MAC3B,MAAO,IAAIC,EACT,mEACF,CACF,CAAC,EACD,OAAQ,IAAG,EACb,CACF,CACF,EA3BaN,EAANO,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAe,UAAU,IAFxBX",
4
+ "sourcesContent": ["import {\n DeviceActionStatus,\n DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { of } from \"rxjs\";\n\nimport { AuthenticateDAReturnType } from \"@api/app-binder/AuthenticateDeviceActionTypes\";\nimport { KeyPair } from \"@api/crypto/KeyPair\";\nimport { LKRPMissingDataError } from \"@api/model/Errors\";\nimport { Permissions } from \"@api/model/Permissions\";\nimport { appBinderTypes } from \"@internal/app-binder/di/appBinderTypes\";\nimport { LedgerKeyringProtocolBinder } from \"@internal/app-binder/LedgerKeyringProtocolBinder\";\n\nexport type AuthenticateUsecaseInput = {\n keypair: KeyPair;\n clientName: string;\n permissions: Permissions;\n} & (\n | { trustchainId: string; sessionId?: DeviceSessionId }\n | { trustchainId?: undefined; sessionId: DeviceSessionId }\n);\n\n@injectable()\nexport class AuthenticateUseCase {\n constructor(\n @inject(appBinderTypes.AppBinding)\n private appBinder: LedgerKeyringProtocolBinder,\n ) {}\n\n execute(input: AuthenticateUsecaseInput): AuthenticateDAReturnType {\n if (input.trustchainId) {\n return this.appBinder.authenticateWithKeypair(input);\n }\n\n const sessionId = input.sessionId;\n if (sessionId) {\n return this.appBinder.authenticateWithDevice({ ...input, sessionId });\n }\n\n // The AuthenticateUsecaseInput type should prevent this case\n return {\n observable: of({\n status: DeviceActionStatus.Error,\n error: new LKRPMissingDataError(\n \"Either a trustchainId or a device is required for authentication.\",\n ),\n }),\n cancel: () => undefined,\n };\n }\n}\n"],
5
+ "mappings": "iOAAA,OACE,sBAAAA,MAEK,kCACP,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YACnC,OAAS,MAAAC,MAAU,OAInB,OAAS,wBAAAC,MAA4B,oBAErC,OAAS,kBAAAC,MAAsB,yCAaxB,IAAMC,EAAN,KAA0B,CAC/B,YAEUC,EACR,CADQ,eAAAA,CACP,CAEH,QAAQC,EAA2D,CACjE,GAAIA,EAAM,aACR,OAAO,KAAK,UAAU,wBAAwBA,CAAK,EAGrD,MAAMC,EAAYD,EAAM,UACxB,OAAIC,EACK,KAAK,UAAU,uBAAuB,CAAE,GAAGD,EAAO,UAAAC,CAAU,CAAC,EAI/D,CACL,WAAYC,EAAG,CACb,OAAQC,EAAmB,MAC3B,MAAO,IAAIC,EACT,mEACF,CACF,CAAC,EACD,OAAQ,IAAG,EACb,CACF,CACF,EA3BaN,EAANO,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAe,UAAU,IAFxBX",
6
6
  "names": ["DeviceActionStatus", "inject", "injectable", "of", "LKRPMissingDataError", "appBinderTypes", "AuthenticateUseCase", "appBinder", "input", "sessionId", "of", "DeviceActionStatus", "LKRPMissingDataError", "__decorateClass", "injectable", "__decorateParam", "inject", "appBinderTypes"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ByteArrayParser as d}from"@ledgerhq/device-management-kit";import{Maybe as h}from"purify-ts";import{LKRPParsingError as a}from"../../../api/app-binder/Errors";import{KeypairFromBytes as g}from"../../../api/index";import{CryptoUtils as n}from"../../utils/crypto";import{eitherSeqRecord as f}from"../../utils/eitherSeqRecord";class b{execute(o,c){const r=new d(c);if(r.extract8BitUInt()!==0)throw new a("Unsupported serialization version");const t=(e,i)=>h.fromNullable(e).toEither(new a(`Missing ${i} field`));return f({ephemeralPublicKey:()=>t(r.extractFieldByLength(33),"ephemeral public key"),iv:()=>t(r.extractFieldByLength(16),"IV"),tag:()=>t(r.extractFieldByLength(16),"tag"),encryptedData:()=>t(r.extractFieldByLength(r.getUnparsedRemainingLength()),"encrypted data")}).map(({ephemeralPublicKey:e,iv:i,tag:s,encryptedData:y})=>{const p=new g(o).ecdh(e).slice(1),m=n.hmac(new Uint8Array,p),l=new Uint8Array([...y,...s]);return n.decrypt(m,i,l)}).caseOf({Left:e=>{throw e},Right:e=>e})}}export{b as DecryptDataUseCase};
1
+ var S=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var y=(c,i,n,e)=>{for(var r=e>1?void 0:e?f(i,n):i,t=c.length-1,o;t>=0;t--)(o=c[t])&&(r=(e?o(i,n,r):o(r))||r);return e&&r&&S(i,n,r),r},p=(c,i)=>(n,e)=>i(n,e,c);import{ByteArrayParser as u}from"@ledgerhq/device-management-kit";import{inject as x,injectable as A}from"inversify";import{Maybe as w}from"purify-ts";import{Curve as K,EncryptionAlgo as L,HashAlgo as B}from"../../../api/crypto/CryptoService";import{LKRPParsingError as m}from"../../../api/model/Errors";import{externalTypes as P}from"../../externalTypes";import{eitherSeqRecord as U}from"../../utils/eitherSeqRecord";let a=class{constructor(i){this.cryptoService=i}async execute(i,n){const e=new u(n);if(e.extract8BitUInt()!==0)throw new m("Unsupported serialization version");const r=(t,o)=>w.fromNullable(t).toEither(new m(`Missing ${o} field`));return U({ephemeralPublicKey:()=>r(e.extractFieldByLength(33),"ephemeral public key"),iv:()=>r(e.extractFieldByLength(16),"IV"),tag:()=>r(e.extractFieldByLength(16),"tag"),encryptedData:()=>r(e.extractFieldByLength(e.getUnparsedRemainingLength()),"encrypted data")}).map(async({ephemeralPublicKey:t,iv:o,tag:s,encryptedData:l})=>{const h=await this.cryptoService.importKeyPair(i,K.K256).deriveSharedSecret(t),d=this.cryptoService.hmac(new Uint8Array,h.slice(1),B.SHA256),g=this.cryptoService.importSymmetricKey(d,L.AES256_GCM),v=new Uint8Array([...l,...s]);return await g.decrypt(o,v)}).caseOf({Left:t=>{throw t},Right:t=>t})}};a=y([A(),p(0,x(P.CryptoService))],a);export{a as DecryptDataUseCase};
2
2
  //# sourceMappingURL=DecryptDataUseCase.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/use-cases/authentication/DecryptDataUseCase.ts"],
4
- "sourcesContent": ["import { ByteArrayParser } from \"@ledgerhq/device-management-kit\";\nimport { Maybe } from \"purify-ts\";\n\nimport { LKRPParsingError } from \"@api/app-binder/Errors\";\nimport { KeypairFromBytes } from \"@api/index\";\nimport { CryptoUtils } from \"@internal/utils/crypto\";\nimport { eitherSeqRecord } from \"@internal/utils/eitherSeqRecord\";\n\nexport class DecryptDataUseCase {\n execute(encryptionKey: Uint8Array, data: Uint8Array): Uint8Array {\n const parser = new ByteArrayParser(data);\n if (parser.extract8BitUInt() !== 0) {\n throw new LKRPParsingError(\"Unsupported serialization version\");\n }\n const required = (value: Uint8Array | undefined, field: string) =>\n Maybe.fromNullable(value).toEither(\n new LKRPParsingError(`Missing ${field} field`),\n );\n\n return eitherSeqRecord({\n ephemeralPublicKey: () =>\n required(parser.extractFieldByLength(33), \"ephemeral public key\"),\n iv: () => required(parser.extractFieldByLength(16), \"IV\"),\n tag: () => required(parser.extractFieldByLength(16), \"tag\"),\n encryptedData: () =>\n required(\n parser.extractFieldByLength(parser.getUnparsedRemainingLength()),\n \"encrypted data\",\n ),\n })\n .map(({ ephemeralPublicKey, iv, tag, encryptedData }) => {\n // Derive the shared secret using ECDH with an ephemeral keypair\n const privateKey = new KeypairFromBytes(encryptionKey);\n const sharedSecret = privateKey.ecdh(ephemeralPublicKey).slice(1);\n\n // Key derivation using HMAC-SHA256\n const key = CryptoUtils.hmac(new Uint8Array(), sharedSecret);\n\n // Decrypt the data\n const ciphertext = new Uint8Array([...encryptedData, ...tag]);\n const cleartext = CryptoUtils.decrypt(key, iv, ciphertext);\n return cleartext;\n })\n .caseOf({\n Left: (error) => {\n throw error;\n },\n Right: (cleartext) => cleartext,\n });\n }\n}\n"],
5
- "mappings": "AAAA,OAAS,mBAAAA,MAAuB,kCAChC,OAAS,SAAAC,MAAa,YAEtB,OAAS,oBAAAC,MAAwB,yBACjC,OAAS,oBAAAC,MAAwB,aACjC,OAAS,eAAAC,MAAmB,yBAC5B,OAAS,mBAAAC,MAAuB,kCAEzB,MAAMC,CAAmB,CAC9B,QAAQC,EAA2BC,EAA8B,CAC/D,MAAMC,EAAS,IAAIT,EAAgBQ,CAAI,EACvC,GAAIC,EAAO,gBAAgB,IAAM,EAC/B,MAAM,IAAIP,EAAiB,mCAAmC,EAEhE,MAAMQ,EAAW,CAACC,EAA+BC,IAC/CX,EAAM,aAAaU,CAAK,EAAE,SACxB,IAAIT,EAAiB,WAAWU,CAAK,QAAQ,CAC/C,EAEF,OAAOP,EAAgB,CACrB,mBAAoB,IAClBK,EAASD,EAAO,qBAAqB,EAAE,EAAG,sBAAsB,EAClE,GAAI,IAAMC,EAASD,EAAO,qBAAqB,EAAE,EAAG,IAAI,EACxD,IAAK,IAAMC,EAASD,EAAO,qBAAqB,EAAE,EAAG,KAAK,EAC1D,cAAe,IACbC,EACED,EAAO,qBAAqBA,EAAO,2BAA2B,CAAC,EAC/D,gBACF,CACJ,CAAC,EACE,IAAI,CAAC,CAAE,mBAAAI,EAAoB,GAAAC,EAAI,IAAAC,EAAK,cAAAC,CAAc,IAAM,CAGvD,MAAMC,EADa,IAAId,EAAiBI,CAAa,EACrB,KAAKM,CAAkB,EAAE,MAAM,CAAC,EAG1DK,EAAMd,EAAY,KAAK,IAAI,WAAca,CAAY,EAGrDE,EAAa,IAAI,WAAW,CAAC,GAAGH,EAAe,GAAGD,CAAG,CAAC,EAE5D,OADkBX,EAAY,QAAQc,EAAKJ,EAAIK,CAAU,CAE3D,CAAC,EACA,OAAO,CACN,KAAOC,GAAU,CACf,MAAMA,CACR,EACA,MAAQC,GAAcA,CACxB,CAAC,CACL,CACF",
6
- "names": ["ByteArrayParser", "Maybe", "LKRPParsingError", "KeypairFromBytes", "CryptoUtils", "eitherSeqRecord", "DecryptDataUseCase", "encryptionKey", "data", "parser", "required", "value", "field", "ephemeralPublicKey", "iv", "tag", "encryptedData", "sharedSecret", "key", "ciphertext", "error", "cleartext"]
4
+ "sourcesContent": ["import { ByteArrayParser } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n type CryptoService,\n Curve,\n EncryptionAlgo,\n HashAlgo,\n} from \"@api/crypto/CryptoService\";\nimport { LKRPParsingError } from \"@api/model/Errors\";\nimport { externalTypes } from \"@internal/externalTypes\";\nimport { eitherSeqRecord } from \"@internal/utils/eitherSeqRecord\";\n\n@injectable()\nexport class DecryptDataUseCase {\n constructor(\n @inject(externalTypes.CryptoService)\n private cryptoService: CryptoService,\n ) {}\n\n // TODO better return type instead of throw on errors\n async execute(\n encryptionKey: Uint8Array,\n data: Uint8Array,\n ): Promise<Uint8Array> {\n const parser = new ByteArrayParser(data);\n if (parser.extract8BitUInt() !== 0) {\n throw new LKRPParsingError(\"Unsupported serialization version\");\n }\n const required = (value: Uint8Array | undefined, field: string) =>\n Maybe.fromNullable(value).toEither(\n new LKRPParsingError(`Missing ${field} field`),\n );\n\n return eitherSeqRecord({\n ephemeralPublicKey: () =>\n required(parser.extractFieldByLength(33), \"ephemeral public key\"),\n iv: () => required(parser.extractFieldByLength(16), \"IV\"),\n tag: () => required(parser.extractFieldByLength(16), \"tag\"),\n encryptedData: () =>\n required(\n parser.extractFieldByLength(parser.getUnparsedRemainingLength()),\n \"encrypted data\",\n ),\n })\n .map(async ({ ephemeralPublicKey, iv, tag, encryptedData }) => {\n // Derive the shared secret using ECDH with an ephemeral keypair\n const privateKey = this.cryptoService.importKeyPair(\n encryptionKey,\n Curve.K256,\n );\n const sharedSecret =\n await privateKey.deriveSharedSecret(ephemeralPublicKey);\n\n // Key derivation using HMAC-SHA256\n const key = this.cryptoService.hmac(\n new Uint8Array(),\n sharedSecret.slice(1),\n HashAlgo.SHA256,\n );\n\n // Decrypt the data\n const symmetricKey = this.cryptoService.importSymmetricKey(\n key,\n EncryptionAlgo.AES256_GCM,\n );\n const ciphertext = new Uint8Array([...encryptedData, ...tag]);\n const cleartext = await symmetricKey.decrypt(iv, ciphertext);\n return cleartext;\n })\n .caseOf({\n Left: (error) => {\n throw error;\n },\n Right: (cleartext) => cleartext,\n });\n }\n}\n"],
5
+ "mappings": "iOAAA,OAAS,mBAAAA,MAAuB,kCAChC,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YACnC,OAAS,SAAAC,MAAa,YAEtB,OAEE,SAAAC,EACA,kBAAAC,EACA,YAAAC,MACK,4BACP,OAAS,oBAAAC,MAAwB,oBACjC,OAAS,iBAAAC,MAAqB,0BAC9B,OAAS,mBAAAC,MAAuB,kCAGzB,IAAMC,EAAN,KAAyB,CAC9B,YAEUC,EACR,CADQ,mBAAAA,CACP,CAGH,MAAM,QACJC,EACAC,EACqB,CACrB,MAAMC,EAAS,IAAIC,EAAgBF,CAAI,EACvC,GAAIC,EAAO,gBAAgB,IAAM,EAC/B,MAAM,IAAIE,EAAiB,mCAAmC,EAEhE,MAAMC,EAAW,CAACC,EAA+BC,IAC/CC,EAAM,aAAaF,CAAK,EAAE,SACxB,IAAIF,EAAiB,WAAWG,CAAK,QAAQ,CAC/C,EAEF,OAAOE,EAAgB,CACrB,mBAAoB,IAClBJ,EAASH,EAAO,qBAAqB,EAAE,EAAG,sBAAsB,EAClE,GAAI,IAAMG,EAASH,EAAO,qBAAqB,EAAE,EAAG,IAAI,EACxD,IAAK,IAAMG,EAASH,EAAO,qBAAqB,EAAE,EAAG,KAAK,EAC1D,cAAe,IACbG,EACEH,EAAO,qBAAqBA,EAAO,2BAA2B,CAAC,EAC/D,gBACF,CACJ,CAAC,EACE,IAAI,MAAO,CAAE,mBAAAQ,EAAoB,GAAAC,EAAI,IAAAC,EAAK,cAAAC,CAAc,IAAM,CAM7D,MAAMC,EACJ,MALiB,KAAK,cAAc,cACpCd,EACAe,EAAM,IACR,EAEmB,mBAAmBL,CAAkB,EAGlDM,EAAM,KAAK,cAAc,KAC7B,IAAI,WACJF,EAAa,MAAM,CAAC,EACpBG,EAAS,MACX,EAGMC,EAAe,KAAK,cAAc,mBACtCF,EACAG,EAAe,UACjB,EACMC,EAAa,IAAI,WAAW,CAAC,GAAGP,EAAe,GAAGD,CAAG,CAAC,EAE5D,OADkB,MAAMM,EAAa,QAAQP,EAAIS,CAAU,CAE7D,CAAC,EACA,OAAO,CACN,KAAOC,GAAU,CACf,MAAMA,CACR,EACA,MAAQC,GAAcA,CACxB,CAAC,CACL,CACF,EA/DaxB,EAANyB,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAc,aAAa,IAF1B7B",
6
+ "names": ["ByteArrayParser", "inject", "injectable", "Maybe", "Curve", "EncryptionAlgo", "HashAlgo", "LKRPParsingError", "externalTypes", "eitherSeqRecord", "DecryptDataUseCase", "cryptoService", "encryptionKey", "data", "parser", "ByteArrayParser", "LKRPParsingError", "required", "value", "field", "Maybe", "eitherSeqRecord", "ephemeralPublicKey", "iv", "tag", "encryptedData", "sharedSecret", "Curve", "key", "HashAlgo", "symmetricKey", "EncryptionAlgo", "ciphertext", "error", "cleartext", "__decorateClass", "injectable", "__decorateParam", "inject", "externalTypes"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ByteArrayBuilder as u}from"@ledgerhq/device-management-kit";import{KeypairFromBytes as f}from"../../../api/index";import{AES_BLOCK_SIZE as o,CryptoUtils as r}from"../../utils/crypto";class K{execute(n,y){const s=new f(n),a=r.randomKeypair(),c=s.ecdh(a.pubKeyToU8a()).slice(1),i=r.hmac(new Uint8Array,c),t=r.randomBytes(16),e=r.encrypt(i,t,y),d=e.subarray(0,-o),p=e.subarray(-o);return new u().add8BitUIntToData(0).addBufferToData(a.pubKeyToU8a()).addBufferToData(t).addBufferToData(p).addBufferToData(d).build()}}export{K as EncryptDataUseCase};
1
+ var f=Object.defineProperty;var K=Object.getOwnPropertyDescriptor;var m=(o,e,i,t)=>{for(var r=t>1?void 0:t?K(e,i):e,c=o.length-1,a;c>=0;c--)(a=o[c])&&(r=(t?a(e,i,r):a(r))||r);return t&&r&&f(e,i,r),r},s=(o,e)=>(i,t)=>e(i,t,o);import{ByteArrayBuilder as h}from"@ledgerhq/device-management-kit";import{inject as l,injectable as A}from"inversify";import{Curve as d,EncryptionAlgo as B,HashAlgo as b}from"../../../api/crypto/CryptoService";import{AES256_BLOCK_SIZE as S}from"../../../api/crypto/Key";import{externalTypes as T}from"../../externalTypes";let y=class{constructor(e){this.cryptoService=e}async execute(e,i){const t=this.cryptoService.importKeyPair(e,d.K256),r=await this.cryptoService.createKeyPair(d.K256),c=await t.deriveSharedSecret(r.getPublicKey()),a=this.cryptoService.hmac(new Uint8Array,c.slice(1),b.SHA256),n=this.cryptoService.randomBytes(16),p=await this.cryptoService.importSymmetricKey(a,B.AES256_GCM).encrypt(n,i),u=p.subarray(0,-S),v=p.subarray(-S);return new h().add8BitUIntToData(0).addBufferToData(r.getPublicKey()).addBufferToData(n).addBufferToData(v).addBufferToData(u).build()}};y=m([A(),s(0,l(T.CryptoService))],y);export{y as EncryptDataUseCase};
2
2
  //# sourceMappingURL=EncryptDataUseCase.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/use-cases/authentication/EncryptDataUseCase.ts"],
4
- "sourcesContent": ["import { ByteArrayBuilder } from \"@ledgerhq/device-management-kit\";\n\nimport { KeypairFromBytes } from \"@api/index\";\nimport { AES_BLOCK_SIZE, CryptoUtils } from \"@internal/utils/crypto\";\n\nexport class EncryptDataUseCase {\n execute(encryptionKey: Uint8Array, data: Uint8Array): Uint8Array {\n // Derive the shared secret using ECDH with an ephemeral keypair\n const privateKey = new KeypairFromBytes(encryptionKey);\n const ephemeralKeypair = CryptoUtils.randomKeypair();\n const sharedSecret = privateKey\n .ecdh(ephemeralKeypair.pubKeyToU8a())\n .slice(1);\n\n // Key derivation using HMAC-SHA256\n const key = CryptoUtils.hmac(new Uint8Array(), sharedSecret);\n\n // Generate a random IV (nonce)\n const iv = CryptoUtils.randomBytes(16);\n\n // Encrypt data\n const ciphertext = CryptoUtils.encrypt(key, iv, data);\n const encryptedData = ciphertext.subarray(0, -AES_BLOCK_SIZE);\n const tag = ciphertext.subarray(-AES_BLOCK_SIZE);\n\n // Serialize the result\n return new ByteArrayBuilder()\n .add8BitUIntToData(0) // Version of the format\n .addBufferToData(ephemeralKeypair.pubKeyToU8a())\n .addBufferToData(iv)\n .addBufferToData(tag)\n .addBufferToData(encryptedData)\n .build();\n }\n}\n"],
5
- "mappings": "AAAA,OAAS,oBAAAA,MAAwB,kCAEjC,OAAS,oBAAAC,MAAwB,aACjC,OAAS,kBAAAC,EAAgB,eAAAC,MAAmB,yBAErC,MAAMC,CAAmB,CAC9B,QAAQC,EAA2BC,EAA8B,CAE/D,MAAMC,EAAa,IAAIN,EAAiBI,CAAa,EAC/CG,EAAmBL,EAAY,cAAc,EAC7CM,EAAeF,EAClB,KAAKC,EAAiB,YAAY,CAAC,EACnC,MAAM,CAAC,EAGJE,EAAMP,EAAY,KAAK,IAAI,WAAcM,CAAY,EAGrDE,EAAKR,EAAY,YAAY,EAAE,EAG/BS,EAAaT,EAAY,QAAQO,EAAKC,EAAIL,CAAI,EAC9CO,EAAgBD,EAAW,SAAS,EAAG,CAACV,CAAc,EACtDY,EAAMF,EAAW,SAAS,CAACV,CAAc,EAG/C,OAAO,IAAIF,EAAiB,EACzB,kBAAkB,CAAC,EACnB,gBAAgBQ,EAAiB,YAAY,CAAC,EAC9C,gBAAgBG,CAAE,EAClB,gBAAgBG,CAAG,EACnB,gBAAgBD,CAAa,EAC7B,MAAM,CACX,CACF",
6
- "names": ["ByteArrayBuilder", "KeypairFromBytes", "AES_BLOCK_SIZE", "CryptoUtils", "EncryptDataUseCase", "encryptionKey", "data", "privateKey", "ephemeralKeypair", "sharedSecret", "key", "iv", "ciphertext", "encryptedData", "tag"]
4
+ "sourcesContent": ["import { ByteArrayBuilder } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport {\n type CryptoService,\n Curve,\n EncryptionAlgo,\n HashAlgo,\n} from \"@api/crypto/CryptoService\";\nimport { AES256_BLOCK_SIZE } from \"@api/crypto/Key\";\nimport { externalTypes } from \"@internal/externalTypes\";\n\n@injectable()\nexport class EncryptDataUseCase {\n constructor(\n @inject(externalTypes.CryptoService)\n private cryptoService: CryptoService,\n ) {}\n\n async execute(\n encryptionKey: Uint8Array,\n data: Uint8Array,\n ): Promise<Uint8Array> {\n // Derive the shared secret using ECDH with an ephemeral keypair\n const privateKey = this.cryptoService.importKeyPair(\n encryptionKey,\n Curve.K256,\n );\n const ephemeralKeypair = await this.cryptoService.createKeyPair(Curve.K256);\n const sharedSecret = await privateKey.deriveSharedSecret(\n ephemeralKeypair.getPublicKey(),\n );\n\n // Key derivation using HMAC-SHA256\n const key = this.cryptoService.hmac(\n new Uint8Array(),\n sharedSecret.slice(1),\n HashAlgo.SHA256,\n );\n\n // Generate a random IV (nonce)\n const iv = this.cryptoService.randomBytes(16);\n\n // Encrypt data\n const symmetricKey = this.cryptoService.importSymmetricKey(\n key,\n EncryptionAlgo.AES256_GCM,\n );\n const ciphertext = await symmetricKey.encrypt(iv, data);\n const encryptedData = ciphertext.subarray(0, -AES256_BLOCK_SIZE);\n const tag = ciphertext.subarray(-AES256_BLOCK_SIZE);\n\n // Serialize the result\n return new ByteArrayBuilder()\n .add8BitUIntToData(0) // Version of the format\n .addBufferToData(ephemeralKeypair.getPublicKey())\n .addBufferToData(iv)\n .addBufferToData(tag)\n .addBufferToData(encryptedData)\n .build();\n }\n}\n"],
5
+ "mappings": "iOAAA,OAAS,oBAAAA,MAAwB,kCACjC,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YAEnC,OAEE,SAAAC,EACA,kBAAAC,EACA,YAAAC,MACK,4BACP,OAAS,qBAAAC,MAAyB,kBAClC,OAAS,iBAAAC,MAAqB,0BAGvB,IAAMC,EAAN,KAAyB,CAC9B,YAEUC,EACR,CADQ,mBAAAA,CACP,CAEH,MAAM,QACJC,EACAC,EACqB,CAErB,MAAMC,EAAa,KAAK,cAAc,cACpCF,EACAG,EAAM,IACR,EACMC,EAAmB,MAAM,KAAK,cAAc,cAAcD,EAAM,IAAI,EACpEE,EAAe,MAAMH,EAAW,mBACpCE,EAAiB,aAAa,CAChC,EAGME,EAAM,KAAK,cAAc,KAC7B,IAAI,WACJD,EAAa,MAAM,CAAC,EACpBE,EAAS,MACX,EAGMC,EAAK,KAAK,cAAc,YAAY,EAAE,EAOtCC,EAAa,MAJE,KAAK,cAAc,mBACtCH,EACAI,EAAe,UACjB,EACsC,QAAQF,EAAIP,CAAI,EAChDU,EAAgBF,EAAW,SAAS,EAAG,CAACG,CAAiB,EACzDC,EAAMJ,EAAW,SAAS,CAACG,CAAiB,EAGlD,OAAO,IAAIE,EAAiB,EACzB,kBAAkB,CAAC,EACnB,gBAAgBV,EAAiB,aAAa,CAAC,EAC/C,gBAAgBI,CAAE,EAClB,gBAAgBK,CAAG,EACnB,gBAAgBF,CAAa,EAC7B,MAAM,CACX,CACF,EAhDab,EAANiB,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAc,aAAa,IAF1BrB",
6
+ "names": ["ByteArrayBuilder", "inject", "injectable", "Curve", "EncryptionAlgo", "HashAlgo", "AES256_BLOCK_SIZE", "externalTypes", "EncryptDataUseCase", "cryptoService", "encryptionKey", "data", "privateKey", "Curve", "ephemeralKeypair", "sharedSecret", "key", "HashAlgo", "iv", "ciphertext", "EncryptionAlgo", "encryptedData", "AES256_BLOCK_SIZE", "tag", "ByteArrayBuilder", "__decorateClass", "injectable", "__decorateParam", "inject", "externalTypes"]
7
7
  }
@@ -1,5 +1,5 @@
1
- import{bufferToHexaString as e,hexaStringToBuffer as n}from"@ledgerhq/device-management-kit";import{Either as m,Just as o,Nothing as u,Right as p}from"purify-ts";import{CryptoUtils as g}from"./crypto";import{TLVBuilder as y}from"./TLVBuilder";import{TLVParser as P}from"./TLVParser";class i{constructor(r,t){this.bytes=r;this.data=t?o(p(t)):u}hashValue=u;data;static fromHex(r){return new i(n(r)??new Uint8Array)}static fromData(r){const t=new y().addInt(1,1).addHash(n(r.parent)??new Uint8Array).addPublicKey(r.issuer).addInt(r.commands.length,1),a=t.build();r.commands.forEach(l=>t.push(l.toU8A()));const c=t.build().length,s=t.addSignature(r.signature).build(),h=s.slice(c,s.length);return new i(s,{...r,header:a,signature:h})}toString(){return e(this.bytes).slice(2)}toU8A(){return this.bytes}parse(){return this.data.orDefaultLazy(()=>{const r=new P(this.bytes).parseBlockData();return this.data=o(r),r})}toHuman(){return this.parse().chain(r=>m.sequence(r.commands.map(t=>t.toHuman())).map(t=>({...r,commands:t}))).map(r=>[`Parent: ${r.parent}`,`Issuer: ${e(r.issuer).slice(2)}`,`Commands:${r.commands.flatMap(t=>t.split(`
1
+ import{bufferToHexaString as n,ByteArrayBuilder as s,hexaStringToBuffer as h}from"@ledgerhq/device-management-kit";import{sha256 as d}from"@noble/hashes/sha256";import{Either as p,Just as u,Nothing as m,Right as y}from"purify-ts";import{GeneralTags as t}from"../models/Tags";import{TLVParser as P}from"./TLVParser";class o{constructor(r,e){this.bytes=r;this.data=e?u(y(e)):m}hashValue=m;data;static fromHex(r){return new o(h(r)??new Uint8Array)}static fromData(r){const e=new s().encodeInTLVFromUInt8(t.Int,1).encodeInTLVFromHexa(t.Hash,r.parent).encodeInTLVFromBuffer(t.PublicKey,r.issuer).encodeInTLVFromUInt8(t.Int,r.commands.length).build(),a=new s;r.commands.forEach(l=>a.addBufferToData(l.toU8A()));const c=a.build(),i=new s().encodeInTLVFromBuffer(t.Signature,r.signature).build(),f=new s().addBufferToData(e).addBufferToData(c).addBufferToData(i).build();return new o(f,{...r,header:e,signature:i})}toString(){return n(this.bytes,!1)}toU8A(){return this.bytes}parse(){return this.data.orDefaultLazy(()=>{const r=new P(this.bytes).parseBlockData();return this.data=u(r),r})}toHuman(){return this.parse().chain(r=>p.sequence(r.commands.map(e=>e.toHuman())).map(e=>({...r,commands:e}))).map(r=>[`Parent: ${r.parent}`,`Issuer: ${n(r.issuer,!1)}`,`Commands:${r.commands.flatMap(e=>e.split(`
2
2
  `).map(a=>`
3
- ${a}`)).join("")}`,`Signature: ${e(r.signature.slice(2)).slice(2)}`].join(`
4
- `))}hash(){return this.hashValue.orDefaultLazy(()=>{const r=g.hash(this.bytes);return e(r).slice(2)})}}export{i as LKRPBlock};
3
+ ${a}`)).join("")}`,`Signature: ${n(r.signature.slice(2),!1)}`].join(`
4
+ `))}hash(){return this.hashValue.orDefaultLazy(()=>{const r=d(this.bytes);return n(r,!1)})}}export{o as LKRPBlock};
5
5
  //# sourceMappingURL=LKRPBlock.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/internal/utils/LKRPBlock.ts"],
4
- "sourcesContent": ["import {\n bufferToHexaString,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\nimport { Either, Just, type Maybe, Nothing, Right } from \"purify-ts\";\n\nimport { type LKRPParsingError } from \"@api/app-binder/Errors\";\nimport {\n type LKRPBlockData,\n type LKRPBlockParsedData,\n} from \"@internal/models/LKRPBlockTypes\";\n\nimport { CryptoUtils } from \"./crypto\";\nimport { TLVBuilder } from \"./TLVBuilder\";\nimport { TLVParser } from \"./TLVParser\";\n\nexport class LKRPBlock {\n private hashValue: Maybe<string> = Nothing; // Cache hash value for performance\n private data: Maybe<Either<LKRPParsingError, LKRPBlockParsedData>>;\n\n public constructor(\n private readonly bytes: Uint8Array,\n data?: LKRPBlockParsedData,\n ) {\n this.data = data ? Just(Right(data)) : Nothing;\n }\n\n static fromHex(hex: string): LKRPBlock {\n return new LKRPBlock(hexaStringToBuffer(hex) ?? new Uint8Array());\n }\n\n static fromData(data: LKRPBlockData): LKRPBlock {\n const builder = new TLVBuilder()\n .addInt(1, 1) // Version 1\n .addHash(hexaStringToBuffer(data.parent) ?? new Uint8Array())\n .addPublicKey(data.issuer)\n .addInt(data.commands.length, 1);\n\n const header = builder.build();\n\n data.commands.forEach((cmd) => builder.push(cmd.toU8A()));\n\n const sigStart = builder.build().length;\n const bytes = builder.addSignature(data.signature).build();\n const signature = bytes.slice(sigStart, bytes.length);\n\n return new LKRPBlock(bytes, { ...data, header, signature });\n }\n\n toString(): string {\n return bufferToHexaString(this.bytes).slice(2);\n }\n\n toU8A(): Uint8Array {\n return this.bytes;\n }\n\n parse(): Either<LKRPParsingError, LKRPBlockParsedData> {\n return this.data.orDefaultLazy(() => {\n const data = new TLVParser(this.bytes).parseBlockData();\n this.data = Just(data);\n return data;\n });\n }\n\n toHuman(): Either<LKRPParsingError, string> {\n return this.parse()\n .chain((data) =>\n Either.sequence(data.commands.map((cmd) => cmd.toHuman())).map(\n (commands) => ({ ...data, commands }),\n ),\n )\n .map((data) =>\n [\n `Parent: ${data.parent}`,\n `Issuer: ${bufferToHexaString(data.issuer).slice(2)}`,\n `Commands:${data.commands\n .flatMap((cmd) => cmd.split(\"\\n\").map((l) => `\\n ${l}`))\n .join(\"\")}`,\n `Signature: ${bufferToHexaString(data.signature.slice(2)).slice(2)}`,\n ].join(\"\\n\"),\n );\n }\n\n hash(): string {\n return this.hashValue.orDefaultLazy(() => {\n const hashValue = CryptoUtils.hash(this.bytes);\n return bufferToHexaString(hashValue).slice(2);\n });\n }\n}\n"],
5
- "mappings": "AAAA,OACE,sBAAAA,EACA,sBAAAC,MACK,kCACP,OAAS,UAAAC,EAAQ,QAAAC,EAAkB,WAAAC,EAAS,SAAAC,MAAa,YAQzD,OAAS,eAAAC,MAAmB,WAC5B,OAAS,cAAAC,MAAkB,eAC3B,OAAS,aAAAC,MAAiB,cAEnB,MAAMC,CAAU,CAId,YACYC,EACjBC,EACA,CAFiB,WAAAD,EAGjB,KAAK,KAAOC,EAAOR,EAAKE,EAAMM,CAAI,CAAC,EAAIP,CACzC,CARQ,UAA2BA,EAC3B,KASR,OAAO,QAAQQ,EAAwB,CACrC,OAAO,IAAIH,EAAUR,EAAmBW,CAAG,GAAK,IAAI,UAAY,CAClE,CAEA,OAAO,SAASD,EAAgC,CAC9C,MAAME,EAAU,IAAIN,EAAW,EAC5B,OAAO,EAAG,CAAC,EACX,QAAQN,EAAmBU,EAAK,MAAM,GAAK,IAAI,UAAY,EAC3D,aAAaA,EAAK,MAAM,EACxB,OAAOA,EAAK,SAAS,OAAQ,CAAC,EAE3BG,EAASD,EAAQ,MAAM,EAE7BF,EAAK,SAAS,QAASI,GAAQF,EAAQ,KAAKE,EAAI,MAAM,CAAC,CAAC,EAExD,MAAMC,EAAWH,EAAQ,MAAM,EAAE,OAC3BH,EAAQG,EAAQ,aAAaF,EAAK,SAAS,EAAE,MAAM,EACnDM,EAAYP,EAAM,MAAMM,EAAUN,EAAM,MAAM,EAEpD,OAAO,IAAID,EAAUC,EAAO,CAAE,GAAGC,EAAM,OAAAG,EAAQ,UAAAG,CAAU,CAAC,CAC5D,CAEA,UAAmB,CACjB,OAAOjB,EAAmB,KAAK,KAAK,EAAE,MAAM,CAAC,CAC/C,CAEA,OAAoB,CAClB,OAAO,KAAK,KACd,CAEA,OAAuD,CACrD,OAAO,KAAK,KAAK,cAAc,IAAM,CACnC,MAAMW,EAAO,IAAIH,EAAU,KAAK,KAAK,EAAE,eAAe,EACtD,YAAK,KAAOL,EAAKQ,CAAI,EACdA,CACT,CAAC,CACH,CAEA,SAA4C,CAC1C,OAAO,KAAK,MAAM,EACf,MAAOA,GACNT,EAAO,SAASS,EAAK,SAAS,IAAKI,GAAQA,EAAI,QAAQ,CAAC,CAAC,EAAE,IACxDG,IAAc,CAAE,GAAGP,EAAM,SAAAO,CAAS,EACrC,CACF,EACC,IAAKP,GACJ,CACE,WAAWA,EAAK,MAAM,GACtB,WAAWX,EAAmBW,EAAK,MAAM,EAAE,MAAM,CAAC,CAAC,GACnD,YAAYA,EAAK,SACd,QAASI,GAAQA,EAAI,MAAM;AAAA,CAAI,EAAE,IAAKI,GAAM;AAAA,IAAOA,CAAC,EAAE,CAAC,EACvD,KAAK,EAAE,CAAC,GACX,cAAcnB,EAAmBW,EAAK,UAAU,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EACpE,EAAE,KAAK;AAAA,CAAI,CACb,CACJ,CAEA,MAAe,CACb,OAAO,KAAK,UAAU,cAAc,IAAM,CACxC,MAAMS,EAAYd,EAAY,KAAK,KAAK,KAAK,EAC7C,OAAON,EAAmBoB,CAAS,EAAE,MAAM,CAAC,CAC9C,CAAC,CACH,CACF",
6
- "names": ["bufferToHexaString", "hexaStringToBuffer", "Either", "Just", "Nothing", "Right", "CryptoUtils", "TLVBuilder", "TLVParser", "LKRPBlock", "bytes", "data", "hex", "builder", "header", "cmd", "sigStart", "signature", "commands", "l", "hashValue"]
4
+ "sourcesContent": ["import {\n bufferToHexaString,\n ByteArrayBuilder,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { Either, Just, type Maybe, Nothing, Right } from \"purify-ts\";\n\nimport { type LKRPParsingError } from \"@api/model/Errors\";\nimport {\n type LKRPBlockData,\n type LKRPBlockParsedData,\n} from \"@internal/models/LKRPBlockTypes\";\nimport { GeneralTags } from \"@internal/models/Tags\";\n\nimport { TLVParser } from \"./TLVParser\";\n\nexport class LKRPBlock {\n private hashValue: Maybe<string> = Nothing; // Cache hash value for performance\n private data: Maybe<Either<LKRPParsingError, LKRPBlockParsedData>>;\n\n public constructor(\n private readonly bytes: Uint8Array,\n data?: LKRPBlockParsedData,\n ) {\n this.data = data ? Just(Right(data)) : Nothing;\n }\n\n static fromHex(hex: string): LKRPBlock {\n return new LKRPBlock(hexaStringToBuffer(hex) ?? new Uint8Array());\n }\n\n static fromData(data: LKRPBlockData): LKRPBlock {\n const header = new ByteArrayBuilder()\n .encodeInTLVFromUInt8(GeneralTags.Int, 1) // Version 1\n .encodeInTLVFromHexa(GeneralTags.Hash, data.parent)\n .encodeInTLVFromBuffer(GeneralTags.PublicKey, data.issuer)\n .encodeInTLVFromUInt8(GeneralTags.Int, data.commands.length)\n .build();\n\n const commandsBuilder = new ByteArrayBuilder();\n data.commands.forEach((cmd) =>\n commandsBuilder.addBufferToData(cmd.toU8A()),\n );\n const commands = commandsBuilder.build();\n\n const signature = new ByteArrayBuilder()\n .encodeInTLVFromBuffer(GeneralTags.Signature, data.signature)\n .build();\n\n const bytes = new ByteArrayBuilder()\n .addBufferToData(header)\n .addBufferToData(commands)\n .addBufferToData(signature)\n .build();\n\n return new LKRPBlock(bytes, { ...data, header, signature });\n }\n\n toString(): string {\n return bufferToHexaString(this.bytes, false);\n }\n\n toU8A(): Uint8Array {\n return this.bytes;\n }\n\n parse(): Either<LKRPParsingError, LKRPBlockParsedData> {\n return this.data.orDefaultLazy(() => {\n const data = new TLVParser(this.bytes).parseBlockData();\n this.data = Just(data);\n return data;\n });\n }\n\n toHuman(): Either<LKRPParsingError, string> {\n return this.parse()\n .chain((data) =>\n Either.sequence(data.commands.map((cmd) => cmd.toHuman())).map(\n (commands) => ({ ...data, commands }),\n ),\n )\n .map((data) =>\n [\n `Parent: ${data.parent}`,\n `Issuer: ${bufferToHexaString(data.issuer, false)}`,\n `Commands:${data.commands\n .flatMap((cmd) => cmd.split(\"\\n\").map((l) => `\\n ${l}`))\n .join(\"\")}`,\n `Signature: ${bufferToHexaString(data.signature.slice(2), false)}`,\n ].join(\"\\n\"),\n );\n }\n\n hash(): string {\n return this.hashValue.orDefaultLazy(() => {\n const hashValue = sha256(this.bytes);\n return bufferToHexaString(hashValue, false);\n });\n }\n}\n"],
5
+ "mappings": "AAAA,OACE,sBAAAA,EACA,oBAAAC,EACA,sBAAAC,MACK,kCACP,OAAS,UAAAC,MAAc,uBACvB,OAAS,UAAAC,EAAQ,QAAAC,EAAkB,WAAAC,EAAS,SAAAC,MAAa,YAOzD,OAAS,eAAAC,MAAmB,wBAE5B,OAAS,aAAAC,MAAiB,cAEnB,MAAMC,CAAU,CAId,YACYC,EACjBC,EACA,CAFiB,WAAAD,EAGjB,KAAK,KAAOC,EAAOP,EAAKE,EAAMK,CAAI,CAAC,EAAIN,CACzC,CARQ,UAA2BA,EAC3B,KASR,OAAO,QAAQO,EAAwB,CACrC,OAAO,IAAIH,EAAUR,EAAmBW,CAAG,GAAK,IAAI,UAAY,CAClE,CAEA,OAAO,SAASD,EAAgC,CAC9C,MAAME,EAAS,IAAIb,EAAiB,EACjC,qBAAqBO,EAAY,IAAK,CAAC,EACvC,oBAAoBA,EAAY,KAAMI,EAAK,MAAM,EACjD,sBAAsBJ,EAAY,UAAWI,EAAK,MAAM,EACxD,qBAAqBJ,EAAY,IAAKI,EAAK,SAAS,MAAM,EAC1D,MAAM,EAEHG,EAAkB,IAAId,EAC5BW,EAAK,SAAS,QAASI,GACrBD,EAAgB,gBAAgBC,EAAI,MAAM,CAAC,CAC7C,EACA,MAAMC,EAAWF,EAAgB,MAAM,EAEjCG,EAAY,IAAIjB,EAAiB,EACpC,sBAAsBO,EAAY,UAAWI,EAAK,SAAS,EAC3D,MAAM,EAEHD,EAAQ,IAAIV,EAAiB,EAChC,gBAAgBa,CAAM,EACtB,gBAAgBG,CAAQ,EACxB,gBAAgBC,CAAS,EACzB,MAAM,EAET,OAAO,IAAIR,EAAUC,EAAO,CAAE,GAAGC,EAAM,OAAAE,EAAQ,UAAAI,CAAU,CAAC,CAC5D,CAEA,UAAmB,CACjB,OAAOlB,EAAmB,KAAK,MAAO,EAAK,CAC7C,CAEA,OAAoB,CAClB,OAAO,KAAK,KACd,CAEA,OAAuD,CACrD,OAAO,KAAK,KAAK,cAAc,IAAM,CACnC,MAAMY,EAAO,IAAIH,EAAU,KAAK,KAAK,EAAE,eAAe,EACtD,YAAK,KAAOJ,EAAKO,CAAI,EACdA,CACT,CAAC,CACH,CAEA,SAA4C,CAC1C,OAAO,KAAK,MAAM,EACf,MAAOA,GACNR,EAAO,SAASQ,EAAK,SAAS,IAAKI,GAAQA,EAAI,QAAQ,CAAC,CAAC,EAAE,IACxDC,IAAc,CAAE,GAAGL,EAAM,SAAAK,CAAS,EACrC,CACF,EACC,IAAKL,GACJ,CACE,WAAWA,EAAK,MAAM,GACtB,WAAWZ,EAAmBY,EAAK,OAAQ,EAAK,CAAC,GACjD,YAAYA,EAAK,SACd,QAASI,GAAQA,EAAI,MAAM;AAAA,CAAI,EAAE,IAAKG,GAAM;AAAA,IAAOA,CAAC,EAAE,CAAC,EACvD,KAAK,EAAE,CAAC,GACX,cAAcnB,EAAmBY,EAAK,UAAU,MAAM,CAAC,EAAG,EAAK,CAAC,EAClE,EAAE,KAAK;AAAA,CAAI,CACb,CACJ,CAEA,MAAe,CACb,OAAO,KAAK,UAAU,cAAc,IAAM,CACxC,MAAMQ,EAAYjB,EAAO,KAAK,KAAK,EACnC,OAAOH,EAAmBoB,EAAW,EAAK,CAC5C,CAAC,CACH,CACF",
6
+ "names": ["bufferToHexaString", "ByteArrayBuilder", "hexaStringToBuffer", "sha256", "Either", "Just", "Nothing", "Right", "GeneralTags", "TLVParser", "LKRPBlock", "bytes", "data", "hex", "header", "commandsBuilder", "cmd", "commands", "signature", "l", "hashValue"]
7
7
  }
@@ -1,4 +1,4 @@
1
- import{Left as n,Right as b}from"purify-ts";import{LKRPParsingError as s}from"../../api/app-binder/Errors";import{GeneralTags as l}from"../models/Tags";import{hexToBytes as m}from"./hex";import{LKRPBlock as d}from"./LKRPBlock";import{LKRPCommand as t}from"./LKRPCommand";const f={parent:"0000",issuer:new Uint8Array([1,2,3]),commands:[t.fromHex("10020102"),t.fromHex("11020304")],signature:new Uint8Array([4,5,6])},r=["010101","02020000","0603010203","010102"].join(""),a=[...r,"10020102","11020304","0303040506"].join(""),o={...f,header:m(r),signature:Uint8Array.from([l.Signature,3,...f.signature])};describe("LKRPBlock",()=>{describe("fromData",()=>{it("should create a Block from data",()=>{const e=d.fromData(f);expect(e.parse()).toStrictEqual(b(o)),expect(e.toString()).toBe(a)})}),describe("toString",()=>{it("should return the hex representation of the block",()=>{const e=d.fromHex(a);expect(e.toString()).toBe(a)})}),describe("toU8A",()=>{it("should return the bytes of the block",()=>{const e=new Uint8Array([1,2,3,4,5,6,7,8]),c=new d(e);expect(c.toU8A()).toBe(e)})}),describe("parse",()=>{it("should parse the block data correctly",()=>{const c=d.fromHex(a).parse();expect(c).toStrictEqual(b(o))}),it("should fail if the block data is invalid",()=>{const e=d.fromHex("invalid");expect(e.parse()).toStrictEqual(n(new s("Unexpected end of TLV")))})}),describe("toHuman",()=>{it("should return a human-readable representation of the block",()=>{const e=`
1
+ import{hexaStringToBuffer as n}from"@ledgerhq/device-management-kit";import{Left as s,Right as b}from"purify-ts";import{LKRPParsingError as l}from"../../api/model/Errors";import{GeneralTags as m}from"../models/Tags";import{LKRPBlock as d}from"./LKRPBlock";import{LKRPCommand as t}from"./LKRPCommand";const f={parent:"0000",issuer:new Uint8Array([1,2,3]),commands:[t.fromHex("10020102"),t.fromHex("11020304")],signature:new Uint8Array([4,5,6])},r=["010101","02020000","0603010203","010102"].join(""),c=[...r,"10020102","11020304","0303040506"].join(""),o={...f,header:n(r),signature:Uint8Array.from([m.Signature,3,...f.signature])};describe("LKRPBlock",()=>{describe("fromData",()=>{it("should create a Block from data",()=>{const e=d.fromData(f);expect(e.parse()).toStrictEqual(b(o)),expect(e.toString()).toBe(c)})}),describe("toString",()=>{it("should return the hex representation of the block",()=>{const e=d.fromHex(c);expect(e.toString()).toBe(c)})}),describe("toU8A",()=>{it("should return the bytes of the block",()=>{const e=new Uint8Array([1,2,3,4,5,6,7,8]),a=new d(e);expect(a.toU8A()).toBe(e)})}),describe("parse",()=>{it("should parse the block data correctly",()=>{const a=d.fromHex(c).parse();expect(a).toStrictEqual(b(o))}),it("should fail if the block data is invalid",()=>{const e=d.fromHex("invalid");expect(e.parse()).toStrictEqual(s(new l("Unexpected end of TLV")))})}),describe("toHuman",()=>{it("should return a human-readable representation of the block",()=>{const e=`
2
2
  01 01 01
3
3
  02 20 1d bf 17 52 c5 4b 9f b5 4f b7 c3 63 c1 e6 15 f7 2f d9 61 b7 97 e6 f0 9e 6c 1d 1b 6e db 28 5a 6d
4
4
  06 21 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21
@@ -20,5 +20,5 @@ import{Left as n,Right as b}from"purify-ts";import{LKRPParsingError as s}from"..
20
20
  06 21 02 45 f1 1d 7d 78 bd 22 76 45 11 8a bb 20 b4 07 ff 97 8d f8 7a 6b b3 c4 46 1d 63 37 66 85 8f 98 f5
21
21
  03 47 30 45 02 21 00 a0 ea 9d ee 12 f3 83 13 2f 90 72 ad 47 85 a4 15 14 75 d5 70 4a a9 ff 7f 95 52 e9 03 47 b4 ce be 02 20 71 a3 e4 4c 1f 4f a6 4b c6 e2 f4 06 fa 00 fc b4 6f 70 1c 99 49 29 12 bf 33 c7 3e df b2 d5 d1 71
22
22
  `.replace(/\s/g,""),i=d.fromHex(e).toHuman();expect(i).toStrictEqual(b(["Parent: 1dbf1752c54b9fb54fb7c363c1e615f72fd961b797e6f09e6c1d1b6edb285a6d","Issuer: 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021","Commands:"," Derive(0x15):"," path: m/0'/16'/1'"," groupKey: 034f37312d9babd8c032e1dd2de33da369fa1ce30f005bbba600d17330ba392cb2"," initializationVector: b6da2c97a3ec8b074f38f1508aed3335"," encryptedXpriv: d21f8f307702333f7a593bebd798a6b06eb5904277268a91350a3c1b1ee67c24b5a47d228c60d0fbc1524eac1bcf123e6e26b5d71708291cc08dcf49de0bb34bacf20093524ca6565d87c636b24475b2"," ephemeralPublicKey: 0293feb66412536d3d71d5c7afac96a36ea8c685889eebcf6f6f82685712fef150"," AddMember(0x11):"," name: debug-d4c61d"," publicKey: 03d4c61dda2aaf762954fce97396d9be0399e1dc75c3b790c7a34dde8596a11812"," permissions: 4294967295"," PublishKey(0x12):"," initializationVector: e7b736c40b14a830fb23aaded8eae544"," encryptedXpriv: df7e808c794675d0a2d466d4efc8ecd07d52368016100d34d6fdb8e6da86e92fbbb7110cb56429b83b1cb974ed4b705143f691b5b81468abd2c526266a6dee6df4fdf1a9d81fe74cda4f61c98960b4db"," recipient: 03d4c61dda2aaf762954fce97396d9be0399e1dc75c3b790c7a34dde8596a11812"," ephemeralPublicKey: 0245f11d7d78bd227645118abb20b407ff978df87a6bb3c4461d633766858f98f5","Signature: 3045022100a0ea9dee12f383132f9072ad4785a4151475d5704aa9ff7f9552e90347b4cebe022071a3e44c1f4fa64bc6e2f406fa00fcb46f701c99492912bf33c73edfb2d5d171"].join(`
23
- `)))})}),describe("hash",()=>{it("should return the hash of the block",()=>{const c=d.fromHex(a).hash();expect(c).toBe("7cf783bc15c062242ab92796237da3b192361da7645c488d5023698d4f9cc952")})})});
23
+ `)))})}),describe("hash",()=>{it("should return the hash of the block",()=>{const a=d.fromHex(c).hash();expect(a).toBe("7cf783bc15c062242ab92796237da3b192361da7645c488d5023698d4f9cc952")})})});
24
24
  //# sourceMappingURL=LKRPBlock.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/internal/utils/LKRPBlock.test.ts"],
4
- "sourcesContent": ["import { Left, Right } from \"purify-ts\";\n\nimport { LKRPParsingError } from \"@api/app-binder/Errors\";\nimport { GeneralTags } from \"@internal/models/Tags\";\n\nimport { hexToBytes } from \"./hex\";\nimport { LKRPBlock } from \"./LKRPBlock\";\nimport { LKRPCommand } from \"./LKRPCommand\";\n\n// Mocked data for testing\nconst mockedBlockData = {\n parent: \"0000\",\n issuer: new Uint8Array([1, 2, 3]),\n commands: [LKRPCommand.fromHex(\"10020102\"), LKRPCommand.fromHex(\"11020304\")],\n signature: new Uint8Array([4, 5, 6]),\n};\nconst mockedHeaderHex = [\n \"010101\", // Version: 1\n \"02020000\", // Parent hash: 00 00 00\n \"0603010203\", // Issuer: 01 02 03\n \"010102\", // Command Count: 2\n].join(\"\");\nconst mockedBlockHex = [\n ...mockedHeaderHex, // Header\n \"10020102\", // Command 1\n \"11020304\", // Command 2\n \"0303040506\", // Signature: 04 05 06\n].join(\"\");\nconst parsedMockedBlockData = {\n ...mockedBlockData,\n header: hexToBytes(mockedHeaderHex),\n signature: Uint8Array.from([\n GeneralTags.Signature,\n 3,\n ...mockedBlockData.signature,\n ]),\n};\n\ndescribe(\"LKRPBlock\", () => {\n describe(\"fromData\", () => {\n it(\"should create a Block from data\", () => {\n // WHEN\n const block = LKRPBlock.fromData(mockedBlockData);\n // THEN\n expect(block.parse()).toStrictEqual(Right(parsedMockedBlockData));\n expect(block.toString()).toBe(mockedBlockHex);\n });\n });\n\n describe(\"toString\", () => {\n it(\"should return the hex representation of the block\", () => {\n // WHEN\n const block = LKRPBlock.fromHex(mockedBlockHex);\n // THEN\n expect(block.toString()).toBe(mockedBlockHex);\n });\n });\n\n describe(\"toU8A\", () => {\n it(\"should return the bytes of the block\", () => {\n // GIVEN\n const bytes = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);\n // WHEN\n const block = new LKRPBlock(bytes);\n // THEN\n expect(block.toU8A()).toBe(bytes);\n });\n });\n\n describe(\"parse\", () => {\n it(\"should parse the block data correctly\", () => {\n // GIVEN\n const block = LKRPBlock.fromHex(mockedBlockHex);\n // WHEN\n const parsedData = block.parse();\n // THEN\n expect(parsedData).toStrictEqual(Right(parsedMockedBlockData));\n });\n\n it(\"should fail if the block data is invalid\", () => {\n // WHEN\n const invalidBlock = LKRPBlock.fromHex(\"invalid\");\n // THEN\n expect(invalidBlock.parse()).toStrictEqual(\n Left(new LKRPParsingError(\"Unexpected end of TLV\")),\n );\n });\n });\n\n describe(\"toHuman\", () => {\n it(\"should return a human-readable representation of the block\", () => {\n // GIVEN\n const hex = `\n 01 01 01\n 02 20 1d bf 17 52 c5 4b 9f b5 4f b7 c3 63 c1 e6 15 f7 2f d9 61 b7 97 e6 f0 9e 6c 1d 1b 6e db 28 5a 6d\n 06 21 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21\n 01 01 03\n 15 b8\n 05 0c 80 00 00 00 80 00 00 10 80 00 00 01\n 06 21 03 4f 37 31 2d 9b ab d8 c0 32 e1 dd 2d e3 3d a3 69 fa 1c e3 0f 00 5b bb a6 00 d1 73 30 ba 39 2c b2\n 05 10 b6 da 2c 97 a3 ec 8b 07 4f 38 f1 50 8a ed 33 35\n 05 50 d2 1f 8f 30 77 02 33 3f 7a 59 3b eb d7 98 a6 b0 6e b5 90 42 77 26 8a 91 35 0a 3c 1b 1e e6 7c 24 b5 a4 7d 22 8c 60 d0 fb c1 52 4e ac 1b cf 12 3e 6e 26 b5 d7 17 08 29 1c c0 8d cf 49 de 0b b3 4b ac f2 00 93 52 4c a6 56 5d 87 c6 36 b2 44 75 b2\n 06 21 02 93 fe b6 64 12 53 6d 3d 71 d5 c7 af ac 96 a3 6e a8 c6 85 88 9e eb cf 6f 6f 82 68 57 12 fe f1 50\n 11 37\n 04 0c 64 65 62 75 67 2d 64 34 63 36 31 64\n 06 21 03 d4 c6 1d da 2a af 76 29 54 fc e9 73 96 d9 be 03 99 e1 dc 75 c3 b7 90 c7 a3 4d de 85 96 a1 18 12\n 01 04 ff ff ff ff\n 12 aa\n 05 10 e7 b7 36 c4 0b 14 a8 30 fb 23 aa de d8 ea e5 44\n 05 50 df 7e 80 8c 79 46 75 d0 a2 d4 66 d4 ef c8 ec d0 7d 52 36 80 16 10 0d 34 d6 fd b8 e6 da 86 e9 2f bb b7 11 0c b5 64 29 b8 3b 1c b9 74 ed 4b 70 51 43 f6 91 b5 b8 14 68 ab d2 c5 26 26 6a 6d ee 6d f4 fd f1 a9 d8 1f e7 4c da 4f 61 c9 89 60 b4 db\n 06 21 03 d4 c6 1d da 2a af 76 29 54 fc e9 73 96 d9 be 03 99 e1 dc 75 c3 b7 90 c7 a3 4d de 85 96 a1 18 12\n 06 21 02 45 f1 1d 7d 78 bd 22 76 45 11 8a bb 20 b4 07 ff 97 8d f8 7a 6b b3 c4 46 1d 63 37 66 85 8f 98 f5\n 03 47 30 45 02 21 00 a0 ea 9d ee 12 f3 83 13 2f 90 72 ad 47 85 a4 15 14 75 d5 70 4a a9 ff 7f 95 52 e9 03 47 b4 ce be 02 20 71 a3 e4 4c 1f 4f a6 4b c6 e2 f4 06 fa 00 fc b4 6f 70 1c 99 49 29 12 bf 33 c7 3e df b2 d5 d1 71\n `.replace(/\\s/g, \"\");\n\n // WHEN\n const block = LKRPBlock.fromHex(hex);\n const humanReadable = block.toHuman();\n\n // THEN\n expect(humanReadable).toStrictEqual(\n Right(\n [\n `Parent: 1dbf1752c54b9fb54fb7c363c1e615f72fd961b797e6f09e6c1d1b6edb285a6d`,\n `Issuer: 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021`,\n `Commands:`,\n ` Derive(0x15):`,\n ` path: m/0'/16'/1'`,\n ` groupKey: 034f37312d9babd8c032e1dd2de33da369fa1ce30f005bbba600d17330ba392cb2`,\n ` initializationVector: b6da2c97a3ec8b074f38f1508aed3335`,\n ` encryptedXpriv: d21f8f307702333f7a593bebd798a6b06eb5904277268a91350a3c1b1ee67c24b5a47d228c60d0fbc1524eac1bcf123e6e26b5d71708291cc08dcf49de0bb34bacf20093524ca6565d87c636b24475b2`,\n ` ephemeralPublicKey: 0293feb66412536d3d71d5c7afac96a36ea8c685889eebcf6f6f82685712fef150`,\n ` AddMember(0x11):`,\n ` name: debug-d4c61d`,\n ` publicKey: 03d4c61dda2aaf762954fce97396d9be0399e1dc75c3b790c7a34dde8596a11812`,\n ` permissions: 4294967295`,\n ` PublishKey(0x12):`,\n ` initializationVector: e7b736c40b14a830fb23aaded8eae544`,\n ` encryptedXpriv: df7e808c794675d0a2d466d4efc8ecd07d52368016100d34d6fdb8e6da86e92fbbb7110cb56429b83b1cb974ed4b705143f691b5b81468abd2c526266a6dee6df4fdf1a9d81fe74cda4f61c98960b4db`,\n ` recipient: 03d4c61dda2aaf762954fce97396d9be0399e1dc75c3b790c7a34dde8596a11812`,\n ` ephemeralPublicKey: 0245f11d7d78bd227645118abb20b407ff978df87a6bb3c4461d633766858f98f5`,\n `Signature: 3045022100a0ea9dee12f383132f9072ad4785a4151475d5704aa9ff7f9552e90347b4cebe022071a3e44c1f4fa64bc6e2f406fa00fcb46f701c99492912bf33c73edfb2d5d171`,\n ].join(\"\\n\"),\n ),\n );\n });\n });\n\n describe(\"hash\", () => {\n it(\"should return the hash of the block\", () => {\n // GIVEN\n const block = LKRPBlock.fromHex(mockedBlockHex);\n // WHEN\n const hash = block.hash();\n // THEN\n expect(hash).toBe(\n \"7cf783bc15c062242ab92796237da3b192361da7645c488d5023698d4f9cc952\",\n );\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["Left", "Right", "LKRPParsingError", "GeneralTags", "hexToBytes", "LKRPBlock", "LKRPCommand", "mockedBlockData", "mockedHeaderHex", "mockedBlockHex", "parsedMockedBlockData", "block", "bytes", "parsedData", "invalidBlock", "hex", "humanReadable", "hash"]
4
+ "sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { LKRPParsingError } from \"@api/model/Errors\";\nimport { GeneralTags } from \"@internal/models/Tags\";\n\nimport { LKRPBlock } from \"./LKRPBlock\";\nimport { LKRPCommand } from \"./LKRPCommand\";\n\n// Mocked data for testing\nconst mockedBlockData = {\n parent: \"0000\",\n issuer: new Uint8Array([1, 2, 3]),\n commands: [LKRPCommand.fromHex(\"10020102\"), LKRPCommand.fromHex(\"11020304\")],\n signature: new Uint8Array([4, 5, 6]),\n};\nconst mockedHeaderHex = [\n \"010101\", // Version: 1\n \"02020000\", // Parent hash: 00 00 00\n \"0603010203\", // Issuer: 01 02 03\n \"010102\", // Command Count: 2\n].join(\"\");\nconst mockedBlockHex = [\n ...mockedHeaderHex, // Header\n \"10020102\", // Command 1\n \"11020304\", // Command 2\n \"0303040506\", // Signature: 04 05 06\n].join(\"\");\nconst parsedMockedBlockData = {\n ...mockedBlockData,\n header: hexaStringToBuffer(mockedHeaderHex)!,\n signature: Uint8Array.from([\n GeneralTags.Signature,\n 3,\n ...mockedBlockData.signature,\n ]),\n};\n\ndescribe(\"LKRPBlock\", () => {\n describe(\"fromData\", () => {\n it(\"should create a Block from data\", () => {\n // WHEN\n const block = LKRPBlock.fromData(mockedBlockData);\n // THEN\n expect(block.parse()).toStrictEqual(Right(parsedMockedBlockData));\n expect(block.toString()).toBe(mockedBlockHex);\n });\n });\n\n describe(\"toString\", () => {\n it(\"should return the hex representation of the block\", () => {\n // WHEN\n const block = LKRPBlock.fromHex(mockedBlockHex);\n // THEN\n expect(block.toString()).toBe(mockedBlockHex);\n });\n });\n\n describe(\"toU8A\", () => {\n it(\"should return the bytes of the block\", () => {\n // GIVEN\n const bytes = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);\n // WHEN\n const block = new LKRPBlock(bytes);\n // THEN\n expect(block.toU8A()).toBe(bytes);\n });\n });\n\n describe(\"parse\", () => {\n it(\"should parse the block data correctly\", () => {\n // GIVEN\n const block = LKRPBlock.fromHex(mockedBlockHex);\n // WHEN\n const parsedData = block.parse();\n // THEN\n expect(parsedData).toStrictEqual(Right(parsedMockedBlockData));\n });\n\n it(\"should fail if the block data is invalid\", () => {\n // WHEN\n const invalidBlock = LKRPBlock.fromHex(\"invalid\");\n // THEN\n expect(invalidBlock.parse()).toStrictEqual(\n Left(new LKRPParsingError(\"Unexpected end of TLV\")),\n );\n });\n });\n\n describe(\"toHuman\", () => {\n it(\"should return a human-readable representation of the block\", () => {\n // GIVEN\n const hex = `\n 01 01 01\n 02 20 1d bf 17 52 c5 4b 9f b5 4f b7 c3 63 c1 e6 15 f7 2f d9 61 b7 97 e6 f0 9e 6c 1d 1b 6e db 28 5a 6d\n 06 21 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21\n 01 01 03\n 15 b8\n 05 0c 80 00 00 00 80 00 00 10 80 00 00 01\n 06 21 03 4f 37 31 2d 9b ab d8 c0 32 e1 dd 2d e3 3d a3 69 fa 1c e3 0f 00 5b bb a6 00 d1 73 30 ba 39 2c b2\n 05 10 b6 da 2c 97 a3 ec 8b 07 4f 38 f1 50 8a ed 33 35\n 05 50 d2 1f 8f 30 77 02 33 3f 7a 59 3b eb d7 98 a6 b0 6e b5 90 42 77 26 8a 91 35 0a 3c 1b 1e e6 7c 24 b5 a4 7d 22 8c 60 d0 fb c1 52 4e ac 1b cf 12 3e 6e 26 b5 d7 17 08 29 1c c0 8d cf 49 de 0b b3 4b ac f2 00 93 52 4c a6 56 5d 87 c6 36 b2 44 75 b2\n 06 21 02 93 fe b6 64 12 53 6d 3d 71 d5 c7 af ac 96 a3 6e a8 c6 85 88 9e eb cf 6f 6f 82 68 57 12 fe f1 50\n 11 37\n 04 0c 64 65 62 75 67 2d 64 34 63 36 31 64\n 06 21 03 d4 c6 1d da 2a af 76 29 54 fc e9 73 96 d9 be 03 99 e1 dc 75 c3 b7 90 c7 a3 4d de 85 96 a1 18 12\n 01 04 ff ff ff ff\n 12 aa\n 05 10 e7 b7 36 c4 0b 14 a8 30 fb 23 aa de d8 ea e5 44\n 05 50 df 7e 80 8c 79 46 75 d0 a2 d4 66 d4 ef c8 ec d0 7d 52 36 80 16 10 0d 34 d6 fd b8 e6 da 86 e9 2f bb b7 11 0c b5 64 29 b8 3b 1c b9 74 ed 4b 70 51 43 f6 91 b5 b8 14 68 ab d2 c5 26 26 6a 6d ee 6d f4 fd f1 a9 d8 1f e7 4c da 4f 61 c9 89 60 b4 db\n 06 21 03 d4 c6 1d da 2a af 76 29 54 fc e9 73 96 d9 be 03 99 e1 dc 75 c3 b7 90 c7 a3 4d de 85 96 a1 18 12\n 06 21 02 45 f1 1d 7d 78 bd 22 76 45 11 8a bb 20 b4 07 ff 97 8d f8 7a 6b b3 c4 46 1d 63 37 66 85 8f 98 f5\n 03 47 30 45 02 21 00 a0 ea 9d ee 12 f3 83 13 2f 90 72 ad 47 85 a4 15 14 75 d5 70 4a a9 ff 7f 95 52 e9 03 47 b4 ce be 02 20 71 a3 e4 4c 1f 4f a6 4b c6 e2 f4 06 fa 00 fc b4 6f 70 1c 99 49 29 12 bf 33 c7 3e df b2 d5 d1 71\n `.replace(/\\s/g, \"\");\n\n // WHEN\n const block = LKRPBlock.fromHex(hex);\n const humanReadable = block.toHuman();\n\n // THEN\n expect(humanReadable).toStrictEqual(\n Right(\n [\n `Parent: 1dbf1752c54b9fb54fb7c363c1e615f72fd961b797e6f09e6c1d1b6edb285a6d`,\n `Issuer: 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021`,\n `Commands:`,\n ` Derive(0x15):`,\n ` path: m/0'/16'/1'`,\n ` groupKey: 034f37312d9babd8c032e1dd2de33da369fa1ce30f005bbba600d17330ba392cb2`,\n ` initializationVector: b6da2c97a3ec8b074f38f1508aed3335`,\n ` encryptedXpriv: d21f8f307702333f7a593bebd798a6b06eb5904277268a91350a3c1b1ee67c24b5a47d228c60d0fbc1524eac1bcf123e6e26b5d71708291cc08dcf49de0bb34bacf20093524ca6565d87c636b24475b2`,\n ` ephemeralPublicKey: 0293feb66412536d3d71d5c7afac96a36ea8c685889eebcf6f6f82685712fef150`,\n ` AddMember(0x11):`,\n ` name: debug-d4c61d`,\n ` publicKey: 03d4c61dda2aaf762954fce97396d9be0399e1dc75c3b790c7a34dde8596a11812`,\n ` permissions: 4294967295`,\n ` PublishKey(0x12):`,\n ` initializationVector: e7b736c40b14a830fb23aaded8eae544`,\n ` encryptedXpriv: df7e808c794675d0a2d466d4efc8ecd07d52368016100d34d6fdb8e6da86e92fbbb7110cb56429b83b1cb974ed4b705143f691b5b81468abd2c526266a6dee6df4fdf1a9d81fe74cda4f61c98960b4db`,\n ` recipient: 03d4c61dda2aaf762954fce97396d9be0399e1dc75c3b790c7a34dde8596a11812`,\n ` ephemeralPublicKey: 0245f11d7d78bd227645118abb20b407ff978df87a6bb3c4461d633766858f98f5`,\n `Signature: 3045022100a0ea9dee12f383132f9072ad4785a4151475d5704aa9ff7f9552e90347b4cebe022071a3e44c1f4fa64bc6e2f406fa00fcb46f701c99492912bf33c73edfb2d5d171`,\n ].join(\"\\n\"),\n ),\n );\n });\n });\n\n describe(\"hash\", () => {\n it(\"should return the hash of the block\", () => {\n // GIVEN\n const block = LKRPBlock.fromHex(mockedBlockHex);\n // WHEN\n const hash = block.hash();\n // THEN\n expect(hash).toBe(\n \"7cf783bc15c062242ab92796237da3b192361da7645c488d5023698d4f9cc952\",\n );\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["hexaStringToBuffer", "Left", "Right", "LKRPParsingError", "GeneralTags", "LKRPBlock", "LKRPCommand", "mockedBlockData", "mockedHeaderHex", "mockedBlockHex", "parsedMockedBlockData", "block", "bytes", "parsedData", "invalidBlock", "hex", "humanReadable", "hash"]
7
7
  }