@ledgerhq/device-signer-kit-ethereum 0.0.0-hid-candidate-4-20250528125313 → 0.0.0-intent-queue-1-20251112094350
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 +112 -1
- package/lib/cjs/api/SignerEth.js +1 -1
- package/lib/cjs/api/SignerEth.js.map +1 -1
- package/lib/cjs/api/SignerEthBuilder.test.js +1 -1
- package/lib/cjs/api/SignerEthBuilder.test.js.map +2 -2
- package/lib/cjs/api/app-binder/SignDelegationAuthorizationTypes.js +2 -0
- package/lib/cjs/api/app-binder/SignDelegationAuthorizationTypes.js.map +7 -0
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
- package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
- package/lib/cjs/api/app-binder/VerifySafeAddressDeviceActionTypes.js +2 -0
- package/lib/cjs/api/app-binder/VerifySafeAddressDeviceActionTypes.js.map +7 -0
- package/lib/cjs/api/index.js +1 -1
- package/lib/cjs/api/index.js.map +3 -3
- package/lib/cjs/api/model/ClearSigningType.js +2 -0
- package/lib/cjs/api/model/ClearSigningType.js.map +7 -0
- package/lib/cjs/api/model/SafeAddressOptions.js +2 -0
- package/lib/cjs/api/model/SafeAddressOptions.js.map +7 -0
- package/lib/cjs/internal/DefaultSignerEth.js +1 -1
- package/lib/cjs/internal/DefaultSignerEth.js.map +3 -3
- package/lib/cjs/internal/DefaultSignerEth.test.js +1 -1
- package/lib/cjs/internal/DefaultSignerEth.test.js.map +3 -3
- 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.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetAddressCommand.js.map +2 -2
- 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 +1 -1
- package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/GetChallengeCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetChallengeCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/GetChallengeCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetChallengeCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ProvideNFTInformationCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideNFTInformationCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/ProvideNFTInformationCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideNFTInformationCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js.map +3 -3
- 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/SendEIP712StructDefinitionCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.test.js +2 -2
- package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SetPluginCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SetPluginCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/SetPluginCommand.test.js +2 -2
- package/lib/cjs/internal/app-binder/command/SetPluginCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/SignEIP712Command.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignEIP712Command.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SignEIP712Command.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignEIP712Command.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/SignPersonalMessageCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignPersonalMessageCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/SignPersonalMessageCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignPersonalMessageCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SignTransactionCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignTransactionCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/StartTransactionCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/StartTransactionCommand.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 +3 -3
- package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.test.js.map +3 -3
- 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/VerifySafeAddress/VerifySafeAddress.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js.map +7 -0
- 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__/testDeviceActionUntilStep.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildBaseContexts.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildBaseContexts.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js.map +7 -0
- 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/BuildFullContextsTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ParseTransactionTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/ParseTransactionTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ParseTransactionTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/ParseTransactionTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ProvideContextTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/ProvideContextTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ProvideContextTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/ProvideContextTask.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/ProvideTransactionContextsTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.test.js.map +3 -3
- package/lib/cjs/internal/di.js +1 -1
- package/lib/cjs/internal/di.js.map +3 -3
- package/lib/cjs/internal/eip7702/di/eip7702Module.js +2 -0
- package/lib/cjs/internal/eip7702/di/eip7702Module.js.map +7 -0
- package/lib/cjs/internal/eip7702/di/eip7702Module.test.js +2 -0
- package/lib/cjs/internal/eip7702/di/eip7702Module.test.js.map +7 -0
- package/lib/cjs/internal/eip7702/di/eip7702Types.js +2 -0
- package/lib/cjs/internal/eip7702/di/eip7702Types.js.map +7 -0
- package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js +2 -0
- package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js.map +7 -0
- package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js +2 -0
- package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js.map +7 -0
- package/lib/cjs/internal/safe/di/safeModule.js +2 -0
- package/lib/cjs/internal/safe/di/safeModule.js.map +7 -0
- package/lib/cjs/internal/safe/di/safeModule.test.js +2 -0
- package/lib/cjs/internal/safe/di/safeModule.test.js.map +7 -0
- package/lib/cjs/internal/safe/di/safeTypes.js +2 -0
- package/lib/cjs/internal/safe/di/safeTypes.js.map +7 -0
- package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.js +2 -0
- package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.js.map +7 -0
- package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.test.js +2 -0
- package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.test.js.map +7 -0
- package/lib/cjs/internal/shared/utils/ApplicationChecker.js +1 -1
- package/lib/cjs/internal/shared/utils/ApplicationChecker.js.map +3 -3
- package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js +1 -1
- package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js.map +2 -2
- package/lib/cjs/internal/transaction/di/transactionModule.js +1 -1
- package/lib/cjs/internal/transaction/di/transactionModule.js.map +3 -3
- package/lib/cjs/internal/transaction/di/transactionModule.test.js +1 -1
- package/lib/cjs/internal/transaction/di/transactionModule.test.js.map +2 -2
- package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.js +2 -0
- package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.js.map +7 -0
- package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.test.js +2 -0
- package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.test.js.map +7 -0
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.js +1 -1
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.js.map +3 -3
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js +1 -1
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js.map +3 -3
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js.map +3 -3
- package/lib/cjs/package.json +1 -1
- package/lib/esm/api/SignerEthBuilder.test.js +1 -1
- package/lib/esm/api/SignerEthBuilder.test.js.map +2 -2
- package/lib/esm/api/app-binder/SignDelegationAuthorizationTypes.js +1 -0
- package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
- package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
- package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
- package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
- package/lib/esm/api/app-binder/VerifySafeAddressDeviceActionTypes.js +2 -0
- package/lib/esm/api/app-binder/VerifySafeAddressDeviceActionTypes.js.map +7 -0
- package/lib/esm/api/index.js +1 -1
- package/lib/esm/api/index.js.map +2 -2
- package/lib/esm/api/model/ClearSigningType.js +2 -0
- package/lib/esm/api/model/ClearSigningType.js.map +7 -0
- package/lib/esm/api/model/SafeAddressOptions.js +1 -0
- package/lib/esm/api/model/SafeAddressOptions.js.map +7 -0
- package/lib/esm/internal/DefaultSignerEth.js +1 -1
- package/lib/esm/internal/DefaultSignerEth.js.map +3 -3
- package/lib/esm/internal/DefaultSignerEth.test.js +1 -1
- package/lib/esm/internal/DefaultSignerEth.test.js.map +3 -3
- 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.js +1 -1
- package/lib/esm/internal/app-binder/command/GetAddressCommand.js.map +2 -2
- 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 +1 -1
- package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/GetChallengeCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/GetChallengeCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/GetChallengeCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/GetChallengeCommand.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/ProvideEnumCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideEnumCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/ProvideEnumCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideEnumCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ProvideNFTInformationCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideNFTInformationCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/ProvideNFTInformationCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideNFTInformationCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js.map +3 -3
- 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/SendEIP712StructDefinitionCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.test.js +2 -2
- package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SetPluginCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SetPluginCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/SetPluginCommand.test.js +2 -2
- package/lib/esm/internal/app-binder/command/SetPluginCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/SignEIP712Command.js +1 -1
- package/lib/esm/internal/app-binder/command/SignEIP712Command.js.map +2 -2
- package/lib/esm/internal/app-binder/command/SignEIP712Command.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SignEIP712Command.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/SignPersonalMessageCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SignPersonalMessageCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/SignPersonalMessageCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SignPersonalMessageCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SignTransactionCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SignTransactionCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/StartTransactionCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/StartTransactionCommand.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 +3 -3
- package/lib/esm/internal/app-binder/command/StoreTransactionCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/StoreTransactionCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/StoreTransactionCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/StoreTransactionCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.test.js.map +3 -3
- 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/VerifySafeAddress/VerifySafeAddress.js +2 -0
- package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js +2 -0
- package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js.map +7 -0
- 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__/testDeviceActionUntilStep.js +2 -0
- package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildBaseContexts.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildBaseContexts.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js.map +7 -0
- 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/BuildFullContextsTask.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildFullContextsTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildFullContextsTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildFullContextsTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.js +2 -0
- package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ParseTransactionTask.js +2 -0
- package/lib/esm/internal/app-binder/task/ParseTransactionTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ParseTransactionTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/ParseTransactionTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ProvideContextTask.js +2 -0
- package/lib/esm/internal/app-binder/task/ProvideContextTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ProvideContextTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/ProvideContextTask.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/ProvideTransactionContextsTask.js +2 -0
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.js +2 -0
- package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/SendSignTransactionTask.js +1 -1
- package/lib/esm/internal/app-binder/task/SendSignTransactionTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SendSignTransactionTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SendSignTransactionTask.test.js.map +3 -3
- package/lib/esm/internal/di.js +1 -1
- package/lib/esm/internal/di.js.map +3 -3
- package/lib/esm/internal/eip7702/di/eip7702Module.js +2 -0
- package/lib/esm/internal/eip7702/di/eip7702Module.js.map +7 -0
- package/lib/esm/internal/eip7702/di/eip7702Module.test.js +2 -0
- package/lib/esm/internal/eip7702/di/eip7702Module.test.js.map +7 -0
- package/lib/esm/internal/eip7702/di/eip7702Types.js +2 -0
- package/lib/esm/internal/eip7702/di/eip7702Types.js.map +7 -0
- package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js +2 -0
- package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js.map +7 -0
- package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js +2 -0
- package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js.map +7 -0
- package/lib/esm/internal/safe/di/safeModule.js +2 -0
- package/lib/esm/internal/safe/di/safeModule.js.map +7 -0
- package/lib/esm/internal/safe/di/safeModule.test.js +2 -0
- package/lib/esm/internal/safe/di/safeModule.test.js.map +7 -0
- package/lib/esm/internal/safe/di/safeTypes.js +2 -0
- package/lib/esm/internal/safe/di/safeTypes.js.map +7 -0
- package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.js +2 -0
- package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.js.map +7 -0
- package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.test.js +2 -0
- package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.test.js.map +7 -0
- package/lib/esm/internal/shared/utils/ApplicationChecker.js +1 -1
- package/lib/esm/internal/shared/utils/ApplicationChecker.js.map +3 -3
- package/lib/esm/internal/shared/utils/ApplicationChecker.test.js +1 -1
- package/lib/esm/internal/shared/utils/ApplicationChecker.test.js.map +2 -2
- package/lib/esm/internal/transaction/di/transactionModule.js +1 -1
- package/lib/esm/internal/transaction/di/transactionModule.js.map +3 -3
- package/lib/esm/internal/transaction/di/transactionModule.test.js +1 -1
- package/lib/esm/internal/transaction/di/transactionModule.test.js.map +2 -2
- package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.js +2 -0
- package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.js.map +7 -0
- package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.test.js +2 -0
- package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.test.js.map +7 -0
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.js +0 -1
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.js.map +4 -4
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.js +1 -1
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.js.map +3 -3
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js.map +3 -3
- package/lib/esm/package.json +1 -1
- package/lib/types/api/SignerEth.d.ts +7 -2
- package/lib/types/api/SignerEth.d.ts.map +1 -1
- package/lib/types/api/app-binder/SignDelegationAuthorizationTypes.d.ts +19 -0
- package/lib/types/api/app-binder/SignDelegationAuthorizationTypes.d.ts.map +1 -0
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +12 -11
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts +6 -0
- package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/app-binder/VerifySafeAddressDeviceActionTypes.d.ts +30 -0
- package/lib/types/api/app-binder/VerifySafeAddressDeviceActionTypes.d.ts.map +1 -0
- package/lib/types/api/index.d.ts +5 -4
- package/lib/types/api/index.d.ts.map +1 -1
- package/lib/types/api/model/ClearSigningType.d.ts +5 -0
- package/lib/types/api/model/ClearSigningType.d.ts.map +1 -0
- package/lib/types/api/model/SafeAddressOptions.d.ts +5 -0
- package/lib/types/api/model/SafeAddressOptions.d.ts.map +1 -0
- package/lib/types/internal/DefaultSignerEth.d.ts +5 -0
- package/lib/types/internal/DefaultSignerEth.d.ts.map +1 -1
- package/lib/types/internal/app-binder/EthAppBinder.d.ts +14 -1
- package/lib/types/internal/app-binder/EthAppBinder.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/GetAddressCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/GetAddressCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/GetChallengeCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/GetChallengeCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideEnumCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/ProvideEnumCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideNFTInformationCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/ProvideNFTInformationCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts +29 -0
- package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts +21 -0
- package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.d.ts +35 -0
- package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideTokenInformationCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/ProvideTokenInformationCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideTransactionInformationCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/ProvideTransactionInformationCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideTrustedNameCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/ProvideTrustedNameCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideWeb3CheckCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/ProvideWeb3CheckCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts +30 -1
- package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SendEIP712StructDefinitionCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/SendEIP712StructDefinitionCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SendEIP712StructImplemCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/SendEIP712StructImplemCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SetExternalPluginCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/SetExternalPluginCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SetPluginCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/SetPluginCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.d.ts +30 -0
- package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/SignEIP712Command.d.ts +1 -0
- package/lib/types/internal/app-binder/command/SignEIP712Command.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SignPersonalMessageCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/SignPersonalMessageCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SignTransactionCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/SignTransactionCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/StartTransactionCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/StartTransactionCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/StoreTransactionCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/StoreTransactionCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/Web3CheckOptInCommand.d.ts +1 -0
- package/lib/types/internal/app-binder/command/Web3CheckOptInCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts +19 -36
- 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 +9 -0
- package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.d.ts +20 -0
- package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.d.ts +2 -0
- package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.d.ts.map +1 -0
- 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__/testDeviceActionUntilStep.d.ts +6 -0
- package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildBaseContexts.d.ts +47 -0
- package/lib/types/internal/app-binder/task/BuildBaseContexts.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildBaseContexts.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/BuildBaseContexts.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts +10 -3
- package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/BuildFullContextsTask.d.ts +39 -0
- package/lib/types/internal/app-binder/task/BuildFullContextsTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildFullContextsTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/BuildFullContextsTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.d.ts +19 -0
- package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildSubcontextsTask.d.ts +28 -0
- package/lib/types/internal/app-binder/task/BuildSubcontextsTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildSubcontextsTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/BuildSubcontextsTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.d.ts +21 -0
- package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ParseTransactionTask.d.ts +17 -0
- package/lib/types/internal/app-binder/task/ParseTransactionTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ParseTransactionTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/ParseTransactionTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideContextTask.d.ts +22 -0
- package/lib/types/internal/app-binder/task/ProvideContextTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideContextTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/ProvideContextTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts +16 -5
- package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts +36 -0
- package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts +2 -2
- package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.d.ts +18 -0
- package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/SendSignTransactionTask.d.ts +2 -1
- package/lib/types/internal/app-binder/task/SendSignTransactionTask.d.ts.map +1 -1
- package/lib/types/internal/di.d.ts.map +1 -1
- package/lib/types/internal/eip7702/di/eip7702Module.d.ts +3 -0
- package/lib/types/internal/eip7702/di/eip7702Module.d.ts.map +1 -0
- package/lib/types/internal/eip7702/di/eip7702Module.test.d.ts +2 -0
- package/lib/types/internal/eip7702/di/eip7702Module.test.d.ts.map +1 -0
- package/lib/types/internal/eip7702/di/eip7702Types.d.ts +4 -0
- package/lib/types/internal/eip7702/di/eip7702Types.d.ts.map +1 -0
- package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.d.ts +8 -0
- package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.d.ts.map +1 -0
- package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.d.ts +2 -0
- package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.d.ts.map +1 -0
- package/lib/types/internal/safe/di/safeModule.d.ts +3 -0
- package/lib/types/internal/safe/di/safeModule.d.ts.map +1 -0
- package/lib/types/internal/safe/di/safeModule.test.d.ts +2 -0
- package/lib/types/internal/safe/di/safeModule.test.d.ts.map +1 -0
- package/lib/types/internal/safe/di/safeTypes.d.ts +4 -0
- package/lib/types/internal/safe/di/safeTypes.d.ts.map +1 -0
- package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.d.ts +9 -0
- package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.d.ts.map +1 -0
- package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.test.d.ts +2 -0
- package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.test.d.ts.map +1 -0
- package/lib/types/internal/shared/utils/ApplicationChecker.d.ts.map +1 -1
- package/lib/types/internal/transaction/di/transactionModule.d.ts.map +1 -1
- package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.d.ts +8 -0
- package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.d.ts.map +1 -0
- package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.test.d.ts +2 -0
- package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.test.d.ts.map +1 -0
- package/lib/types/internal/transaction/service/mapper/TransactionMapperService.d.ts +4 -7
- package/lib/types/internal/transaction/service/mapper/TransactionMapperService.d.ts.map +1 -1
- package/lib/types/internal/transaction/service/parser/TransactionParserService.d.ts +2 -2
- package/lib/types/internal/transaction/service/parser/TransactionParserService.d.ts.map +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/lib/cjs/internal/app-binder/constant/plugins.js +0 -2
- package/lib/cjs/internal/app-binder/constant/plugins.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js +0 -2
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js +0 -2
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapper.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapper.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js.map +0 -7
- package/lib/esm/internal/app-binder/constant/plugins.js +0 -2
- package/lib/esm/internal/app-binder/constant/plugins.js.map +0 -7
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js +0 -2
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js +0 -2
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js.map +0 -7
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js +0 -2
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js +0 -2
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +0 -7
- package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.js +0 -2
- package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.js.map +0 -7
- package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js +0 -2
- package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js.map +0 -7
- package/lib/esm/internal/transaction/service/mapper/TransactionMapper.js +0 -1
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js +0 -2
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js.map +0 -7
- package/lib/types/internal/app-binder/constant/plugins.d.ts +0 -2
- package/lib/types/internal/app-binder/constant/plugins.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts +0 -32
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.test.d.ts +0 -2
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.test.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts +0 -30
- package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/GetWeb3CheckTask.test.d.ts +0 -2
- package/lib/types/internal/app-binder/task/GetWeb3CheckTask.test.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts +0 -38
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.test.d.ts +0 -2
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.test.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts +0 -80
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.d.ts +0 -2
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts +0 -28
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.test.d.ts +0 -2
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.test.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.d.ts +0 -7
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.test.d.ts +0 -2
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.test.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/TransactionMapper.d.ts +0 -6
- package/lib/types/internal/transaction/service/mapper/TransactionMapper.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/TransactionMapperService.test.d.ts +0 -2
- package/lib/types/internal/transaction/service/mapper/TransactionMapperService.test.d.ts.map +0 -1
- /package/lib/esm/{internal/transaction/service/mapper/TransactionMapper.js.map → api/app-binder/SignDelegationAuthorizationTypes.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/command/SignTransactionCommand.ts"],
|
|
4
|
-
"sourcesContent": ["// https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#sign-eth-transaction\nimport {\n type Apdu,\n ApduBuilder,\n type ApduBuilderArgs,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n type HexaString,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Just, Maybe, Nothing } from \"purify-ts\";\n\nimport {\n ETH_APP_ERRORS,\n EthAppCommandErrorFactory,\n type EthErrorCodes,\n} from \"./utils/ethAppErrors\";\n\nconst R_LENGTH = 32;\nconst S_LENGTH = 32;\n\nexport type SignTransactionCommandResponse = Maybe<{\n v: number;\n r: HexaString;\n s: HexaString;\n}>;\n\nexport type SignTransactionCommandArgs = {\n /**\n * The transaction to sign in max 150 bytes chunks\n */\n readonly serializedTransaction: Uint8Array;\n /**\n * If this is the first chunk of the message\n */\n readonly isFirstChunk: boolean;\n};\n\nexport class SignTransactionCommand\n implements\n Command<\n SignTransactionCommandResponse,\n SignTransactionCommandArgs,\n EthErrorCodes\n >\n{\n private readonly errorHelper = new CommandErrorHelper<\n SignTransactionCommandResponse,\n EthErrorCodes\n >(ETH_APP_ERRORS, EthAppCommandErrorFactory);\n\n args: SignTransactionCommandArgs;\n\n constructor(args: SignTransactionCommandArgs) {\n this.args = args;\n }\n\n getApdu(): Apdu {\n const { serializedTransaction, isFirstChunk } = this.args;\n\n const signEthTransactionArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x04,\n p1: isFirstChunk ? 0x00 : 0x80,\n p2: 0x00,\n };\n\n const builder = new ApduBuilder(signEthTransactionArgs);\n\n return builder.addBufferToData(serializedTransaction).build();\n }\n\n parseResponse(\n response: ApduResponse,\n ): CommandResult<SignTransactionCommandResponse, EthErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(response),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(response);\n\n // The data is returned only for the last chunk\n const v = parser.extract8BitUInt();\n if (v === undefined) {\n return CommandResultFactory({ data: Nothing });\n }\n\n const r = parser.encodeToHexaString(\n parser.extractFieldByLength(R_LENGTH),\n true,\n );\n if (!r) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"R is missing\"),\n });\n }\n\n const s = parser.encodeToHexaString(\n parser.extractFieldByLength(S_LENGTH),\n true,\n );\n if (!s) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"S is missing\"),\n });\n }\n\n return CommandResultFactory({\n data: Just({\n v,\n r,\n s,\n }),\n });\n });\n }\n}\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAWO,2CACPC,EAAmC,kCACnCC,EAAqC,qBAErCC,EAIO,gCAEP,MAAMC,EAAW,GACXC,EAAW,GAmBV,MAAMP,CAOb,
|
|
4
|
+
"sourcesContent": ["// https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#sign-eth-transaction\nimport {\n type Apdu,\n ApduBuilder,\n type ApduBuilderArgs,\n ApduParser,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n type HexaString,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Just, Maybe, Nothing } from \"purify-ts\";\n\nimport {\n ETH_APP_ERRORS,\n EthAppCommandErrorFactory,\n type EthErrorCodes,\n} from \"./utils/ethAppErrors\";\n\nconst R_LENGTH = 32;\nconst S_LENGTH = 32;\n\nexport type SignTransactionCommandResponse = Maybe<{\n v: number;\n r: HexaString;\n s: HexaString;\n}>;\n\nexport type SignTransactionCommandArgs = {\n /**\n * The transaction to sign in max 150 bytes chunks\n */\n readonly serializedTransaction: Uint8Array;\n /**\n * If this is the first chunk of the message\n */\n readonly isFirstChunk: boolean;\n};\n\nexport class SignTransactionCommand\n implements\n Command<\n SignTransactionCommandResponse,\n SignTransactionCommandArgs,\n EthErrorCodes\n >\n{\n readonly name = \"signTransaction\";\n private readonly errorHelper = new CommandErrorHelper<\n SignTransactionCommandResponse,\n EthErrorCodes\n >(ETH_APP_ERRORS, EthAppCommandErrorFactory);\n\n args: SignTransactionCommandArgs;\n\n constructor(args: SignTransactionCommandArgs) {\n this.args = args;\n }\n\n getApdu(): Apdu {\n const { serializedTransaction, isFirstChunk } = this.args;\n\n const signEthTransactionArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x04,\n p1: isFirstChunk ? 0x00 : 0x80,\n p2: 0x00,\n };\n\n const builder = new ApduBuilder(signEthTransactionArgs);\n\n return builder.addBufferToData(serializedTransaction).build();\n }\n\n parseResponse(\n response: ApduResponse,\n ): CommandResult<SignTransactionCommandResponse, EthErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(response),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(response);\n\n // The data is returned only for the last chunk\n const v = parser.extract8BitUInt();\n if (v === undefined) {\n return CommandResultFactory({ data: Nothing });\n }\n\n const r = parser.encodeToHexaString(\n parser.extractFieldByLength(R_LENGTH),\n true,\n );\n if (!r) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"R is missing\"),\n });\n }\n\n const s = parser.encodeToHexaString(\n parser.extractFieldByLength(S_LENGTH),\n true,\n );\n if (!s) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"S is missing\"),\n });\n }\n\n return CommandResultFactory({\n data: Just({\n v,\n r,\n s,\n }),\n });\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAWO,2CACPC,EAAmC,kCACnCC,EAAqC,qBAErCC,EAIO,gCAEP,MAAMC,EAAW,GACXC,EAAW,GAmBV,MAAMP,CAOb,CACW,KAAO,kBACC,YAAc,IAAI,qBAGjC,iBAAgB,2BAAyB,EAE3C,KAEA,YAAYQ,EAAkC,CAC5C,KAAK,KAAOA,CACd,CAEA,SAAgB,CACd,KAAM,CAAE,sBAAAC,EAAuB,aAAAC,CAAa,EAAI,KAAK,KAE/CC,EAA0C,CAC9C,IAAK,IACL,IAAK,EACL,GAAID,EAAe,EAAO,IAC1B,GAAI,CACN,EAIA,OAFgB,IAAI,cAAYC,CAAsB,EAEvC,gBAAgBF,CAAqB,EAAE,MAAM,CAC9D,CAEA,cACEG,EAC8D,CAC9D,OAAO,QAAM,aACX,KAAK,YAAY,SAASA,CAAQ,CACpC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAS,IAAI,aAAWD,CAAQ,EAGhCE,EAAID,EAAO,gBAAgB,EACjC,GAAIC,IAAM,OACR,SAAO,wBAAqB,CAAE,KAAM,SAAQ,CAAC,EAG/C,MAAMC,EAAIF,EAAO,mBACfA,EAAO,qBAAqBP,CAAQ,EACpC,EACF,EACA,GAAI,CAACS,EACH,SAAO,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,cAAc,CAClD,CAAC,EAGH,MAAMC,EAAIH,EAAO,mBACfA,EAAO,qBAAqBN,CAAQ,EACpC,EACF,EACA,OAAKS,KAME,wBAAqB,CAC1B,QAAM,QAAK,CACT,EAAAF,EACA,EAAAC,EACA,EAAAC,CACF,CAAC,CACH,CAAC,KAXQ,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,cAAc,CAClD,CAAC,CAUL,CAAC,CACH,CACF",
|
|
6
6
|
"names": ["SignTransactionCommand_exports", "__export", "SignTransactionCommand", "__toCommonJS", "import_device_management_kit", "import_signer_utils", "import_purify_ts", "import_ethAppErrors", "R_LENGTH", "S_LENGTH", "args", "serializedTransaction", "isFirstChunk", "signEthTransactionArgs", "response", "parser", "v", "r", "s"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var t=require("@ledgerhq/device-management-kit"),s=require("purify-ts"),n=require("./SignTransactionCommand");const
|
|
1
|
+
"use strict";var t=require("@ledgerhq/device-management-kit"),s=require("purify-ts"),n=require("./SignTransactionCommand");const c=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]),x=new t.ApduResponse({statusCode:Uint8Array.from([144,0]),data:r});describe("SignTransactionCommand",()=>{const o={serializedTransaction:new Uint8Array,isFirstChunk:!0};describe("name",()=>{it("should be 'signTransaction'",()=>{const a=new n.SignTransactionCommand(o);expect(a.name).toBe("signTransaction")})}),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(c);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(x);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
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/command/SignTransactionCommand.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n InvalidStatusWordError,\n isSuccessCommandResult,\n UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\nimport { Just, Nothing } from \"purify-ts\";\n\nimport {\n SignTransactionCommand,\n type SignTransactionCommandArgs,\n} from \"./SignTransactionCommand\";\n\nconst LNX_RESPONSE_GOOD = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([]),\n});\n\nconst LNX_RESPONSE_DATA = new Uint8Array([\n 0x26, 0x8d, 0x27, 0x44, 0x47, 0x11, 0xbb, 0xed, 0x44, 0x2b, 0x9b, 0xfc, 0x77,\n 0x05, 0xc0, 0x73, 0x16, 0xb7, 0xe4, 0x11, 0x50, 0xc5, 0x33, 0x12, 0x72, 0xe4,\n 0xd2, 0x09, 0xd4, 0x22, 0xf9, 0xfa, 0x39, 0x00, 0xcc, 0x3f, 0x0c, 0x19, 0x38,\n 0xc0, 0xf1, 0xff, 0xc6, 0x2d, 0xf0, 0x37, 0x22, 0x5a, 0x13, 0x36, 0xfb, 0xa1,\n 0xf9, 0xfe, 0xfa, 0x11, 0xf5, 0xaf, 0xc5, 0xbc, 0xb9, 0x7e, 0xb1, 0xb3, 0xd1,\n 0x90, 0x00,\n]);\n\nconst LNX_RESPONSE_DATA_GOOD = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: LNX_RESPONSE_DATA,\n});\n\ndescribe(\"SignTransactionCommand\", () => {\n const defaultArgs: SignTransactionCommandArgs = {\n serializedTransaction: new Uint8Array(),\n isFirstChunk: true,\n };\n\n describe(\"getApdu\", () => {\n describe(\"Legacy\", () => {\n it(\"should return the correct APDU when the data is empty\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n ...defaultArgs,\n });\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.data).toStrictEqual(new Uint8Array());\n expect(apdu.cla).toBe(0xe0);\n expect(apdu.ins).toBe(0x04);\n expect(apdu.p1).toBe(0x00);\n expect(apdu.p2).toBe(0x00);\n });\n\n it(\"should return the correct APDU when the data is not empty\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n ...defaultArgs,\n serializedTransaction: new Uint8Array([0x01, 0x02, 0x03]),\n });\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.data).toStrictEqual(new Uint8Array([0x01, 0x02, 0x03]));\n expect(apdu.cla).toBe(0xe0);\n expect(apdu.ins).toBe(0x04);\n expect(apdu.p1).toBe(0x00);\n expect(apdu.p2).toBe(0x00);\n });\n\n it(\"should return the correct APDU when it is not the first chunk\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n ...defaultArgs,\n isFirstChunk: false,\n });\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.data).toStrictEqual(new Uint8Array());\n expect(apdu.cla).toBe(0xe0);\n expect(apdu.ins).toBe(0x04);\n expect(apdu.p1).toBe(0x80);\n expect(apdu.p2).toBe(0x00);\n });\n });\n\n describe.todo(\"Store and start\", () => {});\n\n describe.todo(\"Start\", () => {});\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return Nothing when the response data is empty\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n ...defaultArgs,\n });\n\n // WHEN\n const response = command.parseResponse(LNX_RESPONSE_GOOD);\n\n // THEN\n expect(response).toStrictEqual(CommandResultFactory({ data: Nothing }));\n });\n\n it(\"should return Just the response data when the response data is not empty\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n ...defaultArgs,\n });\n\n // WHEN\n const response = command.parseResponse(LNX_RESPONSE_DATA_GOOD);\n\n // THEN\n expect(response).toStrictEqual(\n CommandResultFactory({\n data: Just({\n r: \"0x8d27444711bbed442b9bfc7705c07316b7e41150c5331272e4d209d422f9fa39\",\n s: \"0x00cc3f0c1938c0f1ffc62df037225a1336fba1f9fefa11f5afc5bcb97eb1b3d1\",\n v: 38,\n }),\n }),\n );\n });\n\n it(\"should return a UnknownDeviceExchangeError when the response status code is not 0x9000\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n ...defaultArgs,\n });\n\n // WHEN\n const response = command.parseResponse(\n new ApduResponse({\n statusCode: Uint8Array.from([0x51, 0x55]),\n data: new Uint8Array(),\n }),\n );\n\n // THEN\n expect(isSuccessCommandResult(response)).toBe(false);\n // @ts-expect-error `error`is not typed because we did not narrow it\n expect(response.error).toBeInstanceOf(UnknownDeviceExchangeError);\n });\n\n it(\"should return an InvalidStatusWord error when the response data r is not valid\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n ...defaultArgs,\n });\n\n // WHEN\n const response = command.parseResponse(\n new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: LNX_RESPONSE_DATA.slice(0, 1),\n }),\n );\n\n // THEN\n expect(isSuccessCommandResult(response)).toBe(false);\n // @ts-expect-error `error`is not typed because we did not narrow it\n expect(response.error).toBeInstanceOf(InvalidStatusWordError);\n });\n\n it(\"should return an error when the response data s is not valid\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n ...defaultArgs,\n });\n\n // WHEN\n const response = command.parseResponse(\n new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: LNX_RESPONSE_DATA.slice(0, 33),\n }),\n );\n\n // THEN\n expect(isSuccessCommandResult(response)).toBe(false);\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "aAAA,IAAAA,EAMO,2CACPC,EAA8B,qBAE9BC,EAGO,oCAEP,MAAMC,EAAoB,IAAI,eAAa,CACzC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,CAAC,EAEKC,EAAoB,IAAI,WAAW,CACvC,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IACxE,EAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IACxE,IAAM,EAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GACxE,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IACxE,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IACxE,IAAM,CACR,CAAC,EAEKC,EAAyB,IAAI,eAAa,CAC9C,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMD,CACR,CAAC,EAED,SAAS,yBAA0B,IAAM,CACvC,MAAME,EAA0C,CAC9C,sBAAuB,IAAI,WAC3B,aAAc,EAChB,EAEA,SAAS,UAAW,IAAM,CACxB,SAAS,SAAU,IAAM,CACvB,GAAG,wDAAyD,IAAM,CAOhE,MAAMC,EALU,IAAI,yBAAuB,CACzC,
|
|
6
|
-
"names": ["import_device_management_kit", "import_purify_ts", "import_SignTransactionCommand", "LNX_RESPONSE_GOOD", "LNX_RESPONSE_DATA", "LNX_RESPONSE_DATA_GOOD", "defaultArgs", "apdu", "response"]
|
|
4
|
+
"sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n InvalidStatusWordError,\n isSuccessCommandResult,\n UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\nimport { Just, Nothing } from \"purify-ts\";\n\nimport {\n SignTransactionCommand,\n type SignTransactionCommandArgs,\n} from \"./SignTransactionCommand\";\n\nconst LNX_RESPONSE_GOOD = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([]),\n});\n\nconst LNX_RESPONSE_DATA = new Uint8Array([\n 0x26, 0x8d, 0x27, 0x44, 0x47, 0x11, 0xbb, 0xed, 0x44, 0x2b, 0x9b, 0xfc, 0x77,\n 0x05, 0xc0, 0x73, 0x16, 0xb7, 0xe4, 0x11, 0x50, 0xc5, 0x33, 0x12, 0x72, 0xe4,\n 0xd2, 0x09, 0xd4, 0x22, 0xf9, 0xfa, 0x39, 0x00, 0xcc, 0x3f, 0x0c, 0x19, 0x38,\n 0xc0, 0xf1, 0xff, 0xc6, 0x2d, 0xf0, 0x37, 0x22, 0x5a, 0x13, 0x36, 0xfb, 0xa1,\n 0xf9, 0xfe, 0xfa, 0x11, 0xf5, 0xaf, 0xc5, 0xbc, 0xb9, 0x7e, 0xb1, 0xb3, 0xd1,\n 0x90, 0x00,\n]);\n\nconst LNX_RESPONSE_DATA_GOOD = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: LNX_RESPONSE_DATA,\n});\n\ndescribe(\"SignTransactionCommand\", () => {\n const defaultArgs: SignTransactionCommandArgs = {\n serializedTransaction: new Uint8Array(),\n isFirstChunk: true,\n };\n\n describe(\"name\", () => {\n it(\"should be 'signTransaction'\", () => {\n const command = new SignTransactionCommand(defaultArgs);\n expect(command.name).toBe(\"signTransaction\");\n });\n });\n\n describe(\"getApdu\", () => {\n describe(\"Legacy\", () => {\n it(\"should return the correct APDU when the data is empty\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n ...defaultArgs,\n });\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.data).toStrictEqual(new Uint8Array());\n expect(apdu.cla).toBe(0xe0);\n expect(apdu.ins).toBe(0x04);\n expect(apdu.p1).toBe(0x00);\n expect(apdu.p2).toBe(0x00);\n });\n\n it(\"should return the correct APDU when the data is not empty\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n ...defaultArgs,\n serializedTransaction: new Uint8Array([0x01, 0x02, 0x03]),\n });\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.data).toStrictEqual(new Uint8Array([0x01, 0x02, 0x03]));\n expect(apdu.cla).toBe(0xe0);\n expect(apdu.ins).toBe(0x04);\n expect(apdu.p1).toBe(0x00);\n expect(apdu.p2).toBe(0x00);\n });\n\n it(\"should return the correct APDU when it is not the first chunk\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n ...defaultArgs,\n isFirstChunk: false,\n });\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.data).toStrictEqual(new Uint8Array());\n expect(apdu.cla).toBe(0xe0);\n expect(apdu.ins).toBe(0x04);\n expect(apdu.p1).toBe(0x80);\n expect(apdu.p2).toBe(0x00);\n });\n });\n\n describe.todo(\"Store and start\", () => {});\n\n describe.todo(\"Start\", () => {});\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return Nothing when the response data is empty\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n ...defaultArgs,\n });\n\n // WHEN\n const response = command.parseResponse(LNX_RESPONSE_GOOD);\n\n // THEN\n expect(response).toStrictEqual(CommandResultFactory({ data: Nothing }));\n });\n\n it(\"should return Just the response data when the response data is not empty\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n ...defaultArgs,\n });\n\n // WHEN\n const response = command.parseResponse(LNX_RESPONSE_DATA_GOOD);\n\n // THEN\n expect(response).toStrictEqual(\n CommandResultFactory({\n data: Just({\n r: \"0x8d27444711bbed442b9bfc7705c07316b7e41150c5331272e4d209d422f9fa39\",\n s: \"0x00cc3f0c1938c0f1ffc62df037225a1336fba1f9fefa11f5afc5bcb97eb1b3d1\",\n v: 38,\n }),\n }),\n );\n });\n\n it(\"should return a UnknownDeviceExchangeError when the response status code is not 0x9000\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n ...defaultArgs,\n });\n\n // WHEN\n const response = command.parseResponse(\n new ApduResponse({\n statusCode: Uint8Array.from([0x51, 0x55]),\n data: new Uint8Array(),\n }),\n );\n\n // THEN\n expect(isSuccessCommandResult(response)).toBe(false);\n // @ts-expect-error `error`is not typed because we did not narrow it\n expect(response.error).toBeInstanceOf(UnknownDeviceExchangeError);\n });\n\n it(\"should return an InvalidStatusWord error when the response data r is not valid\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n ...defaultArgs,\n });\n\n // WHEN\n const response = command.parseResponse(\n new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: LNX_RESPONSE_DATA.slice(0, 1),\n }),\n );\n\n // THEN\n expect(isSuccessCommandResult(response)).toBe(false);\n // @ts-expect-error `error`is not typed because we did not narrow it\n expect(response.error).toBeInstanceOf(InvalidStatusWordError);\n });\n\n it(\"should return an error when the response data s is not valid\", () => {\n // GIVEN\n const command = new SignTransactionCommand({\n ...defaultArgs,\n });\n\n // WHEN\n const response = command.parseResponse(\n new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: LNX_RESPONSE_DATA.slice(0, 33),\n }),\n );\n\n // THEN\n expect(isSuccessCommandResult(response)).toBe(false);\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAMO,2CACPC,EAA8B,qBAE9BC,EAGO,oCAEP,MAAMC,EAAoB,IAAI,eAAa,CACzC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,CAAC,EAEKC,EAAoB,IAAI,WAAW,CACvC,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IACxE,EAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IACxE,IAAM,EAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GACxE,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IACxE,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IACxE,IAAM,CACR,CAAC,EAEKC,EAAyB,IAAI,eAAa,CAC9C,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMD,CACR,CAAC,EAED,SAAS,yBAA0B,IAAM,CACvC,MAAME,EAA0C,CAC9C,sBAAuB,IAAI,WAC3B,aAAc,EAChB,EAEA,SAAS,OAAQ,IAAM,CACrB,GAAG,8BAA+B,IAAM,CACtC,MAAMC,EAAU,IAAI,yBAAuBD,CAAW,EACtD,OAAOC,EAAQ,IAAI,EAAE,KAAK,iBAAiB,CAC7C,CAAC,CACH,CAAC,EAED,SAAS,UAAW,IAAM,CACxB,SAAS,SAAU,IAAM,CACvB,GAAG,wDAAyD,IAAM,CAOhE,MAAMC,EALU,IAAI,yBAAuB,CACzC,GAAGF,CACL,CAAC,EAGoB,QAAQ,EAG7B,OAAOE,EAAK,IAAI,EAAE,cAAc,IAAI,UAAY,EAChD,OAAOA,EAAK,GAAG,EAAE,KAAK,GAAI,EAC1B,OAAOA,EAAK,GAAG,EAAE,KAAK,CAAI,EAC1B,OAAOA,EAAK,EAAE,EAAE,KAAK,CAAI,EACzB,OAAOA,EAAK,EAAE,EAAE,KAAK,CAAI,CAC3B,CAAC,EAED,GAAG,4DAA6D,IAAM,CAQpE,MAAMA,EANU,IAAI,yBAAuB,CACzC,GAAGF,EACH,sBAAuB,IAAI,WAAW,CAAC,EAAM,EAAM,CAAI,CAAC,CAC1D,CAAC,EAGoB,QAAQ,EAG7B,OAAOE,EAAK,IAAI,EAAE,cAAc,IAAI,WAAW,CAAC,EAAM,EAAM,CAAI,CAAC,CAAC,EAClE,OAAOA,EAAK,GAAG,EAAE,KAAK,GAAI,EAC1B,OAAOA,EAAK,GAAG,EAAE,KAAK,CAAI,EAC1B,OAAOA,EAAK,EAAE,EAAE,KAAK,CAAI,EACzB,OAAOA,EAAK,EAAE,EAAE,KAAK,CAAI,CAC3B,CAAC,EAED,GAAG,gEAAiE,IAAM,CAQxE,MAAMA,EANU,IAAI,yBAAuB,CACzC,GAAGF,EACH,aAAc,EAChB,CAAC,EAGoB,QAAQ,EAG7B,OAAOE,EAAK,IAAI,EAAE,cAAc,IAAI,UAAY,EAChD,OAAOA,EAAK,GAAG,EAAE,KAAK,GAAI,EAC1B,OAAOA,EAAK,GAAG,EAAE,KAAK,CAAI,EAC1B,OAAOA,EAAK,EAAE,EAAE,KAAK,GAAI,EACzB,OAAOA,EAAK,EAAE,EAAE,KAAK,CAAI,CAC3B,CAAC,CACH,CAAC,EAED,SAAS,KAAK,kBAAmB,IAAM,CAAC,CAAC,EAEzC,SAAS,KAAK,QAAS,IAAM,CAAC,CAAC,CACjC,CAAC,EAED,SAAS,gBAAiB,IAAM,CAC9B,GAAG,wDAAyD,IAAM,CAOhE,MAAMC,EALU,IAAI,yBAAuB,CACzC,GAAGH,CACL,CAAC,EAGwB,cAAcH,CAAiB,EAGxD,OAAOM,CAAQ,EAAE,iBAAc,wBAAqB,CAAE,KAAM,SAAQ,CAAC,CAAC,CACxE,CAAC,EAED,GAAG,2EAA4E,IAAM,CAOnF,MAAMA,EALU,IAAI,yBAAuB,CACzC,GAAGH,CACL,CAAC,EAGwB,cAAcD,CAAsB,EAG7D,OAAOI,CAAQ,EAAE,iBACf,wBAAqB,CACnB,QAAM,QAAK,CACT,EAAG,qEACH,EAAG,qEACH,EAAG,EACL,CAAC,CACH,CAAC,CACH,CACF,CAAC,EAED,GAAG,yFAA0F,IAAM,CAOjG,MAAMA,EALU,IAAI,yBAAuB,CACzC,GAAGH,CACL,CAAC,EAGwB,cACvB,IAAI,eAAa,CACf,WAAY,WAAW,KAAK,CAAC,GAAM,EAAI,CAAC,EACxC,KAAM,IAAI,UACZ,CAAC,CACH,EAGA,UAAO,0BAAuBG,CAAQ,CAAC,EAAE,KAAK,EAAK,EAEnD,OAAOA,EAAS,KAAK,EAAE,eAAe,4BAA0B,CAClE,CAAC,EAED,GAAG,iFAAkF,IAAM,CAOzF,MAAMA,EALU,IAAI,yBAAuB,CACzC,GAAGH,CACL,CAAC,EAGwB,cACvB,IAAI,eAAa,CACf,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMF,EAAkB,MAAM,EAAG,CAAC,CACpC,CAAC,CACH,EAGA,UAAO,0BAAuBK,CAAQ,CAAC,EAAE,KAAK,EAAK,EAEnD,OAAOA,EAAS,KAAK,EAAE,eAAe,wBAAsB,CAC9D,CAAC,EAED,GAAG,+DAAgE,IAAM,CAOvE,MAAMA,EALU,IAAI,yBAAuB,CACzC,GAAGH,CACL,CAAC,EAGwB,cACvB,IAAI,eAAa,CACf,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAMF,EAAkB,MAAM,EAAG,EAAE,CACrC,CAAC,CACH,EAGA,UAAO,0BAAuBK,CAAQ,CAAC,EAAE,KAAK,EAAK,CACrD,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_device_management_kit", "import_purify_ts", "import_SignTransactionCommand", "LNX_RESPONSE_GOOD", "LNX_RESPONSE_DATA", "LNX_RESPONSE_DATA_GOOD", "defaultArgs", "command", "apdu", "response"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var d=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var E=(o,r)=>{for(var n in r)d(o,n,{get:r[n],enumerable:!0})},g=(o,r,n,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of c(r))!l.call(o,t)&&t!==n&&d(o,t,{get:()=>r[t],enumerable:!(s=u(r,t))||s.enumerable});return o};var C=o=>g(d({},"__esModule",{value:!0}),o);var
|
|
1
|
+
"use strict";var d=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var E=(o,r)=>{for(var n in r)d(o,n,{get:r[n],enumerable:!0})},g=(o,r,n,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of c(r))!l.call(o,t)&&t!==n&&d(o,t,{get:()=>r[t],enumerable:!(s=u(r,t))||s.enumerable});return o};var C=o=>g(d({},"__esModule",{value:!0}),o);var T={};E(T,{StartTransactionCommand:()=>A});module.exports=C(T);var e=require("@ledgerhq/device-management-kit"),p=require("@ledgerhq/signer-utils"),a=require("purify-ts"),i=require("./utils/ethAppErrors");const y=32,R=32;class A{name="startTransaction";errorHelper=new p.CommandErrorHelper(i.ETH_APP_ERRORS,i.EthAppCommandErrorFactory);getApdu(){const r={cla:224,ins:4,p1:0,p2:2};return new e.ApduBuilder(r).build()}parseResponse(r){return a.Maybe.fromNullable(this.errorHelper.getError(r)).orDefaultLazy(()=>{const n=new e.ApduParser(r),s=n.extract8BitUInt();if(s===void 0)return(0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("V is missing")});const t=n.encodeToHexaString(n.extractFieldByLength(y),!0);if(!t)return(0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("R is missing")});const m=n.encodeToHexaString(n.extractFieldByLength(R),!0);return m?(0,e.CommandResultFactory)({data:(0,a.Just)({v:s,r:t,s:m})}):(0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("S is missing")})})}}0&&(module.exports={StartTransactionCommand});
|
|
2
2
|
//# sourceMappingURL=StartTransactionCommand.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/command/StartTransactionCommand.ts"],
|
|
4
|
-
"sourcesContent": ["// https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#sign-eth-transaction\n// https://github.com/LedgerHQ/generic_parser/blob/master/specs.md#sign (to be removed when the top link has been updated)\nimport {\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 { Just, Maybe } from \"purify-ts\";\n\nimport {\n ETH_APP_ERRORS,\n EthAppCommandErrorFactory,\n type EthErrorCodes,\n} from \"./utils/ethAppErrors\";\nimport { type SignTransactionCommandResponse } from \"./SignTransactionCommand\";\n\nconst R_LENGTH = 32;\nconst S_LENGTH = 32;\n\n/**\n * StartTransactionCommand is a SignTransactionCommand that is used to sign the transaction.\n * It signature differs from the SignTransactionCommand because\n * the command does not need a Transaction to be provided.\n */\nexport class StartTransactionCommand\n implements Command<SignTransactionCommandResponse, void, EthErrorCodes>\n{\n private readonly errorHelper = new CommandErrorHelper<\n SignTransactionCommandResponse,\n EthErrorCodes\n >(ETH_APP_ERRORS, EthAppCommandErrorFactory);\n\n getApdu(): Apdu {\n const signEthTransactionArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x04,\n p1: 0x00,\n p2: 0x02,\n };\n const builder = new ApduBuilder(signEthTransactionArgs);\n return builder.build();\n }\n\n parseResponse(\n response: ApduResponse,\n ): CommandResult<SignTransactionCommandResponse, EthErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(response),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(response);\n\n // The data is returned only for the last chunk\n const v = parser.extract8BitUInt();\n if (v === undefined) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"V is missing\"),\n });\n }\n\n const r = parser.encodeToHexaString(\n parser.extractFieldByLength(R_LENGTH),\n true,\n );\n if (!r) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"R is missing\"),\n });\n }\n\n const s = parser.encodeToHexaString(\n parser.extractFieldByLength(S_LENGTH),\n true,\n );\n if (!s) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"S is missing\"),\n });\n }\n\n return CommandResultFactory({\n data: Just({\n v,\n r,\n s,\n }),\n });\n });\n }\n}\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,IAAA,eAAAC,EAAAH,GAEA,IAAAI,EAUO,2CACPC,EAAmC,kCACnCC,EAA4B,qBAE5BC,EAIO,gCAGP,MAAMC,EAAW,GACXC,EAAW,GAOV,MAAMP,CAEb,
|
|
4
|
+
"sourcesContent": ["// https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#sign-eth-transaction\n// https://github.com/LedgerHQ/generic_parser/blob/master/specs.md#sign (to be removed when the top link has been updated)\nimport {\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 { Just, Maybe } from \"purify-ts\";\n\nimport {\n ETH_APP_ERRORS,\n EthAppCommandErrorFactory,\n type EthErrorCodes,\n} from \"./utils/ethAppErrors\";\nimport { type SignTransactionCommandResponse } from \"./SignTransactionCommand\";\n\nconst R_LENGTH = 32;\nconst S_LENGTH = 32;\n\n/**\n * StartTransactionCommand is a SignTransactionCommand that is used to sign the transaction.\n * It signature differs from the SignTransactionCommand because\n * the command does not need a Transaction to be provided.\n */\nexport class StartTransactionCommand\n implements Command<SignTransactionCommandResponse, void, EthErrorCodes>\n{\n readonly name = \"startTransaction\";\n private readonly errorHelper = new CommandErrorHelper<\n SignTransactionCommandResponse,\n EthErrorCodes\n >(ETH_APP_ERRORS, EthAppCommandErrorFactory);\n\n getApdu(): Apdu {\n const signEthTransactionArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x04,\n p1: 0x00,\n p2: 0x02,\n };\n const builder = new ApduBuilder(signEthTransactionArgs);\n return builder.build();\n }\n\n parseResponse(\n response: ApduResponse,\n ): CommandResult<SignTransactionCommandResponse, EthErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(response),\n ).orDefaultLazy(() => {\n const parser = new ApduParser(response);\n\n // The data is returned only for the last chunk\n const v = parser.extract8BitUInt();\n if (v === undefined) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"V is missing\"),\n });\n }\n\n const r = parser.encodeToHexaString(\n parser.extractFieldByLength(R_LENGTH),\n true,\n );\n if (!r) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"R is missing\"),\n });\n }\n\n const s = parser.encodeToHexaString(\n parser.extractFieldByLength(S_LENGTH),\n true,\n );\n if (!s) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"S is missing\"),\n });\n }\n\n return CommandResultFactory({\n data: Just({\n v,\n r,\n s,\n }),\n });\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,IAAA,eAAAC,EAAAH,GAEA,IAAAI,EAUO,2CACPC,EAAmC,kCACnCC,EAA4B,qBAE5BC,EAIO,gCAGP,MAAMC,EAAW,GACXC,EAAW,GAOV,MAAMP,CAEb,CACW,KAAO,mBACC,YAAc,IAAI,qBAGjC,iBAAgB,2BAAyB,EAE3C,SAAgB,CACd,MAAMQ,EAA0C,CAC9C,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,CACN,EAEA,OADgB,IAAI,cAAYA,CAAsB,EACvC,MAAM,CACvB,CAEA,cACEC,EAC8D,CAC9D,OAAO,QAAM,aACX,KAAK,YAAY,SAASA,CAAQ,CACpC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAS,IAAI,aAAWD,CAAQ,EAGhCE,EAAID,EAAO,gBAAgB,EACjC,GAAIC,IAAM,OACR,SAAO,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,cAAc,CAClD,CAAC,EAGH,MAAMC,EAAIF,EAAO,mBACfA,EAAO,qBAAqBJ,CAAQ,EACpC,EACF,EACA,GAAI,CAACM,EACH,SAAO,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,cAAc,CAClD,CAAC,EAGH,MAAMC,EAAIH,EAAO,mBACfA,EAAO,qBAAqBH,CAAQ,EACpC,EACF,EACA,OAAKM,KAME,wBAAqB,CAC1B,QAAM,QAAK,CACT,EAAAF,EACA,EAAAC,EACA,EAAAC,CACF,CAAC,CACH,CAAC,KAXQ,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,cAAc,CAClD,CAAC,CAUL,CAAC,CACH,CACF",
|
|
6
6
|
"names": ["StartTransactionCommand_exports", "__export", "StartTransactionCommand", "__toCommonJS", "import_device_management_kit", "import_signer_utils", "import_purify_ts", "import_ethAppErrors", "R_LENGTH", "S_LENGTH", "signEthTransactionArgs", "response", "parser", "v", "r", "s"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var t=require("@ledgerhq/device-management-kit"),n=require("./utils/ethAppErrors"),s=require("./StartTransactionCommand");describe("StartTransactionCommand",()=>{describe("getApdu",()=>{it("should return the raw APDU",()=>{const o=new s.StartTransactionCommand().getApdu();expect(o.getRawApdu()).toStrictEqual(Uint8Array.from([224,4,0,2,0]))})}),describe("parseResponse",()=>{it("should return an error if the response status code is invalid",()=>{const e={data:Uint8Array.from([]),statusCode:Uint8Array.from([109,0])},r=new s.StartTransactionCommand().parseResponse(e);(0,t.isSuccessCommandResult)(r)?assert.fail("Expected an error"):expect(r.error).toBeInstanceOf(n.EthAppCommandError)}),it("should return the correct response",()=>{const e={data:Uint8Array.from([1,...Array(32).fill(2),...Array(32).fill(3)]),statusCode:Uint8Array.from([144,0])},r=new s.StartTransactionCommand().parseResponse(e);(0,t.isSuccessCommandResult)(r)?expect(r.data.extract()).toEqual({r:"0x0202020202020202020202020202020202020202020202020202020202020202",s:"0x0303030303030303030303030303030303030303030303030303030303030303",v:1}):assert.fail("Expected a success")}),it("should return an error if v is not valid",()=>{const e={data:Uint8Array.from([]),statusCode:Uint8Array.from([144,0])},r=new s.StartTransactionCommand().parseResponse(e);(0,t.isSuccessCommandResult)(r)?assert.fail("Expected an error"):(expect(r.error).toBeInstanceOf(t.InvalidStatusWordError),expect(r.error.originalError).toEqual(new Error("V is missing")))}),it("should return an error if r is not valid",()=>{const e={data:Uint8Array.from([1,...Array(20).fill(2)]),statusCode:Uint8Array.from([144,0])},r=new s.StartTransactionCommand().parseResponse(e);(0,t.isSuccessCommandResult)(r)?assert.fail("Expected an error"):(expect(r.error).toBeInstanceOf(t.InvalidStatusWordError),expect(r.error.originalError).toEqual(new Error("R is missing")))}),it("should return an error if s is not valid",()=>{const e={data:Uint8Array.from([1,...Array(32).fill(2),...Array(20).fill(2)]),statusCode:Uint8Array.from([144,0])},r=new s.StartTransactionCommand().parseResponse(e);(0,t.isSuccessCommandResult)(r)?assert.fail("Expected an error"):(expect(r.error).toBeInstanceOf(t.InvalidStatusWordError),expect(r.error.originalError).toEqual(new Error("S is missing")))})})});
|
|
1
|
+
"use strict";var t=require("@ledgerhq/device-management-kit"),n=require("./utils/ethAppErrors"),s=require("./StartTransactionCommand");describe("StartTransactionCommand",()=>{describe("name",()=>{it("should be 'startTransaction'",()=>{const e=new s.StartTransactionCommand;expect(e.name).toBe("startTransaction")})}),describe("getApdu",()=>{it("should return the raw APDU",()=>{const o=new s.StartTransactionCommand().getApdu();expect(o.getRawApdu()).toStrictEqual(Uint8Array.from([224,4,0,2,0]))})}),describe("parseResponse",()=>{it("should return an error if the response status code is invalid",()=>{const e={data:Uint8Array.from([]),statusCode:Uint8Array.from([109,0])},r=new s.StartTransactionCommand().parseResponse(e);(0,t.isSuccessCommandResult)(r)?assert.fail("Expected an error"):expect(r.error).toBeInstanceOf(n.EthAppCommandError)}),it("should return the correct response",()=>{const e={data:Uint8Array.from([1,...Array(32).fill(2),...Array(32).fill(3)]),statusCode:Uint8Array.from([144,0])},r=new s.StartTransactionCommand().parseResponse(e);(0,t.isSuccessCommandResult)(r)?expect(r.data.extract()).toEqual({r:"0x0202020202020202020202020202020202020202020202020202020202020202",s:"0x0303030303030303030303030303030303030303030303030303030303030303",v:1}):assert.fail("Expected a success")}),it("should return an error if v is not valid",()=>{const e={data:Uint8Array.from([]),statusCode:Uint8Array.from([144,0])},r=new s.StartTransactionCommand().parseResponse(e);(0,t.isSuccessCommandResult)(r)?assert.fail("Expected an error"):(expect(r.error).toBeInstanceOf(t.InvalidStatusWordError),expect(r.error.originalError).toEqual(new Error("V is missing")))}),it("should return an error if r is not valid",()=>{const e={data:Uint8Array.from([1,...Array(20).fill(2)]),statusCode:Uint8Array.from([144,0])},r=new s.StartTransactionCommand().parseResponse(e);(0,t.isSuccessCommandResult)(r)?assert.fail("Expected an error"):(expect(r.error).toBeInstanceOf(t.InvalidStatusWordError),expect(r.error.originalError).toEqual(new Error("R is missing")))}),it("should return an error if s is not valid",()=>{const e={data:Uint8Array.from([1,...Array(32).fill(2),...Array(20).fill(2)]),statusCode:Uint8Array.from([144,0])},r=new s.StartTransactionCommand().parseResponse(e);(0,t.isSuccessCommandResult)(r)?assert.fail("Expected an error"):(expect(r.error).toBeInstanceOf(t.InvalidStatusWordError),expect(r.error.originalError).toEqual(new Error("S is missing")))})})});
|
|
2
2
|
//# sourceMappingURL=StartTransactionCommand.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/command/StartTransactionCommand.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { EthAppCommandError } from \"./utils/ethAppErrors\";\nimport { StartTransactionCommand } from \"./StartTransactionCommand\";\n\ndescribe(\"StartTransactionCommand\", () => {\n describe(\"getApdu\", () => {\n it(\"should return the raw APDU\", () => {\n // WHEN\n const command = new StartTransactionCommand();\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(\n Uint8Array.from([0xe0, 0x04, 0x00, 0x02, 0x00]),\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 = {\n data: Uint8Array.from([]),\n statusCode: Uint8Array.from([0x6d, 0x00]), // Invalid status code\n };\n\n // WHEN\n const command = new StartTransactionCommand();\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(EthAppCommandError);\n }\n });\n\n it(\"should return the correct response\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([\n 0x01,\n ...Array<number>(32).fill(0x02),\n ...Array<number>(32).fill(0x03),\n ]), // Some data\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const command = new StartTransactionCommand();\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n expect(result.data.extract()).toEqual({\n r: \"0x0202020202020202020202020202020202020202020202020202020202020202\",\n s: \"0x0303030303030303030303030303030303030303030303030303030303030303\",\n v: 1,\n });\n } else {\n assert.fail(\"Expected a success\");\n }\n });\n\n it(\"should return an error if v is not valid\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([]), // No data\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const command = new StartTransactionCommand();\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(new Error(\"V is missing\"));\n }\n });\n\n it(\"should return an error if r is not valid\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([0x01, ...Array<number>(20).fill(0x02)]), // Invalid r\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const command = new StartTransactionCommand();\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(new Error(\"R is missing\"));\n }\n });\n\n it(\"should return an error if s is not valid\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([\n 0x01,\n ...Array<number>(32).fill(0x02),\n ...Array<number>(20).fill(0x02),\n ]), // Invalid s\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const command = new StartTransactionCommand();\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(new Error(\"S is missing\"));\n }\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "aAAA,IAAAA,EAGO,2CAEPC,EAAmC,gCACnCC,EAAwC,qCAExC,SAAS,0BAA2B,IAAM,CACxC,SAAS,UAAW,IAAM,CACxB,GAAG,6BAA8B,IAAM,CAGrC,MAAMC,EADU,IAAI,0BAAwB,EACvB,QAAQ,EAG7B,OAAOA,EAAK,WAAW,CAAC,EAAE,cACxB,WAAW,KAAK,CAAC,IAAM,EAAM,EAAM,EAAM,CAAI,CAAC,CAChD,CACF,CAAC,CACH,CAAC,EAED,SAAS,gBAAiB,IAAM,CAC9B,GAAG,gEAAiE,IAAM,CAExE,MAAMC,EAAW,CACf,KAAM,WAAW,KAAK,CAAC,CAAC,EACxB,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,CAC1C,EAIMC,EADU,IAAI,0BAAwB,EACrB,cAAcD,CAAQ,KAGzC,0BAAuBC,CAAM,EAC/B,OAAO,KAAK,mBAAmB,EAE/B,OAAOA,EAAO,KAAK,EAAE,eAAe,oBAAkB,CAE1D,CAAC,EAED,GAAG,qCAAsC,IAAM,CAE7C,MAAMD,EAAW,CACf,KAAM,WAAW,KAAK,CACpB,EACA,GAAG,MAAc,EAAE,EAAE,KAAK,CAAI,EAC9B,GAAG,MAAc,EAAE,EAAE,KAAK,CAAI,CAChC,CAAC,EACD,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,CAC1C,EAIMC,EADU,IAAI,0BAAwB,EACrB,cAAcD,CAAQ,KAGzC,0BAAuBC,CAAM,EAC/B,OAAOA,EAAO,KAAK,QAAQ,CAAC,EAAE,QAAQ,CACpC,EAAG,qEACH,EAAG,qEACH,EAAG,CACL,CAAC,EAED,OAAO,KAAK,oBAAoB,CAEpC,CAAC,EAED,GAAG,2CAA4C,IAAM,CAEnD,MAAMD,EAAW,CACf,KAAM,WAAW,KAAK,CAAC,CAAC,EACxB,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,CAC1C,EAIMC,EADU,IAAI,0BAAwB,EACrB,cAAcD,CAAQ,KAGzC,0BAAuBC,CAAM,EAC/B,OAAO,KAAK,mBAAmB,GAE/B,OAAOA,EAAO,KAAK,EAAE,eAAe,wBAAsB,EAC1D,OAAOA,EAAO,MAAM,aAAa,EAAE,QAAQ,IAAI,MAAM,cAAc,CAAC,EAExE,CAAC,EAED,GAAG,2CAA4C,IAAM,CAEnD,MAAMD,EAAW,CACf,KAAM,WAAW,KAAK,CAAC,EAAM,GAAG,MAAc,EAAE,EAAE,KAAK,CAAI,CAAC,CAAC,EAC7D,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,CAC1C,EAIMC,EADU,IAAI,0BAAwB,EACrB,cAAcD,CAAQ,KAGzC,0BAAuBC,CAAM,EAC/B,OAAO,KAAK,mBAAmB,GAE/B,OAAOA,EAAO,KAAK,EAAE,eAAe,wBAAsB,EAC1D,OAAOA,EAAO,MAAM,aAAa,EAAE,QAAQ,IAAI,MAAM,cAAc,CAAC,EAExE,CAAC,EAED,GAAG,2CAA4C,IAAM,CAEnD,MAAMD,EAAW,CACf,KAAM,WAAW,KAAK,CACpB,EACA,GAAG,MAAc,EAAE,EAAE,KAAK,CAAI,EAC9B,GAAG,MAAc,EAAE,EAAE,KAAK,CAAI,CAChC,CAAC,EACD,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,CAC1C,EAIMC,EADU,IAAI,0BAAwB,EACrB,cAAcD,CAAQ,KAGzC,0BAAuBC,CAAM,EAC/B,OAAO,KAAK,mBAAmB,GAE/B,OAAOA,EAAO,KAAK,EAAE,eAAe,wBAAsB,EAC1D,OAAOA,EAAO,MAAM,aAAa,EAAE,QAAQ,IAAI,MAAM,cAAc,CAAC,EAExE,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
-
"names": ["import_device_management_kit", "import_ethAppErrors", "import_StartTransactionCommand", "apdu", "response", "result"]
|
|
4
|
+
"sourcesContent": ["import {\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { EthAppCommandError } from \"./utils/ethAppErrors\";\nimport { StartTransactionCommand } from \"./StartTransactionCommand\";\n\ndescribe(\"StartTransactionCommand\", () => {\n describe(\"name\", () => {\n it(\"should be 'startTransaction'\", () => {\n const command = new StartTransactionCommand();\n expect(command.name).toBe(\"startTransaction\");\n });\n });\n\n describe(\"getApdu\", () => {\n it(\"should return the raw APDU\", () => {\n // WHEN\n const command = new StartTransactionCommand();\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(\n Uint8Array.from([0xe0, 0x04, 0x00, 0x02, 0x00]),\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 = {\n data: Uint8Array.from([]),\n statusCode: Uint8Array.from([0x6d, 0x00]), // Invalid status code\n };\n\n // WHEN\n const command = new StartTransactionCommand();\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(EthAppCommandError);\n }\n });\n\n it(\"should return the correct response\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([\n 0x01,\n ...Array<number>(32).fill(0x02),\n ...Array<number>(32).fill(0x03),\n ]), // Some data\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const command = new StartTransactionCommand();\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n expect(result.data.extract()).toEqual({\n r: \"0x0202020202020202020202020202020202020202020202020202020202020202\",\n s: \"0x0303030303030303030303030303030303030303030303030303030303030303\",\n v: 1,\n });\n } else {\n assert.fail(\"Expected a success\");\n }\n });\n\n it(\"should return an error if v is not valid\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([]), // No data\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const command = new StartTransactionCommand();\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(new Error(\"V is missing\"));\n }\n });\n\n it(\"should return an error if r is not valid\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([0x01, ...Array<number>(20).fill(0x02)]), // Invalid r\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const command = new StartTransactionCommand();\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(new Error(\"R is missing\"));\n }\n });\n\n it(\"should return an error if s is not valid\", () => {\n // GIVEN\n const response = {\n data: Uint8Array.from([\n 0x01,\n ...Array<number>(32).fill(0x02),\n ...Array<number>(20).fill(0x02),\n ]), // Invalid s\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const command = new StartTransactionCommand();\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(new Error(\"S is missing\"));\n }\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAGO,2CAEPC,EAAmC,gCACnCC,EAAwC,qCAExC,SAAS,0BAA2B,IAAM,CACxC,SAAS,OAAQ,IAAM,CACrB,GAAG,+BAAgC,IAAM,CACvC,MAAMC,EAAU,IAAI,0BACpB,OAAOA,EAAQ,IAAI,EAAE,KAAK,kBAAkB,CAC9C,CAAC,CACH,CAAC,EAED,SAAS,UAAW,IAAM,CACxB,GAAG,6BAA8B,IAAM,CAGrC,MAAMC,EADU,IAAI,0BAAwB,EACvB,QAAQ,EAG7B,OAAOA,EAAK,WAAW,CAAC,EAAE,cACxB,WAAW,KAAK,CAAC,IAAM,EAAM,EAAM,EAAM,CAAI,CAAC,CAChD,CACF,CAAC,CACH,CAAC,EAED,SAAS,gBAAiB,IAAM,CAC9B,GAAG,gEAAiE,IAAM,CAExE,MAAMC,EAAW,CACf,KAAM,WAAW,KAAK,CAAC,CAAC,EACxB,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,CAC1C,EAIMC,EADU,IAAI,0BAAwB,EACrB,cAAcD,CAAQ,KAGzC,0BAAuBC,CAAM,EAC/B,OAAO,KAAK,mBAAmB,EAE/B,OAAOA,EAAO,KAAK,EAAE,eAAe,oBAAkB,CAE1D,CAAC,EAED,GAAG,qCAAsC,IAAM,CAE7C,MAAMD,EAAW,CACf,KAAM,WAAW,KAAK,CACpB,EACA,GAAG,MAAc,EAAE,EAAE,KAAK,CAAI,EAC9B,GAAG,MAAc,EAAE,EAAE,KAAK,CAAI,CAChC,CAAC,EACD,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,CAC1C,EAIMC,EADU,IAAI,0BAAwB,EACrB,cAAcD,CAAQ,KAGzC,0BAAuBC,CAAM,EAC/B,OAAOA,EAAO,KAAK,QAAQ,CAAC,EAAE,QAAQ,CACpC,EAAG,qEACH,EAAG,qEACH,EAAG,CACL,CAAC,EAED,OAAO,KAAK,oBAAoB,CAEpC,CAAC,EAED,GAAG,2CAA4C,IAAM,CAEnD,MAAMD,EAAW,CACf,KAAM,WAAW,KAAK,CAAC,CAAC,EACxB,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,CAC1C,EAIMC,EADU,IAAI,0BAAwB,EACrB,cAAcD,CAAQ,KAGzC,0BAAuBC,CAAM,EAC/B,OAAO,KAAK,mBAAmB,GAE/B,OAAOA,EAAO,KAAK,EAAE,eAAe,wBAAsB,EAC1D,OAAOA,EAAO,MAAM,aAAa,EAAE,QAAQ,IAAI,MAAM,cAAc,CAAC,EAExE,CAAC,EAED,GAAG,2CAA4C,IAAM,CAEnD,MAAMD,EAAW,CACf,KAAM,WAAW,KAAK,CAAC,EAAM,GAAG,MAAc,EAAE,EAAE,KAAK,CAAI,CAAC,CAAC,EAC7D,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,CAC1C,EAIMC,EADU,IAAI,0BAAwB,EACrB,cAAcD,CAAQ,KAGzC,0BAAuBC,CAAM,EAC/B,OAAO,KAAK,mBAAmB,GAE/B,OAAOA,EAAO,KAAK,EAAE,eAAe,wBAAsB,EAC1D,OAAOA,EAAO,MAAM,aAAa,EAAE,QAAQ,IAAI,MAAM,cAAc,CAAC,EAExE,CAAC,EAED,GAAG,2CAA4C,IAAM,CAEnD,MAAMD,EAAW,CACf,KAAM,WAAW,KAAK,CACpB,EACA,GAAG,MAAc,EAAE,EAAE,KAAK,CAAI,EAC9B,GAAG,MAAc,EAAE,EAAE,KAAK,CAAI,CAChC,CAAC,EACD,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,CAC1C,EAIMC,EADU,IAAI,0BAAwB,EACrB,cAAcD,CAAQ,KAGzC,0BAAuBC,CAAM,EAC/B,OAAO,KAAK,mBAAmB,GAE/B,OAAOA,EAAO,KAAK,EAAE,eAAe,wBAAsB,EAC1D,OAAOA,EAAO,MAAM,aAAa,EAAE,QAAQ,IAAI,MAAM,cAAc,CAAC,EAExE,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_device_management_kit", "import_ethAppErrors", "import_StartTransactionCommand", "command", "apdu", "response", "result"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var d=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var
|
|
1
|
+
"use strict";var d=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var c=(o,r)=>{for(var e in r)d(o,e,{get:r[e],enumerable:!0})},A=(o,r,e,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of l(r))!u.call(o,t)&&t!==e&&d(o,t,{get:()=>r[t],enumerable:!(a=m(r,t))||a.enumerable});return o};var C=o=>A(d({},"__esModule",{value:!0}),o);var E={};c(E,{StoreTransactionCommand:()=>y});module.exports=C(E);var n=require("@ledgerhq/device-management-kit"),i=require("@ledgerhq/signer-utils"),p=require("purify-ts"),s=require("./utils/ethAppErrors");class y{constructor(r){this.args=r}name="storeTransaction";errorHelper=new i.CommandErrorHelper(s.ETH_APP_ERRORS,s.EthAppCommandErrorFactory);getApdu(){const{serializedTransaction:r,isFirstChunk:e}=this.args,a={cla:224,ins:4,p1:e?0:128,p2:1};return new n.ApduBuilder(a).addBufferToData(r).build()}parseResponse(r){return p.Maybe.fromNullable(this.errorHelper.getError(r)).orDefault((0,n.CommandResultFactory)({data:void 0}))}}0&&(module.exports={StoreTransactionCommand});
|
|
2
2
|
//# sourceMappingURL=StoreTransactionCommand.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/command/StoreTransactionCommand.ts"],
|
|
4
|
-
"sourcesContent": ["// https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#sign-eth-transaction\n// https://github.com/LedgerHQ/generic_parser/blob/master/specs.md#sign (to be removed when the top link has been updated)\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 type StoreTransactionCommandArgs = {\n /**\n * The transaction to sign in max 150 bytes chunks\n */\n readonly serializedTransaction: Uint8Array;\n /**\n * If this is the first chunk of the message\n */\n readonly isFirstChunk: boolean;\n};\n\n/**\n * StoreTransactionCommand is a SignTransactionCommand that is used to initiate\n * the sign transaction flow. It signature differs from the SignTransactionCommand\n * because the command does not return any data.\n */\nexport class StoreTransactionCommand\n implements Command<void, StoreTransactionCommandArgs, EthErrorCodes>\n{\n private readonly errorHelper = new CommandErrorHelper<void, EthErrorCodes>(\n ETH_APP_ERRORS,\n EthAppCommandErrorFactory,\n );\n\n constructor(private readonly args: StoreTransactionCommandArgs) {}\n\n getApdu(): Apdu {\n const { serializedTransaction, isFirstChunk } = this.args;\n\n const signEthTransactionArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x04,\n p1: isFirstChunk ? 0x00 : 0x80,\n p2: 0x01,\n };\n const builder = new ApduBuilder(signEthTransactionArgs);\n return builder.addBufferToData(serializedTransaction).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,GAEA,IAAAI,EAQO,2CACPC,EAAmC,kCACnCC,EAAsB,qBAEtBC,EAIO,gCAkBA,MAAML,CAEb,
|
|
4
|
+
"sourcesContent": ["// https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#sign-eth-transaction\n// https://github.com/LedgerHQ/generic_parser/blob/master/specs.md#sign (to be removed when the top link has been updated)\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 type StoreTransactionCommandArgs = {\n /**\n * The transaction to sign in max 150 bytes chunks\n */\n readonly serializedTransaction: Uint8Array;\n /**\n * If this is the first chunk of the message\n */\n readonly isFirstChunk: boolean;\n};\n\n/**\n * StoreTransactionCommand is a SignTransactionCommand that is used to initiate\n * the sign transaction flow. It signature differs from the SignTransactionCommand\n * because the command does not return any data.\n */\nexport class StoreTransactionCommand\n implements Command<void, StoreTransactionCommandArgs, EthErrorCodes>\n{\n readonly name = \"storeTransaction\";\n private readonly errorHelper = new CommandErrorHelper<void, EthErrorCodes>(\n ETH_APP_ERRORS,\n EthAppCommandErrorFactory,\n );\n\n constructor(private readonly args: StoreTransactionCommandArgs) {}\n\n getApdu(): Apdu {\n const { serializedTransaction, isFirstChunk } = this.args;\n\n const signEthTransactionArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x04,\n p1: isFirstChunk ? 0x00 : 0x80,\n p2: 0x01,\n };\n const builder = new ApduBuilder(signEthTransactionArgs);\n return builder.addBufferToData(serializedTransaction).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,GAEA,IAAAI,EAQO,2CACPC,EAAmC,kCACnCC,EAAsB,qBAEtBC,EAIO,gCAkBA,MAAML,CAEb,CAOE,YAA6BM,EAAmC,CAAnC,UAAAA,CAAoC,CANxD,KAAO,mBACC,YAAc,IAAI,qBACjC,iBACA,2BACF,EAIA,SAAgB,CACd,KAAM,CAAE,sBAAAC,EAAuB,aAAAC,CAAa,EAAI,KAAK,KAE/CC,EAA0C,CAC9C,IAAK,IACL,IAAK,EACL,GAAID,EAAe,EAAO,IAC1B,GAAI,CACN,EAEA,OADgB,IAAI,cAAYC,CAAsB,EACvC,gBAAgBF,CAAqB,EAAE,MAAM,CAC9D,CAEA,cAAcG,EAA4D,CACxE,OAAO,QAAM,aAAa,KAAK,YAAY,SAASA,CAAQ,CAAC,EAAE,aAC7D,wBAAqB,CAAE,KAAM,MAAU,CAAC,CAC1C,CACF,CACF",
|
|
6
6
|
"names": ["StoreTransactionCommand_exports", "__export", "StoreTransactionCommand", "__toCommonJS", "import_device_management_kit", "import_signer_utils", "import_purify_ts", "import_ethAppErrors", "args", "serializedTransaction", "isFirstChunk", "signEthTransactionArgs", "response"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var s=require("@ledgerhq/device-management-kit"),o=require("./utils/ethAppErrors"),t=require("./StoreTransactionCommand");describe("StoreTransactionCommand",()=>{describe("name",()=>{it("should be 'storeTransaction'",()=>{const r=new t.StoreTransactionCommand({serializedTransaction:new Uint8Array,isFirstChunk:!0});expect(r.name).toBe("storeTransaction")})}),describe("getApdu",()=>{it("should return the raw APDU for the first chunk",()=>{const r={serializedTransaction:Uint8Array.from([1,2,3]),isFirstChunk:!0},e=new t.StoreTransactionCommand(r).getApdu();expect(e.getRawApdu()).toStrictEqual(Uint8Array.from([224,4,0,1,3,1,2,3]))}),it("should return the raw APDU for the subsequent chunk",()=>{const r={serializedTransaction:Uint8Array.from([4,5,6]),isFirstChunk:!1},e=new t.StoreTransactionCommand(r).getApdu();expect(e.getRawApdu()).toStrictEqual(Uint8Array.from([224,4,128,1,3,4,5,6]))})}),describe("parseResponse",()=>{it("should return an error if the response status code is invalid",()=>{const r={data:Uint8Array.from([]),statusCode:Uint8Array.from([109,0])},e=new t.StoreTransactionCommand({serializedTransaction:new Uint8Array(0),isFirstChunk:!0}).parseResponse(r);if((0,s.isSuccessCommandResult)(e))throw new Error("Expected error");expect(e.error).toBeInstanceOf(o.EthAppCommandError)}),it("should return the correct response",()=>{const r={data:Uint8Array.from([]),statusCode:Uint8Array.from([144,0])},e=new t.StoreTransactionCommand({serializedTransaction:new Uint8Array(0),isFirstChunk:!0}).parseResponse(r);if((0,s.isSuccessCommandResult)(e))expect(e.data).toBeUndefined();else throw new Error("Expected success")})})});
|
|
2
2
|
//# sourceMappingURL=StoreTransactionCommand.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/command/StoreTransactionCommand.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type ApduResponse,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { EthAppCommandError } from \"./utils/ethAppErrors\";\nimport {\n StoreTransactionCommand,\n type StoreTransactionCommandArgs,\n} from \"./StoreTransactionCommand\";\n\ndescribe(\"StoreTransactionCommand\", () => {\n describe(\"getApdu\", () => {\n it(\"should return the raw APDU for the first chunk\", () => {\n // GIVEN\n const args: StoreTransactionCommandArgs = {\n serializedTransaction: Uint8Array.from([0x01, 0x02, 0x03]),\n isFirstChunk: true,\n };\n\n // WHEN\n const command = new StoreTransactionCommand(args);\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(\n Uint8Array.from([0xe0, 0x04, 0x00, 0x01, 0x03, 0x01, 0x02, 0x03]),\n );\n });\n\n it(\"should return the raw APDU for the subsequent chunk\", () => {\n // GIVEN\n const args: StoreTransactionCommandArgs = {\n serializedTransaction: Uint8Array.from([0x04, 0x05, 0x06]),\n isFirstChunk: false,\n };\n\n // WHEN\n const command = new StoreTransactionCommand(args);\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(\n Uint8Array.from([0xe0, 0x04, 0x80, 0x01, 0x03, 0x04, 0x05, 0x06]),\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 data: Uint8Array.from([]),\n statusCode: Uint8Array.from([0x6d, 0x00]), // Invalid status code\n };\n\n // WHEN\n const command = new StoreTransactionCommand({\n serializedTransaction: new Uint8Array(0),\n isFirstChunk: true,\n });\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n throw new Error(\"Expected error\");\n } else {\n expect(result.error).toBeInstanceOf(EthAppCommandError);\n }\n });\n\n it(\"should return the correct response\", () => {\n // GIVEN\n const response: ApduResponse = {\n data: Uint8Array.from([]),\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const command = new StoreTransactionCommand({\n serializedTransaction: new Uint8Array(0),\n isFirstChunk: true,\n });\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n expect(result.data).toBeUndefined();\n } else {\n throw new Error(\"Expected success\");\n }\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "aAAA,IAAAA,EAGO,2CAEPC,EAAmC,gCACnCC,EAGO,qCAEP,SAAS,0BAA2B,IAAM,CACxC,SAAS,UAAW,IAAM,CACxB,GAAG,iDAAkD,IAAM,CAEzD,MAAMC,EAAoC,CACxC,sBAAuB,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,EACzD,aAAc,EAChB,EAIMC,EADU,IAAI,0BAAwBD,CAAI,EAC3B,QAAQ,EAG7B,OAAOC,EAAK,WAAW,CAAC,EAAE,cACxB,WAAW,KAAK,CAAC,IAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,CAAI,CAAC,CAClE,CACF,CAAC,EAED,GAAG,sDAAuD,IAAM,CAE9D,MAAMD,EAAoC,CACxC,sBAAuB,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,EACzD,aAAc,EAChB,EAIMC,EADU,IAAI,0BAAwBD,CAAI,EAC3B,QAAQ,EAG7B,OAAOC,EAAK,WAAW,CAAC,EAAE,cACxB,WAAW,KAAK,CAAC,IAAM,EAAM,IAAM,EAAM,EAAM,EAAM,EAAM,CAAI,CAAC,CAClE,CACF,CAAC,CACH,CAAC,EAED,SAAS,gBAAiB,IAAM,CAC9B,GAAG,gEAAiE,IAAM,CAExE,MAAMC,EAAyB,CAC7B,KAAM,WAAW,KAAK,CAAC,CAAC,EACxB,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,CAC1C,EAOMC,EAJU,IAAI,0BAAwB,CAC1C,sBAAuB,IAAI,WAAW,CAAC,EACvC,aAAc,EAChB,CAAC,EACsB,cAAcD,CAAQ,EAG7C,MAAI,0BAAuBC,CAAM,EAC/B,MAAM,IAAI,MAAM,gBAAgB,EAEhC,OAAOA,EAAO,KAAK,EAAE,eAAe,oBAAkB,CAE1D,CAAC,EAED,GAAG,qCAAsC,IAAM,CAE7C,MAAMD,EAAyB,CAC7B,KAAM,WAAW,KAAK,CAAC,CAAC,EACxB,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,CAC1C,EAOMC,EAJU,IAAI,0BAAwB,CAC1C,sBAAuB,IAAI,WAAW,CAAC,EACvC,aAAc,EAChB,CAAC,EACsB,cAAcD,CAAQ,EAG7C,MAAI,0BAAuBC,CAAM,EAC/B,OAAOA,EAAO,IAAI,EAAE,cAAc,MAElC,OAAM,IAAI,MAAM,kBAAkB,CAEtC,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
-
"names": ["import_device_management_kit", "import_ethAppErrors", "import_StoreTransactionCommand", "args", "apdu", "response", "result"]
|
|
4
|
+
"sourcesContent": ["import {\n type ApduResponse,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { EthAppCommandError } from \"./utils/ethAppErrors\";\nimport {\n StoreTransactionCommand,\n type StoreTransactionCommandArgs,\n} from \"./StoreTransactionCommand\";\n\ndescribe(\"StoreTransactionCommand\", () => {\n describe(\"name\", () => {\n it(\"should be 'storeTransaction'\", () => {\n const command = new StoreTransactionCommand({\n serializedTransaction: new Uint8Array(),\n isFirstChunk: true,\n });\n expect(command.name).toBe(\"storeTransaction\");\n });\n });\n\n describe(\"getApdu\", () => {\n it(\"should return the raw APDU for the first chunk\", () => {\n // GIVEN\n const args: StoreTransactionCommandArgs = {\n serializedTransaction: Uint8Array.from([0x01, 0x02, 0x03]),\n isFirstChunk: true,\n };\n\n // WHEN\n const command = new StoreTransactionCommand(args);\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(\n Uint8Array.from([0xe0, 0x04, 0x00, 0x01, 0x03, 0x01, 0x02, 0x03]),\n );\n });\n\n it(\"should return the raw APDU for the subsequent chunk\", () => {\n // GIVEN\n const args: StoreTransactionCommandArgs = {\n serializedTransaction: Uint8Array.from([0x04, 0x05, 0x06]),\n isFirstChunk: false,\n };\n\n // WHEN\n const command = new StoreTransactionCommand(args);\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(\n Uint8Array.from([0xe0, 0x04, 0x80, 0x01, 0x03, 0x04, 0x05, 0x06]),\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 data: Uint8Array.from([]),\n statusCode: Uint8Array.from([0x6d, 0x00]), // Invalid status code\n };\n\n // WHEN\n const command = new StoreTransactionCommand({\n serializedTransaction: new Uint8Array(0),\n isFirstChunk: true,\n });\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n throw new Error(\"Expected error\");\n } else {\n expect(result.error).toBeInstanceOf(EthAppCommandError);\n }\n });\n\n it(\"should return the correct response\", () => {\n // GIVEN\n const response: ApduResponse = {\n data: Uint8Array.from([]),\n statusCode: Uint8Array.from([0x90, 0x00]), // Success status code\n };\n\n // WHEN\n const command = new StoreTransactionCommand({\n serializedTransaction: new Uint8Array(0),\n isFirstChunk: true,\n });\n const result = command.parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n expect(result.data).toBeUndefined();\n } else {\n throw new Error(\"Expected success\");\n }\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAGO,2CAEPC,EAAmC,gCACnCC,EAGO,qCAEP,SAAS,0BAA2B,IAAM,CACxC,SAAS,OAAQ,IAAM,CACrB,GAAG,+BAAgC,IAAM,CACvC,MAAMC,EAAU,IAAI,0BAAwB,CAC1C,sBAAuB,IAAI,WAC3B,aAAc,EAChB,CAAC,EACD,OAAOA,EAAQ,IAAI,EAAE,KAAK,kBAAkB,CAC9C,CAAC,CACH,CAAC,EAED,SAAS,UAAW,IAAM,CACxB,GAAG,iDAAkD,IAAM,CAEzD,MAAMC,EAAoC,CACxC,sBAAuB,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,EACzD,aAAc,EAChB,EAIMC,EADU,IAAI,0BAAwBD,CAAI,EAC3B,QAAQ,EAG7B,OAAOC,EAAK,WAAW,CAAC,EAAE,cACxB,WAAW,KAAK,CAAC,IAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,CAAI,CAAC,CAClE,CACF,CAAC,EAED,GAAG,sDAAuD,IAAM,CAE9D,MAAMD,EAAoC,CACxC,sBAAuB,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,EACzD,aAAc,EAChB,EAIMC,EADU,IAAI,0BAAwBD,CAAI,EAC3B,QAAQ,EAG7B,OAAOC,EAAK,WAAW,CAAC,EAAE,cACxB,WAAW,KAAK,CAAC,IAAM,EAAM,IAAM,EAAM,EAAM,EAAM,EAAM,CAAI,CAAC,CAClE,CACF,CAAC,CACH,CAAC,EAED,SAAS,gBAAiB,IAAM,CAC9B,GAAG,gEAAiE,IAAM,CAExE,MAAMC,EAAyB,CAC7B,KAAM,WAAW,KAAK,CAAC,CAAC,EACxB,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,CAC1C,EAOMC,EAJU,IAAI,0BAAwB,CAC1C,sBAAuB,IAAI,WAAW,CAAC,EACvC,aAAc,EAChB,CAAC,EACsB,cAAcD,CAAQ,EAG7C,MAAI,0BAAuBC,CAAM,EAC/B,MAAM,IAAI,MAAM,gBAAgB,EAEhC,OAAOA,EAAO,KAAK,EAAE,eAAe,oBAAkB,CAE1D,CAAC,EAED,GAAG,qCAAsC,IAAM,CAE7C,MAAMD,EAAyB,CAC7B,KAAM,WAAW,KAAK,CAAC,CAAC,EACxB,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,CAC1C,EAOMC,EAJU,IAAI,0BAAwB,CAC1C,sBAAuB,IAAI,WAAW,CAAC,EACvC,aAAc,EAChB,CAAC,EACsB,cAAcD,CAAQ,EAG7C,MAAI,0BAAuBC,CAAM,EAC/B,OAAOA,EAAO,IAAI,EAAE,cAAc,MAElC,OAAM,IAAI,MAAM,kBAAkB,CAEtC,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_device_management_kit", "import_ethAppErrors", "import_StoreTransactionCommand", "command", "args", "apdu", "response", "result"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var d=Object.defineProperty;var
|
|
1
|
+
"use strict";var d=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var i=(r,e)=>{for(var o in e)d(r,o,{get:e[o],enumerable:!0})},c=(r,e,o,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of u(e))!C.call(r,n)&&n!==o&&d(r,n,{get:()=>e[n],enumerable:!(a=l(e,n))||a.enumerable});return r};var b=r=>c(d({},"__esModule",{value:!0}),r);var E={};i(E,{Web3CheckOptInCommand:()=>A});module.exports=b(E);var t=require("@ledgerhq/device-management-kit"),m=require("@ledgerhq/signer-utils"),s=require("purify-ts"),p=require("../../app-binder/command/utils/ethAppErrors");class A{name="web3CheckOptIn";errorHelper=new m.CommandErrorHelper(p.ETH_APP_ERRORS,p.EthAppCommandErrorFactory);constructor(){}getApdu(){const e={cla:224,ins:50,p1:1,p2:0};return new t.ApduBuilder(e).build()}parseResponse(e){return s.Maybe.fromNullable(this.errorHelper.getError(e)).orDefaultLazy(()=>{const o=new t.ApduParser(e).extract8BitUInt();return o===void 0?(0,t.CommandResultFactory)({data:{enabled:!1}}):(0,t.CommandResultFactory)({data:{enabled:o!==0}})})}}0&&(module.exports={Web3CheckOptInCommand});
|
|
2
2
|
//# sourceMappingURL=Web3CheckOptInCommand.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/command/Web3CheckOptInCommand.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} 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 Web3CheckOptInCommandResponse = {\n enabled: boolean;\n};\n\n/**\n * The command that trigger web3check opt-in on device.\n */\nexport class Web3CheckOptInCommand\n implements Command<Web3CheckOptInCommandResponse, void, EthErrorCodes>\n{\n private readonly errorHelper = new CommandErrorHelper<\n Web3CheckOptInCommandResponse,\n EthErrorCodes\n >(ETH_APP_ERRORS, EthAppCommandErrorFactory);\n\n constructor() {}\n\n getApdu(): Apdu {\n const apduBuilderArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x32,\n p1: 0x01,\n p2: 0x00,\n };\n\n return new ApduBuilder(apduBuilderArgs).build();\n }\n\n parseResponse(\n response: ApduResponse,\n ): CommandResult<Web3CheckOptInCommandResponse, EthErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(response),\n ).orDefaultLazy(() => {\n const enabled = new ApduParser(response).extract8BitUInt();\n if (enabled === undefined) {\n return CommandResultFactory({ data: { enabled: false } });\n }\n return CommandResultFactory({ data: { enabled: enabled !== 0 } });\n });\n }\n}\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,2BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EASO,2CACPC,EAAmC,kCACnCC,EAAsB,qBAEtBC,EAIO,2DASA,MAAML,CAEb,
|
|
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} 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 Web3CheckOptInCommandResponse = {\n enabled: boolean;\n};\n\n/**\n * The command that trigger web3check opt-in on device.\n */\nexport class Web3CheckOptInCommand\n implements Command<Web3CheckOptInCommandResponse, void, EthErrorCodes>\n{\n readonly name = \"web3CheckOptIn\";\n private readonly errorHelper = new CommandErrorHelper<\n Web3CheckOptInCommandResponse,\n EthErrorCodes\n >(ETH_APP_ERRORS, EthAppCommandErrorFactory);\n\n constructor() {}\n\n getApdu(): Apdu {\n const apduBuilderArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x32,\n p1: 0x01,\n p2: 0x00,\n };\n\n return new ApduBuilder(apduBuilderArgs).build();\n }\n\n parseResponse(\n response: ApduResponse,\n ): CommandResult<Web3CheckOptInCommandResponse, EthErrorCodes> {\n return Maybe.fromNullable(\n this.errorHelper.getError(response),\n ).orDefaultLazy(() => {\n const enabled = new ApduParser(response).extract8BitUInt();\n if (enabled === undefined) {\n return CommandResultFactory({ data: { enabled: false } });\n }\n return CommandResultFactory({ data: { enabled: enabled !== 0 } });\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,2BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EASO,2CACPC,EAAmC,kCACnCC,EAAsB,qBAEtBC,EAIO,2DASA,MAAML,CAEb,CACW,KAAO,iBACC,YAAc,IAAI,qBAGjC,iBAAgB,2BAAyB,EAE3C,aAAc,CAAC,CAEf,SAAgB,CACd,MAAMM,EAAmC,CACvC,IAAK,IACL,IAAK,GACL,GAAI,EACJ,GAAI,CACN,EAEA,OAAO,IAAI,cAAYA,CAAe,EAAE,MAAM,CAChD,CAEA,cACEC,EAC6D,CAC7D,OAAO,QAAM,aACX,KAAK,YAAY,SAASA,CAAQ,CACpC,EAAE,cAAc,IAAM,CACpB,MAAMC,EAAU,IAAI,aAAWD,CAAQ,EAAE,gBAAgB,EACzD,OAAIC,IAAY,UACP,wBAAqB,CAAE,KAAM,CAAE,QAAS,EAAM,CAAE,CAAC,KAEnD,wBAAqB,CAAE,KAAM,CAAE,QAASA,IAAY,CAAE,CAAE,CAAC,CAClE,CAAC,CACH,CACF",
|
|
6
6
|
"names": ["Web3CheckOptInCommand_exports", "__export", "Web3CheckOptInCommand", "__toCommonJS", "import_device_management_kit", "import_signer_utils", "import_purify_ts", "import_ethAppErrors", "apduBuilderArgs", "response", "enabled"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var r=require("@ledgerhq/device-management-kit"),s=require("../../app-binder/command/Web3CheckOptInCommand");describe("Web3CheckOptInCommand",()=>{describe("getApdu",()=>{it("should return the raw APDU",()=>{const e=new s.Web3CheckOptInCommand().getApdu();expect(e.getRawApdu()).toStrictEqual(Uint8Array.from([224,50,1,0,0]))})}),describe("parseResponse",()=>{it("should return true",()=>{const t={statusCode:Uint8Array.from([144,0]),data:new Uint8Array([1])},e=new s.Web3CheckOptInCommand().parseResponse(t);(0,r.isSuccessCommandResult)(e)?expect(e.data).toStrictEqual({enabled:!0}):assert.fail("Expected a success")}),it("should return false",()=>{const t={statusCode:Uint8Array.from([144,0]),data:new Uint8Array([0])},e=new s.Web3CheckOptInCommand().parseResponse(t);(0,r.isSuccessCommandResult)(e)?expect(e.data).toStrictEqual({enabled:!1}):assert.fail("Expected a success")}),it("should return false if missing",()=>{const t={statusCode:Uint8Array.from([144,0]),data:new Uint8Array([])},e=new s.Web3CheckOptInCommand().parseResponse(t);(0,r.isSuccessCommandResult)(e)?expect(e.data).toStrictEqual({enabled:!1}):assert.fail("Expected a success")}),it("should return an error if the device is locked",()=>{const t={statusCode:Uint8Array.from([85,21]),data:new Uint8Array},e=new s.Web3CheckOptInCommand().parseResponse(t);(0,r.isSuccessCommandResult)(e)?assert.fail("Expected an error"):expect(e.error).toEqual(expect.objectContaining({errorCode:"5515",message:"Device is locked."}))})})});
|
|
1
|
+
"use strict";var r=require("@ledgerhq/device-management-kit"),s=require("../../app-binder/command/Web3CheckOptInCommand");describe("Web3CheckOptInCommand",()=>{describe("name",()=>{it("should be 'web3CheckOptIn'",()=>{const t=new s.Web3CheckOptInCommand;expect(t.name).toBe("web3CheckOptIn")})}),describe("getApdu",()=>{it("should return the raw APDU",()=>{const e=new s.Web3CheckOptInCommand().getApdu();expect(e.getRawApdu()).toStrictEqual(Uint8Array.from([224,50,1,0,0]))})}),describe("parseResponse",()=>{it("should return true",()=>{const t={statusCode:Uint8Array.from([144,0]),data:new Uint8Array([1])},e=new s.Web3CheckOptInCommand().parseResponse(t);(0,r.isSuccessCommandResult)(e)?expect(e.data).toStrictEqual({enabled:!0}):assert.fail("Expected a success")}),it("should return false",()=>{const t={statusCode:Uint8Array.from([144,0]),data:new Uint8Array([0])},e=new s.Web3CheckOptInCommand().parseResponse(t);(0,r.isSuccessCommandResult)(e)?expect(e.data).toStrictEqual({enabled:!1}):assert.fail("Expected a success")}),it("should return false if missing",()=>{const t={statusCode:Uint8Array.from([144,0]),data:new Uint8Array([])},e=new s.Web3CheckOptInCommand().parseResponse(t);(0,r.isSuccessCommandResult)(e)?expect(e.data).toStrictEqual({enabled:!1}):assert.fail("Expected a success")}),it("should return an error if the device is locked",()=>{const t={statusCode:Uint8Array.from([85,21]),data:new Uint8Array},e=new s.Web3CheckOptInCommand().parseResponse(t);(0,r.isSuccessCommandResult)(e)?assert.fail("Expected an error"):expect(e.error).toEqual(expect.objectContaining({errorCode:"5515",message:"Device is locked."}))})})});
|
|
2
2
|
//# sourceMappingURL=Web3CheckOptInCommand.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/command/Web3CheckOptInCommand.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { isSuccessCommandResult } from \"@ledgerhq/device-management-kit\";\n\nimport { Web3CheckOptInCommand } from \"@internal/app-binder/command/Web3CheckOptInCommand\";\n\ndescribe(\"Web3CheckOptInCommand\", () => {\n describe(\"getApdu\", () => {\n it(\"should return the raw APDU\", () => {\n // GIVEN\n const command = new Web3CheckOptInCommand();\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(\n Uint8Array.from([0xe0, 0x32, 0x01, 0x00, 0x00]),\n );\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return true\", () => {\n // GIVEN\n const response = {\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([0x01]),\n };\n\n // WHEN\n const result = new Web3CheckOptInCommand().parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n expect(result.data).toStrictEqual({ enabled: true });\n } else {\n assert.fail(\"Expected a success\");\n }\n });\n\n it(\"should return false\", () => {\n // GIVEN\n const response = {\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([0x00]),\n };\n\n // WHEN\n const result = new Web3CheckOptInCommand().parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n expect(result.data).toStrictEqual({ enabled: false });\n } else {\n assert.fail(\"Expected a success\");\n }\n });\n\n it(\"should return false if missing\", () => {\n // GIVEN\n const response = {\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([]),\n };\n\n // WHEN\n const result = new Web3CheckOptInCommand().parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n expect(result.data).toStrictEqual({ enabled: false });\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 = new Web3CheckOptInCommand().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});\n"],
|
|
5
|
-
"mappings": "aAAA,IAAAA,EAAuC,2CAEvCC,EAAsC,8DAEtC,SAAS,wBAAyB,IAAM,CACtC,SAAS,UAAW,IAAM,CACxB,GAAG,6BAA8B,IAAM,CAKrC,MAAMC,EAHU,IAAI,wBAAsB,EAGrB,QAAQ,EAG7B,OAAOA,EAAK,WAAW,CAAC,EAAE,cACxB,WAAW,KAAK,CAAC,IAAM,GAAM,EAAM,EAAM,CAAI,CAAC,CAChD,CACF,CAAC,CACH,CAAC,EAED,SAAS,gBAAiB,IAAM,CAC9B,GAAG,qBAAsB,IAAM,CAE7B,MAAMC,EAAW,CACf,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CAAI,CAAC,CAC7B,EAGMC,EAAS,IAAI,wBAAsB,EAAE,cAAcD,CAAQ,KAG7D,0BAAuBC,CAAM,EAC/B,OAAOA,EAAO,IAAI,EAAE,cAAc,CAAE,QAAS,EAAK,CAAC,EAEnD,OAAO,KAAK,oBAAoB,CAEpC,CAAC,EAED,GAAG,sBAAuB,IAAM,CAE9B,MAAMD,EAAW,CACf,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CAAI,CAAC,CAC7B,EAGMC,EAAS,IAAI,wBAAsB,EAAE,cAAcD,CAAQ,KAG7D,0BAAuBC,CAAM,EAC/B,OAAOA,EAAO,IAAI,EAAE,cAAc,CAAE,QAAS,EAAM,CAAC,EAEpD,OAAO,KAAK,oBAAoB,CAEpC,CAAC,EAED,GAAG,iCAAkC,IAAM,CAEzC,MAAMD,EAAW,CACf,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,EAGMC,EAAS,IAAI,wBAAsB,EAAE,cAAcD,CAAQ,KAG7D,0BAAuBC,CAAM,EAC/B,OAAOA,EAAO,IAAI,EAAE,cAAc,CAAE,QAAS,EAAM,CAAC,EAEpD,OAAO,KAAK,oBAAoB,CAEpC,CAAC,EAED,GAAG,iDAAkD,IAAM,CAEzD,MAAMD,EAAW,CACf,WAAY,WAAW,KAAK,CAAC,GAAM,EAAI,CAAC,EACxC,KAAM,IAAI,UACZ,EAGMC,EAAS,IAAI,wBAAsB,EAAE,cAAcD,CAAQ,KAG7D,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,CACH,CAAC,CACH,CAAC",
|
|
6
|
-
"names": ["import_device_management_kit", "import_Web3CheckOptInCommand", "apdu", "response", "result"]
|
|
4
|
+
"sourcesContent": ["import { isSuccessCommandResult } from \"@ledgerhq/device-management-kit\";\n\nimport { Web3CheckOptInCommand } from \"@internal/app-binder/command/Web3CheckOptInCommand\";\n\ndescribe(\"Web3CheckOptInCommand\", () => {\n describe(\"name\", () => {\n it(\"should be 'web3CheckOptIn'\", () => {\n const command = new Web3CheckOptInCommand();\n expect(command.name).toBe(\"web3CheckOptIn\");\n });\n });\n\n describe(\"getApdu\", () => {\n it(\"should return the raw APDU\", () => {\n // GIVEN\n const command = new Web3CheckOptInCommand();\n\n // WHEN\n const apdu = command.getApdu();\n\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(\n Uint8Array.from([0xe0, 0x32, 0x01, 0x00, 0x00]),\n );\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return true\", () => {\n // GIVEN\n const response = {\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([0x01]),\n };\n\n // WHEN\n const result = new Web3CheckOptInCommand().parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n expect(result.data).toStrictEqual({ enabled: true });\n } else {\n assert.fail(\"Expected a success\");\n }\n });\n\n it(\"should return false\", () => {\n // GIVEN\n const response = {\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([0x00]),\n };\n\n // WHEN\n const result = new Web3CheckOptInCommand().parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n expect(result.data).toStrictEqual({ enabled: false });\n } else {\n assert.fail(\"Expected a success\");\n }\n });\n\n it(\"should return false if missing\", () => {\n // GIVEN\n const response = {\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: new Uint8Array([]),\n };\n\n // WHEN\n const result = new Web3CheckOptInCommand().parseResponse(response);\n\n // THEN\n if (isSuccessCommandResult(result)) {\n expect(result.data).toStrictEqual({ enabled: false });\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 = new Web3CheckOptInCommand().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});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAAuC,2CAEvCC,EAAsC,8DAEtC,SAAS,wBAAyB,IAAM,CACtC,SAAS,OAAQ,IAAM,CACrB,GAAG,6BAA8B,IAAM,CACrC,MAAMC,EAAU,IAAI,wBACpB,OAAOA,EAAQ,IAAI,EAAE,KAAK,gBAAgB,CAC5C,CAAC,CACH,CAAC,EAED,SAAS,UAAW,IAAM,CACxB,GAAG,6BAA8B,IAAM,CAKrC,MAAMC,EAHU,IAAI,wBAAsB,EAGrB,QAAQ,EAG7B,OAAOA,EAAK,WAAW,CAAC,EAAE,cACxB,WAAW,KAAK,CAAC,IAAM,GAAM,EAAM,EAAM,CAAI,CAAC,CAChD,CACF,CAAC,CACH,CAAC,EAED,SAAS,gBAAiB,IAAM,CAC9B,GAAG,qBAAsB,IAAM,CAE7B,MAAMC,EAAW,CACf,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CAAI,CAAC,CAC7B,EAGMC,EAAS,IAAI,wBAAsB,EAAE,cAAcD,CAAQ,KAG7D,0BAAuBC,CAAM,EAC/B,OAAOA,EAAO,IAAI,EAAE,cAAc,CAAE,QAAS,EAAK,CAAC,EAEnD,OAAO,KAAK,oBAAoB,CAEpC,CAAC,EAED,GAAG,sBAAuB,IAAM,CAE9B,MAAMD,EAAW,CACf,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CAAI,CAAC,CAC7B,EAGMC,EAAS,IAAI,wBAAsB,EAAE,cAAcD,CAAQ,KAG7D,0BAAuBC,CAAM,EAC/B,OAAOA,EAAO,IAAI,EAAE,cAAc,CAAE,QAAS,EAAM,CAAC,EAEpD,OAAO,KAAK,oBAAoB,CAEpC,CAAC,EAED,GAAG,iCAAkC,IAAM,CAEzC,MAAMD,EAAW,CACf,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,EAGMC,EAAS,IAAI,wBAAsB,EAAE,cAAcD,CAAQ,KAG7D,0BAAuBC,CAAM,EAC/B,OAAOA,EAAO,IAAI,EAAE,cAAc,CAAE,QAAS,EAAM,CAAC,EAEpD,OAAO,KAAK,oBAAoB,CAEpC,CAAC,EAED,GAAG,iDAAkD,IAAM,CAEzD,MAAMD,EAAW,CACf,WAAY,WAAW,KAAK,CAAC,GAAM,EAAI,CAAC,EACxC,KAAM,IAAI,UACZ,EAGMC,EAAS,IAAI,wBAAsB,EAAE,cAAcD,CAAQ,KAG7D,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,CACH,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_device_management_kit", "import_Web3CheckOptInCommand", "command", "apdu", "response", "result"]
|
|
7
7
|
}
|
package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var l=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var _=(o,r)=>{for(var c in r)l(o,c,{get:r[c],enumerable:!0})},b=(o,r,c,p)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of v(r))!f.call(o,s)&&s!==c&&l(o,s,{get:()=>r[s],enumerable:!(p=k(r,s))||p.enumerable});return o};var D=o=>b(l({},"__esModule",{value:!0}),o);var O={};_(O,{SignTransactionDeviceAction:()=>P});module.exports=D(O);var n=require("@ledgerhq/device-management-kit"),u=require("purify-ts"),t=require("xstate"),i=require("../../../../api/app-binder/SignTransactionDeviceActionTypes"),m=require("../../../app-binder/command/GetAppConfigurationCommand"),T=require("../../../app-binder/command/Web3CheckOptInCommand"),h=require("../../../app-binder/constant/plugins"),y=require("../../../app-binder/task/BuildTransactionContextTask"),E=require("../../../app-binder/task/ProvideTransactionContextTask"),x=require("../../../app-binder/task/ProvideTransactionGenericContextTask"),I=require("../../../app-binder/task/SendSignTransactionTask"),A=require("../../../shared/utils/ApplicationChecker");class P extends n.XStateDeviceAction{makeStateMachine(r){const{getAppConfig:c,web3CheckOptIn:p,buildContext:s,provideContext:C,provideGenericContext:d,signTransaction:g}=this.extractDependencies(r);return(0,t.setup)({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new n.OpenAppDeviceAction({input:{appName:"Ethereum"}}).makeStateMachine(r),getAppConfig:(0,t.fromPromise)(c),web3CheckOptIn:(0,t.fromPromise)(p),buildContext:(0,t.fromPromise)(s),provideContext:(0,t.fromPromise)(C),provideGenericContext:(0,t.fromPromise)(d),signTransaction:(0,t.fromPromise)(g)},guards:{noInternalError:({context:e})=>e._internalState.error===null,isGenericContext:({context:e})=>e._internalState.clearSignContexts!==null&&typeof e._internalState.clearSignContexts.transactionInfo=="string",isWeb3ChecksSupported:({context:e})=>new A.ApplicationChecker(r.getDeviceSessionState(),e._internalState.appConfig).withMinVersionExclusive("1.15.0").excludeDeviceModel(n.DeviceModelId.NANO_S).excludeDeviceModel(n.DeviceModelId.NANO_SP).excludeDeviceModel(n.DeviceModelId.NANO_X).check(),shouldOptIn:({context:e})=>!e._internalState.appConfig.web3ChecksEnabled&&!e._internalState.appConfig.web3ChecksOptIn,skipOpenApp:({context:e})=>!!e.input.options.skipOpenApp},actions:{assignErrorFromEvent:(0,t.assign)({_internalState:e=>({...e.context._internalState,error:e.event.error})})}}).createMachine({id:"SignTransactionDeviceAction",initial:"InitialState",context:({input:e})=>({input:e,intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,step:i.SignTransactionDAStep.OPEN_APP},_internalState:{error:null,appConfig:null,clearSignContexts:null,serializedTransaction:null,chainId:null,web3Check:null,transactionType:null,isLegacy:!0,signature:null}}),states:{InitialState:{always:[{target:"GetAppConfig",guard:"skipOpenApp"},"OpenAppDeviceAction"]},OpenAppDeviceAction:{invoke:{id:"openAppStateMachine",input:{appName:"Ethereum",compatibleAppNames:h.ETHEREUM_PLUGINS},src:"openAppStateMachine",onSnapshot:{actions:(0,t.assign)({intermediateValue:e=>({...e.event.snapshot.context.intermediateValue,step:i.SignTransactionDAStep.OPEN_APP})})},onDone:{actions:(0,t.assign)({_internalState:e=>e.event.output.caseOf({Right:()=>e.context._internalState,Left:a=>({...e.context._internalState,error:a})})}),target:"CheckOpenAppDeviceActionResult"}}},CheckOpenAppDeviceActionResult:{always:[{target:"GetAppConfig",guard:"noInternalError"},"Error"]},GetAppConfig:{entry:(0,t.assign)({intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,step:i.SignTransactionDAStep.GET_APP_CONFIG}}),invoke:{id:"getAppConfig",src:"getAppConfig",onDone:{target:"GetAppConfigResultCheck",actions:[(0,t.assign)({_internalState:({event:e,context:a})=>(0,n.isSuccessCommandResult)(e.output)?{...a._internalState,appConfig:e.output.data}:{...a._internalState,error:e.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetAppConfigResultCheck:{always:[{target:"Web3ChecksOptIn",guard:(0,t.and)(["noInternalError","isWeb3ChecksSupported","shouldOptIn"])},{target:"BuildContext",guard:"noInternalError"},{target:"Error"}]},Web3ChecksOptIn:{entry:(0,t.assign)({intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.Web3ChecksOptIn,step:i.SignTransactionDAStep.WEB3_CHECKS_OPT_IN}}),invoke:{id:"web3CheckOptIn",src:"web3CheckOptIn",onDone:{target:"Web3ChecksOptInResult",actions:[(0,t.assign)({_internalState:({event:e,context:a})=>(0,n.isSuccessCommandResult)(e.output)?{...a._internalState,appConfig:{...a._internalState.appConfig,web3ChecksEnabled:e.output.data.enabled}}:a._internalState})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},Web3ChecksOptInResult:{entry:(0,t.assign)(({context:e})=>({intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,step:i.SignTransactionDAStep.WEB3_CHECKS_OPT_IN_RESULT,result:e._internalState.appConfig.web3ChecksEnabled}})),after:{0:{target:"BuildContext"}}},BuildContext:{entry:(0,t.assign)({intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,step:i.SignTransactionDAStep.BUILD_CONTEXT}}),invoke:{id:"buildContext",src:"buildContext",input:({context:e})=>({contextModule:e.input.contextModule,mapper:e.input.mapper,transaction:e.input.transaction,options:e.input.options,appConfig:e._internalState.appConfig,derivationPath:e.input.derivationPath}),onDone:{target:"BuildContextResultCheck",actions:[(0,t.assign)({_internalState:({event:e,context:a})=>({...a._internalState,clearSignContexts:e.output.clearSignContexts,web3Check:e.output.web3Check,serializedTransaction:e.output.serializedTransaction,chainId:e.output.chainId,transactionType:e.output.transactionType})})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},BuildContextResultCheck:{always:[{target:"ProvideGenericContext",guard:"isGenericContext"},{target:"ProvideContext"}]},ProvideContext:{entry:(0,t.assign)({intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,step:i.SignTransactionDAStep.PROVIDE_CONTEXT}}),invoke:{id:"provideContext",src:"provideContext",input:({context:e})=>({clearSignContexts:e._internalState.clearSignContexts,web3Check:e._internalState.web3Check}),onDone:{target:"SignTransaction"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ProvideGenericContext:{entry:(0,t.assign)({intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,step:i.SignTransactionDAStep.PROVIDE_GENERIC_CONTEXT}}),invoke:{id:"provideGenericContext",src:"provideGenericContext",input:({context:e})=>({contextModule:e.input.contextModule,transactionParser:e.input.parser,chainId:e._internalState.chainId,derivationPath:e.input.derivationPath,serializedTransaction:e._internalState.serializedTransaction,context:e._internalState.clearSignContexts,web3Check:e._internalState.web3Check}),onDone:{actions:(0,t.assign)({_internalState:({event:e,context:a})=>{const{isLegacy:w,...S}=a._internalState;return e.output.caseOf({Just:()=>({...S,isLegacy:!1}),Nothing:()=>({...S,isLegacy:!1})})}}),target:"SignTransaction"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},SignTransaction:{entry:(0,t.assign)({intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.SignTransaction,step:i.SignTransactionDAStep.SIGN_TRANSACTION}}),invoke:{id:"signTransaction",src:"signTransaction",input:({context:e})=>({derivationPath:e.input.derivationPath,serializedTransaction:e._internalState.serializedTransaction,chainId:e._internalState.chainId,transactionType:e._internalState.transactionType,isLegacy:e._internalState.isLegacy}),onDone:{target:"SignTransactionResultCheck",actions:[(0,t.assign)({_internalState:({event:e,context:a})=>(0,n.isSuccessCommandResult)(e.output)?{...a._internalState,signature:e.output.data}:{...a._internalState,error:e.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},SignTransactionResultCheck:{always:[{guard:"noInternalError",target:"Success"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:e})=>e._internalState.signature?(0,u.Right)(e._internalState.signature):(0,u.Left)(e._internalState.error||new n.UnknownDAError("No error in final state"))})}extractDependencies(r){return{getAppConfig:async()=>r.sendCommand(new m.GetAppConfiguration),web3CheckOptIn:async()=>r.sendCommand(new T.Web3CheckOptInCommand),buildContext:async e=>new y.BuildTransactionContextTask(r,e.input).run(),provideContext:async e=>new E.ProvideTransactionContextTask(r,{clearSignContexts:e.input.clearSignContexts,web3Check:e.input.web3Check}).run(),provideGenericContext:async e=>new x.ProvideTransactionGenericContextTask(r,{contextModule:e.input.contextModule,transactionParser:e.input.transactionParser,chainId:e.input.chainId,derivationPath:e.input.derivationPath,serializedTransaction:e.input.serializedTransaction,context:e.input.context,web3Check:e.input.web3Check}).run(),signTransaction:async e=>new I.SendSignTransactionTask(r,e.input).run()}}}0&&(module.exports={SignTransactionDeviceAction});
|
|
1
|
+
"use strict";var l=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var P=Object.prototype.hasOwnProperty;var b=(o,a)=>{for(var p in a)l(o,p,{get:a[p],enumerable:!0})},O=(o,a,p,c)=>{if(a&&typeof a=="object"||typeof a=="function")for(let s of v(a))!P.call(o,s)&&s!==p&&l(o,s,{get:()=>a[s],enumerable:!(c=D(a,s))||c.enumerable});return o};var R=o=>O(l({},"__esModule",{value:!0}),o);var w={};b(w,{SignTransactionDeviceAction:()=>N});module.exports=R(w);var n=require("@ledgerhq/device-management-kit"),u=require("purify-ts"),e=require("xstate"),i=require("../../../../api/app-binder/SignTransactionDeviceActionTypes"),C=require("../../../../api/model/ClearSigningType"),m=require("../../../app-binder/command/GetAddressCommand"),A=require("../../../app-binder/command/GetAppConfigurationCommand"),y=require("../../../app-binder/command/Web3CheckOptInCommand"),h=require("../../../app-binder/task/BuildFullContextsTask"),E=require("../../../app-binder/task/ParseTransactionTask"),I=require("../../../app-binder/task/ProvideTransactionContextsTask"),k=require("../../../app-binder/task/SendSignTransactionTask"),_=require("../../../shared/utils/ApplicationChecker");class N extends n.XStateDeviceAction{makeStateMachine(a){const{getAddress:p,getAppConfig:c,web3CheckOptIn:s,parseTransaction:d,buildContexts:g,signTransaction:S,provideContexts:T}=this.extractDependencies(a);return(0,e.setup)({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new n.OpenAppDeviceAction({input:{appName:"Ethereum"}}).makeStateMachine(a),getAddress:(0,e.fromPromise)(p),getAppConfig:(0,e.fromPromise)(c),web3CheckOptIn:(0,e.fromPromise)(s),parseTransaction:(0,e.fromPromise)(d),buildContexts:(0,e.fromPromise)(g),provideContexts:(0,e.fromPromise)(T),signTransaction:(0,e.fromPromise)(S)},guards:{noInternalError:({context:t})=>t._internalState.error===null,notRefusedByUser:({context:t})=>t._internalState.error!==null&&(!("errorCode"in t._internalState.error)||t._internalState.error.errorCode!=="6985"),isWeb3ChecksSupported:({context:t})=>new _.ApplicationChecker(a.getDeviceSessionState(),t._internalState.appConfig).withMinVersionExclusive("1.15.0").excludeDeviceModel(n.DeviceModelId.NANO_S).excludeDeviceModel(n.DeviceModelId.NANO_SP).excludeDeviceModel(n.DeviceModelId.NANO_X).check(),shouldOptIn:({context:t})=>!t._internalState.appConfig.web3ChecksEnabled&&!t._internalState.appConfig.web3ChecksOptIn,skipOpenApp:({context:t})=>!!t.input.options.skipOpenApp},actions:{assignErrorFromEvent:(0,e.assign)({_internalState:t=>({...t.context._internalState,error:t.event.error})})}}).createMachine({id:"SignTransactionDeviceAction",initial:"InitialState",context:({input:t})=>({input:t,intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,step:i.SignTransactionDAStep.OPEN_APP},_internalState:{error:null,appConfig:null,subset:null,contexts:[],clearSigningType:null,transactionType:null,signature:null}}),states:{InitialState:{always:[{target:"GetAppConfig",guard:"skipOpenApp"},"OpenAppDeviceAction"]},OpenAppDeviceAction:{invoke:{id:"openAppStateMachine",input:{appName:"Ethereum"},src:"openAppStateMachine",onSnapshot:{actions:(0,e.assign)({intermediateValue:t=>({...t.event.snapshot.context.intermediateValue,step:i.SignTransactionDAStep.OPEN_APP})})},onDone:{actions:(0,e.assign)({_internalState:t=>t.event.output.caseOf({Right:()=>t.context._internalState,Left:r=>({...t.context._internalState,error:r})})}),target:"CheckOpenAppDeviceActionResult"}}},CheckOpenAppDeviceActionResult:{always:[{target:"GetAppConfig",guard:"noInternalError"},"Error"]},GetAppConfig:{entry:(0,e.assign)({intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,step:i.SignTransactionDAStep.GET_APP_CONFIG}}),invoke:{id:"getAppConfig",src:"getAppConfig",onDone:{target:"GetAppConfigResultCheck",actions:[(0,e.assign)({_internalState:({event:t,context:r})=>(0,n.isSuccessCommandResult)(t.output)?{...r._internalState,appConfig:t.output.data}:{...r._internalState,error:t.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetAppConfigResultCheck:{always:[{target:"Web3ChecksOptIn",guard:(0,e.and)(["noInternalError","isWeb3ChecksSupported","shouldOptIn"])},{target:"ParseTransaction",guard:"noInternalError"},{target:"Error"}]},Web3ChecksOptIn:{entry:(0,e.assign)({intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.Web3ChecksOptIn,step:i.SignTransactionDAStep.WEB3_CHECKS_OPT_IN}}),invoke:{id:"web3CheckOptIn",src:"web3CheckOptIn",onDone:{target:"Web3ChecksOptInResult",actions:[(0,e.assign)({_internalState:({event:t,context:r})=>(0,n.isSuccessCommandResult)(t.output)?{...r._internalState,appConfig:{...r._internalState.appConfig,web3ChecksEnabled:t.output.data.enabled}}:r._internalState})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},Web3ChecksOptInResult:{entry:(0,e.assign)(({context:t})=>({intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,step:i.SignTransactionDAStep.WEB3_CHECKS_OPT_IN_RESULT,result:t._internalState.appConfig.web3ChecksEnabled}})),after:{0:{target:"ParseTransaction"}}},ParseTransaction:{entry:(0,e.assign)({intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,step:i.SignTransactionDAStep.PARSE_TRANSACTION}}),invoke:{id:"parseTransaction",src:"parseTransaction",input:({context:t})=>({mapper:t.input.mapper,transaction:t.input.transaction}),onDone:{target:"GetAddress",actions:(0,e.assign)({_internalState:({event:t,context:r})=>({...r._internalState,subset:t.output.subset,transactionType:t.output.type})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetAddress:{entry:(0,e.assign)({intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,step:i.SignTransactionDAStep.GET_ADDRESS}}),invoke:{id:"getAddress",src:"getAddress",input:({context:t})=>({derivationPath:t.input.derivationPath,checkOnDevice:!1,returnChainCode:!1}),onDone:{target:"BuildContexts",actions:(0,e.assign)({_internalState:({event:t,context:r})=>{if((0,n.isSuccessCommandResult)(t.output)){const f={...r._internalState.subset,from:t.output.data.address};return{...r._internalState,subset:f}}return{...r._internalState}}})},onError:{target:"Error"}}},BuildContexts:{entry:(0,e.assign)({intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,step:i.SignTransactionDAStep.BUILD_CONTEXTS}}),invoke:{id:"buildContexts",src:"buildContexts",input:({context:t})=>({contextModule:t.input.contextModule,mapper:t.input.mapper,parser:t.input.parser,options:t.input.options,appConfig:t._internalState.appConfig,derivationPath:t.input.derivationPath,subset:t._internalState.subset,transaction:t.input.transaction,deviceModelId:a.getDeviceModel().id}),onDone:{target:"ProvideContexts",actions:[(0,e.assign)({_internalState:({event:t,context:r})=>({...r._internalState,contexts:t.output.clearSignContexts,clearSigningType:t.output.clearSigningType})})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ProvideContexts:{entry:(0,e.assign)({intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,step:i.SignTransactionDAStep.PROVIDE_CONTEXTS}}),exit:(0,e.assign)({_internalState:({context:t})=>({...t._internalState,contexts:t._internalState.contexts.slice(1)})}),invoke:{id:"provideContexts",src:"provideContexts",input:({context:t})=>({contexts:t._internalState.contexts,derivationPath:t.input.derivationPath,serializedTransaction:t.input.transaction}),onDone:{target:"SignTransaction"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},SignTransaction:{entry:(0,e.assign)({intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.SignTransaction,step:i.SignTransactionDAStep.SIGN_TRANSACTION}}),invoke:{id:"signTransaction",src:"signTransaction",input:({context:t})=>({derivationPath:t.input.derivationPath,serializedTransaction:t.input.transaction,chainId:t._internalState.subset.chainId,transactionType:t._internalState.transactionType,clearSigningType:t._internalState.clearSigningType}),onDone:{target:"SignTransactionResultCheck",actions:[(0,e.assign)({_internalState:({event:t,context:r})=>(0,n.isSuccessCommandResult)(t.output)?{...r._internalState,signature:t.output.data}:{...r._internalState,error:t.output.error}})]},onError:{target:"SignTransactionResultCheck",actions:"assignErrorFromEvent"}}},SignTransactionResultCheck:{always:[{guard:"noInternalError",target:"Success"},{guard:"notRefusedByUser",target:"BlindSignTransactionFallback"},{target:"Error"}]},BlindSignTransactionFallback:{entry:(0,e.assign)({intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,step:i.SignTransactionDAStep.BLIND_SIGN_TRANSACTION_FALLBACK}}),invoke:{id:"blindSignTransactionFallback",src:"signTransaction",input:({context:t})=>({derivationPath:t.input.derivationPath,serializedTransaction:t.input.transaction,chainId:t._internalState.subset.chainId,transactionType:t._internalState.transactionType,clearSigningType:C.ClearSigningType.BASIC}),onDone:{target:"BlindSignTransactionFallbackResultCheck",actions:[(0,e.assign)({_internalState:({event:t,context:r})=>(0,n.isSuccessCommandResult)(t.output)?{...r._internalState,signature:t.output.data}:{...r._internalState,error:t.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},BlindSignTransactionFallbackResultCheck:{always:[{guard:"noInternalError",target:"Success"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:t})=>t._internalState.signature?(0,u.Right)(t._internalState.signature):(0,u.Left)(t._internalState.error||new n.UnknownDAError("No error in final state"))})}extractDependencies(a){return{getAddress:async t=>a.sendCommand(new m.GetAddressCommand(t.input)),getAppConfig:async()=>a.sendCommand(new A.GetAppConfiguration),web3CheckOptIn:async()=>a.sendCommand(new y.Web3CheckOptInCommand),parseTransaction:async t=>Promise.resolve(new E.ParseTransactionTask({mapper:t.input.mapper,transaction:t.input.transaction}).run()),buildContexts:async t=>new h.BuildFullContextsTask(a,t.input).run(),provideContexts:async t=>new I.ProvideTransactionContextsTask(a,t.input).run(),signTransaction:async t=>new k.SendSignTransactionTask(a,{...t.input}).run()}}}0&&(module.exports={SignTransactionDeviceAction});
|
|
2
2
|
//# sourceMappingURL=SignTransactionDeviceAction.js.map
|