@ledgerhq/device-trusted-app-kit-ledger-keyring-protocol 0.0.0-ledger-button-20250808181454 → 0.0.0-legacy-speculos-datasource-20250819074123
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/LedgerKeyringProtocol.js +1 -1
- package/lib/cjs/api/LedgerKeyringProtocol.js.map +1 -1
- package/lib/cjs/api/LedgerKeyringProtocolBuilder.js +1 -1
- package/lib/cjs/api/LedgerKeyringProtocolBuilder.js.map +3 -3
- package/lib/cjs/api/app-binder/AddToTrustchainDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/AddToTrustchainDeviceActionTypes.js.map +1 -1
- package/lib/cjs/api/app-binder/AuthenticateDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/AuthenticateDeviceActionTypes.js.map +1 -1
- package/lib/cjs/api/app-binder/Errors.js +1 -1
- package/lib/cjs/api/app-binder/Errors.js.map +3 -3
- package/lib/cjs/api/app-binder/LKRPTypes.js +1 -1
- package/lib/cjs/api/app-binder/LKRPTypes.js.map +3 -3
- package/lib/cjs/api/app-binder/SignBlockHeaderCommandTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignBlockHeaderCommandTypes.js.map +1 -1
- package/lib/cjs/internal/DefaultLedgerKeyringProtocol.js +1 -1
- package/lib/cjs/internal/DefaultLedgerKeyringProtocol.js.map +3 -3
- package/lib/cjs/internal/app-binder/LedgerKeyringProtocolBinder.js +1 -1
- package/lib/cjs/internal/app-binder/LedgerKeyringProtocolBinder.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 +3 -3
- package/lib/cjs/internal/app-binder/command/SignBlockHeader.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignBlockHeader.js.map +3 -3
- 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/device-action/AddToTrustchainDeviceAction.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/AddToTrustchainDeviceAction.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/AuthenticateDeviceAction.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/AuthenticateDeviceAction.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/ParseStreamToDeviceTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/ParseStreamToDeviceTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SignBlockTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/SignBlockTask.js.map +3 -3
- 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/utils/TrustedProperties.js +1 -1
- package/lib/cjs/internal/app-binder/task/utils/TrustedProperties.js.map +3 -3
- package/lib/cjs/internal/di.js +1 -1
- package/lib/cjs/internal/di.js.map +3 -3
- package/lib/cjs/internal/externalTypes.js +1 -1
- package/lib/cjs/internal/externalTypes.js.map +2 -2
- package/lib/cjs/internal/lkrp-datasource/data/HttpLKRPDataSource.js +1 -1
- package/lib/cjs/internal/lkrp-datasource/data/HttpLKRPDataSource.js.map +3 -3
- package/lib/cjs/internal/lkrp-datasource/data/HttpLKRPDataSource.test.js +1 -1
- package/lib/cjs/internal/lkrp-datasource/data/HttpLKRPDataSource.test.js.map +2 -2
- package/lib/cjs/internal/lkrp-datasource/data/LKRPDataSource.js +1 -1
- package/lib/cjs/internal/lkrp-datasource/data/LKRPDataSource.js.map +1 -1
- package/lib/cjs/internal/use-cases/authentication/AuthenticateUseCase.js +1 -1
- package/lib/cjs/internal/use-cases/authentication/AuthenticateUseCase.js.map +3 -3
- package/lib/cjs/internal/utils/LKRPBlock.js.map +2 -2
- package/lib/cjs/internal/utils/LKRPBlock.test.js +1 -1
- package/lib/cjs/internal/utils/LKRPBlock.test.js.map +3 -3
- package/lib/cjs/internal/utils/LKRPBlockStream.js +2 -2
- package/lib/cjs/internal/utils/LKRPBlockStream.js.map +3 -3
- package/lib/cjs/internal/utils/LKRPBlockStream.test.js +3 -3
- package/lib/cjs/internal/utils/LKRPBlockStream.test.js.map +3 -3
- 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 +1 -1
- package/lib/cjs/internal/utils/LKRPCommand.test.js.map +3 -3
- package/lib/cjs/internal/utils/TLVBuilder.js +1 -1
- package/lib/cjs/internal/utils/TLVBuilder.js.map +3 -3
- package/lib/cjs/internal/utils/TLVParser.js +1 -1
- package/lib/cjs/internal/utils/TLVParser.js.map +3 -3
- package/lib/cjs/internal/utils/TLVParser.test.js +1 -1
- package/lib/cjs/internal/utils/TLVParser.test.js.map +3 -3
- package/lib/cjs/internal/{models/Tags.js → utils/TLVTags.js} +1 -1
- package/lib/cjs/internal/{models/Tags.js.map → utils/TLVTags.js.map} +2 -2
- package/lib/cjs/internal/utils/hex.js +1 -1
- package/lib/cjs/internal/utils/hex.js.map +3 -3
- package/lib/cjs/internal/utils/types.js +2 -0
- package/lib/cjs/internal/utils/types.js.map +7 -0
- package/lib/esm/api/LedgerKeyringProtocolBuilder.js +1 -1
- package/lib/esm/api/LedgerKeyringProtocolBuilder.js.map +3 -3
- package/lib/esm/api/app-binder/Errors.js +1 -1
- package/lib/esm/api/app-binder/Errors.js.map +3 -3
- package/lib/esm/api/app-binder/LKRPTypes.js +1 -1
- package/lib/esm/api/app-binder/LKRPTypes.js.map +3 -3
- package/lib/esm/internal/DefaultLedgerKeyringProtocol.js +1 -1
- package/lib/esm/internal/DefaultLedgerKeyringProtocol.js.map +3 -3
- package/lib/esm/internal/app-binder/LedgerKeyringProtocolBinder.js +1 -1
- package/lib/esm/internal/app-binder/LedgerKeyringProtocolBinder.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/SignBlockHeader.js +1 -1
- package/lib/esm/internal/app-binder/command/SignBlockHeader.js.map +3 -3
- 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/device-action/AddToTrustchainDeviceAction.js +1 -1
- package/lib/esm/internal/app-binder/device-action/AddToTrustchainDeviceAction.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/AuthenticateDeviceAction.js +1 -1
- package/lib/esm/internal/app-binder/device-action/AuthenticateDeviceAction.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ParseStreamToDeviceTask.js +1 -1
- package/lib/esm/internal/app-binder/task/ParseStreamToDeviceTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SignBlockTask.js +1 -1
- package/lib/esm/internal/app-binder/task/SignBlockTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SignChallengeWithKeypairTask.js +1 -1
- package/lib/esm/internal/app-binder/task/SignChallengeWithKeypairTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/utils/TrustedProperties.js +1 -1
- package/lib/esm/internal/app-binder/task/utils/TrustedProperties.js.map +3 -3
- package/lib/esm/internal/di.js +1 -1
- package/lib/esm/internal/di.js.map +3 -3
- package/lib/esm/internal/externalTypes.js +1 -1
- package/lib/esm/internal/externalTypes.js.map +2 -2
- package/lib/esm/internal/lkrp-datasource/data/HttpLKRPDataSource.js +1 -1
- package/lib/esm/internal/lkrp-datasource/data/HttpLKRPDataSource.js.map +3 -3
- package/lib/esm/internal/lkrp-datasource/data/HttpLKRPDataSource.test.js +1 -1
- package/lib/esm/internal/lkrp-datasource/data/HttpLKRPDataSource.test.js.map +3 -3
- package/lib/esm/internal/use-cases/authentication/AuthenticateUseCase.js +1 -1
- package/lib/esm/internal/use-cases/authentication/AuthenticateUseCase.js.map +3 -3
- package/lib/esm/internal/utils/LKRPBlock.js.map +2 -2
- package/lib/esm/internal/utils/LKRPBlock.test.js +1 -1
- package/lib/esm/internal/utils/LKRPBlock.test.js.map +3 -3
- package/lib/esm/internal/utils/LKRPBlockStream.js +2 -2
- package/lib/esm/internal/utils/LKRPBlockStream.js.map +3 -3
- package/lib/esm/internal/utils/LKRPBlockStream.test.js +3 -3
- package/lib/esm/internal/utils/LKRPBlockStream.test.js.map +3 -3
- 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 +1 -1
- package/lib/esm/internal/utils/LKRPCommand.test.js.map +3 -3
- package/lib/esm/internal/utils/TLVBuilder.js +1 -1
- package/lib/esm/internal/utils/TLVBuilder.js.map +2 -2
- package/lib/esm/internal/utils/TLVParser.js +1 -1
- package/lib/esm/internal/utils/TLVParser.js.map +3 -3
- package/lib/esm/internal/utils/TLVParser.test.js +1 -1
- package/lib/esm/internal/utils/TLVParser.test.js.map +3 -3
- package/lib/esm/internal/{models/Tags.js → utils/TLVTags.js} +1 -1
- package/lib/esm/internal/{models/Tags.js.map → utils/TLVTags.js.map} +1 -1
- package/lib/esm/internal/utils/hex.js +1 -1
- package/lib/esm/internal/utils/hex.js.map +3 -3
- package/lib/esm/internal/utils/types.js +1 -0
- package/lib/types/api/LedgerKeyringProtocol.d.ts +4 -3
- package/lib/types/api/LedgerKeyringProtocol.d.ts.map +1 -1
- package/lib/types/api/LedgerKeyringProtocolBuilder.d.ts +3 -8
- package/lib/types/api/LedgerKeyringProtocolBuilder.d.ts.map +1 -1
- package/lib/types/api/app-binder/AddToTrustchainDeviceActionTypes.d.ts +4 -4
- package/lib/types/api/app-binder/AddToTrustchainDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/app-binder/AuthenticateDeviceActionTypes.d.ts +5 -5
- package/lib/types/api/app-binder/AuthenticateDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/app-binder/Errors.d.ts +12 -38
- package/lib/types/api/app-binder/Errors.d.ts.map +1 -1
- package/lib/types/api/app-binder/LKRPTypes.d.ts +0 -4
- package/lib/types/api/app-binder/LKRPTypes.d.ts.map +1 -1
- package/lib/types/api/app-binder/SignBlockHeaderCommandTypes.d.ts +1 -2
- package/lib/types/api/app-binder/SignBlockHeaderCommandTypes.d.ts.map +1 -1
- package/lib/types/internal/DefaultLedgerKeyringProtocol.d.ts +6 -7
- package/lib/types/internal/DefaultLedgerKeyringProtocol.d.ts.map +1 -1
- package/lib/types/internal/app-binder/LedgerKeyringProtocolBinder.d.ts +4 -3
- package/lib/types/internal/app-binder/LedgerKeyringProtocolBinder.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SignBlockHeader.d.ts +0 -1
- package/lib/types/internal/app-binder/command/SignBlockHeader.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/AddToTrustchainDeviceAction.d.ts +2 -2
- package/lib/types/internal/app-binder/device-action/AddToTrustchainDeviceAction.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/AuthenticateDeviceAction.d.ts +1 -1
- package/lib/types/internal/app-binder/device-action/AuthenticateDeviceAction.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/ParseStreamToDeviceTask.d.ts +3 -3
- package/lib/types/internal/app-binder/task/ParseStreamToDeviceTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/SignBlockTask.d.ts +7 -6
- package/lib/types/internal/app-binder/task/SignBlockTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/SignChallengeWithKeypairTask.d.ts +3 -2
- package/lib/types/internal/app-binder/task/SignChallengeWithKeypairTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/utils/TrustedProperties.d.ts +1 -1
- package/lib/types/internal/app-binder/task/utils/TrustedProperties.d.ts.map +1 -1
- package/lib/types/internal/di.d.ts +1 -4
- package/lib/types/internal/di.d.ts.map +1 -1
- package/lib/types/internal/externalTypes.d.ts +0 -1
- package/lib/types/internal/externalTypes.d.ts.map +1 -1
- package/lib/types/internal/lkrp-datasource/data/HttpLKRPDataSource.d.ts +6 -6
- package/lib/types/internal/lkrp-datasource/data/HttpLKRPDataSource.d.ts.map +1 -1
- package/lib/types/internal/lkrp-datasource/data/LKRPDataSource.d.ts +7 -7
- package/lib/types/internal/lkrp-datasource/data/LKRPDataSource.d.ts.map +1 -1
- package/lib/types/internal/use-cases/authentication/AuthenticateUseCase.d.ts +2 -2
- package/lib/types/internal/use-cases/authentication/AuthenticateUseCase.d.ts.map +1 -1
- package/lib/types/internal/utils/LKRPBlock.d.ts +1 -1
- package/lib/types/internal/utils/LKRPBlock.d.ts.map +1 -1
- package/lib/types/internal/utils/LKRPBlockStream.d.ts +3 -3
- package/lib/types/internal/utils/LKRPBlockStream.d.ts.map +1 -1
- package/lib/types/internal/utils/LKRPCommand.d.ts +2 -3
- package/lib/types/internal/utils/LKRPCommand.d.ts.map +1 -1
- package/lib/types/internal/utils/TLVParser.d.ts +2 -3
- package/lib/types/internal/utils/TLVParser.d.ts.map +1 -1
- package/lib/types/internal/{models/Tags.d.ts → utils/TLVTags.d.ts} +1 -1
- package/lib/types/internal/utils/TLVTags.d.ts.map +1 -0
- package/lib/types/internal/utils/hex.d.ts.map +1 -1
- package/lib/types/internal/{models/LKRPCommandTypes.d.ts → utils/types.d.ts} +29 -6
- package/lib/types/internal/utils/types.d.ts.map +1 -0
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/lib/cjs/internal/models/LKRPBlockTypes.js +0 -2
- package/lib/cjs/internal/models/LKRPBlockTypes.js.map +0 -7
- package/lib/cjs/internal/models/LKRPCommandTypes.js +0 -2
- package/lib/cjs/internal/models/LKRPCommandTypes.js.map +0 -7
- package/lib/cjs/internal/models/Types.js +0 -2
- package/lib/cjs/internal/models/Types.js.map +0 -7
- package/lib/esm/internal/models/LKRPBlockTypes.js +0 -1
- package/lib/esm/internal/models/LKRPCommandTypes.js +0 -1
- package/lib/esm/internal/models/LKRPCommandTypes.js.map +0 -7
- package/lib/esm/internal/models/Types.js +0 -1
- package/lib/esm/internal/models/Types.js.map +0 -7
- package/lib/types/internal/models/LKRPBlockTypes.d.ts +0 -11
- package/lib/types/internal/models/LKRPBlockTypes.d.ts.map +0 -1
- package/lib/types/internal/models/LKRPCommandTypes.d.ts.map +0 -1
- package/lib/types/internal/models/Tags.d.ts.map +0 -1
- package/lib/types/internal/models/Types.d.ts +0 -14
- package/lib/types/internal/models/Types.d.ts.map +0 -1
- /package/lib/esm/internal/{models/LKRPBlockTypes.js.map → utils/types.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/internal/utils/TLVParser.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { Left, Right } from \"purify-ts\";\n\nimport { LKRPParsingError } from \"@api/app-binder/Errors\";\nimport { CommandTags, GeneralTags } from \"@internal/models/Tags\";\n\nimport { LKRPCommand } from \"./LKRPCommand\";\nimport { TLVParser } from \"./TLVParser\";\n\ndescribe(\"TLVParser\", () => {\n describe(\"Block Data Parsing\", () => {\n describe(\"parseCommands\", () => {\n it(\"should parse has many commands has specified by the command count value\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([\n ...[GeneralTags.Int, 1, 0x02], // Command count: 2\n ...[CommandTags.AddMember, 3, ...[GeneralTags.Int, 1, 0x01]], // First command\n ...[CommandTags.Seed, 3, ...[GeneralTags.Int, 1, 0x02]], // Second command\n ]),\n );\n // WHEN\n const commands = parser.parseCommands();\n\n // THEN\n expect(commands).toStrictEqual(\n Right([\n new LKRPCommand(\n new Uint8Array([\n CommandTags.AddMember,\n 3,\n ...[GeneralTags.Int, 1, 0x01],\n ]),\n ),\n new LKRPCommand(\n new Uint8Array([\n CommandTags.Seed,\n 3,\n ...[GeneralTags.Int, 1, 0x02],\n ]),\n ),\n ]),\n );\n });\n });\n\n describe(\"parseBlockData\", () => {\n it(\"should parse a valid block data\", () => {\n // GIVEN\n const parser = new TLVParser(\n Uint8Array.from(\n [\n [GeneralTags.Int, 1, 0x01], // Version\n [GeneralTags.Hash, 3, 0x01, 0x02, 0x03], // Parent\n [GeneralTags.PublicKey, 3, 0x04, 0x05, 0x06], // Issuer\n [GeneralTags.Int, 1, 0x02], // Command count: 2\n [CommandTags.AddMember, 3, ...[GeneralTags.Int, 1, 0x01]], // First command\n [CommandTags.Seed, 3, ...[GeneralTags.Int, 1, 0x02]], // Second command\n [GeneralTags.Signature, 3, 0x07, 0x08, 0x09], // Signature\n ].flat(),\n ),\n );\n // WHEN\n const blockData = parser.parseBlockData();\n\n // THEN\n expect(blockData).toStrictEqual(\n Right({\n parent: \"010203\",\n issuer: new Uint8Array([0x04, 0x05, 0x06]),\n header: Uint8Array.from(\n [\n [GeneralTags.Int, 1, 0x01], // Version\n [GeneralTags.Hash, 3, 0x01, 0x02, 0x03], // Parent\n [GeneralTags.PublicKey, 3, 0x04, 0x05, 0x06], // Issuer\n [GeneralTags.Int, 1, 0x02], // Command count: 2\n ].flat(),\n ),\n\n commands: [\n new LKRPCommand(\n new Uint8Array([\n CommandTags.AddMember,\n 3,\n ...[GeneralTags.Int, 1, 0x01],\n ]),\n ),\n new LKRPCommand(\n new Uint8Array([\n CommandTags.Seed,\n 3,\n ...[GeneralTags.Int, 1, 0x02],\n ]),\n ),\n ],\n signature: Uint8Array.from([\n GeneralTags.Signature,\n 3,\n 0x07,\n 0x08,\n 0x09,\n ]),\n }),\n );\n });\n\n it(\"should fail if the block data is invalid\", () => {\n // GIVEN\n const parser = new TLVParser(new Uint8Array([]));\n // WHEN\n const blockData = parser.parseBlockData();\n // THEN\n expect(blockData).toEqual(\n Left(new LKRPParsingError(\"Unexpected end of TLV\")),\n );\n });\n });\n });\n\n describe(\"Command Data Parsing\", () => {\n describe(\"parseCommandBytes\", () => {\n it(\"should parse a valid command bytes\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([CommandTags.AddMember, 3, 0x01, 0x02, 0x03]),\n );\n // WHEN\n const value = parser.parseCommandBytes();\n // THEN\n expect(value).toEqual(\n Right(new Uint8Array([CommandTags.AddMember, 3, 0x01, 0x02, 0x03])),\n );\n });\n\n it(\"should fail if the tag is not a command\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Int, 1, 0x01]),\n );\n // WHEN\n const value = parser.parseCommandBytes();\n // THEN\n expect(value).toEqual(\n Left(new LKRPParsingError(`Invalid command type: 0x01`)),\n );\n });\n });\n\n describe(\"Parse Seed Command Data\", () => {\n it(\"should parse a valid seed command data\", () => {\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 const parser = new TLVParser(\n new Uint8Array([CommandTags.Seed, value.length, ...value]),\n );\n\n // WHEN\n const parsed = parser.parseCommandData();\n\n // THEN\n expect(parsed).toStrictEqual(\n Right({\n type: CommandTags.Seed,\n topic: new Uint8Array([0x01, 0x02, 0x03]),\n protocolVersion: 258, // 0x0102 in big-endian\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 if the command data is invalid\", () => {\n // GIVEN\n const value1 = new Uint8Array([\n ...[GeneralTags.Signature, 3, 0x01, 0x02, 0x03], // Wrong type for Topic\n ]);\n const value2 = new Uint8Array([\n ...[GeneralTags.Bytes, 3, 0x01, 0x02, 0x03], // Correct type but the other fields are missing\n ]);\n const parser1 = new TLVParser(\n new Uint8Array([CommandTags.Seed, value1.length, ...value1]),\n );\n const parser2 = new TLVParser(\n new Uint8Array([CommandTags.Seed, value2.length, ...value2]),\n );\n\n // WHEN\n const parsed1 = parser1.parseCommandData();\n const parsed2 = parser2.parseCommandData();\n\n // THEN\n expect(parsed1).toEqual(Left(new LKRPParsingError(\"Expected bytes\")));\n expect(parsed2).toEqual(\n Left(new LKRPParsingError(\"Unexpected end of TLV\")),\n );\n });\n });\n\n describe(\"Parse AddMember Command Data\", () => {\n it(\"should parse a valid add member command data\", () => {\n // GIVEN\n const value = new Uint8Array([\n ...[GeneralTags.String, 5, 0x41, 0x6c, 0x69, 0x63, 0x65], // Name \"Alice\"\n ...[GeneralTags.PublicKey, 3, 0x01, 0x02, 0x03], // Public Key\n ...[GeneralTags.Int, 1, 0x01], // Permissions\n ]);\n const parser = new TLVParser(\n new Uint8Array([CommandTags.AddMember, value.length, ...value]),\n );\n\n // WHEN\n const parsed = parser.parseCommandData();\n\n // THEN\n expect(parsed).toStrictEqual(\n Right({\n type: CommandTags.AddMember,\n name: \"Alice\",\n publicKey: new Uint8Array([0x01, 0x02, 0x03]),\n permissions: 1,\n }),\n );\n });\n\n it(\"should fail if the command data is invalid\", () => {\n // GIVEN\n const value1 = new Uint8Array([\n ...[GeneralTags.Bytes, 3, 0x01, 0x02, 0x03], // Wrong type for Name\n ]);\n const value2 = new Uint8Array([\n ...[GeneralTags.String, 5, 0x41, 0x6c, 0x69, 0x63, 0x65], // Correct type but the other fields are missing\n ]);\n const parser1 = new TLVParser(\n new Uint8Array([CommandTags.AddMember, value1.length, ...value1]),\n );\n const parser2 = new TLVParser(\n new Uint8Array([CommandTags.AddMember, value2.length, ...value2]),\n );\n\n // WHEN\n const parsed1 = parser1.parseCommandData();\n const parsed2 = parser2.parseCommandData();\n\n // THEN\n expect(parsed1).toEqual(\n Left(new LKRPParsingError(\"Expected a string\")),\n );\n expect(parsed2).toEqual(\n Left(new LKRPParsingError(\"Unexpected end of TLV\")),\n );\n });\n });\n\n describe(\"Parse PublishKey Command Data\", () => {\n it(\"should parse a valid publish key command data\", () => {\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, 0x03, 0x05, 0x07], // Recipient Public Key\n ...[GeneralTags.PublicKey, 3, 0x08, 0x09, 0x0a], // Ephemeral Public Key\n ]);\n const parser = new TLVParser(\n new Uint8Array([CommandTags.PublishKey, value.length, ...value]),\n );\n\n // WHEN\n const parsed = parser.parseCommandData();\n\n // THEN\n expect(parsed).toStrictEqual(\n Right({\n type: CommandTags.PublishKey,\n initializationVector: new Uint8Array([0x01, 0x02, 0x03]),\n encryptedXpriv: new Uint8Array([0x04, 0x05, 0x06]),\n recipient: new Uint8Array([0x03, 0x05, 0x07]),\n ephemeralPublicKey: new Uint8Array([0x08, 0x09, 0x0a]),\n }),\n );\n });\n\n it(\"should fail if the command data is invalid\", () => {\n // GIVEN\n const value1 = new Uint8Array([\n ...[GeneralTags.Int, 2, 0x01, 0x02], // Wrong type for Initialization Vector\n ]);\n const value2 = new Uint8Array([\n ...[GeneralTags.Bytes, 3, 0x01, 0x02, 0x03], // Correct type but the other fields are missing\n ]);\n const parser1 = new TLVParser(\n new Uint8Array([CommandTags.PublishKey, value1.length, ...value1]),\n );\n const parser2 = new TLVParser(\n new Uint8Array([CommandTags.PublishKey, value2.length, ...value2]),\n );\n\n // WHEN\n const parsed1 = parser1.parseCommandData();\n const parsed2 = parser2.parseCommandData();\n\n // THEN\n expect(parsed1).toEqual(Left(new LKRPParsingError(\"Expected bytes\")));\n expect(parsed2).toEqual(\n Left(new LKRPParsingError(\"Unexpected end of TLV\")),\n );\n });\n });\n\n describe(\"Parse Derive Command Data\", () => {\n it(\"should parse a valid derive command data\", () => {\n // GIVEN\n const value = new Uint8Array([\n ...[GeneralTags.Bytes, 4, 0x00, 0x00, 0x00, 0x01], // Path\n ...[GeneralTags.PublicKey, 3, 0x04, 0x05, 0x06], // Group Key\n ...[GeneralTags.Bytes, 3, 0x03, 0x05, 0x07], // Initialization Vector\n ...[GeneralTags.Bytes, 3, 0x08, 0x09, 0x0a], // Encrypted xpriv\n ...[GeneralTags.PublicKey, 3, 0x0a, 0x0b, 0x0c], // Ephemeral Public Key\n ]);\n const parser = new TLVParser(\n new Uint8Array([CommandTags.Derive, value.length, ...value]),\n );\n\n // WHEN\n const parsed = parser.parseCommandData();\n\n // THEN\n expect(parsed).toStrictEqual(\n Right({\n type: CommandTags.Derive,\n path: \"m/1\",\n groupKey: new Uint8Array([0x04, 0x05, 0x06]),\n initializationVector: new Uint8Array([0x03, 0x05, 0x07]),\n encryptedXpriv: new Uint8Array([0x08, 0x09, 0x0a]),\n ephemeralPublicKey: new Uint8Array([0x0a, 0x0b, 0x0c]),\n }),\n );\n });\n\n it(\"should fail if the command data is invalid\", () => {\n // GIVEN\n const value1 = new Uint8Array([\n ...[GeneralTags.Int, 2, 0x01, 0x02], // Wrong type for Path\n ]);\n const value2 = new Uint8Array([\n ...[GeneralTags.Bytes, 3, 0x01, 0x02, 0x03], // Correct type but the other fields are missing\n ]);\n const parser1 = new TLVParser(\n new Uint8Array([CommandTags.Derive, value1.length, ...value1]),\n );\n const parser2 = new TLVParser(\n new Uint8Array([CommandTags.Derive, value2.length, ...value2]),\n );\n\n // WHEN\n const parsed1 = parser1.parseCommandData();\n const parsed2 = parser2.parseCommandData();\n\n // THEN\n expect(parsed1).toEqual(Left(new LKRPParsingError(\"Expected bytes\")));\n expect(parsed2).toEqual(\n Left(new LKRPParsingError(\"Unexpected end of TLV\")),\n );\n });\n });\n\n it(\"should fail on unsupported command type\", () => {\n // GIVEN\n const parser = new TLVParser(new Uint8Array([0x3f, 1, 0x01]));\n // WHEN\n const parsed = parser.parseCommandData();\n // THEN\n expect(parsed).toEqual(\n Left(new LKRPParsingError(\"Unsupported command type: 0x3f\")),\n );\n });\n });\n\n describe(\"General Types Parsing\", () => {\n describe(\"parse\", () => {\n it(\"should parse a valid TLV structure\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Int, 1, 0x01, GeneralTags.Bytes, 0]),\n );\n // WHEN\n const value1 = parser.parse();\n const value2 = parser.parse();\n // THEN\n expect(value1).toEqual(Right({ tag: GeneralTags.Int, value: 1 }));\n expect(value2).toEqual(\n Right({ tag: GeneralTags.Bytes, value: new Uint8Array([]) }),\n );\n });\n\n it(\"should fail on invalid TLV structure\", () => {\n // GIVEN\n const parser1 = new TLVParser(new Uint8Array([]));\n const parser2 = new TLVParser(new Uint8Array([GeneralTags.Int]));\n const parser3 = new TLVParser(new Uint8Array([GeneralTags.Int, 2]));\n // WHEN\n const value1 = parser1.parse();\n const value2 = parser2.parse();\n const value3 = parser3.parse();\n // THEN\n expect(value1).toEqual(\n Left(new LKRPParsingError(\"Unexpected end of TLV\")),\n );\n expect(value2).toEqual(\n Left(new LKRPParsingError(\"Invalid end of TLV, expected length\")),\n );\n expect(value3).toEqual(\n Left(new LKRPParsingError(\"Invalid end of TLV value\")),\n );\n });\n });\n\n describe(\"parseNull\", () => {\n it(\"should parse a null value\", () => {\n // GIVEN\n const parser = new TLVParser(new Uint8Array([GeneralTags.Null, 0]));\n // WHEN\n const value = parser.parseNull();\n // THEN\n expect(value).toEqual(Right(null));\n });\n\n it(\"should fail if the tag is not null\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Int, 1, 0x01]),\n );\n // WHEN\n const value = parser.parseNull();\n // THEN\n expect(value).toEqual(Left(new LKRPParsingError(\"Expected null\")));\n });\n\n it(\"should fail if the format is invalid\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Null, 1, 0x02]),\n );\n // WHEN\n const value = parser.parseNull();\n // THEN\n expect(value).toEqual(\n Left(new LKRPParsingError(\"Invalid null length\")),\n );\n });\n });\n\n describe(\"parseInt\", () => {\n it(\"should parse big endian integer values\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([\n ...[GeneralTags.Int, 1, 0x01], // 1\n ...[GeneralTags.Int, 2, 0x01, 0x00], // 256\n ...[GeneralTags.Int, 4, 0x01, 0x00, 0x00, 0x00], // 16777216\n ]),\n );\n // WHEN\n const value1 = parser.parseInt();\n const value2 = parser.parseInt();\n const value4 = parser.parseInt();\n // THEN\n expect(value1).toEqual(Right(1));\n expect(value2).toEqual(Right(256));\n expect(value4).toEqual(Right(16777216));\n });\n\n it(\"should fail if the tag is not an integer\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Bytes, 1, 0x01]),\n );\n // WHEN\n const value = parser.parseInt();\n // THEN\n expect(value).toEqual(Left(new LKRPParsingError(\"Expected a number\")));\n });\n\n it(\"should fail if the integer is not 1, 2, or 4 bytes\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Int, 3, 0x01, 0x02, 0x03]),\n );\n // WHEN\n const value = parser.parseInt();\n // THEN\n expect(value).toEqual(\n Left(new LKRPParsingError(\"Unsupported integer length\")),\n );\n });\n });\n\n describe(\"parseHash\", () => {\n it(\"should parse a hash value\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Hash, 3, 0x01, 0x02, 0x03]),\n );\n // WHEN\n const value = parser.parseHash();\n // THEN\n expect(value).toEqual(Right(new Uint8Array([0x01, 0x02, 0x03])));\n });\n\n it(\"should fail if the tag is not a hash\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Int, 1, 0x01]),\n );\n // WHEN\n const value = parser.parseHash();\n // THEN\n expect(value).toEqual(Left(new LKRPParsingError(\"Expected a hash\")));\n });\n });\n\n describe(\"parseSignature\", () => {\n it(\"should parse a signature value\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Signature, 3, 0x01, 0x02, 0x03]),\n );\n // WHEN\n const value = parser.parseSignature();\n // THEN\n expect(value).toEqual(Right(new Uint8Array([0x01, 0x02, 0x03])));\n });\n\n it(\"should fail if the tag is not a signature\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Int, 1, 0x01]),\n );\n // WHEN\n const value = parser.parseSignature();\n // THEN\n expect(value).toEqual(\n Left(new LKRPParsingError(\"Expected a signature\")),\n );\n });\n });\n\n describe(\"parseString\", () => {\n it(\"should parse a string value\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.String, 5, 0x48, 0x65, 0x6c, 0x6c, 0x6f]),\n );\n // WHEN\n const value = parser.parseString();\n // THEN\n expect(value).toEqual(Right(\"Hello\"));\n });\n\n it(\"should fail if the tag is not a string\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Int, 1, 0x01]),\n );\n // WHEN\n const value = parser.parseString();\n // THEN\n expect(value).toEqual(Left(new LKRPParsingError(\"Expected a string\")));\n });\n });\n\n describe(\"parseBytes\", () => {\n it(\"should parse a bytes value\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Bytes, 3, 0x01, 0x02, 0x03]),\n );\n // WHEN\n const value = parser.parseBytes();\n // THEN\n expect(value).toEqual(Right(new Uint8Array([0x01, 0x02, 0x03])));\n });\n\n it(\"should fail if the tag is not bytes\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Int, 1, 0x01]),\n );\n // WHEN\n const value = parser.parseBytes();\n // THEN\n expect(value).toEqual(Left(new LKRPParsingError(\"Expected bytes\")));\n });\n });\n\n describe(\"parsePublicKey\", () => {\n it(\"should parse a public key value\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.PublicKey, 3, 0x01, 0x02, 0x03]),\n );\n // WHEN\n const value = parser.parsePublicKey();\n // THEN\n expect(value).toEqual(Right(new Uint8Array([0x01, 0x02, 0x03])));\n });\n\n it(\"should fail if the tag is not a public key\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Int, 1, 0x01]),\n );\n // WHEN\n const value = parser.parsePublicKey();\n // THEN\n expect(value).toEqual(\n Left(new LKRPParsingError(\"Expected a public key\")),\n );\n });\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["import_purify_ts", "import_Errors", "
|
|
4
|
+
"sourcesContent": ["import { Left, Right } from \"purify-ts\";\n\nimport { LKRPParsingError } from \"@api/app-binder/Errors\";\n\nimport { LKRPCommand } from \"./LKRPCommand\";\nimport { TLVParser } from \"./TLVParser\";\nimport { CommandTags, GeneralTags } from \"./TLVTags\";\n\ndescribe(\"TLVParser\", () => {\n describe(\"Block Data Parsing\", () => {\n describe(\"parseCommands\", () => {\n it(\"should parse has many commands has specified by the command count value\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([\n ...[GeneralTags.Int, 1, 0x02], // Command count: 2\n ...[CommandTags.AddMember, 3, ...[GeneralTags.Int, 1, 0x01]], // First command\n ...[CommandTags.Seed, 3, ...[GeneralTags.Int, 1, 0x02]], // Second command\n ]),\n );\n // WHEN\n const commands = parser.parseCommands();\n\n // THEN\n expect(commands).toStrictEqual(\n Right([\n new LKRPCommand(\n new Uint8Array([\n CommandTags.AddMember,\n 3,\n ...[GeneralTags.Int, 1, 0x01],\n ]),\n ),\n new LKRPCommand(\n new Uint8Array([\n CommandTags.Seed,\n 3,\n ...[GeneralTags.Int, 1, 0x02],\n ]),\n ),\n ]),\n );\n });\n });\n\n describe(\"parseBlockData\", () => {\n it(\"should parse a valid block data\", () => {\n // GIVEN\n const parser = new TLVParser(\n Uint8Array.from(\n [\n [GeneralTags.Int, 1, 0x01], // Version\n [GeneralTags.Hash, 3, 0x01, 0x02, 0x03], // Parent\n [GeneralTags.PublicKey, 3, 0x04, 0x05, 0x06], // Issuer\n [GeneralTags.Int, 1, 0x02], // Command count: 2\n [CommandTags.AddMember, 3, ...[GeneralTags.Int, 1, 0x01]], // First command\n [CommandTags.Seed, 3, ...[GeneralTags.Int, 1, 0x02]], // Second command\n [GeneralTags.Signature, 3, 0x07, 0x08, 0x09], // Signature\n ].flat(),\n ),\n );\n // WHEN\n const blockData = parser.parseBlockData();\n\n // THEN\n expect(blockData).toStrictEqual(\n Right({\n parent: \"010203\",\n issuer: new Uint8Array([0x04, 0x05, 0x06]),\n header: Uint8Array.from(\n [\n [GeneralTags.Int, 1, 0x01], // Version\n [GeneralTags.Hash, 3, 0x01, 0x02, 0x03], // Parent\n [GeneralTags.PublicKey, 3, 0x04, 0x05, 0x06], // Issuer\n [GeneralTags.Int, 1, 0x02], // Command count: 2\n ].flat(),\n ),\n\n commands: [\n new LKRPCommand(\n new Uint8Array([\n CommandTags.AddMember,\n 3,\n ...[GeneralTags.Int, 1, 0x01],\n ]),\n ),\n new LKRPCommand(\n new Uint8Array([\n CommandTags.Seed,\n 3,\n ...[GeneralTags.Int, 1, 0x02],\n ]),\n ),\n ],\n signature: Uint8Array.from([\n GeneralTags.Signature,\n 3,\n 0x07,\n 0x08,\n 0x09,\n ]),\n }),\n );\n });\n\n it(\"should fail if the block data is invalid\", () => {\n // GIVEN\n const parser = new TLVParser(new Uint8Array([]));\n // WHEN\n const blockData = parser.parseBlockData();\n // THEN\n expect(blockData).toEqual(\n Left(new LKRPParsingError(\"Unexpected end of TLV\")),\n );\n });\n });\n });\n\n describe(\"Command Data Parsing\", () => {\n describe(\"parseCommandBytes\", () => {\n it(\"should parse a valid command bytes\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([CommandTags.AddMember, 3, 0x01, 0x02, 0x03]),\n );\n // WHEN\n const value = parser.parseCommandBytes();\n // THEN\n expect(value).toEqual(\n Right(new Uint8Array([CommandTags.AddMember, 3, 0x01, 0x02, 0x03])),\n );\n });\n\n it(\"should fail if the tag is not a command\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Int, 1, 0x01]),\n );\n // WHEN\n const value = parser.parseCommandBytes();\n // THEN\n expect(value).toEqual(\n Left(new LKRPParsingError(`Invalid command type: 0x01`)),\n );\n });\n });\n\n describe(\"Parse Seed Command Data\", () => {\n it(\"should parse a valid seed command data\", () => {\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 const parser = new TLVParser(\n new Uint8Array([CommandTags.Seed, value.length, ...value]),\n );\n\n // WHEN\n const parsed = parser.parseCommandData();\n\n // THEN\n expect(parsed).toStrictEqual(\n Right({\n type: CommandTags.Seed,\n topic: new Uint8Array([0x01, 0x02, 0x03]),\n protocolVersion: 258, // 0x0102 in big-endian\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 if the command data is invalid\", () => {\n // GIVEN\n const value1 = new Uint8Array([\n ...[GeneralTags.Signature, 3, 0x01, 0x02, 0x03], // Wrong type for Topic\n ]);\n const value2 = new Uint8Array([\n ...[GeneralTags.Bytes, 3, 0x01, 0x02, 0x03], // Correct type but the other fields are missing\n ]);\n const parser1 = new TLVParser(\n new Uint8Array([CommandTags.Seed, value1.length, ...value1]),\n );\n const parser2 = new TLVParser(\n new Uint8Array([CommandTags.Seed, value2.length, ...value2]),\n );\n\n // WHEN\n const parsed1 = parser1.parseCommandData();\n const parsed2 = parser2.parseCommandData();\n\n // THEN\n expect(parsed1).toEqual(Left(new LKRPParsingError(\"Expected bytes\")));\n expect(parsed2).toEqual(\n Left(new LKRPParsingError(\"Unexpected end of TLV\")),\n );\n });\n });\n\n describe(\"Parse AddMember Command Data\", () => {\n it(\"should parse a valid add member command data\", () => {\n // GIVEN\n const value = new Uint8Array([\n ...[GeneralTags.String, 5, 0x41, 0x6c, 0x69, 0x63, 0x65], // Name \"Alice\"\n ...[GeneralTags.PublicKey, 3, 0x01, 0x02, 0x03], // Public Key\n ...[GeneralTags.Int, 1, 0x01], // Permissions\n ]);\n const parser = new TLVParser(\n new Uint8Array([CommandTags.AddMember, value.length, ...value]),\n );\n\n // WHEN\n const parsed = parser.parseCommandData();\n\n // THEN\n expect(parsed).toStrictEqual(\n Right({\n type: CommandTags.AddMember,\n name: \"Alice\",\n publicKey: new Uint8Array([0x01, 0x02, 0x03]),\n permissions: 1,\n }),\n );\n });\n\n it(\"should fail if the command data is invalid\", () => {\n // GIVEN\n const value1 = new Uint8Array([\n ...[GeneralTags.Bytes, 3, 0x01, 0x02, 0x03], // Wrong type for Name\n ]);\n const value2 = new Uint8Array([\n ...[GeneralTags.String, 5, 0x41, 0x6c, 0x69, 0x63, 0x65], // Correct type but the other fields are missing\n ]);\n const parser1 = new TLVParser(\n new Uint8Array([CommandTags.AddMember, value1.length, ...value1]),\n );\n const parser2 = new TLVParser(\n new Uint8Array([CommandTags.AddMember, value2.length, ...value2]),\n );\n\n // WHEN\n const parsed1 = parser1.parseCommandData();\n const parsed2 = parser2.parseCommandData();\n\n // THEN\n expect(parsed1).toEqual(\n Left(new LKRPParsingError(\"Expected a string\")),\n );\n expect(parsed2).toEqual(\n Left(new LKRPParsingError(\"Unexpected end of TLV\")),\n );\n });\n });\n\n describe(\"Parse PublishKey Command Data\", () => {\n it(\"should parse a valid publish key command data\", () => {\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, 0x03, 0x05, 0x07], // Recipient Public Key\n ...[GeneralTags.PublicKey, 3, 0x08, 0x09, 0x0a], // Ephemeral Public Key\n ]);\n const parser = new TLVParser(\n new Uint8Array([CommandTags.PublishKey, value.length, ...value]),\n );\n\n // WHEN\n const parsed = parser.parseCommandData();\n\n // THEN\n expect(parsed).toStrictEqual(\n Right({\n type: CommandTags.PublishKey,\n initializationVector: new Uint8Array([0x01, 0x02, 0x03]),\n encryptedXpriv: new Uint8Array([0x04, 0x05, 0x06]),\n recipient: new Uint8Array([0x03, 0x05, 0x07]),\n ephemeralPublicKey: new Uint8Array([0x08, 0x09, 0x0a]),\n }),\n );\n });\n\n it(\"should fail if the command data is invalid\", () => {\n // GIVEN\n const value1 = new Uint8Array([\n ...[GeneralTags.Int, 2, 0x01, 0x02], // Wrong type for Initialization Vector\n ]);\n const value2 = new Uint8Array([\n ...[GeneralTags.Bytes, 3, 0x01, 0x02, 0x03], // Correct type but the other fields are missing\n ]);\n const parser1 = new TLVParser(\n new Uint8Array([CommandTags.PublishKey, value1.length, ...value1]),\n );\n const parser2 = new TLVParser(\n new Uint8Array([CommandTags.PublishKey, value2.length, ...value2]),\n );\n\n // WHEN\n const parsed1 = parser1.parseCommandData();\n const parsed2 = parser2.parseCommandData();\n\n // THEN\n expect(parsed1).toEqual(Left(new LKRPParsingError(\"Expected bytes\")));\n expect(parsed2).toEqual(\n Left(new LKRPParsingError(\"Unexpected end of TLV\")),\n );\n });\n });\n\n describe(\"Parse Derive Command Data\", () => {\n it(\"should parse a valid derive command data\", () => {\n // GIVEN\n const value = new Uint8Array([\n ...[GeneralTags.Bytes, 4, 0x00, 0x00, 0x00, 0x01], // Path\n ...[GeneralTags.PublicKey, 3, 0x04, 0x05, 0x06], // Group Key\n ...[GeneralTags.Bytes, 3, 0x03, 0x05, 0x07], // Initialization Vector\n ...[GeneralTags.Bytes, 3, 0x08, 0x09, 0x0a], // Encrypted xpriv\n ...[GeneralTags.PublicKey, 3, 0x0a, 0x0b, 0x0c], // Ephemeral Public Key\n ]);\n const parser = new TLVParser(\n new Uint8Array([CommandTags.Derive, value.length, ...value]),\n );\n\n // WHEN\n const parsed = parser.parseCommandData();\n\n // THEN\n expect(parsed).toStrictEqual(\n Right({\n type: CommandTags.Derive,\n path: \"m/1\",\n groupKey: new Uint8Array([0x04, 0x05, 0x06]),\n initializationVector: new Uint8Array([0x03, 0x05, 0x07]),\n encryptedXpriv: new Uint8Array([0x08, 0x09, 0x0a]),\n ephemeralPublicKey: new Uint8Array([0x0a, 0x0b, 0x0c]),\n }),\n );\n });\n\n it(\"should fail if the command data is invalid\", () => {\n // GIVEN\n const value1 = new Uint8Array([\n ...[GeneralTags.Int, 2, 0x01, 0x02], // Wrong type for Path\n ]);\n const value2 = new Uint8Array([\n ...[GeneralTags.Bytes, 3, 0x01, 0x02, 0x03], // Correct type but the other fields are missing\n ]);\n const parser1 = new TLVParser(\n new Uint8Array([CommandTags.Derive, value1.length, ...value1]),\n );\n const parser2 = new TLVParser(\n new Uint8Array([CommandTags.Derive, value2.length, ...value2]),\n );\n\n // WHEN\n const parsed1 = parser1.parseCommandData();\n const parsed2 = parser2.parseCommandData();\n\n // THEN\n expect(parsed1).toEqual(Left(new LKRPParsingError(\"Expected bytes\")));\n expect(parsed2).toEqual(\n Left(new LKRPParsingError(\"Unexpected end of TLV\")),\n );\n });\n });\n\n it(\"should fail on unsupported command type\", () => {\n // GIVEN\n const parser = new TLVParser(new Uint8Array([0x3f, 1, 0x01]));\n // WHEN\n const parsed = parser.parseCommandData();\n // THEN\n expect(parsed).toEqual(\n Left(new LKRPParsingError(\"Unsupported command type: 0x3f\")),\n );\n });\n });\n\n describe(\"General Types Parsing\", () => {\n describe(\"parse\", () => {\n it(\"should parse a valid TLV structure\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Int, 1, 0x01, GeneralTags.Bytes, 0]),\n );\n // WHEN\n const value1 = parser.parse();\n const value2 = parser.parse();\n // THEN\n expect(value1).toEqual(Right({ tag: GeneralTags.Int, value: 1 }));\n expect(value2).toEqual(\n Right({ tag: GeneralTags.Bytes, value: new Uint8Array([]) }),\n );\n });\n\n it(\"should fail on invalid TLV structure\", () => {\n // GIVEN\n const parser1 = new TLVParser(new Uint8Array([]));\n const parser2 = new TLVParser(new Uint8Array([GeneralTags.Int]));\n const parser3 = new TLVParser(new Uint8Array([GeneralTags.Int, 2]));\n // WHEN\n const value1 = parser1.parse();\n const value2 = parser2.parse();\n const value3 = parser3.parse();\n // THEN\n expect(value1).toEqual(\n Left(new LKRPParsingError(\"Unexpected end of TLV\")),\n );\n expect(value2).toEqual(\n Left(new LKRPParsingError(\"Invalid end of TLV, expected length\")),\n );\n expect(value3).toEqual(\n Left(new LKRPParsingError(\"Invalid end of TLV value\")),\n );\n });\n });\n\n describe(\"parseNull\", () => {\n it(\"should parse a null value\", () => {\n // GIVEN\n const parser = new TLVParser(new Uint8Array([GeneralTags.Null, 0]));\n // WHEN\n const value = parser.parseNull();\n // THEN\n expect(value).toEqual(Right(null));\n });\n\n it(\"should fail if the tag is not null\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Int, 1, 0x01]),\n );\n // WHEN\n const value = parser.parseNull();\n // THEN\n expect(value).toEqual(Left(new LKRPParsingError(\"Expected null\")));\n });\n\n it(\"should fail if the format is invalid\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Null, 1, 0x02]),\n );\n // WHEN\n const value = parser.parseNull();\n // THEN\n expect(value).toEqual(\n Left(new LKRPParsingError(\"Invalid null length\")),\n );\n });\n });\n\n describe(\"parseInt\", () => {\n it(\"should parse big endian integer values\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([\n ...[GeneralTags.Int, 1, 0x01], // 1\n ...[GeneralTags.Int, 2, 0x01, 0x00], // 256\n ...[GeneralTags.Int, 4, 0x01, 0x00, 0x00, 0x00], // 16777216\n ]),\n );\n // WHEN\n const value1 = parser.parseInt();\n const value2 = parser.parseInt();\n const value4 = parser.parseInt();\n // THEN\n expect(value1).toEqual(Right(1));\n expect(value2).toEqual(Right(256));\n expect(value4).toEqual(Right(16777216));\n });\n\n it(\"should fail if the tag is not an integer\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Bytes, 1, 0x01]),\n );\n // WHEN\n const value = parser.parseInt();\n // THEN\n expect(value).toEqual(Left(new LKRPParsingError(\"Expected a number\")));\n });\n\n it(\"should fail if the integer is not 1, 2, or 4 bytes\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Int, 3, 0x01, 0x02, 0x03]),\n );\n // WHEN\n const value = parser.parseInt();\n // THEN\n expect(value).toEqual(\n Left(new LKRPParsingError(\"Unsupported integer length\")),\n );\n });\n });\n\n describe(\"parseHash\", () => {\n it(\"should parse a hash value\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Hash, 3, 0x01, 0x02, 0x03]),\n );\n // WHEN\n const value = parser.parseHash();\n // THEN\n expect(value).toEqual(Right(new Uint8Array([0x01, 0x02, 0x03])));\n });\n\n it(\"should fail if the tag is not a hash\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Int, 1, 0x01]),\n );\n // WHEN\n const value = parser.parseHash();\n // THEN\n expect(value).toEqual(Left(new LKRPParsingError(\"Expected a hash\")));\n });\n });\n\n describe(\"parseSignature\", () => {\n it(\"should parse a signature value\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Signature, 3, 0x01, 0x02, 0x03]),\n );\n // WHEN\n const value = parser.parseSignature();\n // THEN\n expect(value).toEqual(Right(new Uint8Array([0x01, 0x02, 0x03])));\n });\n\n it(\"should fail if the tag is not a signature\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Int, 1, 0x01]),\n );\n // WHEN\n const value = parser.parseSignature();\n // THEN\n expect(value).toEqual(\n Left(new LKRPParsingError(\"Expected a signature\")),\n );\n });\n });\n\n describe(\"parseString\", () => {\n it(\"should parse a string value\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.String, 5, 0x48, 0x65, 0x6c, 0x6c, 0x6f]),\n );\n // WHEN\n const value = parser.parseString();\n // THEN\n expect(value).toEqual(Right(\"Hello\"));\n });\n\n it(\"should fail if the tag is not a string\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Int, 1, 0x01]),\n );\n // WHEN\n const value = parser.parseString();\n // THEN\n expect(value).toEqual(Left(new LKRPParsingError(\"Expected a string\")));\n });\n });\n\n describe(\"parseBytes\", () => {\n it(\"should parse a bytes value\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Bytes, 3, 0x01, 0x02, 0x03]),\n );\n // WHEN\n const value = parser.parseBytes();\n // THEN\n expect(value).toEqual(Right(new Uint8Array([0x01, 0x02, 0x03])));\n });\n\n it(\"should fail if the tag is not bytes\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Int, 1, 0x01]),\n );\n // WHEN\n const value = parser.parseBytes();\n // THEN\n expect(value).toEqual(Left(new LKRPParsingError(\"Expected bytes\")));\n });\n });\n\n describe(\"parsePublicKey\", () => {\n it(\"should parse a public key value\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.PublicKey, 3, 0x01, 0x02, 0x03]),\n );\n // WHEN\n const value = parser.parsePublicKey();\n // THEN\n expect(value).toEqual(Right(new Uint8Array([0x01, 0x02, 0x03])));\n });\n\n it(\"should fail if the tag is not a public key\", () => {\n // GIVEN\n const parser = new TLVParser(\n new Uint8Array([GeneralTags.Int, 1, 0x01]),\n );\n // WHEN\n const value = parser.parsePublicKey();\n // THEN\n expect(value).toEqual(\n Left(new LKRPParsingError(\"Expected a public key\")),\n );\n });\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_purify_ts", "import_Errors", "import_LKRPCommand", "import_TLVParser", "import_TLVTags", "commands", "blockData", "value", "parsed", "value1", "value2", "parser1", "parser2", "parsed1", "parsed2", "parser", "parser3", "value3", "value4"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use strict";var I=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var A=(u,t)=>{for(var i in t)I(u,i,{get:t[i],enumerable:!0})},B=(u,t,i,S)=>{if(t&&typeof t=="object"||typeof t=="function")for(let M of p(t))!y.call(u,M)&&M!==i&&I(u,M,{get:()=>t[M],enumerable:!(S=N(t,M))||S.enumerable});return u};var U=u=>B(I({},"__esModule",{value:!0}),u);var V={};A(V,{CommandTags:()=>b,GeneralTags:()=>_,TPTags:()=>K});module.exports=U(V);var _=(x=>(x[x.Null=0]="Null",x[x.Int=1]="Int",x[x.Hash=2]="Hash",x[x.Signature=3]="Signature",x[x.String=4]="String",x[x.Bytes=5]="Bytes",x[x.PublicKey=6]="PublicKey",x))(_||{}),b=(E=>(E[E.Seed=16]="Seed",E[E.AddMember=17]="AddMember",E[E.PublishKey=18]="PublishKey",E[E.CloseStream=19]="CloseStream",E[E.EditMember=20]="EditMember",E[E.Derive=21]="Derive",E))(b||{});const R=128;var K=(x=>(x[x.IV=0]="IV",x[x.ISSUER=1|R]="ISSUER",x[x.XPRIV=2|R]="XPRIV",x[x.EPHEMERAL_PUBLIC_KEY=3]="EPHEMERAL_PUBLIC_KEY",x[x.COMMAND_IV=4]="COMMAND_IV",x[x.GROUPKEY=5]="GROUPKEY",x[x.NEW_MEMBER=6|R]="NEW_MEMBER",x))(K||{});0&&(module.exports={CommandTags,GeneralTags,TPTags});
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=TLVTags.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/internal/
|
|
3
|
+
"sources": ["../../../../src/internal/utils/TLVTags.ts"],
|
|
4
4
|
"sourcesContent": ["export enum GeneralTags {\n Null = 0x00,\n Int = 0x01,\n Hash = 0x02,\n Signature = 0x03,\n String = 0x04,\n Bytes = 0x05,\n PublicKey = 0x06,\n}\n\nexport enum CommandTags {\n Seed = 0x10,\n AddMember = 0x11,\n PublishKey = 0x12,\n CloseStream = 0x13,\n EditMember = 0x14,\n Derive = 0x15,\n}\n\nconst TP_ENCRYPT = 1 << 7;\n\nexport enum TPTags {\n IV = 0x00,\n ISSUER = 0x01 | TP_ENCRYPT,\n XPRIV = 0x02 | TP_ENCRYPT,\n EPHEMERAL_PUBLIC_KEY = 0x03,\n COMMAND_IV = 0x04,\n GROUPKEY = 0x05,\n NEW_MEMBER = 0x06 | TP_ENCRYPT,\n}\n"],
|
|
5
5
|
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iBAAAE,EAAA,gBAAAC,EAAA,WAAAC,IAAA,eAAAC,EAAAL,GAAO,IAAKG,OACVA,IAAA,KAAO,GAAP,OACAA,IAAA,IAAM,GAAN,MACAA,IAAA,KAAO,GAAP,OACAA,IAAA,UAAY,GAAZ,YACAA,IAAA,OAAS,GAAT,SACAA,IAAA,MAAQ,GAAR,QACAA,IAAA,UAAY,GAAZ,YAPUA,OAAA,IAUAD,OACVA,IAAA,KAAO,IAAP,OACAA,IAAA,UAAY,IAAZ,YACAA,IAAA,WAAa,IAAb,aACAA,IAAA,YAAc,IAAd,cACAA,IAAA,WAAa,IAAb,aACAA,IAAA,OAAS,IAAT,SANUA,OAAA,IASZ,MAAMI,EAAa,IAEZ,IAAKF,OACVA,IAAA,GAAK,GAAL,KACAA,IAAA,OAAS,EAAOE,GAAhB,SACAF,IAAA,MAAQ,EAAOE,GAAf,QACAF,IAAA,qBAAuB,GAAvB,uBACAA,IAAA,WAAa,GAAb,aACAA,IAAA,SAAW,GAAX,WACAA,IAAA,WAAa,EAAOE,GAApB,aAPUF,OAAA",
|
|
6
|
-
"names": ["
|
|
6
|
+
"names": ["TLVTags_exports", "__export", "CommandTags", "GeneralTags", "TPTags", "__toCommonJS", "TP_ENCRYPT"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var o=Object.defineProperty;var
|
|
1
|
+
"use strict";var o=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var y=(r,t)=>{for(var n in t)o(r,n,{get:t[n],enumerable:!0})},s=(r,t,n,f)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of u(t))!x.call(r,e)&&e!==n&&o(r,e,{get:()=>t[e],enumerable:!(f=i(t,e))||f.enumerable});return r};var a=r=>s(o({},"__esModule",{value:!0}),r);var m={};y(m,{bytesToHex:()=>h,hexToBytes:()=>g});module.exports=a(m);function g(r){return Uint8Array.from(Buffer.from(r,"hex"))}function h(r){return Buffer.from(r).toString("hex")}0&&(module.exports={bytesToHex,hexToBytes});
|
|
2
2
|
//# sourceMappingURL=hex.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/internal/utils/hex.ts"],
|
|
4
|
-
"sourcesContent": ["
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gBAAAE,EAAA,eAAAC,IAAA,eAAAC,EAAAJ,
|
|
6
|
-
"names": ["hex_exports", "__export", "bytesToHex", "hexToBytes", "__toCommonJS", "
|
|
4
|
+
"sourcesContent": ["export function hexToBytes(hex: string): Uint8Array {\n return Uint8Array.from(Buffer.from(hex, \"hex\"));\n}\n\nexport function bytesToHex(bytes: Uint8Array): string {\n return Buffer.from(bytes).toString(\"hex\");\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gBAAAE,EAAA,eAAAC,IAAA,eAAAC,EAAAJ,GAAO,SAASG,EAAWE,EAAyB,CAClD,OAAO,WAAW,KAAK,OAAO,KAAKA,EAAK,KAAK,CAAC,CAChD,CAEO,SAASH,EAAWI,EAA2B,CACpD,OAAO,OAAO,KAAKA,CAAK,EAAE,SAAS,KAAK,CAC1C",
|
|
6
|
+
"names": ["hex_exports", "__export", "bytesToHex", "hexToBytes", "__toCommonJS", "hex", "bytes"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var a=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var m=(r,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of p(e))!d.call(r,t)&&t!==n&&a(r,t,{get:()=>e[t],enumerable:!(i=y(e,t))||i.enumerable});return r};var o=r=>m(a({},"__esModule",{value:!0}),r);var s={};module.exports=o(s);
|
|
2
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/internal/utils/types.ts"],
|
|
4
|
+
"sourcesContent": ["import { type LKRPBlockStream } from \"./LKRPBlockStream\";\nimport { type LKRPCommand } from \"./LKRPCommand\";\nimport { type CommandTags } from \"./TLVTags\";\n\nexport type Trustchain = {\n [path: string]: LKRPBlockStream;\n};\n\nexport type PublishedKey = {\n privateKey: Uint8Array;\n chainCode: Uint8Array;\n};\n\nexport type EncryptedPublishedKey = {\n encryptedXpriv: Uint8Array;\n initializationVector: Uint8Array;\n ephemeralPublicKey: Uint8Array;\n};\n\nexport type LKRPBlockData = {\n parent: string;\n issuer: Uint8Array;\n commands: LKRPCommand[];\n signature: Uint8Array;\n};\n\nexport type LKRPBlockParsedData = LKRPBlockData & { header: Uint8Array };\n\nexport type LKRPCommandData = Seed | AddMember | PublishKey | Derive;\n\ntype Seed = {\n type: CommandTags.Seed;\n topic: Uint8Array;\n protocolVersion: number;\n groupKey: Uint8Array;\n initializationVector: Uint8Array;\n encryptedXpriv: Uint8Array;\n ephemeralPublicKey: Uint8Array;\n};\n\ntype AddMember = {\n type: CommandTags.AddMember;\n name: string;\n publicKey: Uint8Array;\n permissions: number;\n};\n\ntype PublishKey = {\n type: CommandTags.PublishKey;\n initializationVector: Uint8Array;\n encryptedXpriv: Uint8Array;\n recipient: Uint8Array;\n ephemeralPublicKey: Uint8Array;\n};\n\ntype Derive = {\n type: CommandTags.Derive;\n path: string;\n groupKey: Uint8Array;\n initializationVector: Uint8Array;\n encryptedXpriv: Uint8Array;\n ephemeralPublicKey: Uint8Array;\n};\n\nexport type UnsignedCommandData =\n | AddMemberUnsignedData\n | PublishKeyUnsignedData\n | DeriveUnsignedData;\n\nexport type AddMemberUnsignedData = AddMember;\ntype PublishKeyUnsignedData = Pick<PublishKey, \"type\" | \"recipient\">;\ntype DeriveUnsignedData = Pick<Derive, \"type\" | \"path\">;\n\nexport type ParsedTrustedProperties = {\n iv: Uint8Array;\n issuer: Uint8Array;\n xpriv: Uint8Array;\n ephemeralPublicKey: Uint8Array;\n commandIv: Uint8Array;\n groupKey: Uint8Array;\n newMember: Uint8Array;\n};\n\nexport type EncryptedCommand =\n | EncryptedDeriveCommand\n | AddMemberUnsignedData\n | EncryptedPublishKeyCommand;\n\nexport type EncryptedDeriveCommand = DeriveUnsignedData &\n Pick<\n ParsedTrustedProperties,\n \"iv\" | \"xpriv\" | \"ephemeralPublicKey\" | \"commandIv\" | \"groupKey\"\n >;\nexport type EncryptedPublishKeyCommand = PublishKeyUnsignedData &\n Pick<\n ParsedTrustedProperties,\n \"iv\" | \"xpriv\" | \"ephemeralPublicKey\" | \"commandIv\"\n >;\n"],
|
|
5
|
+
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
|
+
"names": ["types_exports", "__toCommonJS"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{DefaultLedgerKeyringProtocol as
|
|
1
|
+
import{DefaultLedgerKeyringProtocol as s}from"../internal/DefaultLedgerKeyringProtocol";class n{dmk;sessionId;baseUrl;constructor({dmk:e,sessionId:i,baseUrl:r}){this.dmk=e,this.sessionId=i,this.baseUrl=r}build(){return new s({dmk:this.dmk,sessionId:this.sessionId,baseUrl:this.baseUrl})}}export{n as LedgerKeyringProtocolBuilder};
|
|
2
2
|
//# sourceMappingURL=LedgerKeyringProtocolBuilder.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/api/LedgerKeyringProtocolBuilder.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type LedgerKeyringProtocol } from \"@api/LedgerKeyringProtocol\";\nimport { DefaultLedgerKeyringProtocol } from \"@internal/DefaultLedgerKeyringProtocol\";\n\
|
|
5
|
-
"mappings": "AAMA,OAAS,gCAAAA,MAAoC,
|
|
6
|
-
"names": ["DefaultLedgerKeyringProtocol", "LedgerKeyringProtocolBuilder", "
|
|
4
|
+
"sourcesContent": ["import {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type LedgerKeyringProtocol } from \"@api/LedgerKeyringProtocol\";\nimport { DefaultLedgerKeyringProtocol } from \"@internal/DefaultLedgerKeyringProtocol\";\n\nexport class LedgerKeyringProtocolBuilder {\n private readonly dmk: DeviceManagementKit;\n private readonly sessionId: DeviceSessionId;\n private readonly baseUrl: string;\n\n constructor({\n dmk,\n sessionId,\n baseUrl,\n }: {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n baseUrl: string;\n }) {\n this.dmk = dmk;\n this.sessionId = sessionId;\n this.baseUrl = baseUrl;\n }\n\n build(): LedgerKeyringProtocol {\n return new DefaultLedgerKeyringProtocol({\n dmk: this.dmk,\n sessionId: this.sessionId,\n baseUrl: this.baseUrl,\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "AAMA,OAAS,gCAAAA,MAAoC,yCAEtC,MAAMC,CAA6B,CACvB,IACA,UACA,QAEjB,YAAY,CACV,IAAAC,EACA,UAAAC,EACA,QAAAC,CACF,EAIG,CACD,KAAK,IAAMF,EACX,KAAK,UAAYC,EACjB,KAAK,QAAUC,CACjB,CAEA,OAA+B,CAC7B,OAAO,IAAIJ,EAA6B,CACtC,IAAK,KAAK,IACV,UAAW,KAAK,UAChB,QAAS,KAAK,OAChB,CAAC,CACH,CACF",
|
|
6
|
+
"names": ["DefaultLedgerKeyringProtocol", "LedgerKeyringProtocolBuilder", "dmk", "sessionId", "baseUrl"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{GeneralDmkError as
|
|
1
|
+
import{GeneralDmkError as n}from"@ledgerhq/device-management-kit";class t extends n{constructor(r){super(r);this.err=r}_tag="LKRPHttpRequestError"}class a extends t{constructor(r){super(r);this.err=r}_tag="LKRPUnauthorizedError"}class d extends n{constructor(r){super(r);this.err=r}_tag="LKRPParsingError"}class u extends n{constructor(r){super(r);this.err=r}_tag="LKRPMissingDataError"}class c extends n{constructor(r){super(r);this.err=r}_tag="LKRPUnhandledState"}export{t as LKRPHttpRequestError,u as LKRPMissingDataError,d as LKRPParsingError,a as LKRPUnauthorizedError,c as LKRPUnhandledState};
|
|
2
2
|
//# sourceMappingURL=Errors.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/api/app-binder/Errors.ts"],
|
|
4
|
-
"sourcesContent": ["import { GeneralDmkError } from \"@ledgerhq/device-management-kit\";\n\nexport
|
|
5
|
-
"mappings": "AAAA,OAAS,mBAAAA,MAAuB,
|
|
6
|
-
"names": ["GeneralDmkError", "
|
|
4
|
+
"sourcesContent": ["import { GeneralDmkError } from \"@ledgerhq/device-management-kit\";\n\nexport class LKRPHttpRequestError extends GeneralDmkError {\n override _tag = \"LKRPHttpRequestError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class LKRPUnauthorizedError extends LKRPHttpRequestError {\n override _tag = \"LKRPUnauthorizedError\";\n constructor(override err?: unknown) {\n super(err);\n }\n}\n\nexport class LKRPParsingError extends GeneralDmkError {\n override readonly _tag = \"LKRPParsingError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class LKRPMissingDataError extends GeneralDmkError {\n override readonly _tag = \"LKRPMissingDataError\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n\nexport class LKRPUnhandledState extends GeneralDmkError {\n override readonly _tag = \"LKRPUnhandledState\";\n constructor(readonly err?: unknown) {\n super(err);\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,mBAAAA,MAAuB,kCAEzB,MAAMC,UAA6BD,CAAgB,CAExD,YAAqBE,EAAe,CAClC,MAAMA,CAAG,EADU,SAAAA,CAErB,CAHS,KAAO,sBAIlB,CAEO,MAAMC,UAA8BF,CAAqB,CAE9D,YAAqBC,EAAe,CAClC,MAAMA,CAAG,EADU,SAAAA,CAErB,CAHS,KAAO,uBAIlB,CAEO,MAAME,UAAyBJ,CAAgB,CAEpD,YAAqBE,EAAe,CAClC,MAAMA,CAAG,EADU,SAAAA,CAErB,CAHkB,KAAO,kBAI3B,CAEO,MAAMG,UAA6BL,CAAgB,CAExD,YAAqBE,EAAe,CAClC,MAAMA,CAAG,EADU,SAAAA,CAErB,CAHkB,KAAO,sBAI3B,CAEO,MAAMI,UAA2BN,CAAgB,CAEtD,YAAqBE,EAAe,CAClC,MAAMA,CAAG,EADU,SAAAA,CAErB,CAHkB,KAAO,oBAI3B",
|
|
6
|
+
"names": ["GeneralDmkError", "LKRPHttpRequestError", "err", "LKRPUnauthorizedError", "LKRPParsingError", "LKRPMissingDataError", "LKRPUnhandledState"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var
|
|
1
|
+
var r=(t=>(t[t.OWNER=4294967295]="OWNER",t[t.CAN_ENCRYPT=1]="CAN_ENCRYPT",t[t.CAN_DERIVE=2]="CAN_DERIVE",t[t.CAN_ADD_BLOCK=4]="CAN_ADD_BLOCK",t))(r||{});export{r as Permissions};
|
|
2
2
|
//# sourceMappingURL=LKRPTypes.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/api/app-binder/LKRPTypes.ts"],
|
|
4
|
-
"sourcesContent": ["export interface Keypair {\n pubKeyToU8a(): Uint8Array;\n pubKeyToHex(): string;\n sign(message: Uint8Array): Promise<Uint8Array>;\n ecdh(publicKey: Uint8Array): Uint8Array;\n}\n\nexport
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["
|
|
4
|
+
"sourcesContent": ["export interface Keypair {\n pubKeyToU8a(): Uint8Array;\n pubKeyToHex(): string;\n sign(message: Uint8Array): Promise<Uint8Array>;\n ecdh(publicKey: Uint8Array): Uint8Array;\n}\n\nexport type JWT = {\n access_token: string;\n permissions: {\n [trustchainId: string]: {\n [path: string]: string[];\n };\n };\n};\n\n/**\n * https://ledgerhq.atlassian.net/wiki/spaces/TA/pages/5865144361/ARCH+LKRP+-+v2+specifications#Member-permissions\n */\nexport enum Permissions {\n OWNER = 0xffffffff, // Owners of the stream have access to everything\n CAN_ENCRYPT = 1, // The member can have access to the stream private key\n CAN_DERIVE = 1 << 1, // The member can have access to the stream chain code (if a member have access to the private key and the chain code it is able to derive sub-streams)\n CAN_ADD_BLOCK = 1 << 2, // The member is authorized to issue blocks in the current stream\n}\n"],
|
|
5
|
+
"mappings": "AAmBO,IAAKA,OACVA,IAAA,MAAQ,YAAR,QACAA,IAAA,YAAc,GAAd,cACAA,IAAA,WAAa,GAAb,aACAA,IAAA,cAAgB,GAAhB,gBAJUA,OAAA",
|
|
6
|
+
"names": ["Permissions"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ByteArrayBuilder as f,ByteArrayParser as h}from"@ledgerhq/device-management-kit";import{Maybe as
|
|
1
|
+
import{ByteArrayBuilder as f,ByteArrayParser as h}from"@ledgerhq/device-management-kit";import{Maybe as c,Nothing as A}from"purify-ts";import{KeypairFromBytes as l}from"../api/app-binder/KeypairFromBytes";import{makeContainer as K}from"./di";import{AES_BLOCK_SIZE as u,CryptoUtils as n}from"./utils/crypto";import{useCasesTypes as U}from"./use-cases/di/useCasesTypes";class P{name;_container;constructor({dmk:r,sessionId:a,baseUrl:e}){this.name="Ledger Keyring Protocol",this._container=K({dmk:r,sessionId:a,baseUrl:e})}authenticate(r,a,e,t,o,i){return this._container.get(U.AuthenticateUseCase).execute(r,a,e,t,o,i)}encryptData(r,a){const e=new l(r),t=n.randomKeypair(),o=e.ecdh(t.pubKeyToU8a()).slice(1),i=n.hmac(new Uint8Array,o),s=n.randomBytes(16),y=n.encrypt(i,s,a),m=y.subarray(0,-u),p=y.subarray(-u);return new f().add8BitUIntToData(0).addBufferToData(t.pubKeyToU8a()).addBufferToData(s).addBufferToData(p).addBufferToData(m).build()}decryptData(r,a){const e=new h(a);return e.extract8BitUInt()!==0?A:c.sequence([c.fromNullable(e.extractFieldByLength(33)),c.fromNullable(e.extractFieldByLength(16)),c.fromNullable(e.extractFieldByLength(16)),c.fromNullable(e.extractFieldByLength(e.getUnparsedRemainingLength()))]).map(t=>{const o=t[0],i=t[1],s=t[2],y=t[3],p=new l(r).ecdh(o).slice(1),d=n.hmac(new Uint8Array,p),g=new Uint8Array([...y,...s]);return n.decrypt(d,i,g)})}}export{P as DefaultLedgerKeyringProtocol};
|
|
2
2
|
//# sourceMappingURL=DefaultLedgerKeyringProtocol.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/internal/DefaultLedgerKeyringProtocol.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport {\n ByteArrayBuilder,\n ByteArrayParser,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Container } from \"inversify\";\nimport { Maybe } from \"purify-ts\";\n\nimport { type AuthenticateDAReturnType } from \"@api/app-binder/AuthenticateDeviceActionTypes\";\nimport {
|
|
5
|
-
"mappings": "AAIA,OACE,oBAAAA,EACA,mBAAAC,MACK,kCAEP,OAAS,SAAAC,
|
|
6
|
-
"names": ["ByteArrayBuilder", "ByteArrayParser", "Maybe", "
|
|
4
|
+
"sourcesContent": ["import {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport {\n ByteArrayBuilder,\n ByteArrayParser,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Container } from \"inversify\";\nimport { Maybe, Nothing } from \"purify-ts\";\n\nimport { type AuthenticateDAReturnType } from \"@api/app-binder/AuthenticateDeviceActionTypes\";\nimport { KeypairFromBytes } from \"@api/app-binder/KeypairFromBytes\";\nimport {\n type JWT,\n type Keypair,\n type Permissions,\n} from \"@api/app-binder/LKRPTypes\";\nimport { type LedgerKeyringProtocol } from \"@api/LedgerKeyringProtocol\";\nimport { makeContainer } from \"@internal/di\";\nimport { AES_BLOCK_SIZE, CryptoUtils } from \"@internal/utils/crypto\";\n\nimport { type AuthenticateUseCase } from \"./use-cases/authentication/AuthenticateUseCase\";\nimport { useCasesTypes } from \"./use-cases/di/useCasesTypes\";\n\ntype DefaultLedgerKeyringProtocolConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n baseUrl: string;\n};\n\nexport class DefaultLedgerKeyringProtocol implements LedgerKeyringProtocol {\n name: string;\n private _container: Container;\n\n constructor({\n dmk,\n sessionId,\n baseUrl,\n }: DefaultLedgerKeyringProtocolConstructorArgs) {\n this.name = \"Ledger Keyring Protocol\";\n this._container = makeContainer({ dmk, sessionId, baseUrl });\n }\n\n authenticate(\n keypair: Keypair,\n applicationId: number,\n clientName: string,\n permissions: Permissions,\n trustchainId?: string,\n jwt?: JWT,\n ): AuthenticateDAReturnType {\n return this._container\n .get<AuthenticateUseCase>(useCasesTypes.AuthenticateUseCase)\n .execute(\n keypair,\n applicationId,\n clientName,\n permissions,\n trustchainId,\n jwt,\n );\n }\n\n // TODO Better return type for error management instead of exceptions\n encryptData(encryptionKey: Uint8Array, data: Uint8Array): Uint8Array {\n // TODO move implem in a use case\n\n // Derive the shared secret using ECDH with an ephemeral keypair\n const privateKey = new KeypairFromBytes(encryptionKey);\n const ephemeralKeypair = CryptoUtils.randomKeypair();\n const sharedSecret = privateKey\n .ecdh(ephemeralKeypair.pubKeyToU8a())\n .slice(1);\n\n // Key derivation using HMAC-SHA256\n const key = CryptoUtils.hmac(new Uint8Array(), sharedSecret);\n\n // Generate a random IV (nonce)\n const iv = CryptoUtils.randomBytes(16);\n\n // Encrypt data\n const ciphertext = CryptoUtils.encrypt(key, iv, data);\n const encryptedData = ciphertext.subarray(0, -AES_BLOCK_SIZE);\n const tag = ciphertext.subarray(-AES_BLOCK_SIZE);\n\n // Serialize the result\n return new ByteArrayBuilder()\n .add8BitUIntToData(0) // Version of the format\n .addBufferToData(ephemeralKeypair.pubKeyToU8a())\n .addBufferToData(iv)\n .addBufferToData(tag)\n .addBufferToData(encryptedData)\n .build();\n }\n\n decryptData(encryptionKey: Uint8Array, data: Uint8Array): Maybe<Uint8Array> {\n // TODO move implem in a use case\n\n const parser = new ByteArrayParser(data);\n if (parser.extract8BitUInt() !== 0) {\n // Unsupported serialization version\n return Nothing;\n }\n return Maybe.sequence([\n Maybe.fromNullable(parser.extractFieldByLength(33)),\n Maybe.fromNullable(parser.extractFieldByLength(16)),\n Maybe.fromNullable(parser.extractFieldByLength(16)),\n Maybe.fromNullable(\n parser.extractFieldByLength(parser.getUnparsedRemainingLength()),\n ),\n ]).map((parsed) => {\n const ephemeralPublicKey = parsed[0]!;\n const iv = parsed[1]!;\n const tag = parsed[2]!;\n const encryptedData = parsed[3]!;\n\n // Derive the shared secret using ECDH with an ephemeral keypair\n const privateKey = new KeypairFromBytes(encryptionKey);\n const sharedSecret = privateKey.ecdh(ephemeralPublicKey).slice(1);\n\n // Key derivation using HMAC-SHA256\n const key = CryptoUtils.hmac(new Uint8Array(), sharedSecret);\n\n // Decrypt the data\n const ciphertext = new Uint8Array([...encryptedData, ...tag]);\n const cleartext = CryptoUtils.decrypt(key, iv, ciphertext);\n return cleartext;\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "AAIA,OACE,oBAAAA,EACA,mBAAAC,MACK,kCAEP,OAAS,SAAAC,EAAO,WAAAC,MAAe,YAG/B,OAAS,oBAAAC,MAAwB,mCAOjC,OAAS,iBAAAC,MAAqB,eAC9B,OAAS,kBAAAC,EAAgB,eAAAC,MAAmB,yBAG5C,OAAS,iBAAAC,MAAqB,+BAQvB,MAAMC,CAA8D,CACzE,KACQ,WAER,YAAY,CACV,IAAAC,EACA,UAAAC,EACA,QAAAC,CACF,EAAgD,CAC9C,KAAK,KAAO,0BACZ,KAAK,WAAaP,EAAc,CAAE,IAAAK,EAAK,UAAAC,EAAW,QAAAC,CAAQ,CAAC,CAC7D,CAEA,aACEC,EACAC,EACAC,EACAC,EACAC,EACAC,EAC0B,CAC1B,OAAO,KAAK,WACT,IAAyBV,EAAc,mBAAmB,EAC1D,QACCK,EACAC,EACAC,EACAC,EACAC,EACAC,CACF,CACJ,CAGA,YAAYC,EAA2BC,EAA8B,CAInE,MAAMC,EAAa,IAAIjB,EAAiBe,CAAa,EAC/CG,EAAmBf,EAAY,cAAc,EAC7CgB,EAAeF,EAClB,KAAKC,EAAiB,YAAY,CAAC,EACnC,MAAM,CAAC,EAGJE,EAAMjB,EAAY,KAAK,IAAI,WAAcgB,CAAY,EAGrDE,EAAKlB,EAAY,YAAY,EAAE,EAG/BmB,EAAanB,EAAY,QAAQiB,EAAKC,EAAIL,CAAI,EAC9CO,EAAgBD,EAAW,SAAS,EAAG,CAACpB,CAAc,EACtDsB,EAAMF,EAAW,SAAS,CAACpB,CAAc,EAG/C,OAAO,IAAIN,EAAiB,EACzB,kBAAkB,CAAC,EACnB,gBAAgBsB,EAAiB,YAAY,CAAC,EAC9C,gBAAgBG,CAAE,EAClB,gBAAgBG,CAAG,EACnB,gBAAgBD,CAAa,EAC7B,MAAM,CACX,CAEA,YAAYR,EAA2BC,EAAqC,CAG1E,MAAMS,EAAS,IAAI5B,EAAgBmB,CAAI,EACvC,OAAIS,EAAO,gBAAgB,IAAM,EAExB1B,EAEFD,EAAM,SAAS,CACpBA,EAAM,aAAa2B,EAAO,qBAAqB,EAAE,CAAC,EAClD3B,EAAM,aAAa2B,EAAO,qBAAqB,EAAE,CAAC,EAClD3B,EAAM,aAAa2B,EAAO,qBAAqB,EAAE,CAAC,EAClD3B,EAAM,aACJ2B,EAAO,qBAAqBA,EAAO,2BAA2B,CAAC,CACjE,CACF,CAAC,EAAE,IAAKC,GAAW,CACjB,MAAMC,EAAqBD,EAAO,CAAC,EAC7BL,EAAKK,EAAO,CAAC,EACbF,EAAME,EAAO,CAAC,EACdH,EAAgBG,EAAO,CAAC,EAIxBP,EADa,IAAInB,EAAiBe,CAAa,EACrB,KAAKY,CAAkB,EAAE,MAAM,CAAC,EAG1DP,EAAMjB,EAAY,KAAK,IAAI,WAAcgB,CAAY,EAGrDG,EAAa,IAAI,WAAW,CAAC,GAAGC,EAAe,GAAGC,CAAG,CAAC,EAE5D,OADkBrB,EAAY,QAAQiB,EAAKC,EAAIC,CAAU,CAE3D,CAAC,CACH,CACF",
|
|
6
|
+
"names": ["ByteArrayBuilder", "ByteArrayParser", "Maybe", "Nothing", "KeypairFromBytes", "makeContainer", "AES_BLOCK_SIZE", "CryptoUtils", "useCasesTypes", "DefaultLedgerKeyringProtocol", "dmk", "sessionId", "baseUrl", "keypair", "applicationId", "clientName", "permissions", "trustchainId", "jwt", "encryptionKey", "data", "privateKey", "ephemeralKeypair", "sharedSecret", "key", "iv", "ciphertext", "encryptedData", "tag", "parser", "parsed", "ephemeralPublicKey"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var d=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var
|
|
1
|
+
var d=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var c=(r,e,i,t)=>{for(var n=t>1?void 0:t?l(e,i):e,s=r.length-1,m;s>=0;s--)(m=r[s])&&(n=(t?m(e,i,n):m(n))||n);return t&&n&&d(e,i,n),n},o=(r,e)=>(i,t)=>e(i,t,r);import{SendCommandInAppDeviceAction as w,UserInteractionRequired as k}from"@ledgerhq/device-management-kit";import{inject as a,injectable as D}from"inversify";import{externalTypes as u}from"../externalTypes";import{lkrpDatasourceTypes as h}from"../lkrp-datasource/di/lkrpDatasourceTypes";import{GetVersionCommand as A}from"./command/GetVersionCommand";import{AuthenticateDeviceAction as I}from"./device-action/AuthenticateDeviceAction";let p=class{constructor(e,i,t){this.dmk=e;this.sessionId=i;this.lkrpDataSource=t}authenticate(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new I({input:{lkrpDataSource:this.lkrpDataSource,applicationId:e.applicationId,clientName:e.clientName,permissions:e.permissions,keypair:e.keypair,trustchainId:e.trustchainId??null,jwt:e.jwt??null}})})}getVersion(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new w({input:{command:new A,appName:"Ledger Sync",requiredUserInteraction:k.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")}};p=c([D(),o(0,a(u.Dmk)),o(1,a(u.SessionId)),o(2,a(h.LKRPDataSource))],p);export{p 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 { Keypair, Permissions } from \"@api/app-binder/LKRPTypes\";\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 { AuthenticateDeviceAction } from \"./device-action/AuthenticateDeviceAction\";\n\n@injectable()\nexport class LedgerKeyringProtocolBinder {\n constructor(\n @inject(externalTypes.Dmk) private readonly dmk: DeviceManagementKit,\n\n @inject(externalTypes.SessionId)\n private readonly sessionId: DeviceSessionId,\n\n @inject(
|
|
5
|
-
"mappings": "iOAAA,OAGE,gCAAAA,EACA,2BAAAC,MACK,kCACP,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YAKnC,OAAS,iBAAAC,MAAqB,0BAE9B,OAAS,uBAAAC,MAA2B,mDAEpC,OAAS,qBAAAC,MAAyB,8BAClC,OAAS,4BAAAC,MAAgC,2CAGlC,IAAMC,EAAN,KAAkC,CACvC,YAC8CC,EAG3BC,EAGAC,
|
|
6
|
-
"names": ["SendCommandInAppDeviceAction", "UserInteractionRequired", "inject", "injectable", "externalTypes", "lkrpDatasourceTypes", "GetVersionCommand", "AuthenticateDeviceAction", "LedgerKeyringProtocolBinder", "dmk", "sessionId", "
|
|
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 { JWT, Keypair, Permissions } from \"@api/app-binder/LKRPTypes\";\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 { AuthenticateDeviceAction } from \"./device-action/AuthenticateDeviceAction\";\n\n@injectable()\nexport class LedgerKeyringProtocolBinder {\n constructor(\n @inject(externalTypes.Dmk) private readonly dmk: DeviceManagementKit,\n\n @inject(externalTypes.SessionId)\n private readonly sessionId: DeviceSessionId,\n\n @inject(lkrpDatasourceTypes.LKRPDataSource)\n private readonly lkrpDataSource: LKRPDataSource,\n ) {}\n\n authenticate(args: {\n keypair: Keypair;\n applicationId: number;\n clientName: string;\n permissions: Permissions;\n trustchainId?: string;\n jwt?: JWT;\n }): AuthenticateDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new AuthenticateDeviceAction({\n input: {\n lkrpDataSource: this.lkrpDataSource,\n applicationId: args.applicationId,\n clientName: args.clientName,\n permissions: args.permissions,\n keypair: args.keypair,\n trustchainId: args.trustchainId ?? null,\n jwt: args.jwt ?? null,\n },\n }),\n });\n }\n\n getVersion(args: { skipOpenApp: boolean }): GetVersionDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.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
|
+
"mappings": "iOAAA,OAGE,gCAAAA,EACA,2BAAAC,MACK,kCACP,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YAKnC,OAAS,iBAAAC,MAAqB,0BAE9B,OAAS,uBAAAC,MAA2B,mDAEpC,OAAS,qBAAAC,MAAyB,8BAClC,OAAS,4BAAAC,MAAgC,2CAGlC,IAAMC,EAAN,KAAkC,CACvC,YAC8CC,EAG3BC,EAGAC,EACjB,CAP4C,SAAAF,EAG3B,eAAAC,EAGA,oBAAAC,CAChB,CAEH,aAAaC,EAOgB,CAC3B,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAIC,EAAyB,CACzC,MAAO,CACL,eAAgB,KAAK,eACrB,cAAeD,EAAK,cACpB,WAAYA,EAAK,WACjB,YAAaA,EAAK,YAClB,QAASA,EAAK,QACd,aAAcA,EAAK,cAAgB,KACnC,IAAKA,EAAK,KAAO,IACnB,CACF,CAAC,CACH,CAAC,CACH,CAEA,WAAWA,EAAwD,CACjE,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAIE,EAA6B,CAC7C,MAAO,CACL,QAAS,IAAIC,EACb,QAAS,cACT,wBAAyBC,EAAwB,KACjD,YAAaJ,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,EAxEaJ,EAANS,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAc,GAAG,GAExBF,EAAA,EAAAC,EAAOC,EAAc,SAAS,GAG9BF,EAAA,EAAAC,EAAOE,EAAoB,cAAc,IAPjCd",
|
|
6
|
+
"names": ["SendCommandInAppDeviceAction", "UserInteractionRequired", "inject", "injectable", "externalTypes", "lkrpDatasourceTypes", "GetVersionCommand", "AuthenticateDeviceAction", "LedgerKeyringProtocolBinder", "dmk", "sessionId", "lkrpDataSource", "args", "AuthenticateDeviceAction", "SendCommandInAppDeviceAction", "GetVersionCommand", "UserInteractionRequired", "__decorateClass", "injectable", "__decorateParam", "inject", "externalTypes", "lkrpDatasourceTypes"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ApduBuilder as t,ApduParser as d,CommandResultFactory as o,InvalidStatusWordError as m}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as a}from"@ledgerhq/signer-utils";import{Maybe as n}from"purify-ts";import{TPTags as s}from"../../
|
|
1
|
+
import{ApduBuilder as t,ApduParser as d,CommandResultFactory as o,InvalidStatusWordError as m}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as a}from"@ledgerhq/signer-utils";import{Maybe as n}from"purify-ts";import{TPTags as s}from"../../utils/TLVTags";import{LEDGER_SYNC_ERRORS as p,LedgerKeyringProtocolErrorFactory as u}from"./utils/ledgerKeyringProtocolErrors";class f{constructor(e){this.args=e}errorHelper=new a(p,u);getApdu(){const{iv:e,memberTlv:r}=this.args;return new t({cla:224,ins:9,p1:0,p2:0}).add8BitUIntToData(s.IV).add8BitUIntToData(e.length).addBufferToData(e).addBufferToData(r).build()}parseResponse(e){return n.fromNullable(this.errorHelper.getError(e)).orDefaultLazy(()=>new d(e).getUnparsedRemainingLength()!==0?o({error:new m("Unexpected response data for SetTrustedMemberCommand")}):o({data:void 0}))}}export{f as SetTrustedMemberCommand};
|
|
2
2
|
//# sourceMappingURL=SetTrustedMemberCommand.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/command/SetTrustedMemberCommand.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n type SetTrustedMemberCommandArgs,\n type SetTrustedMemberCommandResponse,\n} from \"@api/app-binder/SetTrustedMemberTypes\";\nimport { TPTags } from \"@internal/
|
|
5
|
-
"mappings": "AAAA,OAEE,eAAAA,EACA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAMtB,OAAS,UAAAC,MAAc,
|
|
4
|
+
"sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n type SetTrustedMemberCommandArgs,\n type SetTrustedMemberCommandResponse,\n} from \"@api/app-binder/SetTrustedMemberTypes\";\nimport { TPTags } from \"@internal/utils/TLVTags\";\n\nimport {\n LEDGER_SYNC_ERRORS,\n type LedgerKeyringProtocolErrorCodes,\n LedgerKeyringProtocolErrorFactory,\n} from \"./utils/ledgerKeyringProtocolErrors\";\n\nexport class SetTrustedMemberCommand\n implements\n Command<\n SetTrustedMemberCommandResponse,\n SetTrustedMemberCommandArgs,\n LedgerKeyringProtocolErrorCodes\n >\n{\n private readonly errorHelper = new CommandErrorHelper<\n SetTrustedMemberCommandResponse,\n LedgerKeyringProtocolErrorCodes\n >(LEDGER_SYNC_ERRORS, LedgerKeyringProtocolErrorFactory);\n\n constructor(private readonly args: SetTrustedMemberCommandArgs) {}\n\n getApdu(): Apdu {\n const { iv, memberTlv } = this.args;\n return (\n new ApduBuilder({ cla: 0xe0, ins: 0x09, p1: 0x00, p2: 0x00 })\n // tag for IV\n .add8BitUIntToData(TPTags.IV)\n // IV length\n .add8BitUIntToData(iv.length)\n // IV bytes\n .addBufferToData(iv)\n // TrustedMember bytes\n .addBufferToData(memberTlv)\n .build()\n );\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<\n SetTrustedMemberCommandResponse,\n LedgerKeyringProtocolErrorCodes\n > {\n return Maybe.fromNullable(\n this.errorHelper.getError(apduResponse),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(apduResponse);\n if (parser.getUnparsedRemainingLength() !== 0) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"Unexpected response data for SetTrustedMemberCommand\",\n ),\n });\n }\n return CommandResultFactory({ data: undefined });\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAEE,eAAAA,EACA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAMtB,OAAS,UAAAC,MAAc,0BAEvB,OACE,sBAAAC,EAEA,qCAAAC,MACK,sCAEA,MAAMC,CAOb,CAME,YAA6BC,EAAmC,CAAnC,UAAAA,CAAoC,CALhD,YAAc,IAAIN,EAGjCG,EAAoBC,CAAiC,EAIvD,SAAgB,CACd,KAAM,CAAE,GAAAG,EAAI,UAAAC,CAAU,EAAI,KAAK,KAC/B,OACE,IAAIZ,EAAY,CAAE,IAAK,IAAM,IAAK,EAAM,GAAI,EAAM,GAAI,CAAK,CAAC,EAEzD,kBAAkBM,EAAO,EAAE,EAE3B,kBAAkBK,EAAG,MAAM,EAE3B,gBAAgBA,CAAE,EAElB,gBAAgBC,CAAS,EACzB,MAAM,CAEb,CAEA,cACEC,EAIA,CACA,OAAOR,EAAM,aACX,KAAK,YAAY,SAASQ,CAAY,CACxC,EAAE,cAAc,IACC,IAAIZ,EAAWY,CAAY,EAC/B,2BAA2B,IAAM,EACnCX,EAAqB,CAC1B,MAAO,IAAIC,EACT,sDACF,CACF,CAAC,EAEID,EAAqB,CAAE,KAAM,MAAU,CAAC,CAChD,CACH,CACF",
|
|
6
6
|
"names": ["ApduBuilder", "ApduParser", "CommandResultFactory", "InvalidStatusWordError", "CommandErrorHelper", "Maybe", "TPTags", "LEDGER_SYNC_ERRORS", "LedgerKeyringProtocolErrorFactory", "SetTrustedMemberCommand", "args", "iv", "memberTlv", "apduResponse"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ApduBuilder as
|
|
1
|
+
import{ApduBuilder as d,ApduParser as t,CommandResultFactory as n,InvalidStatusWordError as m}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as s}from"@ledgerhq/signer-utils";import{Maybe as p}from"purify-ts";import{LEDGER_SYNC_ERRORS as i,LedgerKeyringProtocolErrorFactory as l}from"./utils/ledgerKeyringProtocolErrors";class R{constructor(r){this.args=r}errorHelper=new s(i,l);getApdu(){return new d({cla:224,ins:7,p1:0,p2:0}).addBufferToData(this.args.header).build()}parseResponse(r){return p.fromNullable(this.errorHelper.getError(r)).orDefaultLazy(()=>{const e=new t(r),a=e.getUnparsedRemainingLength(),o=e.extractFieldByLength(a);return o?n({data:o}):n({error:new m("No data returned by SignBlockHeaderCommand")})})}}export{R as SignBlockHeaderCommand};
|
|
2
2
|
//# sourceMappingURL=SignBlockHeader.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/command/SignBlockHeader.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n type SignBlockHeaderCommandArgs,\n type SignBlockHeaderCommandResponse,\n} from \"@api/app-binder/SignBlockHeaderCommandTypes\";\
|
|
5
|
-
"mappings": "AAAA,OAEE,eAAAA,EACA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,
|
|
6
|
-
"names": ["ApduBuilder", "ApduParser", "CommandResultFactory", "InvalidStatusWordError", "CommandErrorHelper", "Maybe", "
|
|
4
|
+
"sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n type SignBlockHeaderCommandArgs,\n type SignBlockHeaderCommandResponse,\n} from \"@api/app-binder/SignBlockHeaderCommandTypes\";\n\nimport {\n LEDGER_SYNC_ERRORS,\n type LedgerKeyringProtocolErrorCodes,\n LedgerKeyringProtocolErrorFactory,\n} from \"./utils/ledgerKeyringProtocolErrors\";\n\nexport class SignBlockHeaderCommand\n implements\n Command<\n SignBlockHeaderCommandResponse,\n SignBlockHeaderCommandArgs,\n LedgerKeyringProtocolErrorCodes\n >\n{\n private readonly errorHelper = new CommandErrorHelper<\n SignBlockHeaderCommandResponse,\n LedgerKeyringProtocolErrorCodes\n >(LEDGER_SYNC_ERRORS, LedgerKeyringProtocolErrorFactory);\n\n constructor(private readonly args: SignBlockHeaderCommandArgs) {}\n\n getApdu(): Apdu {\n return new ApduBuilder({\n cla: 0xe0,\n ins: 0x07,\n p1: 0x00,\n p2: 0x00,\n })\n .addBufferToData(this.args.header)\n .build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<\n SignBlockHeaderCommandResponse,\n LedgerKeyringProtocolErrorCodes\n > {\n return Maybe.fromNullable(\n this.errorHelper.getError(apduResponse),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(apduResponse);\n const remaining = parser.getUnparsedRemainingLength();\n const payload = parser.extractFieldByLength(remaining);\n if (!payload) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"No data returned by SignBlockHeaderCommand\",\n ),\n });\n }\n return CommandResultFactory({ data: payload });\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAEE,eAAAA,EACA,cAAAC,EAIA,wBAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAOtB,OACE,sBAAAC,EAEA,qCAAAC,MACK,sCAEA,MAAMC,CAOb,CAME,YAA6BC,EAAkC,CAAlC,UAAAA,CAAmC,CAL/C,YAAc,IAAIL,EAGjCE,EAAoBC,CAAiC,EAIvD,SAAgB,CACd,OAAO,IAAIP,EAAY,CACrB,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,CAAC,EACE,gBAAgB,KAAK,KAAK,MAAM,EAChC,MAAM,CACX,CAEA,cACEU,EAIA,CACA,OAAOL,EAAM,aACX,KAAK,YAAY,SAASK,CAAY,CACxC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAS,IAAIV,EAAWS,CAAY,EACpCE,EAAYD,EAAO,2BAA2B,EAC9CE,EAAUF,EAAO,qBAAqBC,CAAS,EACrD,OAAKC,EAOEX,EAAqB,CAAE,KAAMW,CAAQ,CAAC,EANpCX,EAAqB,CAC1B,MAAO,IAAIC,EACT,4CACF,CACF,CAAC,CAGL,CAAC,CACH,CACF",
|
|
6
|
+
"names": ["ApduBuilder", "ApduParser", "CommandResultFactory", "InvalidStatusWordError", "CommandErrorHelper", "Maybe", "LEDGER_SYNC_ERRORS", "LedgerKeyringProtocolErrorFactory", "SignBlockHeaderCommand", "args", "apduResponse", "parser", "remaining", "payload"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ApduResponse as
|
|
1
|
+
import{ApduResponse as i,isSuccessCommandResult as t}from"@ledgerhq/device-management-kit";import{describe as p,expect as n,it as d}from"vitest";import{SignBlockHeaderCommand as c}from"./SignBlockHeader";const a=Uint8Array.from([240,202,204,26]),m=Uint8Array.from([240,202,204,26]),A=Uint8Array.from([0,m.length,...m]),g=Uint8Array.from([129,m.length,...m]),l=new Uint8Array([...A,...g]);p("SignBlockHeaderCommand",()=>{p("getApdu()",()=>{d("should build the correct APDU for a given header",()=>{const r={header:a},o=new c(r).getApdu(),e=Uint8Array.from([224,7,0,0,a.length,...a]);n(o.getRawApdu()).toEqual(e)})}),p("parseResponse()",()=>{d("should return raw payload on success",()=>{const r={header:a},s=new c(r),o=new i({statusCode:Uint8Array.from([144,0]),data:l}),e=s.parseResponse(o);if(n(t(e)).toBe(!0),t(e)){const u=e.data;n(u).toEqual(l)}}),d("should map SW errors to CommandResult errors",()=>{const r={header:a},s=new c(r),o=new i({statusCode:Uint8Array.from([106,134]),data:new Uint8Array}),e=s.parseResponse(o);n(t(e)).toBe(!1),t(e)||n(e.error.errorCode).toBe("6a86")}),d("should error if no data is returned",()=>{const r={header:a},s=new c(r),o=new i({statusCode:Uint8Array.from([144,0]),data:new Uint8Array}),e=s.parseResponse(o);n(t(e)).toBe(!0),t(e)&&n(e.data).toEqual(new Uint8Array([]))})})});
|
|
2
2
|
//# sourceMappingURL=SignBlockHeader.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/command/SignBlockHeader.test.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n ApduResponse,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { describe, expect, it } from \"vitest\";\n\nimport {\n type SignBlockHeaderCommandArgs,\n type SignBlockHeaderCommandResponse,\n} from \"@api/app-binder/SignBlockHeaderCommandTypes\";\
|
|
5
|
-
"mappings": "AAEA,OACE,gBAAAA,EACA,0BAAAC,MACK,kCACP,OAAS,YAAAC,EAAU,UAAAC,EAAQ,MAAAC,MAAU,
|
|
6
|
-
"names": ["ApduResponse", "isSuccessCommandResult", "describe", "expect", "it", "
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n ApduResponse,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { describe, expect, it } from \"vitest\";\n\nimport {\n type SignBlockHeaderCommandArgs,\n type SignBlockHeaderCommandResponse,\n} from \"@api/app-binder/SignBlockHeaderCommandTypes\";\n\nimport { SignBlockHeaderCommand } from \"./SignBlockHeader\";\n\nconst HEADER_BYTES = Uint8Array.from([0xf0, 0xca, 0xcc, 0x1a]);\nconst TLV_VALUE = Uint8Array.from([0xf0, 0xca, 0xcc, 0x1a]);\nconst IV_TLV = Uint8Array.from([0x00, TLV_VALUE.length, ...TLV_VALUE]);\nconst ISSUER_TLV = Uint8Array.from([0x81, TLV_VALUE.length, ...TLV_VALUE]);\nconst FULL_TLV_PAYLOAD = new Uint8Array([...IV_TLV, ...ISSUER_TLV]);\n\ndescribe(\"SignBlockHeaderCommand\", () => {\n describe(\"getApdu()\", () => {\n it(\"should build the correct APDU for a given header\", () => {\n // given\n const args: SignBlockHeaderCommandArgs = { header: HEADER_BYTES };\n const cmd = new SignBlockHeaderCommand(args);\n\n // when\n const apdu = cmd.getApdu();\n const expected = Uint8Array.from([\n 0xe0,\n 0x07,\n 0x00,\n 0x00,\n HEADER_BYTES.length,\n ...HEADER_BYTES,\n ]);\n\n // then\n expect(apdu.getRawApdu()).toEqual(expected);\n });\n });\n\n describe(\"parseResponse()\", () => {\n it(\"should return raw payload on success\", () => {\n // given\n const args: SignBlockHeaderCommandArgs = { header: HEADER_BYTES };\n const cmd = new SignBlockHeaderCommand(args);\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: FULL_TLV_PAYLOAD,\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(true);\n if (isSuccessCommandResult(result)) {\n const res: SignBlockHeaderCommandResponse = result.data;\n expect(res).toEqual(FULL_TLV_PAYLOAD);\n }\n });\n\n it(\"should map SW errors to CommandResult errors\", () => {\n // given\n const args: SignBlockHeaderCommandArgs = { header: HEADER_BYTES };\n const cmd = new SignBlockHeaderCommand(args);\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x6a, 0x86]),\n data: new Uint8Array(),\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(false);\n if (!isSuccessCommandResult(result)) {\n expect((result.error as any).errorCode).toBe(\"6a86\");\n }\n });\n\n it(\"should error if no data is returned\", () => {\n // given\n const args: SignBlockHeaderCommandArgs = { header: HEADER_BYTES };\n const cmd = new SignBlockHeaderCommand(args);\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array(),\n });\n\n // when\n const result = cmd.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(true);\n if (isSuccessCommandResult(result)) {\n expect(result.data).toEqual(new Uint8Array([]));\n }\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "AAEA,OACE,gBAAAA,EACA,0BAAAC,MACK,kCACP,OAAS,YAAAC,EAAU,UAAAC,EAAQ,MAAAC,MAAU,SAOrC,OAAS,0BAAAC,MAA8B,oBAEvC,MAAMC,EAAe,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAI,CAAC,EACvDC,EAAY,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,EAAI,CAAC,EACpDC,EAAS,WAAW,KAAK,CAAC,EAAMD,EAAU,OAAQ,GAAGA,CAAS,CAAC,EAC/DE,EAAa,WAAW,KAAK,CAAC,IAAMF,EAAU,OAAQ,GAAGA,CAAS,CAAC,EACnEG,EAAmB,IAAI,WAAW,CAAC,GAAGF,EAAQ,GAAGC,CAAU,CAAC,EAElEP,EAAS,yBAA0B,IAAM,CACvCA,EAAS,YAAa,IAAM,CAC1BE,EAAG,mDAAoD,IAAM,CAE3D,MAAMO,EAAmC,CAAE,OAAQL,CAAa,EAI1DM,EAHM,IAAIP,EAAuBM,CAAI,EAG1B,QAAQ,EACnBE,EAAW,WAAW,KAAK,CAC/B,IACA,EACA,EACA,EACAP,EAAa,OACb,GAAGA,CACL,CAAC,EAGDH,EAAOS,EAAK,WAAW,CAAC,EAAE,QAAQC,CAAQ,CAC5C,CAAC,CACH,CAAC,EAEDX,EAAS,kBAAmB,IAAM,CAChCE,EAAG,uCAAwC,IAAM,CAE/C,MAAMO,EAAmC,CAAE,OAAQL,CAAa,EAC1DQ,EAAM,IAAIT,EAAuBM,CAAI,EACrCI,EAAW,IAAIf,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMU,CACR,CAAC,EAGKM,EAASF,EAAI,cAAcC,CAAQ,EAIzC,GADAZ,EAAOF,EAAuBe,CAAM,CAAC,EAAE,KAAK,EAAI,EAC5Cf,EAAuBe,CAAM,EAAG,CAClC,MAAMC,EAAsCD,EAAO,KACnDb,EAAOc,CAAG,EAAE,QAAQP,CAAgB,CACtC,CACF,CAAC,EAEDN,EAAG,+CAAgD,IAAM,CAEvD,MAAMO,EAAmC,CAAE,OAAQL,CAAa,EAC1DQ,EAAM,IAAIT,EAAuBM,CAAI,EACrCI,EAAW,IAAIf,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,GAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKgB,EAASF,EAAI,cAAcC,CAAQ,EAGzCZ,EAAOF,EAAuBe,CAAM,CAAC,EAAE,KAAK,EAAK,EAC5Cf,EAAuBe,CAAM,GAChCb,EAAQa,EAAO,MAAc,SAAS,EAAE,KAAK,MAAM,CAEvD,CAAC,EAEDZ,EAAG,sCAAuC,IAAM,CAE9C,MAAMO,EAAmC,CAAE,OAAQL,CAAa,EAC1DQ,EAAM,IAAIT,EAAuBM,CAAI,EACrCI,EAAW,IAAIf,EAAa,CAChC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,EAGKgB,EAASF,EAAI,cAAcC,CAAQ,EAGzCZ,EAAOF,EAAuBe,CAAM,CAAC,EAAE,KAAK,EAAI,EAC5Cf,EAAuBe,CAAM,GAC/Bb,EAAOa,EAAO,IAAI,EAAE,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,CAElD,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["ApduResponse", "isSuccessCommandResult", "describe", "expect", "it", "SignBlockHeaderCommand", "HEADER_BYTES", "TLV_VALUE", "IV_TLV", "ISSUER_TLV", "FULL_TLV_PAYLOAD", "args", "apdu", "expected", "cmd", "response", "result", "res"]
|
|
7
7
|
}
|