@ledgerhq/device-trusted-app-kit-ledger-keyring-protocol 0.0.0-wrong-error-when-in-experimental-provider-20251021162636 → 0.0.0-zzz-solana-20251204140055

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 (164) hide show
  1. package/lib/cjs/api/app-binder/AddToTrustchainDeviceActionTypes.js.map +1 -1
  2. package/lib/cjs/api/crypto/CryptoService.js.map +1 -1
  3. package/lib/cjs/api/model/Errors.js +1 -1
  4. package/lib/cjs/api/model/Errors.js.map +1 -1
  5. package/lib/cjs/internal/app-binder/LedgerKeyringProtocolBinder.js +1 -1
  6. package/lib/cjs/internal/app-binder/LedgerKeyringProtocolBinder.js.map +1 -1
  7. package/lib/cjs/internal/app-binder/command/GetAppNameCommand.js +1 -1
  8. package/lib/cjs/internal/app-binder/command/GetAppNameCommand.js.map +2 -2
  9. package/lib/cjs/internal/app-binder/command/GetSeedIdCommand.js +1 -1
  10. package/lib/cjs/internal/app-binder/command/GetSeedIdCommand.js.map +2 -2
  11. package/lib/cjs/internal/app-binder/command/GetSeedIdCommand.test.js +3 -3
  12. package/lib/cjs/internal/app-binder/command/GetSeedIdCommand.test.js.map +3 -3
  13. package/lib/cjs/internal/app-binder/command/GetVersionCommand.js +1 -1
  14. package/lib/cjs/internal/app-binder/command/GetVersionCommand.js.map +2 -2
  15. package/lib/cjs/internal/app-binder/command/InitCommand.js +1 -1
  16. package/lib/cjs/internal/app-binder/command/InitCommand.js.map +2 -2
  17. package/lib/cjs/internal/app-binder/command/InitCommand.test.js +1 -1
  18. package/lib/cjs/internal/app-binder/command/InitCommand.test.js.map +3 -3
  19. package/lib/cjs/internal/app-binder/command/ParseBlockSignatureCommand.js +1 -1
  20. package/lib/cjs/internal/app-binder/command/ParseBlockSignatureCommand.js.map +2 -2
  21. package/lib/cjs/internal/app-binder/command/ParseBlockSignatureCommand.test.js +1 -1
  22. package/lib/cjs/internal/app-binder/command/ParseBlockSignatureCommand.test.js.map +3 -3
  23. package/lib/cjs/internal/app-binder/command/ParseStreamBlockCommand.js +1 -1
  24. package/lib/cjs/internal/app-binder/command/ParseStreamBlockCommand.js.map +2 -2
  25. package/lib/cjs/internal/app-binder/command/ParseStreamBlockCommand.test.js +1 -1
  26. package/lib/cjs/internal/app-binder/command/ParseStreamBlockCommand.test.js.map +3 -3
  27. package/lib/cjs/internal/app-binder/command/ParseStreamBlockHeader.js +1 -1
  28. package/lib/cjs/internal/app-binder/command/ParseStreamBlockHeader.js.map +2 -2
  29. package/lib/cjs/internal/app-binder/command/ParseStreamBlockHeader.test.js +1 -1
  30. package/lib/cjs/internal/app-binder/command/ParseStreamBlockHeader.test.js.map +3 -3
  31. package/lib/cjs/internal/app-binder/command/SetTrustedMemberCommand.js +1 -1
  32. package/lib/cjs/internal/app-binder/command/SetTrustedMemberCommand.js.map +2 -2
  33. package/lib/cjs/internal/app-binder/command/SetTrustedMemberCommand.test.js +1 -1
  34. package/lib/cjs/internal/app-binder/command/SetTrustedMemberCommand.test.js.map +3 -3
  35. package/lib/cjs/internal/app-binder/command/SignBlockHeader.js +1 -1
  36. package/lib/cjs/internal/app-binder/command/SignBlockHeader.js.map +2 -2
  37. package/lib/cjs/internal/app-binder/command/SignBlockHeader.test.js +1 -1
  38. package/lib/cjs/internal/app-binder/command/SignBlockHeader.test.js.map +3 -3
  39. package/lib/cjs/internal/app-binder/command/SignBlockSignatureCommand.js +1 -1
  40. package/lib/cjs/internal/app-binder/command/SignBlockSignatureCommand.js.map +2 -2
  41. package/lib/cjs/internal/app-binder/command/SignBlockSignatureCommand.test.js +1 -1
  42. package/lib/cjs/internal/app-binder/command/SignBlockSignatureCommand.test.js.map +3 -3
  43. package/lib/cjs/internal/app-binder/command/SignBlockSingleCommand.js +1 -1
  44. package/lib/cjs/internal/app-binder/command/SignBlockSingleCommand.js.map +2 -2
  45. package/lib/cjs/internal/app-binder/command/SignBlockSingleCommand.test.js +1 -1
  46. package/lib/cjs/internal/app-binder/command/SignBlockSingleCommand.test.js.map +3 -3
  47. package/lib/cjs/internal/app-binder/device-action/AddToTrustchainDeviceAction.js +1 -1
  48. package/lib/cjs/internal/app-binder/device-action/AddToTrustchainDeviceAction.js.map +1 -1
  49. package/lib/cjs/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.js +1 -1
  50. package/lib/cjs/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.js.map +1 -1
  51. package/lib/cjs/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.js +1 -1
  52. package/lib/cjs/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.js.map +2 -2
  53. package/lib/cjs/internal/app-binder/device-action/models/AuthenticateWithDeviceDeviceActionTypes.js.map +1 -1
  54. package/lib/cjs/internal/app-binder/device-action/models/AuthenticateWithKeypairDeviceActionTypes.js +1 -1
  55. package/lib/cjs/internal/app-binder/device-action/models/AuthenticateWithKeypairDeviceActionTypes.js.map +1 -1
  56. package/lib/cjs/internal/app-binder/task/ExtractEncryptionKeyTask.js.map +2 -2
  57. package/lib/cjs/internal/app-binder/task/SignChallengeWithKeypairTask.js +1 -1
  58. package/lib/cjs/internal/app-binder/task/SignChallengeWithKeypairTask.js.map +2 -2
  59. package/lib/cjs/internal/app-binder/task/SignChallengeWithKeypairTask.test.js +1 -1
  60. package/lib/cjs/internal/app-binder/task/SignChallengeWithKeypairTask.test.js.map +2 -2
  61. package/lib/cjs/internal/use-cases/authentication/AuthenticateUseCase.js +1 -1
  62. package/lib/cjs/internal/use-cases/authentication/AuthenticateUseCase.js.map +1 -1
  63. package/lib/cjs/internal/use-cases/authentication/DecryptDataUseCase.js.map +1 -1
  64. package/lib/cjs/internal/use-cases/authentication/EncryptDataUseCase.js.map +1 -1
  65. package/lib/cjs/internal/utils/LKRPBlockStream.js +1 -1
  66. package/lib/cjs/internal/utils/LKRPBlockStream.js.map +2 -2
  67. package/lib/cjs/package.json +36 -32
  68. package/lib/esm/api/app-binder/AddToTrustchainDeviceActionTypes.js.map +1 -1
  69. package/lib/esm/api/crypto/CryptoService.js.map +1 -1
  70. package/lib/esm/api/model/Errors.js +1 -1
  71. package/lib/esm/api/model/Errors.js.map +1 -1
  72. package/lib/esm/internal/app-binder/LedgerKeyringProtocolBinder.js +1 -1
  73. package/lib/esm/internal/app-binder/LedgerKeyringProtocolBinder.js.map +1 -1
  74. package/lib/esm/internal/app-binder/command/GetAppNameCommand.js +1 -1
  75. package/lib/esm/internal/app-binder/command/GetAppNameCommand.js.map +2 -2
  76. package/lib/esm/internal/app-binder/command/GetSeedIdCommand.js +1 -1
  77. package/lib/esm/internal/app-binder/command/GetSeedIdCommand.js.map +2 -2
  78. package/lib/esm/internal/app-binder/command/GetSeedIdCommand.test.js +3 -3
  79. package/lib/esm/internal/app-binder/command/GetSeedIdCommand.test.js.map +3 -3
  80. package/lib/esm/internal/app-binder/command/GetVersionCommand.js +1 -1
  81. package/lib/esm/internal/app-binder/command/GetVersionCommand.js.map +2 -2
  82. package/lib/esm/internal/app-binder/command/InitCommand.js +1 -1
  83. package/lib/esm/internal/app-binder/command/InitCommand.js.map +2 -2
  84. package/lib/esm/internal/app-binder/command/InitCommand.test.js +1 -1
  85. package/lib/esm/internal/app-binder/command/InitCommand.test.js.map +3 -3
  86. package/lib/esm/internal/app-binder/command/ParseBlockSignatureCommand.js +1 -1
  87. package/lib/esm/internal/app-binder/command/ParseBlockSignatureCommand.js.map +2 -2
  88. package/lib/esm/internal/app-binder/command/ParseBlockSignatureCommand.test.js +1 -1
  89. package/lib/esm/internal/app-binder/command/ParseBlockSignatureCommand.test.js.map +3 -3
  90. package/lib/esm/internal/app-binder/command/ParseStreamBlockCommand.js +1 -1
  91. package/lib/esm/internal/app-binder/command/ParseStreamBlockCommand.js.map +2 -2
  92. package/lib/esm/internal/app-binder/command/ParseStreamBlockCommand.test.js +1 -1
  93. package/lib/esm/internal/app-binder/command/ParseStreamBlockCommand.test.js.map +3 -3
  94. package/lib/esm/internal/app-binder/command/ParseStreamBlockHeader.js +1 -1
  95. package/lib/esm/internal/app-binder/command/ParseStreamBlockHeader.js.map +2 -2
  96. package/lib/esm/internal/app-binder/command/ParseStreamBlockHeader.test.js +1 -1
  97. package/lib/esm/internal/app-binder/command/ParseStreamBlockHeader.test.js.map +3 -3
  98. package/lib/esm/internal/app-binder/command/SetTrustedMemberCommand.js +1 -1
  99. package/lib/esm/internal/app-binder/command/SetTrustedMemberCommand.js.map +2 -2
  100. package/lib/esm/internal/app-binder/command/SetTrustedMemberCommand.test.js +1 -1
  101. package/lib/esm/internal/app-binder/command/SetTrustedMemberCommand.test.js.map +3 -3
  102. package/lib/esm/internal/app-binder/command/SignBlockHeader.js +1 -1
  103. package/lib/esm/internal/app-binder/command/SignBlockHeader.js.map +2 -2
  104. package/lib/esm/internal/app-binder/command/SignBlockHeader.test.js +1 -1
  105. package/lib/esm/internal/app-binder/command/SignBlockHeader.test.js.map +3 -3
  106. package/lib/esm/internal/app-binder/command/SignBlockSignatureCommand.js +1 -1
  107. package/lib/esm/internal/app-binder/command/SignBlockSignatureCommand.js.map +2 -2
  108. package/lib/esm/internal/app-binder/command/SignBlockSignatureCommand.test.js +1 -1
  109. package/lib/esm/internal/app-binder/command/SignBlockSignatureCommand.test.js.map +3 -3
  110. package/lib/esm/internal/app-binder/command/SignBlockSingleCommand.js +1 -1
  111. package/lib/esm/internal/app-binder/command/SignBlockSingleCommand.js.map +2 -2
  112. package/lib/esm/internal/app-binder/command/SignBlockSingleCommand.test.js +1 -1
  113. package/lib/esm/internal/app-binder/command/SignBlockSingleCommand.test.js.map +3 -3
  114. package/lib/esm/internal/app-binder/device-action/AddToTrustchainDeviceAction.js +1 -1
  115. package/lib/esm/internal/app-binder/device-action/AddToTrustchainDeviceAction.js.map +1 -1
  116. package/lib/esm/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.js +1 -1
  117. package/lib/esm/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.js.map +1 -1
  118. package/lib/esm/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.js +1 -1
  119. package/lib/esm/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.js.map +2 -2
  120. package/lib/esm/internal/app-binder/task/ExtractEncryptionKeyTask.js.map +2 -2
  121. package/lib/esm/internal/app-binder/task/SignChallengeWithKeypairTask.js +1 -1
  122. package/lib/esm/internal/app-binder/task/SignChallengeWithKeypairTask.js.map +2 -2
  123. package/lib/esm/internal/app-binder/task/SignChallengeWithKeypairTask.test.js +1 -1
  124. package/lib/esm/internal/app-binder/task/SignChallengeWithKeypairTask.test.js.map +2 -2
  125. package/lib/esm/internal/use-cases/authentication/AuthenticateUseCase.js.map +1 -1
  126. package/lib/esm/internal/use-cases/authentication/DecryptDataUseCase.js.map +1 -1
  127. package/lib/esm/internal/use-cases/authentication/EncryptDataUseCase.js.map +1 -1
  128. package/lib/esm/internal/utils/LKRPBlockStream.js +2 -2
  129. package/lib/esm/internal/utils/LKRPBlockStream.js.map +2 -2
  130. package/lib/esm/package.json +36 -32
  131. package/lib/types/api/app-binder/AddToTrustchainDeviceActionTypes.d.ts +1 -1
  132. package/lib/types/internal/app-binder/LedgerKeyringProtocolBinder.d.ts +2 -2
  133. package/lib/types/internal/app-binder/command/GetAppNameCommand.d.ts +1 -0
  134. package/lib/types/internal/app-binder/command/GetAppNameCommand.d.ts.map +1 -1
  135. package/lib/types/internal/app-binder/command/GetSeedIdCommand.d.ts +1 -0
  136. package/lib/types/internal/app-binder/command/GetSeedIdCommand.d.ts.map +1 -1
  137. package/lib/types/internal/app-binder/command/GetVersionCommand.d.ts +1 -0
  138. package/lib/types/internal/app-binder/command/GetVersionCommand.d.ts.map +1 -1
  139. package/lib/types/internal/app-binder/command/InitCommand.d.ts +1 -0
  140. package/lib/types/internal/app-binder/command/InitCommand.d.ts.map +1 -1
  141. package/lib/types/internal/app-binder/command/ParseBlockSignatureCommand.d.ts +1 -0
  142. package/lib/types/internal/app-binder/command/ParseBlockSignatureCommand.d.ts.map +1 -1
  143. package/lib/types/internal/app-binder/command/ParseStreamBlockCommand.d.ts +1 -0
  144. package/lib/types/internal/app-binder/command/ParseStreamBlockCommand.d.ts.map +1 -1
  145. package/lib/types/internal/app-binder/command/ParseStreamBlockHeader.d.ts +1 -0
  146. package/lib/types/internal/app-binder/command/ParseStreamBlockHeader.d.ts.map +1 -1
  147. package/lib/types/internal/app-binder/command/SetTrustedMemberCommand.d.ts +1 -0
  148. package/lib/types/internal/app-binder/command/SetTrustedMemberCommand.d.ts.map +1 -1
  149. package/lib/types/internal/app-binder/command/SignBlockHeader.d.ts +1 -0
  150. package/lib/types/internal/app-binder/command/SignBlockHeader.d.ts.map +1 -1
  151. package/lib/types/internal/app-binder/command/SignBlockSignatureCommand.d.ts +1 -0
  152. package/lib/types/internal/app-binder/command/SignBlockSignatureCommand.d.ts.map +1 -1
  153. package/lib/types/internal/app-binder/command/SignBlockSingleCommand.d.ts +1 -0
  154. package/lib/types/internal/app-binder/command/SignBlockSingleCommand.d.ts.map +1 -1
  155. package/lib/types/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.d.ts +1 -1
  156. package/lib/types/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.d.ts +2 -2
  157. package/lib/types/internal/app-binder/device-action/models/AuthenticateWithDeviceDeviceActionTypes.d.ts +1 -1
  158. package/lib/types/internal/app-binder/device-action/models/AuthenticateWithKeypairDeviceActionTypes.d.ts +1 -1
  159. package/lib/types/internal/app-binder/task/ExtractEncryptionKeyTask.d.ts +1 -1
  160. package/lib/types/internal/app-binder/task/SignChallengeWithKeypairTask.d.ts +2 -2
  161. package/lib/types/internal/use-cases/authentication/AuthenticateUseCase.d.ts +1 -1
  162. package/lib/types/internal/utils/LKRPBlockStream.d.ts +1 -1
  163. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  164. package/package.json +35 -31
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/internal/utils/LKRPBlockStream.ts"],
4
- "sourcesContent": ["import {\n bufferToHexaString,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\nimport { Either, Just, Maybe, MaybeAsync, Nothing, Right } from \"purify-ts\";\n\nimport { type CryptoService, EncryptionAlgo } from \"@api/crypto/CryptoService\";\nimport { type KeyPair } from \"@api/crypto/KeyPair\";\nimport { type LKRPParsingError } from \"@api/model/Errors\";\nimport { type LKRPBlockData } from \"@internal/models/LKRPBlockTypes\";\nimport { CommandTags } from \"@internal/models/Tags\";\nimport {\n type EncryptedPublishedKey,\n type PublishedKey,\n} from \"@internal/models/Types\";\n\nimport { LKRPBlock } from \"./LKRPBlock\";\nimport { TLVParser } from \"./TLVParser\";\n\nexport class LKRPBlockStream {\n private validation: Maybe<Promise<boolean>> = Nothing;\n private blocks: Maybe<Either<LKRPParsingError, LKRPBlock[]>> = Nothing;\n private path: Maybe<string> = Nothing;\n\n constructor(\n private readonly bytes: Uint8Array,\n blocks?: LKRPBlock[],\n ) {\n this.blocks = blocks ? Just(Right(blocks)) : Nothing;\n }\n\n static fromHex(hex: string): LKRPBlockStream {\n return new LKRPBlockStream(hexaStringToBuffer(hex) ?? new Uint8Array());\n }\n\n static fromData(\n blocksData: Omit<LKRPBlockData, \"parent\">[],\n parentHash?: string,\n ): LKRPBlockStream {\n const blocks: LKRPBlock[] = [];\n let hash =\n parentHash ??\n bufferToHexaString(crypto.getRandomValues(new Uint8Array(32)), false);\n\n for (const blockData of blocksData) {\n const block = LKRPBlock.fromData({\n ...blockData,\n parent: hash,\n });\n hash = block.hash();\n blocks.push(block);\n }\n const bytes = blocks.reduce(\n (acc, block) => new Uint8Array([...acc, ...block.toU8A()]),\n new Uint8Array(),\n );\n return new LKRPBlockStream(bytes, blocks);\n }\n\n toU8A(): Uint8Array {\n return this.bytes;\n }\n\n toString(): string {\n return bufferToHexaString(this.bytes, false);\n }\n\n parse(): Either<LKRPParsingError, LKRPBlock[]> {\n return this.blocks.orDefaultLazy(() => {\n const parser = new TLVParser(this.bytes);\n const parsed: Either<LKRPParsingError, LKRPBlock>[] = [];\n while (!parser.state.isDone) {\n const start = parser.state.offset;\n const block = parser.parseBlockData().map((data) => {\n const end = parser.state.offset;\n return new LKRPBlock(this.bytes.slice(start, end), data);\n });\n parsed.push(block);\n if (block.isLeft()) break;\n }\n const blocks = Either.sequence(parsed);\n this.blocks = Just(blocks);\n return blocks;\n });\n }\n\n toHuman(): Either<LKRPParsingError, string> {\n return this.parse()\n .map((blocks) => blocks.map((block) => block.toHuman()))\n .chain(Either.sequence)\n .map((blocks) => blocks.join(\"\\n\\n\"));\n }\n\n async validate(streamParentHash?: string): Promise<boolean> {\n return this.validation.orDefaultLazy(async () => {\n const validation = this.parse()\n .map((blocks) =>\n blocks.map((block) =>\n block\n .parse()\n .map(({ parent }) => ({ parent, hash: () => block.hash() })),\n ),\n )\n .chain(Either.sequence)\n .toMaybe()\n .map(async (blocks) => {\n if (\n streamParentHash &&\n blocks[0] &&\n streamParentHash !== blocks[0].parent\n ) {\n return false;\n }\n\n for await (const [index, block] of blocks.entries()) {\n const nextBlock = blocks[index + 1];\n if (nextBlock && block.hash() !== nextBlock.parent) {\n return false;\n }\n }\n return true;\n })\n .orDefault(Promise.resolve(false));\n\n return validation;\n });\n }\n\n getPath(): Maybe<string> {\n this.path.ifNothing(() => {\n this.path = this.parse()\n .toMaybe()\n .chainNullable((blocks) => blocks[0])\n .chain((block) => block.parse().toMaybe())\n .chainNullable(({ commands }) => commands[0])\n .chain((command) => command.parse().toMaybe())\n .chain((data) => {\n switch (data.type) {\n case CommandTags.Derive:\n return Just(data.path);\n case CommandTags.Seed:\n return Just(\"m/0'\");\n default:\n return Nothing;\n }\n });\n });\n return this.path;\n }\n\n getMemberBlock(member: string): Maybe<LKRPBlockData> {\n return this.parse()\n .toMaybe()\n .chain((blocks) => {\n for (const block of blocks) {\n const parsedBlock = block.parse();\n if (parsedBlock.isRight()) {\n const blockData = parsedBlock.extract();\n for (const command of blockData.commands) {\n const pubkey = command.getPublicKey();\n if (pubkey.isJust() && pubkey.extract() === member) {\n return Maybe.of(blockData);\n }\n }\n }\n }\n return Nothing;\n });\n }\n\n hasMember(member: string): boolean {\n return this.getMemberBlock(member).isJust();\n }\n\n async getPublishedKey(\n cryptoService: CryptoService,\n keypair: KeyPair,\n ): Promise<Maybe<PublishedKey>> {\n return MaybeAsync.liftMaybe(\n this.getMemberBlock(keypair.getPublicKeyToHex()).chain(\n (block): Maybe<EncryptedPublishedKey> => {\n for (const command of block.commands) {\n const key = command.getEncryptedPublishedKey();\n if (key.isJust()) {\n return key;\n }\n }\n return Nothing;\n },\n ),\n ).map(async (published) => {\n const secret = (\n await keypair.deriveSharedSecret(published.ephemeralPublicKey)\n ).slice(1);\n const key = cryptoService.importSymmetricKey(\n secret,\n EncryptionAlgo.AES256_GCM,\n );\n const xpriv = await key.decrypt(\n published.initializationVector,\n published.encryptedXpriv,\n );\n return { privateKey: xpriv.slice(0, 32), chainCode: xpriv.slice(32) };\n });\n }\n}\n"],
4
+ "sourcesContent": ["import {\n bufferToHexaString,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\nimport { Either, Just, Maybe, MaybeAsync, Nothing, Right } from \"purify-ts\";\n\nimport { type CryptoService, EncryptionAlgo } from \"@api/crypto/CryptoService\";\nimport { type KeyPair } from \"@api/crypto/KeyPair\";\nimport { type LKRPParsingError } from \"@api/model/Errors\";\nimport { type LKRPBlockData } from \"@internal/models/LKRPBlockTypes\";\nimport { CommandTags } from \"@internal/models/Tags\";\nimport {\n type EncryptedPublishedKey,\n type PublishedKey,\n} from \"@internal/models/Types\";\n\nimport { LKRPBlock } from \"./LKRPBlock\";\nimport { TLVParser } from \"./TLVParser\";\n\nexport class LKRPBlockStream {\n private validation: Maybe<Promise<boolean>> = Nothing;\n private blocks: Maybe<Either<LKRPParsingError, LKRPBlock[]>> = Nothing;\n private path: Maybe<string> = Nothing;\n\n constructor(\n private readonly bytes: Uint8Array,\n blocks?: LKRPBlock[],\n ) {\n this.blocks = blocks ? Just(Right(blocks)) : Nothing;\n }\n\n static fromHex(hex: string): LKRPBlockStream {\n return new LKRPBlockStream(hexaStringToBuffer(hex) ?? new Uint8Array());\n }\n\n static fromData(\n blocksData: Omit<LKRPBlockData, \"parent\">[],\n parentHash?: string,\n ): LKRPBlockStream {\n const blocks: LKRPBlock[] = [];\n let hash =\n parentHash ??\n bufferToHexaString(crypto.getRandomValues(new Uint8Array(32)), false);\n\n for (const blockData of blocksData) {\n const block = LKRPBlock.fromData({\n ...blockData,\n parent: hash,\n });\n hash = block.hash();\n blocks.push(block);\n }\n const bytes = blocks.reduce(\n (acc, block) => new Uint8Array([...acc, ...block.toU8A()]),\n new Uint8Array(),\n );\n return new LKRPBlockStream(bytes, blocks);\n }\n\n toU8A(): Uint8Array {\n return this.bytes;\n }\n\n toString(): string {\n return bufferToHexaString(this.bytes, false);\n }\n\n parse(): Either<LKRPParsingError, LKRPBlock[]> {\n return this.blocks.orDefaultLazy(() => {\n const parser = new TLVParser(this.bytes);\n const parsed: Either<LKRPParsingError, LKRPBlock>[] = [];\n while (!parser.state.isDone) {\n const start = parser.state.offset;\n const block = parser.parseBlockData().map((data) => {\n const end = parser.state.offset;\n return new LKRPBlock(this.bytes.slice(start, end), data);\n });\n parsed.push(block);\n if (block.isLeft()) break;\n }\n const blocks = Either.sequence(parsed);\n this.blocks = Just(blocks);\n return blocks;\n });\n }\n\n toHuman(): Either<LKRPParsingError, string> {\n return this.parse()\n .map((blocks) => blocks.map((block) => block.toHuman()))\n .chain(Either.sequence)\n .map((blocks) => blocks.join(\"\\n\\n\"));\n }\n\n async validate(streamParentHash?: string): Promise<boolean> {\n return this.validation.orDefaultLazy(async () => {\n const validation = this.parse()\n .map((blocks) =>\n blocks.map((block) =>\n block\n .parse()\n .map(({ parent }) => ({ parent, hash: () => block.hash() })),\n ),\n )\n .chain(Either.sequence)\n .toMaybe()\n .map(async (blocks) => {\n if (\n streamParentHash &&\n blocks[0] &&\n streamParentHash !== blocks[0].parent\n ) {\n return false;\n }\n\n for await (const [index, block] of blocks.entries()) {\n const nextBlock = blocks[index + 1];\n if (nextBlock && block.hash() !== nextBlock.parent) {\n return false;\n }\n }\n return true;\n })\n .orDefault(Promise.resolve(false));\n\n return validation;\n });\n }\n\n getPath(): Maybe<string> {\n this.path.ifNothing(() => {\n this.path = this.parse()\n .toMaybe()\n .chainNullable((blocks) => blocks[0])\n .chain((block) => block.parse().toMaybe())\n .chainNullable(({ commands }) => commands[0])\n .chain((command) => command.parse().toMaybe())\n .chain((data) => {\n switch (data.type) {\n case CommandTags.Derive:\n return Just(data.path);\n case CommandTags.Seed:\n return Just(\"m/0'\");\n default:\n return Nothing;\n }\n });\n });\n return this.path;\n }\n\n getMemberBlock(member: string): Maybe<LKRPBlockData> {\n return this.parse()\n .toMaybe()\n .chain((blocks) => {\n for (const block of blocks) {\n const parsedBlock = block.parse();\n if (parsedBlock.isRight()) {\n const blockData = parsedBlock.extract();\n for (const command of blockData.commands) {\n const pubkey = command.getPublicKey();\n if (pubkey.isJust() && pubkey.extract() === member) {\n return Maybe.of(blockData);\n }\n }\n }\n }\n return Nothing;\n });\n }\n\n hasMember(member: string): boolean {\n return this.getMemberBlock(member).isJust();\n }\n\n async getPublishedKey(\n cryptoService: CryptoService,\n keyPair: KeyPair,\n ): Promise<Maybe<PublishedKey>> {\n return MaybeAsync.liftMaybe(\n this.getMemberBlock(keyPair.getPublicKeyToHex()).chain(\n (block): Maybe<EncryptedPublishedKey> => {\n for (const command of block.commands) {\n const key = command.getEncryptedPublishedKey();\n if (key.isJust()) {\n return key;\n }\n }\n return Nothing;\n },\n ),\n ).map(async (published) => {\n const secret = (\n await keyPair.deriveSharedSecret(published.ephemeralPublicKey)\n ).slice(1);\n const key = cryptoService.importSymmetricKey(\n secret,\n EncryptionAlgo.AES256_GCM,\n );\n const xpriv = await key.decrypt(\n published.initializationVector,\n published.encryptedXpriv,\n );\n return { privateKey: xpriv.slice(0, 32), chainCode: xpriv.slice(32) };\n });\n }\n}\n"],
5
5
  "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAGO,2CACPC,EAAgE,qBAEhEC,EAAmD,qCAInDC,EAA4B,iCAM5BC,EAA0B,uBAC1BC,EAA0B,uBAEnB,MAAMP,CAAgB,CAK3B,YACmBQ,EACjBC,EACA,CAFiB,WAAAD,EAGjB,KAAK,OAASC,KAAS,WAAK,SAAMA,CAAM,CAAC,EAAI,SAC/C,CATQ,WAAsC,UACtC,OAAuD,UACvD,KAAsB,UAS9B,OAAO,QAAQC,EAA8B,CAC3C,OAAO,IAAIV,KAAgB,sBAAmBU,CAAG,GAAK,IAAI,UAAY,CACxE,CAEA,OAAO,SACLC,EACAC,EACiB,CACjB,MAAMH,EAAsB,CAAC,EAC7B,IAAII,EACFD,MACA,sBAAmB,OAAO,gBAAgB,IAAI,WAAW,EAAE,CAAC,EAAG,EAAK,EAEtE,UAAWE,KAAaH,EAAY,CAClC,MAAMI,EAAQ,YAAU,SAAS,CAC/B,GAAGD,EACH,OAAQD,CACV,CAAC,EACDA,EAAOE,EAAM,KAAK,EAClBN,EAAO,KAAKM,CAAK,CACnB,CACA,MAAMP,EAAQC,EAAO,OACnB,CAACO,EAAKD,IAAU,IAAI,WAAW,CAAC,GAAGC,EAAK,GAAGD,EAAM,MAAM,CAAC,CAAC,EACzD,IAAI,UACN,EACA,OAAO,IAAIf,EAAgBQ,EAAOC,CAAM,CAC1C,CAEA,OAAoB,CAClB,OAAO,KAAK,KACd,CAEA,UAAmB,CACjB,SAAO,sBAAmB,KAAK,MAAO,EAAK,CAC7C,CAEA,OAA+C,CAC7C,OAAO,KAAK,OAAO,cAAc,IAAM,CACrC,MAAMQ,EAAS,IAAI,YAAU,KAAK,KAAK,EACjCC,EAAgD,CAAC,EACvD,KAAO,CAACD,EAAO,MAAM,QAAQ,CAC3B,MAAME,EAAQF,EAAO,MAAM,OACrBF,EAAQE,EAAO,eAAe,EAAE,IAAKG,GAAS,CAClD,MAAMC,EAAMJ,EAAO,MAAM,OACzB,OAAO,IAAI,YAAU,KAAK,MAAM,MAAME,EAAOE,CAAG,EAAGD,CAAI,CACzD,CAAC,EAED,GADAF,EAAO,KAAKH,CAAK,EACbA,EAAM,OAAO,EAAG,KACtB,CACA,MAAMN,EAAS,SAAO,SAASS,CAAM,EACrC,YAAK,UAAS,QAAKT,CAAM,EAClBA,CACT,CAAC,CACH,CAEA,SAA4C,CAC1C,OAAO,KAAK,MAAM,EACf,IAAKA,GAAWA,EAAO,IAAKM,GAAUA,EAAM,QAAQ,CAAC,CAAC,EACtD,MAAM,SAAO,QAAQ,EACrB,IAAKN,GAAWA,EAAO,KAAK;AAAA;AAAA,CAAM,CAAC,CACxC,CAEA,MAAM,SAASa,EAA6C,CAC1D,OAAO,KAAK,WAAW,cAAc,SAChB,KAAK,MAAM,EAC3B,IAAKb,GACJA,EAAO,IAAKM,GACVA,EACG,MAAM,EACN,IAAI,CAAC,CAAE,OAAAQ,CAAO,KAAO,CAAE,OAAAA,EAAQ,KAAM,IAAMR,EAAM,KAAK,CAAE,EAAE,CAC/D,CACF,EACC,MAAM,SAAO,QAAQ,EACrB,QAAQ,EACR,IAAI,MAAON,GAAW,CACrB,GACEa,GACAb,EAAO,CAAC,GACRa,IAAqBb,EAAO,CAAC,EAAE,OAE/B,MAAO,GAGT,eAAiB,CAACe,EAAOT,CAAK,IAAKN,EAAO,QAAQ,EAAG,CACnD,MAAMgB,EAAYhB,EAAOe,EAAQ,CAAC,EAClC,GAAIC,GAAaV,EAAM,KAAK,IAAMU,EAAU,OAC1C,MAAO,EAEX,CACA,MAAO,EACT,CAAC,EACA,UAAU,QAAQ,QAAQ,EAAK,CAAC,CAGpC,CACH,CAEA,SAAyB,CACvB,YAAK,KAAK,UAAU,IAAM,CACxB,KAAK,KAAO,KAAK,MAAM,EACpB,QAAQ,EACR,cAAehB,GAAWA,EAAO,CAAC,CAAC,EACnC,MAAOM,GAAUA,EAAM,MAAM,EAAE,QAAQ,CAAC,EACxC,cAAc,CAAC,CAAE,SAAAW,CAAS,IAAMA,EAAS,CAAC,CAAC,EAC3C,MAAOC,GAAYA,EAAQ,MAAM,EAAE,QAAQ,CAAC,EAC5C,MAAOP,GAAS,CACf,OAAQA,EAAK,KAAM,CACjB,KAAK,cAAY,OACf,SAAO,QAAKA,EAAK,IAAI,EACvB,KAAK,cAAY,KACf,SAAO,QAAK,MAAM,EACpB,QACE,OAAO,SACX,CACF,CAAC,CACL,CAAC,EACM,KAAK,IACd,CAEA,eAAeQ,EAAsC,CACnD,OAAO,KAAK,MAAM,EACf,QAAQ,EACR,MAAOnB,GAAW,CACjB,UAAWM,KAASN,EAAQ,CAC1B,MAAMoB,EAAcd,EAAM,MAAM,EAChC,GAAIc,EAAY,QAAQ,EAAG,CACzB,MAAMf,EAAYe,EAAY,QAAQ,EACtC,UAAWF,KAAWb,EAAU,SAAU,CACxC,MAAMgB,EAASH,EAAQ,aAAa,EACpC,GAAIG,EAAO,OAAO,GAAKA,EAAO,QAAQ,IAAMF,EAC1C,OAAO,QAAM,GAAGd,CAAS,CAE7B,CACF,CACF,CACA,OAAO,SACT,CAAC,CACL,CAEA,UAAUc,EAAyB,CACjC,OAAO,KAAK,eAAeA,CAAM,EAAE,OAAO,CAC5C,CAEA,MAAM,gBACJG,EACAC,EAC8B,CAC9B,OAAO,aAAW,UAChB,KAAK,eAAeA,EAAQ,kBAAkB,CAAC,EAAE,MAC9CjB,GAAwC,CACvC,UAAWY,KAAWZ,EAAM,SAAU,CACpC,MAAMkB,EAAMN,EAAQ,yBAAyB,EAC7C,GAAIM,EAAI,OAAO,EACb,OAAOA,CAEX,CACA,OAAO,SACT,CACF,CACF,EAAE,IAAI,MAAOC,GAAc,CACzB,MAAMC,GACJ,MAAMH,EAAQ,mBAAmBE,EAAU,kBAAkB,GAC7D,MAAM,CAAC,EAKHE,EAAQ,MAJFL,EAAc,mBACxBI,EACA,iBAAe,UACjB,EACwB,QACtBD,EAAU,qBACVA,EAAU,cACZ,EACA,MAAO,CAAE,WAAYE,EAAM,MAAM,EAAG,EAAE,EAAG,UAAWA,EAAM,MAAM,EAAE,CAAE,CACtE,CAAC,CACH,CACF",
6
- "names": ["LKRPBlockStream_exports", "__export", "LKRPBlockStream", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "import_CryptoService", "import_Tags", "import_LKRPBlock", "import_TLVParser", "bytes", "blocks", "hex", "blocksData", "parentHash", "hash", "blockData", "block", "acc", "parser", "parsed", "start", "data", "end", "streamParentHash", "parent", "index", "nextBlock", "commands", "command", "member", "parsedBlock", "pubkey", "cryptoService", "keypair", "key", "published", "secret", "xpriv"]
6
+ "names": ["LKRPBlockStream_exports", "__export", "LKRPBlockStream", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "import_CryptoService", "import_Tags", "import_LKRPBlock", "import_TLVParser", "bytes", "blocks", "hex", "blocksData", "parentHash", "hash", "blockData", "block", "acc", "parser", "parsed", "start", "data", "end", "streamParentHash", "parent", "index", "nextBlock", "commands", "command", "member", "parsedBlock", "pubkey", "cryptoService", "keyPair", "key", "published", "secret", "xpriv"]
7
7
  }
@@ -1,56 +1,60 @@
1
1
  {
2
- "name": "@ledgerhq/device-trusted-app-kit-ledger-keyring-protocol",
3
- "version": "0.3.0",
4
- "license": "Apache-2.0",
5
- "private": false,
2
+ "dependencies": {
3
+ "@ledgerhq/device-management-kit": "workspace:^",
4
+ "@ledgerhq/signer-utils": "workspace:^",
5
+ "@noble/ciphers": "^1.3.0",
6
+ "@noble/curves": "^1.9.7",
7
+ "@noble/hashes": "^1.8.0",
8
+ "inversify": "catalog:",
9
+ "purify-ts": "catalog:",
10
+ "reflect-metadata": "catalog:",
11
+ "rxjs": "catalog:",
12
+ "xstate": "catalog:"
13
+ },
14
+ "devDependencies": {
15
+ "@ledgerhq/eslint-config-dsdk": "workspace:^",
16
+ "@ledgerhq/ldmk-tool": "workspace:^",
17
+ "@ledgerhq/prettier-config-dsdk": "workspace:^",
18
+ "@ledgerhq/tsconfig-dsdk": "workspace:^",
19
+ "@ledgerhq/vitest-config-dmk": "workspace:^"
20
+ },
6
21
  "exports": {
7
22
  ".": {
8
- "types": "./lib/types/index.d.ts",
9
23
  "import": "./lib/esm/index.js",
10
- "require": "./lib/cjs/index.js"
24
+ "require": "./lib/cjs/index.js",
25
+ "types": "./lib/types/index.d.ts"
11
26
  },
12
27
  "./*": {
13
- "types": "./lib/types/*",
14
28
  "import": "./lib/esm/*",
15
- "require": "./lib/cjs/*"
29
+ "require": "./lib/cjs/*",
30
+ "types": "./lib/types/*"
16
31
  }
17
32
  },
18
33
  "files": [
19
34
  "./lib"
20
35
  ],
36
+ "license": "Apache-2.0",
37
+ "name": "@ledgerhq/device-trusted-app-kit-ledger-keyring-protocol",
38
+ "private": false,
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "https://github.com/LedgerHQ/device-sdk-ts.git"
42
+ },
21
43
  "scripts": {
22
- "prebuild": "rimraf lib",
23
44
  "build": "pnpm ldmk-tool build --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
24
45
  "dev": "concurrently \"pnpm watch:builds\" \"pnpm watch:types\"",
25
- "watch:builds": "pnpm ldmk-tool watch --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
26
- "watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\"",
27
46
  "lint": "eslint",
28
47
  "lint:fix": "pnpm lint --fix",
29
48
  "postpack": "find . -name '*.tgz' -exec cp {} ../../dist/ \\; ",
49
+ "prebuild": "rimraf lib",
30
50
  "prettier": "prettier . --check",
31
51
  "prettier:fix": "prettier . --write",
32
- "typecheck": "tsc --noEmit",
33
52
  "test": "vitest run --passWithNoTests",
53
+ "test:coverage": "vitest run --coverage --passWithNoTests",
34
54
  "test:watch": "vitest --passWithNoTests",
35
- "test:coverage": "vitest run --coverage --passWithNoTests"
36
- },
37
- "dependencies": {
38
- "@ledgerhq/device-management-kit": "workspace:*",
39
- "@ledgerhq/signer-utils": "workspace:*",
40
- "@noble/ciphers": "^1.3.0",
41
- "@noble/curves": "^1.9.7",
42
- "@noble/hashes": "^1.8.0",
43
- "inversify": "catalog:",
44
- "purify-ts": "catalog:",
45
- "reflect-metadata": "catalog:",
46
- "rxjs": "catalog:",
47
- "xstate": "catalog:"
55
+ "typecheck": "tsc --noEmit",
56
+ "watch:builds": "pnpm ldmk-tool watch --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
57
+ "watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\""
48
58
  },
49
- "devDependencies": {
50
- "@ledgerhq/eslint-config-dsdk": "workspace:*",
51
- "@ledgerhq/ldmk-tool": "workspace:*",
52
- "@ledgerhq/prettier-config-dsdk": "workspace:*",
53
- "@ledgerhq/tsconfig-dsdk": "workspace:*",
54
- "@ledgerhq/vitest-config-dmk": "workspace:*"
55
- }
59
+ "version": "0.0.0-zzz-solana-20251204140055"
56
60
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/api/app-binder/AddToTrustchainDeviceActionTypes.ts"],
4
- "sourcesContent": ["import {\n type OpenAppDAError,\n type UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Either } from \"purify-ts\";\n\nimport { type CryptoService } from \"@api/crypto/CryptoService\";\nimport { type KeyPair } from \"@api/crypto/KeyPair\";\nimport {\n type LKRPDataSourceError,\n type LKRPMissingDataError,\n type LKRPOutdatedTrustchainError,\n type LKRPParsingError,\n type LKRPTrustchainNotReady,\n type LKRPUnknownError,\n} from \"@api/model/Errors\";\nimport { type JWT } from \"@api/model/JWT\";\nimport { type Permissions } from \"@api/model/Permissions\";\nimport { type LKRPDeviceCommandError } from \"@internal/app-binder/command/utils/ledgerKeyringProtocolErrors\";\nimport { type LKRPDataSource } from \"@internal/lkrp-datasource/data/LKRPDataSource\";\nimport { type Trustchain } from \"@internal/utils/Trustchain\";\n\nexport type AddToTrustchainDAOutput = undefined;\n\nexport type AddToTrustchainDAInput = Either<\n LKRPMissingDataError,\n {\n readonly lkrpDataSource: LKRPDataSource;\n readonly cryptoService: CryptoService;\n readonly keypair: KeyPair;\n readonly jwt: JWT;\n readonly appId: number;\n readonly trustchain: Trustchain;\n readonly clientName: string;\n readonly permissions: Permissions;\n }\n>;\n\nexport type AddToTrustchainDAError =\n | LKRPDeviceCommandError\n | LKRPDataSourceError\n | LKRPParsingError\n | LKRPMissingDataError\n | LKRPOutdatedTrustchainError\n | LKRPTrustchainNotReady\n | OpenAppDAError\n | LKRPUnknownError;\n\nexport type AddToTrustchainDAIntermediateValue =\n | {\n requiredUserInteraction: UserInteractionRequired.None;\n step?:\n | AddToTrustchaineDAStep.Initialize\n | AddToTrustchaineDAStep.ParseStream;\n }\n | {\n requiredUserInteraction: AddToTrustchainDAState.AddMember;\n step: AddToTrustchaineDAStep.AddMember;\n };\n\nexport enum AddToTrustchainDAState {\n AddMember = \"lkrp-add-member\",\n}\n\nexport enum AddToTrustchaineDAStep {\n Initialize = \"lkrp-init-transaction\",\n ParseStream = \"lkrp-parse-stream\",\n AddMember = \"lkrp-add-member\",\n}\n\nexport type AddToTrustchainDAInternalState = Either<\n AddToTrustchainDAError,\n {\n readonly sessionKeypair: KeyPair | null;\n }\n>;\n"],
4
+ "sourcesContent": ["import {\n type OpenAppDAError,\n type UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Either } from \"purify-ts\";\n\nimport { type CryptoService } from \"@api/crypto/CryptoService\";\nimport { type KeyPair } from \"@api/crypto/KeyPair\";\nimport {\n type LKRPDataSourceError,\n type LKRPMissingDataError,\n type LKRPOutdatedTrustchainError,\n type LKRPParsingError,\n type LKRPTrustchainNotReady,\n type LKRPUnknownError,\n} from \"@api/model/Errors\";\nimport { type JWT } from \"@api/model/JWT\";\nimport { type Permissions } from \"@api/model/Permissions\";\nimport { type LKRPDeviceCommandError } from \"@internal/app-binder/command/utils/ledgerKeyringProtocolErrors\";\nimport { type LKRPDataSource } from \"@internal/lkrp-datasource/data/LKRPDataSource\";\nimport { type Trustchain } from \"@internal/utils/Trustchain\";\n\nexport type AddToTrustchainDAOutput = undefined;\n\nexport type AddToTrustchainDAInput = Either<\n LKRPMissingDataError,\n {\n readonly lkrpDataSource: LKRPDataSource;\n readonly cryptoService: CryptoService;\n readonly keyPair: KeyPair;\n readonly jwt: JWT;\n readonly appId: number;\n readonly trustchain: Trustchain;\n readonly clientName: string;\n readonly permissions: Permissions;\n }\n>;\n\nexport type AddToTrustchainDAError =\n | LKRPDeviceCommandError\n | LKRPDataSourceError\n | LKRPParsingError\n | LKRPMissingDataError\n | LKRPOutdatedTrustchainError\n | LKRPTrustchainNotReady\n | OpenAppDAError\n | LKRPUnknownError;\n\nexport type AddToTrustchainDAIntermediateValue =\n | {\n requiredUserInteraction: UserInteractionRequired.None;\n step?:\n | AddToTrustchaineDAStep.Initialize\n | AddToTrustchaineDAStep.ParseStream;\n }\n | {\n requiredUserInteraction: AddToTrustchainDAState.AddMember;\n step: AddToTrustchaineDAStep.AddMember;\n };\n\nexport enum AddToTrustchainDAState {\n AddMember = \"lkrp-add-member\",\n}\n\nexport enum AddToTrustchaineDAStep {\n Initialize = \"lkrp-init-transaction\",\n ParseStream = \"lkrp-parse-stream\",\n AddMember = \"lkrp-add-member\",\n}\n\nexport type AddToTrustchainDAInternalState = Either<\n AddToTrustchainDAError,\n {\n readonly sessionKeypair: KeyPair | null;\n }\n>;\n"],
5
5
  "mappings": "AA4DO,IAAKA,OACVA,EAAA,UAAY,kBADFA,OAAA,IAIAC,OACVA,EAAA,WAAa,wBACbA,EAAA,YAAc,oBACdA,EAAA,UAAY,kBAHFA,OAAA",
6
6
  "names": ["AddToTrustchainDAState", "AddToTrustchaineDAStep"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/api/crypto/CryptoService.ts"],
4
- "sourcesContent": ["import { type Key } from \"./Key\";\nimport { type KeyPair } from \"./KeyPair\";\n\nexport enum Curve {\n K256, // secp256k1\n P256, // P-256\n}\n\nexport enum EncryptionAlgo {\n AES256_GCM,\n}\n\nexport enum HashAlgo {\n SHA256,\n}\n\nexport interface CryptoService {\n // Generate a random buffer\n randomBytes(len: number): Uint8Array;\n\n // Compute a hash\n hash(bytes: Uint8Array, algo: HashAlgo): Uint8Array;\n\n // Compute a HMAC\n hmac(key: Uint8Array, message: Uint8Array, algo: HashAlgo): Uint8Array;\n\n // Generate a new random keypair\n createKeyPair(curve: Curve): Promise<KeyPair>;\n\n // Import a keypair\n importKeyPair(privateKey: Uint8Array, curve: Curve): KeyPair;\n\n // Generate a new random symmetric key\n createSymmetricKey(algo: EncryptionAlgo): Promise<Key>;\n\n // Import a symmetric key\n importSymmetricKey(keyMaterial: Uint8Array, algo: EncryptionAlgo): Key;\n}\n"],
4
+ "sourcesContent": ["import { type Key } from \"./Key\";\nimport { type KeyPair } from \"./KeyPair\";\n\nexport enum Curve {\n K256, // secp256k1\n P256, // P-256\n}\n\nexport enum EncryptionAlgo {\n AES256_GCM,\n}\n\nexport enum HashAlgo {\n SHA256,\n}\n\nexport interface CryptoService {\n // Generate a random buffer\n randomBytes(len: number): Uint8Array;\n\n // Compute a hash\n hash(bytes: Uint8Array, algo: HashAlgo): Uint8Array;\n\n // Compute a HMAC\n hmac(key: Uint8Array, message: Uint8Array, algo: HashAlgo): Uint8Array;\n\n // Generate a new random keyPair\n createKeyPair(curve: Curve): Promise<KeyPair>;\n\n // Import a keyPair\n importKeyPair(privateKey: Uint8Array, curve: Curve): KeyPair;\n\n // Generate a new random symmetric key\n createSymmetricKey(algo: EncryptionAlgo): Promise<Key>;\n\n // Import a symmetric key\n importSymmetricKey(keyMaterial: Uint8Array, algo: EncryptionAlgo): Key;\n}\n"],
5
5
  "mappings": "AAGO,IAAKA,OACVA,IAAA,eACAA,IAAA,eAFUA,OAAA,IAKAC,OACVA,IAAA,2BADUA,OAAA,IAIAC,OACVA,IAAA,mBADUA,OAAA",
6
6
  "names": ["Curve", "EncryptionAlgo", "HashAlgo"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{GeneralDmkError as e}from"@ledgerhq/device-management-kit";class d extends e{constructor(r){super(r.message);this.err=r;this.status=r.status,this.message=r.message}_tag="LedgerKeyringProtocolError";message;status}class i extends e{constructor(r=null,s=`Current keypair is not a member of the trustchain${r?` ${r}`:""}.`){super(s);this.trustchainId=r;this.message=s}_tag="LedgerKeyringProtocolError"}class u extends e{constructor(r="The trustchain is outdated."){super(r);this.message=r}_tag="LedgerKeyringProtocolError"}class c extends e{constructor(r="Ledger Sync must be initialized from Ledger Live with this device."){super(r);this.message=r}_tag="LedgerKeyringProtocolError"}class g extends e{constructor(r){super(r);this.err=r}_tag="LedgerKeyringProtocolError"}class l extends e{constructor(r){super(r);this.err=r}_tag="LedgerKeyringProtocolError"}class y extends e{constructor(r){const s=r&&typeof r=="object"&&"type"in r&&typeof r.type=="number"&&`0x${r.type.toString(16).padStart(2,"0")}`;let n="Unsupported command";s&&(n+=`: ${s}`);super(n);this.command=r;this.message=n}_tag="LedgerKeyringProtocolError";message}class p extends e{constructor(r){super(r);this.message=r}_tag="LedgerKeyringProtocolError"}export{d as LKRPDataSourceError,l as LKRPMissingDataError,u as LKRPOutdatedTrustchainError,g as LKRPParsingError,c as LKRPTrustchainNotReady,i as LKRPUnauthorizedError,p as LKRPUnknownError,y as LKRPUnsupportedCommandError};
1
+ import{GeneralDmkError as e}from"@ledgerhq/device-management-kit";class d extends e{constructor(r){super(r.message);this.err=r;this.status=r.status,this.message=r.message}_tag="LedgerKeyringProtocolError";message;status}class i extends e{constructor(r=null,s=`Current keyPair is not a member of the trustchain${r?` ${r}`:""}.`){super(s);this.trustchainId=r;this.message=s}_tag="LedgerKeyringProtocolError"}class u extends e{constructor(r="The trustchain is outdated."){super(r);this.message=r}_tag="LedgerKeyringProtocolError"}class c extends e{constructor(r="Ledger Sync must be initialized from Ledger Live with this device."){super(r);this.message=r}_tag="LedgerKeyringProtocolError"}class g extends e{constructor(r){super(r);this.err=r}_tag="LedgerKeyringProtocolError"}class l extends e{constructor(r){super(r);this.err=r}_tag="LedgerKeyringProtocolError"}class y extends e{constructor(r){const s=r&&typeof r=="object"&&"type"in r&&typeof r.type=="number"&&`0x${r.type.toString(16).padStart(2,"0")}`;let n="Unsupported command";s&&(n+=`: ${s}`);super(n);this.command=r;this.message=n}_tag="LedgerKeyringProtocolError";message}class p extends e{constructor(r){super(r);this.message=r}_tag="LedgerKeyringProtocolError"}export{d as LKRPDataSourceError,l as LKRPMissingDataError,u as LKRPOutdatedTrustchainError,g as LKRPParsingError,c as LKRPTrustchainNotReady,i as LKRPUnauthorizedError,p as LKRPUnknownError,y as LKRPUnsupportedCommandError};
2
2
  //# sourceMappingURL=Errors.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/api/model/Errors.ts"],
4
- "sourcesContent": ["import { GeneralDmkError } from \"@ledgerhq/device-management-kit\";\n\nexport type LKRPDataSourceErrorStatus =\n | \"UNAUTHORIZED\"\n | \"BAD_REQUEST\"\n | \"UNKNOWN\";\n\nexport class LKRPDataSourceError extends GeneralDmkError {\n override _tag = \"LedgerKeyringProtocolError\";\n public readonly message: string;\n public readonly status: LKRPDataSourceErrorStatus;\n\n constructor(\n readonly err: {\n status: LKRPDataSourceErrorStatus;\n message: string;\n },\n ) {\n super(err.message);\n this.status = err.status;\n this.message = err.message;\n }\n}\n\nexport class LKRPUnauthorizedError extends GeneralDmkError {\n override _tag = \"LedgerKeyringProtocolError\";\n constructor(\n readonly trustchainId: string | null = null,\n readonly message: string = `Current keypair is not a member of the trustchain${trustchainId ? ` ${trustchainId}` : \"\"}.`,\n ) {\n super(message);\n }\n}\n\nexport class LKRPOutdatedTrustchainError extends GeneralDmkError {\n override _tag = \"LedgerKeyringProtocolError\";\n constructor(readonly message = \"The trustchain is outdated.\") {\n super(message);\n }\n}\n\nexport class LKRPTrustchainNotReady extends GeneralDmkError {\n override readonly _tag = \"LedgerKeyringProtocolError\";\n constructor(\n readonly message = \"Ledger Sync must be initialized from Ledger Live with this device.\",\n ) {\n super(message);\n }\n}\n\nexport class LKRPParsingError extends GeneralDmkError {\n override readonly _tag = \"LedgerKeyringProtocolError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class LKRPMissingDataError extends GeneralDmkError {\n override readonly _tag = \"LedgerKeyringProtocolError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class LKRPUnsupportedCommandError extends GeneralDmkError {\n override readonly _tag = \"LedgerKeyringProtocolError\";\n readonly message: string;\n constructor(readonly command: unknown) {\n const commandType =\n command &&\n typeof command === \"object\" &&\n \"type\" in command &&\n typeof command.type === \"number\" &&\n `0x${command.type.toString(16).padStart(2, \"0\")}`;\n let message = `Unsupported command`;\n if (commandType) message += `: ${commandType}`;\n\n super(message);\n\n this.message = message;\n }\n}\n\nexport class LKRPUnknownError extends GeneralDmkError {\n override readonly _tag = \"LedgerKeyringProtocolError\";\n constructor(readonly message: string) {\n super(message);\n }\n}\n"],
4
+ "sourcesContent": ["import { GeneralDmkError } from \"@ledgerhq/device-management-kit\";\n\nexport type LKRPDataSourceErrorStatus =\n | \"UNAUTHORIZED\"\n | \"BAD_REQUEST\"\n | \"UNKNOWN\";\n\nexport class LKRPDataSourceError extends GeneralDmkError {\n override _tag = \"LedgerKeyringProtocolError\";\n public readonly message: string;\n public readonly status: LKRPDataSourceErrorStatus;\n\n constructor(\n readonly err: {\n status: LKRPDataSourceErrorStatus;\n message: string;\n },\n ) {\n super(err.message);\n this.status = err.status;\n this.message = err.message;\n }\n}\n\nexport class LKRPUnauthorizedError extends GeneralDmkError {\n override _tag = \"LedgerKeyringProtocolError\";\n constructor(\n readonly trustchainId: string | null = null,\n readonly message: string = `Current keyPair is not a member of the trustchain${trustchainId ? ` ${trustchainId}` : \"\"}.`,\n ) {\n super(message);\n }\n}\n\nexport class LKRPOutdatedTrustchainError extends GeneralDmkError {\n override _tag = \"LedgerKeyringProtocolError\";\n constructor(readonly message = \"The trustchain is outdated.\") {\n super(message);\n }\n}\n\nexport class LKRPTrustchainNotReady extends GeneralDmkError {\n override readonly _tag = \"LedgerKeyringProtocolError\";\n constructor(\n readonly message = \"Ledger Sync must be initialized from Ledger Live with this device.\",\n ) {\n super(message);\n }\n}\n\nexport class LKRPParsingError extends GeneralDmkError {\n override readonly _tag = \"LedgerKeyringProtocolError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class LKRPMissingDataError extends GeneralDmkError {\n override readonly _tag = \"LedgerKeyringProtocolError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class LKRPUnsupportedCommandError extends GeneralDmkError {\n override readonly _tag = \"LedgerKeyringProtocolError\";\n readonly message: string;\n constructor(readonly command: unknown) {\n const commandType =\n command &&\n typeof command === \"object\" &&\n \"type\" in command &&\n typeof command.type === \"number\" &&\n `0x${command.type.toString(16).padStart(2, \"0\")}`;\n let message = `Unsupported command`;\n if (commandType) message += `: ${commandType}`;\n\n super(message);\n\n this.message = message;\n }\n}\n\nexport class LKRPUnknownError extends GeneralDmkError {\n override readonly _tag = \"LedgerKeyringProtocolError\";\n constructor(readonly message: string) {\n super(message);\n }\n}\n"],
5
5
  "mappings": "AAAA,OAAS,mBAAAA,MAAuB,kCAOzB,MAAMC,UAA4BD,CAAgB,CAKvD,YACWE,EAIT,CACA,MAAMA,EAAI,OAAO,EALR,SAAAA,EAMT,KAAK,OAASA,EAAI,OAClB,KAAK,QAAUA,EAAI,OACrB,CAbS,KAAO,6BACA,QACA,MAYlB,CAEO,MAAMC,UAA8BH,CAAgB,CAEzD,YACWI,EAA8B,KAC9BC,EAAkB,oDAAoDD,EAAe,IAAIA,CAAY,GAAK,EAAE,IACrH,CACA,MAAMC,CAAO,EAHJ,kBAAAD,EACA,aAAAC,CAGX,CANS,KAAO,4BAOlB,CAEO,MAAMC,UAAoCN,CAAgB,CAE/D,YAAqBK,EAAU,8BAA+B,CAC5D,MAAMA,CAAO,EADM,aAAAA,CAErB,CAHS,KAAO,4BAIlB,CAEO,MAAME,UAA+BP,CAAgB,CAE1D,YACWK,EAAU,qEACnB,CACA,MAAMA,CAAO,EAFJ,aAAAA,CAGX,CALkB,KAAO,4BAM3B,CAEO,MAAMG,UAAyBR,CAAgB,CAEpD,YAAqBE,EAAe,CAClC,MAAMA,CAAG,EADU,SAAAA,CAErB,CAHkB,KAAO,4BAI3B,CAEO,MAAMO,UAA6BT,CAAgB,CAExD,YAAqBE,EAAe,CAClC,MAAMA,CAAG,EADU,SAAAA,CAErB,CAHkB,KAAO,4BAI3B,CAEO,MAAMQ,UAAoCV,CAAgB,CAG/D,YAAqBW,EAAkB,CACrC,MAAMC,EACJD,GACA,OAAOA,GAAY,UACnB,SAAUA,GACV,OAAOA,EAAQ,MAAS,UACxB,KAAKA,EAAQ,KAAK,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CAAC,GACjD,IAAIN,EAAU,sBACVO,IAAaP,GAAW,KAAKO,CAAW,IAE5C,MAAMP,CAAO,EAVM,aAAAM,EAYnB,KAAK,QAAUN,CACjB,CAfkB,KAAO,6BAChB,OAeX,CAEO,MAAMQ,UAAyBb,CAAgB,CAEpD,YAAqBK,EAAiB,CACpC,MAAMA,CAAO,EADM,aAAAA,CAErB,CAHkB,KAAO,4BAI3B",
6
6
  "names": ["GeneralDmkError", "LKRPDataSourceError", "err", "LKRPUnauthorizedError", "trustchainId", "message", "LKRPOutdatedTrustchainError", "LKRPTrustchainNotReady", "LKRPParsingError", "LKRPMissingDataError", "LKRPUnsupportedCommandError", "command", "commandType", "LKRPUnknownError"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var d=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var u=(n,e,r,i)=>{for(var t=i>1?void 0:i?y(e,r):e,c=n.length-1,s;c>=0;c--)(s=n[c])&&(t=(i?s(e,r,t):s(t))||t);return i&&t&&d(e,r,t),t},o=(n,e)=>(r,i)=>e(r,i,n);import{SendCommandInAppDeviceAction as h,UserInteractionRequired as D}from"@ledgerhq/device-management-kit";import{inject as p,injectable as k}from"inversify";import{externalTypes as m}from"../externalTypes";import{lkrpDatasourceTypes as v}from"../lkrp-datasource/di/lkrpDatasourceTypes";import{GetVersionCommand as l}from"./command/GetVersionCommand";import{AuthenticateWithDeviceDeviceAction as A}from"./device-action/AuthenticateWithDeviceDeviceAction";import{AuthenticateWithKeypairDeviceAction as S}from"./device-action/AuthenticateWithKeypairDeviceAction";let a=class{constructor(e,r,i,t){this.dmk=e;this.applicationId=r;this.cryptoService=i;this.lkrpDataSource=t}authenticateWithKeypair(e){return new S({input:{lkrpDataSource:this.lkrpDataSource,appId:this.applicationId,cryptoService:this.cryptoService,keypair:e.keypair,trustchainId:e.trustchainId}}).execute()}authenticateWithDevice(e){return this.dmk.executeDeviceAction({sessionId:e.sessionId,deviceAction:new A({input:{lkrpDataSource:this.lkrpDataSource,appId:this.applicationId,cryptoService:this.cryptoService,clientName:e.clientName,permissions:e.permissions,keypair:e.keypair}})})}getVersion(e){return this.dmk.executeDeviceAction({sessionId:e.sessionId,deviceAction:new h({input:{command:new l,appName:"Ledger Sync",requiredUserInteraction:D.None,skipOpenApp:e.skipOpenApp}})})}getAppName(){throw new Error("Not implemented")}getSeedId(){throw new Error("Not implemented")}init(){throw new Error("Not implemented")}parseStream(){throw new Error("Not implemented")}signBlock(){throw new Error("Not implemented")}setTrustedMember(){throw new Error("Not implemented")}};a=u([k(),o(0,p(m.Dmk)),o(1,p(m.ApplicationId)),o(2,p(m.CryptoService)),o(3,p(v.LKRPDataSource))],a);export{a as LedgerKeyringProtocolBinder};
1
+ var d=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var u=(n,e,r,i)=>{for(var t=i>1?void 0:i?y(e,r):e,c=n.length-1,s;c>=0;c--)(s=n[c])&&(t=(i?s(e,r,t):s(t))||t);return i&&t&&d(e,r,t),t},o=(n,e)=>(r,i)=>e(r,i,n);import{SendCommandInAppDeviceAction as h,UserInteractionRequired as D}from"@ledgerhq/device-management-kit";import{inject as p,injectable as k}from"inversify";import{externalTypes as m}from"../externalTypes";import{lkrpDatasourceTypes as v}from"../lkrp-datasource/di/lkrpDatasourceTypes";import{GetVersionCommand as l}from"./command/GetVersionCommand";import{AuthenticateWithDeviceDeviceAction as A}from"./device-action/AuthenticateWithDeviceDeviceAction";import{AuthenticateWithKeypairDeviceAction as S}from"./device-action/AuthenticateWithKeypairDeviceAction";let a=class{constructor(e,r,i,t){this.dmk=e;this.applicationId=r;this.cryptoService=i;this.lkrpDataSource=t}authenticateWithKeypair(e){return new S({input:{lkrpDataSource:this.lkrpDataSource,appId:this.applicationId,cryptoService:this.cryptoService,keyPair:e.keyPair,trustchainId:e.trustchainId}}).execute()}authenticateWithDevice(e){return this.dmk.executeDeviceAction({sessionId:e.sessionId,deviceAction:new A({input:{lkrpDataSource:this.lkrpDataSource,appId:this.applicationId,cryptoService:this.cryptoService,clientName:e.clientName,permissions:e.permissions,keyPair:e.keyPair}})})}getVersion(e){return this.dmk.executeDeviceAction({sessionId:e.sessionId,deviceAction:new h({input:{command:new l,appName:"Ledger Sync",requiredUserInteraction:D.None,skipOpenApp:e.skipOpenApp}})})}getAppName(){throw new Error("Not implemented")}getSeedId(){throw new Error("Not implemented")}init(){throw new Error("Not implemented")}parseStream(){throw new Error("Not implemented")}signBlock(){throw new Error("Not implemented")}setTrustedMember(){throw new Error("Not implemented")}};a=u([k(),o(0,p(m.Dmk)),o(1,p(m.ApplicationId)),o(2,p(m.CryptoService)),o(3,p(v.LKRPDataSource))],a);export{a as LedgerKeyringProtocolBinder};
2
2
  //# sourceMappingURL=LedgerKeyringProtocolBinder.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/internal/app-binder/LedgerKeyringProtocolBinder.ts"],
4
- "sourcesContent": ["import {\n DeviceManagementKit,\n type DeviceSessionId,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport { AuthenticateDAReturnType } from \"@api/app-binder/AuthenticateDeviceActionTypes\";\nimport { GetVersionDAReturnType } from \"@api/app-binder/GetVersionDeviceActionTypes\";\nimport { type CryptoService } from \"@api/crypto/CryptoService\";\nimport { KeyPair } from \"@api/crypto/KeyPair\";\nimport { Permissions } from \"@api/model/Permissions\";\nimport { externalTypes } from \"@internal/externalTypes\";\nimport { type LKRPDataSource } from \"@internal/lkrp-datasource/data/LKRPDataSource\";\nimport { lkrpDatasourceTypes } from \"@internal/lkrp-datasource/di/lkrpDatasourceTypes\";\n\nimport { GetVersionCommand } from \"./command/GetVersionCommand\";\nimport { AuthenticateWithDeviceDeviceAction } from \"./device-action/AuthenticateWithDeviceDeviceAction\";\nimport { AuthenticateWithKeypairDeviceAction } from \"./device-action/AuthenticateWithKeypairDeviceAction\";\n\n@injectable()\nexport class LedgerKeyringProtocolBinder {\n constructor(\n @inject(externalTypes.Dmk) private readonly dmk: DeviceManagementKit,\n\n @inject(externalTypes.ApplicationId)\n private readonly applicationId: number,\n\n @inject(externalTypes.CryptoService)\n private readonly cryptoService: CryptoService,\n\n @inject(lkrpDatasourceTypes.LKRPDataSource)\n private readonly lkrpDataSource: LKRPDataSource,\n ) {}\n\n authenticateWithKeypair(args: {\n keypair: KeyPair;\n trustchainId: string;\n }): AuthenticateDAReturnType {\n return new AuthenticateWithKeypairDeviceAction({\n input: {\n lkrpDataSource: this.lkrpDataSource,\n appId: this.applicationId,\n cryptoService: this.cryptoService,\n keypair: args.keypair,\n trustchainId: args.trustchainId,\n },\n }).execute();\n }\n\n authenticateWithDevice(args: {\n keypair: KeyPair;\n clientName: string;\n permissions: Permissions;\n sessionId: DeviceSessionId;\n }): AuthenticateDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: args.sessionId,\n deviceAction: new AuthenticateWithDeviceDeviceAction({\n input: {\n lkrpDataSource: this.lkrpDataSource,\n appId: this.applicationId,\n cryptoService: this.cryptoService,\n clientName: args.clientName,\n permissions: args.permissions,\n keypair: args.keypair,\n },\n }),\n });\n }\n\n getVersion(args: {\n skipOpenApp: boolean;\n sessionId: DeviceSessionId;\n }): GetVersionDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: args.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetVersionCommand(),\n appName: \"Ledger Sync\",\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: args.skipOpenApp,\n },\n }),\n });\n }\n\n getAppName(): unknown {\n throw new Error(\"Not implemented\");\n }\n\n getSeedId(): unknown {\n throw new Error(\"Not implemented\");\n }\n\n init(): unknown {\n throw new Error(\"Not implemented\");\n }\n\n parseStream(): unknown {\n throw new Error(\"Not implemented\");\n }\n\n signBlock(): unknown {\n throw new Error(\"Not implemented\");\n }\n\n setTrustedMember(): unknown {\n throw new Error(\"Not implemented\");\n }\n}\n"],
4
+ "sourcesContent": ["import {\n DeviceManagementKit,\n type DeviceSessionId,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport { AuthenticateDAReturnType } from \"@api/app-binder/AuthenticateDeviceActionTypes\";\nimport { GetVersionDAReturnType } from \"@api/app-binder/GetVersionDeviceActionTypes\";\nimport { type CryptoService } from \"@api/crypto/CryptoService\";\nimport { KeyPair } from \"@api/crypto/KeyPair\";\nimport { Permissions } from \"@api/model/Permissions\";\nimport { externalTypes } from \"@internal/externalTypes\";\nimport { type LKRPDataSource } from \"@internal/lkrp-datasource/data/LKRPDataSource\";\nimport { lkrpDatasourceTypes } from \"@internal/lkrp-datasource/di/lkrpDatasourceTypes\";\n\nimport { GetVersionCommand } from \"./command/GetVersionCommand\";\nimport { AuthenticateWithDeviceDeviceAction } from \"./device-action/AuthenticateWithDeviceDeviceAction\";\nimport { AuthenticateWithKeypairDeviceAction } from \"./device-action/AuthenticateWithKeypairDeviceAction\";\n\n@injectable()\nexport class LedgerKeyringProtocolBinder {\n constructor(\n @inject(externalTypes.Dmk) private readonly dmk: DeviceManagementKit,\n\n @inject(externalTypes.ApplicationId)\n private readonly applicationId: number,\n\n @inject(externalTypes.CryptoService)\n private readonly cryptoService: CryptoService,\n\n @inject(lkrpDatasourceTypes.LKRPDataSource)\n private readonly lkrpDataSource: LKRPDataSource,\n ) {}\n\n authenticateWithKeypair(args: {\n keyPair: KeyPair;\n trustchainId: string;\n }): AuthenticateDAReturnType {\n return new AuthenticateWithKeypairDeviceAction({\n input: {\n lkrpDataSource: this.lkrpDataSource,\n appId: this.applicationId,\n cryptoService: this.cryptoService,\n keyPair: args.keyPair,\n trustchainId: args.trustchainId,\n },\n }).execute();\n }\n\n authenticateWithDevice(args: {\n keyPair: KeyPair;\n clientName: string;\n permissions: Permissions;\n sessionId: DeviceSessionId;\n }): AuthenticateDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: args.sessionId,\n deviceAction: new AuthenticateWithDeviceDeviceAction({\n input: {\n lkrpDataSource: this.lkrpDataSource,\n appId: this.applicationId,\n cryptoService: this.cryptoService,\n clientName: args.clientName,\n permissions: args.permissions,\n keyPair: args.keyPair,\n },\n }),\n });\n }\n\n getVersion(args: {\n skipOpenApp: boolean;\n sessionId: DeviceSessionId;\n }): GetVersionDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: args.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetVersionCommand(),\n appName: \"Ledger Sync\",\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: args.skipOpenApp,\n },\n }),\n });\n }\n\n getAppName(): unknown {\n throw new Error(\"Not implemented\");\n }\n\n getSeedId(): unknown {\n throw new Error(\"Not implemented\");\n }\n\n init(): unknown {\n throw new Error(\"Not implemented\");\n }\n\n parseStream(): unknown {\n throw new Error(\"Not implemented\");\n }\n\n signBlock(): unknown {\n throw new Error(\"Not implemented\");\n }\n\n setTrustedMember(): unknown {\n throw new Error(\"Not implemented\");\n }\n}\n"],
5
5
  "mappings": "iOAAA,OAGE,gCAAAA,EACA,2BAAAC,MACK,kCACP,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YAOnC,OAAS,iBAAAC,MAAqB,0BAE9B,OAAS,uBAAAC,MAA2B,mDAEpC,OAAS,qBAAAC,MAAyB,8BAClC,OAAS,sCAAAC,MAA0C,qDACnD,OAAS,uCAAAC,MAA2C,sDAG7C,IAAMC,EAAN,KAAkC,CACvC,YAC8CC,EAG3BC,EAGAC,EAGAC,EACjB,CAV4C,SAAAH,EAG3B,mBAAAC,EAGA,mBAAAC,EAGA,oBAAAC,CAChB,CAEH,wBAAwBC,EAGK,CAC3B,OAAO,IAAIC,EAAoC,CAC7C,MAAO,CACL,eAAgB,KAAK,eACrB,MAAO,KAAK,cACZ,cAAe,KAAK,cACpB,QAASD,EAAK,QACd,aAAcA,EAAK,YACrB,CACF,CAAC,EAAE,QAAQ,CACb,CAEA,uBAAuBA,EAKM,CAC3B,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAWA,EAAK,UAChB,aAAc,IAAIE,EAAmC,CACnD,MAAO,CACL,eAAgB,KAAK,eACrB,MAAO,KAAK,cACZ,cAAe,KAAK,cACpB,WAAYF,EAAK,WACjB,YAAaA,EAAK,YAClB,QAASA,EAAK,OAChB,CACF,CAAC,CACH,CAAC,CACH,CAEA,WAAWA,EAGgB,CACzB,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAWA,EAAK,UAChB,aAAc,IAAIG,EAA6B,CAC7C,MAAO,CACL,QAAS,IAAIC,EACb,QAAS,cACT,wBAAyBC,EAAwB,KACjD,YAAaL,EAAK,WACpB,CACF,CAAC,CACH,CAAC,CACH,CAEA,YAAsB,CACpB,MAAM,IAAI,MAAM,iBAAiB,CACnC,CAEA,WAAqB,CACnB,MAAM,IAAI,MAAM,iBAAiB,CACnC,CAEA,MAAgB,CACd,MAAM,IAAI,MAAM,iBAAiB,CACnC,CAEA,aAAuB,CACrB,MAAM,IAAI,MAAM,iBAAiB,CACnC,CAEA,WAAqB,CACnB,MAAM,IAAI,MAAM,iBAAiB,CACnC,CAEA,kBAA4B,CAC1B,MAAM,IAAI,MAAM,iBAAiB,CACnC,CACF,EA1FaL,EAANW,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAc,GAAG,GAExBF,EAAA,EAAAC,EAAOC,EAAc,aAAa,GAGlCF,EAAA,EAAAC,EAAOC,EAAc,aAAa,GAGlCF,EAAA,EAAAC,EAAOE,EAAoB,cAAc,IAVjChB",
6
6
  "names": ["SendCommandInAppDeviceAction", "UserInteractionRequired", "inject", "injectable", "externalTypes", "lkrpDatasourceTypes", "GetVersionCommand", "AuthenticateWithDeviceDeviceAction", "AuthenticateWithKeypairDeviceAction", "LedgerKeyringProtocolBinder", "dmk", "applicationId", "cryptoService", "lkrpDataSource", "args", "AuthenticateWithKeypairDeviceAction", "AuthenticateWithDeviceDeviceAction", "SendCommandInAppDeviceAction", "GetVersionCommand", "UserInteractionRequired", "__decorateClass", "injectable", "__decorateParam", "inject", "externalTypes", "lkrpDatasourceTypes"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ApduBuilder as t,ApduParser as m,CommandResultFactory as o,InvalidStatusWordError as n}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as d}from"@ledgerhq/signer-utils";import{Maybe as a}from"purify-ts";import{LEDGER_SYNC_ERRORS as s,LedgerKeyringProtocolErrorFactory as i}from"./utils/ledgerKeyringProtocolErrors";class C{errorHelper=new d(s,i);getApdu(){const e={cla:224,ins:3,p1:0,p2:0};return new t(e).build()}parseResponse(e){return a.fromNullable(this.errorHelper.getError(e)).orDefaultLazy(()=>{const r=new m(e).encodeToString(e.data);return r?o({data:{name:r}}):o({error:new n("Name is missing")})})}}export{C as GetAppNameCommand};
1
+ import{ApduBuilder as t,ApduParser as m,CommandResultFactory as o,InvalidStatusWordError as n}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as a}from"@ledgerhq/signer-utils";import{Maybe as d}from"purify-ts";import{LEDGER_SYNC_ERRORS as s,LedgerKeyringProtocolErrorFactory as l}from"./utils/ledgerKeyringProtocolErrors";class C{name="getAppName";errorHelper=new a(s,l);getApdu(){const e={cla:224,ins:3,p1:0,p2:0};return new t(e).build()}parseResponse(e){return d.fromNullable(this.errorHelper.getError(e)).orDefaultLazy(()=>{const r=new m(e).encodeToString(e.data);return r?o({data:{name:r}}):o({error:new n("Name is missing")})})}}export{C as GetAppNameCommand};
2
2
  //# sourceMappingURL=GetAppNameCommand.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/GetAppNameCommand.ts"],
4
- "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduBuilderArgs,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n LEDGER_SYNC_ERRORS,\n type LedgerKeyringProtocolErrorCodes,\n LedgerKeyringProtocolErrorFactory,\n} from \"./utils/ledgerKeyringProtocolErrors\";\n\nexport type GetAppNameCommandResponse = {\n readonly name: string;\n};\n\nexport type GetAppNameCommandArgs = undefined;\n\nexport class GetAppNameCommand\n implements\n Command<\n GetAppNameCommandResponse,\n GetAppNameCommandArgs,\n LedgerKeyringProtocolErrorCodes\n >\n{\n private readonly errorHelper = new CommandErrorHelper<\n GetAppNameCommandResponse,\n LedgerKeyringProtocolErrorCodes\n >(LEDGER_SYNC_ERRORS, LedgerKeyringProtocolErrorFactory);\n\n getApdu(): Apdu {\n const getAppNameArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x03,\n p1: 0x00,\n p2: 0x00,\n };\n\n const builder = new ApduBuilder(getAppNameArgs);\n return builder.build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<GetAppNameCommandResponse, LedgerKeyringProtocolErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(apduResponse),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(apduResponse);\n\n const name = parser.encodeToString(apduResponse.data);\n\n if (!name) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(`Name is missing`),\n });\n }\n\n return CommandResultFactory({\n data: { name },\n });\n });\n }\n}\n"],
5
- "mappings": "AAAA,OAEE,eAAAA,EAEA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAEtB,OACE,sBAAAC,EAEA,qCAAAC,MACK,sCAQA,MAAMC,CAOb,CACmB,YAAc,IAAIJ,EAGjCE,EAAoBC,CAAiC,EAEvD,SAAgB,CACd,MAAME,EAAkC,CACtC,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,EAGA,OADgB,IAAIT,EAAYS,CAAc,EAC/B,MAAM,CACvB,CAEA,cACEC,EAC2E,CAC3E,OAAOL,EAAM,aACX,KAAK,YAAY,SAASK,CAAY,CACxC,EAAE,cAAc,IAAM,CAGpB,MAAMC,EAFS,IAAIV,EAAWS,CAAY,EAEtB,eAAeA,EAAa,IAAI,EAEpD,OAAKC,EAMET,EAAqB,CAC1B,KAAM,CAAE,KAAAS,CAAK,CACf,CAAC,EAPQT,EAAqB,CAC1B,MAAO,IAAIC,EAAuB,iBAAiB,CACrD,CAAC,CAML,CAAC,CACH,CACF",
4
+ "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduBuilderArgs,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n LEDGER_SYNC_ERRORS,\n type LedgerKeyringProtocolErrorCodes,\n LedgerKeyringProtocolErrorFactory,\n} from \"./utils/ledgerKeyringProtocolErrors\";\n\nexport type GetAppNameCommandResponse = {\n readonly name: string;\n};\n\nexport type GetAppNameCommandArgs = undefined;\n\nexport class GetAppNameCommand\n implements\n Command<\n GetAppNameCommandResponse,\n GetAppNameCommandArgs,\n LedgerKeyringProtocolErrorCodes\n >\n{\n readonly name = \"getAppName\";\n private readonly errorHelper = new CommandErrorHelper<\n GetAppNameCommandResponse,\n LedgerKeyringProtocolErrorCodes\n >(LEDGER_SYNC_ERRORS, LedgerKeyringProtocolErrorFactory);\n\n getApdu(): Apdu {\n const getAppNameArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x03,\n p1: 0x00,\n p2: 0x00,\n };\n\n const builder = new ApduBuilder(getAppNameArgs);\n return builder.build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<GetAppNameCommandResponse, LedgerKeyringProtocolErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(apduResponse),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(apduResponse);\n\n const name = parser.encodeToString(apduResponse.data);\n\n if (!name) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(`Name is missing`),\n });\n }\n\n return CommandResultFactory({\n data: { name },\n });\n });\n }\n}\n"],
5
+ "mappings": "AAAA,OAEE,eAAAA,EAEA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAEtB,OACE,sBAAAC,EAEA,qCAAAC,MACK,sCAQA,MAAMC,CAOb,CACW,KAAO,aACC,YAAc,IAAIJ,EAGjCE,EAAoBC,CAAiC,EAEvD,SAAgB,CACd,MAAME,EAAkC,CACtC,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,EAGA,OADgB,IAAIT,EAAYS,CAAc,EAC/B,MAAM,CACvB,CAEA,cACEC,EAC2E,CAC3E,OAAOL,EAAM,aACX,KAAK,YAAY,SAASK,CAAY,CACxC,EAAE,cAAc,IAAM,CAGpB,MAAMC,EAFS,IAAIV,EAAWS,CAAY,EAEtB,eAAeA,EAAa,IAAI,EAEpD,OAAKC,EAMET,EAAqB,CAC1B,KAAM,CAAE,KAAAS,CAAK,CACf,CAAC,EAPQT,EAAqB,CAC1B,MAAO,IAAIC,EAAuB,iBAAiB,CACrD,CAAC,CAML,CAAC,CACH,CACF",
6
6
  "names": ["ApduBuilder", "ApduParser", "CommandResultFactory", "InvalidStatusWordError", "CommandErrorHelper", "Maybe", "LEDGER_SYNC_ERRORS", "LedgerKeyringProtocolErrorFactory", "GetAppNameCommand", "getAppNameArgs", "apduResponse", "name"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ApduBuilder as g,ApduParser as m,bufferToHexaString as n,CommandResultFactory as o,InvalidStatusWordError as l}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as c}from"@ledgerhq/signer-utils";import{Maybe as a}from"purify-ts";import{eitherSeqRecord as s}from"../../utils/eitherSeqRecord";import{LEDGER_SYNC_ERRORS as u,LedgerKeyringProtocolErrorFactory as p}from"./utils/ledgerKeyringProtocolErrors";class B{constructor(i){this.args=i}errorHelper=new c(u,p);getApdu(){const{challengeTLV:i}=this.args,r={cla:224,ins:5,p1:0,p2:0};return new g(r).addHexaStringToData(i).build()}parseResponse(i){return a.fromNullable(this.errorHelper.getError(i)).orDefaultLazy(()=>{const r=new m(i),t=(e,d)=>a.fromNullable(e).toEither(new l(d));return s({credential:()=>s({version:()=>t(r.extract8BitUInt(),"Version is missing"),curveId:()=>t(r.extract8BitUInt(),"Curve ID is missing"),signAlgorithm:()=>t(r.extract8BitUInt(),"Sign algorithm is missing"),publicKey:()=>t(r.extract8BitUInt(),"Public key length is missing").chain(e=>t(r.extractFieldByLength(e),"Public key is missing")).map(e=>n(e,!1))}),signature:()=>t(r.extract8BitUInt(),"Signature length is missing").chain(e=>t(r.extractFieldByLength(e),"Signature is missing")).map(e=>n(e,!1)),attestation:()=>s({id:()=>t(r.extractFieldByLength(1),"Attestation Id is missing"),version:()=>t(r.extract8BitUInt(),"Attestation version is missing"),curveId:()=>t(r.extract8BitUInt(),"Attestation curve ID is missing"),signAlgorithm:()=>t(r.extract8BitUInt(),"Attestation sign algorithm is missing"),publicKey:()=>t(r.extract8BitUInt(),"Attestation key length is missing").chain(e=>t(r.extractFieldByLength(e),"Attestation key is missing")),signature:()=>t(r.extract8BitUInt(),"Attestation signature length is missing").chain(e=>t(r.extractFieldByLength(e),"Attestation signature is missing"))}).map(e=>n(Uint8Array.from([...e.id,e.version,e.curveId,e.signAlgorithm,e.publicKey.length,...e.publicKey,e.signature.length,...e.signature]),!1))}).caseOf({Left:e=>o({error:e}),Right:e=>o({data:e})})})}}export{B as GetSeedIdCommand};
1
+ import{ApduBuilder as g,ApduParser as m,bufferToHexaString as n,CommandResultFactory as o,InvalidStatusWordError as l}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as c}from"@ledgerhq/signer-utils";import{Maybe as a}from"purify-ts";import{eitherSeqRecord as s}from"../../utils/eitherSeqRecord";import{LEDGER_SYNC_ERRORS as u,LedgerKeyringProtocolErrorFactory as p}from"./utils/ledgerKeyringProtocolErrors";class S{constructor(i){this.args=i}name="getSeedId";errorHelper=new c(u,p);getApdu(){const{challengeTLV:i}=this.args,r={cla:224,ins:5,p1:0,p2:0};return new g(r).addHexaStringToData(i).build()}parseResponse(i){return a.fromNullable(this.errorHelper.getError(i)).orDefaultLazy(()=>{const r=new m(i),t=(e,d)=>a.fromNullable(e).toEither(new l(d));return s({credential:()=>s({version:()=>t(r.extract8BitUInt(),"Version is missing"),curveId:()=>t(r.extract8BitUInt(),"Curve ID is missing"),signAlgorithm:()=>t(r.extract8BitUInt(),"Sign algorithm is missing"),publicKey:()=>t(r.extract8BitUInt(),"Public key length is missing").chain(e=>t(r.extractFieldByLength(e),"Public key is missing")).map(e=>n(e,!1))}),signature:()=>t(r.extract8BitUInt(),"Signature length is missing").chain(e=>t(r.extractFieldByLength(e),"Signature is missing")).map(e=>n(e,!1)),attestation:()=>s({id:()=>t(r.extractFieldByLength(1),"Attestation Id is missing"),version:()=>t(r.extract8BitUInt(),"Attestation version is missing"),curveId:()=>t(r.extract8BitUInt(),"Attestation curve ID is missing"),signAlgorithm:()=>t(r.extract8BitUInt(),"Attestation sign algorithm is missing"),publicKey:()=>t(r.extract8BitUInt(),"Attestation key length is missing").chain(e=>t(r.extractFieldByLength(e),"Attestation key is missing")),signature:()=>t(r.extract8BitUInt(),"Attestation signature length is missing").chain(e=>t(r.extractFieldByLength(e),"Attestation signature is missing"))}).map(e=>n(Uint8Array.from([...e.id,e.version,e.curveId,e.signAlgorithm,e.publicKey.length,...e.publicKey,e.signature.length,...e.signature]),!1))}).caseOf({Left:e=>o({error:e}),Right:e=>o({data:e})})})}}export{S as GetSeedIdCommand};
2
2
  //# sourceMappingURL=GetSeedIdCommand.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/GetSeedIdCommand.ts"],
4
- "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduBuilderArgs,\n ApduParser,\n type ApduResponse,\n bufferToHexaString,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport { eitherSeqRecord } from \"@internal/utils/eitherSeqRecord\";\n\nimport {\n LEDGER_SYNC_ERRORS,\n type LedgerKeyringProtocolErrorCodes,\n LedgerKeyringProtocolErrorFactory,\n} from \"./utils/ledgerKeyringProtocolErrors\";\n\nexport type GetSeedIdCommandResponse = {\n readonly credential: {\n readonly version: number;\n readonly curveId: number;\n readonly signAlgorithm: number;\n readonly publicKey: string;\n };\n readonly signature: string;\n readonly attestation: string;\n};\n\nexport type GetSeedIdCommandArgs = {\n readonly challengeTLV: string;\n};\n\nexport class GetSeedIdCommand\n implements\n Command<\n GetSeedIdCommandResponse,\n GetSeedIdCommandArgs,\n LedgerKeyringProtocolErrorCodes\n >\n{\n private readonly errorHelper = new CommandErrorHelper<\n GetSeedIdCommandResponse,\n LedgerKeyringProtocolErrorCodes\n >(LEDGER_SYNC_ERRORS, LedgerKeyringProtocolErrorFactory);\n\n constructor(private readonly args: GetSeedIdCommandArgs) {}\n getApdu(): Apdu {\n const { challengeTLV } = this.args;\n const getSeedIdArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x05,\n p1: 0x00,\n p2: 0x00,\n };\n\n return new ApduBuilder(getSeedIdArgs)\n .addHexaStringToData(challengeTLV)\n .build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<GetSeedIdCommandResponse, LedgerKeyringProtocolErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(apduResponse),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(apduResponse);\n\n const required = <T>(value: T | undefined, errorMsg: string) =>\n Maybe.fromNullable(value).toEither(\n new InvalidStatusWordError(errorMsg),\n );\n\n return eitherSeqRecord({\n credential: () =>\n eitherSeqRecord({\n version: () =>\n required(parser.extract8BitUInt(), \"Version is missing\"),\n curveId: () =>\n required(parser.extract8BitUInt(), \"Curve ID is missing\"),\n signAlgorithm: () =>\n required(parser.extract8BitUInt(), \"Sign algorithm is missing\"),\n publicKey: () =>\n required(parser.extract8BitUInt(), \"Public key length is missing\")\n .chain((length) =>\n required(\n parser.extractFieldByLength(length),\n \"Public key is missing\",\n ),\n )\n .map((str) => bufferToHexaString(str, false)),\n }),\n\n signature: () =>\n required(parser.extract8BitUInt(), \"Signature length is missing\")\n .chain((length) =>\n required(\n parser.extractFieldByLength(length),\n \"Signature is missing\",\n ),\n )\n .map((str) => bufferToHexaString(str, false)),\n\n attestation: () =>\n eitherSeqRecord({\n id: () =>\n required(\n parser.extractFieldByLength(0x01),\n \"Attestation Id is missing\",\n ),\n version: () =>\n required(\n parser.extract8BitUInt(),\n \"Attestation version is missing\",\n ),\n curveId: () =>\n required(\n parser.extract8BitUInt(),\n \"Attestation curve ID is missing\",\n ),\n signAlgorithm: () =>\n required(\n parser.extract8BitUInt(),\n \"Attestation sign algorithm is missing\",\n ),\n publicKey: () =>\n required(\n parser.extract8BitUInt(),\n \"Attestation key length is missing\",\n ).chain((length) =>\n required(\n parser.extractFieldByLength(length),\n \"Attestation key is missing\",\n ),\n ),\n signature: () =>\n required(\n parser.extract8BitUInt(),\n \"Attestation signature length is missing\",\n ).chain((length) =>\n required(\n parser.extractFieldByLength(length),\n \"Attestation signature is missing\",\n ),\n ),\n }).map((attestation) =>\n bufferToHexaString(\n Uint8Array.from([\n ...attestation.id,\n attestation.version,\n attestation.curveId,\n attestation.signAlgorithm,\n attestation.publicKey.length,\n ...attestation.publicKey,\n attestation.signature.length,\n ...attestation.signature,\n ]),\n false,\n ),\n ),\n }).caseOf({\n Left: (error) => CommandResultFactory({ error }),\n Right: (data) => CommandResultFactory({ data }),\n });\n });\n }\n}\n"],
5
- "mappings": "AAAA,OAEE,eAAAA,EAEA,cAAAC,EAEA,sBAAAC,EAGA,wBAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAEtB,OAAS,mBAAAC,MAAuB,kCAEhC,OACE,sBAAAC,EAEA,qCAAAC,MACK,sCAiBA,MAAMC,CAOb,CAME,YAA6BC,EAA4B,CAA5B,UAAAA,CAA6B,CALzC,YAAc,IAAIN,EAGjCG,EAAoBC,CAAiC,EAGvD,SAAgB,CACd,KAAM,CAAE,aAAAG,CAAa,EAAI,KAAK,KACxBC,EAAiC,CACrC,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,EAEA,OAAO,IAAIb,EAAYa,CAAa,EACjC,oBAAoBD,CAAY,EAChC,MAAM,CACX,CAEA,cACEE,EAC0E,CAC1E,OAAOR,EAAM,aACX,KAAK,YAAY,SAASQ,CAAY,CACxC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAS,IAAId,EAAWa,CAAY,EAEpCE,EAAW,CAAIC,EAAsBC,IACzCZ,EAAM,aAAaW,CAAK,EAAE,SACxB,IAAIb,EAAuBc,CAAQ,CACrC,EAEF,OAAOX,EAAgB,CACrB,WAAY,IACVA,EAAgB,CACd,QAAS,IACPS,EAASD,EAAO,gBAAgB,EAAG,oBAAoB,EACzD,QAAS,IACPC,EAASD,EAAO,gBAAgB,EAAG,qBAAqB,EAC1D,cAAe,IACbC,EAASD,EAAO,gBAAgB,EAAG,2BAA2B,EAChE,UAAW,IACTC,EAASD,EAAO,gBAAgB,EAAG,8BAA8B,EAC9D,MAAOI,GACNH,EACED,EAAO,qBAAqBI,CAAM,EAClC,uBACF,CACF,EACC,IAAKC,GAAQlB,EAAmBkB,EAAK,EAAK,CAAC,CAClD,CAAC,EAEH,UAAW,IACTJ,EAASD,EAAO,gBAAgB,EAAG,6BAA6B,EAC7D,MAAOI,GACNH,EACED,EAAO,qBAAqBI,CAAM,EAClC,sBACF,CACF,EACC,IAAKC,GAAQlB,EAAmBkB,EAAK,EAAK,CAAC,EAEhD,YAAa,IACXb,EAAgB,CACd,GAAI,IACFS,EACED,EAAO,qBAAqB,CAAI,EAChC,2BACF,EACF,QAAS,IACPC,EACED,EAAO,gBAAgB,EACvB,gCACF,EACF,QAAS,IACPC,EACED,EAAO,gBAAgB,EACvB,iCACF,EACF,cAAe,IACbC,EACED,EAAO,gBAAgB,EACvB,uCACF,EACF,UAAW,IACTC,EACED,EAAO,gBAAgB,EACvB,mCACF,EAAE,MAAOI,GACPH,EACED,EAAO,qBAAqBI,CAAM,EAClC,4BACF,CACF,EACF,UAAW,IACTH,EACED,EAAO,gBAAgB,EACvB,yCACF,EAAE,MAAOI,GACPH,EACED,EAAO,qBAAqBI,CAAM,EAClC,kCACF,CACF,CACJ,CAAC,EAAE,IAAKE,GACNnB,EACE,WAAW,KAAK,CACd,GAAGmB,EAAY,GACfA,EAAY,QACZA,EAAY,QACZA,EAAY,cACZA,EAAY,UAAU,OACtB,GAAGA,EAAY,UACfA,EAAY,UAAU,OACtB,GAAGA,EAAY,SACjB,CAAC,EACD,EACF,CACF,CACJ,CAAC,EAAE,OAAO,CACR,KAAOC,GAAUnB,EAAqB,CAAE,MAAAmB,CAAM,CAAC,EAC/C,MAAQC,GAASpB,EAAqB,CAAE,KAAAoB,CAAK,CAAC,CAChD,CAAC,CACH,CAAC,CACH,CACF",
4
+ "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduBuilderArgs,\n ApduParser,\n type ApduResponse,\n bufferToHexaString,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport { eitherSeqRecord } from \"@internal/utils/eitherSeqRecord\";\n\nimport {\n LEDGER_SYNC_ERRORS,\n type LedgerKeyringProtocolErrorCodes,\n LedgerKeyringProtocolErrorFactory,\n} from \"./utils/ledgerKeyringProtocolErrors\";\n\nexport type GetSeedIdCommandResponse = {\n readonly credential: {\n readonly version: number;\n readonly curveId: number;\n readonly signAlgorithm: number;\n readonly publicKey: string;\n };\n readonly signature: string;\n readonly attestation: string;\n};\n\nexport type GetSeedIdCommandArgs = {\n readonly challengeTLV: string;\n};\n\nexport class GetSeedIdCommand\n implements\n Command<\n GetSeedIdCommandResponse,\n GetSeedIdCommandArgs,\n LedgerKeyringProtocolErrorCodes\n >\n{\n readonly name = \"getSeedId\";\n private readonly errorHelper = new CommandErrorHelper<\n GetSeedIdCommandResponse,\n LedgerKeyringProtocolErrorCodes\n >(LEDGER_SYNC_ERRORS, LedgerKeyringProtocolErrorFactory);\n\n constructor(private readonly args: GetSeedIdCommandArgs) {}\n getApdu(): Apdu {\n const { challengeTLV } = this.args;\n const getSeedIdArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x05,\n p1: 0x00,\n p2: 0x00,\n };\n\n return new ApduBuilder(getSeedIdArgs)\n .addHexaStringToData(challengeTLV)\n .build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<GetSeedIdCommandResponse, LedgerKeyringProtocolErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(apduResponse),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(apduResponse);\n\n const required = <T>(value: T | undefined, errorMsg: string) =>\n Maybe.fromNullable(value).toEither(\n new InvalidStatusWordError(errorMsg),\n );\n\n return eitherSeqRecord({\n credential: () =>\n eitherSeqRecord({\n version: () =>\n required(parser.extract8BitUInt(), \"Version is missing\"),\n curveId: () =>\n required(parser.extract8BitUInt(), \"Curve ID is missing\"),\n signAlgorithm: () =>\n required(parser.extract8BitUInt(), \"Sign algorithm is missing\"),\n publicKey: () =>\n required(parser.extract8BitUInt(), \"Public key length is missing\")\n .chain((length) =>\n required(\n parser.extractFieldByLength(length),\n \"Public key is missing\",\n ),\n )\n .map((str) => bufferToHexaString(str, false)),\n }),\n\n signature: () =>\n required(parser.extract8BitUInt(), \"Signature length is missing\")\n .chain((length) =>\n required(\n parser.extractFieldByLength(length),\n \"Signature is missing\",\n ),\n )\n .map((str) => bufferToHexaString(str, false)),\n\n attestation: () =>\n eitherSeqRecord({\n id: () =>\n required(\n parser.extractFieldByLength(0x01),\n \"Attestation Id is missing\",\n ),\n version: () =>\n required(\n parser.extract8BitUInt(),\n \"Attestation version is missing\",\n ),\n curveId: () =>\n required(\n parser.extract8BitUInt(),\n \"Attestation curve ID is missing\",\n ),\n signAlgorithm: () =>\n required(\n parser.extract8BitUInt(),\n \"Attestation sign algorithm is missing\",\n ),\n publicKey: () =>\n required(\n parser.extract8BitUInt(),\n \"Attestation key length is missing\",\n ).chain((length) =>\n required(\n parser.extractFieldByLength(length),\n \"Attestation key is missing\",\n ),\n ),\n signature: () =>\n required(\n parser.extract8BitUInt(),\n \"Attestation signature length is missing\",\n ).chain((length) =>\n required(\n parser.extractFieldByLength(length),\n \"Attestation signature is missing\",\n ),\n ),\n }).map((attestation) =>\n bufferToHexaString(\n Uint8Array.from([\n ...attestation.id,\n attestation.version,\n attestation.curveId,\n attestation.signAlgorithm,\n attestation.publicKey.length,\n ...attestation.publicKey,\n attestation.signature.length,\n ...attestation.signature,\n ]),\n false,\n ),\n ),\n }).caseOf({\n Left: (error) => CommandResultFactory({ error }),\n Right: (data) => CommandResultFactory({ data }),\n });\n });\n }\n}\n"],
5
+ "mappings": "AAAA,OAEE,eAAAA,EAEA,cAAAC,EAEA,sBAAAC,EAGA,wBAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAEtB,OAAS,mBAAAC,MAAuB,kCAEhC,OACE,sBAAAC,EAEA,qCAAAC,MACK,sCAiBA,MAAMC,CAOb,CAOE,YAA6BC,EAA4B,CAA5B,UAAAA,CAA6B,CANjD,KAAO,YACC,YAAc,IAAIN,EAGjCG,EAAoBC,CAAiC,EAGvD,SAAgB,CACd,KAAM,CAAE,aAAAG,CAAa,EAAI,KAAK,KACxBC,EAAiC,CACrC,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,EAEA,OAAO,IAAIb,EAAYa,CAAa,EACjC,oBAAoBD,CAAY,EAChC,MAAM,CACX,CAEA,cACEE,EAC0E,CAC1E,OAAOR,EAAM,aACX,KAAK,YAAY,SAASQ,CAAY,CACxC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAS,IAAId,EAAWa,CAAY,EAEpCE,EAAW,CAAIC,EAAsBC,IACzCZ,EAAM,aAAaW,CAAK,EAAE,SACxB,IAAIb,EAAuBc,CAAQ,CACrC,EAEF,OAAOX,EAAgB,CACrB,WAAY,IACVA,EAAgB,CACd,QAAS,IACPS,EAASD,EAAO,gBAAgB,EAAG,oBAAoB,EACzD,QAAS,IACPC,EAASD,EAAO,gBAAgB,EAAG,qBAAqB,EAC1D,cAAe,IACbC,EAASD,EAAO,gBAAgB,EAAG,2BAA2B,EAChE,UAAW,IACTC,EAASD,EAAO,gBAAgB,EAAG,8BAA8B,EAC9D,MAAOI,GACNH,EACED,EAAO,qBAAqBI,CAAM,EAClC,uBACF,CACF,EACC,IAAKC,GAAQlB,EAAmBkB,EAAK,EAAK,CAAC,CAClD,CAAC,EAEH,UAAW,IACTJ,EAASD,EAAO,gBAAgB,EAAG,6BAA6B,EAC7D,MAAOI,GACNH,EACED,EAAO,qBAAqBI,CAAM,EAClC,sBACF,CACF,EACC,IAAKC,GAAQlB,EAAmBkB,EAAK,EAAK,CAAC,EAEhD,YAAa,IACXb,EAAgB,CACd,GAAI,IACFS,EACED,EAAO,qBAAqB,CAAI,EAChC,2BACF,EACF,QAAS,IACPC,EACED,EAAO,gBAAgB,EACvB,gCACF,EACF,QAAS,IACPC,EACED,EAAO,gBAAgB,EACvB,iCACF,EACF,cAAe,IACbC,EACED,EAAO,gBAAgB,EACvB,uCACF,EACF,UAAW,IACTC,EACED,EAAO,gBAAgB,EACvB,mCACF,EAAE,MAAOI,GACPH,EACED,EAAO,qBAAqBI,CAAM,EAClC,4BACF,CACF,EACF,UAAW,IACTH,EACED,EAAO,gBAAgB,EACvB,yCACF,EAAE,MAAOI,GACPH,EACED,EAAO,qBAAqBI,CAAM,EAClC,kCACF,CACF,CACJ,CAAC,EAAE,IAAKE,GACNnB,EACE,WAAW,KAAK,CACd,GAAGmB,EAAY,GACfA,EAAY,QACZA,EAAY,QACZA,EAAY,cACZA,EAAY,UAAU,OACtB,GAAGA,EAAY,UACfA,EAAY,UAAU,OACtB,GAAGA,EAAY,SACjB,CAAC,EACD,EACF,CACF,CACJ,CAAC,EAAE,OAAO,CACR,KAAOC,GAAUnB,EAAqB,CAAE,MAAAmB,CAAM,CAAC,EAC/C,MAAQC,GAASpB,EAAqB,CAAE,KAAAoB,CAAK,CAAC,CAChD,CAAC,CACH,CAAC,CACH,CACF",
6
6
  "names": ["ApduBuilder", "ApduParser", "bufferToHexaString", "CommandResultFactory", "InvalidStatusWordError", "CommandErrorHelper", "Maybe", "eitherSeqRecord", "LEDGER_SYNC_ERRORS", "LedgerKeyringProtocolErrorFactory", "GetSeedIdCommand", "args", "challengeTLV", "getSeedIdArgs", "apduResponse", "parser", "required", "value", "errorMsg", "length", "str", "attestation", "error", "data"]
7
7
  }
@@ -1,4 +1,4 @@
1
- import{CommandResultFactory as n,InvalidStatusWordError as c}from"@ledgerhq/device-management-kit";import{hexaStringToBuffer as a}from"@ledgerhq/device-management-kit";import{GetSeedIdCommand as s}from"./GetSeedIdCommand";describe("GetSeedIdCommand",()=>{const o="01020304";it("should build the correct APDU",()=>{const t=new s({challengeTLV:o}).getApdu(),e=a(o);expect(t.getRawApdu()).toEqual(Uint8Array.from([224,5,0,0,e.length,...e]))}),it("should parse the response correctly",()=>{const r=new s({challengeTLV:o}),t=a(`
1
+ import{CommandResultFactory as s,InvalidStatusWordError as c}from"@ledgerhq/device-management-kit";import{hexaStringToBuffer as n}from"@ledgerhq/device-management-kit";import{GetSeedIdCommand as r}from"./GetSeedIdCommand";describe("GetSeedIdCommand",()=>{const o="01020304";describe("name",()=>{it("should be 'getSeedId'",()=>{const e=new r({challengeTLV:o});expect(e.name).toBe("getSeedId")})}),it("should build the correct APDU",()=>{const a=new r({challengeTLV:o}).getApdu(),t=n(o);expect(a.getRawApdu()).toEqual(Uint8Array.from([224,5,0,0,t.length,...t]))}),it("should parse the response correctly",()=>{const e=new r({challengeTLV:o}),a=n(`
2
2
  01 02 03
3
3
  06
4
4
  05 06 07 08 09 0a
@@ -11,7 +11,7 @@ import{CommandResultFactory as n,InvalidStatusWordError as c}from"@ledgerhq/devi
11
11
  05
12
12
  2e 2f 30 31 32
13
13
  12 13 14
14
- `.replace(/\s+/g,"")),e=r.parseResponse({statusCode:Uint8Array.from([144,0]),data:t});expect(e).toStrictEqual(n({data:{credential:{version:1,curveId:2,signAlgorithm:3,publicKey:"05060708090a"},signature:"161718191a",attestation:"1b0102030720212223242526052e2f303132"}}))}),it("should parsing error response",()=>{const r=new s({challengeTLV:o}),t=a(`
14
+ `.replace(/\s+/g,"")),t=e.parseResponse({statusCode:Uint8Array.from([144,0]),data:a});expect(t).toStrictEqual(s({data:{credential:{version:1,curveId:2,signAlgorithm:3,publicKey:"05060708090a"},signature:"161718191a",attestation:"1b0102030720212223242526052e2f303132"}}))}),it("should parsing error response",()=>{const e=new r({challengeTLV:o}),a=n(`
15
15
  01 02 03
16
16
  06
17
17
  05
@@ -23,5 +23,5 @@ import{CommandResultFactory as n,InvalidStatusWordError as c}from"@ledgerhq/devi
23
23
  20 21 22 23 24 25 26
24
24
  05
25
25
  2e 2f 30 31 32
26
- `.replace(/\s+/g,"")),e=r.parseResponse({statusCode:Uint8Array.from([144,0]),data:t});expect(e).toStrictEqual(n({error:expect.any(c)}))})});
26
+ `.replace(/\s+/g,"")),t=e.parseResponse({statusCode:Uint8Array.from([144,0]),data:a});expect(t).toStrictEqual(s({error:expect.any(c)}))})});
27
27
  //# sourceMappingURL=GetSeedIdCommand.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/GetSeedIdCommand.test.ts"],
4
- "sourcesContent": ["import {\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\n\nimport { GetSeedIdCommand } from \"./GetSeedIdCommand\";\n\ndescribe(\"GetSeedIdCommand\", () => {\n const mockedChallenge = \"01020304\";\n\n it(\"should build the correct APDU\", () => {\n // GIVEN\n const command = new GetSeedIdCommand({\n challengeTLV: mockedChallenge,\n });\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n const challengeBytes = hexaStringToBuffer(mockedChallenge)!;\n expect(apdu.getRawApdu()).toEqual(\n Uint8Array.from([\n 0xe0, // CLA\n 0x05, // INS\n 0x00, // P1\n 0x00, // P2\n challengeBytes.length, // Lc\n ...challengeBytes, // CData\n ]),\n );\n });\n\n it(\"should parse the response correctly\", () => {\n // GIVEN\n const command = new GetSeedIdCommand({\n challengeTLV: mockedChallenge,\n });\n const mockedResponse = hexaStringToBuffer(\n `\n 01 02 03\n 06\n 05 06 07 08 09 0a\n 05\n 16 17 18 19 1a\n 1b\n 01 02 03\n 07\n 20 21 22 23 24 25 26\n 05\n 2e 2f 30 31 32\n 12 13 14\n `.replace(/\\s+/g, \"\"), // (the last three bytes should be ignored)\n )!;\n\n // WHEN\n const result = command.parseResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: mockedResponse,\n });\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n data: {\n credential: {\n version: 1,\n curveId: 2,\n signAlgorithm: 3,\n publicKey: \"05060708090a\",\n },\n signature: \"161718191a\",\n attestation: \"1b0102030720212223242526052e2f303132\",\n },\n }),\n );\n });\n\n it(\"should parsing error response\", () => {\n // GIVEN\n const command = new GetSeedIdCommand({\n challengeTLV: mockedChallenge,\n });\n const mockedResponse = hexaStringToBuffer(\n `\n 01 02 03\n 06\n 05\n 05\n 16 17 18 19 1a\n 1b\n 01 02 03\n 07\n 20 21 22 23 24 25 26\n 05\n 2e 2f 30 31 32\n `.replace(/\\s+/g, \"\"),\n )!;\n\n // WHEN\n const result = command.parseResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: mockedResponse,\n });\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n error: expect.any(InvalidStatusWordError), // (That's not an assignment to `any` maybe an eslint bug)\n }),\n );\n });\n});\n"],
5
- "mappings": "AAAA,OACE,wBAAAA,EACA,0BAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,kCAEnC,OAAS,oBAAAC,MAAwB,qBAEjC,SAAS,mBAAoB,IAAM,CACjC,MAAMC,EAAkB,WAExB,GAAG,gCAAiC,IAAM,CAOxC,MAAMC,EALU,IAAIF,EAAiB,CACnC,aAAcC,CAChB,CAAC,EAGoB,QAAQ,EAGvBE,EAAiBJ,EAAmBE,CAAe,EACzD,OAAOC,EAAK,WAAW,CAAC,EAAE,QACxB,WAAW,KAAK,CACd,IACA,EACA,EACA,EACAC,EAAe,OACf,GAAGA,CACL,CAAC,CACH,CACF,CAAC,EAED,GAAG,sCAAuC,IAAM,CAE9C,MAAMC,EAAU,IAAIJ,EAAiB,CACnC,aAAcC,CAChB,CAAC,EACKI,EAAiBN,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAaE,QAAQ,OAAQ,EAAE,CACtB,EAGMO,EAASF,EAAQ,cAAc,CACnC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMC,CACR,CAAC,EAGD,OAAOC,CAAM,EAAE,cACbT,EAAqB,CACnB,KAAM,CACJ,WAAY,CACV,QAAS,EACT,QAAS,EACT,cAAe,EACf,UAAW,cACb,EACA,UAAW,aACX,YAAa,sCACf,CACF,CAAC,CACH,CACF,CAAC,EAED,GAAG,gCAAiC,IAAM,CAExC,MAAMO,EAAU,IAAIJ,EAAiB,CACnC,aAAcC,CAChB,CAAC,EACKI,EAAiBN,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAYE,QAAQ,OAAQ,EAAE,CACtB,EAGMO,EAASF,EAAQ,cAAc,CACnC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMC,CACR,CAAC,EAGD,OAAOC,CAAM,EAAE,cACbT,EAAqB,CAEnB,MAAO,OAAO,IAAIC,CAAsB,CAC1C,CAAC,CACH,CACF,CAAC,CACH,CAAC",
6
- "names": ["CommandResultFactory", "InvalidStatusWordError", "hexaStringToBuffer", "GetSeedIdCommand", "mockedChallenge", "apdu", "challengeBytes", "command", "mockedResponse", "result"]
4
+ "sourcesContent": ["import {\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\n\nimport { GetSeedIdCommand } from \"./GetSeedIdCommand\";\n\ndescribe(\"GetSeedIdCommand\", () => {\n const mockedChallenge = \"01020304\";\n\n describe(\"name\", () => {\n it(\"should be 'getSeedId'\", () => {\n const command = new GetSeedIdCommand({\n challengeTLV: mockedChallenge,\n });\n expect(command.name).toBe(\"getSeedId\");\n });\n });\n\n it(\"should build the correct APDU\", () => {\n // GIVEN\n const command = new GetSeedIdCommand({\n challengeTLV: mockedChallenge,\n });\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n const challengeBytes = hexaStringToBuffer(mockedChallenge)!;\n expect(apdu.getRawApdu()).toEqual(\n Uint8Array.from([\n 0xe0, // CLA\n 0x05, // INS\n 0x00, // P1\n 0x00, // P2\n challengeBytes.length, // Lc\n ...challengeBytes, // CData\n ]),\n );\n });\n\n it(\"should parse the response correctly\", () => {\n // GIVEN\n const command = new GetSeedIdCommand({\n challengeTLV: mockedChallenge,\n });\n const mockedResponse = hexaStringToBuffer(\n `\n 01 02 03\n 06\n 05 06 07 08 09 0a\n 05\n 16 17 18 19 1a\n 1b\n 01 02 03\n 07\n 20 21 22 23 24 25 26\n 05\n 2e 2f 30 31 32\n 12 13 14\n `.replace(/\\s+/g, \"\"), // (the last three bytes should be ignored)\n )!;\n\n // WHEN\n const result = command.parseResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: mockedResponse,\n });\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n data: {\n credential: {\n version: 1,\n curveId: 2,\n signAlgorithm: 3,\n publicKey: \"05060708090a\",\n },\n signature: \"161718191a\",\n attestation: \"1b0102030720212223242526052e2f303132\",\n },\n }),\n );\n });\n\n it(\"should parsing error response\", () => {\n // GIVEN\n const command = new GetSeedIdCommand({\n challengeTLV: mockedChallenge,\n });\n const mockedResponse = hexaStringToBuffer(\n `\n 01 02 03\n 06\n 05\n 05\n 16 17 18 19 1a\n 1b\n 01 02 03\n 07\n 20 21 22 23 24 25 26\n 05\n 2e 2f 30 31 32\n `.replace(/\\s+/g, \"\"),\n )!;\n\n // WHEN\n const result = command.parseResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: mockedResponse,\n });\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n error: expect.any(InvalidStatusWordError), // (That's not an assignment to `any` maybe an eslint bug)\n }),\n );\n });\n});\n"],
5
+ "mappings": "AAAA,OACE,wBAAAA,EACA,0BAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,kCAEnC,OAAS,oBAAAC,MAAwB,qBAEjC,SAAS,mBAAoB,IAAM,CACjC,MAAMC,EAAkB,WAExB,SAAS,OAAQ,IAAM,CACrB,GAAG,wBAAyB,IAAM,CAChC,MAAMC,EAAU,IAAIF,EAAiB,CACnC,aAAcC,CAChB,CAAC,EACD,OAAOC,EAAQ,IAAI,EAAE,KAAK,WAAW,CACvC,CAAC,CACH,CAAC,EAED,GAAG,gCAAiC,IAAM,CAOxC,MAAMC,EALU,IAAIH,EAAiB,CACnC,aAAcC,CAChB,CAAC,EAGoB,QAAQ,EAGvBG,EAAiBL,EAAmBE,CAAe,EACzD,OAAOE,EAAK,WAAW,CAAC,EAAE,QACxB,WAAW,KAAK,CACd,IACA,EACA,EACA,EACAC,EAAe,OACf,GAAGA,CACL,CAAC,CACH,CACF,CAAC,EAED,GAAG,sCAAuC,IAAM,CAE9C,MAAMF,EAAU,IAAIF,EAAiB,CACnC,aAAcC,CAChB,CAAC,EACKI,EAAiBN,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAaE,QAAQ,OAAQ,EAAE,CACtB,EAGMO,EAASJ,EAAQ,cAAc,CACnC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMG,CACR,CAAC,EAGD,OAAOC,CAAM,EAAE,cACbT,EAAqB,CACnB,KAAM,CACJ,WAAY,CACV,QAAS,EACT,QAAS,EACT,cAAe,EACf,UAAW,cACb,EACA,UAAW,aACX,YAAa,sCACf,CACF,CAAC,CACH,CACF,CAAC,EAED,GAAG,gCAAiC,IAAM,CAExC,MAAMK,EAAU,IAAIF,EAAiB,CACnC,aAAcC,CAChB,CAAC,EACKI,EAAiBN,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAYE,QAAQ,OAAQ,EAAE,CACtB,EAGMO,EAASJ,EAAQ,cAAc,CACnC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMG,CACR,CAAC,EAGD,OAAOC,CAAM,EAAE,cACbT,EAAqB,CAEnB,MAAO,OAAO,IAAIC,CAAsB,CAC1C,CAAC,CACH,CACF,CAAC,CACH,CAAC",
6
+ "names": ["CommandResultFactory", "InvalidStatusWordError", "hexaStringToBuffer", "GetSeedIdCommand", "mockedChallenge", "command", "apdu", "challengeBytes", "mockedResponse", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ApduBuilder as t,ApduParser as s,CommandResultFactory as o,InvalidStatusWordError as d}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as m}from"@ledgerhq/signer-utils";import{Maybe as i}from"purify-ts";import{LEDGER_SYNC_ERRORS as p,LedgerKeyringProtocolErrorFactory as a}from"./utils/ledgerKeyringProtocolErrors";class c{errorHelper=new m(p,a);getApdu(){const r={cla:224,ins:3,p1:0,p2:0};return new t(r).build()}parseResponse(r){return i.fromNullable(this.errorHelper.getError(r)).orDefaultLazy(()=>{const e=new s(r).encodeToString(r.data);return e?o({data:{version:e}}):o({error:new d("Version is missing")})})}}export{c as GetVersionCommand};
1
+ import{ApduBuilder as t,ApduParser as s,CommandResultFactory as o,InvalidStatusWordError as d}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as m}from"@ledgerhq/signer-utils";import{Maybe as i}from"purify-ts";import{LEDGER_SYNC_ERRORS as p,LedgerKeyringProtocolErrorFactory as a}from"./utils/ledgerKeyringProtocolErrors";class c{name="getVersion";errorHelper=new m(p,a);getApdu(){const r={cla:224,ins:3,p1:0,p2:0};return new t(r).build()}parseResponse(r){return i.fromNullable(this.errorHelper.getError(r)).orDefaultLazy(()=>{const e=new s(r).encodeToString(r.data);return e?o({data:{version:e}}):o({error:new d("Version is missing")})})}}export{c as GetVersionCommand};
2
2
  //# sourceMappingURL=GetVersionCommand.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/GetVersionCommand.ts"],
4
- "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduBuilderArgs,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport { type GetVersionCommandResponse } from \"@api/app-binder/GetVersionCommandTypes\";\n\nimport {\n LEDGER_SYNC_ERRORS,\n type LedgerKeyringProtocolErrorCodes,\n LedgerKeyringProtocolErrorFactory,\n} from \"./utils/ledgerKeyringProtocolErrors\";\n\nexport type GetVersionCommandArgs = undefined;\n\nexport class GetVersionCommand\n implements\n Command<\n GetVersionCommandResponse,\n GetVersionCommandArgs,\n LedgerKeyringProtocolErrorCodes\n >\n{\n private readonly errorHelper = new CommandErrorHelper<\n GetVersionCommandResponse,\n LedgerKeyringProtocolErrorCodes\n >(LEDGER_SYNC_ERRORS, LedgerKeyringProtocolErrorFactory);\n\n getApdu(): Apdu {\n const getVersionArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x03,\n p1: 0x00,\n p2: 0x00,\n };\n\n const builder = new ApduBuilder(getVersionArgs);\n return builder.build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<GetVersionCommandResponse, LedgerKeyringProtocolErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(apduResponse),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(apduResponse);\n\n const version = parser.encodeToString(apduResponse.data);\n\n if (!version) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(`Version is missing`),\n });\n }\n\n return CommandResultFactory({\n data: { version },\n });\n });\n }\n}\n"],
5
- "mappings": "AAAA,OAEE,eAAAA,EAEA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAItB,OACE,sBAAAC,EAEA,qCAAAC,MACK,sCAIA,MAAMC,CAOb,CACmB,YAAc,IAAIJ,EAGjCE,EAAoBC,CAAiC,EAEvD,SAAgB,CACd,MAAME,EAAkC,CACtC,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,EAGA,OADgB,IAAIT,EAAYS,CAAc,EAC/B,MAAM,CACvB,CAEA,cACEC,EAC2E,CAC3E,OAAOL,EAAM,aACX,KAAK,YAAY,SAASK,CAAY,CACxC,EAAE,cAAc,IAAM,CAGpB,MAAMC,EAFS,IAAIV,EAAWS,CAAY,EAEnB,eAAeA,EAAa,IAAI,EAEvD,OAAKC,EAMET,EAAqB,CAC1B,KAAM,CAAE,QAAAS,CAAQ,CAClB,CAAC,EAPQT,EAAqB,CAC1B,MAAO,IAAIC,EAAuB,oBAAoB,CACxD,CAAC,CAML,CAAC,CACH,CACF",
4
+ "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduBuilderArgs,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport { type GetVersionCommandResponse } from \"@api/app-binder/GetVersionCommandTypes\";\n\nimport {\n LEDGER_SYNC_ERRORS,\n type LedgerKeyringProtocolErrorCodes,\n LedgerKeyringProtocolErrorFactory,\n} from \"./utils/ledgerKeyringProtocolErrors\";\n\nexport type GetVersionCommandArgs = undefined;\n\nexport class GetVersionCommand\n implements\n Command<\n GetVersionCommandResponse,\n GetVersionCommandArgs,\n LedgerKeyringProtocolErrorCodes\n >\n{\n readonly name = \"getVersion\";\n private readonly errorHelper = new CommandErrorHelper<\n GetVersionCommandResponse,\n LedgerKeyringProtocolErrorCodes\n >(LEDGER_SYNC_ERRORS, LedgerKeyringProtocolErrorFactory);\n\n getApdu(): Apdu {\n const getVersionArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x03,\n p1: 0x00,\n p2: 0x00,\n };\n\n const builder = new ApduBuilder(getVersionArgs);\n return builder.build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<GetVersionCommandResponse, LedgerKeyringProtocolErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(apduResponse),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(apduResponse);\n\n const version = parser.encodeToString(apduResponse.data);\n\n if (!version) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(`Version is missing`),\n });\n }\n\n return CommandResultFactory({\n data: { version },\n });\n });\n }\n}\n"],
5
+ "mappings": "AAAA,OAEE,eAAAA,EAEA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAItB,OACE,sBAAAC,EAEA,qCAAAC,MACK,sCAIA,MAAMC,CAOb,CACW,KAAO,aACC,YAAc,IAAIJ,EAGjCE,EAAoBC,CAAiC,EAEvD,SAAgB,CACd,MAAME,EAAkC,CACtC,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,EAGA,OADgB,IAAIT,EAAYS,CAAc,EAC/B,MAAM,CACvB,CAEA,cACEC,EAC2E,CAC3E,OAAOL,EAAM,aACX,KAAK,YAAY,SAASK,CAAY,CACxC,EAAE,cAAc,IAAM,CAGpB,MAAMC,EAFS,IAAIV,EAAWS,CAAY,EAEnB,eAAeA,EAAa,IAAI,EAEvD,OAAKC,EAMET,EAAqB,CAC1B,KAAM,CAAE,QAAAS,CAAQ,CAClB,CAAC,EAPQT,EAAqB,CAC1B,MAAO,IAAIC,EAAuB,oBAAoB,CACxD,CAAC,CAML,CAAC,CACH,CACF",
6
6
  "names": ["ApduBuilder", "ApduParser", "CommandResultFactory", "InvalidStatusWordError", "CommandErrorHelper", "Maybe", "LEDGER_SYNC_ERRORS", "LedgerKeyringProtocolErrorFactory", "GetVersionCommand", "getVersionArgs", "apduResponse", "version"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ApduBuilder as o,ApduParser as t,CommandResultFactory as e,InvalidStatusWordError as n}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as d}from"@ledgerhq/signer-utils";import{Maybe as a}from"purify-ts";import{LEDGER_SYNC_ERRORS as m,LedgerKeyringProtocolErrorFactory as p}from"./utils/ledgerKeyringProtocolErrors";class C{constructor(r){this.args=r}errorHelper=new d(m,p);getApdu(){const{publicKey:r}=this.args;return new o({cla:224,ins:6,p1:0,p2:0}).addBufferToData(r).build()}parseResponse(r){return a.fromNullable(this.errorHelper.getError(r)).orDefaultLazy(()=>new t(r).getUnparsedRemainingLength()!==0?e({error:new n("Unexpected response data for SetTrustedMemberCommand")}):e({data:void 0}))}}export{C as InitCommand};
1
+ import{ApduBuilder as o,ApduParser as n,CommandResultFactory as e,InvalidStatusWordError as t}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as d}from"@ledgerhq/signer-utils";import{Maybe as a}from"purify-ts";import{LEDGER_SYNC_ERRORS as m,LedgerKeyringProtocolErrorFactory as p}from"./utils/ledgerKeyringProtocolErrors";class C{constructor(r){this.args=r}name="init";errorHelper=new d(m,p);getApdu(){const{publicKey:r}=this.args;return new o({cla:224,ins:6,p1:0,p2:0}).addBufferToData(r).build()}parseResponse(r){return a.fromNullable(this.errorHelper.getError(r)).orDefaultLazy(()=>new n(r).getUnparsedRemainingLength()!==0?e({error:new t("Unexpected response data for SetTrustedMemberCommand")}):e({data:void 0}))}}export{C as InitCommand};
2
2
  //# sourceMappingURL=InitCommand.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/InitCommand.ts"],
4
- "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n LEDGER_SYNC_ERRORS,\n type LedgerKeyringProtocolErrorCodes,\n LedgerKeyringProtocolErrorFactory,\n} from \"./utils/ledgerKeyringProtocolErrors\";\n\nexport type InitCommandResponse = void;\n\nexport type InitCommandArgs = {\n publicKey: Uint8Array;\n};\n\nexport class InitCommand\n implements\n Command<\n InitCommandResponse,\n InitCommandArgs,\n LedgerKeyringProtocolErrorCodes\n >\n{\n constructor(private readonly args: InitCommandArgs) {}\n\n private readonly errorHelper = new CommandErrorHelper<\n void,\n LedgerKeyringProtocolErrorCodes\n >(LEDGER_SYNC_ERRORS, LedgerKeyringProtocolErrorFactory);\n\n getApdu(): Apdu {\n const { publicKey } = this.args;\n\n return new ApduBuilder({ cla: 0xe0, ins: 0x06, p1: 0x00, p2: 0x00 })\n .addBufferToData(publicKey)\n .build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<InitCommandResponse, LedgerKeyringProtocolErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(apduResponse),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(apduResponse);\n if (parser.getUnparsedRemainingLength() !== 0) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"Unexpected response data for SetTrustedMemberCommand\",\n ),\n });\n }\n return CommandResultFactory({ data: undefined });\n });\n }\n}\n"],
5
- "mappings": "AAAA,OAEE,eAAAA,EACA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAEtB,OACE,sBAAAC,EAEA,qCAAAC,MACK,sCAQA,MAAMC,CAOb,CACE,YAA6BC,EAAuB,CAAvB,UAAAA,CAAwB,CAEpC,YAAc,IAAIL,EAGjCE,EAAoBC,CAAiC,EAEvD,SAAgB,CACd,KAAM,CAAE,UAAAG,CAAU,EAAI,KAAK,KAE3B,OAAO,IAAIV,EAAY,CAAE,IAAK,IAAM,IAAK,EAAM,GAAI,EAAM,GAAI,CAAK,CAAC,EAChE,gBAAgBU,CAAS,EACzB,MAAM,CACX,CAEA,cACEC,EACqE,CACrE,OAAON,EAAM,aACX,KAAK,YAAY,SAASM,CAAY,CACxC,EAAE,cAAc,IACC,IAAIV,EAAWU,CAAY,EAC/B,2BAA2B,IAAM,EACnCT,EAAqB,CAC1B,MAAO,IAAIC,EACT,sDACF,CACF,CAAC,EAEID,EAAqB,CAAE,KAAM,MAAU,CAAC,CAChD,CACH,CACF",
4
+ "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n LEDGER_SYNC_ERRORS,\n type LedgerKeyringProtocolErrorCodes,\n LedgerKeyringProtocolErrorFactory,\n} from \"./utils/ledgerKeyringProtocolErrors\";\n\nexport type InitCommandResponse = void;\n\nexport type InitCommandArgs = {\n publicKey: Uint8Array;\n};\n\nexport class InitCommand\n implements\n Command<\n InitCommandResponse,\n InitCommandArgs,\n LedgerKeyringProtocolErrorCodes\n >\n{\n readonly name = \"init\";\n constructor(private readonly args: InitCommandArgs) {}\n\n private readonly errorHelper = new CommandErrorHelper<\n void,\n LedgerKeyringProtocolErrorCodes\n >(LEDGER_SYNC_ERRORS, LedgerKeyringProtocolErrorFactory);\n\n getApdu(): Apdu {\n const { publicKey } = this.args;\n\n return new ApduBuilder({ cla: 0xe0, ins: 0x06, p1: 0x00, p2: 0x00 })\n .addBufferToData(publicKey)\n .build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<InitCommandResponse, LedgerKeyringProtocolErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(apduResponse),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(apduResponse);\n if (parser.getUnparsedRemainingLength() !== 0) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"Unexpected response data for SetTrustedMemberCommand\",\n ),\n });\n }\n return CommandResultFactory({ data: undefined });\n });\n }\n}\n"],
5
+ "mappings": "AAAA,OAEE,eAAAA,EACA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAEtB,OACE,sBAAAC,EAEA,qCAAAC,MACK,sCAQA,MAAMC,CAOb,CAEE,YAA6BC,EAAuB,CAAvB,UAAAA,CAAwB,CAD5C,KAAO,OAGC,YAAc,IAAIL,EAGjCE,EAAoBC,CAAiC,EAEvD,SAAgB,CACd,KAAM,CAAE,UAAAG,CAAU,EAAI,KAAK,KAE3B,OAAO,IAAIV,EAAY,CAAE,IAAK,IAAM,IAAK,EAAM,GAAI,EAAM,GAAI,CAAK,CAAC,EAChE,gBAAgBU,CAAS,EACzB,MAAM,CACX,CAEA,cACEC,EACqE,CACrE,OAAON,EAAM,aACX,KAAK,YAAY,SAASM,CAAY,CACxC,EAAE,cAAc,IACC,IAAIV,EAAWU,CAAY,EAC/B,2BAA2B,IAAM,EACnCT,EAAqB,CAC1B,MAAO,IAAIC,EACT,sDACF,CACF,CAAC,EAEID,EAAqB,CAAE,KAAM,MAAU,CAAC,CAChD,CACH,CACF",
6
6
  "names": ["ApduBuilder", "ApduParser", "CommandResultFactory", "InvalidStatusWordError", "CommandErrorHelper", "Maybe", "LEDGER_SYNC_ERRORS", "LedgerKeyringProtocolErrorFactory", "InitCommand", "args", "publicKey", "apduResponse"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ApduResponse as c,InvalidStatusWordError as m,isSuccessCommandResult as s}from"@ledgerhq/device-management-kit";import{describe as i,expect as e,it as n}from"vitest";import{InitCommand as a}from"./InitCommand";const p=Uint8Array.from([2,...Array(32).fill(0)]),x=Uint8Array.from([240,202,204,26]),d=()=>({publicKey:p});i("InitCommand",()=>{i("getApdu()",()=>{n("builds correct APDU",()=>{const o=new a(d()).getApdu(),r=Uint8Array.from([224,6,0,0,33,2,...new Array(32).fill(0)]);e(o.getRawApdu()).toEqual(r)})}),i("parseResponse()",()=>{n("returns success when no data and SW=0x9000",()=>{const t=new a(d()),o=new c({statusCode:Uint8Array.from([144,0]),data:new Uint8Array([])}),r=t.parseResponse(o);e(s(r)).toBe(!0),s(r)&&e(r.data).toBeUndefined()}),n("errors on unexpected trailing data",()=>{const t=new a(d()),o=new c({statusCode:Uint8Array.from([144,0]),data:x}),r=t.parseResponse(o);e(s(r)).toBe(!1),s(r)||(e(r.error).toBeInstanceOf(m),e(r.error.originalError.message).toMatch("Unexpected response data"))}),n("maps SW errors to CommandResult error",()=>{const t=new a(d()),o=new c({statusCode:Uint8Array.from([106,134]),data:new Uint8Array([])}),r=t.parseResponse(o);if(e(s(r)).toBe(!1),!s(r))if("errorCode"in r.error)e(r.error.errorCode).toEqual("6a86");else throw new Error("Unexpected error type: missing errorCode")})})});
1
+ import{ApduResponse as i,InvalidStatusWordError as m,isSuccessCommandResult as n}from"@ledgerhq/device-management-kit";import{describe as c,expect as r,it as s}from"vitest";import{InitCommand as a}from"./InitCommand";const p=Uint8Array.from([2,...Array(32).fill(0)]),u=Uint8Array.from([240,202,204,26]),d=()=>({publicKey:p});c("InitCommand",()=>{c("name",()=>{s("should be 'init'",()=>{const o=new a(d());r(o.name).toBe("init")})}),c("getApdu()",()=>{s("builds correct APDU",()=>{const t=new a(d()).getApdu(),e=Uint8Array.from([224,6,0,0,33,2,...new Array(32).fill(0)]);r(t.getRawApdu()).toEqual(e)})}),c("parseResponse()",()=>{s("returns success when no data and SW=0x9000",()=>{const o=new a(d()),t=new i({statusCode:Uint8Array.from([144,0]),data:new Uint8Array([])}),e=o.parseResponse(t);r(n(e)).toBe(!0),n(e)&&r(e.data).toBeUndefined()}),s("errors on unexpected trailing data",()=>{const o=new a(d()),t=new i({statusCode:Uint8Array.from([144,0]),data:u}),e=o.parseResponse(t);r(n(e)).toBe(!1),n(e)||(r(e.error).toBeInstanceOf(m),r(e.error.originalError.message).toMatch("Unexpected response data"))}),s("maps SW errors to CommandResult error",()=>{const o=new a(d()),t=new i({statusCode:Uint8Array.from([106,134]),data:new Uint8Array([])}),e=o.parseResponse(t);if(r(n(e)).toBe(!1),!n(e))if("errorCode"in e.error)r(e.error.errorCode).toEqual("6a86");else throw new Error("Unexpected error type: missing errorCode")})})});
2
2
  //# sourceMappingURL=InitCommand.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/InitCommand.test.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport {\n ApduResponse,\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { describe, expect, it } from \"vitest\";\n\nimport { InitCommand, type InitCommandArgs } from \"./InitCommand\";\n\nconst DUMMY_PUBKEY_HEX = Uint8Array.from([0x02, ...Array(32).fill(0x00)]);\nconst PLACEHOLDER_BYTES = Uint8Array.from([0xf0, 0xca, 0xcc, 0x1a]);\n\nconst makeArgs = (): InitCommandArgs => ({ publicKey: DUMMY_PUBKEY_HEX });\n\ndescribe(\"InitCommand\", () => {\n describe(\"getApdu()\", () => {\n it(\"builds correct APDU\", () => {\n // given\n const cmd = new InitCommand(makeArgs());\n\n // when\n const apdu = cmd.getApdu();\n const expected = Uint8Array.from([\n 0xe0,\n 0x06,\n 0x00,\n 0x00,\n 0x21,\n 0x02,\n ...new Array(32).fill(0),\n ]);\n\n // then\n expect(apdu.getRawApdu()).toEqual(expected);\n });\n });\n\n describe(\"parseResponse()\", () => {\n it(\"returns success when no data and SW=0x9000\", () => {\n // given\n const cmd = new InitCommand(makeArgs());\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([]),\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(true);\n if (isSuccessCommandResult(result)) {\n expect(result.data).toBeUndefined();\n }\n });\n\n it(\"errors on unexpected trailing data\", () => {\n // given\n const cmd = new InitCommand(makeArgs());\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: PLACEHOLDER_BYTES,\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(false);\n if (!isSuccessCommandResult(result)) {\n expect(result.error).toBeInstanceOf(InvalidStatusWordError);\n expect((result.error.originalError as Error).message).toMatch(\n \"Unexpected response data\",\n );\n }\n });\n\n it(\"maps SW errors to CommandResult error\", () => {\n // given\n const cmd = new InitCommand(makeArgs());\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x6a, 0x86]),\n data: new Uint8Array([]),\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(false);\n if (!isSuccessCommandResult(result)) {\n if (\"errorCode\" in result.error) {\n expect(result.error.errorCode).toEqual(\"6a86\");\n } else {\n throw new Error(\"Unexpected error type: missing errorCode\");\n }\n }\n });\n });\n});\n"],
5
- "mappings": "AACA,OACE,gBAAAA,EACA,0BAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,YAAAC,EAAU,UAAAC,EAAQ,MAAAC,MAAU,SAErC,OAAS,eAAAC,MAAyC,gBAElD,MAAMC,EAAmB,WAAW,KAAK,CAAC,EAAM,GAAG,MAAM,EAAE,EAAE,KAAK,CAAI,CAAC,CAAC,EAClEC,EAAoB,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAI,CAAC,EAE5DC,EAAW,KAAwB,CAAE,UAAWF,CAAiB,GAEvEJ,EAAS,cAAe,IAAM,CAC5BA,EAAS,YAAa,IAAM,CAC1BE,EAAG,sBAAuB,IAAM,CAK9B,MAAMK,EAHM,IAAIJ,EAAYG,EAAS,CAAC,EAGrB,QAAQ,EACnBE,EAAW,WAAW,KAAK,CAC/B,IACA,EACA,EACA,EACA,GACA,EACA,GAAG,IAAI,MAAM,EAAE,EAAE,KAAK,CAAC,CACzB,CAAC,EAGDP,EAAOM,EAAK,WAAW,CAAC,EAAE,QAAQC,CAAQ,CAC5C,CAAC,CACH,CAAC,EAEDR,EAAS,kBAAmB,IAAM,CAChCE,EAAG,6CAA8C,IAAM,CAErD,MAAMO,EAAM,IAAIN,EAAYG,EAAS,CAAC,EAChCI,EAAW,IAAIb,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,CAAC,EAGKc,EAASF,EAAI,cAAcC,CAAQ,EAGzCT,EAAOF,EAAuBY,CAAM,CAAC,EAAE,KAAK,EAAI,EAC5CZ,EAAuBY,CAAM,GAC/BV,EAAOU,EAAO,IAAI,EAAE,cAAc,CAEtC,CAAC,EAEDT,EAAG,qCAAsC,IAAM,CAE7C,MAAMO,EAAM,IAAIN,EAAYG,EAAS,CAAC,EAChCI,EAAW,IAAIb,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMQ,CACR,CAAC,EAGKM,EAASF,EAAI,cAAcC,CAAQ,EAGzCT,EAAOF,EAAuBY,CAAM,CAAC,EAAE,KAAK,EAAK,EAC5CZ,EAAuBY,CAAM,IAChCV,EAAOU,EAAO,KAAK,EAAE,eAAeb,CAAsB,EAC1DG,EAAQU,EAAO,MAAM,cAAwB,OAAO,EAAE,QACpD,0BACF,EAEJ,CAAC,EAEDT,EAAG,wCAAyC,IAAM,CAEhD,MAAMO,EAAM,IAAIN,EAAYG,EAAS,CAAC,EAChCI,EAAW,IAAIb,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,GAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,CAAC,EAGKc,EAASF,EAAI,cAAcC,CAAQ,EAIzC,GADAT,EAAOF,EAAuBY,CAAM,CAAC,EAAE,KAAK,EAAK,EAC7C,CAACZ,EAAuBY,CAAM,EAChC,GAAI,cAAeA,EAAO,MACxBV,EAAOU,EAAO,MAAM,SAAS,EAAE,QAAQ,MAAM,MAE7C,OAAM,IAAI,MAAM,0CAA0C,CAGhE,CAAC,CACH,CAAC,CACH,CAAC",
6
- "names": ["ApduResponse", "InvalidStatusWordError", "isSuccessCommandResult", "describe", "expect", "it", "InitCommand", "DUMMY_PUBKEY_HEX", "PLACEHOLDER_BYTES", "makeArgs", "apdu", "expected", "cmd", "response", "result"]
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport {\n ApduResponse,\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { describe, expect, it } from \"vitest\";\n\nimport { InitCommand, type InitCommandArgs } from \"./InitCommand\";\n\nconst DUMMY_PUBKEY_HEX = Uint8Array.from([0x02, ...Array(32).fill(0x00)]);\nconst PLACEHOLDER_BYTES = Uint8Array.from([0xf0, 0xca, 0xcc, 0x1a]);\n\nconst makeArgs = (): InitCommandArgs => ({ publicKey: DUMMY_PUBKEY_HEX });\n\ndescribe(\"InitCommand\", () => {\n describe(\"name\", () => {\n it(\"should be 'init'\", () => {\n const cmd = new InitCommand(makeArgs());\n expect(cmd.name).toBe(\"init\");\n });\n });\n\n describe(\"getApdu()\", () => {\n it(\"builds correct APDU\", () => {\n // given\n const cmd = new InitCommand(makeArgs());\n\n // when\n const apdu = cmd.getApdu();\n const expected = Uint8Array.from([\n 0xe0,\n 0x06,\n 0x00,\n 0x00,\n 0x21,\n 0x02,\n ...new Array(32).fill(0),\n ]);\n\n // then\n expect(apdu.getRawApdu()).toEqual(expected);\n });\n });\n\n describe(\"parseResponse()\", () => {\n it(\"returns success when no data and SW=0x9000\", () => {\n // given\n const cmd = new InitCommand(makeArgs());\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([]),\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(true);\n if (isSuccessCommandResult(result)) {\n expect(result.data).toBeUndefined();\n }\n });\n\n it(\"errors on unexpected trailing data\", () => {\n // given\n const cmd = new InitCommand(makeArgs());\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: PLACEHOLDER_BYTES,\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(false);\n if (!isSuccessCommandResult(result)) {\n expect(result.error).toBeInstanceOf(InvalidStatusWordError);\n expect((result.error.originalError as Error).message).toMatch(\n \"Unexpected response data\",\n );\n }\n });\n\n it(\"maps SW errors to CommandResult error\", () => {\n // given\n const cmd = new InitCommand(makeArgs());\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x6a, 0x86]),\n data: new Uint8Array([]),\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(false);\n if (!isSuccessCommandResult(result)) {\n if (\"errorCode\" in result.error) {\n expect(result.error.errorCode).toEqual(\"6a86\");\n } else {\n throw new Error(\"Unexpected error type: missing errorCode\");\n }\n }\n });\n });\n});\n"],
5
+ "mappings": "AACA,OACE,gBAAAA,EACA,0BAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,YAAAC,EAAU,UAAAC,EAAQ,MAAAC,MAAU,SAErC,OAAS,eAAAC,MAAyC,gBAElD,MAAMC,EAAmB,WAAW,KAAK,CAAC,EAAM,GAAG,MAAM,EAAE,EAAE,KAAK,CAAI,CAAC,CAAC,EAClEC,EAAoB,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAI,CAAC,EAE5DC,EAAW,KAAwB,CAAE,UAAWF,CAAiB,GAEvEJ,EAAS,cAAe,IAAM,CAC5BA,EAAS,OAAQ,IAAM,CACrBE,EAAG,mBAAoB,IAAM,CAC3B,MAAMK,EAAM,IAAIJ,EAAYG,EAAS,CAAC,EACtCL,EAAOM,EAAI,IAAI,EAAE,KAAK,MAAM,CAC9B,CAAC,CACH,CAAC,EAEDP,EAAS,YAAa,IAAM,CAC1BE,EAAG,sBAAuB,IAAM,CAK9B,MAAMM,EAHM,IAAIL,EAAYG,EAAS,CAAC,EAGrB,QAAQ,EACnBG,EAAW,WAAW,KAAK,CAC/B,IACA,EACA,EACA,EACA,GACA,EACA,GAAG,IAAI,MAAM,EAAE,EAAE,KAAK,CAAC,CACzB,CAAC,EAGDR,EAAOO,EAAK,WAAW,CAAC,EAAE,QAAQC,CAAQ,CAC5C,CAAC,CACH,CAAC,EAEDT,EAAS,kBAAmB,IAAM,CAChCE,EAAG,6CAA8C,IAAM,CAErD,MAAMK,EAAM,IAAIJ,EAAYG,EAAS,CAAC,EAChCI,EAAW,IAAIb,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,CAAC,EAGKc,EAASJ,EAAI,cAAcG,CAAQ,EAGzCT,EAAOF,EAAuBY,CAAM,CAAC,EAAE,KAAK,EAAI,EAC5CZ,EAAuBY,CAAM,GAC/BV,EAAOU,EAAO,IAAI,EAAE,cAAc,CAEtC,CAAC,EAEDT,EAAG,qCAAsC,IAAM,CAE7C,MAAMK,EAAM,IAAIJ,EAAYG,EAAS,CAAC,EAChCI,EAAW,IAAIb,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMQ,CACR,CAAC,EAGKM,EAASJ,EAAI,cAAcG,CAAQ,EAGzCT,EAAOF,EAAuBY,CAAM,CAAC,EAAE,KAAK,EAAK,EAC5CZ,EAAuBY,CAAM,IAChCV,EAAOU,EAAO,KAAK,EAAE,eAAeb,CAAsB,EAC1DG,EAAQU,EAAO,MAAM,cAAwB,OAAO,EAAE,QACpD,0BACF,EAEJ,CAAC,EAEDT,EAAG,wCAAyC,IAAM,CAEhD,MAAMK,EAAM,IAAIJ,EAAYG,EAAS,CAAC,EAChCI,EAAW,IAAIb,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,GAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,CAAC,EAGKc,EAASJ,EAAI,cAAcG,CAAQ,EAIzC,GADAT,EAAOF,EAAuBY,CAAM,CAAC,EAAE,KAAK,EAAK,EAC7C,CAACZ,EAAuBY,CAAM,EAChC,GAAI,cAAeA,EAAO,MACxBV,EAAOU,EAAO,MAAM,SAAS,EAAE,QAAQ,MAAM,MAE7C,OAAM,IAAI,MAAM,0CAA0C,CAGhE,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["ApduResponse", "InvalidStatusWordError", "isSuccessCommandResult", "describe", "expect", "it", "InitCommand", "DUMMY_PUBKEY_HEX", "PLACEHOLDER_BYTES", "makeArgs", "cmd", "apdu", "expected", "response", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ApduBuilder as n,ApduParser as s,CommandResultFactory as a,InvalidStatusWordError as d}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as m}from"@ledgerhq/signer-utils";import{Maybe as p}from"purify-ts";import{LEDGER_SYNC_ERRORS as i,LedgerKeyringProtocolErrorFactory as l}from"./utils/ledgerKeyringProtocolErrors";class P{constructor(r){this.args=r}errorHelper=new m(i,l);getApdu(){const{signature:r}=this.args;return new n({cla:224,ins:8,p1:2,p2:0}).addBufferToData(r).build()}parseResponse(r){return p.fromNullable(this.errorHelper.getError(r)).orDefaultLazy(()=>{const e=new s(r),t=e.getUnparsedRemainingLength(),o=e.extractFieldByLength(t);return o?a({data:o}):a({error:new d("No data returned by ParseBlockSignatureCommand")})})}}export{P as ParseBlockSignatureCommand};
1
+ import{ApduBuilder as t,ApduParser as s,CommandResultFactory as a,InvalidStatusWordError as d}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as m}from"@ledgerhq/signer-utils";import{Maybe as p}from"purify-ts";import{LEDGER_SYNC_ERRORS as i,LedgerKeyringProtocolErrorFactory as l}from"./utils/ledgerKeyringProtocolErrors";class P{constructor(r){this.args=r}name="parseBlockSignature";errorHelper=new m(i,l);getApdu(){const{signature:r}=this.args;return new t({cla:224,ins:8,p1:2,p2:0}).addBufferToData(r).build()}parseResponse(r){return p.fromNullable(this.errorHelper.getError(r)).orDefaultLazy(()=>{const e=new s(r),n=e.getUnparsedRemainingLength(),o=e.extractFieldByLength(n);return o?a({data:o}):a({error:new d("No data returned by ParseBlockSignatureCommand")})})}}export{P as ParseBlockSignatureCommand};
2
2
  //# sourceMappingURL=ParseBlockSignatureCommand.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/ParseBlockSignatureCommand.ts"],
4
- "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n LEDGER_SYNC_ERRORS,\n type LedgerKeyringProtocolErrorCodes,\n LedgerKeyringProtocolErrorFactory,\n} from \"./utils/ledgerKeyringProtocolErrors\";\n\nexport type ParseBlockSignatureCommandResponse = Uint8Array;\n\nexport type ParseBlockSignatureCommandArgs = { signature: Uint8Array };\n\nexport class ParseBlockSignatureCommand\n implements\n Command<\n ParseBlockSignatureCommandResponse,\n ParseBlockSignatureCommandArgs,\n LedgerKeyringProtocolErrorCodes\n >\n{\n private readonly errorHelper = new CommandErrorHelper<\n ParseBlockSignatureCommandResponse,\n LedgerKeyringProtocolErrorCodes\n >(LEDGER_SYNC_ERRORS, LedgerKeyringProtocolErrorFactory);\n\n constructor(private readonly args: ParseBlockSignatureCommandArgs) {}\n\n getApdu(): Apdu {\n const { signature } = this.args;\n return (\n new ApduBuilder({\n cla: 0xe0,\n ins: 0x08,\n p1: 0x02,\n p2: 0x00,\n })\n // raw signature chunk\n .addBufferToData(signature)\n .build()\n );\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<\n ParseBlockSignatureCommandResponse,\n LedgerKeyringProtocolErrorCodes\n > {\n return Maybe.fromNullable(\n this.errorHelper.getError(apduResponse),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(apduResponse);\n const remaining = parser.getUnparsedRemainingLength();\n const payload = parser.extractFieldByLength(remaining);\n if (!payload) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"No data returned by ParseBlockSignatureCommand\",\n ),\n });\n }\n return CommandResultFactory({ data: payload });\n });\n }\n}\n"],
5
- "mappings": "AAAA,OAEE,eAAAA,EACA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAEtB,OACE,sBAAAC,EAEA,qCAAAC,MACK,sCAMA,MAAMC,CAOb,CAME,YAA6BC,EAAsC,CAAtC,UAAAA,CAAuC,CALnD,YAAc,IAAIL,EAGjCE,EAAoBC,CAAiC,EAIvD,SAAgB,CACd,KAAM,CAAE,UAAAG,CAAU,EAAI,KAAK,KAC3B,OACE,IAAIV,EAAY,CACd,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,CAAC,EAEE,gBAAgBU,CAAS,EACzB,MAAM,CAEb,CAEA,cACEC,EAIA,CACA,OAAON,EAAM,aACX,KAAK,YAAY,SAASM,CAAY,CACxC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAS,IAAIX,EAAWU,CAAY,EACpCE,EAAYD,EAAO,2BAA2B,EAC9CE,EAAUF,EAAO,qBAAqBC,CAAS,EACrD,OAAKC,EAOEZ,EAAqB,CAAE,KAAMY,CAAQ,CAAC,EANpCZ,EAAqB,CAC1B,MAAO,IAAIC,EACT,gDACF,CACF,CAAC,CAGL,CAAC,CACH,CACF",
4
+ "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n LEDGER_SYNC_ERRORS,\n type LedgerKeyringProtocolErrorCodes,\n LedgerKeyringProtocolErrorFactory,\n} from \"./utils/ledgerKeyringProtocolErrors\";\n\nexport type ParseBlockSignatureCommandResponse = Uint8Array;\n\nexport type ParseBlockSignatureCommandArgs = { signature: Uint8Array };\n\nexport class ParseBlockSignatureCommand\n implements\n Command<\n ParseBlockSignatureCommandResponse,\n ParseBlockSignatureCommandArgs,\n LedgerKeyringProtocolErrorCodes\n >\n{\n readonly name = \"parseBlockSignature\";\n private readonly errorHelper = new CommandErrorHelper<\n ParseBlockSignatureCommandResponse,\n LedgerKeyringProtocolErrorCodes\n >(LEDGER_SYNC_ERRORS, LedgerKeyringProtocolErrorFactory);\n\n constructor(private readonly args: ParseBlockSignatureCommandArgs) {}\n\n getApdu(): Apdu {\n const { signature } = this.args;\n return (\n new ApduBuilder({\n cla: 0xe0,\n ins: 0x08,\n p1: 0x02,\n p2: 0x00,\n })\n // raw signature chunk\n .addBufferToData(signature)\n .build()\n );\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<\n ParseBlockSignatureCommandResponse,\n LedgerKeyringProtocolErrorCodes\n > {\n return Maybe.fromNullable(\n this.errorHelper.getError(apduResponse),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(apduResponse);\n const remaining = parser.getUnparsedRemainingLength();\n const payload = parser.extractFieldByLength(remaining);\n if (!payload) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"No data returned by ParseBlockSignatureCommand\",\n ),\n });\n }\n return CommandResultFactory({ data: payload });\n });\n }\n}\n"],
5
+ "mappings": "AAAA,OAEE,eAAAA,EACA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAEtB,OACE,sBAAAC,EAEA,qCAAAC,MACK,sCAMA,MAAMC,CAOb,CAOE,YAA6BC,EAAsC,CAAtC,UAAAA,CAAuC,CAN3D,KAAO,sBACC,YAAc,IAAIL,EAGjCE,EAAoBC,CAAiC,EAIvD,SAAgB,CACd,KAAM,CAAE,UAAAG,CAAU,EAAI,KAAK,KAC3B,OACE,IAAIV,EAAY,CACd,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,CAAC,EAEE,gBAAgBU,CAAS,EACzB,MAAM,CAEb,CAEA,cACEC,EAIA,CACA,OAAON,EAAM,aACX,KAAK,YAAY,SAASM,CAAY,CACxC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAS,IAAIX,EAAWU,CAAY,EACpCE,EAAYD,EAAO,2BAA2B,EAC9CE,EAAUF,EAAO,qBAAqBC,CAAS,EACrD,OAAKC,EAOEZ,EAAqB,CAAE,KAAMY,CAAQ,CAAC,EANpCZ,EAAqB,CAC1B,MAAO,IAAIC,EACT,gDACF,CACF,CAAC,CAGL,CAAC,CACH,CACF",
6
6
  "names": ["ApduBuilder", "ApduParser", "CommandResultFactory", "InvalidStatusWordError", "CommandErrorHelper", "Maybe", "LEDGER_SYNC_ERRORS", "LedgerKeyringProtocolErrorFactory", "ParseBlockSignatureCommand", "args", "signature", "apduResponse", "parser", "remaining", "payload"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ApduResponse as d,isSuccessCommandResult as o}from"@ledgerhq/device-management-kit";import{describe as m,expect as e,it as n}from"vitest";import{ParseBlockSignatureCommand as c}from"./ParseBlockSignatureCommand";const u=Uint8Array.from([10,11,12]),i=Uint8Array.from([240,202,204,26]);m("ParseBlockSignatureCommand",()=>{const a=()=>({signature:u});m("getApdu()",()=>{n("builds correct APDU for signature chunk",()=>{const r=new c(a()).getApdu().getRawApdu();e(r).toEqual(Uint8Array.from([224,8,2,0,u.length,...u]))})}),m("parseResponse()",()=>{n("returns raw TLV payload on success",()=>{const t=new c(a()),s=new d({statusCode:Uint8Array.from([144,0]),data:i}),r=t.parseResponse(s);e(o(r)).toBe(!0),o(r)&&e(r.data).toEqual(i)}),n("maps SW errors to CommandResult error",()=>{const t=new c(a()),s=new d({statusCode:Uint8Array.from([106,134]),data:new Uint8Array}),r=t.parseResponse(s);e(o(r)).toBe(!1),o(r)||e(r.error.errorCode).toBe("6a86")}),n("errors when no TLV data returned",()=>{const t=new c(a()),s=new d({statusCode:Uint8Array.from([144,0]),data:new Uint8Array}),r=t.parseResponse(s);e(o(r)).toBe(!0),o(r)&&e(r.data).toEqual(new Uint8Array([]))})})});
1
+ import{ApduResponse as u,isSuccessCommandResult as o}from"@ledgerhq/device-management-kit";import{describe as m,expect as t,it as n}from"vitest";import{ParseBlockSignatureCommand as c}from"./ParseBlockSignatureCommand";const d=Uint8Array.from([10,11,12]),i=Uint8Array.from([240,202,204,26]);m("ParseBlockSignatureCommand",()=>{const a=()=>({signature:d});m("name",()=>{n("should be 'parseBlockSignature'",()=>{const r=new c(a());t(r.name).toBe("parseBlockSignature")})}),m("getApdu()",()=>{n("builds correct APDU for signature chunk",()=>{const e=new c(a()).getApdu().getRawApdu();t(e).toEqual(Uint8Array.from([224,8,2,0,d.length,...d]))})}),m("parseResponse()",()=>{n("returns raw TLV payload on success",()=>{const r=new c(a()),s=new u({statusCode:Uint8Array.from([144,0]),data:i}),e=r.parseResponse(s);t(o(e)).toBe(!0),o(e)&&t(e.data).toEqual(i)}),n("maps SW errors to CommandResult error",()=>{const r=new c(a()),s=new u({statusCode:Uint8Array.from([106,134]),data:new Uint8Array}),e=r.parseResponse(s);t(o(e)).toBe(!1),o(e)||t(e.error.errorCode).toBe("6a86")}),n("errors when no TLV data returned",()=>{const r=new c(a()),s=new u({statusCode:Uint8Array.from([144,0]),data:new Uint8Array}),e=r.parseResponse(s);t(o(e)).toBe(!0),o(e)&&t(e.data).toEqual(new Uint8Array([]))})})});
2
2
  //# sourceMappingURL=ParseBlockSignatureCommand.test.js.map