@ledgerhq/device-trusted-app-kit-ledger-keyring-protocol 0.0.0-transactionInspector-resolutionObj-20250916153045 → 0.0.0-trusted-names-native-transfer-1-20260121120757
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.
- package/lib/cjs/api/app-binder/AddToTrustchainDeviceActionTypes.js.map +1 -1
- package/lib/cjs/api/crypto/CryptoService.js.map +1 -1
- package/lib/cjs/api/model/Errors.js +1 -1
- package/lib/cjs/api/model/Errors.js.map +1 -1
- package/lib/cjs/internal/app-binder/LedgerKeyringProtocolBinder.js +1 -1
- package/lib/cjs/internal/app-binder/LedgerKeyringProtocolBinder.js.map +1 -1
- package/lib/cjs/internal/app-binder/command/GetAppNameCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetAppNameCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/GetSeedIdCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetSeedIdCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/GetSeedIdCommand.test.js +3 -3
- package/lib/cjs/internal/app-binder/command/GetSeedIdCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/GetVersionCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetVersionCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/InitCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/InitCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/InitCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/InitCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ParseBlockSignatureCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/ParseBlockSignatureCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/ParseBlockSignatureCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/ParseBlockSignatureCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ParseStreamBlockCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/ParseStreamBlockCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/ParseStreamBlockCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/ParseStreamBlockCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ParseStreamBlockHeader.js +1 -1
- package/lib/cjs/internal/app-binder/command/ParseStreamBlockHeader.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/ParseStreamBlockHeader.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/ParseStreamBlockHeader.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SetTrustedMemberCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SetTrustedMemberCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/SetTrustedMemberCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SetTrustedMemberCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SignBlockHeader.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignBlockHeader.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/SignBlockHeader.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignBlockHeader.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SignBlockSignatureCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignBlockSignatureCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/SignBlockSignatureCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignBlockSignatureCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SignBlockSingleCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignBlockSingleCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/SignBlockSingleCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignBlockSingleCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/AddToTrustchainDeviceAction.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/AddToTrustchainDeviceAction.js.map +1 -1
- package/lib/cjs/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.js.map +1 -1
- package/lib/cjs/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.js.map +2 -2
- package/lib/cjs/internal/app-binder/device-action/models/AuthenticateWithDeviceDeviceActionTypes.js.map +1 -1
- package/lib/cjs/internal/app-binder/device-action/models/AuthenticateWithKeypairDeviceActionTypes.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/models/AuthenticateWithKeypairDeviceActionTypes.js.map +1 -1
- package/lib/cjs/internal/app-binder/task/ExtractEncryptionKeyTask.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/SignChallengeWithKeypairTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/SignChallengeWithKeypairTask.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/SignChallengeWithKeypairTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SignChallengeWithKeypairTask.test.js.map +2 -2
- package/lib/cjs/internal/use-cases/authentication/AuthenticateUseCase.js +1 -1
- package/lib/cjs/internal/use-cases/authentication/AuthenticateUseCase.js.map +1 -1
- package/lib/cjs/internal/use-cases/authentication/DecryptDataUseCase.js.map +1 -1
- package/lib/cjs/internal/use-cases/authentication/EncryptDataUseCase.js.map +1 -1
- package/lib/cjs/internal/utils/LKRPBlockStream.js +1 -1
- package/lib/cjs/internal/utils/LKRPBlockStream.js.map +2 -2
- package/lib/cjs/internal/utils/LKRPCommand.js +2 -2
- package/lib/cjs/internal/utils/LKRPCommand.js.map +3 -3
- package/lib/cjs/internal/utils/LKRPCommand.test.js +2 -2
- package/lib/cjs/internal/utils/LKRPCommand.test.js.map +3 -3
- package/lib/cjs/package.json +36 -32
- package/lib/esm/api/app-binder/AddToTrustchainDeviceActionTypes.js.map +1 -1
- package/lib/esm/api/crypto/CryptoService.js.map +1 -1
- package/lib/esm/api/model/Errors.js +1 -1
- package/lib/esm/api/model/Errors.js.map +1 -1
- package/lib/esm/internal/app-binder/LedgerKeyringProtocolBinder.js +1 -1
- package/lib/esm/internal/app-binder/LedgerKeyringProtocolBinder.js.map +1 -1
- package/lib/esm/internal/app-binder/command/GetAppNameCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/GetAppNameCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/GetSeedIdCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/GetSeedIdCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/GetSeedIdCommand.test.js +3 -3
- package/lib/esm/internal/app-binder/command/GetSeedIdCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/GetVersionCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/GetVersionCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/InitCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/InitCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/InitCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/InitCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ParseBlockSignatureCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/ParseBlockSignatureCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/ParseBlockSignatureCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/ParseBlockSignatureCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ParseStreamBlockCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/ParseStreamBlockCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/ParseStreamBlockCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/ParseStreamBlockCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ParseStreamBlockHeader.js +1 -1
- package/lib/esm/internal/app-binder/command/ParseStreamBlockHeader.js.map +2 -2
- package/lib/esm/internal/app-binder/command/ParseStreamBlockHeader.test.js +1 -1
- package/lib/esm/internal/app-binder/command/ParseStreamBlockHeader.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SetTrustedMemberCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SetTrustedMemberCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/SetTrustedMemberCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SetTrustedMemberCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SignBlockHeader.js +1 -1
- package/lib/esm/internal/app-binder/command/SignBlockHeader.js.map +2 -2
- package/lib/esm/internal/app-binder/command/SignBlockHeader.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SignBlockHeader.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SignBlockSignatureCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SignBlockSignatureCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/SignBlockSignatureCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SignBlockSignatureCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SignBlockSingleCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SignBlockSingleCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/SignBlockSingleCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SignBlockSingleCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/AddToTrustchainDeviceAction.js +1 -1
- package/lib/esm/internal/app-binder/device-action/AddToTrustchainDeviceAction.js.map +1 -1
- package/lib/esm/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.js +1 -1
- package/lib/esm/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.js.map +1 -1
- package/lib/esm/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.js +1 -1
- package/lib/esm/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.js.map +2 -2
- package/lib/esm/internal/app-binder/task/ExtractEncryptionKeyTask.js.map +2 -2
- package/lib/esm/internal/app-binder/task/SignChallengeWithKeypairTask.js +1 -1
- package/lib/esm/internal/app-binder/task/SignChallengeWithKeypairTask.js.map +2 -2
- package/lib/esm/internal/app-binder/task/SignChallengeWithKeypairTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SignChallengeWithKeypairTask.test.js.map +2 -2
- package/lib/esm/internal/use-cases/authentication/AuthenticateUseCase.js.map +1 -1
- package/lib/esm/internal/use-cases/authentication/DecryptDataUseCase.js.map +1 -1
- package/lib/esm/internal/use-cases/authentication/EncryptDataUseCase.js.map +1 -1
- package/lib/esm/internal/utils/LKRPBlockStream.js +2 -2
- package/lib/esm/internal/utils/LKRPBlockStream.js.map +2 -2
- package/lib/esm/internal/utils/LKRPCommand.js +2 -2
- package/lib/esm/internal/utils/LKRPCommand.js.map +3 -3
- package/lib/esm/internal/utils/LKRPCommand.test.js +2 -2
- package/lib/esm/internal/utils/LKRPCommand.test.js.map +3 -3
- package/lib/esm/package.json +36 -32
- package/lib/types/api/app-binder/AddToTrustchainDeviceActionTypes.d.ts +1 -1
- package/lib/types/internal/app-binder/LedgerKeyringProtocolBinder.d.ts +2 -2
- package/lib/types/internal/app-binder/command/GetAppNameCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/GetAppNameCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/GetSeedIdCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/GetSeedIdCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/GetVersionCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/GetVersionCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/InitCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/InitCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ParseBlockSignatureCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/ParseBlockSignatureCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ParseStreamBlockCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/ParseStreamBlockCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ParseStreamBlockHeader.d.ts +1 -0
- package/lib/types/internal/app-binder/command/ParseStreamBlockHeader.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SetTrustedMemberCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/SetTrustedMemberCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SignBlockHeader.d.ts +1 -0
- package/lib/types/internal/app-binder/command/SignBlockHeader.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SignBlockSignatureCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/SignBlockSignatureCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SignBlockSingleCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/SignBlockSingleCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/AuthenticateWithDeviceDeviceAction.d.ts +1 -1
- package/lib/types/internal/app-binder/device-action/AuthenticateWithKeypairDeviceAction.d.ts +2 -2
- package/lib/types/internal/app-binder/device-action/models/AuthenticateWithDeviceDeviceActionTypes.d.ts +1 -1
- package/lib/types/internal/app-binder/device-action/models/AuthenticateWithKeypairDeviceActionTypes.d.ts +1 -1
- package/lib/types/internal/app-binder/task/ExtractEncryptionKeyTask.d.ts +1 -1
- package/lib/types/internal/app-binder/task/SignChallengeWithKeypairTask.d.ts +2 -2
- package/lib/types/internal/use-cases/authentication/AuthenticateUseCase.d.ts +1 -1
- package/lib/types/internal/utils/LKRPBlockStream.d.ts +1 -1
- package/lib/types/internal/utils/LKRPCommand.d.ts.map +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +30 -26
|
@@ -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
|
|
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": "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",
|
|
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", "
|
|
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,3 +1,3 @@
|
|
|
1
|
-
"use strict";var m=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var l=(
|
|
2
|
-
`))}getPublicKey(){switch(this.bytes[0]){case r.CommandTags.AddMember:case r.CommandTags.PublishKey:return this.parse().toMaybe().chain(e=>{switch(e.type){case r.CommandTags.AddMember:return(0,t.Just)(e.publicKey);case r.CommandTags.PublishKey:return(0,t.Just)(e.recipient);default:return t.Nothing}}).map(e=>(0,
|
|
1
|
+
"use strict";var m=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var l=(c,e)=>{for(var n in e)m(c,n,{get:e[n],enumerable:!0})},d=(c,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of p(e))!b.call(c,o)&&o!==n&&m(c,o,{get:()=>e[o],enumerable:!(i=f(e,o))||i.enumerable});return c};var h=c=>d(m({},"__esModule",{value:!0}),c);var B={};l(B,{LKRPCommand:()=>y});module.exports=h(B);var s=require("@ledgerhq/device-management-kit"),t=require("purify-ts"),r=require("../models/Tags"),a=require("./derivationPath"),u=require("./TLVParser");class y{constructor(e,n){this.bytes=e;this.data=n?(0,t.Just)((0,t.Right)(n)):t.Nothing}data;static fromHex(e){return new y((0,s.hexaStringToBuffer)(e)??new Uint8Array)}static fromData(e){const n=new s.ByteArrayBuilder;switch(e.type){case r.CommandTags.Seed:n.encodeInTLVFromBuffer(r.GeneralTags.Bytes,e.topic).encodeInTLVFromUInt16(r.GeneralTags.Int,e.protocolVersion).encodeInTLVFromBuffer(r.GeneralTags.PublicKey,e.groupKey).encodeInTLVFromBuffer(r.GeneralTags.Bytes,e.initializationVector).encodeInTLVFromBuffer(r.GeneralTags.Bytes,e.encryptedXpriv).encodeInTLVFromBuffer(r.GeneralTags.PublicKey,e.ephemeralPublicKey);break;case r.CommandTags.AddMember:{const o=new ArrayBuffer(4);new DataView(o).setUint32(0,e.permissions),n.encodeInTLVFromAscii(r.GeneralTags.String,e.name).encodeInTLVFromBuffer(r.GeneralTags.PublicKey,e.publicKey).encodeInTLVFromBuffer(r.GeneralTags.Int,new Uint8Array(o));break}case r.CommandTags.PublishKey:n.encodeInTLVFromBuffer(r.GeneralTags.Bytes,e.initializationVector).encodeInTLVFromBuffer(r.GeneralTags.Bytes,e.encryptedXpriv).encodeInTLVFromBuffer(r.GeneralTags.PublicKey,e.recipient).encodeInTLVFromBuffer(r.GeneralTags.PublicKey,e.ephemeralPublicKey);break;case r.CommandTags.Derive:n.encodeInTLVFromBuffer(r.GeneralTags.Bytes,(0,a.derivationPathAsBytes)(e.path)).encodeInTLVFromBuffer(r.GeneralTags.PublicKey,e.groupKey).encodeInTLVFromBuffer(r.GeneralTags.Bytes,e.initializationVector).encodeInTLVFromBuffer(r.GeneralTags.Bytes,e.encryptedXpriv).encodeInTLVFromBuffer(r.GeneralTags.PublicKey,e.ephemeralPublicKey);break}const i=n.build();return new y(new Uint8Array([e.type,i.length,...i]),e)}static bytesFromUnsignedData(e){const n=new s.ByteArrayBuilder;switch(e.type){case r.CommandTags.AddMember:{const o=new ArrayBuffer(4);new DataView(o).setUint32(0,e.permissions),n.encodeInTLVFromAscii(r.GeneralTags.String,e.name).encodeInTLVFromBuffer(r.GeneralTags.PublicKey,e.publicKey).encodeInTLVFromBuffer(r.GeneralTags.Int,new Uint8Array(o));break}case r.CommandTags.PublishKey:n.encodeInTLVFromBuffer(r.GeneralTags.Bytes,new Uint8Array).encodeInTLVFromBuffer(r.GeneralTags.Bytes,new Uint8Array).encodeInTLVFromBuffer(r.GeneralTags.PublicKey,e.recipient).encodeInTLVFromBuffer(r.GeneralTags.PublicKey,new Uint8Array);break;case r.CommandTags.Derive:n.encodeInTLVFromBuffer(r.GeneralTags.Bytes,(0,a.derivationPathAsBytes)(e.path));break}const i=n.build();return new Uint8Array([e.type,i.length,...i])}toString(){return(0,s.bufferToHexaString)(this.bytes,!1)}toU8A(){return this.bytes}parse(){return this.data.orDefaultLazy(()=>{const e=new u.TLVParser(this.bytes).parseCommandData();return this.data=(0,t.Just)(e),e})}toHuman(){return this.parse().map(e=>Object.entries(e).map(([n,i])=>n==="type"?`${r.CommandTags[i]}(0x${i?.toString(16).padStart(2,"0")}):`:` ${n}: ${i instanceof Uint8Array?(0,s.bufferToHexaString)(i,!1):i}`).join(`
|
|
2
|
+
`))}getPublicKey(){switch(this.bytes[0]){case r.CommandTags.AddMember:case r.CommandTags.PublishKey:return this.parse().toMaybe().chain(e=>{switch(e.type){case r.CommandTags.AddMember:return(0,t.Just)(e.publicKey);case r.CommandTags.PublishKey:return(0,t.Just)(e.recipient);default:return t.Nothing}}).map(e=>(0,s.bufferToHexaString)(e,!1));default:return t.Nothing}}getEncryptedPublishedKey(){switch(this.bytes[0]){case r.CommandTags.Seed:case r.CommandTags.Derive:case r.CommandTags.PublishKey:return this.parse().toMaybe().chain(e=>{switch(e.type){case r.CommandTags.Seed:case r.CommandTags.Derive:case r.CommandTags.PublishKey:return t.Maybe.of({...e});default:return t.Nothing}});default:return t.Nothing}}}0&&(module.exports={LKRPCommand});
|
|
3
3
|
//# sourceMappingURL=LKRPCommand.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/internal/utils/LKRPCommand.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n bufferToHexaString,\n ByteArrayBuilder,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Either, Just, Maybe, Nothing, Right } from \"purify-ts\";\n\nimport { type LKRPParsingError } from \"@api/model/Errors\";\nimport {\n type LKRPCommandData,\n type UnsignedCommandData,\n} from \"@internal/models/LKRPCommandTypes\";\nimport { CommandTags, GeneralTags } from \"@internal/models/Tags\";\nimport { type EncryptedPublishedKey } from \"@internal/models/Types\";\n\nimport { derivationPathAsBytes } from \"./derivationPath\";\nimport { TLVParser } from \"./TLVParser\";\n\nexport class LKRPCommand {\n private data: Maybe<Either<LKRPParsingError, LKRPCommandData>>;\n\n constructor(\n private bytes: Uint8Array,\n data?: LKRPCommandData,\n ) {\n this.data = data ? Just(Right(data)) : Nothing;\n }\n\n static fromHex(hex: string): LKRPCommand {\n return new LKRPCommand(hexaStringToBuffer(hex) ?? new Uint8Array());\n }\n\n static fromData(data: LKRPCommandData): LKRPCommand {\n const tlv = new ByteArrayBuilder();\n switch (data.type) {\n case CommandTags.Seed:\n tlv\n .encodeInTLVFromBuffer(GeneralTags.Bytes, data.topic)\n .encodeInTLVFromUInt16(GeneralTags.Int, data.protocolVersion)\n .encodeInTLVFromBuffer(GeneralTags.PublicKey, data.groupKey)\n .encodeInTLVFromBuffer(GeneralTags.Bytes, data.initializationVector)\n .encodeInTLVFromBuffer(GeneralTags.Bytes, data.encryptedXpriv)\n .encodeInTLVFromBuffer(\n GeneralTags.PublicKey,\n data.ephemeralPublicKey,\n );\n break;\n\n case CommandTags.AddMember
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAIO,2CACPC,EAAyD,qBAOzDC,EAAyC,iCAGzCC,EAAsC,4BACtCC,EAA0B,uBAEnB,MAAMN,CAAY,CAGvB,YACUO,EACRC,EACA,CAFQ,WAAAD,EAGR,KAAK,KAAOC,KAAO,WAAK,SAAMA,CAAI,CAAC,EAAI,SACzC,CAPQ,KASR,OAAO,QAAQC,EAA0B,CACvC,OAAO,IAAIT,KAAY,sBAAmBS,CAAG,GAAK,IAAI,UAAY,CACpE,CAEA,OAAO,SAASD,EAAoC,CAClD,MAAME,EAAM,IAAI,mBAChB,OAAQF,EAAK,KAAM,CACjB,KAAK,cAAY,KACfE,EACG,sBAAsB,cAAY,MAAOF,EAAK,KAAK,EACnD,sBAAsB,cAAY,IAAKA,EAAK,eAAe,EAC3D,sBAAsB,cAAY,UAAWA,EAAK,QAAQ,EAC1D,sBAAsB,cAAY,MAAOA,EAAK,oBAAoB,EAClE,sBAAsB,cAAY,MAAOA,EAAK,cAAc,EAC5D,sBACC,cAAY,UACZA,EAAK,kBACP,EACF,MAEF,KAAK,cAAY,
|
|
6
|
-
"names": ["LKRPCommand_exports", "__export", "LKRPCommand", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "import_Tags", "import_derivationPath", "import_TLVParser", "bytes", "data", "hex", "tlv", "key", "value", "str"]
|
|
4
|
+
"sourcesContent": ["import {\n bufferToHexaString,\n ByteArrayBuilder,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Either, Just, Maybe, Nothing, Right } from \"purify-ts\";\n\nimport { type LKRPParsingError } from \"@api/model/Errors\";\nimport {\n type LKRPCommandData,\n type UnsignedCommandData,\n} from \"@internal/models/LKRPCommandTypes\";\nimport { CommandTags, GeneralTags } from \"@internal/models/Tags\";\nimport { type EncryptedPublishedKey } from \"@internal/models/Types\";\n\nimport { derivationPathAsBytes } from \"./derivationPath\";\nimport { TLVParser } from \"./TLVParser\";\n\nexport class LKRPCommand {\n private data: Maybe<Either<LKRPParsingError, LKRPCommandData>>;\n\n constructor(\n private bytes: Uint8Array,\n data?: LKRPCommandData,\n ) {\n this.data = data ? Just(Right(data)) : Nothing;\n }\n\n static fromHex(hex: string): LKRPCommand {\n return new LKRPCommand(hexaStringToBuffer(hex) ?? new Uint8Array());\n }\n\n static fromData(data: LKRPCommandData): LKRPCommand {\n const tlv = new ByteArrayBuilder();\n switch (data.type) {\n case CommandTags.Seed:\n tlv\n .encodeInTLVFromBuffer(GeneralTags.Bytes, data.topic)\n .encodeInTLVFromUInt16(GeneralTags.Int, data.protocolVersion)\n .encodeInTLVFromBuffer(GeneralTags.PublicKey, data.groupKey)\n .encodeInTLVFromBuffer(GeneralTags.Bytes, data.initializationVector)\n .encodeInTLVFromBuffer(GeneralTags.Bytes, data.encryptedXpriv)\n .encodeInTLVFromBuffer(\n GeneralTags.PublicKey,\n data.ephemeralPublicKey,\n );\n break;\n\n case CommandTags.AddMember: {\n const permissions = new ArrayBuffer(4);\n new DataView(permissions).setUint32(0, data.permissions);\n tlv\n .encodeInTLVFromAscii(GeneralTags.String, data.name)\n .encodeInTLVFromBuffer(GeneralTags.PublicKey, data.publicKey)\n .encodeInTLVFromBuffer(GeneralTags.Int, new Uint8Array(permissions));\n break;\n }\n\n case CommandTags.PublishKey:\n tlv\n .encodeInTLVFromBuffer(GeneralTags.Bytes, data.initializationVector)\n .encodeInTLVFromBuffer(GeneralTags.Bytes, data.encryptedXpriv)\n .encodeInTLVFromBuffer(GeneralTags.PublicKey, data.recipient)\n .encodeInTLVFromBuffer(\n GeneralTags.PublicKey,\n data.ephemeralPublicKey,\n );\n break;\n\n case CommandTags.Derive:\n tlv\n .encodeInTLVFromBuffer(\n GeneralTags.Bytes,\n derivationPathAsBytes(data.path),\n )\n .encodeInTLVFromBuffer(GeneralTags.PublicKey, data.groupKey)\n .encodeInTLVFromBuffer(GeneralTags.Bytes, data.initializationVector)\n .encodeInTLVFromBuffer(GeneralTags.Bytes, data.encryptedXpriv)\n .encodeInTLVFromBuffer(\n GeneralTags.PublicKey,\n data.ephemeralPublicKey,\n );\n break;\n }\n\n const bytes = tlv.build();\n return new LKRPCommand(\n new Uint8Array([data.type, bytes.length, ...bytes]),\n data,\n );\n }\n\n static bytesFromUnsignedData(data: UnsignedCommandData): Uint8Array {\n const tlv = new ByteArrayBuilder();\n switch (data.type) {\n case CommandTags.AddMember: {\n // NOTE: encode the permission bytes array with DataView because\n // ByteArrayBuilder.encodeInTLVFromUInt32 doesn't seem to work with negative numbers\n // ByteArrayBuilder.add32BitIntToData doesn't seem to work with number > 0x7fffffff\n const permissions = new ArrayBuffer(4);\n new DataView(permissions).setUint32(0, data.permissions);\n tlv\n .encodeInTLVFromAscii(GeneralTags.String, data.name)\n .encodeInTLVFromBuffer(GeneralTags.PublicKey, data.publicKey)\n .encodeInTLVFromBuffer(GeneralTags.Int, new Uint8Array(permissions));\n break;\n }\n\n case CommandTags.PublishKey:\n tlv\n .encodeInTLVFromBuffer(GeneralTags.Bytes, new Uint8Array()) // Empty IV\n .encodeInTLVFromBuffer(GeneralTags.Bytes, new Uint8Array()) // Empty encryptedXpriv\n .encodeInTLVFromBuffer(GeneralTags.PublicKey, data.recipient)\n .encodeInTLVFromBuffer(GeneralTags.PublicKey, new Uint8Array()); // Empty ephemeralPublicKey\n break;\n\n case CommandTags.Derive:\n tlv.encodeInTLVFromBuffer(\n GeneralTags.Bytes,\n derivationPathAsBytes(data.path),\n );\n break;\n }\n\n const bytes = tlv.build();\n return new Uint8Array([data.type, bytes.length, ...bytes]);\n }\n\n toString(): string {\n return bufferToHexaString(this.bytes, false);\n }\n\n toU8A(): Uint8Array {\n return this.bytes;\n }\n\n parse(): Either<LKRPParsingError, LKRPCommandData> {\n return this.data.orDefaultLazy(() => {\n const data = new TLVParser(this.bytes).parseCommandData();\n this.data = Just(data);\n return data;\n });\n }\n\n toHuman(): Either<LKRPParsingError, string> {\n return this.parse().map((data) =>\n Object.entries(data)\n .map(([key, value]) => {\n if (key === \"type\") {\n return `${CommandTags[value as CommandTags]}(0x${value?.toString(16).padStart(2, \"0\")}):`;\n }\n return ` ${key}: ${value instanceof Uint8Array ? bufferToHexaString(value, false) : value}`;\n })\n .join(\"\\n\"),\n );\n }\n\n getPublicKey(): Maybe<string> {\n switch (this.bytes[0]) {\n case CommandTags.AddMember:\n case CommandTags.PublishKey:\n return this.parse()\n .toMaybe()\n .chain((data) => {\n switch (data.type) {\n case CommandTags.AddMember:\n return Just(data.publicKey);\n case CommandTags.PublishKey:\n return Just(data.recipient);\n default:\n return Nothing;\n }\n })\n .map((str) => bufferToHexaString(str, false));\n\n default:\n return Nothing;\n }\n }\n\n getEncryptedPublishedKey(): Maybe<EncryptedPublishedKey> {\n switch (this.bytes[0]) {\n case CommandTags.Seed:\n case CommandTags.Derive:\n case CommandTags.PublishKey:\n return this.parse()\n .toMaybe()\n .chain((data) => {\n switch (data.type) {\n case CommandTags.Seed:\n case CommandTags.Derive:\n case CommandTags.PublishKey:\n return Maybe.of({ ...data });\n default:\n return Nothing;\n }\n });\n default:\n return Nothing;\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["LKRPCommand_exports", "__export", "LKRPCommand", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "import_Tags", "import_derivationPath", "import_TLVParser", "bytes", "data", "hex", "tlv", "permissions", "key", "value", "str"]
|
|
7
7
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";var r=require("purify-ts"),
|
|
2
|
-
`)))}),it("should fail for invalid command bytes format",()=>{const
|
|
1
|
+
"use strict";var r=require("purify-ts"),a=require("../../api/model/Errors"),c=require("../../api/model/Permissions"),x=require("../models/Tags"),t=require("./LKRPCommand");describe("LKRPCommand",()=>{describe("fromData",()=>{it("should encode add member permissions correctly",()=>{const e=Uint8Array.from([2,191,92,13,155,240,244,149,22,40,90,210,3,146,196,196,184,113,20,246,196,140,132,115,6,222,31,231,243,147,78,67,193]),n=t.LKRPCommand.fromData({type:x.CommandTags.AddMember,name:"OWNER",publicKey:e,permissions:c.Permissions.OWNER}),o=t.LKRPCommand.fromData({type:x.CommandTags.AddMember,name:"READER",publicKey:e,permissions:c.Permissions.CAN_ENCRYPT}),i=t.LKRPCommand.fromData({type:x.CommandTags.AddMember,name:"DAPP",publicKey:e,permissions:c.Permissions.OWNER&~c.Permissions.CAN_ADD_BLOCK});expect(n.toString()).toBe(["11 30","04 05 4f 57 4e 45 52","06 21 02 bf 5c 0d 9b f0 f4 95 16 28 5a d2 03 92 c4 c4 b8 71 14 f6 c4 8c 84 73 06 de 1f e7 f3 93 4e 43 c1","01 04 ff ff ff ff"].join("").replace(/ /g,"")),expect(o.toString()).toBe(["11 31","04 06 52 45 41 44 45 52","06 21 02 bf 5c 0d 9b f0 f4 95 16 28 5a d2 03 92 c4 c4 b8 71 14 f6 c4 8c 84 73 06 de 1f e7 f3 93 4e 43 c1","01 04 00 00 00 01"].join("").replace(/ /g,"")),expect(i.toString()).toBe(["11 2f","04 04 44 41 50 50","06 21 02 bf 5c 0d 9b f0 f4 95 16 28 5a d2 03 92 c4 c4 b8 71 14 f6 c4 8c 84 73 06 de 1f e7 f3 93 4e 43 c1","01 04 ff ff ff fb"].join("").replace(/ /g,""))})}),describe("bytesFromUnsignedData",()=>{it("should encode add member permissions correctly",()=>{const e=Uint8Array.from([2,191,92,13,155,240,244,149,22,40,90,210,3,146,196,196,184,113,20,246,196,140,132,115,6,222,31,231,243,147,78,67,193]),n=t.LKRPCommand.bytesFromUnsignedData({type:x.CommandTags.AddMember,name:"OWNER",publicKey:e,permissions:c.Permissions.OWNER}),o=t.LKRPCommand.bytesFromUnsignedData({type:x.CommandTags.AddMember,name:"READER",publicKey:e,permissions:c.Permissions.CAN_ENCRYPT}),i=t.LKRPCommand.bytesFromUnsignedData({type:x.CommandTags.AddMember,name:"DAPP",publicKey:e,permissions:c.Permissions.OWNER&~c.Permissions.CAN_ADD_BLOCK});expect(n).toEqual(Uint8Array.from([[17,48],[4,5,79,87,78,69,82],[6,33,2,191,92,13,155,240,244,149,22,40,90,210,3,146,196,196,184,113,20,246,196,140,132,115,6,222,31,231,243,147,78,67,193],[1,4,255,255,255,255]].flat())),expect(o).toEqual(Uint8Array.from([[17,49],[4,6,82,69,65,68,69,82],[6,33,2,191,92,13,155,240,244,149,22,40,90,210,3,146,196,196,184,113,20,246,196,140,132,115,6,222,31,231,243,147,78,67,193],[1,4,0,0,0,1]].flat())),expect(i).toEqual(Uint8Array.from([[17,47],[4,4,68,65,80,80],[6,33,2,191,92,13,155,240,244,149,22,40,90,210,3,146,196,196,184,113,20,246,196,140,132,115,6,222,31,231,243,147,78,67,193],[1,4,255,255,255,251]].flat()))})}),describe("toString",()=>{it("should return the hex of the bytes of the command",()=>{const e="0102030405060708",n=t.LKRPCommand.fromHex(e);expect(n.toString()).toBe(e)})}),describe("toU8A",()=>{it("should return the bytes of the command",()=>{const e=new Uint8Array([1,2,3,4,5,6,7,8]),n=new t.LKRPCommand(e);expect(n.toU8A()).toBe(e)})}),describe("parse",()=>{it("should parse the command data correctly",()=>{const e=new Uint8Array([x.GeneralTags.Bytes,3,1,2,3,x.GeneralTags.Int,2,1,2,x.GeneralTags.PublicKey,3,2,4,6,x.GeneralTags.Bytes,3,3,5,7,x.GeneralTags.Bytes,3,4,8,16,x.GeneralTags.PublicKey,3,10,11,12]),n=new t.LKRPCommand(new Uint8Array([x.CommandTags.Seed,e.length,...e]));expect(n.parse()).toStrictEqual((0,r.Right)({type:x.CommandTags.Seed,topic:new Uint8Array([1,2,3]),protocolVersion:258,groupKey:new Uint8Array([2,4,6]),initializationVector:new Uint8Array([3,5,7]),encryptedXpriv:new Uint8Array([4,8,16]),ephemeralPublicKey:new Uint8Array([10,11,12])}))}),it("should fail with invalid command bytes",()=>{const e=new t.LKRPCommand(new Uint8Array([x.CommandTags.Seed,1,1]));expect(e.parse()).toStrictEqual((0,r.Left)(new a.LKRPParsingError("Invalid end of TLV, expected length")))})}),describe("getPublicKey",()=>{it("should return the public key for AddMember command",()=>{const e=new Uint8Array([x.GeneralTags.String,3,65,66,67,x.GeneralTags.PublicKey,3,4,5,6,x.GeneralTags.Int,1,1]),n=new t.LKRPCommand(new Uint8Array([x.CommandTags.AddMember,e.length,...e]));expect(n.getPublicKey()).toStrictEqual((0,r.Just)("040506"))}),it("should return the public key for PublishKey commands",()=>{const e=new Uint8Array([x.GeneralTags.Bytes,3,1,2,3,x.GeneralTags.Bytes,3,4,5,6,x.GeneralTags.PublicKey,3,7,8,9,x.GeneralTags.PublicKey,3,10,11,12]),n=new t.LKRPCommand(new Uint8Array([x.CommandTags.PublishKey,e.length,...e]));expect(n.getPublicKey()).toEqual((0,r.Just)("070809"))}),it("should return undefined for other command types",()=>{const e=new t.LKRPCommand(new Uint8Array([x.CommandTags.Seed]));expect(e.getPublicKey()).toEqual(r.Nothing)})}),describe("toHuman",()=>{it("should return a string representation of the command",()=>{const e=new Uint8Array([x.GeneralTags.Bytes,3,1,2,3,x.GeneralTags.Bytes,3,4,5,6,x.GeneralTags.PublicKey,3,7,8,9,x.GeneralTags.PublicKey,3,10,11,12]),n=new t.LKRPCommand(new Uint8Array([x.CommandTags.PublishKey,e.length,...e]));expect(n.toHuman()).toStrictEqual((0,r.Right)(["PublishKey(0x12):"," initializationVector: 010203"," encryptedXpriv: 040506"," recipient: 070809"," ephemeralPublicKey: 0a0b0c"].join(`
|
|
2
|
+
`)))}),it("should fail for invalid command bytes format",()=>{const e=new t.LKRPCommand(new Uint8Array([x.CommandTags.Seed,1,1]));expect(e.toHuman()).toStrictEqual((0,r.Left)(new a.LKRPParsingError("Invalid end of TLV, expected length")))})})});
|
|
3
3
|
//# sourceMappingURL=LKRPCommand.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/internal/utils/LKRPCommand.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { Just, Left, Nothing, Right } from \"purify-ts\";\n\nimport { LKRPParsingError } from \"@api/model/Errors\";\nimport { CommandTags, GeneralTags } from \"@internal/models/Tags\";\n\nimport { LKRPCommand } from \"./LKRPCommand\";\n\ndescribe(\"LKRPCommand\", () => {\n describe(\"toString\", () => {\n it(\"should return the hex of the bytes of the command\", () => {\n // WHEN\n const hex = \"0102030405060708\";\n const command = LKRPCommand.fromHex(hex);\n // THEN\n expect(command.toString()).toBe(hex);\n });\n });\n\n describe(\"toU8A\", () => {\n it(\"should return the bytes of the command\", () => {\n // WHEN\n const bytes = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);\n const command = new LKRPCommand(bytes);\n // THEN\n expect(command.toU8A()).toBe(bytes);\n });\n });\n\n describe(\"parse\", () => {\n it(\"should parse the command data correctly\", () => {\n // GIVEN\n const value = new Uint8Array([\n ...[GeneralTags.Bytes, 3, 0x01, 0x02, 0x03], // Topic\n ...[GeneralTags.Int, 2, 0x01, 0x02], // Protocol Version\n ...[GeneralTags.PublicKey, 3, 0x02, 0x04, 0x06], // Group Key\n ...[GeneralTags.Bytes, 3, 0x03, 0x05, 0x07], // Initialization Vector\n ...[GeneralTags.Bytes, 3, 0x04, 0x08, 0x10], // Encrypted xpriv\n ...[GeneralTags.PublicKey, 3, 0x0a, 0x0b, 0x0c], // Ephemeral Public Key\n ]);\n // WHEN\n const command = new LKRPCommand(\n new Uint8Array([CommandTags.Seed, value.length, ...value]),\n );\n // THEN\n expect(command.parse()).toStrictEqual(\n Right({\n type: CommandTags.Seed,\n topic: new Uint8Array([0x01, 0x02, 0x03]),\n protocolVersion: 258,\n groupKey: new Uint8Array([0x02, 0x04, 0x06]),\n initializationVector: new Uint8Array([0x03, 0x05, 0x07]),\n encryptedXpriv: new Uint8Array([0x04, 0x08, 0x10]),\n ephemeralPublicKey: new Uint8Array([0x0a, 0x0b, 0x0c]),\n }),\n );\n });\n\n it(\"should fail with invalid command bytes\", () => {\n // WHEN\n const command = new LKRPCommand(\n new Uint8Array([CommandTags.Seed, 1, ...[0x01]]),\n );\n // THEN\n expect(command.parse()).toStrictEqual(\n Left(new LKRPParsingError(\"Invalid end of TLV, expected length\")),\n );\n });\n });\n\n describe(\"getPublicKey\", () => {\n it(\"should return the public key for AddMember command\", () => {\n // GIVEN\n const addMemberValue = new Uint8Array([\n ...[GeneralTags.String, 3, 0x41, 0x42, 0x43], // Name \"ABC\"\n ...[GeneralTags.PublicKey, 3, 0x04, 0x05, 0x06], // Public Key\n ...[GeneralTags.Int, 1, 0x01], // Permissions\n ]);\n\n // WHEN\n const addMemberCmd = new LKRPCommand(\n new Uint8Array([\n CommandTags.AddMember,\n addMemberValue.length,\n ...addMemberValue,\n ]),\n );\n\n // THEN\n expect(addMemberCmd.getPublicKey()).toStrictEqual(Just(\"040506\"));\n });\n\n it(\"should return the public key for PublishKey commands\", () => {\n // GIVEN\n const publishKeyValue = new Uint8Array([\n ...[GeneralTags.Bytes, 3, 0x01, 0x02, 0x03], // Initialization Vector\n ...[GeneralTags.Bytes, 3, 0x04, 0x05, 0x06], // Encrypted xpriv\n ...[GeneralTags.PublicKey, 3, 0x07, 0x08, 0x09], // Recipient\n ...[GeneralTags.PublicKey, 3, 0x0a, 0x0b, 0x0c], // Ephemeral Public Key\n ]);\n // WHEN\n const publishKeyCmd = new LKRPCommand(\n new Uint8Array([\n CommandTags.PublishKey,\n publishKeyValue.length,\n ...publishKeyValue,\n ]),\n );\n // THEN\n expect(publishKeyCmd.getPublicKey()).toEqual(Just(\"070809\"));\n });\n\n it(\"should return undefined for other command types\", () => {\n // WHEN\n const command = new LKRPCommand(new Uint8Array([CommandTags.Seed]));\n // THEN\n expect(command.getPublicKey()).toEqual(Nothing);\n });\n });\n\n describe(\"toHuman\", () => {\n it(\"should return a string representation of the command\", () => {\n // GIVEN\n const value = new Uint8Array([\n ...[GeneralTags.Bytes, 3, 0x01, 0x02, 0x03], // Initialization Vector\n ...[GeneralTags.Bytes, 3, 0x04, 0x05, 0x06], // Encrypted xpriv\n ...[GeneralTags.PublicKey, 3, 0x07, 0x08, 0x09], // Recipient\n ...[GeneralTags.PublicKey, 3, 0x0a, 0x0b, 0x0c], // Ephemeral Public Key\n ]);\n // WHEN\n const command = new LKRPCommand(\n new Uint8Array([CommandTags.PublishKey, value.length, ...value]),\n );\n // THEN\n expect(command.toHuman()).toStrictEqual(\n Right(\n [\n `PublishKey(0x12):`,\n ` initializationVector: 010203`,\n ` encryptedXpriv: 040506`,\n ` recipient: 070809`,\n ` ephemeralPublicKey: 0a0b0c`,\n ].join(\"\\n\"),\n ),\n );\n });\n\n it(\"should fail for invalid command bytes format\", () => {\n // WHEN\n const command = new LKRPCommand(\n new Uint8Array([CommandTags.Seed, 1, ...[0x01]]),\n );\n // THEN\n expect(command.toHuman()).toStrictEqual(\n Left(new LKRPParsingError(\"Invalid end of TLV, expected length\")),\n );\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["import_purify_ts", "import_Errors", "import_Tags", "import_LKRPCommand", "hex", "command", "bytes", "value", "addMemberValue", "addMemberCmd", "publishKeyValue", "publishKeyCmd"]
|
|
4
|
+
"sourcesContent": ["import { Just, Left, Nothing, Right } from \"purify-ts\";\n\nimport { LKRPParsingError } from \"@api/model/Errors\";\nimport { Permissions } from \"@api/model/Permissions\";\nimport { CommandTags, GeneralTags } from \"@internal/models/Tags\";\n\nimport { LKRPCommand } from \"./LKRPCommand\";\n\ndescribe(\"LKRPCommand\", () => {\n describe(\"fromData\", () => {\n it(\"should encode add member permissions correctly\", () => {\n // GIVEN\n const publicKey = Uint8Array.from([\n 0x02, 0xbf, 0x5c, 0x0d, 0x9b, 0xf0, 0xf4, 0x95, 0x16, 0x28, 0x5a, 0xd2,\n 0x03, 0x92, 0xc4, 0xc4, 0xb8, 0x71, 0x14, 0xf6, 0xc4, 0x8c, 0x84, 0x73,\n 0x06, 0xde, 0x1f, 0xe7, 0xf3, 0x93, 0x4e, 0x43, 0xc1,\n ]);\n // WHEN\n const addOwner = LKRPCommand.fromData({\n type: CommandTags.AddMember,\n name: \"OWNER\",\n publicKey,\n permissions: Permissions.OWNER,\n });\n const addReader = LKRPCommand.fromData({\n type: CommandTags.AddMember,\n name: \"READER\",\n publicKey,\n permissions: Permissions.CAN_ENCRYPT,\n });\n const dapp = LKRPCommand.fromData({\n type: CommandTags.AddMember,\n name: \"DAPP\",\n publicKey,\n permissions: Permissions.OWNER & ~Permissions.CAN_ADD_BLOCK,\n });\n // THEN\n expect(addOwner.toString()).toBe(\n [\n \"11 30\", // header\n \"04 05 4f 57 4e 45 52\", // name\n \"06 21 02 bf 5c 0d 9b f0 f4 95 16 28 5a d2 03 92 c4 c4 b8 71 14 f6 c4 8c 84 73 06 de 1f e7 f3 93 4e 43 c1\", // public key\n \"01 04 ff ff ff ff\", // permissions (OWNER)\n ]\n .join(\"\")\n .replace(/ /g, \"\"),\n );\n expect(addReader.toString()).toBe(\n [\n \"11 31\", // header\n \"04 06 52 45 41 44 45 52\", // name\n \"06 21 02 bf 5c 0d 9b f0 f4 95 16 28 5a d2 03 92 c4 c4 b8 71 14 f6 c4 8c 84 73 06 de 1f e7 f3 93 4e 43 c1\", // public key\n \"01 04 00 00 00 01\", // permissions (CAN_ENCRYPT)\n ]\n .join(\"\")\n .replace(/ /g, \"\"),\n );\n expect(dapp.toString()).toBe(\n [\n \"11 2f\", // header\n \"04 04 44 41 50 50\", // name\n \"06 21 02 bf 5c 0d 9b f0 f4 95 16 28 5a d2 03 92 c4 c4 b8 71 14 f6 c4 8c 84 73 06 de 1f e7 f3 93 4e 43 c1\", // public key\n \"01 04 ff ff ff fb\", // permissions (OWNER & ~CAN_ADD_BLOCK)\n ]\n .join(\"\")\n .replace(/ /g, \"\"),\n );\n });\n });\n\n describe(\"bytesFromUnsignedData\", () => {\n it(\"should encode add member permissions correctly\", () => {\n // GIVEN\n const publicKey = Uint8Array.from([\n 0x02, 0xbf, 0x5c, 0x0d, 0x9b, 0xf0, 0xf4, 0x95, 0x16, 0x28, 0x5a, 0xd2,\n 0x03, 0x92, 0xc4, 0xc4, 0xb8, 0x71, 0x14, 0xf6, 0xc4, 0x8c, 0x84, 0x73,\n 0x06, 0xde, 0x1f, 0xe7, 0xf3, 0x93, 0x4e, 0x43, 0xc1,\n ]);\n // WHEN\n const addOwner = LKRPCommand.bytesFromUnsignedData({\n type: CommandTags.AddMember,\n name: \"OWNER\",\n publicKey,\n permissions: Permissions.OWNER,\n });\n const addReader = LKRPCommand.bytesFromUnsignedData({\n type: CommandTags.AddMember,\n name: \"READER\",\n publicKey,\n permissions: Permissions.CAN_ENCRYPT,\n });\n const dapp = LKRPCommand.bytesFromUnsignedData({\n type: CommandTags.AddMember,\n name: \"DAPP\",\n publicKey,\n permissions: Permissions.OWNER & ~Permissions.CAN_ADD_BLOCK,\n });\n // THEN\n expect(addOwner).toEqual(\n Uint8Array.from(\n [\n [0x11, 0x30], // header\n [0x04, 0x05, 0x4f, 0x57, 0x4e, 0x45, 0x52], // name\n [\n // public key\n 0x06, 0x21, 0x02, 0xbf, 0x5c, 0x0d, 0x9b, 0xf0, 0xf4, 0x95, 0x16,\n 0x28, 0x5a, 0xd2, 0x03, 0x92, 0xc4, 0xc4, 0xb8, 0x71, 0x14, 0xf6,\n 0xc4, 0x8c, 0x84, 0x73, 0x06, 0xde, 0x1f, 0xe7, 0xf3, 0x93, 0x4e,\n 0x43, 0xc1,\n ],\n [0x01, 0x04, 0xff, 0xff, 0xff, 0xff], // permissions (OWNER)\n ].flat(),\n ),\n );\n expect(addReader).toEqual(\n Uint8Array.from(\n [\n [0x11, 0x31], // header\n [0x04, 0x06, 0x52, 0x45, 0x41, 0x44, 0x45, 0x52], // name\n [\n // public key\n 0x06, 0x21, 0x02, 0xbf, 0x5c, 0x0d, 0x9b, 0xf0, 0xf4, 0x95, 0x16,\n 0x28, 0x5a, 0xd2, 0x03, 0x92, 0xc4, 0xc4, 0xb8, 0x71, 0x14, 0xf6,\n 0xc4, 0x8c, 0x84, 0x73, 0x06, 0xde, 0x1f, 0xe7, 0xf3, 0x93, 0x4e,\n 0x43, 0xc1,\n ],\n [0x01, 0x04, 0x00, 0x00, 0x00, 0x01], // permissions (CAN_ENCRYPT)\n ].flat(),\n ),\n );\n expect(dapp).toEqual(\n Uint8Array.from(\n [\n [0x11, 0x2f], // header\n [0x04, 0x04, 0x44, 0x41, 0x50, 0x50], // name\n [\n // public key\n 0x06, 0x21, 0x02, 0xbf, 0x5c, 0x0d, 0x9b, 0xf0, 0xf4, 0x95, 0x16,\n 0x28, 0x5a, 0xd2, 0x03, 0x92, 0xc4, 0xc4, 0xb8, 0x71, 0x14, 0xf6,\n 0xc4, 0x8c, 0x84, 0x73, 0x06, 0xde, 0x1f, 0xe7, 0xf3, 0x93, 0x4e,\n 0x43, 0xc1,\n ],\n [0x01, 0x04, 0xff, 0xff, 0xff, 0xfb], // permissions (OWNER & ~CAN_ADD_BLOCK)\n ].flat(),\n ),\n );\n });\n });\n\n describe(\"toString\", () => {\n it(\"should return the hex of the bytes of the command\", () => {\n // WHEN\n const hex = \"0102030405060708\";\n const command = LKRPCommand.fromHex(hex);\n // THEN\n expect(command.toString()).toBe(hex);\n });\n });\n\n describe(\"toU8A\", () => {\n it(\"should return the bytes of the command\", () => {\n // WHEN\n const bytes = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);\n const command = new LKRPCommand(bytes);\n // THEN\n expect(command.toU8A()).toBe(bytes);\n });\n });\n\n describe(\"parse\", () => {\n it(\"should parse the command data correctly\", () => {\n // GIVEN\n const value = new Uint8Array([\n ...[GeneralTags.Bytes, 3, 0x01, 0x02, 0x03], // Topic\n ...[GeneralTags.Int, 2, 0x01, 0x02], // Protocol Version\n ...[GeneralTags.PublicKey, 3, 0x02, 0x04, 0x06], // Group Key\n ...[GeneralTags.Bytes, 3, 0x03, 0x05, 0x07], // Initialization Vector\n ...[GeneralTags.Bytes, 3, 0x04, 0x08, 0x10], // Encrypted xpriv\n ...[GeneralTags.PublicKey, 3, 0x0a, 0x0b, 0x0c], // Ephemeral Public Key\n ]);\n // WHEN\n const command = new LKRPCommand(\n new Uint8Array([CommandTags.Seed, value.length, ...value]),\n );\n // THEN\n expect(command.parse()).toStrictEqual(\n Right({\n type: CommandTags.Seed,\n topic: new Uint8Array([0x01, 0x02, 0x03]),\n protocolVersion: 258,\n groupKey: new Uint8Array([0x02, 0x04, 0x06]),\n initializationVector: new Uint8Array([0x03, 0x05, 0x07]),\n encryptedXpriv: new Uint8Array([0x04, 0x08, 0x10]),\n ephemeralPublicKey: new Uint8Array([0x0a, 0x0b, 0x0c]),\n }),\n );\n });\n\n it(\"should fail with invalid command bytes\", () => {\n // WHEN\n const command = new LKRPCommand(\n new Uint8Array([CommandTags.Seed, 1, ...[0x01]]),\n );\n // THEN\n expect(command.parse()).toStrictEqual(\n Left(new LKRPParsingError(\"Invalid end of TLV, expected length\")),\n );\n });\n });\n\n describe(\"getPublicKey\", () => {\n it(\"should return the public key for AddMember command\", () => {\n // GIVEN\n const addMemberValue = new Uint8Array([\n ...[GeneralTags.String, 3, 0x41, 0x42, 0x43], // Name \"ABC\"\n ...[GeneralTags.PublicKey, 3, 0x04, 0x05, 0x06], // Public Key\n ...[GeneralTags.Int, 1, 0x01], // Permissions\n ]);\n\n // WHEN\n const addMemberCmd = new LKRPCommand(\n new Uint8Array([\n CommandTags.AddMember,\n addMemberValue.length,\n ...addMemberValue,\n ]),\n );\n\n // THEN\n expect(addMemberCmd.getPublicKey()).toStrictEqual(Just(\"040506\"));\n });\n\n it(\"should return the public key for PublishKey commands\", () => {\n // GIVEN\n const publishKeyValue = new Uint8Array([\n ...[GeneralTags.Bytes, 3, 0x01, 0x02, 0x03], // Initialization Vector\n ...[GeneralTags.Bytes, 3, 0x04, 0x05, 0x06], // Encrypted xpriv\n ...[GeneralTags.PublicKey, 3, 0x07, 0x08, 0x09], // Recipient\n ...[GeneralTags.PublicKey, 3, 0x0a, 0x0b, 0x0c], // Ephemeral Public Key\n ]);\n // WHEN\n const publishKeyCmd = new LKRPCommand(\n new Uint8Array([\n CommandTags.PublishKey,\n publishKeyValue.length,\n ...publishKeyValue,\n ]),\n );\n // THEN\n expect(publishKeyCmd.getPublicKey()).toEqual(Just(\"070809\"));\n });\n\n it(\"should return undefined for other command types\", () => {\n // WHEN\n const command = new LKRPCommand(new Uint8Array([CommandTags.Seed]));\n // THEN\n expect(command.getPublicKey()).toEqual(Nothing);\n });\n });\n\n describe(\"toHuman\", () => {\n it(\"should return a string representation of the command\", () => {\n // GIVEN\n const value = new Uint8Array([\n ...[GeneralTags.Bytes, 3, 0x01, 0x02, 0x03], // Initialization Vector\n ...[GeneralTags.Bytes, 3, 0x04, 0x05, 0x06], // Encrypted xpriv\n ...[GeneralTags.PublicKey, 3, 0x07, 0x08, 0x09], // Recipient\n ...[GeneralTags.PublicKey, 3, 0x0a, 0x0b, 0x0c], // Ephemeral Public Key\n ]);\n // WHEN\n const command = new LKRPCommand(\n new Uint8Array([CommandTags.PublishKey, value.length, ...value]),\n );\n // THEN\n expect(command.toHuman()).toStrictEqual(\n Right(\n [\n `PublishKey(0x12):`,\n ` initializationVector: 010203`,\n ` encryptedXpriv: 040506`,\n ` recipient: 070809`,\n ` ephemeralPublicKey: 0a0b0c`,\n ].join(\"\\n\"),\n ),\n );\n });\n\n it(\"should fail for invalid command bytes format\", () => {\n // WHEN\n const command = new LKRPCommand(\n new Uint8Array([CommandTags.Seed, 1, ...[0x01]]),\n );\n // THEN\n expect(command.toHuman()).toStrictEqual(\n Left(new LKRPParsingError(\"Invalid end of TLV, expected length\")),\n );\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_purify_ts", "import_Errors", "import_Permissions", "import_Tags", "import_LKRPCommand", "publicKey", "addOwner", "addReader", "dapp", "hex", "command", "bytes", "value", "addMemberValue", "addMemberCmd", "publishKeyValue", "publishKeyCmd"]
|
|
7
7
|
}
|
package/lib/cjs/package.json
CHANGED
|
@@ -1,56 +1,60 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
"
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
"
|
|
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-trusted-names-native-transfer-1-20260121120757"
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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
|