@ledgerhq/device-signer-kit-ethereum 1.3.0 → 1.3.2
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 +14 -2
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +3 -3
- package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js.map +3 -3
- package/lib/cjs/api/index.js +1 -1
- package/lib/cjs/api/index.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/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/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 +2 -2
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js.map +3 -3
- 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/shared/utils/ApplicationChecker.js +2 -0
- package/lib/cjs/internal/shared/utils/ApplicationChecker.js.map +7 -0
- package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js +2 -0
- package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js.map +7 -0
- package/lib/cjs/package.json +2 -2
- package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js +1 -0
- package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +4 -4
- package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -0
- package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js.map +4 -4
- package/lib/esm/api/index.js +1 -1
- package/lib/esm/api/index.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js.map +2 -2
- package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/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/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 +2 -2
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js +1 -1
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js.map +3 -3
- 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/shared/utils/ApplicationChecker.js +2 -0
- package/lib/esm/internal/shared/utils/ApplicationChecker.js.map +7 -0
- package/lib/esm/internal/shared/utils/ApplicationChecker.test.js +2 -0
- package/lib/esm/internal/shared/utils/ApplicationChecker.test.js.map +7 -0
- package/lib/esm/package.json +2 -2
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +13 -2
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts +14 -1
- package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/index.d.ts +2 -2
- package/lib/types/api/index.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts +8 -1
- package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts +6 -13
- 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 +6 -0
- package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts +8 -7
- package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts +7 -3
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts +0 -1
- package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts +6 -3
- package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts.map +1 -1
- package/lib/types/internal/shared/utils/ApplicationChecker.d.ts +12 -0
- package/lib/types/internal/shared/utils/ApplicationChecker.d.ts.map +1 -0
- package/lib/types/internal/shared/utils/ApplicationChecker.test.d.ts +2 -0
- package/lib/types/internal/shared/utils/ApplicationChecker.test.d.ts.map +1 -0
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +7 -7
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/command/SendEIP712FilteringCommand.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type ApduResponse,\n CommandResultFactory,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport {\n Eip712FilterType,\n SendEIP712FilteringCommand,\n type SendEIP712FilteringCommandArgs,\n} from \"./SendEIP712FilteringCommand\";\n\nconst ACTIVATE_APDU = Uint8Array.from([0xe0, 0x1e, 0x00, 0x00, 0x00]);\nconst MESSAGE_INFO_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0x0f, 0x54, 0x0b, 0x31, 0x69, 0x6e, 0x63, 0x68, 0x20, 0x4f,\n 0x72, 0x64, 0x65, 0x72, 0x06, 0x46, 0x30, 0x44, 0x02, 0x20, 0x29, 0x5e, 0x0a,\n 0xeb, 0x17, 0xca, 0x09, 0x29, 0xb2, 0xa9, 0x4c, 0x32, 0x4d, 0x67, 0xd0, 0xb5,\n 0x52, 0x8a, 0xba, 0x26, 0x81, 0x77, 0xf3, 0xac, 0x29, 0x7b, 0x56, 0x31, 0x41,\n 0xe0, 0x00, 0x27, 0x02, 0x20, 0x3a, 0xc3, 0x60, 0xd9, 0xfd, 0x0c, 0x9c, 0x0c,\n 0x12, 0x27, 0x9d, 0x1e, 0x73, 0xbe, 0xa5, 0xd5, 0x49, 0xa1, 0xe8, 0x14, 0x1f,\n 0x45, 0x4d, 0x88, 0xfb, 0xe1, 0xe8, 0xef, 0x97, 0x0e, 0x68, 0x02,\n]);\nconst RAW_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0xff, 0x4d, 0x04, 0x46, 0x72, 0x6f, 0x6d, 0x47, 0x30, 0x45,\n 0x02, 0x21, 0x00, 0xb8, 0x20, 0xe4, 0xdf, 0xb1, 0xa0, 0xcd, 0xe6, 0xdc, 0x97,\n 0xd9, 0xa3, 0x4e, 0xeb, 0xb1, 0xa4, 0xee, 0xf0, 0xb2, 0x26, 0x26, 0x2e, 0x67,\n 0x88, 0x11, 0x8a, 0xb3, 0xc7, 0xfb, 0x79, 0xfe, 0x35, 0x02, 0x20, 0x2d, 0x42,\n 0x6a, 0x38, 0x8b, 0x4c, 0x3a, 0x80, 0x96, 0xb3, 0xf8, 0x44, 0x12, 0xa7, 0x02,\n 0xea, 0x53, 0x77, 0x70, 0xe6, 0x1e, 0xe0, 0x72, 0x7e, 0xc1, 0xb7, 0x10, 0xc1,\n 0xda, 0x52, 0x0c, 0x44,\n]);\nconst TOKEN_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0xfd, 0x49, 0x01, 0x47, 0x30, 0x45, 0x02, 0x21, 0x00, 0xff,\n 0x72, 0x78, 0x47, 0x44, 0x54, 0x31, 0xe5, 0x71, 0xcd, 0x2a, 0x0d, 0x9d, 0xb4,\n 0x2a, 0x7e, 0xb6, 0x2e, 0x37, 0x87, 0x7b, 0x9b, 0xf2, 0x0e, 0x6a, 0x96, 0x58,\n 0x42, 0x55, 0x34, 0x7e, 0x19, 0x02, 0x20, 0x0a, 0x6e, 0x95, 0xb7, 0xf8, 0xe6,\n 0x3b, 0x2f, 0xab, 0x0b, 0xef, 0x88, 0xc7, 0x47, 0xde, 0x6a, 0x38, 0x7d, 0x06,\n 0x35, 0x1b, 0xe5, 0xbd, 0xc3, 0x4b, 0x2c, 0x1f, 0x9a, 0xea, 0x6f, 0xdd, 0x28,\n]);\nconst AMOUNT_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0xfe, 0x59, 0x0f, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,\n 0x20, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x01, 0x47, 0x30, 0x45, 0x02,\n 0x21, 0x00, 0xa5, 0x9d, 0xc4, 0x79, 0xa8, 0x38, 0xa8, 0x13, 0x90, 0x9c, 0x14,\n 0x0a, 0x15, 0xe6, 0xb6, 0x5b, 0xc5, 0x8c, 0x56, 0x33, 0x28, 0x4b, 0xf9, 0x73,\n 0xc4, 0x36, 0xde, 0x5a, 0x59, 0x26, 0x34, 0xe2, 0x02, 0x20, 0x1e, 0x03, 0x8f,\n 0xc7, 0x99, 0x5d, 0x93, 0x9f, 0xcc, 0xd5, 0x46, 0xe4, 0xc8, 0x5e, 0x79, 0x3c,\n 0x0a, 0xd4, 0x51, 0x21, 0x6e, 0x36, 0xa4, 0xed, 0xfc, 0x7b, 0xce, 0x5b, 0xe2,\n 0x78, 0x08, 0xcb,\n]);\nconst DATE_TIME_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0xfc, 0x58, 0x0f, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61,\n 0x6c, 0x20, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x47, 0x30, 0x45, 0x02, 0x21,\n 0x00, 0xe8, 0x47, 0x16, 0x6e, 0x60, 0xf8, 0x51, 0xe3, 0xc8, 0xd1, 0xf4, 0x41,\n 0x39, 0x81, 0x18, 0x98, 0xcc, 0xd0, 0xd3, 0xa0, 0x3a, 0xed, 0x6c, 0x77, 0xf8,\n 0xc3, 0x99, 0x38, 0x13, 0xf4, 0x79, 0xd2, 0x02, 0x20, 0x31, 0xfe, 0x6b, 0x6a,\n 0x57, 0x4b, 0x56, 0xc5, 0x10, 0x40, 0x03, 0xcf, 0x07, 0x90, 0x0d, 0x11, 0xff,\n 0xaf, 0x30, 0x3d, 0xc0, 0x16, 0xda, 0x4c, 0x1c, 0x3d, 0x18, 0x46, 0x63, 0xda,\n 0x8f, 0x6a,\n]);\nconst DISCARDED_PATH_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0x01, 0x11, 0x10, 0x74, 0x6f, 0x2e, 0x5b, 0x5d, 0x2e, 0x77,\n 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x2e, 0x5b, 0x5d,\n]);\n\ndescribe(\"SendEIP712FilteringCommand\", () => {\n describe(\"getApdu\", () => {\n it(\"Activate APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Activation,\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(ACTIVATE_APDU);\n });\n\n it(\"Discarded path APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.DiscardedPath,\n path: \"to.[].wallets.[]\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(DISCARDED_PATH_APDU);\n });\n\n it(\"Message info APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.MessageInfo,\n displayName: \"1inch Order\",\n filtersCount: 6,\n signature:\n \"30440220295e0aeb17ca0929b2a94c324d67d0b5528aba268177f3ac297b563141e0002702203ac360d9fd0c9c0c12279d1e73bea5d549a1e8141f454d88fbe1e8ef970e6802\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(MESSAGE_INFO_APDU);\n });\n\n it(\"Raw APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Raw,\n discarded: false,\n displayName: \"From\",\n signature:\n \"3045022100b820e4dfb1a0cde6dc97d9a34eebb1a4eef0b226262e6788118ab3c7fb79fe3502202d426a388b4c3a8096b3f84412a702ea537770e61ee0727ec1b710c1da520c44\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(RAW_APDU);\n });\n\n it(\"Token APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 1,\n signature:\n \"3045022100ff727847445431e571cd2a0d9db42a7eb62e37877b9bf20e6a96584255347e1902200a6e95b7f8e63b2fab0bef88c747de6a387d06351be5bdc34b2c1f9aea6fdd28\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(TOKEN_APDU);\n });\n\n it(\"Amount APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Receive minimum\",\n tokenIndex: 1,\n signature:\n \"3045022100a59dc479a838a813909c140a15e6b65bc58c5633284bf973c436de5a592634e202201e038fc7995d939fccd546e4c85e793c0ad451216e36a4edfc7bce5be27808cb\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(AMOUNT_APDU);\n });\n\n it(\"Date-time APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Datetime,\n discarded: false,\n displayName: \"Approval expire\",\n signature:\n \"3045022100e847166e60f851e3c8d1f44139811898ccd0d3a03aed6c77f8c3993813f479d2022031fe6b6a574b56c5104003cf07900d11ffaf303dc016da4c1c3d184663da8f6a\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(DATE_TIME_APDU);\n });\n\n it(\"Discarded filter\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Raw,\n discarded: true,\n displayName: \"From\",\n signature:\n \"3045022100b820e4dfb1a0cde6dc97d9a34eebb1a4eef0b226262e6788118ab3c7fb79fe3502202d426a388b4c3a8096b3f84412a702ea537770e61ee0727ec1b710c1da520c44\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(\n Uint8Array.from([...RAW_APDU.slice(0, 2), 0x01, ...RAW_APDU.slice(3)]),\n );\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return an error if the response status code is invalid\", () => {\n // GIVEN\n const response: ApduResponse = {\n statusCode: Buffer.from([0x6a, 0x80]), // Invalid status code\n data: Buffer.from([]),\n };\n // WHEN\n const command = new SendEIP712FilteringCommand({\n type: Eip712FilterType.Activation,\n });\n // THEN\n const result = command.parseResponse(response);\n expect(isSuccessCommandResult(result)).toBe(false);\n });\n\n it(\"should parse the response\", () => {\n // GIVEN\n const response: ApduResponse = {\n statusCode: Buffer.from([0x90, 0x00]), // Success status code\n data: Buffer.from([]),\n };\n // WHEN\n const command = new SendEIP712FilteringCommand({\n type: Eip712FilterType.Activation,\n });\n // THEN\n expect(command.parseResponse(response)).toStrictEqual(\n CommandResultFactory({ data: undefined }),\n );\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "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
|
|
6
|
-
"names": ["CommandResultFactory", "isSuccessCommandResult", "Eip712FilterType", "SendEIP712FilteringCommand", "ACTIVATE_APDU", "MESSAGE_INFO_APDU", "RAW_APDU", "TOKEN_APDU", "AMOUNT_APDU", "DATE_TIME_APDU", "DISCARDED_PATH_APDU", "args", "apdu", "response", "result", "command"]
|
|
4
|
+
"sourcesContent": ["import {\n type ApduResponse,\n CommandResultFactory,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport {\n Eip712FilterType,\n SendEIP712FilteringCommand,\n type SendEIP712FilteringCommandArgs,\n} from \"./SendEIP712FilteringCommand\";\n\nconst ACTIVATE_APDU = Uint8Array.from([0xe0, 0x1e, 0x00, 0x00, 0x00]);\nconst MESSAGE_INFO_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0x0f, 0x54, 0x0b, 0x31, 0x69, 0x6e, 0x63, 0x68, 0x20, 0x4f,\n 0x72, 0x64, 0x65, 0x72, 0x06, 0x46, 0x30, 0x44, 0x02, 0x20, 0x29, 0x5e, 0x0a,\n 0xeb, 0x17, 0xca, 0x09, 0x29, 0xb2, 0xa9, 0x4c, 0x32, 0x4d, 0x67, 0xd0, 0xb5,\n 0x52, 0x8a, 0xba, 0x26, 0x81, 0x77, 0xf3, 0xac, 0x29, 0x7b, 0x56, 0x31, 0x41,\n 0xe0, 0x00, 0x27, 0x02, 0x20, 0x3a, 0xc3, 0x60, 0xd9, 0xfd, 0x0c, 0x9c, 0x0c,\n 0x12, 0x27, 0x9d, 0x1e, 0x73, 0xbe, 0xa5, 0xd5, 0x49, 0xa1, 0xe8, 0x14, 0x1f,\n 0x45, 0x4d, 0x88, 0xfb, 0xe1, 0xe8, 0xef, 0x97, 0x0e, 0x68, 0x02,\n]);\nconst RAW_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0xff, 0x4d, 0x04, 0x46, 0x72, 0x6f, 0x6d, 0x47, 0x30, 0x45,\n 0x02, 0x21, 0x00, 0xb8, 0x20, 0xe4, 0xdf, 0xb1, 0xa0, 0xcd, 0xe6, 0xdc, 0x97,\n 0xd9, 0xa3, 0x4e, 0xeb, 0xb1, 0xa4, 0xee, 0xf0, 0xb2, 0x26, 0x26, 0x2e, 0x67,\n 0x88, 0x11, 0x8a, 0xb3, 0xc7, 0xfb, 0x79, 0xfe, 0x35, 0x02, 0x20, 0x2d, 0x42,\n 0x6a, 0x38, 0x8b, 0x4c, 0x3a, 0x80, 0x96, 0xb3, 0xf8, 0x44, 0x12, 0xa7, 0x02,\n 0xea, 0x53, 0x77, 0x70, 0xe6, 0x1e, 0xe0, 0x72, 0x7e, 0xc1, 0xb7, 0x10, 0xc1,\n 0xda, 0x52, 0x0c, 0x44,\n]);\nconst TOKEN_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0xfd, 0x49, 0x01, 0x47, 0x30, 0x45, 0x02, 0x21, 0x00, 0xff,\n 0x72, 0x78, 0x47, 0x44, 0x54, 0x31, 0xe5, 0x71, 0xcd, 0x2a, 0x0d, 0x9d, 0xb4,\n 0x2a, 0x7e, 0xb6, 0x2e, 0x37, 0x87, 0x7b, 0x9b, 0xf2, 0x0e, 0x6a, 0x96, 0x58,\n 0x42, 0x55, 0x34, 0x7e, 0x19, 0x02, 0x20, 0x0a, 0x6e, 0x95, 0xb7, 0xf8, 0xe6,\n 0x3b, 0x2f, 0xab, 0x0b, 0xef, 0x88, 0xc7, 0x47, 0xde, 0x6a, 0x38, 0x7d, 0x06,\n 0x35, 0x1b, 0xe5, 0xbd, 0xc3, 0x4b, 0x2c, 0x1f, 0x9a, 0xea, 0x6f, 0xdd, 0x28,\n]);\nconst AMOUNT_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0xfe, 0x59, 0x0f, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,\n 0x20, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x01, 0x47, 0x30, 0x45, 0x02,\n 0x21, 0x00, 0xa5, 0x9d, 0xc4, 0x79, 0xa8, 0x38, 0xa8, 0x13, 0x90, 0x9c, 0x14,\n 0x0a, 0x15, 0xe6, 0xb6, 0x5b, 0xc5, 0x8c, 0x56, 0x33, 0x28, 0x4b, 0xf9, 0x73,\n 0xc4, 0x36, 0xde, 0x5a, 0x59, 0x26, 0x34, 0xe2, 0x02, 0x20, 0x1e, 0x03, 0x8f,\n 0xc7, 0x99, 0x5d, 0x93, 0x9f, 0xcc, 0xd5, 0x46, 0xe4, 0xc8, 0x5e, 0x79, 0x3c,\n 0x0a, 0xd4, 0x51, 0x21, 0x6e, 0x36, 0xa4, 0xed, 0xfc, 0x7b, 0xce, 0x5b, 0xe2,\n 0x78, 0x08, 0xcb,\n]);\nconst TRUSTED_NAME_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0xfb, 0x56, 0x07, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x72,\n 0x01, 0x02, 0x03, 0x01, 0x00, 0x02, 0x47, 0x30, 0x45, 0x02, 0x21, 0x00, 0xe8,\n 0x47, 0x16, 0x6e, 0x60, 0xf8, 0x51, 0xe3, 0xc8, 0xd1, 0xf4, 0x41, 0x39, 0x81,\n 0x18, 0x98, 0xcc, 0xd0, 0xd3, 0xa0, 0x3a, 0xed, 0x6c, 0x77, 0xf8, 0xc3, 0x99,\n 0x38, 0x13, 0xf4, 0x79, 0xd2, 0x02, 0x20, 0x31, 0xfe, 0x6b, 0x6a, 0x57, 0x4b,\n 0x56, 0xc5, 0x10, 0x40, 0x03, 0xcf, 0x07, 0x90, 0x0d, 0x11, 0xff, 0xaf, 0x30,\n 0x3d, 0xc0, 0x16, 0xda, 0x4c, 0x1c, 0x3d, 0x18, 0x46, 0x63, 0xda, 0x8f, 0x6a,\n]);\nconst DATE_TIME_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0xfc, 0x58, 0x0f, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61,\n 0x6c, 0x20, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x47, 0x30, 0x45, 0x02, 0x21,\n 0x00, 0xe8, 0x47, 0x16, 0x6e, 0x60, 0xf8, 0x51, 0xe3, 0xc8, 0xd1, 0xf4, 0x41,\n 0x39, 0x81, 0x18, 0x98, 0xcc, 0xd0, 0xd3, 0xa0, 0x3a, 0xed, 0x6c, 0x77, 0xf8,\n 0xc3, 0x99, 0x38, 0x13, 0xf4, 0x79, 0xd2, 0x02, 0x20, 0x31, 0xfe, 0x6b, 0x6a,\n 0x57, 0x4b, 0x56, 0xc5, 0x10, 0x40, 0x03, 0xcf, 0x07, 0x90, 0x0d, 0x11, 0xff,\n 0xaf, 0x30, 0x3d, 0xc0, 0x16, 0xda, 0x4c, 0x1c, 0x3d, 0x18, 0x46, 0x63, 0xda,\n 0x8f, 0x6a,\n]);\nconst DISCARDED_PATH_APDU = Uint8Array.from([\n 0xe0, 0x1e, 0x00, 0x01, 0x11, 0x10, 0x74, 0x6f, 0x2e, 0x5b, 0x5d, 0x2e, 0x77,\n 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x2e, 0x5b, 0x5d,\n]);\n\ndescribe(\"SendEIP712FilteringCommand\", () => {\n describe(\"getApdu\", () => {\n it(\"Activate APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Activation,\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(ACTIVATE_APDU);\n });\n\n it(\"Discarded path APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.DiscardedPath,\n path: \"to.[].wallets.[]\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(DISCARDED_PATH_APDU);\n });\n\n it(\"Message info APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.MessageInfo,\n displayName: \"1inch Order\",\n filtersCount: 6,\n signature:\n \"30440220295e0aeb17ca0929b2a94c324d67d0b5528aba268177f3ac297b563141e0002702203ac360d9fd0c9c0c12279d1e73bea5d549a1e8141f454d88fbe1e8ef970e6802\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(MESSAGE_INFO_APDU);\n });\n\n it(\"Raw APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Raw,\n discarded: false,\n displayName: \"From\",\n signature:\n \"3045022100b820e4dfb1a0cde6dc97d9a34eebb1a4eef0b226262e6788118ab3c7fb79fe3502202d426a388b4c3a8096b3f84412a702ea537770e61ee0727ec1b710c1da520c44\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(RAW_APDU);\n });\n\n it(\"Token APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 1,\n signature:\n \"3045022100ff727847445431e571cd2a0d9db42a7eb62e37877b9bf20e6a96584255347e1902200a6e95b7f8e63b2fab0bef88c747de6a387d06351be5bdc34b2c1f9aea6fdd28\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(TOKEN_APDU);\n });\n\n it(\"Amount APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Receive minimum\",\n tokenIndex: 1,\n signature:\n \"3045022100a59dc479a838a813909c140a15e6b65bc58c5633284bf973c436de5a592634e202201e038fc7995d939fccd546e4c85e793c0ad451216e36a4edfc7bce5be27808cb\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(AMOUNT_APDU);\n });\n\n it(\"Date-time APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Datetime,\n discarded: false,\n displayName: \"Approval expire\",\n signature:\n \"3045022100e847166e60f851e3c8d1f44139811898ccd0d3a03aed6c77f8c3993813f479d2022031fe6b6a574b56c5104003cf07900d11ffaf303dc016da4c1c3d184663da8f6a\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(DATE_TIME_APDU);\n });\n\n it(\"Trusted name APDU\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.TrustedName,\n discarded: false,\n displayName: \"Spender\",\n typesAndSourcesPayload: \"010203010002\",\n signature:\n \"3045022100e847166e60f851e3c8d1f44139811898ccd0d3a03aed6c77f8c3993813f479d2022031fe6b6a574b56c5104003cf07900d11ffaf303dc016da4c1c3d184663da8f6a\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(TRUSTED_NAME_APDU);\n });\n\n it(\"Discarded filter\", () => {\n // GIVEN\n const args: SendEIP712FilteringCommandArgs = {\n type: Eip712FilterType.Raw,\n discarded: true,\n displayName: \"From\",\n signature:\n \"3045022100b820e4dfb1a0cde6dc97d9a34eebb1a4eef0b226262e6788118ab3c7fb79fe3502202d426a388b4c3a8096b3f84412a702ea537770e61ee0727ec1b710c1da520c44\",\n };\n // WHEN\n const command = new SendEIP712FilteringCommand(args);\n const apdu = command.getApdu();\n // THEN\n expect(apdu.getRawApdu()).toStrictEqual(\n Uint8Array.from([...RAW_APDU.slice(0, 2), 0x01, ...RAW_APDU.slice(3)]),\n );\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return an error if the response status code is invalid\", () => {\n // GIVEN\n const response: ApduResponse = {\n statusCode: Buffer.from([0x6a, 0x80]), // Invalid status code\n data: Buffer.from([]),\n };\n // WHEN\n const command = new SendEIP712FilteringCommand({\n type: Eip712FilterType.Activation,\n });\n // THEN\n const result = command.parseResponse(response);\n expect(isSuccessCommandResult(result)).toBe(false);\n });\n\n it(\"should parse the response\", () => {\n // GIVEN\n const response: ApduResponse = {\n statusCode: Buffer.from([0x90, 0x00]), // Success status code\n data: Buffer.from([]),\n };\n // WHEN\n const command = new SendEIP712FilteringCommand({\n type: Eip712FilterType.Activation,\n });\n // THEN\n expect(command.parseResponse(response)).toStrictEqual(\n CommandResultFactory({ data: undefined }),\n );\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["CommandResultFactory", "isSuccessCommandResult", "Eip712FilterType", "SendEIP712FilteringCommand", "ACTIVATE_APDU", "MESSAGE_INFO_APDU", "RAW_APDU", "TOKEN_APDU", "AMOUNT_APDU", "TRUSTED_NAME_APDU", "DATE_TIME_APDU", "DISCARDED_PATH_APDU", "args", "apdu", "response", "result", "command"]
|
|
7
7
|
}
|
package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{isSuccessCommandResult as
|
|
1
|
+
import{DeviceModelId as S,isSuccessCommandResult as s,OpenAppDeviceAction as m,UnknownDAError as T,UserInteractionRequired as i,XStateDeviceAction as h}from"@ledgerhq/device-management-kit";import{Left as y,Right as E}from"purify-ts";import{and as x,assign as t,fromPromise as o,setup as I}from"xstate";import{SignTransactionDAStep as r}from"../../../../api/app-binder/SignTransactionDeviceActionTypes";import{GetAppConfiguration as k}from"../../../app-binder/command/GetAppConfigurationCommand";import{Web3CheckOptInCommand as b}from"../../../app-binder/command/Web3CheckOptInCommand";import{ETHEREUM_PLUGINS as A}from"../../../app-binder/constant/plugins";import{BuildTransactionContextTask as v}from"../../../app-binder/task/BuildTransactionContextTask";import{ProvideTransactionContextTask as _}from"../../../app-binder/task/ProvideTransactionContextTask";import{ProvideTransactionGenericContextTask as P}from"../../../app-binder/task/ProvideTransactionGenericContextTask";import{SendSignTransactionTask as f}from"../../../app-binder/task/SendSignTransactionTask";import{ApplicationChecker as D}from"../../../shared/utils/ApplicationChecker";class H extends h{makeStateMachine(a){const{getAppConfig:c,web3CheckOptIn:p,buildContext:u,provideContext:l,provideGenericContext:C,signTransaction:d}=this.extractDependencies(a);return I({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new m({input:{appName:"Ethereum"}}).makeStateMachine(a),getAppConfig:o(c),web3CheckOptIn:o(p),buildContext:o(u),provideContext:o(l),provideGenericContext:o(C),signTransaction:o(d)},guards:{noInternalError:({context:e})=>e._internalState.error===null,isGenericContext:({context:e})=>e._internalState.clearSignContexts!==null&&typeof e._internalState.clearSignContexts.transactionInfo=="string",isWeb3ChecksSupported:()=>new D(a.getDeviceSessionState()).withMinVersionExclusive("1.15.0").excludeDeviceModel(S.NANO_S).check(),shouldOptIn:({context:e})=>!e._internalState.web3ChecksEnabled&&!e._internalState.web3ChecksOptIn},actions:{assignErrorFromEvent:t({_internalState:e=>({...e.context._internalState,error:e.event.error})})}}).createMachine({id:"SignTransactionDeviceAction",initial:"OpenAppDeviceAction",context:({input:e})=>({input:e,intermediateValue:{requiredUserInteraction:i.None,step:r.OPEN_APP},_internalState:{error:null,clearSignContexts:null,serializedTransaction:null,chainId:null,web3ChecksOptIn:!1,web3ChecksEnabled:!1,web3Check:null,transactionType:null,isLegacy:!0,signature:null}}),states:{OpenAppDeviceAction:{exit:t({intermediateValue:{requiredUserInteraction:i.None,step:r.OPEN_APP}}),invoke:{id:"openAppStateMachine",input:{appName:"Ethereum",compatibleAppNames:A},src:"openAppStateMachine",onSnapshot:{actions:t({intermediateValue:e=>({...e.event.snapshot.context.intermediateValue,step:r.OPEN_APP})})},onDone:{actions:t({_internalState:e=>e.event.output.caseOf({Right:()=>e.context._internalState,Left:n=>({...e.context._internalState,error:n})})}),target:"CheckOpenAppDeviceActionResult"}}},CheckOpenAppDeviceActionResult:{always:[{target:"GetAppConfig",guard:x(["noInternalError","isWeb3ChecksSupported"])},{target:"BuildContext",guard:"noInternalError"},"Error"]},GetAppConfig:{entry:t({intermediateValue:{requiredUserInteraction:i.None,step:r.GET_APP_CONFIG}}),invoke:{id:"getAppConfig",src:"getAppConfig",onDone:{target:"GetAppConfigResultCheck",actions:[t({_internalState:({event:e,context:n})=>s(e.output)?{...n._internalState,web3ChecksOptIn:e.output.data.web3ChecksOptIn,web3ChecksEnabled:e.output.data.web3ChecksEnabled}:n._internalState})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetAppConfigResultCheck:{always:[{target:"Web3ChecksOptIn",guard:"shouldOptIn"},{target:"BuildContext"}]},Web3ChecksOptIn:{entry:t({intermediateValue:{requiredUserInteraction:i.Web3ChecksOptIn,step:r.WEB3_CHECKS_OPT_IN}}),exit:t({intermediateValue:{requiredUserInteraction:i.None,step:r.WEB3_CHECKS_OPT_IN}}),invoke:{id:"web3CheckOptIn",src:"web3CheckOptIn",onDone:{target:"BuildContext",actions:[t({_internalState:({event:e,context:n})=>s(e.output)?{...n._internalState,web3ChecksEnabled:e.output.data.enabled}:n._internalState})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},BuildContext:{entry:t({intermediateValue:{requiredUserInteraction:i.None,step:r.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,web3ChecksEnabled:e._internalState.web3ChecksEnabled,derivationPath:e.input.derivationPath}),onDone:{target:"BuildContextResultCheck",actions:[t({_internalState:({event:e,context:n})=>({...n._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:t({intermediateValue:{requiredUserInteraction:i.None,step:r.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:t({intermediateValue:{requiredUserInteraction:i.None,step:r.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:t({_internalState:({event:e,context:n})=>{const{isLegacy:O,...g}=n._internalState;return e.output.caseOf({Just:()=>({...g,isLegacy:!1}),Nothing:()=>({...g,isLegacy:!1})})}}),target:"SignTransaction"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},SignTransaction:{entry:t({intermediateValue:{requiredUserInteraction:i.SignTransaction,step:r.SIGN_TRANSACTION}}),exit:t({intermediateValue:{requiredUserInteraction:i.None,step:r.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:[t({_internalState:({event:e,context:n})=>s(e.output)?{...n._internalState,signature:e.output.data}:{...n._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?E(e._internalState.signature):y(e._internalState.error||new T("No error in final state"))})}extractDependencies(a){return{getAppConfig:async()=>a.sendCommand(new k),web3CheckOptIn:async()=>a.sendCommand(new b),buildContext:async e=>new v(a,e.input).run(),provideContext:async e=>new _(a,{clearSignContexts:e.input.clearSignContexts,web3Check:e.input.web3Check}).run(),provideGenericContext:async e=>new P(a,{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 f(a,e.input).run()}}}export{H as SignTransactionDeviceAction};
|
|
2
2
|
//# sourceMappingURL=SignTransactionDeviceAction.js.map
|
package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type ClearSignContextSuccess,\n type ClearSignContextType,\n type ContextModule,\n} from \"@ledgerhq/context-module\";\nimport {\n type CommandErrorResult,\n type CommandResult,\n type DeviceActionStateMachine,\n type InternalApi,\n isSuccessCommandResult,\n OpenAppDeviceAction,\n type StateMachineTypes,\n UnknownDAError,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, type Maybe, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport {\n type SignTransactionDAError,\n type SignTransactionDAInput,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAInternalState,\n type SignTransactionDAOutput,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type Signature } from \"@api/model/Signature\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { type TransactionType } from \"@api/model/TransactionType\";\nimport {\n GetChallengeCommand,\n type GetChallengeCommandResponse,\n} from \"@internal/app-binder/command/GetChallengeCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport { ETHEREUM_PLUGINS } from \"@internal/app-binder/constant/plugins\";\nimport {\n BuildTransactionContextTask,\n type BuildTransactionContextTaskArgs,\n type BuildTransactionTaskResult,\n} from \"@internal/app-binder/task/BuildTransactionContextTask\";\nimport {\n GetWeb3CheckTask,\n type GetWeb3CheckTaskArgs,\n type GetWeb3CheckTaskResult,\n} from \"@internal/app-binder/task/GetWeb3CheckTask\";\nimport { ProvideTransactionContextTask } from \"@internal/app-binder/task/ProvideTransactionContextTask\";\nimport {\n type GenericContext,\n ProvideTransactionGenericContextTask,\n type ProvideTransactionGenericContextTaskErrorCodes,\n} from \"@internal/app-binder/task/ProvideTransactionGenericContextTask\";\nimport { SendSignTransactionTask } from \"@internal/app-binder/task/SendSignTransactionTask\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\nimport { type TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\n\nexport type MachineDependencies = {\n readonly getChallenge: () => Promise<\n CommandResult<GetChallengeCommandResponse, EthErrorCodes>\n >;\n readonly buildContext: (arg0: {\n input: {\n contextModule: ContextModule;\n mapper: TransactionMapperService;\n transaction: Uint8Array;\n options: TransactionOptions;\n challenge: string | null;\n };\n }) => Promise<BuildTransactionTaskResult>;\n readonly getWeb3Check: (arg0: {\n input: {\n contextModule: ContextModule;\n mapper: TransactionMapperService;\n transaction: Uint8Array;\n options: TransactionOptions;\n derivationPath: string;\n };\n }) => Promise<GetWeb3CheckTaskResult>;\n readonly provideContext: (arg0: {\n input: {\n clearSignContexts: ClearSignContextSuccess[];\n web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n };\n }) => Promise<Maybe<CommandErrorResult<EthErrorCodes>>>;\n readonly provideGenericContext: (arg0: {\n input: {\n contextModule: ContextModule;\n transactionParser: TransactionParserService;\n chainId: number;\n derivationPath: string;\n serializedTransaction: Uint8Array;\n context: GenericContext;\n web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n };\n }) => Promise<\n Maybe<CommandErrorResult<ProvideTransactionGenericContextTaskErrorCodes>>\n >;\n readonly signTransaction: (arg0: {\n input: {\n derivationPath: string;\n serializedTransaction: Uint8Array;\n chainId: number;\n transactionType: TransactionType;\n isLegacy: boolean;\n };\n }) => Promise<CommandResult<Signature, EthErrorCodes>>;\n};\n\nexport class SignTransactionDeviceAction extends XStateDeviceAction<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n > {\n type types = StateMachineTypes<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n >;\n\n const {\n getChallenge,\n getWeb3Check,\n buildContext,\n provideContext,\n provideGenericContext,\n signTransaction,\n } = this.extractDependencies(internalApi);\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n openAppStateMachine: new OpenAppDeviceAction({\n input: { appName: \"Ethereum\" },\n }).makeStateMachine(internalApi),\n getChallenge: fromPromise(getChallenge),\n getWeb3Check: fromPromise(getWeb3Check),\n buildContext: fromPromise(buildContext),\n provideContext: fromPromise(provideContext),\n provideGenericContext: fromPromise(provideGenericContext),\n signTransaction: fromPromise(signTransaction),\n },\n guards: {\n noInternalError: ({ context }) => context._internalState.error === null,\n isGenericContext: ({ context }) =>\n context._internalState.clearSignContexts !== null &&\n typeof (context._internalState.clearSignContexts as GenericContext)\n .transactionInfo === \"string\",\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: it should never happen, the error is not typed anymore here\n }),\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QGUCWUB2AVATgQw1jwGMAXVAewwBEwA3VYsAQTMowDoB5ABzA2Y8etBk1bkqAYghUwHVBjoUA1nIp8BQ5KTykwAWRIALBWADaABgC6iUDwqxUEjLZAAPRABYAzAHYOAJwAHACMAb4ArBYWAEw+FkHeADQgAJ6IwRYcAGwRQUG52TF5EcUAvmUpaJi4BERsVCKMLA2cAMJGYMTKvPyCwvTN4uwASnAArgA2pJKWNkgg9o7Orh4IAcEcpRYhvonZAd4byWmIITtZESEhBTHeEVH33hVV6Nj4hCTOTWKtHB1dHoafo-FrOMawKYzMwheZ2BxOdirDKbba7faHY4pdIIUIcG6+bwWbKeXwxIKeTzkl4garvOpfdig4ZUDgAcTApA6eEmk34MGksnkihUchgXKMPL5GBgc1cS0RVGRCBCngC2Q4aqCewCEWyQUyJxx5x2HBiByCsV8AQsaoinhpdNqn1azL+HIlUv5YEkYBwOAoOA4PEmugAZoGALYccXc3neuULBUrBZrVXqzXBHV6g2Wo1nDaasIWXxkwkxW0xXyOt7O+rfQa-Zzszlx6UwCFQgHdWbWeUIlOgNMBTxBDiJby3MkmiK+bFnCzeEL4mLm4m5aLeB2VWm1j71pmNsHsFue+MysCd6bd5SzWH95ZI1MF0fj7yTorT6Kz+cILfLhJEgiDZslVXwLACGsan3RlGiPFlOAAIXGVBJggNoqD0NwZhkDA5AUJRVA4AAjFC0IwjAsNIRN4UfJVnwQOJPCyIJyWLHYqV1bJf3OGJl3yYlfFA0dsiOZ4dydGDXXgv5kNQ9DMLAbDfX9QNg1DUgIxwaNSPkiiqJoxYByfIdECYli2JtDiYi439PGAjhvArVdrT4skDm3V5oIZaTRGPVk5PIxTsKvCVAV7OEjLolwGPJfJMwrUkjkiNUeIsK4OEJLdLWiUI9ig+kXQbPyEI4QKFMopTSFCm870i5MTPcMz8jHNVEsJcJ7QCX88pySJSlKPw7jCAq61gmgZObAAFAMGAgMB9KqwU8OFQi5B4WbUHmxbsMMhr6NMv9RzHFK8kiLdBu405cQSTV32Ym5slAw4YlGqTiqGP4ZooOaFuCmY-QDIMQ3DKNg027b-r24yDqao74tO7UIguu4rpxbJokCA0rmJCDjk83dvKKw8Sq+iGwA5PCcEYHacKFAjRXBn6top-g-RpqG+yTGGYsO7KTvtM7kfs1HfyszLfDCbIySpdzxK8wqDzg0npvJyn2eIWmVKB9TQe0pnfvV6nNc5+qeeVfnMsFpGUe8NGF3snI8liViQlEolIIkvcfI+psT0kn32GW-CRSIxwiaVjBoei5VmL2M1SSCB4KyTykIh6wtDgKcJJbyAIRq9iPxrdZsA+JqRAbUkHNLB8PFfG6PFV5uG47HOI9mThJ7Xs39fCpJ3tRe4JzTewPlc+0vvfLjAas6HtG8HFuuo4YldiXOJQgpdProCGzMvz-VOOYuPR+nkv-anyPZ-CmEzZjhj7LVFfQMJEIN5uHvrvyTxHPJEtgIKKUXIFQdwYAoPNeACwy6R3PrDfazc1gAFp7YIGQSvaIGDMEYNnKfGBk0Ty9E0AMFWjV4GxxiGLPUCc9SlGCKBSsuDi74NZDeQhIJmEzwmNMB8TdlT6n8HxEIeoP5kichQ66JoYgrzytjDBk5qyF3rr5CeJ4PRtm9DwxeaYbhjkHtla0dtRJzh3knfEs53wbHztaHwjDlF+1ZGoyU54OxcLCt0TRjU0zgW8IECCrF872Q2PaNKq4ci7yeuSPINxqSKLGnY-ySEyIVSoh42Gaw+JHHxIcaIGxOIlnzCqb8mV9QZK3McJOtjfYJLKkk2m193Hc3vodc0r47i7xssBEIS40o+EcouZGRQ3ZOSepUkmKjWTfV+rTVJCDEBLicpqAoeYUqLm6tdVyv9JHaiOPnUZ497GcEmSzI2HNKrYRmRbCCUjSzmjfsjCshw0pu3HK5aWfdbSeBGbE96YyDkcGgeNC5DE-DMRXl080fdKShDWTiCkAR8QHDCLsG05JyjfLHhNEhrIAWtHqcoIFh0qSmNyPkEcHc9Riz4o5UCDx3ZbiXBEPZmLxmcGQOMYgTBYCQNorwh+Ql4VUgSD4J6uRPAhEpRqWhYRjoXCCEy2BnAACiqkcAEpbvyzUKdhVPXtOK66oExwY3VEI1Ffhd4gLKEAA */\n id: \"SignTransactionDeviceAction\",\n initial: \"OpenAppDeviceAction\",\n context: ({ input }) => {\n return {\n input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: {\n error: null,\n clearSignContexts: null,\n serializedTransaction: null,\n chainId: null,\n web3Check: null,\n transactionType: null,\n challenge: null,\n isLegacy: true,\n signature: null,\n },\n };\n },\n states: {\n OpenAppDeviceAction: {\n exit: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n }),\n invoke: {\n id: \"openAppStateMachine\",\n input: {\n appName: \"Ethereum\",\n compatibleAppNames: ETHEREUM_PLUGINS,\n },\n src: \"openAppStateMachine\",\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) =>\n _.event.snapshot.context.intermediateValue,\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<SignTransactionDAInternalState>({\n Right: () => _.context._internalState,\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n });\n },\n }),\n target: \"CheckOpenAppDeviceActionResult\",\n },\n },\n },\n CheckOpenAppDeviceActionResult: {\n always: [\n {\n target: \"GetChallenge\",\n guard: \"noInternalError\",\n },\n \"Error\",\n ],\n },\n GetChallenge: {\n invoke: {\n id: \"getChallenge\",\n src: \"getChallenge\",\n onDone: {\n target: \"GetChallengeResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n challenge: event.output.data.challenge,\n };\n }\n\n // if the command is not supported, we can skip the error\n if (\n typeof event.output.error.originalError === \"object\" &&\n event.output.error.originalError !== null &&\n \"errorCode\" in event.output.error.originalError &&\n event.output.error.originalError.errorCode === \"6d00\"\n ) {\n return context._internalState;\n }\n\n return {\n ...context._internalState,\n error: event.output.error,\n };\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GetChallengeResultCheck: {\n always: [\n {\n target: \"GetWeb3Check\",\n guard: \"noInternalError\",\n },\n \"Error\",\n ],\n },\n GetWeb3Check: {\n invoke: {\n id: \"getWeb3Check\",\n src: \"getWeb3Check\",\n input: ({ context }) => ({\n contextModule: context.input.contextModule,\n mapper: context.input.mapper,\n transaction: context.input.transaction,\n options: context.input.options,\n derivationPath: context.input.derivationPath,\n }),\n onDone: {\n target: \"BuildContext\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n return {\n ...context._internalState,\n web3Check: event.output.web3Check,\n };\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n BuildContext: {\n invoke: {\n id: \"buildContext\",\n src: \"buildContext\",\n input: ({ context }) => ({\n contextModule: context.input.contextModule,\n mapper: context.input.mapper,\n transaction: context.input.transaction,\n options: context.input.options,\n challenge: context._internalState.challenge,\n }),\n onDone: {\n target: \"BuildContextResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => ({\n ...context._internalState,\n clearSignContexts: event.output.clearSignContexts!,\n serializedTransaction: event.output.serializedTransaction,\n chainId: event.output.chainId,\n transactionType: event.output.transactionType,\n }),\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n BuildContextResultCheck: {\n always: [\n {\n target: \"ProvideGenericContext\",\n guard: \"isGenericContext\",\n },\n {\n target: \"ProvideContext\",\n },\n ],\n },\n ProvideContext: {\n invoke: {\n id: \"provideContext\",\n src: \"provideContext\",\n input: ({ context }) => ({\n clearSignContexts: context._internalState\n .clearSignContexts as ClearSignContextSuccess[],\n web3Check: context._internalState.web3Check,\n }),\n onDone: {\n target: \"SignTransaction\",\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n ProvideGenericContext: {\n invoke: {\n id: \"provideGenericContext\",\n src: \"provideGenericContext\",\n input: ({ context }) => ({\n contextModule: context.input.contextModule,\n transactionParser: context.input.parser,\n chainId: context._internalState.chainId!,\n derivationPath: context.input.derivationPath,\n serializedTransaction:\n context._internalState.serializedTransaction!,\n context: context._internalState\n .clearSignContexts as GenericContext,\n web3Check: context._internalState.web3Check,\n }),\n onDone: {\n actions: assign({\n _internalState: ({ event, context }) => {\n const { isLegacy: _, ...rest } = context._internalState;\n return event.output.caseOf({\n Just: () => ({\n ...rest,\n isLegacy: false,\n }),\n Nothing: () => ({\n ...rest,\n isLegacy: false,\n }),\n });\n },\n }),\n // NOTE: don't check errors to fallback to blind signing\n target: \"SignTransaction\",\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n SignTransaction: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n },\n }),\n exit: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n }),\n invoke: {\n id: \"signTransaction\",\n src: \"signTransaction\",\n input: ({ context }) => ({\n derivationPath: context.input.derivationPath,\n serializedTransaction:\n context._internalState.serializedTransaction!,\n chainId: context._internalState.chainId!,\n transactionType: context._internalState.transactionType!,\n isLegacy: context._internalState.isLegacy,\n }),\n onDone: {\n target: \"SignTransactionResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n signature: event.output.data,\n };\n }\n return {\n ...context._internalState,\n error: event.output.error,\n };\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n SignTransactionResultCheck: {\n always: [\n { guard: \"noInternalError\", target: \"Success\" },\n { target: \"Error\" },\n ],\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: ({ context }) =>\n context._internalState.signature\n ? Right(context._internalState.signature)\n : Left(\n context._internalState.error ||\n new UnknownDAError(\"No error in final state\"),\n ),\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const getChallenge = async () =>\n internalApi.sendCommand(new GetChallengeCommand());\n\n const getWeb3Check = async (arg0: { input: GetWeb3CheckTaskArgs }) =>\n new GetWeb3CheckTask(internalApi, arg0.input).run();\n\n const buildContext = async (arg0: {\n input: BuildTransactionContextTaskArgs;\n }) => new BuildTransactionContextTask(internalApi, arg0.input).run();\n\n const provideContext = async (arg0: {\n input: {\n clearSignContexts: ClearSignContextSuccess[];\n web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n };\n }) =>\n new ProvideTransactionContextTask(internalApi, {\n clearSignContexts: arg0.input.clearSignContexts,\n web3Check: arg0.input.web3Check,\n }).run();\n\n const provideGenericContext = async (arg0: {\n input: {\n contextModule: ContextModule;\n transactionParser: TransactionParserService;\n chainId: number;\n derivationPath: string;\n serializedTransaction: Uint8Array;\n context: GenericContext;\n web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n };\n }) =>\n new ProvideTransactionGenericContextTask(internalApi, {\n contextModule: arg0.input.contextModule,\n transactionParser: arg0.input.transactionParser,\n chainId: arg0.input.chainId,\n derivationPath: arg0.input.derivationPath,\n serializedTransaction: arg0.input.serializedTransaction,\n context: arg0.input.context,\n web3Check: arg0.input.web3Check,\n }).run();\n\n const signTransaction = async (arg0: {\n input: {\n derivationPath: string;\n serializedTransaction: Uint8Array;\n chainId: number;\n transactionType: TransactionType;\n isLegacy: boolean;\n };\n }) => new SendSignTransactionTask(internalApi, arg0.input).run();\n\n return {\n getChallenge,\n buildContext,\n getWeb3Check,\n provideContext,\n provideGenericContext,\n signTransaction,\n };\n }\n}\n"],
|
|
5
|
-
"mappings": "AAKA,
|
|
6
|
-
"names": ["isSuccessCommandResult", "OpenAppDeviceAction", "UnknownDAError", "UserInteractionRequired", "XStateDeviceAction", "Left", "Right", "assign", "fromPromise", "setup", "
|
|
4
|
+
"sourcesContent": ["import {\n type ClearSignContextSuccess,\n type ClearSignContextType,\n type ContextModule,\n} from \"@ledgerhq/context-module\";\nimport {\n type CommandErrorResult,\n type CommandResult,\n type DeviceActionStateMachine,\n DeviceModelId,\n type InternalApi,\n isSuccessCommandResult,\n OpenAppDeviceAction,\n type StateMachineTypes,\n UnknownDAError,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, type Maybe, Right } from \"purify-ts\";\nimport { and, assign, fromPromise, setup } from \"xstate\";\n\nimport { type GetConfigCommandResponse } from \"@api/app-binder/GetConfigCommandTypes\";\nimport {\n type SignTransactionDAError,\n type SignTransactionDAInput,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAInternalState,\n type SignTransactionDAOutput,\n SignTransactionDAStep,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type Signature } from \"@api/model/Signature\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { type TransactionType } from \"@api/model/TransactionType\";\nimport { GetAppConfiguration } from \"@internal/app-binder/command/GetAppConfigurationCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport {\n Web3CheckOptInCommand,\n type Web3CheckOptInCommandResponse,\n} from \"@internal/app-binder/command/Web3CheckOptInCommand\";\nimport { ETHEREUM_PLUGINS } from \"@internal/app-binder/constant/plugins\";\nimport {\n BuildTransactionContextTask,\n type BuildTransactionContextTaskArgs,\n type BuildTransactionTaskResult,\n} from \"@internal/app-binder/task/BuildTransactionContextTask\";\nimport { ProvideTransactionContextTask } from \"@internal/app-binder/task/ProvideTransactionContextTask\";\nimport {\n type GenericContext,\n ProvideTransactionGenericContextTask,\n type ProvideTransactionGenericContextTaskErrorCodes,\n} from \"@internal/app-binder/task/ProvideTransactionGenericContextTask\";\nimport { SendSignTransactionTask } from \"@internal/app-binder/task/SendSignTransactionTask\";\nimport { ApplicationChecker } from \"@internal/shared/utils/ApplicationChecker\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\nimport { type TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\n\nexport type MachineDependencies = {\n readonly getAppConfig: () => Promise<\n CommandResult<GetConfigCommandResponse, EthErrorCodes>\n >;\n readonly web3CheckOptIn: () => Promise<\n CommandResult<Web3CheckOptInCommandResponse, EthErrorCodes>\n >;\n readonly buildContext: (arg0: {\n input: {\n contextModule: ContextModule;\n mapper: TransactionMapperService;\n transaction: Uint8Array;\n options: TransactionOptions;\n web3ChecksEnabled: boolean;\n derivationPath: string;\n };\n }) => Promise<BuildTransactionTaskResult>;\n readonly provideContext: (arg0: {\n input: {\n clearSignContexts: ClearSignContextSuccess[];\n web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n };\n }) => Promise<Maybe<CommandErrorResult<EthErrorCodes>>>;\n readonly provideGenericContext: (arg0: {\n input: {\n contextModule: ContextModule;\n transactionParser: TransactionParserService;\n chainId: number;\n derivationPath: string;\n serializedTransaction: Uint8Array;\n context: GenericContext;\n web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n };\n }) => Promise<\n Maybe<CommandErrorResult<ProvideTransactionGenericContextTaskErrorCodes>>\n >;\n readonly signTransaction: (arg0: {\n input: {\n derivationPath: string;\n serializedTransaction: Uint8Array;\n chainId: number;\n transactionType: TransactionType;\n isLegacy: boolean;\n };\n }) => Promise<CommandResult<Signature, EthErrorCodes>>;\n};\n\nexport class SignTransactionDeviceAction extends XStateDeviceAction<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n > {\n type types = StateMachineTypes<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n >;\n\n const {\n getAppConfig,\n web3CheckOptIn,\n buildContext,\n provideContext,\n provideGenericContext,\n signTransaction,\n } = this.extractDependencies(internalApi);\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n openAppStateMachine: new OpenAppDeviceAction({\n input: { appName: \"Ethereum\" },\n }).makeStateMachine(internalApi),\n getAppConfig: fromPromise(getAppConfig),\n web3CheckOptIn: fromPromise(web3CheckOptIn),\n buildContext: fromPromise(buildContext),\n provideContext: fromPromise(provideContext),\n provideGenericContext: fromPromise(provideGenericContext),\n signTransaction: fromPromise(signTransaction),\n },\n guards: {\n noInternalError: ({ context }) => context._internalState.error === null,\n isGenericContext: ({ context }) =>\n context._internalState.clearSignContexts !== null &&\n typeof (context._internalState.clearSignContexts as GenericContext)\n .transactionInfo === \"string\",\n isWeb3ChecksSupported: () =>\n new ApplicationChecker(internalApi.getDeviceSessionState())\n .withMinVersionExclusive(\"1.15.0\")\n .excludeDeviceModel(DeviceModelId.NANO_S)\n .check(),\n shouldOptIn: ({ context }) =>\n !context._internalState.web3ChecksEnabled &&\n !context._internalState.web3ChecksOptIn,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: it should never happen, the error is not typed anymore here\n }),\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QGUCWUB2AVATgQw1jwGMAXVAewwBEwA3VYsAQTMowDoB5ABzA2Y8etBk1bkqAYghUwHVBjoUA1nIp8BQ5KTykwAWRIALBWADaABgC6iUDwqxUEjLZAAPRABYAzAHYOAJwAHACMAb4ArBYWAEw+FkHeADQgAJ6IwRYcAGwRQUG52TF5EcUAvmUpaJi4BERsVCKMLA2cAMJGYMTKvPyCwvTN4uwASnAArgA2pJKWNkgg9o7Orh4IAcEcpRYhvonZAd4byWmIITtZESEhBTHeEVH33hVV6Nj4hCTOTWKtHB1dHoafo-FrOMawKYzMwheZ2BxOdirDKbba7faHY4pdIIUIcG6+bwWbKeXwxIKeTzkl4garvOpfdig4ZUDgAcTApA6eEmk34MGksnkihUchgXKMPL5GBgc1cS0RVGRCBCngC2Q4aqCewCEWyQUyJxx5x2HBiByCsV8AQsaoinhpdNqn1azL+HIlUv5YEkYBwOAoOA4PEmugAZoGALYccXc3neuULBUrBZrVXqzXBHV6g2Wo1nDaasIWXxkwkxW0xXyOt7O+rfQa-Zzszlx6UwCFQgHdWbWeUIlOgNMBTxBDiJby3MkmiK+bFnCzeEL4mLm4m5aLeB2VWm1j71pmNsHsFue+MysCd6bd5SzWH95ZI1MF0fj7yTorT6Kz+cILfLhJEgiDZslVXwLACGsan3RlGiPFlOAAIXGVBJggNoqD0NwZhkDA5AUJRVA4AAjFC0IwjAsNIRN4UfJVnwQOJPCyIJyWLHYqV1bJf3OGJl3yYlfFA0dsiOZ4dydGDXXgv5kNQ9DMLAbDfX9QNg1DUgIxwaNSPkiiqJoxYByfIdECYli2JtDiYi439PGAjhvArVdrT4skDm3V5oIZaTRGPVk5PIxTsKvCVAV7OEjLolwGPJfJMwrUkjkiNUeIsK4OEJLdLWiUI9ig+kXQbPyEI4QKFMopTSFCm870i5MTPcMz8jHNVEsJcJ7QCX88pySJSlKPw7jCAq61gmgZObAAFAMGAgMB9KqwU8OFQi5B4WbUHmxbsMMhr6NMv9RzHFK8kiLdBu405cQSTV32Ym5slAw4YlGqTiqGP4ZooOaFuCmY-QDIMQ3DKNg027b-r24yDqao74tO7UIguu4rpxbJokCA0rmJCDjk83dvKKw8Sq+iGwA5PCcEYHacKFAjRXBn6top-g-RpqG+yTGGYsO7KTvtM7kfs1HfyszLfDCbIySpdzxK8wqDzg0npvJyn2eIWmVKB9TQe0pnfvV6nNc5+qeeVfnMsFpGUe8NGF3snI8liViQlEolIIkvcfI+psT0kn32GW-CRSIxwiaVjBoei5VmL2M1SSCB4KyTykIh6wtDgKcJJbyAIRq9iPxrdZsA+JqRAbUkHNLB8PFfG6PFV5uG47HOI9mThJ7Xs39fCpJ3tRe4JzTewPlc+0vvfLjAas6HtG8HFuuo4YldiXOJQgpdProCGzMvz-VOOYuPR+nkv-anyPZ-CmEzZjhj7LVFfQMJEIN5uHvrvyTxHPJEtgIKKUXIFQdwYAoPNeACwy6R3PrDfazc1gAFp7YIGQSvaIGDMEYNnKfGBk0Ty9E0AMFWjV4GxxiGLPUCc9SlGCKBSsuDi74NZDeQhIJmEzwmNMB8TdlT6n8HxEIeoP5kichQ66JoYgrzytjDBk5qyF3rr5CeJ4PRtm9DwxeaYbhjkHtla0dtRJzh3knfEs53wbHztaHwjDlF+1ZGoyU54OxcLCt0TRjU0zgW8IECCrF872Q2PaNKq4ci7yeuSPINxqSKLGnY-ySEyIVSoh42Gaw+JHHxIcaIGxOIlnzCqb8mV9QZK3McJOtjfYJLKkk2m193Hc3vodc0r47i7xssBEIS40o+EcouZGRQ3ZOSepUkmKjWTfV+rTVJCDEBLicpqAoeYUqLm6tdVyv9JHaiOPnUZ497GcEmSzI2HNKrYRmRbCCUjSzmjfsjCshw0pu3HK5aWfdbSeBGbE96YyDkcGgeNC5DE-DMRXl080fdKShDWTiCkAR8QHDCLsG05JyjfLHhNEhrIAWtHqcoIFh0qSmNyPkEcHc9Riz4o5UCDx3ZbiXBEPZmLxmcGQOMYgTBYCQNorwh+Ql4VUgSD4J6uRPAhEpRqWhYRjoXCCEy2BnAACiqkcAEpbvyzUKdhVPXtOK66oExwY3VEI1Ffhd4gLKEAA */\n id: \"SignTransactionDeviceAction\",\n initial: \"OpenAppDeviceAction\",\n context: ({ input }) => {\n return {\n input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.OPEN_APP,\n },\n _internalState: {\n error: null,\n clearSignContexts: null,\n serializedTransaction: null,\n chainId: null,\n web3ChecksOptIn: false,\n web3ChecksEnabled: false,\n web3Check: null,\n transactionType: null,\n isLegacy: true,\n signature: null,\n },\n };\n },\n states: {\n OpenAppDeviceAction: {\n exit: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.OPEN_APP,\n },\n }),\n invoke: {\n id: \"openAppStateMachine\",\n input: {\n appName: \"Ethereum\",\n compatibleAppNames: ETHEREUM_PLUGINS,\n },\n src: \"openAppStateMachine\",\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.event.snapshot.context.intermediateValue,\n step: SignTransactionDAStep.OPEN_APP,\n }),\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<SignTransactionDAInternalState>({\n Right: () => _.context._internalState,\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n });\n },\n }),\n target: \"CheckOpenAppDeviceActionResult\",\n },\n },\n },\n CheckOpenAppDeviceActionResult: {\n always: [\n {\n target: \"GetAppConfig\",\n guard: and([\"noInternalError\", \"isWeb3ChecksSupported\"]),\n },\n {\n target: \"BuildContext\",\n guard: \"noInternalError\",\n },\n \"Error\",\n ],\n },\n GetAppConfig: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.GET_APP_CONFIG,\n },\n }),\n invoke: {\n id: \"getAppConfig\",\n src: \"getAppConfig\",\n onDone: {\n target: \"GetAppConfigResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n web3ChecksOptIn: event.output.data.web3ChecksOptIn,\n web3ChecksEnabled: event.output.data.web3ChecksEnabled,\n };\n } else {\n return context._internalState;\n }\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GetAppConfigResultCheck: {\n always: [\n {\n target: \"Web3ChecksOptIn\",\n guard: \"shouldOptIn\",\n },\n {\n target: \"BuildContext\",\n },\n ],\n },\n Web3ChecksOptIn: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.Web3ChecksOptIn,\n step: SignTransactionDAStep.WEB3_CHECKS_OPT_IN,\n },\n }),\n exit: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.WEB3_CHECKS_OPT_IN,\n },\n }),\n invoke: {\n id: \"web3CheckOptIn\",\n src: \"web3CheckOptIn\",\n onDone: {\n target: \"BuildContext\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n web3ChecksEnabled: event.output.data.enabled,\n };\n } else {\n return context._internalState;\n }\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n BuildContext: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.BUILD_CONTEXT,\n },\n }),\n invoke: {\n id: \"buildContext\",\n src: \"buildContext\",\n input: ({ context }) => ({\n contextModule: context.input.contextModule,\n mapper: context.input.mapper,\n transaction: context.input.transaction,\n options: context.input.options,\n web3ChecksEnabled: context._internalState.web3ChecksEnabled,\n derivationPath: context.input.derivationPath,\n }),\n onDone: {\n target: \"BuildContextResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => ({\n ...context._internalState,\n clearSignContexts: event.output.clearSignContexts!,\n web3Check: event.output.web3Check,\n serializedTransaction: event.output.serializedTransaction,\n chainId: event.output.chainId,\n transactionType: event.output.transactionType,\n }),\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n BuildContextResultCheck: {\n always: [\n {\n target: \"ProvideGenericContext\",\n guard: \"isGenericContext\",\n },\n {\n target: \"ProvideContext\",\n },\n ],\n },\n ProvideContext: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.PROVIDE_CONTEXT,\n },\n }),\n invoke: {\n id: \"provideContext\",\n src: \"provideContext\",\n input: ({ context }) => ({\n clearSignContexts: context._internalState\n .clearSignContexts as ClearSignContextSuccess[],\n web3Check: context._internalState.web3Check,\n }),\n onDone: {\n target: \"SignTransaction\",\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n ProvideGenericContext: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.PROVIDE_GENERIC_CONTEXT,\n },\n }),\n invoke: {\n id: \"provideGenericContext\",\n src: \"provideGenericContext\",\n input: ({ context }) => ({\n contextModule: context.input.contextModule,\n transactionParser: context.input.parser,\n chainId: context._internalState.chainId!,\n derivationPath: context.input.derivationPath,\n serializedTransaction:\n context._internalState.serializedTransaction!,\n context: context._internalState\n .clearSignContexts as GenericContext,\n web3Check: context._internalState.web3Check,\n }),\n onDone: {\n actions: assign({\n _internalState: ({ event, context }) => {\n const { isLegacy: _, ...rest } = context._internalState;\n return event.output.caseOf({\n Just: () => ({\n ...rest,\n isLegacy: false,\n }),\n Nothing: () => ({\n ...rest,\n isLegacy: false,\n }),\n });\n },\n }),\n // NOTE: don't check errors to fallback to blind signing\n target: \"SignTransaction\",\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n SignTransaction: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n step: SignTransactionDAStep.SIGN_TRANSACTION,\n },\n }),\n exit: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.SIGN_TRANSACTION,\n },\n }),\n invoke: {\n id: \"signTransaction\",\n src: \"signTransaction\",\n input: ({ context }) => ({\n derivationPath: context.input.derivationPath,\n serializedTransaction:\n context._internalState.serializedTransaction!,\n chainId: context._internalState.chainId!,\n transactionType: context._internalState.transactionType!,\n isLegacy: context._internalState.isLegacy,\n }),\n onDone: {\n target: \"SignTransactionResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n signature: event.output.data,\n };\n }\n return {\n ...context._internalState,\n error: event.output.error,\n };\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n SignTransactionResultCheck: {\n always: [\n { guard: \"noInternalError\", target: \"Success\" },\n { target: \"Error\" },\n ],\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: ({ context }) =>\n context._internalState.signature\n ? Right(context._internalState.signature)\n : Left(\n context._internalState.error ||\n new UnknownDAError(\"No error in final state\"),\n ),\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const getAppConfig = async () =>\n internalApi.sendCommand(new GetAppConfiguration());\n const web3CheckOptIn = async () =>\n internalApi.sendCommand(new Web3CheckOptInCommand());\n const buildContext = async (arg0: {\n input: BuildTransactionContextTaskArgs;\n }) => new BuildTransactionContextTask(internalApi, arg0.input).run();\n\n const provideContext = async (arg0: {\n input: {\n clearSignContexts: ClearSignContextSuccess[];\n web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n };\n }) =>\n new ProvideTransactionContextTask(internalApi, {\n clearSignContexts: arg0.input.clearSignContexts,\n web3Check: arg0.input.web3Check,\n }).run();\n\n const provideGenericContext = async (arg0: {\n input: {\n contextModule: ContextModule;\n transactionParser: TransactionParserService;\n chainId: number;\n derivationPath: string;\n serializedTransaction: Uint8Array;\n context: GenericContext;\n web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n };\n }) =>\n new ProvideTransactionGenericContextTask(internalApi, {\n contextModule: arg0.input.contextModule,\n transactionParser: arg0.input.transactionParser,\n chainId: arg0.input.chainId,\n derivationPath: arg0.input.derivationPath,\n serializedTransaction: arg0.input.serializedTransaction,\n context: arg0.input.context,\n web3Check: arg0.input.web3Check,\n }).run();\n\n const signTransaction = async (arg0: {\n input: {\n derivationPath: string;\n serializedTransaction: Uint8Array;\n chainId: number;\n transactionType: TransactionType;\n isLegacy: boolean;\n };\n }) => new SendSignTransactionTask(internalApi, arg0.input).run();\n\n return {\n getAppConfig,\n web3CheckOptIn,\n buildContext,\n provideContext,\n provideGenericContext,\n signTransaction,\n };\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["DeviceModelId", "isSuccessCommandResult", "OpenAppDeviceAction", "UnknownDAError", "UserInteractionRequired", "XStateDeviceAction", "Left", "Right", "and", "assign", "fromPromise", "setup", "SignTransactionDAStep", "GetAppConfiguration", "Web3CheckOptInCommand", "ETHEREUM_PLUGINS", "BuildTransactionContextTask", "ProvideTransactionContextTask", "ProvideTransactionGenericContextTask", "SendSignTransactionTask", "ApplicationChecker", "SignTransactionDeviceAction", "internalApi", "getAppConfig", "web3CheckOptIn", "buildContext", "provideContext", "provideGenericContext", "signTransaction", "context", "_", "input", "error", "event", "rest", "arg0"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ClearSignContextType as U}from"@ledgerhq/context-module";import{CommandResultFactory as d,DeviceActionStatus as e,hexaStringToBuffer as O,UnknownDAError as A,UnknownDeviceExchangeError as q,UserInteractionRequired as n}from"@ledgerhq/device-management-kit";import{InvalidStatusWordError as g}from"@ledgerhq/device-management-kit";import{Transaction as S}from"ethers";import{Just as w,Nothing as I}from"purify-ts";import{TransactionType as h}from"../../../../api/model/TransactionType";import{makeDeviceActionInternalApiMock as f}from"../../../app-binder/device-action/__test-utils__/makeInternalApi";import{setupOpenAppDAMock as C}from"../../../app-binder/device-action/__test-utils__/setupOpenAppDAMock";import{testDeviceActionStates as V}from"../../../app-binder/device-action/__test-utils__/testDeviceActionStates";import{SignTransactionDeviceAction as b}from"./SignTransactionDeviceAction";vi.mock("@ledgerhq/device-management-kit",async o=>({...await o(),OpenAppDeviceAction:vi.fn(()=>({makeStateMachine:vi.fn()}))}));describe("SignTransactionDeviceAction",()=>{const o={getContext:vi.fn(),getContexts:vi.fn(),getTypedDataFilters:vi.fn(),getWeb3Checks:vi.fn()},c={mapTransactionToSubset:vi.fn()},m={extractValue:vi.fn()},s=vi.fn(),p=vi.fn(),P=vi.fn(),k=vi.fn(),x=vi.fn(),y=vi.fn();function v(){return{getChallenge:s,buildContext:p,provideContext:P,provideGenericContext:k,signTransaction:x,getWeb3Check:y}}const l={domain:"domain-name.eth"},u=O(S.from({chainId:1n,nonce:0,data:"0x"}).unsignedSerialized);beforeEach(()=>{vi.clearAllMocks()}),describe("Happy path",()=>{it("should call external dependencies with the correct parameters",()=>new Promise((a,r)=>{C();const t=new b({input:{derivationPath:"44'/60'/0'/0/0",transaction:u,options:l,contextModule:o,mapper:c,parser:m}});s.mockResolvedValueOnce(d({data:{challenge:"challenge"}})),y.mockResolvedValueOnce({web3Check:null}),p.mockResolvedValueOnce({clearSignContexts:[{type:"token",payload:"payload-1"}],serializedTransaction:new Uint8Array([1,2,3]),chainId:1,transactionType:h.LEGACY}),P.mockResolvedValueOnce(I),x.mockResolvedValueOnce(d({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(t,"extractDependencies").mockReturnValue(v());const i=[{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.ConfirmOpenApp},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.SignTransaction},status:e.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.Completed}];V(t,i,f(),{onDone:()=>{expect(s).toHaveBeenCalled(),expect(p).toHaveBeenCalledWith(expect.objectContaining({input:{challenge:"challenge",contextModule:o,mapper:c,options:l,transaction:u}})),expect(P).toHaveBeenCalledWith(expect.objectContaining({input:{clearSignContexts:[{type:"token",payload:"payload-1"}],web3Check:null}})),expect(x).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!0,chainId:1,transactionType:h.LEGACY}})),a()},onError:r})})),it("should call external dependencies with the correct parameters with the generic parser",()=>new Promise((a,r)=>{C();const t=new b({input:{derivationPath:"44'/60'/0'/0/0",transaction:u,options:l,contextModule:o,mapper:c,parser:m}});s.mockResolvedValueOnce(d({data:{challenge:"challenge"}})),y.mockResolvedValueOnce({web3Check:null}),p.mockResolvedValueOnce({clearSignContexts:{transactionInfo:"payload-1",transactionFields:[{type:"enum",payload:"payload-2"}]},serializedTransaction:new Uint8Array([1,2,3]),chainId:7,transactionType:h.EIP1559}),k.mockResolvedValueOnce(I),x.mockResolvedValueOnce(d({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(t,"extractDependencies").mockReturnValue(v());const i=[{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.ConfirmOpenApp},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.SignTransaction},status:e.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.Completed}];V(t,i,f(),{onError:r,onDone:()=>{expect(s).toHaveBeenCalled(),expect(p).toHaveBeenCalledWith(expect.objectContaining({input:{challenge:"challenge",contextModule:o,mapper:c,options:l,transaction:u}})),expect(k).toHaveBeenCalledWith(expect.objectContaining({input:{chainId:7,context:{transactionInfo:"payload-1",transactionFields:[{type:"enum",payload:"payload-2"}]},contextModule:o,derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),transactionParser:m,web3Check:null}})),expect(x).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!1,chainId:7,transactionType:h.EIP1559}})),a()}})})),it("should fallback to blind signing if provideContext return an error",()=>new Promise((a,r)=>{C();const t=new b({input:{derivationPath:"44'/60'/0'/0/0",transaction:u,options:l,contextModule:o,mapper:c,parser:m}});s.mockResolvedValueOnce(d({data:{challenge:"challenge"}})),y.mockResolvedValueOnce({web3Check:null}),p.mockResolvedValueOnce({clearSignContexts:[{type:"token",payload:"payload-1"}],serializedTransaction:new Uint8Array([1,2,3]),chainId:1,transactionType:h.LEGACY}),P.mockResolvedValueOnce(w(d({error:new g("provideContext error")}))),x.mockResolvedValueOnce(d({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(t,"extractDependencies").mockReturnValue(v());const i=[{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.ConfirmOpenApp},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.SignTransaction},status:e.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.Completed}];V(t,i,f(),{onError:r,onDone:()=>{expect(s).toHaveBeenCalled(),expect(p).toHaveBeenCalledWith(expect.objectContaining({input:{challenge:"challenge",contextModule:o,mapper:c,options:l,transaction:u}})),expect(P).toHaveBeenCalledWith(expect.objectContaining({input:{clearSignContexts:[{type:"token",payload:"payload-1"}],web3Check:null}})),expect(x).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!0,chainId:1,transactionType:h.LEGACY}})),a()}})})),it("should fallback to blind signing if provideGenericContext return an error",()=>new Promise((a,r)=>{C();const t=new b({input:{derivationPath:"44'/60'/0'/0/0",transaction:u,options:l,contextModule:o,mapper:c,parser:m}});s.mockResolvedValueOnce(d({data:{challenge:"challenge"}})),y.mockResolvedValueOnce({web3Check:null}),p.mockResolvedValueOnce({clearSignContexts:{transactionInfo:"payload-1",transactionFields:[{type:"enum",payload:"payload-2"}]},serializedTransaction:new Uint8Array([1,2,3]),chainId:7,transactionType:h.EIP1559}),k.mockResolvedValueOnce(w(d({error:new g("provideGenericContext error")}))),x.mockResolvedValueOnce(d({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(t,"extractDependencies").mockReturnValue(v());const i=[{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.ConfirmOpenApp},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.SignTransaction},status:e.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.Completed}];V(t,i,f(),{onError:r,onDone:()=>{expect(s).toHaveBeenCalled(),expect(p).toHaveBeenCalledWith(expect.objectContaining({input:{challenge:"challenge",contextModule:o,mapper:c,options:l,transaction:u}})),expect(k).toHaveBeenCalledWith(expect.objectContaining({input:{chainId:7,context:{transactionInfo:"payload-1",transactionFields:[{type:"enum",payload:"payload-2"}]},contextModule:o,derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),transactionParser:m,web3Check:null}})),expect(x).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!1,chainId:7,transactionType:h.EIP1559}})),a()}})})),it("should continue if getChallenge return an error 6d00 not supported",()=>new Promise((a,r)=>{C();const t=new b({input:{derivationPath:"44'/60'/0'/0/0",transaction:u,options:l,contextModule:o,mapper:c,parser:m}});s.mockResolvedValueOnce(d({error:new q({message:"UnknownError",errorCode:"6d00"})})),y.mockResolvedValueOnce({web3Check:null}),p.mockResolvedValueOnce({clearSignContexts:[],serializedTransaction:new Uint8Array([1,2,3]),chainId:7,transactionType:h.EIP1559}),k.mockResolvedValueOnce(I),x.mockResolvedValueOnce(d({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(t,"extractDependencies").mockReturnValue(v());const i=[{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.ConfirmOpenApp},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.SignTransaction},status:e.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.Completed}];V(t,i,f(),{onError:r,onDone:()=>{expect(s).toHaveBeenCalled(),expect(p).toHaveBeenCalledWith(expect.objectContaining({input:{challenge:null,contextModule:o,mapper:c,options:l,transaction:u}})),expect(x).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!0,chainId:7,transactionType:h.EIP1559}})),a()}})})),it("should provide web3checks context if getWeb3Check return a value",()=>new Promise((a,r)=>{C();const t=new b({input:{derivationPath:"44'/60'/0'/0/0",transaction:u,options:l,contextModule:o,mapper:c,parser:m}});s.mockResolvedValueOnce(d({data:{challenge:"challenge"}})),y.mockResolvedValueOnce({web3Check:{type:U.ENUM,id:1,payload:"0x01020304",value:1,certificate:void 0}}),p.mockResolvedValueOnce({clearSignContexts:[{type:"token",payload:"payload-1"}],serializedTransaction:new Uint8Array([1,2,3]),chainId:1,transactionType:h.LEGACY}),P.mockResolvedValueOnce(I),x.mockResolvedValueOnce(d({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(t,"extractDependencies").mockReturnValue(v());const i=[{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.ConfirmOpenApp},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.SignTransaction},status:e.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.Completed}];V(t,i,f(),{onError:r,onDone:()=>{expect(s).toHaveBeenCalled(),expect(p).toHaveBeenCalledWith(expect.objectContaining({input:{challenge:"challenge",contextModule:o,mapper:c,options:l,transaction:u}})),expect(P).toHaveBeenCalledWith(expect.objectContaining({input:{clearSignContexts:[{type:"token",payload:"payload-1"}],web3Check:{type:U.ENUM,id:1,payload:"0x01020304",value:1,certificate:void 0}}})),expect(x).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!0,chainId:1,transactionType:h.LEGACY}})),a()}})})),it("should ignore web3checks errors",()=>new Promise((a,r)=>{C();const t=new b({input:{derivationPath:"44'/60'/0'/0/0",transaction:u,options:l,contextModule:o,mapper:c,parser:m}});s.mockResolvedValueOnce(d({data:{challenge:"challenge"}})),y.mockResolvedValueOnce({web3Check:null,error:new g("getWeb3Check error")}),p.mockResolvedValueOnce({clearSignContexts:[{type:"token",payload:"payload-1"}],serializedTransaction:new Uint8Array([1,2,3]),chainId:1,transactionType:h.LEGACY}),P.mockResolvedValueOnce(I),x.mockResolvedValueOnce(d({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(t,"extractDependencies").mockReturnValue(v());const i=[{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.ConfirmOpenApp},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.SignTransaction},status:e.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.Completed}];V(t,i,f(),{onError:r,onDone:()=>{expect(s).toHaveBeenCalled(),expect(p).toHaveBeenCalledWith(expect.objectContaining({input:{challenge:"challenge",contextModule:o,mapper:c,options:l,transaction:u}})),expect(P).toHaveBeenCalledWith(expect.objectContaining({input:{clearSignContexts:[{type:"token",payload:"payload-1"}],web3Check:null}})),expect(x).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!0,chainId:1,transactionType:h.LEGACY}})),a()}})}))}),describe("OpenApp errors",()=>{it("should fail if OpenApp throw an error",()=>new Promise((a,r)=>{C(new A("OpenApp error"));const t=new b({input:{derivationPath:"44'/60'/0'/0/0",transaction:u,options:l,contextModule:o,mapper:c,parser:m}});vi.spyOn(t,"extractDependencies").mockReturnValue(v());const i=[{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.ConfirmOpenApp},status:e.Pending},{error:new A("OpenApp error"),status:e.Error}];V(t,i,f(),{onError:r,onDone:()=>{a()}})}))}),describe("GetChallenge errors",()=>{it("should fail if getChallenge throws an error",()=>new Promise((a,r)=>{C();const t=new b({input:{derivationPath:"44'/60'/0'/0/0",transaction:u,options:l,contextModule:o,mapper:c,parser:m}});s.mockRejectedValueOnce(new g("getChallenge error")),vi.spyOn(t,"extractDependencies").mockReturnValue(v());const i=[{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.ConfirmOpenApp},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{error:new g("getChallenge error"),status:e.Error}];V(t,i,f(),{onError:r,onDone:a})})),it("should fail if getChallenge return an error",()=>new Promise((a,r)=>{C();const t=new b({input:{derivationPath:"44'/60'/0'/0/0",transaction:u,options:l,contextModule:o,mapper:c,parser:m}});s.mockResolvedValueOnce(d({error:new g("getChallenge error")})),vi.spyOn(t,"extractDependencies").mockReturnValue(v());const i=[{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.ConfirmOpenApp},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{error:new g("getChallenge error"),status:e.Error}];V(t,i,f(),{onError:r,onDone:a})}))}),describe("GetWeb3Checks errors",()=>{it("should fail if GetWeb3Checks throws an error",()=>new Promise((a,r)=>{C();const t=new b({input:{derivationPath:"44'/60'/0'/0/0",transaction:u,options:l,contextModule:o,mapper:c,parser:m}});s.mockResolvedValueOnce(d({data:{challenge:"challenge"}})),y.mockRejectedValueOnce(new g("getWeb3Checks error")),vi.spyOn(t,"extractDependencies").mockReturnValue(v());const i=[{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.ConfirmOpenApp},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{error:new g("getWeb3Checks error"),status:e.Error}];V(t,i,f(),{onError:r,onDone:()=>{a()}})}))}),describe("BuildContext errors",()=>{it("should fail if buildContext throws an error",()=>new Promise((a,r)=>{C();const t=new b({input:{derivationPath:"44'/60'/0'/0/0",transaction:u,options:l,contextModule:o,mapper:c,parser:m}});s.mockResolvedValueOnce(d({data:{challenge:"challenge"}})),y.mockResolvedValueOnce({web3Check:null}),p.mockRejectedValueOnce(new g("buildContext error")),vi.spyOn(t,"extractDependencies").mockReturnValue(v());const i=[{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.ConfirmOpenApp},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{error:new g("buildContext error"),status:e.Error}];V(t,i,f(),{onError:r,onDone:a})}))}),describe("ProvideContext errors",()=>{it("should fail if provideContext throws an error",()=>new Promise((a,r)=>{C();const t=new b({input:{derivationPath:"44'/60'/0'/0/0",transaction:u,options:l,contextModule:o,mapper:c,parser:m}});s.mockResolvedValueOnce(d({data:{challenge:"challenge"}})),y.mockResolvedValueOnce({web3Check:null}),p.mockResolvedValueOnce({clearSignContexts:[{type:"token",payload:"payload-1"}],serializedTransaction:new Uint8Array([1,2,3])}),P.mockRejectedValueOnce(new g("provideContext error")),vi.spyOn(t,"extractDependencies").mockReturnValue(v());const i=[{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.ConfirmOpenApp},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{error:new g("provideContext error"),status:e.Error}];V(t,i,f(),{onError:r,onDone:a})}))}),describe("SignTransaction errors",()=>{it("should fail if signTransaction returns an error",()=>new Promise((a,r)=>{C();const t=new b({input:{derivationPath:"44'/60'/0'/0/0",transaction:u,options:l,contextModule:o,mapper:c,parser:m}});s.mockResolvedValueOnce(d({data:{challenge:"challenge"}})),y.mockResolvedValueOnce({web3Check:null}),p.mockResolvedValueOnce({clearSignContexts:[{type:"token",payload:"payload-1"}],serializedTransaction:new Uint8Array([1,2,3])}),P.mockResolvedValueOnce(I),x.mockResolvedValueOnce(d({error:new g("signTransaction error")})),vi.spyOn(t,"extractDependencies").mockReturnValue(v());const i=[{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.ConfirmOpenApp},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:n.SignTransaction},status:e.Pending},{error:new g("signTransaction error"),status:e.Error}];V(t,i,f(),{onError:r,onDone:a})}))})});
|
|
1
|
+
import{ClearSignContextType as y}from"@ledgerhq/context-module";import{CommandResultFactory as P,DeviceActionStatus as e,DeviceModelId as w,DeviceSessionStateType as S,DeviceStatus as U,hexaStringToBuffer as D,UnknownDAError as N,UserInteractionRequired as t}from"@ledgerhq/device-management-kit";import{InvalidStatusWordError as u}from"@ledgerhq/device-management-kit";import{Transaction as _}from"ethers";import{Just as V,Nothing as k}from"purify-ts";import{SignTransactionDAStep as n}from"../../../../api/app-binder/SignTransactionDeviceActionTypes";import{TransactionType as A}from"../../../../api/model/TransactionType";import{makeDeviceActionInternalApiMock as R}from"../../../app-binder/device-action/__test-utils__/makeInternalApi";import{setupOpenAppDAMock as v}from"../../../app-binder/device-action/__test-utils__/setupOpenAppDAMock";import{testDeviceActionStates as b}from"../../../app-binder/device-action/__test-utils__/testDeviceActionStates";import{SignTransactionDeviceAction as g}from"./SignTransactionDeviceAction";vi.mock("@ledgerhq/device-management-kit",async r=>({...await r(),OpenAppDeviceAction:vi.fn(()=>({makeStateMachine:vi.fn()}))}));describe("SignTransactionDeviceAction",()=>{const r={getContext:vi.fn(),getContexts:vi.fn(),getTypedDataFilters:vi.fn(),getWeb3Checks:vi.fn()},c={mapTransactionToSubset:vi.fn()},x={extractValue:vi.fn()},O=vi.fn(),T=vi.fn(),d=vi.fn(),I=vi.fn(),E=vi.fn(),f=vi.fn();function C(){return{getAppConfig:O,web3CheckOptIn:T,buildContext:d,provideContext:I,provideGenericContext:E,signTransaction:f}}const m=R(),p={domain:"domain-name.eth"},l=D(_.from({chainId:1n,nonce:0,data:"0x"}).unsignedSerialized);function h(i){m.getDeviceSessionState.mockReturnValueOnce({sessionStateType:S.ReadyWithoutSecureChannel,deviceStatus:U.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:i},deviceModelId:w.FLEX,isSecureConnectionAllowed:!1})}beforeEach(()=>{vi.clearAllMocks()}),describe("Happy path",()=>{it("should call external dependencies with the correct parameters",()=>new Promise((i,o)=>{v(),h("1.15.0");const a=new g({input:{derivationPath:"44'/60'/0'/0/0",transaction:l,options:p,contextModule:r,mapper:c,parser:x}});d.mockResolvedValueOnce({clearSignContexts:[{type:"token",payload:"payload-1"}],serializedTransaction:new Uint8Array([1,2,3]),chainId:1,transactionType:A.LEGACY,web3Check:null}),I.mockResolvedValueOnce(k),f.mockResolvedValueOnce(P({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(a,"extractDependencies").mockReturnValue(C());const s=[{intermediateValue:{requiredUserInteraction:t.None,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None,step:n.BUILD_CONTEXT},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None,step:n.PROVIDE_CONTEXT},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.SignTransaction,step:n.SIGN_TRANSACTION},status:e.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.Completed}];b(a,s,m,{onDone:()=>{expect(d).toHaveBeenCalledWith(expect.objectContaining({input:{contextModule:r,mapper:c,options:p,transaction:l,web3ChecksEnabled:!1,derivationPath:"44'/60'/0'/0/0"}})),expect(I).toHaveBeenCalledWith(expect.objectContaining({input:{clearSignContexts:[{type:"token",payload:"payload-1"}],web3Check:null}})),expect(f).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!0,chainId:1,transactionType:A.LEGACY}})),i()},onError:o})})),it("should call external dependencies with the correct parameters with the generic parser",()=>new Promise((i,o)=>{v(),h("1.15.0");const a=new g({input:{derivationPath:"44'/60'/0'/0/0",transaction:l,options:p,contextModule:r,mapper:c,parser:x}});d.mockResolvedValueOnce({clearSignContexts:{transactionInfo:"payload-1",transactionFields:[{type:"enum",payload:"payload-2"}]},serializedTransaction:new Uint8Array([1,2,3]),chainId:7,transactionType:A.EIP1559,web3Check:null}),E.mockResolvedValueOnce(k),f.mockResolvedValueOnce(P({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(a,"extractDependencies").mockReturnValue(C());const s=[{intermediateValue:{requiredUserInteraction:t.None,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None,step:n.BUILD_CONTEXT},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None,step:n.PROVIDE_GENERIC_CONTEXT},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.SignTransaction,step:n.SIGN_TRANSACTION},status:e.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.Completed}];b(a,s,m,{onError:o,onDone:()=>{expect(d).toHaveBeenCalledWith(expect.objectContaining({input:{contextModule:r,mapper:c,options:p,transaction:l,web3ChecksEnabled:!1,derivationPath:"44'/60'/0'/0/0"}})),expect(E).toHaveBeenCalledWith(expect.objectContaining({input:{chainId:7,context:{transactionInfo:"payload-1",transactionFields:[{type:"enum",payload:"payload-2"}]},contextModule:r,derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),transactionParser:x,web3Check:null}})),expect(f).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!1,chainId:7,transactionType:A.EIP1559}})),i()}})})),it("should fallback to blind signing if provideContext return an error",()=>new Promise((i,o)=>{v(),h("1.15.0");const a=new g({input:{derivationPath:"44'/60'/0'/0/0",transaction:l,options:p,contextModule:r,mapper:c,parser:x}});d.mockResolvedValueOnce({clearSignContexts:[{type:"token",payload:"payload-1"}],serializedTransaction:new Uint8Array([1,2,3]),chainId:1,transactionType:A.LEGACY,web3Check:null}),I.mockResolvedValueOnce(V(P({error:new u("provideContext error")}))),f.mockResolvedValueOnce(P({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(a,"extractDependencies").mockReturnValue(C());const s=[{intermediateValue:{requiredUserInteraction:t.None,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None,step:n.BUILD_CONTEXT},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None,step:n.PROVIDE_CONTEXT},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.SignTransaction,step:n.SIGN_TRANSACTION},status:e.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.Completed}];b(a,s,m,{onError:o,onDone:()=>{expect(d).toHaveBeenCalledWith(expect.objectContaining({input:{contextModule:r,mapper:c,options:p,transaction:l,web3ChecksEnabled:!1,derivationPath:"44'/60'/0'/0/0"}})),expect(I).toHaveBeenCalledWith(expect.objectContaining({input:{clearSignContexts:[{type:"token",payload:"payload-1"}],web3Check:null}})),expect(f).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!0,chainId:1,transactionType:A.LEGACY}})),i()}})})),it("should fallback to blind signing if provideGenericContext return an error",()=>new Promise((i,o)=>{v(),h("1.15.0");const a=new g({input:{derivationPath:"44'/60'/0'/0/0",transaction:l,options:p,contextModule:r,mapper:c,parser:x}});d.mockResolvedValueOnce({clearSignContexts:{transactionInfo:"payload-1",transactionFields:[{type:"enum",payload:"payload-2"}]},serializedTransaction:new Uint8Array([1,2,3]),chainId:7,transactionType:A.EIP1559,web3Check:null}),E.mockResolvedValueOnce(V(P({error:new u("provideGenericContext error")}))),f.mockResolvedValueOnce(P({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(a,"extractDependencies").mockReturnValue(C());const s=[{intermediateValue:{requiredUserInteraction:t.None,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None,step:n.BUILD_CONTEXT},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None,step:n.PROVIDE_GENERIC_CONTEXT},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.SignTransaction,step:n.SIGN_TRANSACTION},status:e.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.Completed}];b(a,s,m,{onError:o,onDone:()=>{expect(d).toHaveBeenCalledWith(expect.objectContaining({input:{contextModule:r,mapper:c,options:p,transaction:l,web3ChecksEnabled:!1,derivationPath:"44'/60'/0'/0/0"}})),expect(E).toHaveBeenCalledWith(expect.objectContaining({input:{chainId:7,context:{transactionInfo:"payload-1",transactionFields:[{type:"enum",payload:"payload-2"}]},contextModule:r,derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),transactionParser:x,web3Check:null}})),expect(f).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!1,chainId:7,transactionType:A.EIP1559}})),i()}})}))}),describe("Web3Checks",()=>{it("should call external dependencies with web3Checks enabled and supported",()=>new Promise((i,o)=>{v(),h("1.16.0");const a=new g({input:{derivationPath:"44'/60'/0'/0/0",transaction:l,options:p,contextModule:r,mapper:c,parser:x}});O.mockResolvedValue(P({data:{blindSigningEnabled:!1,web3ChecksEnabled:!0,web3ChecksOptIn:!0,version:"1.16.0"}})),d.mockRejectedValueOnce(new u("buildContext error")),vi.spyOn(a,"extractDependencies").mockReturnValue(C());const s=[{intermediateValue:{requiredUserInteraction:t.None,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None,step:n.GET_APP_CONFIG},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None,step:n.BUILD_CONTEXT},status:e.Pending},{error:new u("buildContext error"),status:e.Error}];b(a,s,m,{onDone:()=>{expect(O).toHaveBeenCalled(),expect(d).toHaveBeenCalledWith(expect.objectContaining({input:{contextModule:r,mapper:c,options:p,transaction:l,web3ChecksEnabled:!0,derivationPath:"44'/60'/0'/0/0"}})),i()},onError:o})})),it("should call external dependencies with web3Checks supported but disabled",()=>new Promise((i,o)=>{v(),h("1.16.0");const a=new g({input:{derivationPath:"44'/60'/0'/0/0",transaction:l,options:p,contextModule:r,mapper:c,parser:x}});O.mockResolvedValue(P({data:{blindSigningEnabled:!1,web3ChecksEnabled:!1,web3ChecksOptIn:!0,version:"1.16.0"}})),d.mockRejectedValueOnce(new u("buildContext error")),vi.spyOn(a,"extractDependencies").mockReturnValue(C());const s=[{intermediateValue:{requiredUserInteraction:t.None,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None,step:n.GET_APP_CONFIG},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None,step:n.BUILD_CONTEXT},status:e.Pending},{error:new u("buildContext error"),status:e.Error}];b(a,s,m,{onDone:()=>{expect(O).toHaveBeenCalled(),expect(d).toHaveBeenCalledWith(expect.objectContaining({input:{contextModule:r,mapper:c,options:p,transaction:l,web3ChecksEnabled:!1,derivationPath:"44'/60'/0'/0/0"}})),i()},onError:o})})),it("should call external dependencies with web3Checks opt-in, then enabled",()=>new Promise((i,o)=>{v(),h("1.16.0");const a=new g({input:{derivationPath:"44'/60'/0'/0/0",transaction:l,options:p,contextModule:r,mapper:c,parser:x}});O.mockResolvedValue(P({data:{blindSigningEnabled:!1,web3ChecksEnabled:!1,web3ChecksOptIn:!1,version:"1.16.0"}})),T.mockResolvedValueOnce(P({data:{enabled:!0}})),d.mockRejectedValueOnce(new u("buildContext error")),vi.spyOn(a,"extractDependencies").mockReturnValue(C());const s=[{intermediateValue:{requiredUserInteraction:t.None,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None,step:n.GET_APP_CONFIG},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.Web3ChecksOptIn,step:n.WEB3_CHECKS_OPT_IN},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None,step:n.BUILD_CONTEXT},status:e.Pending},{error:new u("buildContext error"),status:e.Error}];b(a,s,m,{onDone:()=>{expect(O).toHaveBeenCalled(),expect(T).toHaveBeenCalled(),expect(d).toHaveBeenCalledWith(expect.objectContaining({input:{contextModule:r,mapper:c,options:p,transaction:l,web3ChecksEnabled:!0,derivationPath:"44'/60'/0'/0/0"}})),i()},onError:o})})),it("should call external dependencies with web3Checks opt-in, then disabled",()=>new Promise((i,o)=>{v(),h("1.16.0");const a=new g({input:{derivationPath:"44'/60'/0'/0/0",transaction:l,options:p,contextModule:r,mapper:c,parser:x}});O.mockResolvedValue(P({data:{blindSigningEnabled:!1,web3ChecksEnabled:!1,web3ChecksOptIn:!1,version:"1.16.0"}})),T.mockResolvedValueOnce(P({data:{enabled:!1}})),d.mockRejectedValueOnce(new u("buildContext error")),vi.spyOn(a,"extractDependencies").mockReturnValue(C());const s=[{intermediateValue:{requiredUserInteraction:t.None,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None,step:n.GET_APP_CONFIG},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.Web3ChecksOptIn,step:n.WEB3_CHECKS_OPT_IN},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None,step:n.BUILD_CONTEXT},status:e.Pending},{error:new u("buildContext error"),status:e.Error}];b(a,s,m,{onDone:()=>{expect(O).toHaveBeenCalled(),expect(T).toHaveBeenCalled(),expect(d).toHaveBeenCalledWith(expect.objectContaining({input:{contextModule:r,mapper:c,options:p,transaction:l,web3ChecksEnabled:!1,derivationPath:"44'/60'/0'/0/0"}})),i()},onError:o})})),it("should provide web3Checks context if getWeb3Check return a value",()=>new Promise((i,o)=>{v(),h("1.15.0");const a=new g({input:{derivationPath:"44'/60'/0'/0/0",transaction:l,options:p,contextModule:r,mapper:c,parser:x}});d.mockResolvedValueOnce({clearSignContexts:[{type:"token",payload:"payload-1"}],serializedTransaction:new Uint8Array([1,2,3]),chainId:1,transactionType:A.LEGACY,web3Check:{type:y.ENUM,id:1,payload:"0x01020304",value:1,certificate:void 0}}),I.mockResolvedValueOnce(k),f.mockResolvedValueOnce(P({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(a,"extractDependencies").mockReturnValue(C());const s=[{intermediateValue:{requiredUserInteraction:t.None,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None,step:n.BUILD_CONTEXT},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None,step:n.PROVIDE_CONTEXT},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.SignTransaction,step:n.SIGN_TRANSACTION},status:e.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.Completed}];b(a,s,m,{onError:o,onDone:()=>{expect(d).toHaveBeenCalledWith(expect.objectContaining({input:{contextModule:r,mapper:c,options:p,transaction:l,web3ChecksEnabled:!1,derivationPath:"44'/60'/0'/0/0"}})),expect(I).toHaveBeenCalledWith(expect.objectContaining({input:{clearSignContexts:[{type:"token",payload:"payload-1"}],web3Check:{type:y.ENUM,id:1,payload:"0x01020304",value:1,certificate:void 0}}})),expect(f).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!0,chainId:1,transactionType:A.LEGACY}})),i()}})}))}),describe("OpenApp errors",()=>{it("should fail if OpenApp throw an error",()=>new Promise((i,o)=>{v(new N("OpenApp error"));const a=new g({input:{derivationPath:"44'/60'/0'/0/0",transaction:l,options:p,contextModule:r,mapper:c,parser:x}});vi.spyOn(a,"extractDependencies").mockReturnValue(C());const s=[{intermediateValue:{requiredUserInteraction:t.None,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp,step:n.OPEN_APP},status:e.Pending},{error:new N("OpenApp error"),status:e.Error}];b(a,s,m,{onError:o,onDone:()=>{i()}})}))}),describe("BuildContext errors",()=>{it("should fail if buildContext throws an error",()=>new Promise((i,o)=>{v(),h("1.15.0");const a=new g({input:{derivationPath:"44'/60'/0'/0/0",transaction:l,options:p,contextModule:r,mapper:c,parser:x}});d.mockRejectedValueOnce(new u("buildContext error")),vi.spyOn(a,"extractDependencies").mockReturnValue(C());const s=[{intermediateValue:{requiredUserInteraction:t.None,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None,step:n.BUILD_CONTEXT},status:e.Pending},{error:new u("buildContext error"),status:e.Error}];b(a,s,m,{onError:o,onDone:i})}))}),describe("ProvideContext errors",()=>{it("should fail if provideContext throws an error",()=>new Promise((i,o)=>{v(),h("1.15.0");const a=new g({input:{derivationPath:"44'/60'/0'/0/0",transaction:l,options:p,contextModule:r,mapper:c,parser:x}});d.mockResolvedValueOnce({clearSignContexts:[{type:"token",payload:"payload-1"}],serializedTransaction:new Uint8Array([1,2,3]),web3Check:null}),I.mockRejectedValueOnce(new u("provideContext error")),vi.spyOn(a,"extractDependencies").mockReturnValue(C());const s=[{intermediateValue:{requiredUserInteraction:t.None,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None,step:n.BUILD_CONTEXT},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None,step:n.PROVIDE_CONTEXT},status:e.Pending},{error:new u("provideContext error"),status:e.Error}];b(a,s,m,{onError:o,onDone:i})}))}),describe("SignTransaction errors",()=>{it("should fail if signTransaction returns an error",()=>new Promise((i,o)=>{v(),h("1.15.0");const a=new g({input:{derivationPath:"44'/60'/0'/0/0",transaction:l,options:p,contextModule:r,mapper:c,parser:x}});d.mockResolvedValueOnce({clearSignContexts:[{type:"token",payload:"payload-1"}],serializedTransaction:new Uint8Array([1,2,3]),web3Check:null}),I.mockResolvedValueOnce(k),f.mockResolvedValueOnce(P({error:new u("signTransaction error")})),vi.spyOn(a,"extractDependencies").mockReturnValue(C());const s=[{intermediateValue:{requiredUserInteraction:t.None,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp,step:n.OPEN_APP},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None,step:n.BUILD_CONTEXT},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None,step:n.PROVIDE_CONTEXT},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.SignTransaction,step:n.SIGN_TRANSACTION},status:e.Pending},{error:new u("signTransaction error"),status:e.Error}];b(a,s,m,{onError:o,onDone:i})}))})});
|
|
2
2
|
//# sourceMappingURL=SignTransactionDeviceAction.test.js.map
|