@ledgerhq/device-signer-kit-ethereum 0.0.0-signer-eth-20250122093657 → 0.0.0-try-to-fix-20250429171448
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/README.md +27 -15
- package/lib/cjs/api/SignerEthBuilder.js +1 -1
- package/lib/cjs/api/SignerEthBuilder.js.map +3 -3
- package/lib/cjs/api/SignerEthBuilder.test.js +1 -1
- package/lib/cjs/api/SignerEthBuilder.test.js.map +3 -3
- package/lib/cjs/api/app-binder/GetConfigCommandTypes.js +2 -0
- package/lib/cjs/api/app-binder/GetConfigCommandTypes.js.map +7 -0
- package/lib/cjs/api/app-binder/SignPersonalMessageDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignPersonalMessageDeviceActionTypes.js.map +1 -1
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +3 -3
- package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js.map +3 -3
- package/lib/cjs/api/index.js +1 -1
- package/lib/cjs/api/index.js.map +3 -3
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/internal/DefaultSignerEth.test.js +1 -1
- package/lib/cjs/internal/DefaultSignerEth.test.js.map +2 -2
- package/lib/cjs/internal/address/use-case/GetAddressUseCase.test.js +1 -1
- package/lib/cjs/internal/address/use-case/GetAddressUseCase.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/EthAppBinder.js +1 -1
- package/lib/cjs/internal/app-binder/EthAppBinder.js.map +3 -3
- package/lib/cjs/internal/app-binder/EthAppBinder.test.js +1 -1
- package/lib/cjs/internal/app-binder/EthAppBinder.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/GetAddressCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetAddressCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/StartTransactionCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/StartTransactionCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/utils/ethAppErrors.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/utils/ethAppErrors.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/constant/plugins.js +1 -1
- package/lib/cjs/internal/app-binder/constant/plugins.js.map +2 -2
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +2 -2
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SendEIP712StructImplemTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendEIP712StructImplemTask.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/SendSignPersonalMessageTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendSignPersonalMessageTask.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.test.js.map +2 -2
- package/lib/cjs/internal/message/use-case/SignMessageUseCase.test.js +1 -1
- package/lib/cjs/internal/message/use-case/SignMessageUseCase.test.js.map +2 -2
- package/lib/cjs/internal/shared/utils/ApplicationChecker.js +2 -0
- package/lib/cjs/internal/shared/utils/ApplicationChecker.js.map +7 -0
- package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js +2 -0
- package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js.map +7 -0
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js +1 -1
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js.map +2 -2
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js.map +2 -2
- package/lib/cjs/internal/transaction/use-case/SignTransactionUseCase.test.js +1 -1
- package/lib/cjs/internal/transaction/use-case/SignTransactionUseCase.test.js.map +2 -2
- package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.test.js +1 -1
- package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.test.js.map +2 -2
- package/lib/cjs/package.json +7 -7
- package/lib/esm/api/SignerEthBuilder.js +1 -1
- package/lib/esm/api/SignerEthBuilder.js.map +3 -3
- package/lib/esm/api/SignerEthBuilder.test.js +1 -1
- package/lib/esm/api/SignerEthBuilder.test.js.map +3 -3
- package/lib/esm/api/app-binder/GetConfigCommandTypes.js +1 -0
- package/lib/esm/api/app-binder/GetConfigCommandTypes.js.map +7 -0
- package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js +1 -0
- package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +4 -4
- package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -0
- package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js.map +4 -4
- package/lib/esm/api/index.js +1 -1
- package/lib/esm/api/index.js.map +3 -3
- package/lib/esm/internal/DefaultSignerEth.test.js +1 -1
- package/lib/esm/internal/DefaultSignerEth.test.js.map +2 -2
- package/lib/esm/internal/address/use-case/GetAddressUseCase.test.js +1 -1
- package/lib/esm/internal/address/use-case/GetAddressUseCase.test.js.map +2 -2
- package/lib/esm/internal/app-binder/EthAppBinder.js +1 -1
- package/lib/esm/internal/app-binder/EthAppBinder.js.map +3 -3
- package/lib/esm/internal/app-binder/EthAppBinder.test.js +1 -1
- package/lib/esm/internal/app-binder/EthAppBinder.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/GetAddressCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/GetAddressCommand.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/StartTransactionCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/StartTransactionCommand.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/utils/ethAppErrors.test.js +1 -1
- package/lib/esm/internal/app-binder/command/utils/ethAppErrors.test.js.map +2 -2
- package/lib/esm/internal/app-binder/constant/plugins.js +1 -1
- package/lib/esm/internal/app-binder/constant/plugins.js.map +2 -2
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
- package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js +1 -1
- package/lib/esm/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +2 -2
- package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +1 -1
- package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js +2 -0
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SendEIP712StructImplemTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SendEIP712StructImplemTask.test.js.map +2 -2
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +2 -2
- package/lib/esm/internal/app-binder/task/SendSignPersonalMessageTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SendSignPersonalMessageTask.test.js.map +2 -2
- package/lib/esm/internal/app-binder/task/SendSignTransactionTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SendSignTransactionTask.test.js.map +2 -2
- package/lib/esm/internal/message/use-case/SignMessageUseCase.test.js +1 -1
- package/lib/esm/internal/message/use-case/SignMessageUseCase.test.js.map +2 -2
- package/lib/esm/internal/shared/utils/ApplicationChecker.js +2 -0
- package/lib/esm/internal/shared/utils/ApplicationChecker.js.map +7 -0
- package/lib/esm/internal/shared/utils/ApplicationChecker.test.js +2 -0
- package/lib/esm/internal/shared/utils/ApplicationChecker.test.js.map +7 -0
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js +1 -1
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js.map +2 -2
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js.map +2 -2
- package/lib/esm/internal/transaction/use-case/SignTransactionUseCase.test.js +1 -1
- package/lib/esm/internal/transaction/use-case/SignTransactionUseCase.test.js.map +2 -2
- package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.test.js +1 -1
- package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.test.js.map +2 -2
- package/lib/esm/package.json +7 -7
- package/lib/types/api/SignerEthBuilder.d.ts +4 -2
- package/lib/types/api/SignerEthBuilder.d.ts.map +1 -1
- package/lib/types/api/app-binder/GetConfigCommandTypes.d.ts +7 -0
- package/lib/types/api/app-binder/GetConfigCommandTypes.d.ts.map +1 -0
- package/lib/types/api/app-binder/SignPersonalMessageDeviceActionTypes.d.ts +1 -10
- package/lib/types/api/app-binder/SignPersonalMessageDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +15 -3
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts +14 -1
- package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/index.d.ts +3 -3
- package/lib/types/api/index.d.ts.map +1 -1
- package/lib/types/internal/app-binder/EthAppBinder.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.d.ts +10 -0
- package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideWeb3CheckCommand.d.ts +17 -0
- package/lib/types/internal/app-binder/command/ProvideWeb3CheckCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideWeb3CheckCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/ProvideWeb3CheckCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts +8 -1
- package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/Web3CheckOptInCommand.d.ts +15 -0
- package/lib/types/internal/app-binder/command/Web3CheckOptInCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/Web3CheckOptInCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/Web3CheckOptInCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/constant/plugins.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts +9 -4
- package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts +7 -0
- package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts +2 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts +5 -2
- package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts +10 -5
- package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts +8 -3
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts +30 -0
- package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/GetWeb3CheckTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/GetWeb3CheckTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts +7 -2
- package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts +3 -2
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts +7 -0
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts +3 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts.map +1 -1
- package/lib/types/internal/shared/utils/ApplicationChecker.d.ts +13 -0
- package/lib/types/internal/shared/utils/ApplicationChecker.d.ts.map +1 -0
- package/lib/types/internal/shared/utils/ApplicationChecker.test.d.ts +2 -0
- package/lib/types/internal/shared/utils/ApplicationChecker.test.d.ts.map +1 -0
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +14 -14
- package/lib/cjs/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.js +0 -2
- package/lib/cjs/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.js.map +0 -7
- package/lib/cjs/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.js +0 -2
- package/lib/cjs/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.js.map +0 -7
- package/lib/esm/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.js +0 -2
- package/lib/esm/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.js.map +0 -7
- package/lib/esm/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.js +0 -2
- package/lib/esm/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.js.map +0 -7
- package/lib/types/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.d.ts +0 -18
- package/lib/types/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.d.ts.map +0 -1
- package/lib/types/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.d.ts +0 -2
- package/lib/types/internal/app-binder/device-action/SignPersonalMessage/SignPersonalMessageDeviceAction.test.d.ts.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/internal/app-binder/EthAppBinder.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type DeviceActionState,\n type DeviceManagementKit,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\nimport { DeviceActionStatus } from \"@ledgerhq/device-management-kit\";\nimport { SendCommandInAppDeviceAction } from \"@ledgerhq/device-management-kit\";\nimport { UserInteractionRequired } from \"@ledgerhq/device-management-kit\";\nimport { Transaction } from \"ethers\";\nimport { from } from \"rxjs\";\n\nimport {\n type GetAddressDAError,\n type GetAddressDAIntermediateValue,\n type GetAddressDAOutput,\n} from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport {\n type SignPersonalMessageDAError,\n type SignPersonalMessageDAIntermediateValue,\n type SignPersonalMessageDAOutput,\n} from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nimport {\n type SignTransactionDAError,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAOutput,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport {\n type SignTypedDataDAError,\n type SignTypedDataDAIntermediateValue,\n type SignTypedDataDAOutput,\n} from \"@api/app-binder/SignTypedDataDeviceActionTypes\";\nimport { type Signature } from \"@api/model/Signature\";\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\nimport { type TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\nimport { type TypedDataParserService } from \"@internal/typed-data/service/TypedDataParserService\";\n\nimport { GetAddressCommand } from \"./command/GetAddressCommand\";\nimport { ETHEREUM_PLUGINS } from \"./constant/plugins\";\nimport { EthAppBinder } from \"./EthAppBinder\";\n\ndescribe(\"EthAppBinder\", () => {\n const mockedDmk: DeviceManagementKit = {\n sendCommand: jest.fn(),\n executeDeviceAction: jest.fn(),\n } as unknown as DeviceManagementKit;\n const mockedContextModule: ContextModule = {\n getContext: jest.fn(),\n getContexts: jest.fn(),\n getTypedDataFilters: jest.fn(),\n };\n const mockedMapper: TransactionMapperService = {\n mapTransactionToSubset: jest.fn(),\n } as unknown as TransactionMapperService;\n const mockedParser: TransactionParserService = {\n extractValue: jest.fn(),\n } as unknown as TransactionParserService;\n\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n describe(\"getAddress\", () => {\n it(\"should return the address, publicKey, and chainCode\", (done) => {\n // GIVEN\n const address = \"0xF7C69BedB292Dd3fC2cA4103989B5BD705164c43\";\n const publicKey = \"04e3785ca\";\n const chainCode = undefined;\n\n jest.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: { address, publicKey, chainCode },\n } as DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >,\n ]),\n cancel: jest.fn(),\n });\n\n // WHEN\n const appBinder = new EthAppBinder(\n mockedDmk,\n mockedContextModule,\n mockedMapper,\n mockedParser,\n \"sessionId\",\n );\n const { observable } = appBinder.getAddress({\n derivationPath: \"44'/60'/3'/2/1\",\n });\n\n // THEN\n const states: DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n done(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: { address, publicKey, chainCode },\n },\n ]);\n done();\n } catch (err) {\n done(err);\n }\n },\n });\n });\n\n describe(\"calls of executeDeviceAction with the correct params\", () => {\n const baseParams = {\n derivationPath: \"44'/60'/3'/2/1\",\n returnChainCode: false,\n };\n\n test(\"when checkOnDevice is true: UserInteractionRequired.VerifyAddress\", () => {\n // GIVEN\n const checkOnDevice = true;\n const params = {\n ...baseParams,\n checkOnDevice,\n };\n\n // WHEN\n const appBinder = new EthAppBinder(\n mockedDmk,\n mockedContextModule,\n mockedMapper,\n mockedParser,\n \"sessionId\",\n );\n appBinder.getAddress(params);\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand(params),\n appName: \"Ethereum\",\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n compatibleAppNames: ETHEREUM_PLUGINS,\n },\n }),\n });\n });\n\n test(\"when checkOnDevice is false: UserInteractionRequired.None\", () => {\n // GIVEN\n const checkOnDevice = false;\n const params = {\n ...baseParams,\n checkOnDevice,\n };\n\n // WHEN\n const appBinder = new EthAppBinder(\n mockedDmk,\n mockedContextModule,\n mockedMapper,\n mockedParser,\n \"sessionId\",\n );\n appBinder.getAddress(params);\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand(params),\n appName: \"Ethereum\",\n requiredUserInteraction: UserInteractionRequired.None,\n compatibleAppNames: ETHEREUM_PLUGINS,\n },\n }),\n });\n });\n });\n });\n\n describe(\"signTransaction\", () => {\n it(\"should return the signature\", (done) => {\n // GIVEN\n const signature: Signature = {\n r: `0xDEAD`,\n s: `0xBEEF`,\n v: 0,\n };\n const transaction: Uint8Array = hexaStringToBuffer(\n Transaction.from({\n to: \"0x1234567890123456789012345678901234567890\",\n value: 0n,\n }).unsignedSerialized,\n )!;\n const options = {};\n\n jest.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n } as DeviceActionState<\n SignTypedDataDAOutput,\n SignTypedDataDAError,\n SignTypedDataDAIntermediateValue\n >,\n ]),\n cancel: jest.fn(),\n });\n\n // WHEN\n const appBinder = new EthAppBinder(\n mockedDmk,\n mockedContextModule,\n mockedMapper,\n mockedParser,\n \"sessionId\",\n );\n const { observable } = appBinder.signTransaction({\n derivationPath: \"44'/60'/3'/2/1\",\n transaction,\n options,\n });\n\n // THEN\n const states: DeviceActionState<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n done(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n },\n ]);\n done();\n } catch (err) {\n done(err);\n }\n },\n });\n });\n\n it(\"should return the signature without options\", (done) => {\n // GIVEN\n const signature: Signature = {\n r: `0xDEAD`,\n s: `0xBEEF`,\n v: 0,\n };\n const transaction: Uint8Array = hexaStringToBuffer(\n Transaction.from({\n to: \"0x1234567890123456789012345678901234567890\",\n value: 0n,\n }).unsignedSerialized,\n )!;\n\n jest.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n } as DeviceActionState<\n SignTypedDataDAOutput,\n SignTypedDataDAError,\n SignTypedDataDAIntermediateValue\n >,\n ]),\n cancel: jest.fn(),\n });\n\n // WHEN\n const appBinder = new EthAppBinder(\n mockedDmk,\n mockedContextModule,\n mockedMapper,\n mockedParser,\n \"sessionId\",\n );\n const { observable } = appBinder.signTransaction({\n derivationPath: \"44'/60'/3'/2/1\",\n transaction,\n options: undefined,\n });\n\n // THEN\n const states: DeviceActionState<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n done(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n },\n ]);\n done();\n } catch (err) {\n done(err);\n }\n },\n });\n });\n });\n\n describe(\"signMessage\", () => {\n it(\"should return the signature\", (done) => {\n // GIVEN\n const signature: Signature = {\n r: `0xDEAD`,\n s: `0xBEEF`,\n v: 0,\n };\n const message = \"Hello, World!\";\n\n jest.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n } as DeviceActionState<\n SignPersonalMessageDAOutput,\n SignPersonalMessageDAError,\n SignPersonalMessageDAIntermediateValue\n >,\n ]),\n cancel: jest.fn(),\n });\n\n // WHEN\n const appBinder = new EthAppBinder(\n mockedDmk,\n mockedContextModule,\n mockedMapper,\n mockedParser,\n \"sessionId\",\n );\n const { observable } = appBinder.signPersonalMessage({\n derivationPath: \"44'/60'/3'/2/1\",\n message,\n });\n\n // THEN\n const states: DeviceActionState<\n SignPersonalMessageDAOutput,\n SignPersonalMessageDAError,\n SignPersonalMessageDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n done(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n },\n ]);\n done();\n } catch (err) {\n done(err);\n }\n },\n });\n });\n });\n\n describe(\"signTypedData\", () => {\n it(\"should return the signature\", (done) => {\n // GIVEN\n const signature: Signature = {\n r: `0xDEAD`,\n s: `0xBEEF`,\n v: 0,\n };\n const typedData: TypedData = {\n domain: {},\n types: {},\n primaryType: \"test\",\n message: {},\n };\n const parser: TypedDataParserService = {\n parse: jest.fn(),\n };\n\n jest.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n } as DeviceActionState<\n SignTypedDataDAOutput,\n SignTypedDataDAError,\n SignTypedDataDAIntermediateValue\n >,\n ]),\n cancel: jest.fn(),\n });\n\n // WHEN\n const appBinder = new EthAppBinder(\n mockedDmk,\n mockedContextModule,\n mockedMapper,\n mockedParser,\n \"sessionId\",\n );\n const { observable } = appBinder.signTypedData({\n derivationPath: \"44'/60'/3'/2/1\",\n parser,\n data: typedData,\n });\n\n // THEN\n const states: DeviceActionState<\n SignTypedDataDAOutput,\n SignTypedDataDAError,\n SignTypedDataDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n done(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n },\n ]);\n done();\n } catch (err) {\n done(err);\n }\n },\n });\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "aACA,IAAAA,EAIO,2CACPA,EAAmC,2CACnCA,EAA6C,2CAC7CA,EAAwC,2CACxCC,EAA4B,kBAC5BC,EAAqB,gBA4BrBC,EAAkC,uCAClCC,EAAiC,8BACjCC,EAA6B,0BAE7B,SAAS,eAAgB,IAAM,CAC7B,MAAMC,EAAiC,CACrC,YAAa,
|
|
6
|
-
"names": ["import_device_management_kit", "import_ethers", "import_rxjs", "import_GetAddressCommand", "import_plugins", "import_EthAppBinder", "mockedDmk", "mockedContextModule", "mockedMapper", "mockedParser", "
|
|
4
|
+
"sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type DeviceActionState,\n type DeviceManagementKit,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\nimport { DeviceActionStatus } from \"@ledgerhq/device-management-kit\";\nimport { SendCommandInAppDeviceAction } from \"@ledgerhq/device-management-kit\";\nimport { UserInteractionRequired } from \"@ledgerhq/device-management-kit\";\nimport { Transaction } from \"ethers\";\nimport { from } from \"rxjs\";\n\nimport {\n type GetAddressDAError,\n type GetAddressDAIntermediateValue,\n type GetAddressDAOutput,\n} from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport {\n type SignPersonalMessageDAError,\n type SignPersonalMessageDAIntermediateValue,\n type SignPersonalMessageDAOutput,\n} from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nimport {\n type SignTransactionDAError,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAOutput,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport {\n type SignTypedDataDAError,\n type SignTypedDataDAIntermediateValue,\n type SignTypedDataDAOutput,\n} from \"@api/app-binder/SignTypedDataDeviceActionTypes\";\nimport { type Signature } from \"@api/model/Signature\";\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\nimport { type TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\nimport { type TypedDataParserService } from \"@internal/typed-data/service/TypedDataParserService\";\n\nimport { GetAddressCommand } from \"./command/GetAddressCommand\";\nimport { ETHEREUM_PLUGINS } from \"./constant/plugins\";\nimport { EthAppBinder } from \"./EthAppBinder\";\n\ndescribe(\"EthAppBinder\", () => {\n const mockedDmk: DeviceManagementKit = {\n sendCommand: vi.fn(),\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n const mockedContextModule: ContextModule = {\n getContext: vi.fn(),\n getContexts: vi.fn(),\n getTypedDataFilters: vi.fn(),\n getWeb3Checks: vi.fn(),\n };\n const mockedMapper: TransactionMapperService = {\n mapTransactionToSubset: vi.fn(),\n } as unknown as TransactionMapperService;\n const mockedParser: TransactionParserService = {\n extractValue: vi.fn(),\n } as unknown as TransactionParserService;\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n describe(\"getAddress\", () => {\n it(\"should return the address, publicKey, and chainCode\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const address = \"0xF7C69BedB292Dd3fC2cA4103989B5BD705164c43\";\n const publicKey = \"04e3785ca\";\n const chainCode = undefined;\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: { address, publicKey, chainCode },\n } as DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const appBinder = new EthAppBinder(\n mockedDmk,\n mockedContextModule,\n mockedMapper,\n mockedParser,\n \"sessionId\",\n );\n const { observable } = appBinder.getAddress({\n derivationPath: \"44'/60'/3'/2/1\",\n });\n\n // THEN\n const states: DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n reject(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: { address, publicKey, chainCode },\n },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls of executeDeviceAction with the correct params\", () => {\n const baseParams = {\n derivationPath: \"44'/60'/3'/2/1\",\n returnChainCode: false,\n };\n\n test(\"when checkOnDevice is true: UserInteractionRequired.VerifyAddress\", () => {\n // GIVEN\n const checkOnDevice = true;\n const params = {\n ...baseParams,\n checkOnDevice,\n };\n\n // WHEN\n const appBinder = new EthAppBinder(\n mockedDmk,\n mockedContextModule,\n mockedMapper,\n mockedParser,\n \"sessionId\",\n );\n appBinder.getAddress(params);\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand(params),\n appName: \"Ethereum\",\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n compatibleAppNames: ETHEREUM_PLUGINS,\n },\n }),\n });\n });\n\n test(\"when checkOnDevice is false: UserInteractionRequired.None\", () => {\n // GIVEN\n const checkOnDevice = false;\n const params = {\n ...baseParams,\n checkOnDevice,\n };\n\n // WHEN\n const appBinder = new EthAppBinder(\n mockedDmk,\n mockedContextModule,\n mockedMapper,\n mockedParser,\n \"sessionId\",\n );\n appBinder.getAddress(params);\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand(params),\n appName: \"Ethereum\",\n requiredUserInteraction: UserInteractionRequired.None,\n compatibleAppNames: ETHEREUM_PLUGINS,\n },\n }),\n });\n });\n });\n });\n\n describe(\"signTransaction\", () => {\n it(\"should return the signature\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const signature: Signature = {\n r: `0xDEAD`,\n s: `0xBEEF`,\n v: 0,\n };\n const transaction: Uint8Array = hexaStringToBuffer(\n Transaction.from({\n to: \"0x1234567890123456789012345678901234567890\",\n value: 0n,\n }).unsignedSerialized,\n )!;\n const options = {};\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n } as DeviceActionState<\n SignTypedDataDAOutput,\n SignTypedDataDAError,\n SignTypedDataDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const appBinder = new EthAppBinder(\n mockedDmk,\n mockedContextModule,\n mockedMapper,\n mockedParser,\n \"sessionId\",\n );\n const { observable } = appBinder.signTransaction({\n derivationPath: \"44'/60'/3'/2/1\",\n transaction,\n options,\n });\n\n // THEN\n const states: DeviceActionState<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n reject(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n it(\"should return the signature without options\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const signature: Signature = {\n r: `0xDEAD`,\n s: `0xBEEF`,\n v: 0,\n };\n const transaction: Uint8Array = hexaStringToBuffer(\n Transaction.from({\n to: \"0x1234567890123456789012345678901234567890\",\n value: 0n,\n }).unsignedSerialized,\n )!;\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n } as DeviceActionState<\n SignTypedDataDAOutput,\n SignTypedDataDAError,\n SignTypedDataDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const appBinder = new EthAppBinder(\n mockedDmk,\n mockedContextModule,\n mockedMapper,\n mockedParser,\n \"sessionId\",\n );\n const { observable } = appBinder.signTransaction({\n derivationPath: \"44'/60'/3'/2/1\",\n transaction,\n options: undefined,\n });\n\n // THEN\n const states: DeviceActionState<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n reject(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n });\n\n describe(\"signMessage\", () => {\n it(\"should return the signature\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const signature: Signature = {\n r: `0xDEAD`,\n s: `0xBEEF`,\n v: 0,\n };\n const message = \"Hello, World!\";\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n } as DeviceActionState<\n SignPersonalMessageDAOutput,\n SignPersonalMessageDAError,\n SignPersonalMessageDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const appBinder = new EthAppBinder(\n mockedDmk,\n mockedContextModule,\n mockedMapper,\n mockedParser,\n \"sessionId\",\n );\n const { observable } = appBinder.signPersonalMessage({\n derivationPath: \"44'/60'/3'/2/1\",\n message,\n });\n\n // THEN\n const states: DeviceActionState<\n SignPersonalMessageDAOutput,\n SignPersonalMessageDAError,\n SignPersonalMessageDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n reject(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n });\n\n describe(\"signTypedData\", () => {\n it(\"should return the signature\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const signature: Signature = {\n r: `0xDEAD`,\n s: `0xBEEF`,\n v: 0,\n };\n const typedData: TypedData = {\n domain: {},\n types: {},\n primaryType: \"test\",\n message: {},\n };\n const parser: TypedDataParserService = {\n parse: vi.fn(),\n };\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n } as DeviceActionState<\n SignTypedDataDAOutput,\n SignTypedDataDAError,\n SignTypedDataDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const appBinder = new EthAppBinder(\n mockedDmk,\n mockedContextModule,\n mockedMapper,\n mockedParser,\n \"sessionId\",\n );\n const { observable } = appBinder.signTypedData({\n derivationPath: \"44'/60'/3'/2/1\",\n parser,\n data: typedData,\n });\n\n // THEN\n const states: DeviceActionState<\n SignTypedDataDAOutput,\n SignTypedDataDAError,\n SignTypedDataDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n reject(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_device_management_kit", "import_ethers", "import_rxjs", "import_GetAddressCommand", "import_plugins", "import_EthAppBinder", "mockedDmk", "mockedContextModule", "mockedMapper", "mockedParser", "resolve", "reject", "address", "publicKey", "appBinder", "observable", "states", "state", "err", "baseParams", "params", "signature", "transaction", "options", "message", "typedData", "parser"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var r=require("@ledgerhq/device-management-kit"),a=require("./GetAddressCommand");const i=Uint8Array.from([224,2,0,0,29,5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]),c=Uint8Array.from([224,2,1,0,29,5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]),u=Uint8Array.from([224,2,0,1,29,5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]),p=Uint8Array.from([224,2,1,1,29,5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]),f=Uint8Array.from([224,2,0,0,29,5,128,0,0,44,128,0,0,60,128,0,0,3,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,1]),l=Uint8Array.from([65,4,227,120,92,166,165,170,116,140,98,94,61,221,214,217,123,89,178,111,216,21,47,181,46,178,157,36,64,79,1,11,228,247,37,195,114,94,120,190,217,83,240,116,119,141,113,121,116,222,33,243,71,11,115,87,54,235,61,86,116,122,182,208,115,167,40,70,55,67,54,57,66,101,100,66,50,57,50,68,100,51,102,67,50,99,65,52,49,48,51,57,56,57,66,53,66,68,55,48,53,49,54,52,99,52,51]),A=new r.ApduResponse({statusCode:Uint8Array.from([144,0]),data:l}),o=Uint8Array.from([65,4,227,120,92,166,165,170,116,140,98,94,61,221,214,217,123,89,178,111,216,21,47,181,46,178,157,36,64,79,1,11,228,247,37,195,114,94,120,190,217,83,240,116,119,141,113,121,116,222,33,243,71,11,115,87,54,235,61,86,116,122,182,208,115,167,40,70,55,67,54,57,66,101,100,66,50,57,50,68,100,51,102,67,50,99,65,52,49,48,51,57,56,57,66,53,66,68,55,48,53,49,54,52,99,52,51,66,62,101,31,43,22,180,24,109,94,172,22,124,196,154,173,228,169,126,179,177,55,222,54,51,71,153,104,77,12,113,74]),n=new r.ApduResponse({statusCode:Uint8Array.from([144,0]),data:o});describe("GetAddressCommand",()=>{let t;const s={derivationPath:"44'/60'/0'/0/0",checkOnDevice:!1,returnChainCode:!1};beforeEach(()=>{t=new a.GetAddressCommand(s)}),describe("getApdu",()=>{it("should return the GetAddress apdu with default args",()=>{const x=t.getApdu();expect(x.getRawApdu()).toStrictEqual(i)}),it("should return the GetAddress apdu with checkOnDevice set to true",()=>{t=new a.GetAddressCommand({...s,checkOnDevice:!0});const x=t.getApdu();expect(x.getRawApdu()).toStrictEqual(c)}),it("should return the GetAddress apdu with returnChainCode set to true",()=>{t=new a.GetAddressCommand({...s,returnChainCode:!0});const x=t.getApdu();expect(x.getRawApdu()).toStrictEqual(u)}),it("should return the GetAddress apdu with checkOnDevice and returnChainCode set to true",()=>{t=new a.GetAddressCommand({...s,checkOnDevice:!0,returnChainCode:!0});const x=t.getApdu();expect(x.getRawApdu()).toStrictEqual(p)}),it("should return the GetAddress apdu with a custom derivation path",()=>{const x="44'/60'/3'/2/1";t=new a.GetAddressCommand({...s,derivationPath:x});const e=t.getApdu();expect(e.getRawApdu()).toStrictEqual(f)})}),describe("parseResponse",()=>{it("should parse the response",()=>{const x=t.parseResponse(A);expect(x).toStrictEqual((0,r.CommandResultFactory)({data:{publicKey:"04e3785ca6a5aa748c625e3dddd6d97b59b26fd8152fb52eb29d24404f010be4f725c3725e78bed953f074778d717974de21f3470b735736eb3d56747ab6d073a7",address:"0xF7C69BedB292Dd3fC2cA4103989B5BD705164c43",chainCode:void 0}}))}),it("should parse the response with chainCode",()=>{t.args.returnChainCode=!0;const x=t.parseResponse(n);expect(x).toStrictEqual((0,r.CommandResultFactory)({data:{publicKey:"04e3785ca6a5aa748c625e3dddd6d97b59b26fd8152fb52eb29d24404f010be4f725c3725e78bed953f074778d717974de21f3470b735736eb3d56747ab6d073a7",address:"0xF7C69BedB292Dd3fC2cA4103989B5BD705164c43",chainCode:"423e651f2b16b4186d5eac167cc49aade4a97eb3b137de36334799684d0c714a"}}))}),it("should not return chainCode if it is not requested",()=>{t.args.returnChainCode=!1;const x=t.parseResponse(n);expect(x).toStrictEqual((0,r.CommandResultFactory)({data:{publicKey:"04e3785ca6a5aa748c625e3dddd6d97b59b26fd8152fb52eb29d24404f010be4f725c3725e78bed953f074778d717974de21f3470b735736eb3d56747ab6d073a7",address:"0xF7C69BedB292Dd3fC2cA4103989B5BD705164c43",chainCode:void 0}}))}),describe("should return an error",()=>{it("when the response is not successfull",()=>{const x=new r.ApduResponse({statusCode:Uint8Array.from([109,0]),data:new Uint8Array(0)}),e=t.parseResponse(x);expect((0,r.isSuccessCommandResult)(e)).toBe(!1)}),it("when publicKeyLength is invalid",()=>{const x={data:Uint8Array.from([]),statusCode:Uint8Array.from([144,0])},e=t.parseResponse(x);(0,r.isSuccessCommandResult)(e)?fail("Expected an error"):(expect(e.error).toBeInstanceOf(r.InvalidStatusWordError),expect(e.error.originalError).toEqual(new Error("Public key length is missing")))}),it("when publicKey is invalid",()=>{const x={data:Uint8Array.from([1]),statusCode:Uint8Array.from([144,0])},e=t.parseResponse(x);(0,r.isSuccessCommandResult)(e)?fail("Expected an error"):(expect(e.error).toBeInstanceOf(r.InvalidStatusWordError),expect(e.error.originalError).toEqual(new Error("Public key is missing")))}),it("when addressLength is invalid",()=>{const x={data:Uint8Array.from([32,...Array(32).fill(2)]),statusCode:Uint8Array.from([144,0])},e=t.parseResponse(x);(0,r.isSuccessCommandResult)(e)?fail("Expected an error"):(expect(e.error).toBeInstanceOf(r.InvalidStatusWordError),expect(e.error.originalError).toEqual(new Error("Ethereum address length is missing")))}),it("when address is missing",()=>{const x={data:Uint8Array.from([32,...Array(32).fill(2),1]),statusCode:Uint8Array.from([144,0])},e=t.parseResponse(x);(0,r.isSuccessCommandResult)(e)?fail("Expected an error"):(expect(e.error).toBeInstanceOf(r.InvalidStatusWordError),expect(e.error.originalError).toEqual(new Error("Ethereum address is missing")))}),it("when the address is invalid",()=>{const x={data:Uint8Array.from([32,...Array(32).fill(2),1,2]),statusCode:Uint8Array.from([144,0])},e=t.parseResponse(x);(0,r.isSuccessCommandResult)(e)?fail("Expected an error"):(expect(e.error).toBeInstanceOf(r.InvalidStatusWordError),expect(e.error.originalError).toEqual(new Error("Invalid Ethereum address")))}),it("when chainCode is invalid",()=>{const x={data:o.slice(0,-1),statusCode:Uint8Array.from([144,0])},d=new a.GetAddressCommand({...s,returnChainCode:!0}).parseResponse(x);(0,r.isSuccessCommandResult)(d)?fail("Expected an error"):(expect(d.error).toBeInstanceOf(r.InvalidStatusWordError),expect(d.error.originalError).toEqual(new Error("Invalid Chaincode")))})})})});
|
|
1
|
+
"use strict";var r=require("@ledgerhq/device-management-kit"),a=require("./GetAddressCommand");const i=Uint8Array.from([224,2,0,0,29,5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]),c=Uint8Array.from([224,2,1,0,29,5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]),u=Uint8Array.from([224,2,0,1,29,5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]),p=Uint8Array.from([224,2,1,1,29,5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]),f=Uint8Array.from([224,2,0,0,29,5,128,0,0,44,128,0,0,60,128,0,0,3,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,1]),l=Uint8Array.from([65,4,227,120,92,166,165,170,116,140,98,94,61,221,214,217,123,89,178,111,216,21,47,181,46,178,157,36,64,79,1,11,228,247,37,195,114,94,120,190,217,83,240,116,119,141,113,121,116,222,33,243,71,11,115,87,54,235,61,86,116,122,182,208,115,167,40,70,55,67,54,57,66,101,100,66,50,57,50,68,100,51,102,67,50,99,65,52,49,48,51,57,56,57,66,53,66,68,55,48,53,49,54,52,99,52,51]),A=new r.ApduResponse({statusCode:Uint8Array.from([144,0]),data:l}),o=Uint8Array.from([65,4,227,120,92,166,165,170,116,140,98,94,61,221,214,217,123,89,178,111,216,21,47,181,46,178,157,36,64,79,1,11,228,247,37,195,114,94,120,190,217,83,240,116,119,141,113,121,116,222,33,243,71,11,115,87,54,235,61,86,116,122,182,208,115,167,40,70,55,67,54,57,66,101,100,66,50,57,50,68,100,51,102,67,50,99,65,52,49,48,51,57,56,57,66,53,66,68,55,48,53,49,54,52,99,52,51,66,62,101,31,43,22,180,24,109,94,172,22,124,196,154,173,228,169,126,179,177,55,222,54,51,71,153,104,77,12,113,74]),n=new r.ApduResponse({statusCode:Uint8Array.from([144,0]),data:o});describe("GetAddressCommand",()=>{let t;const s={derivationPath:"44'/60'/0'/0/0",checkOnDevice:!1,returnChainCode:!1};beforeEach(()=>{t=new a.GetAddressCommand(s)}),describe("getApdu",()=>{it("should return the GetAddress apdu with default args",()=>{const x=t.getApdu();expect(x.getRawApdu()).toStrictEqual(i)}),it("should return the GetAddress apdu with checkOnDevice set to true",()=>{t=new a.GetAddressCommand({...s,checkOnDevice:!0});const x=t.getApdu();expect(x.getRawApdu()).toStrictEqual(c)}),it("should return the GetAddress apdu with returnChainCode set to true",()=>{t=new a.GetAddressCommand({...s,returnChainCode:!0});const x=t.getApdu();expect(x.getRawApdu()).toStrictEqual(u)}),it("should return the GetAddress apdu with checkOnDevice and returnChainCode set to true",()=>{t=new a.GetAddressCommand({...s,checkOnDevice:!0,returnChainCode:!0});const x=t.getApdu();expect(x.getRawApdu()).toStrictEqual(p)}),it("should return the GetAddress apdu with a custom derivation path",()=>{const x="44'/60'/3'/2/1";t=new a.GetAddressCommand({...s,derivationPath:x});const e=t.getApdu();expect(e.getRawApdu()).toStrictEqual(f)})}),describe("parseResponse",()=>{it("should parse the response",()=>{const x=t.parseResponse(A);expect(x).toStrictEqual((0,r.CommandResultFactory)({data:{publicKey:"04e3785ca6a5aa748c625e3dddd6d97b59b26fd8152fb52eb29d24404f010be4f725c3725e78bed953f074778d717974de21f3470b735736eb3d56747ab6d073a7",address:"0xF7C69BedB292Dd3fC2cA4103989B5BD705164c43",chainCode:void 0}}))}),it("should parse the response with chainCode",()=>{t.args.returnChainCode=!0;const x=t.parseResponse(n);expect(x).toStrictEqual((0,r.CommandResultFactory)({data:{publicKey:"04e3785ca6a5aa748c625e3dddd6d97b59b26fd8152fb52eb29d24404f010be4f725c3725e78bed953f074778d717974de21f3470b735736eb3d56747ab6d073a7",address:"0xF7C69BedB292Dd3fC2cA4103989B5BD705164c43",chainCode:"423e651f2b16b4186d5eac167cc49aade4a97eb3b137de36334799684d0c714a"}}))}),it("should not return chainCode if it is not requested",()=>{t.args.returnChainCode=!1;const x=t.parseResponse(n);expect(x).toStrictEqual((0,r.CommandResultFactory)({data:{publicKey:"04e3785ca6a5aa748c625e3dddd6d97b59b26fd8152fb52eb29d24404f010be4f725c3725e78bed953f074778d717974de21f3470b735736eb3d56747ab6d073a7",address:"0xF7C69BedB292Dd3fC2cA4103989B5BD705164c43",chainCode:void 0}}))}),describe("should return an error",()=>{it("when the response is not successfull",()=>{const x=new r.ApduResponse({statusCode:Uint8Array.from([109,0]),data:new Uint8Array(0)}),e=t.parseResponse(x);expect((0,r.isSuccessCommandResult)(e)).toBe(!1)}),it("when publicKeyLength is invalid",()=>{const x={data:Uint8Array.from([]),statusCode:Uint8Array.from([144,0])},e=t.parseResponse(x);(0,r.isSuccessCommandResult)(e)?assert.fail("Expected an error"):(expect(e.error).toBeInstanceOf(r.InvalidStatusWordError),expect(e.error.originalError).toEqual(new Error("Public key length is missing")))}),it("when publicKey is invalid",()=>{const x={data:Uint8Array.from([1]),statusCode:Uint8Array.from([144,0])},e=t.parseResponse(x);(0,r.isSuccessCommandResult)(e)?assert.fail("Expected an error"):(expect(e.error).toBeInstanceOf(r.InvalidStatusWordError),expect(e.error.originalError).toEqual(new Error("Public key is missing")))}),it("when addressLength is invalid",()=>{const x={data:Uint8Array.from([32,...Array(32).fill(2)]),statusCode:Uint8Array.from([144,0])},e=t.parseResponse(x);(0,r.isSuccessCommandResult)(e)?assert.fail("Expected an error"):(expect(e.error).toBeInstanceOf(r.InvalidStatusWordError),expect(e.error.originalError).toEqual(new Error("Ethereum address length is missing")))}),it("when address is missing",()=>{const x={data:Uint8Array.from([32,...Array(32).fill(2),1]),statusCode:Uint8Array.from([144,0])},e=t.parseResponse(x);(0,r.isSuccessCommandResult)(e)?assert.fail("Expected an error"):(expect(e.error).toBeInstanceOf(r.InvalidStatusWordError),expect(e.error.originalError).toEqual(new Error("Ethereum address is missing")))}),it("when the address is invalid",()=>{const x={data:Uint8Array.from([32,...Array(32).fill(2),1,2]),statusCode:Uint8Array.from([144,0])},e=t.parseResponse(x);(0,r.isSuccessCommandResult)(e)?assert.fail("Expected an error"):(expect(e.error).toBeInstanceOf(r.InvalidStatusWordError),expect(e.error.originalError).toEqual(new Error("Invalid Ethereum address")))}),it("when chainCode is invalid",()=>{const x={data:o.slice(0,-1),statusCode:Uint8Array.from([144,0])},d=new a.GetAddressCommand({...s,returnChainCode:!0}).parseResponse(x);(0,r.isSuccessCommandResult)(d)?assert.fail("Expected an error"):(expect(d.error).toBeInstanceOf(r.InvalidStatusWordError),expect(d.error.originalError).toEqual(new Error("Invalid Chaincode")))})})})});
|
|
2
2
|
//# sourceMappingURL=GetAddressCommand.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/command/GetAddressCommand.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { GetAddressCommand } from \"./GetAddressCommand\";\n\nconst GET_ADDRESS_APDU = Uint8Array.from([\n 0xe0, 0x02, 0x00, 0x00, 0x1d, 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00,\n 0x3c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,\n]);\n\nconst GET_ADDRESS_APDU_WITH_CHECK_ON_DEVICE = Uint8Array.from([\n 0xe0, 0x02, 0x01, 0x00, 0x1d, 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00,\n 0x3c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,\n]);\n\nconst GET_ADDRESS_APDU_WITH_RETURN_CHAIN_CODE = Uint8Array.from([\n 0xe0, 0x02, 0x00, 0x01, 0x1d, 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00,\n 0x3c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,\n]);\n\nconst GET_ADDRESS_APDU_WITH_CHECK_ON_DEVICE_WITH_RETURN_CHAIN_CODE =\n Uint8Array.from([\n 0xe0, 0x02, 0x01, 0x01, 0x1d, 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00,\n 0x00, 0x3c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,\n ]);\n\nconst GET_ADDRESS_APDU_WITH_CUSTOM_DERIVATION_PATH = Uint8Array.from([\n 0xe0, 0x02, 0x00, 0x00, 0x1d, 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00,\n 0x3c, 0x80, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,\n]);\n\nconst LNX_RESPONSE_DATA_GOOD = Uint8Array.from([\n 0x41, 0x04, 0xe3, 0x78, 0x5c, 0xa6, 0xa5, 0xaa, 0x74, 0x8c, 0x62, 0x5e, 0x3d,\n 0xdd, 0xd6, 0xd9, 0x7b, 0x59, 0xb2, 0x6f, 0xd8, 0x15, 0x2f, 0xb5, 0x2e, 0xb2,\n 0x9d, 0x24, 0x40, 0x4f, 0x01, 0x0b, 0xe4, 0xf7, 0x25, 0xc3, 0x72, 0x5e, 0x78,\n 0xbe, 0xd9, 0x53, 0xf0, 0x74, 0x77, 0x8d, 0x71, 0x79, 0x74, 0xde, 0x21, 0xf3,\n 0x47, 0x0b, 0x73, 0x57, 0x36, 0xeb, 0x3d, 0x56, 0x74, 0x7a, 0xb6, 0xd0, 0x73,\n 0xa7, 0x28, 0x46, 0x37, 0x43, 0x36, 0x39, 0x42, 0x65, 0x64, 0x42, 0x32, 0x39,\n 0x32, 0x44, 0x64, 0x33, 0x66, 0x43, 0x32, 0x63, 0x41, 0x34, 0x31, 0x30, 0x33,\n 0x39, 0x38, 0x39, 0x42, 0x35, 0x42, 0x44, 0x37, 0x30, 0x35, 0x31, 0x36, 0x34,\n 0x63, 0x34, 0x33,\n]);\n\nconst LNX_RESPONSE_GOOD = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: LNX_RESPONSE_DATA_GOOD,\n});\n\nconst LNX_RESPONSE_DATA_GOOD_WITH_CHAIN_CODE = Uint8Array.from([\n 0x41, 0x4, 0xe3, 0x78, 0x5c, 0xa6, 0xa5, 0xaa, 0x74, 0x8c, 0x62, 0x5e, 0x3d,\n 0xdd, 0xd6, 0xd9, 0x7b, 0x59, 0xb2, 0x6f, 0xd8, 0x15, 0x2f, 0xb5, 0x2e, 0xb2,\n 0x9d, 0x24, 0x40, 0x4f, 0x1, 0xb, 0xe4, 0xf7, 0x25, 0xc3, 0x72, 0x5e, 0x78,\n 0xbe, 0xd9, 0x53, 0xf0, 0x74, 0x77, 0x8d, 0x71, 0x79, 0x74, 0xde, 0x21, 0xf3,\n 0x47, 0xb, 0x73, 0x57, 0x36, 0xeb, 0x3d, 0x56, 0x74, 0x7a, 0xb6, 0xd0, 0x73,\n 0xa7, 0x28, 0x46, 0x37, 0x43, 0x36, 0x39, 0x42, 0x65, 0x64, 0x42, 0x32, 0x39,\n 0x32, 0x44, 0x64, 0x33, 0x66, 0x43, 0x32, 0x63, 0x41, 0x34, 0x31, 0x30, 0x33,\n 0x39, 0x38, 0x39, 0x42, 0x35, 0x42, 0x44, 0x37, 0x30, 0x35, 0x31, 0x36, 0x34,\n 0x63, 0x34, 0x33, 0x42, 0x3e, 0x65, 0x1f, 0x2b, 0x16, 0xb4, 0x18, 0x6d, 0x5e,\n 0xac, 0x16, 0x7c, 0xc4, 0x9a, 0xad, 0xe4, 0xa9, 0x7e, 0xb3, 0xb1, 0x37, 0xde,\n 0x36, 0x33, 0x47, 0x99, 0x68, 0x4d, 0xc, 0x71, 0x4a,\n]);\n\nconst LNX_RESPONSE_GOOD_WITH_CHAIN_CODE = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: LNX_RESPONSE_DATA_GOOD_WITH_CHAIN_CODE,\n});\n\ndescribe(\"GetAddressCommand\", () => {\n let command: GetAddressCommand;\n const defaultArgs = {\n derivationPath: \"44'/60'/0'/0/0\",\n checkOnDevice: false,\n returnChainCode: false,\n };\n\n beforeEach(() => {\n command = new GetAddressCommand(defaultArgs);\n });\n\n describe(\"getApdu\", () => {\n it(\"should return the GetAddress apdu with default args\", () => {\n const apdu = command.getApdu();\n expect(apdu.getRawApdu()).toStrictEqual(GET_ADDRESS_APDU);\n });\n\n it(\"should return the GetAddress apdu with checkOnDevice set to true\", () => {\n command = new GetAddressCommand({ ...defaultArgs, checkOnDevice: true });\n const apdu = command.getApdu();\n expect(apdu.getRawApdu()).toStrictEqual(\n GET_ADDRESS_APDU_WITH_CHECK_ON_DEVICE,\n );\n });\n\n it(\"should return the GetAddress apdu with returnChainCode set to true\", () => {\n command = new GetAddressCommand({\n ...defaultArgs,\n returnChainCode: true,\n });\n const apdu = command.getApdu();\n expect(apdu.getRawApdu()).toStrictEqual(\n GET_ADDRESS_APDU_WITH_RETURN_CHAIN_CODE,\n );\n });\n\n it(\"should return the GetAddress apdu with checkOnDevice and returnChainCode set to true\", () => {\n command = new GetAddressCommand({\n ...defaultArgs,\n checkOnDevice: true,\n returnChainCode: true,\n });\n const apdu = command.getApdu();\n expect(apdu.getRawApdu()).toStrictEqual(\n GET_ADDRESS_APDU_WITH_CHECK_ON_DEVICE_WITH_RETURN_CHAIN_CODE,\n );\n });\n\n it(\"should return the GetAddress apdu with a custom derivation path\", () => {\n const customDerivationPath = \"44'/60'/3'/2/1\";\n command = new GetAddressCommand({\n ...defaultArgs,\n derivationPath: customDerivationPath,\n });\n const apdu = command.getApdu();\n expect(apdu.getRawApdu()).toStrictEqual(\n GET_ADDRESS_APDU_WITH_CUSTOM_DERIVATION_PATH,\n );\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should parse the response\", () => {\n const parsed = command.parseResponse(LNX_RESPONSE_GOOD);\n expect(parsed).toStrictEqual(\n CommandResultFactory({\n data: {\n publicKey:\n \"04e3785ca6a5aa748c625e3dddd6d97b59b26fd8152fb52eb29d24404f010be4f725c3725e78bed953f074778d717974de21f3470b735736eb3d56747ab6d073a7\",\n address: \"0xF7C69BedB292Dd3fC2cA4103989B5BD705164c43\",\n chainCode: undefined,\n },\n }),\n );\n });\n\n it(\"should parse the response with chainCode\", () => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n (command as any)[\"args\"].returnChainCode = true;\n const parsed = command.parseResponse(LNX_RESPONSE_GOOD_WITH_CHAIN_CODE);\n expect(parsed).toStrictEqual(\n CommandResultFactory({\n data: {\n publicKey:\n \"04e3785ca6a5aa748c625e3dddd6d97b59b26fd8152fb52eb29d24404f010be4f725c3725e78bed953f074778d717974de21f3470b735736eb3d56747ab6d073a7\",\n address: \"0xF7C69BedB292Dd3fC2cA4103989B5BD705164c43\",\n chainCode:\n \"423e651f2b16b4186d5eac167cc49aade4a97eb3b137de36334799684d0c714a\",\n },\n }),\n );\n });\n\n it(\"should not return chainCode if it is not requested\", () => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n (command as any)[\"args\"].returnChainCode = false;\n const parsed = command.parseResponse(LNX_RESPONSE_GOOD_WITH_CHAIN_CODE);\n expect(parsed).toStrictEqual(\n CommandResultFactory({\n data: {\n publicKey:\n \"04e3785ca6a5aa748c625e3dddd6d97b59b26fd8152fb52eb29d24404f010be4f725c3725e78bed953f074778d717974de21f3470b735736eb3d56747ab6d073a7\",\n address: \"0xF7C69BedB292Dd3fC2cA4103989B5BD705164c43\",\n chainCode: undefined,\n },\n }),\n );\n });\n\n describe(\"should return an error\", () => {\n it(\"when the response is not successfull\", () => {\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x6d, 0x00]),\n data: new Uint8Array(0),\n });\n const result = command.parseResponse(response);\n expect(isSuccessCommandResult(result)).toBe(false);\n });\n\n it(\"when publicKeyLength is invalid\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([]), // Invalid public key length\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n fail(\"Expected an error\");\n } else {\n expect(result.error).toBeInstanceOf(InvalidStatusWordError);\n expect(result.error.originalError).toEqual(\n new Error(\"Public key length is missing\"),\n );\n }\n });\n\n it(\"when publicKey is invalid\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([0x01]), // Invalid public key\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n fail(\"Expected an error\");\n } else {\n expect(result.error).toBeInstanceOf(InvalidStatusWordError);\n expect(result.error.originalError).toEqual(\n new Error(\"Public key is missing\"),\n );\n }\n });\n\n it(\"when addressLength is invalid\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([0x20, ...Array<number>(32).fill(0x02)]), // Invalid address length\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n fail(\"Expected an error\");\n } else {\n expect(result.error).toBeInstanceOf(InvalidStatusWordError);\n expect(result.error.originalError).toEqual(\n new Error(\"Ethereum address length is missing\"),\n );\n }\n });\n\n it(\"when address is missing\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([0x20, ...Array<number>(32).fill(0x02), 0x01]), // Invalid address\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n fail(\"Expected an error\");\n } else {\n expect(result.error).toBeInstanceOf(InvalidStatusWordError);\n expect(result.error.originalError).toEqual(\n new Error(\"Ethereum address is missing\"),\n );\n }\n });\n\n it(\"when the address is invalid\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([\n 0x20,\n ...Array<number>(32).fill(0x02),\n 0x01,\n 0x02,\n ]), // Invalid address\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n fail(\"Expected an error\");\n } else {\n expect(result.error).toBeInstanceOf(InvalidStatusWordError);\n expect(result.error.originalError).toEqual(\n new Error(\"Invalid Ethereum address\"),\n );\n }\n });\n\n it(\"when chainCode is invalid\", () => {\n // GIVEN\n const response = {\n data: LNX_RESPONSE_DATA_GOOD_WITH_CHAIN_CODE.slice(0, -1), // Invalid chainCode\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const commandWithChainCode = new GetAddressCommand({\n ...defaultArgs,\n returnChainCode: true,\n });\n const result = commandWithChainCode.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n fail(\"Expected an error\");\n } else {\n expect(result.error).toBeInstanceOf(InvalidStatusWordError);\n expect(result.error.originalError).toEqual(\n new Error(\"Invalid Chaincode\"),\n );\n }\n });\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { GetAddressCommand } from \"./GetAddressCommand\";\n\nconst GET_ADDRESS_APDU = Uint8Array.from([\n 0xe0, 0x02, 0x00, 0x00, 0x1d, 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00,\n 0x3c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,\n]);\n\nconst GET_ADDRESS_APDU_WITH_CHECK_ON_DEVICE = Uint8Array.from([\n 0xe0, 0x02, 0x01, 0x00, 0x1d, 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00,\n 0x3c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,\n]);\n\nconst GET_ADDRESS_APDU_WITH_RETURN_CHAIN_CODE = Uint8Array.from([\n 0xe0, 0x02, 0x00, 0x01, 0x1d, 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00,\n 0x3c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,\n]);\n\nconst GET_ADDRESS_APDU_WITH_CHECK_ON_DEVICE_WITH_RETURN_CHAIN_CODE =\n Uint8Array.from([\n 0xe0, 0x02, 0x01, 0x01, 0x1d, 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00,\n 0x00, 0x3c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,\n ]);\n\nconst GET_ADDRESS_APDU_WITH_CUSTOM_DERIVATION_PATH = Uint8Array.from([\n 0xe0, 0x02, 0x00, 0x00, 0x1d, 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00,\n 0x3c, 0x80, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,\n]);\n\nconst LNX_RESPONSE_DATA_GOOD = Uint8Array.from([\n 0x41, 0x04, 0xe3, 0x78, 0x5c, 0xa6, 0xa5, 0xaa, 0x74, 0x8c, 0x62, 0x5e, 0x3d,\n 0xdd, 0xd6, 0xd9, 0x7b, 0x59, 0xb2, 0x6f, 0xd8, 0x15, 0x2f, 0xb5, 0x2e, 0xb2,\n 0x9d, 0x24, 0x40, 0x4f, 0x01, 0x0b, 0xe4, 0xf7, 0x25, 0xc3, 0x72, 0x5e, 0x78,\n 0xbe, 0xd9, 0x53, 0xf0, 0x74, 0x77, 0x8d, 0x71, 0x79, 0x74, 0xde, 0x21, 0xf3,\n 0x47, 0x0b, 0x73, 0x57, 0x36, 0xeb, 0x3d, 0x56, 0x74, 0x7a, 0xb6, 0xd0, 0x73,\n 0xa7, 0x28, 0x46, 0x37, 0x43, 0x36, 0x39, 0x42, 0x65, 0x64, 0x42, 0x32, 0x39,\n 0x32, 0x44, 0x64, 0x33, 0x66, 0x43, 0x32, 0x63, 0x41, 0x34, 0x31, 0x30, 0x33,\n 0x39, 0x38, 0x39, 0x42, 0x35, 0x42, 0x44, 0x37, 0x30, 0x35, 0x31, 0x36, 0x34,\n 0x63, 0x34, 0x33,\n]);\n\nconst LNX_RESPONSE_GOOD = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: LNX_RESPONSE_DATA_GOOD,\n});\n\nconst LNX_RESPONSE_DATA_GOOD_WITH_CHAIN_CODE = Uint8Array.from([\n 0x41, 0x4, 0xe3, 0x78, 0x5c, 0xa6, 0xa5, 0xaa, 0x74, 0x8c, 0x62, 0x5e, 0x3d,\n 0xdd, 0xd6, 0xd9, 0x7b, 0x59, 0xb2, 0x6f, 0xd8, 0x15, 0x2f, 0xb5, 0x2e, 0xb2,\n 0x9d, 0x24, 0x40, 0x4f, 0x1, 0xb, 0xe4, 0xf7, 0x25, 0xc3, 0x72, 0x5e, 0x78,\n 0xbe, 0xd9, 0x53, 0xf0, 0x74, 0x77, 0x8d, 0x71, 0x79, 0x74, 0xde, 0x21, 0xf3,\n 0x47, 0xb, 0x73, 0x57, 0x36, 0xeb, 0x3d, 0x56, 0x74, 0x7a, 0xb6, 0xd0, 0x73,\n 0xa7, 0x28, 0x46, 0x37, 0x43, 0x36, 0x39, 0x42, 0x65, 0x64, 0x42, 0x32, 0x39,\n 0x32, 0x44, 0x64, 0x33, 0x66, 0x43, 0x32, 0x63, 0x41, 0x34, 0x31, 0x30, 0x33,\n 0x39, 0x38, 0x39, 0x42, 0x35, 0x42, 0x44, 0x37, 0x30, 0x35, 0x31, 0x36, 0x34,\n 0x63, 0x34, 0x33, 0x42, 0x3e, 0x65, 0x1f, 0x2b, 0x16, 0xb4, 0x18, 0x6d, 0x5e,\n 0xac, 0x16, 0x7c, 0xc4, 0x9a, 0xad, 0xe4, 0xa9, 0x7e, 0xb3, 0xb1, 0x37, 0xde,\n 0x36, 0x33, 0x47, 0x99, 0x68, 0x4d, 0xc, 0x71, 0x4a,\n]);\n\nconst LNX_RESPONSE_GOOD_WITH_CHAIN_CODE = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: LNX_RESPONSE_DATA_GOOD_WITH_CHAIN_CODE,\n});\n\ndescribe(\"GetAddressCommand\", () => {\n let command: GetAddressCommand;\n const defaultArgs = {\n derivationPath: \"44'/60'/0'/0/0\",\n checkOnDevice: false,\n returnChainCode: false,\n };\n\n beforeEach(() => {\n command = new GetAddressCommand(defaultArgs);\n });\n\n describe(\"getApdu\", () => {\n it(\"should return the GetAddress apdu with default args\", () => {\n const apdu = command.getApdu();\n expect(apdu.getRawApdu()).toStrictEqual(GET_ADDRESS_APDU);\n });\n\n it(\"should return the GetAddress apdu with checkOnDevice set to true\", () => {\n command = new GetAddressCommand({ ...defaultArgs, checkOnDevice: true });\n const apdu = command.getApdu();\n expect(apdu.getRawApdu()).toStrictEqual(\n GET_ADDRESS_APDU_WITH_CHECK_ON_DEVICE,\n );\n });\n\n it(\"should return the GetAddress apdu with returnChainCode set to true\", () => {\n command = new GetAddressCommand({\n ...defaultArgs,\n returnChainCode: true,\n });\n const apdu = command.getApdu();\n expect(apdu.getRawApdu()).toStrictEqual(\n GET_ADDRESS_APDU_WITH_RETURN_CHAIN_CODE,\n );\n });\n\n it(\"should return the GetAddress apdu with checkOnDevice and returnChainCode set to true\", () => {\n command = new GetAddressCommand({\n ...defaultArgs,\n checkOnDevice: true,\n returnChainCode: true,\n });\n const apdu = command.getApdu();\n expect(apdu.getRawApdu()).toStrictEqual(\n GET_ADDRESS_APDU_WITH_CHECK_ON_DEVICE_WITH_RETURN_CHAIN_CODE,\n );\n });\n\n it(\"should return the GetAddress apdu with a custom derivation path\", () => {\n const customDerivationPath = \"44'/60'/3'/2/1\";\n command = new GetAddressCommand({\n ...defaultArgs,\n derivationPath: customDerivationPath,\n });\n const apdu = command.getApdu();\n expect(apdu.getRawApdu()).toStrictEqual(\n GET_ADDRESS_APDU_WITH_CUSTOM_DERIVATION_PATH,\n );\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should parse the response\", () => {\n const parsed = command.parseResponse(LNX_RESPONSE_GOOD);\n expect(parsed).toStrictEqual(\n CommandResultFactory({\n data: {\n publicKey:\n \"04e3785ca6a5aa748c625e3dddd6d97b59b26fd8152fb52eb29d24404f010be4f725c3725e78bed953f074778d717974de21f3470b735736eb3d56747ab6d073a7\",\n address: \"0xF7C69BedB292Dd3fC2cA4103989B5BD705164c43\",\n chainCode: undefined,\n },\n }),\n );\n });\n\n it(\"should parse the response with chainCode\", () => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n (command as any)[\"args\"].returnChainCode = true;\n const parsed = command.parseResponse(LNX_RESPONSE_GOOD_WITH_CHAIN_CODE);\n expect(parsed).toStrictEqual(\n CommandResultFactory({\n data: {\n publicKey:\n \"04e3785ca6a5aa748c625e3dddd6d97b59b26fd8152fb52eb29d24404f010be4f725c3725e78bed953f074778d717974de21f3470b735736eb3d56747ab6d073a7\",\n address: \"0xF7C69BedB292Dd3fC2cA4103989B5BD705164c43\",\n chainCode:\n \"423e651f2b16b4186d5eac167cc49aade4a97eb3b137de36334799684d0c714a\",\n },\n }),\n );\n });\n\n it(\"should not return chainCode if it is not requested\", () => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n (command as any)[\"args\"].returnChainCode = false;\n const parsed = command.parseResponse(LNX_RESPONSE_GOOD_WITH_CHAIN_CODE);\n expect(parsed).toStrictEqual(\n CommandResultFactory({\n data: {\n publicKey:\n \"04e3785ca6a5aa748c625e3dddd6d97b59b26fd8152fb52eb29d24404f010be4f725c3725e78bed953f074778d717974de21f3470b735736eb3d56747ab6d073a7\",\n address: \"0xF7C69BedB292Dd3fC2cA4103989B5BD705164c43\",\n chainCode: undefined,\n },\n }),\n );\n });\n\n describe(\"should return an error\", () => {\n it(\"when the response is not successfull\", () => {\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x6d, 0x00]),\n data: new Uint8Array(0),\n });\n const result = command.parseResponse(response);\n expect(isSuccessCommandResult(result)).toBe(false);\n });\n\n it(\"when publicKeyLength is invalid\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([]), // Invalid public key length\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n assert.fail(\"Expected an error\");\n } else {\n expect(result.error).toBeInstanceOf(InvalidStatusWordError);\n expect(result.error.originalError).toEqual(\n new Error(\"Public key length is missing\"),\n );\n }\n });\n\n it(\"when publicKey is invalid\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([0x01]), // Invalid public key\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n assert.fail(\"Expected an error\");\n } else {\n expect(result.error).toBeInstanceOf(InvalidStatusWordError);\n expect(result.error.originalError).toEqual(\n new Error(\"Public key is missing\"),\n );\n }\n });\n\n it(\"when addressLength is invalid\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([0x20, ...Array<number>(32).fill(0x02)]), // Invalid address length\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n assert.fail(\"Expected an error\");\n } else {\n expect(result.error).toBeInstanceOf(InvalidStatusWordError);\n expect(result.error.originalError).toEqual(\n new Error(\"Ethereum address length is missing\"),\n );\n }\n });\n\n it(\"when address is missing\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([0x20, ...Array<number>(32).fill(0x02), 0x01]), // Invalid address\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n assert.fail(\"Expected an error\");\n } else {\n expect(result.error).toBeInstanceOf(InvalidStatusWordError);\n expect(result.error.originalError).toEqual(\n new Error(\"Ethereum address is missing\"),\n );\n }\n });\n\n it(\"when the address is invalid\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([\n 0x20,\n ...Array<number>(32).fill(0x02),\n 0x01,\n 0x02,\n ]), // Invalid address\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n assert.fail(\"Expected an error\");\n } else {\n expect(result.error).toBeInstanceOf(InvalidStatusWordError);\n expect(result.error.originalError).toEqual(\n new Error(\"Invalid Ethereum address\"),\n );\n }\n });\n\n it(\"when chainCode is invalid\", () => {\n // GIVEN\n const response = {\n data: LNX_RESPONSE_DATA_GOOD_WITH_CHAIN_CODE.slice(0, -1), // Invalid chainCode\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const commandWithChainCode = new GetAddressCommand({\n ...defaultArgs,\n returnChainCode: true,\n });\n const result = commandWithChainCode.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n assert.fail(\"Expected an error\");\n } else {\n expect(result.error).toBeInstanceOf(InvalidStatusWordError);\n expect(result.error.originalError).toEqual(\n new Error(\"Invalid Chaincode\"),\n );\n }\n });\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["import_device_management_kit", "import_GetAddressCommand", "GET_ADDRESS_APDU", "GET_ADDRESS_APDU_WITH_CHECK_ON_DEVICE", "GET_ADDRESS_APDU_WITH_RETURN_CHAIN_CODE", "GET_ADDRESS_APDU_WITH_CHECK_ON_DEVICE_WITH_RETURN_CHAIN_CODE", "GET_ADDRESS_APDU_WITH_CUSTOM_DERIVATION_PATH", "LNX_RESPONSE_DATA_GOOD", "LNX_RESPONSE_GOOD", "LNX_RESPONSE_DATA_GOOD_WITH_CHAIN_CODE", "LNX_RESPONSE_GOOD_WITH_CHAIN_CODE", "command", "defaultArgs", "apdu", "customDerivationPath", "parsed", "response", "result"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var a=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var E=Object.prototype.hasOwnProperty;var R=(t,e)=>{for(var o in e)a(t,o,{get:e[o],enumerable:!0})},x=(t,e,o,p)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of A(e))!E.call(t,n)&&n!==o&&a(t,n,{get:()=>e[n],enumerable:!(p=g(e,n))||p.enumerable});return t};var y=t=>x(a({},"__esModule",{value:!0}),t);var h={};R(h,{GetAppConfiguration:()=>b});module.exports=y(h);var r=require("@ledgerhq/device-management-kit"),m=require("@ledgerhq/signer-utils"),u=require("purify-ts"),s=require("./utils/ethAppErrors");class b{errorHelper=new m.CommandErrorHelper(s.ETH_APP_ERRORS,s.EthAppCommandErrorFactory);constructor(){}getApdu(){const e={cla:224,ins:6,p1:0,p2:0};return new r.ApduBuilder(e).build()}parseResponse(e){return u.Maybe.fromNullable(this.errorHelper.getError(e)).orDefaultLazy(()=>{const o=new r.ApduParser(e),p=o.extract8BitUInt();if(p===void 0)return(0,r.CommandResultFactory)({error:new r.InvalidStatusWordError("Cannot extract config flags")});const n=o.extract8BitUInt(),i=o.extract8BitUInt(),d=o.extract8BitUInt();if(n===void 0||i===void 0||d===void 0)return(0,r.CommandResultFactory)({error:new r.InvalidStatusWordError("Cannot extract version")});const C=!!(p&1),c=!!(p&16),l=!!(p&32),f={blindSigningEnabled:C,web3ChecksEnabled:c,web3ChecksOptIn:l,version:`${n}.${i}.${d}`};return(0,r.CommandResultFactory)({data:f})})}}0&&(module.exports={GetAppConfiguration});
|
|
2
|
+
//# sourceMappingURL=GetAppConfigurationCommand.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/command/GetAppConfigurationCommand.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduBuilderArgs,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport { type GetConfigCommandResponse as GetAppConfigurationCommandResponse } from \"@api/app-binder/GetConfigCommandTypes\";\n\nimport {\n ETH_APP_ERRORS,\n EthAppCommandErrorFactory,\n type EthErrorCodes,\n} from \"./utils/ethAppErrors\";\n\nexport class GetAppConfiguration\n implements Command<GetAppConfigurationCommandResponse, void, EthErrorCodes>\n{\n private readonly errorHelper = new CommandErrorHelper<\n GetAppConfigurationCommandResponse,\n EthErrorCodes\n >(ETH_APP_ERRORS, EthAppCommandErrorFactory);\n\n constructor() {}\n\n getApdu(): Apdu {\n const getEthConfigArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x06,\n p1: 0x00,\n p2: 0x00,\n };\n const builder = new ApduBuilder(getEthConfigArgs);\n return builder.build();\n }\n\n parseResponse(\n response: ApduResponse,\n ): CommandResult<GetAppConfigurationCommandResponse, EthErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(response),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(response);\n\n const configFlags = parser.extract8BitUInt();\n if (configFlags === undefined) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Cannot extract config flags\"),\n });\n }\n\n const major = parser.extract8BitUInt();\n const minor = parser.extract8BitUInt();\n const patch = parser.extract8BitUInt();\n\n if (major === undefined || minor === undefined || patch === undefined) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Cannot extract version\"),\n });\n }\n\n const blindSigningEnabled = !!(configFlags & 0x00000001);\n const web3ChecksEnabled = !!(configFlags & 0x00000010);\n const web3ChecksOptIn = !!(configFlags & 0x00000020);\n\n const data: GetAppConfigurationCommandResponse = {\n blindSigningEnabled,\n web3ChecksEnabled,\n web3ChecksOptIn,\n version: `${major}.${minor}.${patch}`,\n };\n\n return CommandResultFactory({\n data,\n });\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAUO,2CACPC,EAAmC,kCACnCC,EAAsB,qBAItBC,EAIO,gCAEA,MAAML,CAEb,CACmB,YAAc,IAAI,qBAGjC,iBAAgB,2BAAyB,EAE3C,aAAc,CAAC,CAEf,SAAgB,CACd,MAAMM,EAAoC,CACxC,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,EAEA,OADgB,IAAI,cAAYA,CAAgB,EACjC,MAAM,CACvB,CAEA,cACEC,EACkE,CAClE,OAAO,QAAM,aACX,KAAK,YAAY,SAASA,CAAQ,CACpC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAS,IAAI,aAAWD,CAAQ,EAEhCE,EAAcD,EAAO,gBAAgB,EAC3C,GAAIC,IAAgB,OAClB,SAAO,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,6BAA6B,CACjE,CAAC,EAGH,MAAMC,EAAQF,EAAO,gBAAgB,EAC/BG,EAAQH,EAAO,gBAAgB,EAC/BI,EAAQJ,EAAO,gBAAgB,EAErC,GAAIE,IAAU,QAAaC,IAAU,QAAaC,IAAU,OAC1D,SAAO,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,wBAAwB,CAC5D,CAAC,EAGH,MAAMC,EAAsB,CAAC,EAAEJ,EAAc,GACvCK,EAAoB,CAAC,EAAEL,EAAc,IACrCM,EAAkB,CAAC,EAAEN,EAAc,IAEnCO,EAA2C,CAC/C,oBAAAH,EACA,kBAAAC,EACA,gBAAAC,EACA,QAAS,GAAGL,CAAK,IAAIC,CAAK,IAAIC,CAAK,EACrC,EAEA,SAAO,wBAAqB,CAC1B,KAAAI,CACF,CAAC,CACH,CAAC,CACH,CACF",
|
|
6
|
+
"names": ["GetAppConfigurationCommand_exports", "__export", "GetAppConfiguration", "__toCommonJS", "import_device_management_kit", "import_signer_utils", "import_purify_ts", "import_ethAppErrors", "getEthConfigArgs", "response", "parser", "configFlags", "major", "minor", "patch", "blindSigningEnabled", "web3ChecksEnabled", "web3ChecksOptIn", "data"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var t=require("@ledgerhq/device-management-kit"),a=require("./GetAppConfigurationCommand");describe("GetConfigCommand",()=>{let s;beforeEach(()=>{s=new a.GetAppConfiguration}),describe("getApdu",()=>{it("should return the raw APDU",()=>{const r=s.getApdu();expect(r.getRawApdu()).toStrictEqual(Uint8Array.from([224,6,0,0,0]))})}),describe("parseResponse",()=>{it("should return the app configuration",()=>{const r={statusCode:Uint8Array.from([144,0]),data:new Uint8Array([49,1,2,3])},e=s.parseResponse(r);(0,t.isSuccessCommandResult)(e)?expect(e.data).toEqual({blindSigningEnabled:!0,web3ChecksEnabled:!0,web3ChecksOptIn:!0,version:"1.2.3"}):assert.fail("Expected a success")}),it("should return the app configuration with flags disabled",()=>{const r={statusCode:Uint8Array.from([144,0]),data:new Uint8Array([0,1,2,3])},e=s.parseResponse(r);(0,t.isSuccessCommandResult)(e)?expect(e.data).toEqual({blindSigningEnabled:!1,web3ChecksEnabled:!1,web3ChecksOptIn:!1,version:"1.2.3"}):assert.fail("Expected a success")}),it("should return an error if the device is locked",()=>{const r={statusCode:Uint8Array.from([85,21]),data:new Uint8Array},e=s.parseResponse(r);(0,t.isSuccessCommandResult)(e)?assert.fail("Expected an error"):expect(e.error).toEqual(expect.objectContaining({errorCode:"5515",message:"Device is locked."}))}),it("should return an error if data is invalid",()=>{const r={statusCode:Uint8Array.from([106,128]),data:new Uint8Array},e=s.parseResponse(r);(0,t.isSuccessCommandResult)(e)?assert.fail("Expected an error"):expect(e.error).toEqual(expect.objectContaining({errorCode:"6a80",message:"Invalid data"}))}),it("should return an error if no flags are extracted",()=>{const r={statusCode:Uint8Array.from([144,0]),data:new Uint8Array},e=s.parseResponse(r);(0,t.isSuccessCommandResult)(e)?assert.fail("Expected an error"):(expect(e.error).toBeInstanceOf(t.InvalidStatusWordError),expect(e.error).toEqual(expect.objectContaining({originalError:new Error("Cannot extract config flags")})))}),it("should return an error if no version is extracted",()=>{const r={statusCode:Uint8Array.from([144,0]),data:new Uint8Array([1])},e=s.parseResponse(r);(0,t.isSuccessCommandResult)(e)?assert.fail("Expected an error"):(expect(e.error).toBeInstanceOf(t.InvalidStatusWordError),expect(e.error).toEqual(expect.objectContaining({originalError:new Error("Cannot extract version")})))})})});
|
|
2
|
+
//# sourceMappingURL=GetAppConfigurationCommand.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/command/GetAppConfigurationCommand.test.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { GetAppConfiguration } from \"./GetAppConfigurationCommand\";\n\ndescribe(\"GetConfigCommand\", () => {\n let command: GetAppConfiguration;\n\n beforeEach(() => {\n command = new GetAppConfiguration();\n });\n\n describe(\"getApdu\", () => {\n it(\"should return the raw APDU\", () => {\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(\n Uint8Array.from([0xe0, 0x06, 0x00, 0x00, 0x00]),\n );\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return the app configuration\", () => {\n // GIVEN\n const response = {\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([0x31, 0x01, 0x02, 0x03]),\n };\n\n // WHEN\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n expect(result.data).toEqual({\n blindSigningEnabled: true,\n web3ChecksEnabled: true,\n web3ChecksOptIn: true,\n version: \"1.2.3\",\n });\n } else {\n assert.fail(\"Expected a success\");\n }\n });\n\n it(\"should return the app configuration with flags disabled\", () => {\n // GIVEN\n const response = {\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([0x00, 0x01, 0x02, 0x03]),\n };\n\n // WHEN\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n expect(result.data).toEqual({\n blindSigningEnabled: false,\n web3ChecksEnabled: false,\n web3ChecksOptIn: false,\n version: \"1.2.3\",\n });\n } else {\n assert.fail(\"Expected a success\");\n }\n });\n\n it(\"should return an error if the device is locked\", () => {\n // GIVEN\n const response = {\n statusCode: Uint8Array.from([0x55, 0x15]),\n data: new Uint8Array(),\n };\n\n // WHEN\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n assert.fail(\"Expected an error\");\n } else {\n expect(result.error).toEqual(\n expect.objectContaining({\n errorCode: \"5515\",\n message: \"Device is locked.\",\n }),\n );\n }\n });\n\n it(\"should return an error if data is invalid\", () => {\n // GIVEN\n const response = {\n statusCode: Uint8Array.from([0x6a, 0x80]),\n data: new Uint8Array(),\n };\n\n // WHEN\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n assert.fail(\"Expected an error\");\n } else {\n expect(result.error).toEqual(\n expect.objectContaining({\n errorCode: \"6a80\",\n message: \"Invalid data\",\n }),\n );\n }\n });\n\n it(\"should return an error if no flags are extracted\", () => {\n // GIVEN\n const response = {\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array(),\n };\n\n // WHEN\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n assert.fail(\"Expected an error\");\n } else {\n expect(result.error).toBeInstanceOf(InvalidStatusWordError);\n expect(result.error).toEqual(\n expect.objectContaining({\n originalError: new Error(\"Cannot extract config flags\"),\n }),\n );\n }\n });\n\n it(\"should return an error if no version is extracted\", () => {\n // GIVEN\n const response = {\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([0x01]),\n };\n\n // WHEN\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n assert.fail(\"Expected an error\");\n } else {\n expect(result.error).toBeInstanceOf(InvalidStatusWordError);\n expect(result.error).toEqual(\n expect.objectContaining({\n originalError: new Error(\"Cannot extract version\"),\n }),\n );\n }\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_device_management_kit", "import_GetAppConfigurationCommand", "command", "apdu", "response", "result"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var p=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var C=(e,r)=>{for(var d in r)p(e,d,{get:r[d],enumerable:!0})},y=(e,r,d,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of u(r))!l.call(e,o)&&o!==d&&p(e,o,{get:()=>r[o],enumerable:!(s=i(r,o))||s.enumerable});return e};var A=e=>y(p({},"__esModule",{value:!0}),e);var E={};C(E,{ProvideWeb3CheckCommand:()=>h});module.exports=A(E);var t=require("@ledgerhq/device-management-kit"),m=require("@ledgerhq/signer-utils"),n=require("purify-ts"),a=require("../../app-binder/command/utils/ethAppErrors");class h{constructor(r){this.args=r}errorHelper=new m.CommandErrorHelper(a.ETH_APP_ERRORS,a.EthAppCommandErrorFactory);getApdu(){const r={cla:224,ins:50,p1:0,p2:this.args.isFirstChunk?1:0};return new t.ApduBuilder(r).addBufferToData(this.args.payload).build()}parseResponse(r){return n.Maybe.fromNullable(this.errorHelper.getError(r)).orDefault((0,t.CommandResultFactory)({data:void 0}))}}0&&(module.exports={ProvideWeb3CheckCommand});
|
|
2
|
+
//# sourceMappingURL=ProvideWeb3CheckCommand.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/command/ProvideWeb3CheckCommand.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduBuilderArgs,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n ETH_APP_ERRORS,\n EthAppCommandErrorFactory,\n type EthErrorCodes,\n} from \"@internal/app-binder/command/utils/ethAppErrors\";\n\nexport type ProvideWeb3CheckCommandArgs = {\n readonly payload: Uint8Array;\n readonly isFirstChunk: boolean;\n};\n\n/**\n * The command that provides a chunk of the trusted name to the device.\n */\nexport class ProvideWeb3CheckCommand\n implements Command<void, ProvideWeb3CheckCommandArgs, EthErrorCodes>\n{\n private readonly errorHelper = new CommandErrorHelper<void, EthErrorCodes>(\n ETH_APP_ERRORS,\n EthAppCommandErrorFactory,\n );\n\n constructor(private readonly args: ProvideWeb3CheckCommandArgs) {}\n\n getApdu(): Apdu {\n const apduBuilderArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x32,\n p1: 0x00,\n p2: this.args.isFirstChunk ? 0x01 : 0x00,\n };\n\n return new ApduBuilder(apduBuilderArgs)\n .addBufferToData(this.args.payload)\n .build();\n }\n\n parseResponse(response: ApduResponse): CommandResult<void, EthErrorCodes> {\n return Maybe.fromNullable(this.errorHelper.getError(response)).orDefault(\n CommandResultFactory({ data: undefined }),\n );\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAQO,2CACPC,EAAmC,kCACnCC,EAAsB,qBAEtBC,EAIO,2DAUA,MAAML,CAEb,CAME,YAA6BM,EAAmC,CAAnC,UAAAA,CAAoC,CALhD,YAAc,IAAI,qBACjC,iBACA,2BACF,EAIA,SAAgB,CACd,MAAMC,EAAmC,CACvC,IAAK,IACL,IAAK,GACL,GAAI,EACJ,GAAI,KAAK,KAAK,aAAe,EAAO,CACtC,EAEA,OAAO,IAAI,cAAYA,CAAe,EACnC,gBAAgB,KAAK,KAAK,OAAO,EACjC,MAAM,CACX,CAEA,cAAcC,EAA4D,CACxE,OAAO,QAAM,aAAa,KAAK,YAAY,SAASA,CAAQ,CAAC,EAAE,aAC7D,wBAAqB,CAAE,KAAM,MAAU,CAAC,CAC1C,CACF,CACF",
|
|
6
|
+
"names": ["ProvideWeb3CheckCommand_exports", "__export", "ProvideWeb3CheckCommand", "__toCommonJS", "import_device_management_kit", "import_signer_utils", "import_purify_ts", "import_ethAppErrors", "args", "apduBuilderArgs", "response"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var r=require("@ledgerhq/device-management-kit"),a=require("../../app-binder/command/ProvideWeb3CheckCommand");describe("ProvideWeb3CheckCommand",()=>{describe("getApdu",()=>{it("should return the raw APDU",()=>{const t={payload:(0,r.hexaStringToBuffer)("0x010203"),isFirstChunk:!0},e=new a.ProvideWeb3CheckCommand(t).getApdu();expect(e.getRawApdu()).toStrictEqual(Uint8Array.from([224,50,0,1,3,1,2,3]))}),it("should return the raw APDU for next chunk",()=>{const t={payload:(0,r.hexaStringToBuffer)("0x010203"),isFirstChunk:!1},e=new a.ProvideWeb3CheckCommand(t).getApdu();expect(e.getRawApdu()).toStrictEqual(Uint8Array.from([224,50,0,0,3,1,2,3]))})}),describe("parseResponse",()=>{it("should return undefined",()=>{const t={payload:(0,r.hexaStringToBuffer)("0x010203"),isFirstChunk:!0},s={statusCode:Uint8Array.from([144,0]),data:new Uint8Array([])},e=new a.ProvideWeb3CheckCommand(t).parseResponse(s);(0,r.isSuccessCommandResult)(e)?expect(e.data).toBeUndefined():assert.fail("Expected a success")}),it("should return an error if the device is locked",()=>{const t={payload:(0,r.hexaStringToBuffer)("0x010203"),isFirstChunk:!0},s={statusCode:Uint8Array.from([85,21]),data:new Uint8Array},e=new a.ProvideWeb3CheckCommand(t).parseResponse(s);(0,r.isSuccessCommandResult)(e)?assert.fail("Expected an error"):expect(e.error).toEqual(expect.objectContaining({errorCode:"5515",message:"Device is locked."}))}),it("should return an error if data is invalid",()=>{const t={payload:(0,r.hexaStringToBuffer)("0x010203"),isFirstChunk:!0},s={statusCode:Uint8Array.from([106,128]),data:new Uint8Array},e=new a.ProvideWeb3CheckCommand(t).parseResponse(s);(0,r.isSuccessCommandResult)(e)?assert.fail("Expected an error"):expect(e.error).toEqual(expect.objectContaining({errorCode:"6a80",message:"Invalid data"}))})})});
|
|
2
|
+
//# sourceMappingURL=ProvideWeb3CheckCommand.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/command/ProvideWeb3CheckCommand.test.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n hexaStringToBuffer,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\n\ndescribe(\"ProvideWeb3CheckCommand\", () => {\n describe(\"getApdu\", () => {\n it(\"should return the raw APDU\", () => {\n // GIVEN\n const args = {\n payload: hexaStringToBuffer(\"0x010203\")!,\n isFirstChunk: true,\n };\n const command = new ProvideWeb3CheckCommand(args);\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(\n Uint8Array.from([0xe0, 0x32, 0x00, 0x01, 0x03, 0x01, 0x02, 0x03]),\n );\n });\n\n it(\"should return the raw APDU for next chunk\", () => {\n // GIVEN\n const args = {\n payload: hexaStringToBuffer(\"0x010203\")!,\n isFirstChunk: false,\n };\n const command = new ProvideWeb3CheckCommand(args);\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(\n Uint8Array.from([0xe0, 0x32, 0x00, 0x00, 0x03, 0x01, 0x02, 0x03]),\n );\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return undefined\", () => {\n // GIVEN\n const args = {\n payload: hexaStringToBuffer(\"0x010203\")!,\n isFirstChunk: true,\n };\n const response = {\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([]),\n };\n\n // WHEN\n const result = new ProvideWeb3CheckCommand(args).parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n expect(result.data).toBeUndefined();\n } else {\n assert.fail(\"Expected a success\");\n }\n });\n\n it(\"should return an error if the device is locked\", () => {\n // GIVEN\n const args = {\n payload: hexaStringToBuffer(\"0x010203\")!,\n isFirstChunk: true,\n };\n const response = {\n statusCode: Uint8Array.from([0x55, 0x15]),\n data: new Uint8Array(),\n };\n\n // WHEN\n const result = new ProvideWeb3CheckCommand(args).parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n assert.fail(\"Expected an error\");\n } else {\n expect(result.error).toEqual(\n expect.objectContaining({\n errorCode: \"5515\",\n message: \"Device is locked.\",\n }),\n );\n }\n });\n\n it(\"should return an error if data is invalid\", () => {\n // GIVEN\n const args = {\n payload: hexaStringToBuffer(\"0x010203\")!,\n isFirstChunk: true,\n };\n const response = {\n statusCode: Uint8Array.from([0x6a, 0x80]),\n data: new Uint8Array(),\n };\n\n // WHEN\n const result = new ProvideWeb3CheckCommand(args).parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n assert.fail(\"Expected an error\");\n } else {\n expect(result.error).toEqual(\n expect.objectContaining({\n errorCode: \"6a80\",\n message: \"Invalid data\",\n }),\n );\n }\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAGO,2CAEPC,EAAwC,gEAExC,SAAS,0BAA2B,IAAM,CACxC,SAAS,UAAW,IAAM,CACxB,GAAG,6BAA8B,IAAM,CAErC,MAAMC,EAAO,CACX,WAAS,sBAAmB,UAAU,EACtC,aAAc,EAChB,EAIMC,EAHU,IAAI,0BAAwBD,CAAI,EAG3B,QAAQ,EAG7B,OAAOC,EAAK,WAAW,CAAC,EAAE,cACxB,WAAW,KAAK,CAAC,IAAM,GAAM,EAAM,EAAM,EAAM,EAAM,EAAM,CAAI,CAAC,CAClE,CACF,CAAC,EAED,GAAG,4CAA6C,IAAM,CAEpD,MAAMD,EAAO,CACX,WAAS,sBAAmB,UAAU,EACtC,aAAc,EAChB,EAIMC,EAHU,IAAI,0BAAwBD,CAAI,EAG3B,QAAQ,EAG7B,OAAOC,EAAK,WAAW,CAAC,EAAE,cACxB,WAAW,KAAK,CAAC,IAAM,GAAM,EAAM,EAAM,EAAM,EAAM,EAAM,CAAI,CAAC,CAClE,CACF,CAAC,CACH,CAAC,EAED,SAAS,gBAAiB,IAAM,CAC9B,GAAG,0BAA2B,IAAM,CAElC,MAAMD,EAAO,CACX,WAAS,sBAAmB,UAAU,EACtC,aAAc,EAChB,EACME,EAAW,CACf,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,EAGMC,EAAS,IAAI,0BAAwBH,CAAI,EAAE,cAAcE,CAAQ,KAGnE,0BAAuBC,CAAM,EAC/B,OAAOA,EAAO,IAAI,EAAE,cAAc,EAElC,OAAO,KAAK,oBAAoB,CAEpC,CAAC,EAED,GAAG,iDAAkD,IAAM,CAEzD,MAAMH,EAAO,CACX,WAAS,sBAAmB,UAAU,EACtC,aAAc,EAChB,EACME,EAAW,CACf,WAAY,WAAW,KAAK,CAAC,GAAM,EAAI,CAAC,EACxC,KAAM,IAAI,UACZ,EAGMC,EAAS,IAAI,0BAAwBH,CAAI,EAAE,cAAcE,CAAQ,KAGnE,0BAAuBC,CAAM,EAC/B,OAAO,KAAK,mBAAmB,EAE/B,OAAOA,EAAO,KAAK,EAAE,QACnB,OAAO,iBAAiB,CACtB,UAAW,OACX,QAAS,mBACX,CAAC,CACH,CAEJ,CAAC,EAED,GAAG,4CAA6C,IAAM,CAEpD,MAAMH,EAAO,CACX,WAAS,sBAAmB,UAAU,EACtC,aAAc,EAChB,EACME,EAAW,CACf,WAAY,WAAW,KAAK,CAAC,IAAM,GAAI,CAAC,EACxC,KAAM,IAAI,UACZ,EAGMC,EAAS,IAAI,0BAAwBH,CAAI,EAAE,cAAcE,CAAQ,KAGnE,0BAAuBC,CAAM,EAC/B,OAAO,KAAK,mBAAmB,EAE/B,OAAOA,EAAO,KAAK,EAAE,QACnB,OAAO,iBAAiB,CACtB,UAAW,OACX,QAAS,cACX,CAAC,CACH,CAEJ,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_device_management_kit", "import_ProvideWeb3CheckCommand", "args", "apdu", "response", "result"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var o=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var c=(
|
|
1
|
+
"use strict";var o=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var c=(t,e)=>{for(var r in e)o(t,r,{get:e[r],enumerable:!0})},E=(t,e,r,d)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of y(e))!u.call(t,a)&&a!==r&&o(t,a,{get:()=>e[a],enumerable:!(d=l(e,a))||d.enumerable});return t};var F=t=>E(o({},"__esModule",{value:!0}),t);var T={};c(T,{Eip712FilterType:()=>g,SendEIP712FilteringCommand:()=>A});module.exports=F(T);var s=require("@ledgerhq/device-management-kit"),p=require("@ledgerhq/signer-utils"),m=require("purify-ts"),n=require("./utils/ethAppErrors"),g=(i=>(i.Activation="activation",i.DiscardedPath="discarded_path",i.MessageInfo="message_info",i.Datetime="datetime",i.Raw="raw",i.Amount="amount",i.Token="token",i.TrustedName="trusted-name",i))(g||{});const h={activation:0,discarded_path:1,message_info:15,"trusted-name":251,datetime:252,token:253,amount:254,raw:255};class A{constructor(e){this.args=e}errorHelper=new p.CommandErrorHelper(n.ETH_APP_ERRORS,n.EthAppCommandErrorFactory);getApdu(){const e={cla:224,ins:30,p1:"discarded"in this.args&&this.args.discarded?1:0,p2:h[this.args.type]},r=new s.ApduBuilder(e);switch(this.args.type){case"message_info":r.encodeInLVFromAscii(this.args.displayName).add8BitUIntToData(this.args.filtersCount).encodeInLVFromHexa(this.args.signature);break;case"discarded_path":r.encodeInLVFromAscii(this.args.path);break;case"datetime":case"raw":r.encodeInLVFromAscii(this.args.displayName).encodeInLVFromHexa(this.args.signature);break;case"trusted-name":r.encodeInLVFromAscii(this.args.displayName).addHexaStringToData(this.args.typesAndSourcesPayload).encodeInLVFromHexa(this.args.signature);break;case"token":case"amount":this.args.type==="amount"&&r.encodeInLVFromAscii(this.args.displayName),r.add8BitUIntToData(this.args.tokenIndex).encodeInLVFromHexa(this.args.signature);break}return r.build()}parseResponse(e){return m.Maybe.fromNullable(this.errorHelper.getError(e)).orDefault((0,s.CommandResultFactory)({data:void 0}))}}0&&(module.exports={Eip712FilterType,SendEIP712FilteringCommand});
|
|
2
2
|
//# sourceMappingURL=SendEIP712FilteringCommand.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/command/SendEIP712FilteringCommand.ts"],
|
|
4
|
-
"sourcesContent": ["// https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#eip712-filtering\nimport {\n type Apdu,\n ApduBuilder,\n type ApduBuilderArgs,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n ETH_APP_ERRORS,\n EthAppCommandErrorFactory,\n type EthErrorCodes,\n} from \"./utils/ethAppErrors\";\n\nexport enum Eip712FilterType {\n Activation = \"activation\",\n DiscardedPath = \"discarded_path\",\n MessageInfo = \"message_info\",\n Datetime = \"datetime\",\n Raw = \"raw\",\n Amount = \"amount\",\n Token = \"token\",\n}\n\nexport type SendEIP712FilteringCommandArgs =\n | { type: Eip712FilterType.Activation }\n | { type: Eip712FilterType.DiscardedPath; path: string }\n | {\n type: Eip712FilterType.MessageInfo;\n displayName: string;\n filtersCount: number;\n signature: string;\n }\n | {\n type: Eip712FilterType.Datetime;\n discarded: boolean;\n displayName: string;\n signature: string;\n }\n | {\n type: Eip712FilterType.Token;\n discarded: boolean;\n tokenIndex: number;\n signature: string;\n }\n | {\n type: Eip712FilterType.Raw;\n discarded: boolean;\n displayName: string;\n signature: string;\n }\n | {\n type: Eip712FilterType.Amount;\n discarded: boolean;\n displayName: string;\n tokenIndex: number;\n signature: string;\n };\n\nconst FILTER_TO_P2: Record<Eip712FilterType, number> = {\n [Eip712FilterType.Activation]: 0x00,\n [Eip712FilterType.DiscardedPath]: 0x01,\n [Eip712FilterType.MessageInfo]: 0x0f,\n [Eip712FilterType.Datetime]: 0xfc,\n [Eip712FilterType.Token]: 0xfd,\n [Eip712FilterType.Amount]: 0xfe,\n [Eip712FilterType.Raw]: 0xff,\n};\n\nexport class SendEIP712FilteringCommand\n implements Command<void, SendEIP712FilteringCommandArgs, EthErrorCodes>\n{\n private readonly errorHelper = new CommandErrorHelper<void, EthErrorCodes>(\n ETH_APP_ERRORS,\n EthAppCommandErrorFactory,\n );\n\n constructor(private readonly args: SendEIP712FilteringCommandArgs) {}\n\n getApdu(): Apdu {\n const filteringArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x1e,\n p1: \"discarded\" in this.args && this.args.discarded ? 0x01 : 0x00,\n p2: FILTER_TO_P2[this.args.type],\n };\n const builder = new ApduBuilder(filteringArgs);\n\n
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,EAAA,+BAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAQO,2CACPC,EAAmC,kCACnCC,EAAsB,qBAEtBC,EAIO,gCAEKN,OACVA,EAAA,WAAa,aACbA,EAAA,cAAgB,iBAChBA,EAAA,YAAc,eACdA,EAAA,SAAW,WACXA,EAAA,IAAM,MACNA,EAAA,OAAS,SACTA,EAAA,MAAQ,
|
|
4
|
+
"sourcesContent": ["// https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#eip712-filtering\nimport {\n type Apdu,\n ApduBuilder,\n type ApduBuilderArgs,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n ETH_APP_ERRORS,\n EthAppCommandErrorFactory,\n type EthErrorCodes,\n} from \"./utils/ethAppErrors\";\n\nexport enum Eip712FilterType {\n Activation = \"activation\",\n DiscardedPath = \"discarded_path\",\n MessageInfo = \"message_info\",\n Datetime = \"datetime\",\n Raw = \"raw\",\n Amount = \"amount\",\n Token = \"token\",\n TrustedName = \"trusted-name\",\n}\n\nexport type SendEIP712FilteringCommandArgs =\n | { type: Eip712FilterType.Activation }\n | { type: Eip712FilterType.DiscardedPath; path: string }\n | {\n type: Eip712FilterType.MessageInfo;\n displayName: string;\n filtersCount: number;\n signature: string;\n }\n | {\n type: Eip712FilterType.Datetime;\n discarded: boolean;\n displayName: string;\n signature: string;\n }\n | {\n type: Eip712FilterType.TrustedName;\n discarded: boolean;\n displayName: string;\n typesAndSourcesPayload: string;\n signature: string;\n }\n | {\n type: Eip712FilterType.Token;\n discarded: boolean;\n tokenIndex: number;\n signature: string;\n }\n | {\n type: Eip712FilterType.Raw;\n discarded: boolean;\n displayName: string;\n signature: string;\n }\n | {\n type: Eip712FilterType.Amount;\n discarded: boolean;\n displayName: string;\n tokenIndex: number;\n signature: string;\n };\n\nconst FILTER_TO_P2: Record<Eip712FilterType, number> = {\n [Eip712FilterType.Activation]: 0x00,\n [Eip712FilterType.DiscardedPath]: 0x01,\n [Eip712FilterType.MessageInfo]: 0x0f,\n [Eip712FilterType.TrustedName]: 0xfb,\n [Eip712FilterType.Datetime]: 0xfc,\n [Eip712FilterType.Token]: 0xfd,\n [Eip712FilterType.Amount]: 0xfe,\n [Eip712FilterType.Raw]: 0xff,\n};\n\nexport class SendEIP712FilteringCommand\n implements Command<void, SendEIP712FilteringCommandArgs, EthErrorCodes>\n{\n private readonly errorHelper = new CommandErrorHelper<void, EthErrorCodes>(\n ETH_APP_ERRORS,\n EthAppCommandErrorFactory,\n );\n\n constructor(private readonly args: SendEIP712FilteringCommandArgs) {}\n\n getApdu(): Apdu {\n const filteringArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x1e,\n p1: \"discarded\" in this.args && this.args.discarded ? 0x01 : 0x00,\n p2: FILTER_TO_P2[this.args.type],\n };\n const builder = new ApduBuilder(filteringArgs);\n\n switch (this.args.type) {\n case Eip712FilterType.MessageInfo:\n builder\n .encodeInLVFromAscii(this.args.displayName)\n .add8BitUIntToData(this.args.filtersCount)\n .encodeInLVFromHexa(this.args.signature);\n break;\n case Eip712FilterType.DiscardedPath:\n builder.encodeInLVFromAscii(this.args.path);\n break;\n case Eip712FilterType.Datetime:\n case Eip712FilterType.Raw:\n builder\n .encodeInLVFromAscii(this.args.displayName)\n .encodeInLVFromHexa(this.args.signature);\n break;\n case Eip712FilterType.TrustedName:\n builder\n .encodeInLVFromAscii(this.args.displayName)\n .addHexaStringToData(this.args.typesAndSourcesPayload)\n .encodeInLVFromHexa(this.args.signature);\n break;\n case Eip712FilterType.Token:\n case Eip712FilterType.Amount:\n if (this.args.type === Eip712FilterType.Amount) {\n builder.encodeInLVFromAscii(this.args.displayName);\n }\n builder\n .add8BitUIntToData(this.args.tokenIndex)\n .encodeInLVFromHexa(this.args.signature);\n break;\n }\n return builder.build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<void, EthErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(apduResponse),\n ).orDefault(CommandResultFactory({ data: undefined }));\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,EAAA,+BAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAQO,2CACPC,EAAmC,kCACnCC,EAAsB,qBAEtBC,EAIO,gCAEKN,OACVA,EAAA,WAAa,aACbA,EAAA,cAAgB,iBAChBA,EAAA,YAAc,eACdA,EAAA,SAAW,WACXA,EAAA,IAAM,MACNA,EAAA,OAAS,SACTA,EAAA,MAAQ,QACRA,EAAA,YAAc,eARJA,OAAA,IAqDZ,MAAMO,EAAiD,CACpD,WAA8B,EAC9B,eAAiC,EACjC,aAA+B,GAC/B,eAA+B,IAC/B,SAA4B,IAC5B,MAAyB,IACzB,OAA0B,IAC1B,IAAuB,GAC1B,EAEO,MAAMN,CAEb,CAME,YAA6BO,EAAsC,CAAtC,UAAAA,CAAuC,CALnD,YAAc,IAAI,qBACjC,iBACA,2BACF,EAIA,SAAgB,CACd,MAAMC,EAAiC,CACrC,IAAK,IACL,IAAK,GACL,GAAI,cAAe,KAAK,MAAQ,KAAK,KAAK,UAAY,EAAO,EAC7D,GAAIF,EAAa,KAAK,KAAK,IAAI,CACjC,EACMG,EAAU,IAAI,cAAYD,CAAa,EAE7C,OAAQ,KAAK,KAAK,KAAM,CACtB,IAAK,eACHC,EACG,oBAAoB,KAAK,KAAK,WAAW,EACzC,kBAAkB,KAAK,KAAK,YAAY,EACxC,mBAAmB,KAAK,KAAK,SAAS,EACzC,MACF,IAAK,iBACHA,EAAQ,oBAAoB,KAAK,KAAK,IAAI,EAC1C,MACF,IAAK,WACL,IAAK,MACHA,EACG,oBAAoB,KAAK,KAAK,WAAW,EACzC,mBAAmB,KAAK,KAAK,SAAS,EACzC,MACF,IAAK,eACHA,EACG,oBAAoB,KAAK,KAAK,WAAW,EACzC,oBAAoB,KAAK,KAAK,sBAAsB,EACpD,mBAAmB,KAAK,KAAK,SAAS,EACzC,MACF,IAAK,QACL,IAAK,SACC,KAAK,KAAK,OAAS,UACrBA,EAAQ,oBAAoB,KAAK,KAAK,WAAW,EAEnDA,EACG,kBAAkB,KAAK,KAAK,UAAU,EACtC,mBAAmB,KAAK,KAAK,SAAS,EACzC,KACJ,CACA,OAAOA,EAAQ,MAAM,CACvB,CAEA,cACEC,EACoC,CACpC,OAAO,QAAM,aACX,KAAK,YAAY,SAASA,CAAY,CACxC,EAAE,aAAU,wBAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,CACvD,CACF",
|
|
6
6
|
"names": ["SendEIP712FilteringCommand_exports", "__export", "Eip712FilterType", "SendEIP712FilteringCommand", "__toCommonJS", "import_device_management_kit", "import_signer_utils", "import_purify_ts", "import_ethAppErrors", "FILTER_TO_P2", "args", "filteringArgs", "builder", "apduResponse"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var c=require("@ledgerhq/device-management-kit"),x=require("./SendEIP712FilteringCommand");const n=Uint8Array.from([224,30,0,0,0]),
|
|
1
|
+
"use strict";var c=require("@ledgerhq/device-management-kit"),x=require("./SendEIP712FilteringCommand");const n=Uint8Array.from([224,30,0,0,0]),s=Uint8Array.from([224,30,0,15,84,11,49,105,110,99,104,32,79,114,100,101,114,6,70,48,68,2,32,41,94,10,235,23,202,9,41,178,169,76,50,77,103,208,181,82,138,186,38,129,119,243,172,41,123,86,49,65,224,0,39,2,32,58,195,96,217,253,12,156,12,18,39,157,30,115,190,165,213,73,161,232,20,31,69,77,136,251,225,232,239,151,14,104,2]),t=Uint8Array.from([224,30,0,255,77,4,70,114,111,109,71,48,69,2,33,0,184,32,228,223,177,160,205,230,220,151,217,163,78,235,177,164,238,240,178,38,38,46,103,136,17,138,179,199,251,121,254,53,2,32,45,66,106,56,139,76,58,128,150,179,248,68,18,167,2,234,83,119,112,230,30,224,114,126,193,183,16,193,218,82,12,68]),o=Uint8Array.from([224,30,0,253,73,1,71,48,69,2,33,0,255,114,120,71,68,84,49,229,113,205,42,13,157,180,42,126,182,46,55,135,123,155,242,14,106,150,88,66,85,52,126,25,2,32,10,110,149,183,248,230,59,47,171,11,239,136,199,71,222,106,56,125,6,53,27,229,189,195,75,44,31,154,234,111,221,40]),f=Uint8Array.from([224,30,0,254,89,15,82,101,99,101,105,118,101,32,109,105,110,105,109,117,109,1,71,48,69,2,33,0,165,157,196,121,168,56,168,19,144,156,20,10,21,230,182,91,197,140,86,51,40,75,249,115,196,54,222,90,89,38,52,226,2,32,30,3,143,199,153,93,147,159,204,213,70,228,200,94,121,60,10,212,81,33,110,54,164,237,252,123,206,91,226,120,8,203]),r=Uint8Array.from([224,30,0,251,86,7,83,112,101,110,100,101,114,1,2,3,1,0,2,71,48,69,2,33,0,232,71,22,110,96,248,81,227,200,209,244,65,57,129,24,152,204,208,211,160,58,237,108,119,248,195,153,56,19,244,121,210,2,32,49,254,107,106,87,75,86,197,16,64,3,207,7,144,13,17,255,175,48,61,192,22,218,76,28,61,24,70,99,218,143,106]),i=Uint8Array.from([224,30,0,252,88,15,65,112,112,114,111,118,97,108,32,101,120,112,105,114,101,71,48,69,2,33,0,232,71,22,110,96,248,81,227,200,209,244,65,57,129,24,152,204,208,211,160,58,237,108,119,248,195,153,56,19,244,121,210,2,32,49,254,107,106,87,75,86,197,16,64,3,207,7,144,13,17,255,175,48,61,192,22,218,76,28,61,24,70,99,218,143,106]),m=Uint8Array.from([224,30,0,1,17,16,116,111,46,91,93,46,119,97,108,108,101,116,115,46,91,93]);describe("SendEIP712FilteringCommand",()=>{describe("getApdu",()=>{it("Activate APDU",()=>{const e={type:x.Eip712FilterType.Activation},a=new x.SendEIP712FilteringCommand(e).getApdu();expect(a.getRawApdu()).toStrictEqual(n)}),it("Discarded path APDU",()=>{const e={type:x.Eip712FilterType.DiscardedPath,path:"to.[].wallets.[]"},a=new x.SendEIP712FilteringCommand(e).getApdu();expect(a.getRawApdu()).toStrictEqual(m)}),it("Message info APDU",()=>{const e={type:x.Eip712FilterType.MessageInfo,displayName:"1inch Order",filtersCount:6,signature:"30440220295e0aeb17ca0929b2a94c324d67d0b5528aba268177f3ac297b563141e0002702203ac360d9fd0c9c0c12279d1e73bea5d549a1e8141f454d88fbe1e8ef970e6802"},a=new x.SendEIP712FilteringCommand(e).getApdu();expect(a.getRawApdu()).toStrictEqual(s)}),it("Raw APDU",()=>{const e={type:x.Eip712FilterType.Raw,discarded:!1,displayName:"From",signature:"3045022100b820e4dfb1a0cde6dc97d9a34eebb1a4eef0b226262e6788118ab3c7fb79fe3502202d426a388b4c3a8096b3f84412a702ea537770e61ee0727ec1b710c1da520c44"},a=new x.SendEIP712FilteringCommand(e).getApdu();expect(a.getRawApdu()).toStrictEqual(t)}),it("Token APDU",()=>{const e={type:x.Eip712FilterType.Token,discarded:!1,tokenIndex:1,signature:"3045022100ff727847445431e571cd2a0d9db42a7eb62e37877b9bf20e6a96584255347e1902200a6e95b7f8e63b2fab0bef88c747de6a387d06351be5bdc34b2c1f9aea6fdd28"},a=new x.SendEIP712FilteringCommand(e).getApdu();expect(a.getRawApdu()).toStrictEqual(o)}),it("Amount APDU",()=>{const e={type:x.Eip712FilterType.Amount,discarded:!1,displayName:"Receive minimum",tokenIndex:1,signature:"3045022100a59dc479a838a813909c140a15e6b65bc58c5633284bf973c436de5a592634e202201e038fc7995d939fccd546e4c85e793c0ad451216e36a4edfc7bce5be27808cb"},a=new x.SendEIP712FilteringCommand(e).getApdu();expect(a.getRawApdu()).toStrictEqual(f)}),it("Date-time APDU",()=>{const e={type:x.Eip712FilterType.Datetime,discarded:!1,displayName:"Approval expire",signature:"3045022100e847166e60f851e3c8d1f44139811898ccd0d3a03aed6c77f8c3993813f479d2022031fe6b6a574b56c5104003cf07900d11ffaf303dc016da4c1c3d184663da8f6a"},a=new x.SendEIP712FilteringCommand(e).getApdu();expect(a.getRawApdu()).toStrictEqual(i)}),it("Trusted name APDU",()=>{const e={type:x.Eip712FilterType.TrustedName,discarded:!1,displayName:"Spender",typesAndSourcesPayload:"010203010002",signature:"3045022100e847166e60f851e3c8d1f44139811898ccd0d3a03aed6c77f8c3993813f479d2022031fe6b6a574b56c5104003cf07900d11ffaf303dc016da4c1c3d184663da8f6a"},a=new x.SendEIP712FilteringCommand(e).getApdu();expect(a.getRawApdu()).toStrictEqual(r)}),it("Discarded filter",()=>{const e={type:x.Eip712FilterType.Raw,discarded:!0,displayName:"From",signature:"3045022100b820e4dfb1a0cde6dc97d9a34eebb1a4eef0b226262e6788118ab3c7fb79fe3502202d426a388b4c3a8096b3f84412a702ea537770e61ee0727ec1b710c1da520c44"},a=new x.SendEIP712FilteringCommand(e).getApdu();expect(a.getRawApdu()).toStrictEqual(Uint8Array.from([...t.slice(0,2),1,...t.slice(3)]))})}),describe("parseResponse",()=>{it("should return an error if the response status code is invalid",()=>{const e={statusCode:Buffer.from([106,128]),data:Buffer.from([])},a=new x.SendEIP712FilteringCommand({type:x.Eip712FilterType.Activation}).parseResponse(e);expect((0,c.isSuccessCommandResult)(a)).toBe(!1)}),it("should parse the response",()=>{const e={statusCode:Buffer.from([144,0]),data:Buffer.from([])},d=new x.SendEIP712FilteringCommand({type:x.Eip712FilterType.Activation});expect(d.parseResponse(e)).toStrictEqual((0,c.CommandResultFactory)({data:void 0}))})})});
|
|
2
2
|
//# sourceMappingURL=SendEIP712FilteringCommand.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/command/SendEIP712FilteringCommand.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type ApduResponse,\n CommandResultFactory,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport {\n Eip712FilterType,\n SendEIP712FilteringCommand,\n type SendEIP712FilteringCommandArgs,\n} from \"./SendEIP712FilteringCommand\";\n\nconst ACTIVATE_APDU = Uint8Array.from([0xe0, 0x1e, 0x00, 0x00, 0x00]);\nconst MESSAGE_INFO_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0x0f, 0x54, 0x0b, 0x31, 0x69, 0x6e, 0x63, 0x68, 0x20, 0x4f,\n 0x72, 0x64, 0x65, 0x72, 0x06, 0x46, 0x30, 0x44, 0x02, 0x20, 0x29, 0x5e, 0x0a,\n 0xeb, 0x17, 0xca, 0x09, 0x29, 0xb2, 0xa9, 0x4c, 0x32, 0x4d, 0x67, 0xd0, 0xb5,\n 0x52, 0x8a, 0xba, 0x26, 0x81, 0x77, 0xf3, 0xac, 0x29, 0x7b, 0x56, 0x31, 0x41,\n 0xe0, 0x00, 0x27, 0x02, 0x20, 0x3a, 0xc3, 0x60, 0xd9, 0xfd, 0x0c, 0x9c, 0x0c,\n 0x12, 0x27, 0x9d, 0x1e, 0x73, 0xbe, 0xa5, 0xd5, 0x49, 0xa1, 0xe8, 0x14, 0x1f,\n 0x45, 0x4d, 0x88, 0xfb, 0xe1, 0xe8, 0xef, 0x97, 0x0e, 0x68, 0x02,\n]);\nconst RAW_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0xff, 0x4d, 0x04, 0x46, 0x72, 0x6f, 0x6d, 0x47, 0x30, 0x45,\n 0x02, 0x21, 0x00, 0xb8, 0x20, 0xe4, 0xdf, 0xb1, 0xa0, 0xcd, 0xe6, 0xdc, 0x97,\n 0xd9, 0xa3, 0x4e, 0xeb, 0xb1, 0xa4, 0xee, 0xf0, 0xb2, 0x26, 0x26, 0x2e, 0x67,\n 0x88, 0x11, 0x8a, 0xb3, 0xc7, 0xfb, 0x79, 0xfe, 0x35, 0x02, 0x20, 0x2d, 0x42,\n 0x6a, 0x38, 0x8b, 0x4c, 0x3a, 0x80, 0x96, 0xb3, 0xf8, 0x44, 0x12, 0xa7, 0x02,\n 0xea, 0x53, 0x77, 0x70, 0xe6, 0x1e, 0xe0, 0x72, 0x7e, 0xc1, 0xb7, 0x10, 0xc1,\n 0xda, 0x52, 0x0c, 0x44,\n]);\nconst TOKEN_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0xfd, 0x49, 0x01, 0x47, 0x30, 0x45, 0x02, 0x21, 0x00, 0xff,\n 0x72, 0x78, 0x47, 0x44, 0x54, 0x31, 0xe5, 0x71, 0xcd, 0x2a, 0x0d, 0x9d, 0xb4,\n 0x2a, 0x7e, 0xb6, 0x2e, 0x37, 0x87, 0x7b, 0x9b, 0xf2, 0x0e, 0x6a, 0x96, 0x58,\n 0x42, 0x55, 0x34, 0x7e, 0x19, 0x02, 0x20, 0x0a, 0x6e, 0x95, 0xb7, 0xf8, 0xe6,\n 0x3b, 0x2f, 0xab, 0x0b, 0xef, 0x88, 0xc7, 0x47, 0xde, 0x6a, 0x38, 0x7d, 0x06,\n 0x35, 0x1b, 0xe5, 0xbd, 0xc3, 0x4b, 0x2c, 0x1f, 0x9a, 0xea, 0x6f, 0xdd, 0x28,\n]);\nconst AMOUNT_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0xfe, 0x59, 0x0f, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,\n 0x20, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x01, 0x47, 0x30, 0x45, 0x02,\n 0x21, 0x00, 0xa5, 0x9d, 0xc4, 0x79, 0xa8, 0x38, 0xa8, 0x13, 0x90, 0x9c, 0x14,\n 0x0a, 0x15, 0xe6, 0xb6, 0x5b, 0xc5, 0x8c, 0x56, 0x33, 0x28, 0x4b, 0xf9, 0x73,\n 0xc4, 0x36, 0xde, 0x5a, 0x59, 0x26, 0x34, 0xe2, 0x02, 0x20, 0x1e, 0x03, 0x8f,\n 0xc7, 0x99, 0x5d, 0x93, 0x9f, 0xcc, 0xd5, 0x46, 0xe4, 0xc8, 0x5e, 0x79, 0x3c,\n 0x0a, 0xd4, 0x51, 0x21, 0x6e, 0x36, 0xa4, 0xed, 0xfc, 0x7b, 0xce, 0x5b, 0xe2,\n 0x78, 0x08, 0xcb,\n]);\nconst DATE_TIME_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0xfc, 0x58, 0x0f, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61,\n 0x6c, 0x20, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x47, 0x30, 0x45, 0x02, 0x21,\n 0x00, 0xe8, 0x47, 0x16, 0x6e, 0x60, 0xf8, 0x51, 0xe3, 0xc8, 0xd1, 0xf4, 0x41,\n 0x39, 0x81, 0x18, 0x98, 0xcc, 0xd0, 0xd3, 0xa0, 0x3a, 0xed, 0x6c, 0x77, 0xf8,\n 0xc3, 0x99, 0x38, 0x13, 0xf4, 0x79, 0xd2, 0x02, 0x20, 0x31, 0xfe, 0x6b, 0x6a,\n 0x57, 0x4b, 0x56, 0xc5, 0x10, 0x40, 0x03, 0xcf, 0x07, 0x90, 0x0d, 0x11, 0xff,\n 0xaf, 0x30, 0x3d, 0xc0, 0x16, 0xda, 0x4c, 0x1c, 0x3d, 0x18, 0x46, 0x63, 0xda,\n 0x8f, 0x6a,\n]);\nconst DISCARDED_PATH_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0x01, 0x11, 0x10, 0x74, 0x6f, 0x2e, 0x5b, 0x5d, 0x2e, 0x77,\n 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x2e, 0x5b, 0x5d,\n]);\n\ndescribe(\"SendEIP712FilteringCommand\", () => {\n describe(\"getApdu\", () => {\n it(\"Activate APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Activation,\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(ACTIVATE_APDU);\n });\n\n it(\"Discarded path APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.DiscardedPath,\n path: \"to.[].wallets.[]\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(DISCARDED_PATH_APDU);\n });\n\n it(\"Message info APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.MessageInfo,\n displayName: \"1inch Order\",\n filtersCount: 6,\n signature:\n \"30440220295e0aeb17ca0929b2a94c324d67d0b5528aba268177f3ac297b563141e0002702203ac360d9fd0c9c0c12279d1e73bea5d549a1e8141f454d88fbe1e8ef970e6802\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(MESSAGE_INFO_APDU);\n });\n\n it(\"Raw APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Raw,\n discarded: false,\n displayName: \"From\",\n signature:\n \"3045022100b820e4dfb1a0cde6dc97d9a34eebb1a4eef0b226262e6788118ab3c7fb79fe3502202d426a388b4c3a8096b3f84412a702ea537770e61ee0727ec1b710c1da520c44\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(RAW_APDU);\n });\n\n it(\"Token APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 1,\n signature:\n \"3045022100ff727847445431e571cd2a0d9db42a7eb62e37877b9bf20e6a96584255347e1902200a6e95b7f8e63b2fab0bef88c747de6a387d06351be5bdc34b2c1f9aea6fdd28\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(TOKEN_APDU);\n });\n\n it(\"Amount APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Receive minimum\",\n tokenIndex: 1,\n signature:\n \"3045022100a59dc479a838a813909c140a15e6b65bc58c5633284bf973c436de5a592634e202201e038fc7995d939fccd546e4c85e793c0ad451216e36a4edfc7bce5be27808cb\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(AMOUNT_APDU);\n });\n\n it(\"Date-time APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Datetime,\n discarded: false,\n displayName: \"Approval expire\",\n signature:\n \"3045022100e847166e60f851e3c8d1f44139811898ccd0d3a03aed6c77f8c3993813f479d2022031fe6b6a574b56c5104003cf07900d11ffaf303dc016da4c1c3d184663da8f6a\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(DATE_TIME_APDU);\n });\n\n it(\"Discarded filter\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Raw,\n discarded: true,\n displayName: \"From\",\n signature:\n \"3045022100b820e4dfb1a0cde6dc97d9a34eebb1a4eef0b226262e6788118ab3c7fb79fe3502202d426a388b4c3a8096b3f84412a702ea537770e61ee0727ec1b710c1da520c44\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(\n Uint8Array.from([...RAW_APDU.slice(0, 2), 0x01, ...RAW_APDU.slice(3)]),\n );\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return an error if the response status code is invalid\", () => {\n // GIVEN\n const response: ApduResponse = {\n statusCode: Buffer.from([0x6a, 0x80]), // Invalid status code\n data: Buffer.from([]),\n };\n // WHEN\n const command = new SendEIP712FilteringCommand({\n type: Eip712FilterType.Activation,\n });\n // THEN\n const result = command.parseResponse(response);\n expect(isSuccessCommandResult(result)).toBe(false);\n });\n\n it(\"should parse the response\", () => {\n // GIVEN\n const response: ApduResponse = {\n statusCode: Buffer.from([0x90, 0x00]), // Success status code\n data: Buffer.from([]),\n };\n // WHEN\n const command = new SendEIP712FilteringCommand({\n type: Eip712FilterType.Activation,\n });\n // THEN\n expect(command.parseResponse(response)).toStrictEqual(\n CommandResultFactory({ data: undefined }),\n );\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "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
|
|
6
|
-
"names": ["import_device_management_kit", "import_SendEIP712FilteringCommand", "ACTIVATE_APDU", "MESSAGE_INFO_APDU", "RAW_APDU", "TOKEN_APDU", "AMOUNT_APDU", "DATE_TIME_APDU", "DISCARDED_PATH_APDU", "args", "apdu", "response", "result", "command"]
|
|
4
|
+
"sourcesContent": ["import {\n type ApduResponse,\n CommandResultFactory,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport {\n Eip712FilterType,\n SendEIP712FilteringCommand,\n type SendEIP712FilteringCommandArgs,\n} from \"./SendEIP712FilteringCommand\";\n\nconst ACTIVATE_APDU = Uint8Array.from([0xe0, 0x1e, 0x00, 0x00, 0x00]);\nconst MESSAGE_INFO_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0x0f, 0x54, 0x0b, 0x31, 0x69, 0x6e, 0x63, 0x68, 0x20, 0x4f,\n 0x72, 0x64, 0x65, 0x72, 0x06, 0x46, 0x30, 0x44, 0x02, 0x20, 0x29, 0x5e, 0x0a,\n 0xeb, 0x17, 0xca, 0x09, 0x29, 0xb2, 0xa9, 0x4c, 0x32, 0x4d, 0x67, 0xd0, 0xb5,\n 0x52, 0x8a, 0xba, 0x26, 0x81, 0x77, 0xf3, 0xac, 0x29, 0x7b, 0x56, 0x31, 0x41,\n 0xe0, 0x00, 0x27, 0x02, 0x20, 0x3a, 0xc3, 0x60, 0xd9, 0xfd, 0x0c, 0x9c, 0x0c,\n 0x12, 0x27, 0x9d, 0x1e, 0x73, 0xbe, 0xa5, 0xd5, 0x49, 0xa1, 0xe8, 0x14, 0x1f,\n 0x45, 0x4d, 0x88, 0xfb, 0xe1, 0xe8, 0xef, 0x97, 0x0e, 0x68, 0x02,\n]);\nconst RAW_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0xff, 0x4d, 0x04, 0x46, 0x72, 0x6f, 0x6d, 0x47, 0x30, 0x45,\n 0x02, 0x21, 0x00, 0xb8, 0x20, 0xe4, 0xdf, 0xb1, 0xa0, 0xcd, 0xe6, 0xdc, 0x97,\n 0xd9, 0xa3, 0x4e, 0xeb, 0xb1, 0xa4, 0xee, 0xf0, 0xb2, 0x26, 0x26, 0x2e, 0x67,\n 0x88, 0x11, 0x8a, 0xb3, 0xc7, 0xfb, 0x79, 0xfe, 0x35, 0x02, 0x20, 0x2d, 0x42,\n 0x6a, 0x38, 0x8b, 0x4c, 0x3a, 0x80, 0x96, 0xb3, 0xf8, 0x44, 0x12, 0xa7, 0x02,\n 0xea, 0x53, 0x77, 0x70, 0xe6, 0x1e, 0xe0, 0x72, 0x7e, 0xc1, 0xb7, 0x10, 0xc1,\n 0xda, 0x52, 0x0c, 0x44,\n]);\nconst TOKEN_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0xfd, 0x49, 0x01, 0x47, 0x30, 0x45, 0x02, 0x21, 0x00, 0xff,\n 0x72, 0x78, 0x47, 0x44, 0x54, 0x31, 0xe5, 0x71, 0xcd, 0x2a, 0x0d, 0x9d, 0xb4,\n 0x2a, 0x7e, 0xb6, 0x2e, 0x37, 0x87, 0x7b, 0x9b, 0xf2, 0x0e, 0x6a, 0x96, 0x58,\n 0x42, 0x55, 0x34, 0x7e, 0x19, 0x02, 0x20, 0x0a, 0x6e, 0x95, 0xb7, 0xf8, 0xe6,\n 0x3b, 0x2f, 0xab, 0x0b, 0xef, 0x88, 0xc7, 0x47, 0xde, 0x6a, 0x38, 0x7d, 0x06,\n 0x35, 0x1b, 0xe5, 0xbd, 0xc3, 0x4b, 0x2c, 0x1f, 0x9a, 0xea, 0x6f, 0xdd, 0x28,\n]);\nconst AMOUNT_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0xfe, 0x59, 0x0f, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,\n 0x20, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x01, 0x47, 0x30, 0x45, 0x02,\n 0x21, 0x00, 0xa5, 0x9d, 0xc4, 0x79, 0xa8, 0x38, 0xa8, 0x13, 0x90, 0x9c, 0x14,\n 0x0a, 0x15, 0xe6, 0xb6, 0x5b, 0xc5, 0x8c, 0x56, 0x33, 0x28, 0x4b, 0xf9, 0x73,\n 0xc4, 0x36, 0xde, 0x5a, 0x59, 0x26, 0x34, 0xe2, 0x02, 0x20, 0x1e, 0x03, 0x8f,\n 0xc7, 0x99, 0x5d, 0x93, 0x9f, 0xcc, 0xd5, 0x46, 0xe4, 0xc8, 0x5e, 0x79, 0x3c,\n 0x0a, 0xd4, 0x51, 0x21, 0x6e, 0x36, 0xa4, 0xed, 0xfc, 0x7b, 0xce, 0x5b, 0xe2,\n 0x78, 0x08, 0xcb,\n]);\nconst TRUSTED_NAME_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0xfb, 0x56, 0x07, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x72,\n 0x01, 0x02, 0x03, 0x01, 0x00, 0x02, 0x47, 0x30, 0x45, 0x02, 0x21, 0x00, 0xe8,\n 0x47, 0x16, 0x6e, 0x60, 0xf8, 0x51, 0xe3, 0xc8, 0xd1, 0xf4, 0x41, 0x39, 0x81,\n 0x18, 0x98, 0xcc, 0xd0, 0xd3, 0xa0, 0x3a, 0xed, 0x6c, 0x77, 0xf8, 0xc3, 0x99,\n 0x38, 0x13, 0xf4, 0x79, 0xd2, 0x02, 0x20, 0x31, 0xfe, 0x6b, 0x6a, 0x57, 0x4b,\n 0x56, 0xc5, 0x10, 0x40, 0x03, 0xcf, 0x07, 0x90, 0x0d, 0x11, 0xff, 0xaf, 0x30,\n 0x3d, 0xc0, 0x16, 0xda, 0x4c, 0x1c, 0x3d, 0x18, 0x46, 0x63, 0xda, 0x8f, 0x6a,\n]);\nconst DATE_TIME_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0xfc, 0x58, 0x0f, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61,\n 0x6c, 0x20, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x47, 0x30, 0x45, 0x02, 0x21,\n 0x00, 0xe8, 0x47, 0x16, 0x6e, 0x60, 0xf8, 0x51, 0xe3, 0xc8, 0xd1, 0xf4, 0x41,\n 0x39, 0x81, 0x18, 0x98, 0xcc, 0xd0, 0xd3, 0xa0, 0x3a, 0xed, 0x6c, 0x77, 0xf8,\n 0xc3, 0x99, 0x38, 0x13, 0xf4, 0x79, 0xd2, 0x02, 0x20, 0x31, 0xfe, 0x6b, 0x6a,\n 0x57, 0x4b, 0x56, 0xc5, 0x10, 0x40, 0x03, 0xcf, 0x07, 0x90, 0x0d, 0x11, 0xff,\n 0xaf, 0x30, 0x3d, 0xc0, 0x16, 0xda, 0x4c, 0x1c, 0x3d, 0x18, 0x46, 0x63, 0xda,\n 0x8f, 0x6a,\n]);\nconst DISCARDED_PATH_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0x01, 0x11, 0x10, 0x74, 0x6f, 0x2e, 0x5b, 0x5d, 0x2e, 0x77,\n 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x2e, 0x5b, 0x5d,\n]);\n\ndescribe(\"SendEIP712FilteringCommand\", () => {\n describe(\"getApdu\", () => {\n it(\"Activate APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Activation,\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(ACTIVATE_APDU);\n });\n\n it(\"Discarded path APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.DiscardedPath,\n path: \"to.[].wallets.[]\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(DISCARDED_PATH_APDU);\n });\n\n it(\"Message info APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.MessageInfo,\n displayName: \"1inch Order\",\n filtersCount: 6,\n signature:\n \"30440220295e0aeb17ca0929b2a94c324d67d0b5528aba268177f3ac297b563141e0002702203ac360d9fd0c9c0c12279d1e73bea5d549a1e8141f454d88fbe1e8ef970e6802\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(MESSAGE_INFO_APDU);\n });\n\n it(\"Raw APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Raw,\n discarded: false,\n displayName: \"From\",\n signature:\n \"3045022100b820e4dfb1a0cde6dc97d9a34eebb1a4eef0b226262e6788118ab3c7fb79fe3502202d426a388b4c3a8096b3f84412a702ea537770e61ee0727ec1b710c1da520c44\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(RAW_APDU);\n });\n\n it(\"Token APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 1,\n signature:\n \"3045022100ff727847445431e571cd2a0d9db42a7eb62e37877b9bf20e6a96584255347e1902200a6e95b7f8e63b2fab0bef88c747de6a387d06351be5bdc34b2c1f9aea6fdd28\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(TOKEN_APDU);\n });\n\n it(\"Amount APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Receive minimum\",\n tokenIndex: 1,\n signature:\n \"3045022100a59dc479a838a813909c140a15e6b65bc58c5633284bf973c436de5a592634e202201e038fc7995d939fccd546e4c85e793c0ad451216e36a4edfc7bce5be27808cb\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(AMOUNT_APDU);\n });\n\n it(\"Date-time APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Datetime,\n discarded: false,\n displayName: \"Approval expire\",\n signature:\n \"3045022100e847166e60f851e3c8d1f44139811898ccd0d3a03aed6c77f8c3993813f479d2022031fe6b6a574b56c5104003cf07900d11ffaf303dc016da4c1c3d184663da8f6a\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(DATE_TIME_APDU);\n });\n\n it(\"Trusted name APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.TrustedName,\n discarded: false,\n displayName: \"Spender\",\n typesAndSourcesPayload: \"010203010002\",\n signature:\n \"3045022100e847166e60f851e3c8d1f44139811898ccd0d3a03aed6c77f8c3993813f479d2022031fe6b6a574b56c5104003cf07900d11ffaf303dc016da4c1c3d184663da8f6a\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(TRUSTED_NAME_APDU);\n });\n\n it(\"Discarded filter\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Raw,\n discarded: true,\n displayName: \"From\",\n signature:\n \"3045022100b820e4dfb1a0cde6dc97d9a34eebb1a4eef0b226262e6788118ab3c7fb79fe3502202d426a388b4c3a8096b3f84412a702ea537770e61ee0727ec1b710c1da520c44\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(\n Uint8Array.from([...RAW_APDU.slice(0, 2), 0x01, ...RAW_APDU.slice(3)]),\n );\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return an error if the response status code is invalid\", () => {\n // GIVEN\n const response: ApduResponse = {\n statusCode: Buffer.from([0x6a, 0x80]), // Invalid status code\n data: Buffer.from([]),\n };\n // WHEN\n const command = new SendEIP712FilteringCommand({\n type: Eip712FilterType.Activation,\n });\n // THEN\n const result = command.parseResponse(response);\n expect(isSuccessCommandResult(result)).toBe(false);\n });\n\n it(\"should parse the response\", () => {\n // GIVEN\n const response: ApduResponse = {\n statusCode: Buffer.from([0x90, 0x00]), // Success status code\n data: Buffer.from([]),\n };\n // WHEN\n const command = new SendEIP712FilteringCommand({\n type: Eip712FilterType.Activation,\n });\n // THEN\n expect(command.parseResponse(response)).toStrictEqual(\n CommandResultFactory({ data: undefined }),\n );\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_device_management_kit", "import_SendEIP712FilteringCommand", "ACTIVATE_APDU", "MESSAGE_INFO_APDU", "RAW_APDU", "TOKEN_APDU", "AMOUNT_APDU", "TRUSTED_NAME_APDU", "DATE_TIME_APDU", "DISCARDED_PATH_APDU", "args", "apdu", "response", "result", "command"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var t=require("@ledgerhq/device-management-kit"),s=require("purify-ts"),n=require("./SignTransactionCommand");const x=new t.ApduResponse({statusCode:Uint8Array.from([144,0]),data:new Uint8Array([])}),r=new Uint8Array([38,141,39,68,71,17,187,237,68,43,155,252,119,5,192,115,22,183,228,17,80,197,51,18,114,228,210,9,212,34,249,250,57,0,204,63,12,25,56,192,241,255,198,45,240,55,34,90,19,54,251,161,249,254,250,17,245,175,197,188,185,126,177,179,209,144,0]),c=new t.ApduResponse({statusCode:Uint8Array.from([144,0]),data:r});describe("SignTransactionCommand",()=>{const
|
|
1
|
+
"use strict";var t=require("@ledgerhq/device-management-kit"),s=require("purify-ts"),n=require("./SignTransactionCommand");const x=new t.ApduResponse({statusCode:Uint8Array.from([144,0]),data:new Uint8Array([])}),r=new Uint8Array([38,141,39,68,71,17,187,237,68,43,155,252,119,5,192,115,22,183,228,17,80,197,51,18,114,228,210,9,212,34,249,250,57,0,204,63,12,25,56,192,241,255,198,45,240,55,34,90,19,54,251,161,249,254,250,17,245,175,197,188,185,126,177,179,209,144,0]),c=new t.ApduResponse({statusCode:Uint8Array.from([144,0]),data:r});describe("SignTransactionCommand",()=>{const o={serializedTransaction:new Uint8Array,isFirstChunk:!0};describe("getApdu",()=>{describe("Legacy",()=>{it("should return the correct APDU when the data is empty",()=>{const e=new n.SignTransactionCommand({...o}).getApdu();expect(e.data).toStrictEqual(new Uint8Array),expect(e.cla).toBe(224),expect(e.ins).toBe(4),expect(e.p1).toBe(0),expect(e.p2).toBe(0)}),it("should return the correct APDU when the data is not empty",()=>{const e=new n.SignTransactionCommand({...o,serializedTransaction:new Uint8Array([1,2,3])}).getApdu();expect(e.data).toStrictEqual(new Uint8Array([1,2,3])),expect(e.cla).toBe(224),expect(e.ins).toBe(4),expect(e.p1).toBe(0),expect(e.p2).toBe(0)}),it("should return the correct APDU when it is not the first chunk",()=>{const e=new n.SignTransactionCommand({...o,isFirstChunk:!1}).getApdu();expect(e.data).toStrictEqual(new Uint8Array),expect(e.cla).toBe(224),expect(e.ins).toBe(4),expect(e.p1).toBe(128),expect(e.p2).toBe(0)})}),describe.todo("Store and start",()=>{}),describe.todo("Start",()=>{})}),describe("parseResponse",()=>{it("should return Nothing when the response data is empty",()=>{const e=new n.SignTransactionCommand({...o}).parseResponse(x);expect(e).toStrictEqual((0,t.CommandResultFactory)({data:s.Nothing}))}),it("should return Just the response data when the response data is not empty",()=>{const e=new n.SignTransactionCommand({...o}).parseResponse(c);expect(e).toStrictEqual((0,t.CommandResultFactory)({data:(0,s.Just)({r:"0x8d27444711bbed442b9bfc7705c07316b7e41150c5331272e4d209d422f9fa39",s:"0x00cc3f0c1938c0f1ffc62df037225a1336fba1f9fefa11f5afc5bcb97eb1b3d1",v:38})}))}),it("should return a UnknownDeviceExchangeError when the response status code is not 0x9000",()=>{const e=new n.SignTransactionCommand({...o}).parseResponse(new t.ApduResponse({statusCode:Uint8Array.from([81,85]),data:new Uint8Array}));expect((0,t.isSuccessCommandResult)(e)).toBe(!1),expect(e.error).toBeInstanceOf(t.UnknownDeviceExchangeError)}),it("should return an InvalidStatusWord error when the response data r is not valid",()=>{const e=new n.SignTransactionCommand({...o}).parseResponse(new t.ApduResponse({statusCode:Uint8Array.from([144,0]),data:r.slice(0,1)}));expect((0,t.isSuccessCommandResult)(e)).toBe(!1),expect(e.error).toBeInstanceOf(t.InvalidStatusWordError)}),it("should return an error when the response data s is not valid",()=>{const e=new n.SignTransactionCommand({...o}).parseResponse(new t.ApduResponse({statusCode:Uint8Array.from([144,0]),data:r.slice(0,33)}));expect((0,t.isSuccessCommandResult)(e)).toBe(!1)})})});
|
|
2
2
|
//# sourceMappingURL=SignTransactionCommand.test.js.map
|