@ledgerhq/device-signer-kit-bitcoin 0.0.0-device-id-20251125171501 → 0.0.0-dmk-lifi-20260106144650
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 +157 -11
- package/lib/cjs/api/SignerBtc.js +1 -1
- package/lib/cjs/api/SignerBtc.js.map +1 -1
- package/lib/cjs/api/app-binder/GetMasterFingerprintDeviceActionTypes.js +2 -0
- package/lib/cjs/api/app-binder/GetMasterFingerprintDeviceActionTypes.js.map +7 -0
- package/lib/cjs/api/app-binder/RegisterWalletDeviceActionTypes.js +2 -0
- package/lib/cjs/api/app-binder/RegisterWalletDeviceActionTypes.js.map +7 -0
- package/lib/cjs/api/index.js +1 -1
- package/lib/cjs/api/index.js.map +2 -2
- package/lib/cjs/api/model/MasterFingerprintOptions.js +2 -0
- package/lib/cjs/api/model/MasterFingerprintOptions.js.map +7 -0
- package/lib/cjs/api/model/RegisterWalletOptions.js +2 -0
- package/lib/cjs/api/model/RegisterWalletOptions.js.map +7 -0
- package/lib/cjs/internal/DefaultSignerBtc.js +1 -1
- package/lib/cjs/internal/DefaultSignerBtc.js.map +2 -2
- package/lib/cjs/internal/DefaultSignerBtc.test.js +1 -1
- package/lib/cjs/internal/DefaultSignerBtc.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/BtcAppBinder.js +1 -1
- package/lib/cjs/internal/app-binder/BtcAppBinder.js.map +3 -3
- package/lib/cjs/internal/app-binder/BtcAppBinder.test.js +1 -1
- package/lib/cjs/internal/app-binder/BtcAppBinder.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/RegisterWalletAddressCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/RegisterWalletAddressCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/RegisterWalletAddressCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/RegisterWalletAddressCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/RegisterWalletTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/RegisterWalletTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/RegisterWalletTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/RegisterWalletTask.test.js.map +7 -0
- package/lib/cjs/internal/use-cases/di/useCasesModule.js +1 -1
- package/lib/cjs/internal/use-cases/di/useCasesModule.js.map +3 -3
- package/lib/cjs/internal/use-cases/di/useCasesModule.test.js +1 -1
- package/lib/cjs/internal/use-cases/di/useCasesModule.test.js.map +2 -2
- package/lib/cjs/internal/use-cases/di/useCasesTypes.js +1 -1
- package/lib/cjs/internal/use-cases/di/useCasesTypes.js.map +2 -2
- package/lib/cjs/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.js +2 -0
- package/lib/cjs/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.js.map +7 -0
- package/lib/cjs/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.test.js +2 -0
- package/lib/cjs/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.test.js.map +7 -0
- package/lib/cjs/internal/use-cases/register-wallet/RegisterWalletUseCase.js +2 -0
- package/lib/cjs/internal/use-cases/register-wallet/RegisterWalletUseCase.js.map +7 -0
- package/lib/cjs/internal/use-cases/register-wallet/RegisterWalletUseCase.test.js +2 -0
- package/lib/cjs/internal/use-cases/register-wallet/RegisterWalletUseCase.test.js.map +7 -0
- package/lib/cjs/internal/utils/BtcCommandUtils.js +1 -1
- package/lib/cjs/internal/utils/BtcCommandUtils.js.map +3 -3
- package/lib/cjs/internal/utils/BtcCommandUtils.test.js +1 -1
- package/lib/cjs/internal/utils/BtcCommandUtils.test.js.map +3 -3
- package/lib/cjs/internal/wallet/service/DefaultWalletBuilder.js +1 -1
- package/lib/cjs/internal/wallet/service/DefaultWalletBuilder.js.map +3 -3
- package/lib/cjs/internal/wallet/service/DefaultWalletBuilder.test.js +1 -1
- package/lib/cjs/internal/wallet/service/DefaultWalletBuilder.test.js.map +3 -3
- package/lib/cjs/internal/wallet/service/WalletBuilder.js +1 -1
- package/lib/cjs/internal/wallet/service/WalletBuilder.js.map +1 -1
- package/lib/cjs/package.json +43 -39
- package/lib/esm/api/app-binder/GetMasterFingerprintDeviceActionTypes.js +1 -0
- package/lib/esm/api/app-binder/GetMasterFingerprintDeviceActionTypes.js.map +7 -0
- package/lib/esm/api/app-binder/RegisterWalletDeviceActionTypes.js +1 -0
- package/lib/esm/api/app-binder/RegisterWalletDeviceActionTypes.js.map +7 -0
- package/lib/esm/api/index.js +1 -1
- package/lib/esm/api/index.js.map +3 -3
- package/lib/esm/api/model/MasterFingerprintOptions.js +1 -0
- package/lib/esm/api/model/MasterFingerprintOptions.js.map +7 -0
- package/lib/esm/api/model/RegisterWalletOptions.js +1 -0
- package/lib/esm/api/model/RegisterWalletOptions.js.map +7 -0
- package/lib/esm/internal/DefaultSignerBtc.js +1 -1
- package/lib/esm/internal/DefaultSignerBtc.js.map +2 -2
- package/lib/esm/internal/DefaultSignerBtc.test.js +1 -1
- package/lib/esm/internal/DefaultSignerBtc.test.js.map +3 -3
- package/lib/esm/internal/app-binder/BtcAppBinder.js +1 -1
- package/lib/esm/internal/app-binder/BtcAppBinder.js.map +3 -3
- package/lib/esm/internal/app-binder/BtcAppBinder.test.js +1 -1
- package/lib/esm/internal/app-binder/BtcAppBinder.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/RegisterWalletAddressCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/RegisterWalletAddressCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/RegisterWalletAddressCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/RegisterWalletAddressCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/RegisterWalletTask.js +2 -0
- package/lib/esm/internal/app-binder/task/RegisterWalletTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/RegisterWalletTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/RegisterWalletTask.test.js.map +7 -0
- package/lib/esm/internal/use-cases/di/useCasesModule.js +1 -1
- package/lib/esm/internal/use-cases/di/useCasesModule.js.map +3 -3
- package/lib/esm/internal/use-cases/di/useCasesModule.test.js +1 -1
- package/lib/esm/internal/use-cases/di/useCasesModule.test.js.map +2 -2
- package/lib/esm/internal/use-cases/di/useCasesTypes.js +1 -1
- package/lib/esm/internal/use-cases/di/useCasesTypes.js.map +2 -2
- package/lib/esm/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.js +2 -0
- package/lib/esm/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.js.map +7 -0
- package/lib/esm/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.test.js +2 -0
- package/lib/esm/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.test.js.map +7 -0
- package/lib/esm/internal/use-cases/register-wallet/RegisterWalletUseCase.js +2 -0
- package/lib/esm/internal/use-cases/register-wallet/RegisterWalletUseCase.js.map +7 -0
- package/lib/esm/internal/use-cases/register-wallet/RegisterWalletUseCase.test.js +2 -0
- package/lib/esm/internal/use-cases/register-wallet/RegisterWalletUseCase.test.js.map +7 -0
- package/lib/esm/internal/utils/BtcCommandUtils.js +1 -1
- package/lib/esm/internal/utils/BtcCommandUtils.js.map +3 -3
- package/lib/esm/internal/utils/BtcCommandUtils.test.js +1 -1
- package/lib/esm/internal/utils/BtcCommandUtils.test.js.map +3 -3
- package/lib/esm/internal/wallet/service/DefaultWalletBuilder.js +1 -1
- package/lib/esm/internal/wallet/service/DefaultWalletBuilder.js.map +3 -3
- package/lib/esm/internal/wallet/service/DefaultWalletBuilder.test.js +1 -1
- package/lib/esm/internal/wallet/service/DefaultWalletBuilder.test.js.map +3 -3
- package/lib/esm/package.json +43 -39
- package/lib/types/api/SignerBtc.d.ts +7 -1
- package/lib/types/api/SignerBtc.d.ts.map +1 -1
- package/lib/types/api/app-binder/GetMasterFingerprintDeviceActionTypes.d.ts +14 -0
- package/lib/types/api/app-binder/GetMasterFingerprintDeviceActionTypes.d.ts.map +1 -0
- package/lib/types/api/app-binder/RegisterWalletDeviceActionTypes.d.ts +16 -0
- package/lib/types/api/app-binder/RegisterWalletDeviceActionTypes.d.ts.map +1 -0
- package/lib/types/api/index.d.ts +3 -1
- package/lib/types/api/index.d.ts.map +1 -1
- package/lib/types/api/model/MasterFingerprintOptions.d.ts +4 -0
- package/lib/types/api/model/MasterFingerprintOptions.d.ts.map +1 -0
- package/lib/types/api/model/RegisterWalletOptions.d.ts +4 -0
- package/lib/types/api/model/RegisterWalletOptions.d.ts.map +1 -0
- package/lib/types/internal/DefaultSignerBtc.d.ts +5 -1
- package/lib/types/internal/DefaultSignerBtc.d.ts.map +1 -1
- package/lib/types/internal/app-binder/BtcAppBinder.d.ts +4 -0
- package/lib/types/internal/app-binder/BtcAppBinder.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/RegisterWalletAddressCommand.d.ts +2 -5
- package/lib/types/internal/app-binder/command/RegisterWalletAddressCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/RegisterWalletTask.d.ts +23 -0
- package/lib/types/internal/app-binder/task/RegisterWalletTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/RegisterWalletTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/RegisterWalletTask.test.d.ts.map +1 -0
- package/lib/types/internal/use-cases/di/useCasesModule.d.ts.map +1 -1
- package/lib/types/internal/use-cases/di/useCasesTypes.d.ts +2 -0
- package/lib/types/internal/use-cases/di/useCasesTypes.d.ts.map +1 -1
- package/lib/types/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.d.ts +9 -0
- package/lib/types/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.d.ts.map +1 -0
- package/lib/types/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.test.d.ts +2 -0
- package/lib/types/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.test.d.ts.map +1 -0
- package/lib/types/internal/use-cases/register-wallet/RegisterWalletUseCase.d.ts +8 -0
- package/lib/types/internal/use-cases/register-wallet/RegisterWalletUseCase.d.ts.map +1 -0
- package/lib/types/internal/use-cases/register-wallet/RegisterWalletUseCase.test.d.ts +2 -0
- package/lib/types/internal/use-cases/register-wallet/RegisterWalletUseCase.test.d.ts.map +1 -0
- package/lib/types/internal/utils/BtcCommandUtils.d.ts +5 -0
- package/lib/types/internal/utils/BtcCommandUtils.d.ts.map +1 -1
- package/lib/types/internal/wallet/service/DefaultWalletBuilder.d.ts +2 -1
- package/lib/types/internal/wallet/service/DefaultWalletBuilder.d.ts.map +1 -1
- package/lib/types/internal/wallet/service/WalletBuilder.d.ts +2 -1
- package/lib/types/internal/wallet/service/WalletBuilder.d.ts.map +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +33 -29
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/internal/app-binder/BtcAppBinder.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type DeviceActionState,\n DeviceActionStatus,\n type DeviceManagementKit,\n type DeviceSessionId,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { from, type Subscription } from \"rxjs\";\n\nimport {\n type GetExtendedDAIntermediateValue,\n type GetExtendedPublicKeyDAError,\n type GetExtendedPublicKeyDAOutput,\n} from \"@api/app-binder/GetExtendedPublicKeyDeviceActionTypes\";\nimport {\n type SignMessageDAError,\n type SignMessageDAIntermediateValue,\n type SignMessageDAOutput,\n} from \"@api/index\";\nimport { type Signature } from \"@api/model/Signature\";\nimport { BtcAppBinder } from \"@internal/app-binder/BtcAppBinder\";\nimport { GetExtendedPublicKeyCommand } from \"@internal/app-binder/command/GetExtendedPublicKeyCommand\";\nimport { type DataStoreService } from \"@internal/data-store/service/DataStoreService\";\nimport { type PsbtMapper } from \"@internal/psbt/service/psbt/PsbtMapper\";\nimport { type ValueParser } from \"@internal/psbt/service/value/ValueParser\";\nimport { type WalletBuilder } from \"@internal/wallet/service/WalletBuilder\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\ndescribe(\"BtcAppBinder\", () => {\n const mockedDmk: DeviceManagementKit = {\n sendCommand: vi.fn(),\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should be defined\", () => {\n const binder = new BtcAppBinder(\n {} as DeviceManagementKit,\n {} as DeviceSessionId,\n {} as WalletBuilder,\n {} as WalletSerializer,\n {} as DataStoreService,\n {} as PsbtMapper,\n {} as ValueParser,\n );\n expect(binder).toBeDefined();\n });\n\n describe(\"getExtendedPublicKey\", () => {\n let subscription: Subscription;\n afterEach(() => {\n if (subscription) {\n subscription.unsubscribe();\n }\n });\n it(\"should return the pub key\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const extendedPublicKey =\n \"D2PPQSYFe83nDzk96FqGumVU8JA7J8vj2Rhjc2oXzEi5\";\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: { extendedPublicKey },\n } as DeviceActionState<\n GetExtendedPublicKeyDAOutput,\n GetExtendedPublicKeyDAError,\n GetExtendedDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const appBinder = new BtcAppBinder(\n mockedDmk,\n \"sessionId\",\n {} as WalletBuilder,\n {} as WalletSerializer,\n {} as DataStoreService,\n {} as PsbtMapper,\n {} as ValueParser,\n );\n const { observable } = appBinder.getExtendedPublicKey({\n derivationPath: \"44'/501'\",\n checkOnDevice: false,\n skipOpenApp: false,\n });\n\n // THEN\n const states: DeviceActionState<\n GetExtendedPublicKeyDAOutput,\n GetExtendedPublicKeyDAError,\n GetExtendedDAIntermediateValue\n >[] = [];\n subscription = observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n reject(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: { extendedPublicKey },\n },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls of executeDeviceAction with the correct params\", () => {\n const baseParams = {\n derivationPath: \"44'/60'/3'/2/1\",\n returnChainCode: false,\n skipOpenApp: false,\n };\n\n it(\"when checkOnDevice is true: UserInteractionRequired.VerifyAddress\", () => {\n // GIVEN\n const checkOnDevice = true;\n const params = {\n ...baseParams,\n checkOnDevice,\n };\n\n // WHEN\n const appBinder = new BtcAppBinder(\n mockedDmk,\n \"sessionId\",\n {} as WalletBuilder,\n {} as WalletSerializer,\n {} as DataStoreService,\n {} as PsbtMapper,\n {} as ValueParser,\n );\n appBinder.getExtendedPublicKey(params);\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetExtendedPublicKeyCommand(params),\n appName: \"Bitcoin\",\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n skipOpenApp: false,\n },\n }),\n });\n });\n\n it(\"when checkOnDevice is false: UserInteractionRequired.None\", () => {\n // GIVEN\n const checkOnDevice = false;\n const params = {\n ...baseParams,\n checkOnDevice,\n };\n\n // WHEN\n const appBinder = new BtcAppBinder(\n mockedDmk,\n \"sessionId\",\n {} as WalletBuilder,\n {} as WalletSerializer,\n {} as DataStoreService,\n {} as PsbtMapper,\n {} as ValueParser,\n );\n appBinder.getExtendedPublicKey(params);\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetExtendedPublicKeyCommand(params),\n appName: \"Bitcoin\",\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n }),\n });\n });\n });\n });\n\n describe(\"signMessage\", () => {\n it(\"should return the signature\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const signature: Signature = {\n r: `0xDEF1`,\n s: `0xAFAF`,\n v: 0,\n };\n const message = \"Hello, World!\";\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n } as DeviceActionState<\n SignMessageDAOutput,\n SignMessageDAError,\n SignMessageDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const appBinder = new BtcAppBinder(\n mockedDmk,\n \"sessionId\",\n {} as WalletBuilder,\n {} as WalletSerializer,\n {} as DataStoreService,\n {} as PsbtMapper,\n {} as ValueParser,\n );\n const { observable } = appBinder.signMessage({\n derivationPath: \"44'/60'/3'/2/1\",\n message,\n skipOpenApp: false,\n });\n\n // THEN\n const states: DeviceActionState<\n SignMessageDAOutput,\n SignMessageDAError,\n SignMessageDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n reject(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n });\n});\n"],
|
|
5
|
-
"mappings": "aAAA,IAAAA,EAOO,2CACPC,EAAwC,
|
|
6
|
-
"names": ["import_device_management_kit", "import_rxjs", "import_BtcAppBinder", "import_GetExtendedPublicKeyCommand", "mockedDmk", "binder", "subscription", "resolve", "reject", "extendedPublicKey", "appBinder", "observable", "states", "state", "err", "baseParams", "params", "signature", "message"]
|
|
4
|
+
"sourcesContent": ["import {\n type DeviceActionState,\n DeviceActionStatus,\n type DeviceManagementKit,\n type DeviceSessionId,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { from, type Subscription } from \"rxjs\";\n\nimport {\n type GetExtendedDAIntermediateValue,\n type GetExtendedPublicKeyDAError,\n type GetExtendedPublicKeyDAOutput,\n} from \"@api/app-binder/GetExtendedPublicKeyDeviceActionTypes\";\nimport {\n type GetMasterFingerprintDAError,\n type GetMasterFingerprintDAIntermediateValue,\n type GetMasterFingerprintDAOutput,\n} from \"@api/app-binder/GetMasterFingerprintDeviceActionTypes\";\nimport {\n type RegisterWalletDAError,\n type RegisterWalletDAIntermediateValue,\n type RegisterWalletDAOutput,\n} from \"@api/app-binder/RegisterWalletDeviceActionTypes\";\nimport {\n type SignMessageDAError,\n type SignMessageDAIntermediateValue,\n type SignMessageDAOutput,\n} from \"@api/index\";\nimport { type Signature } from \"@api/model/Signature\";\nimport { RegisteredWallet, WalletPolicy } from \"@api/model/Wallet\";\nimport { BtcAppBinder } from \"@internal/app-binder/BtcAppBinder\";\nimport { GetExtendedPublicKeyCommand } from \"@internal/app-binder/command/GetExtendedPublicKeyCommand\";\nimport { GetMasterFingerprintCommand } from \"@internal/app-binder/command/GetMasterFingerprintCommand\";\nimport { type DataStoreService } from \"@internal/data-store/service/DataStoreService\";\nimport { type PsbtMapper } from \"@internal/psbt/service/psbt/PsbtMapper\";\nimport { type ValueParser } from \"@internal/psbt/service/value/ValueParser\";\nimport { type WalletBuilder } from \"@internal/wallet/service/WalletBuilder\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\ndescribe(\"BtcAppBinder\", () => {\n const mockedDmk: DeviceManagementKit = {\n sendCommand: vi.fn(),\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should be defined\", () => {\n const binder = new BtcAppBinder(\n {} as DeviceManagementKit,\n {} as DeviceSessionId,\n {} as WalletBuilder,\n {} as WalletSerializer,\n {} as DataStoreService,\n {} as PsbtMapper,\n {} as ValueParser,\n );\n expect(binder).toBeDefined();\n });\n\n describe(\"getExtendedPublicKey\", () => {\n let subscription: Subscription;\n afterEach(() => {\n if (subscription) {\n subscription.unsubscribe();\n }\n });\n it(\"should return the pub key\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const extendedPublicKey =\n \"D2PPQSYFe83nDzk96FqGumVU8JA7J8vj2Rhjc2oXzEi5\";\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: { extendedPublicKey },\n } as DeviceActionState<\n GetExtendedPublicKeyDAOutput,\n GetExtendedPublicKeyDAError,\n GetExtendedDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const appBinder = new BtcAppBinder(\n mockedDmk,\n \"sessionId\",\n {} as WalletBuilder,\n {} as WalletSerializer,\n {} as DataStoreService,\n {} as PsbtMapper,\n {} as ValueParser,\n );\n const { observable } = appBinder.getExtendedPublicKey({\n derivationPath: \"44'/501'\",\n checkOnDevice: false,\n skipOpenApp: false,\n });\n\n // THEN\n const states: DeviceActionState<\n GetExtendedPublicKeyDAOutput,\n GetExtendedPublicKeyDAError,\n GetExtendedDAIntermediateValue\n >[] = [];\n subscription = observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n reject(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: { extendedPublicKey },\n },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls of executeDeviceAction with the correct params\", () => {\n const baseParams = {\n derivationPath: \"44'/60'/3'/2/1\",\n returnChainCode: false,\n skipOpenApp: false,\n };\n\n it(\"when checkOnDevice is true: UserInteractionRequired.VerifyAddress\", () => {\n // GIVEN\n const checkOnDevice = true;\n const params = {\n ...baseParams,\n checkOnDevice,\n };\n\n // WHEN\n const appBinder = new BtcAppBinder(\n mockedDmk,\n \"sessionId\",\n {} as WalletBuilder,\n {} as WalletSerializer,\n {} as DataStoreService,\n {} as PsbtMapper,\n {} as ValueParser,\n );\n appBinder.getExtendedPublicKey(params);\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetExtendedPublicKeyCommand(params),\n appName: \"Bitcoin\",\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n skipOpenApp: false,\n },\n }),\n });\n });\n\n it(\"when checkOnDevice is false: UserInteractionRequired.None\", () => {\n // GIVEN\n const checkOnDevice = false;\n const params = {\n ...baseParams,\n checkOnDevice,\n };\n\n // WHEN\n const appBinder = new BtcAppBinder(\n mockedDmk,\n \"sessionId\",\n {} as WalletBuilder,\n {} as WalletSerializer,\n {} as DataStoreService,\n {} as PsbtMapper,\n {} as ValueParser,\n );\n appBinder.getExtendedPublicKey(params);\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetExtendedPublicKeyCommand(params),\n appName: \"Bitcoin\",\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n }),\n });\n });\n });\n });\n\n describe(\"getMasterFingerprint\", () => {\n let subscription: Subscription;\n afterEach(() => {\n if (subscription) {\n subscription.unsubscribe();\n }\n });\n\n it(\"should return the master fingerprint\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const masterFingerprint = Uint8Array.from([0x82, 0x8d, 0xc2, 0xf3]);\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: { masterFingerprint },\n } as DeviceActionState<\n GetMasterFingerprintDAOutput,\n GetMasterFingerprintDAError,\n GetMasterFingerprintDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const appBinder = new BtcAppBinder(\n mockedDmk,\n \"sessionId\",\n {} as WalletBuilder,\n {} as WalletSerializer,\n {} as DataStoreService,\n {} as PsbtMapper,\n {} as ValueParser,\n );\n const { observable } = appBinder.getMasterFingerprint({\n skipOpenApp: false,\n });\n\n // THEN\n const states: DeviceActionState<\n GetMasterFingerprintDAOutput,\n GetMasterFingerprintDAError,\n GetMasterFingerprintDAIntermediateValue\n >[] = [];\n subscription = observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n reject(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: { masterFingerprint },\n },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n it(\"should call executeDeviceAction with the correct params\", () => {\n // GIVEN\n const params = {\n skipOpenApp: false,\n };\n\n // WHEN\n const appBinder = new BtcAppBinder(\n mockedDmk,\n \"sessionId\",\n {} as WalletBuilder,\n {} as WalletSerializer,\n {} as DataStoreService,\n {} as PsbtMapper,\n {} as ValueParser,\n );\n appBinder.getMasterFingerprint(params);\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetMasterFingerprintCommand(),\n appName: \"Bitcoin\",\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n }),\n });\n });\n\n it(\"should pass skipOpenApp option correctly\", () => {\n // GIVEN\n const params = {\n skipOpenApp: true,\n };\n\n // WHEN\n const appBinder = new BtcAppBinder(\n mockedDmk,\n \"sessionId\",\n {} as WalletBuilder,\n {} as WalletSerializer,\n {} as DataStoreService,\n {} as PsbtMapper,\n {} as ValueParser,\n );\n appBinder.getMasterFingerprint(params);\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetMasterFingerprintCommand(),\n appName: \"Bitcoin\",\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: true,\n },\n }),\n });\n });\n });\n\n describe(\"signMessage\", () => {\n it(\"should return the signature\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const signature: Signature = {\n r: `0xDEF1`,\n s: `0xAFAF`,\n v: 0,\n };\n const message = \"Hello, World!\";\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n } as DeviceActionState<\n SignMessageDAOutput,\n SignMessageDAError,\n SignMessageDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const appBinder = new BtcAppBinder(\n mockedDmk,\n \"sessionId\",\n {} as WalletBuilder,\n {} as WalletSerializer,\n {} as DataStoreService,\n {} as PsbtMapper,\n {} as ValueParser,\n );\n const { observable } = appBinder.signMessage({\n derivationPath: \"44'/60'/3'/2/1\",\n message,\n skipOpenApp: false,\n });\n\n // THEN\n const states: DeviceActionState<\n SignMessageDAOutput,\n SignMessageDAError,\n SignMessageDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n reject(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: signature,\n },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n });\n\n describe(\"registerWallet\", () => {\n let subscription: Subscription;\n afterEach(() => {\n if (subscription) {\n subscription.unsubscribe();\n }\n });\n\n it(\"should return the registered wallet with hmac\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const walletPolicy = new WalletPolicy(\n \"My Multisig\",\n \"wsh(sortedmulti(2,@0/**,@1/**))\",\n [\"[f5acc2fd/48'/1'/0'/2']tpubXXX\", \"tpubYYY\"],\n );\n const registeredWallet = new RegisteredWallet(\n walletPolicy.name,\n walletPolicy.descriptorTemplate,\n walletPolicy.keys,\n Uint8Array.from(new Array(32).fill(0x42)),\n );\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output: registeredWallet,\n } as DeviceActionState<\n RegisterWalletDAOutput,\n RegisterWalletDAError,\n RegisterWalletDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const appBinder = new BtcAppBinder(\n mockedDmk,\n \"sessionId\",\n {} as WalletBuilder,\n {} as WalletSerializer,\n {} as DataStoreService,\n {} as PsbtMapper,\n {} as ValueParser,\n );\n const { observable } = appBinder.registerWallet({\n wallet: walletPolicy,\n skipOpenApp: false,\n });\n\n // THEN\n const states: DeviceActionState<\n RegisterWalletDAOutput,\n RegisterWalletDAError,\n RegisterWalletDAIntermediateValue\n >[] = [];\n subscription = observable.subscribe({\n next: (state) => {\n states.push(state);\n },\n error: (err) => {\n reject(err);\n },\n complete: () => {\n try {\n expect(states).toEqual([\n {\n status: DeviceActionStatus.Completed,\n output: registeredWallet,\n },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n it(\"should call executeDeviceAction\", () => {\n // GIVEN\n const walletPolicy = new WalletPolicy(\n \"My Multisig\",\n \"wsh(sortedmulti(2,@0/**,@1/**))\",\n [\"[f5acc2fd/48'/1'/0'/2']tpubXXX\", \"tpubYYY\"],\n );\n\n // WHEN\n const appBinder = new BtcAppBinder(\n mockedDmk,\n \"sessionId\",\n {} as WalletBuilder,\n {} as WalletSerializer,\n {} as DataStoreService,\n {} as PsbtMapper,\n {} as ValueParser,\n );\n appBinder.registerWallet({\n wallet: walletPolicy,\n skipOpenApp: false,\n });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalled();\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_device_management_kit", "import_rxjs", "import_Wallet", "import_BtcAppBinder", "import_GetExtendedPublicKeyCommand", "import_GetMasterFingerprintCommand", "mockedDmk", "binder", "subscription", "resolve", "reject", "extendedPublicKey", "appBinder", "observable", "states", "state", "err", "baseParams", "params", "masterFingerprint", "signature", "message", "walletPolicy", "registeredWallet"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var m=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var c=(r,e)=>{for(var s in e)m(r,s,{get:e[s],enumerable:!0})},u=(r,e,s,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of C(e))!A.call(r,o)&&o!==s&&m(r,o,{get:()=>e[o],enumerable:!(a=R(e,o))||a.enumerable});return r};var g=r=>u(m({},"__esModule",{value:!0}),r);var f={};c(f,{RegisterWalletAddressCommand:()=>y});module.exports=g(f);var t=require("@ledgerhq/device-management-kit"),l=require("@ledgerhq/signer-utils"),n=require("purify-ts"),d=require("../../app-binder/command/utils/bitcoinAppErrors"),p=require("../../app-binder/command/utils/constants"),i=require("../../utils/BtcCommandUtils");class y{constructor(e,s=new l.CommandErrorHelper(d.BTC_APP_ERRORS,d.BtcAppCommandErrorFactory,i.BtcCommandUtils.isSuccessResponse)){this._args=e;this._errorHelper=s}name="registerWalletAddress";getApdu(){const e=new t.ApduBuilder({cla:225,ins:2,p1:0,p2:p.PROTOCOL_VERSION}),{walletPolicy:s}=this._args;return e.encodeInLVFromBuffer(s).build()}parseResponse(e){return n.Maybe.fromNullable(this._errorHelper.getError(e)).orDefault((0,t.CommandResultFactory)({data:e}))}}0&&(module.exports={RegisterWalletAddressCommand});
|
|
2
2
|
//# sourceMappingURL=RegisterWalletAddressCommand.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/command/RegisterWalletAddressCommand.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n ApduBuilder,\n
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,
|
|
6
|
-
"names": ["RegisterWalletAddressCommand_exports", "__export", "RegisterWalletAddressCommand", "__toCommonJS", "import_device_management_kit", "import_signer_utils", "import_purify_ts", "import_bitcoinAppErrors", "import_constants", "import_BtcCommandUtils", "
|
|
4
|
+
"sourcesContent": ["import {\n ApduBuilder,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n BTC_APP_ERRORS,\n BtcAppCommandErrorFactory,\n type BtcErrorCodes,\n} from \"@internal/app-binder/command/utils/bitcoinAppErrors\";\nimport { PROTOCOL_VERSION } from \"@internal/app-binder/command/utils/constants\";\nimport { BtcCommandUtils } from \"@internal/utils/BtcCommandUtils\";\n\nexport type RegisterWalletAddressCommandArgs = {\n walletPolicy: Uint8Array;\n};\n\ntype RegisterWalletAddressCommandResponse = ApduResponse;\n\nexport class RegisterWalletAddressCommand\n implements\n Command<\n RegisterWalletAddressCommandResponse,\n RegisterWalletAddressCommandArgs,\n BtcErrorCodes\n >\n{\n readonly name = \"registerWalletAddress\";\n constructor(\n private readonly _args: RegisterWalletAddressCommandArgs,\n private readonly _errorHelper = new CommandErrorHelper<\n RegisterWalletAddressCommandResponse,\n BtcErrorCodes\n >(\n BTC_APP_ERRORS,\n BtcAppCommandErrorFactory,\n BtcCommandUtils.isSuccessResponse,\n ),\n ) {}\n\n getApdu() {\n const builder = new ApduBuilder({\n cla: 0xe1,\n ins: 0x02,\n p1: 0x00,\n p2: PROTOCOL_VERSION,\n });\n const { walletPolicy } = this._args;\n\n return builder.encodeInLVFromBuffer(walletPolicy).build();\n }\n\n parseResponse(\n response: ApduResponse,\n ): CommandResult<RegisterWalletAddressCommandResponse, BtcErrorCodes> {\n return Maybe.fromNullable(this._errorHelper.getError(response)).orDefault(\n CommandResultFactory({ data: response }),\n );\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAMO,2CACPC,EAAmC,kCACnCC,EAAsB,qBAEtBC,EAIO,+DACPC,EAAiC,wDACjCC,EAAgC,2CAQzB,MAAMP,CAOb,CAEE,YACmBQ,EACAC,EAAe,IAAI,qBAIlC,iBACA,4BACA,kBAAgB,iBAClB,EACA,CATiB,WAAAD,EACA,kBAAAC,CAQhB,CAXM,KAAO,wBAahB,SAAU,CACR,MAAMC,EAAU,IAAI,cAAY,CAC9B,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAI,kBACN,CAAC,EACK,CAAE,aAAAC,CAAa,EAAI,KAAK,MAE9B,OAAOD,EAAQ,qBAAqBC,CAAY,EAAE,MAAM,CAC1D,CAEA,cACEC,EACoE,CACpE,OAAO,QAAM,aAAa,KAAK,aAAa,SAASA,CAAQ,CAAC,EAAE,aAC9D,wBAAqB,CAAE,KAAMA,CAAS,CAAC,CACzC,CACF,CACF",
|
|
6
|
+
"names": ["RegisterWalletAddressCommand_exports", "__export", "RegisterWalletAddressCommand", "__toCommonJS", "import_device_management_kit", "import_signer_utils", "import_purify_ts", "import_bitcoinAppErrors", "import_constants", "import_BtcCommandUtils", "_args", "_errorHelper", "builder", "walletPolicy", "response"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var e=require("@ledgerhq/device-management-kit"),t=require("../../app-binder/command/RegisterWalletAddressCommand");const a=Uint8Array.from([124,103,232,79,153,116,70,113,20,147,239,139,116,112,177,15,96,75,2,210,88,79,160,68,111,206,247,217,137,131,227,220]),n=2,r=Uint8Array.from([75,197,70,127,36,147,133,178,158,91,142,201,251,36,204,101,163,113,11,26,38,210,141,233,245,196,243,244,93,214,84,193]),d=Uint8Array.from([2,12,67,111,108,100,32,115,116,111,114,97,103,101,30]),A=2,s=Uint8Array.from([A].concat(...d).concat(...a).concat([n]).concat(...r)),l=Uint8Array.from([225,2,0,1,82,81].concat(...s)),i=Uint8Array.from([29,21,14,212,37,168,113,165,202,126,44,85,219,27,50,149,193,253,151,20,127,208,167,177,136,212,50,127,75,167,64,42,250,115,227,97,25,50,79,190,76,193,202,148,170,132,44,98,97,82,109,68,17,42,34,22,75,197,124,51,53,16,43,4]);describe("RegisterWalletAddressCommand",()=>{describe("name",()=>{it("should be 'registerWalletAddress'",()=>{const x=new t.RegisterWalletAddressCommand({walletPolicy:s});expect(x.name).toBe("registerWalletAddress")})}),describe("getApdu",()=>{it("should send the correct APDU",()=>{const x=new t.RegisterWalletAddressCommand({walletPolicy:s});expect(x.getApdu().getRawApdu()).toEqual(l)})}),describe("parseResponse",()=>{it("should return the ApduResponse directly on success",()=>{const x=new t.RegisterWalletAddressCommand({walletPolicy:s}),c=new e.ApduResponse({statusCode:new Uint8Array([144,0]),data:i});expect(x.parseResponse(c)).toEqual((0,e.CommandResultFactory)({data:c}))}),it("should return an error if the response is not successful",()=>{const x=new t.RegisterWalletAddressCommand({walletPolicy:s}),c=new e.ApduResponse({statusCode:Uint8Array.from([109,0]),data:new Uint8Array(0)}),o=x.parseResponse(c);expect((0,e.isSuccessCommandResult)(o)).toBe(!1)})})});
|
|
2
2
|
//# sourceMappingURL=RegisterWalletAddressCommand.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/command/RegisterWalletAddressCommand.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n
|
|
5
|
-
"mappings": "aAAA,IAAAA,
|
|
4
|
+
"sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { RegisterWalletAddressCommand } from \"@internal/app-binder/command/RegisterWalletAddressCommand\";\n\nconst POLICY_HASH_DATA = Uint8Array.from([\n 0x7c, 0x67, 0xe8, 0x4f, 0x99, 0x74, 0x46, 0x71, 0x14, 0x93, 0xef, 0x8b, 0x74,\n 0x70, 0xb1, 0x0f, 0x60, 0x4b, 0x02, 0xd2, 0x58, 0x4f, 0xa0, 0x44, 0x6f, 0xce,\n 0xf7, 0xd9, 0x89, 0x83, 0xe3, 0xdc,\n]);\nconst KEYS_LENGTH = 0x02;\nconst KEYS_HASH_DATA = Uint8Array.from([\n 0x4b, 0xc5, 0x46, 0x7f, 0x24, 0x93, 0x85, 0xb2, 0x9e, 0x5b, 0x8e, 0xc9, 0xfb,\n 0x24, 0xcc, 0x65, 0xa3, 0x71, 0x0b, 0x1a, 0x26, 0xd2, 0x8d, 0xe9, 0xf5, 0xc4,\n 0xf3, 0xf4, 0x5d, 0xd6, 0x54, 0xc1,\n]);\nconst POLICY_NAME_DATA = Uint8Array.from([\n 0x02, 0x0c, 0x43, 0x6f, 0x6c, 0x64, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67,\n 0x65, 0x1e,\n]);\nconst POLICY_VERSION = 0x02;\nconst WALLET_POLICY_DATA = Uint8Array.from(\n [POLICY_VERSION]\n .concat(...POLICY_NAME_DATA)\n .concat(...POLICY_HASH_DATA)\n .concat([KEYS_LENGTH])\n .concat(...KEYS_HASH_DATA),\n);\nconst EXPECTED_RAW_APDU = Uint8Array.from(\n [0xe1, 0x02, 0x00, 0x01, 0x52, 0x51].concat(...WALLET_POLICY_DATA),\n);\nconst APDU_RESPONSE = Uint8Array.from([\n 0x1d, 0x15, 0x0e, 0xd4, 0x25, 0xa8, 0x71, 0xa5, 0xca, 0x7e, 0x2c, 0x55, 0xdb,\n 0x1b, 0x32, 0x95, 0xc1, 0xfd, 0x97, 0x14, 0x7f, 0xd0, 0xa7, 0xb1, 0x88, 0xd4,\n 0x32, 0x7f, 0x4b, 0xa7, 0x40, 0x2a, 0xfa, 0x73, 0xe3, 0x61, 0x19, 0x32, 0x4f,\n 0xbe, 0x4c, 0xc1, 0xca, 0x94, 0xaa, 0x84, 0x2c, 0x62, 0x61, 0x52, 0x6d, 0x44,\n 0x11, 0x2a, 0x22, 0x16, 0x4b, 0xc5, 0x7c, 0x33, 0x35, 0x10, 0x2b, 0x04,\n]);\n\ndescribe(\"RegisterWalletAddressCommand\", () => {\n describe(\"name\", () => {\n it(\"should be 'registerWalletAddress'\", () => {\n const command = new RegisterWalletAddressCommand({\n walletPolicy: WALLET_POLICY_DATA,\n });\n expect(command.name).toBe(\"registerWalletAddress\");\n });\n });\n\n describe(\"getApdu\", () => {\n it(\"should send the correct APDU\", () => {\n // when\n const command = new RegisterWalletAddressCommand({\n walletPolicy: WALLET_POLICY_DATA,\n });\n\n // then\n expect(command.getApdu().getRawApdu()).toEqual(EXPECTED_RAW_APDU);\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return the ApduResponse directly on success\", () => {\n // given\n const command = new RegisterWalletAddressCommand({\n walletPolicy: WALLET_POLICY_DATA,\n });\n const response = new ApduResponse({\n statusCode: new Uint8Array([0x90, 0x00]),\n data: APDU_RESPONSE,\n });\n\n // then\n expect(command.parseResponse(response)).toEqual(\n CommandResultFactory({\n data: response,\n }),\n );\n });\n\n it(\"should return an error if the response is not successful\", () => {\n // given\n const command = new RegisterWalletAddressCommand({\n walletPolicy: WALLET_POLICY_DATA,\n });\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x6d, 0x00]),\n data: new Uint8Array(0),\n });\n\n // when\n const result = command.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(false);\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["import_device_management_kit", "import_RegisterWalletAddressCommand", "POLICY_HASH_DATA", "KEYS_LENGTH", "KEYS_HASH_DATA", "POLICY_NAME_DATA", "POLICY_VERSION", "WALLET_POLICY_DATA", "EXPECTED_RAW_APDU", "APDU_RESPONSE", "command", "response", "result"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var n=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var f=(t,e)=>{for(var r in e)n(t,r,{get:e[r],enumerable:!0})},v=(t,e,r,l)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of R(e))!g.call(t,a)&&a!==r&&n(t,a,{get:()=>e[a],enumerable:!(l=w(e,a))||l.enumerable});return t};var _=t=>v(n({},"__esModule",{value:!0}),t);var C={};f(C,{RegisterWalletTask:()=>k});module.exports=_(C);var i=require("@ledgerhq/device-management-kit"),c=require("../../../api/model/Wallet"),p=require("../../app-binder/command/RegisterWalletAddressCommand"),d=require("../../app-binder/task/ContinueTask"),y=require("../../data-store/model/DataStore"),u=require("../../utils/BtcCommandUtils");class k{constructor(e,r,l,a,m,W=(o,s)=>new d.ContinueTask(o,s)){this._api=e;this._args=r;this._walletBuilder=l;this._walletSerializer=a;this._dataStoreService=m;this._continueTaskFactory=W}async run(){const{walletPolicy:e}=this._args,r=this._walletBuilder.fromWalletPolicy(e),l=new y.DataStore;this._dataStoreService.merklizeWallet(l,r);const a=this._walletSerializer.serialize(r),m=await this._api.sendCommand(new p.RegisterWalletAddressCommand({walletPolicy:a})),o=await this._continueTaskFactory(this._api,l).run(m);if((0,i.isSuccessCommandResult)(o)){const s=u.BtcCommandUtils.getWalletRegistration(o);if(!(0,i.isSuccessCommandResult)(s))return(0,i.CommandResultFactory)({error:s.error});const{walletHmac:S}=s.data;return(0,i.CommandResultFactory)({data:new c.RegisteredWallet(e.name,e.descriptorTemplate,e.keys,S)})}return o}}0&&(module.exports={RegisterWalletTask});
|
|
2
|
+
//# sourceMappingURL=RegisterWalletTask.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/task/RegisterWalletTask.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n type CommandResult,\n CommandResultFactory,\n type InternalApi,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { RegisteredWallet, type WalletPolicy } from \"@api/model/Wallet\";\nimport { RegisterWalletAddressCommand } from \"@internal/app-binder/command/RegisterWalletAddressCommand\";\nimport { type BtcErrorCodes } from \"@internal/app-binder/command/utils/bitcoinAppErrors\";\nimport { ContinueTask } from \"@internal/app-binder/task/ContinueTask\";\nimport { DataStore } from \"@internal/data-store/model/DataStore\";\nimport type { DataStoreService } from \"@internal/data-store/service/DataStoreService\";\nimport { BtcCommandUtils } from \"@internal/utils/BtcCommandUtils\";\nimport { type Wallet as InternalWallet } from \"@internal/wallet/model/Wallet\";\nimport type { WalletBuilder } from \"@internal/wallet/service/WalletBuilder\";\nimport type { WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nexport type RegisterWalletTaskArgs = {\n walletPolicy: WalletPolicy;\n};\n\nexport type RegisterWalletTaskResult = CommandResult<\n RegisteredWallet,\n BtcErrorCodes\n>;\n\nexport class RegisterWalletTask {\n constructor(\n private readonly _api: InternalApi,\n private readonly _args: RegisterWalletTaskArgs,\n private readonly _walletBuilder: WalletBuilder,\n private readonly _walletSerializer: WalletSerializer,\n private readonly _dataStoreService: DataStoreService,\n private readonly _continueTaskFactory = (\n api: InternalApi,\n dataStore: DataStore,\n ) => new ContinueTask(api, dataStore),\n ) {}\n\n async run(): Promise<RegisterWalletTaskResult> {\n const { walletPolicy } = this._args;\n\n const wallet: InternalWallet =\n this._walletBuilder.fromWalletPolicy(walletPolicy);\n\n const dataStore = new DataStore();\n this._dataStoreService.merklizeWallet(dataStore, wallet);\n\n const serializedWallet = this._walletSerializer.serialize(wallet);\n\n const registerCommandResult = await this._api.sendCommand(\n new RegisterWalletAddressCommand({\n walletPolicy: serializedWallet,\n }),\n );\n\n const continueTask = this._continueTaskFactory(this._api, dataStore);\n const result = await continueTask.run(registerCommandResult);\n\n if (isSuccessCommandResult(result)) {\n const registrationResult = BtcCommandUtils.getWalletRegistration(result);\n\n if (!isSuccessCommandResult(registrationResult)) {\n return CommandResultFactory({\n error: registrationResult.error,\n });\n }\n\n const { walletHmac } = registrationResult.data;\n\n return CommandResultFactory({\n data: new RegisteredWallet(\n walletPolicy.name,\n walletPolicy.descriptorTemplate,\n walletPolicy.keys,\n walletHmac,\n ),\n });\n }\n\n return result;\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAKO,2CAEPC,EAAoD,6BACpDC,EAA6C,qEAE7CC,EAA6B,kDAC7BC,EAA0B,gDAE1BC,EAAgC,2CAczB,MAAMP,CAAmB,CAC9B,YACmBQ,EACAC,EACAC,EACAC,EACAC,EACAC,EAAuB,CACtCC,EACAC,IACG,IAAI,eAAaD,EAAKC,CAAS,EACpC,CATiB,UAAAP,EACA,WAAAC,EACA,oBAAAC,EACA,uBAAAC,EACA,uBAAAC,EACA,0BAAAC,CAIhB,CAEH,MAAM,KAAyC,CAC7C,KAAM,CAAE,aAAAG,CAAa,EAAI,KAAK,MAExBC,EACJ,KAAK,eAAe,iBAAiBD,CAAY,EAE7CD,EAAY,IAAI,YACtB,KAAK,kBAAkB,eAAeA,EAAWE,CAAM,EAEvD,MAAMC,EAAmB,KAAK,kBAAkB,UAAUD,CAAM,EAE1DE,EAAwB,MAAM,KAAK,KAAK,YAC5C,IAAI,+BAA6B,CAC/B,aAAcD,CAChB,CAAC,CACH,EAGME,EAAS,MADM,KAAK,qBAAqB,KAAK,KAAML,CAAS,EACjC,IAAII,CAAqB,EAE3D,MAAI,0BAAuBC,CAAM,EAAG,CAClC,MAAMC,EAAqB,kBAAgB,sBAAsBD,CAAM,EAEvE,GAAI,IAAC,0BAAuBC,CAAkB,EAC5C,SAAO,wBAAqB,CAC1B,MAAOA,EAAmB,KAC5B,CAAC,EAGH,KAAM,CAAE,WAAAC,CAAW,EAAID,EAAmB,KAE1C,SAAO,wBAAqB,CAC1B,KAAM,IAAI,mBACRL,EAAa,KACbA,EAAa,mBACbA,EAAa,KACbM,CACF,CACF,CAAC,CACH,CAEA,OAAOF,CACT,CACF",
|
|
6
|
+
"names": ["RegisterWalletTask_exports", "__export", "RegisterWalletTask", "__toCommonJS", "import_device_management_kit", "import_Wallet", "import_RegisterWalletAddressCommand", "import_ContinueTask", "import_DataStore", "import_BtcCommandUtils", "_api", "_args", "_walletBuilder", "_walletSerializer", "_dataStoreService", "_continueTaskFactory", "api", "dataStore", "walletPolicy", "wallet", "serializedWallet", "registerCommandResult", "result", "registrationResult", "walletHmac"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("@ledgerhq/device-management-kit"),s=require("../../../api/model/Wallet"),p=require("../../data-store/model/DataStore"),u=require("./RegisterWalletTask");const t=new s.WalletPolicy("My Multisig","wsh(sortedmulti(2,@0/**,@1/**))",["[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK","tpubDE7NQymr4AFtcJXi9TaWZtrhAdy8QyKmT4U6b9qYByAxCzoyMJ8zw5d8xVLVpbTRAEqP8pVUxjLE2vDt1rSFjaiS8DSz1QcNZ8D1qxUMx1g"]),f=Uint8Array.from([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32]),y=Uint8Array.from([33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64]),m=new Uint8Array([...f,...y]),w=Uint8Array.from([1,2,3,4]);describe("RegisterWalletTask",()=>{const l={sendCommand:vi.fn()},d={name:t.name,descriptorTemplate:t.descriptorTemplate,keys:t.keys,hmac:new Uint8Array(32).fill(0),keysTree:{getRoot:vi.fn()},descriptorBuffer:new Uint8Array},i={fromWalletPolicy:vi.fn().mockReturnValue(d)},c={serialize:vi.fn().mockReturnValue(w)},x={merklizeWallet:vi.fn()};afterEach(()=>{vi.resetAllMocks()}),describe("run",()=>{it("should successfully register a wallet and return RegisteredWallet with hmac",async()=>{const n={walletPolicy:t},r=(0,e.CommandResultFactory)({data:new e.ApduResponse({statusCode:new Uint8Array([144,0]),data:m})}),o=()=>({run:vi.fn().mockReturnValue(r)}),a=await new u.RegisterWalletTask(l,n,i,c,x,o).run();expect(i.fromWalletPolicy).toHaveBeenCalledWith(t),expect(x.merklizeWallet).toHaveBeenCalledWith(expect.any(p.DataStore),d),expect(c.serialize).toHaveBeenCalledWith(d),expect((0,e.isSuccessCommandResult)(a)).toBe(!0),(0,e.isSuccessCommandResult)(a)&&(expect(a.data).toBeInstanceOf(s.RegisteredWallet),expect(a.data).toEqual(new s.RegisteredWallet(t.name,t.descriptorTemplate,t.keys,y)))}),it("should return an error if the RegisterWalletAddressCommand fails",async()=>{const n={walletPolicy:t},r=(0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("Registration failed")}),o=()=>({run:vi.fn().mockReturnValue(r)}),a=await new u.RegisterWalletTask(l,n,i,c,x,o).run();expect(a).toStrictEqual((0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("Registration failed")}))}),it("should call sendCommand with the serialized wallet policy",async()=>{const n={walletPolicy:t},r=(0,e.CommandResultFactory)({data:new e.ApduResponse({statusCode:new Uint8Array([144,0]),data:m})}),o=()=>({run:vi.fn().mockReturnValue(r)});await new u.RegisterWalletTask(l,n,i,c,x,o).run(),expect(l.sendCommand).toHaveBeenCalledWith(expect.objectContaining({name:"registerWalletAddress"}))})})});
|
|
2
|
+
//# sourceMappingURL=RegisterWalletTask.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/task/RegisterWalletTask.test.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { RegisteredWallet, WalletPolicy } from \"@api/model/Wallet\";\nimport { type ContinueTask } from \"@internal/app-binder/task/ContinueTask\";\nimport { DataStore } from \"@internal/data-store/model/DataStore\";\nimport { type DataStoreService } from \"@internal/data-store/service/DataStoreService\";\nimport { type Wallet } from \"@internal/wallet/model/Wallet\";\nimport { type WalletBuilder } from \"@internal/wallet/service/WalletBuilder\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nimport { RegisterWalletTask } from \"./RegisterWalletTask\";\n\nconst WALLET_POLICY = new WalletPolicy(\n \"My Multisig\",\n \"wsh(sortedmulti(2,@0/**,@1/**))\",\n [\n \"[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK\",\n \"tpubDE7NQymr4AFtcJXi9TaWZtrhAdy8QyKmT4U6b9qYByAxCzoyMJ8zw5d8xVLVpbTRAEqP8pVUxjLE2vDt1rSFjaiS8DSz1QcNZ8D1qxUMx1g\",\n ],\n);\n\nconst WALLET_ID = Uint8Array.from([\n 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,\n 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a,\n 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,\n]);\n\nconst WALLET_HMAC = Uint8Array.from([\n 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d,\n 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a,\n 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40,\n]);\n\n// Combined response data: walletId (32 bytes) + walletHmac (32 bytes)\nconst APDU_RESPONSE_DATA = new Uint8Array([...WALLET_ID, ...WALLET_HMAC]);\n\nconst SERIALIZED_WALLET = Uint8Array.from([0x01, 0x02, 0x03, 0x04]);\n\ndescribe(\"RegisterWalletTask\", () => {\n const apiMock = {\n sendCommand: vi.fn(),\n } as unknown as InternalApi;\n\n const mockInternalWallet = {\n name: WALLET_POLICY.name,\n descriptorTemplate: WALLET_POLICY.descriptorTemplate,\n keys: WALLET_POLICY.keys,\n hmac: new Uint8Array(32).fill(0),\n keysTree: { getRoot: vi.fn() },\n descriptorBuffer: new Uint8Array(),\n } as unknown as Wallet;\n\n const walletBuilderMock = {\n fromWalletPolicy: vi.fn().mockReturnValue(mockInternalWallet),\n } as unknown as WalletBuilder;\n\n const walletSerializerMock = {\n serialize: vi.fn().mockReturnValue(SERIALIZED_WALLET),\n } as unknown as WalletSerializer;\n\n const dataStoreServiceMock = {\n merklizeWallet: vi.fn(),\n } as unknown as DataStoreService;\n\n afterEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"run\", () => {\n it(\"should successfully register a wallet and return RegisteredWallet with hmac\", async () => {\n // GIVEN\n const args = {\n walletPolicy: WALLET_POLICY,\n };\n\n const successResult = CommandResultFactory<ApduResponse, void>({\n data: new ApduResponse({\n statusCode: new Uint8Array([0x90, 0x00]),\n data: APDU_RESPONSE_DATA,\n }),\n });\n\n const continueTaskFactory = () =>\n ({\n run: vi.fn().mockReturnValue(successResult),\n }) as unknown as ContinueTask;\n\n // WHEN\n const result = await new RegisterWalletTask(\n apiMock,\n args,\n walletBuilderMock,\n walletSerializerMock,\n dataStoreServiceMock,\n continueTaskFactory,\n ).run();\n\n // THEN\n expect(walletBuilderMock.fromWalletPolicy).toHaveBeenCalledWith(\n WALLET_POLICY,\n );\n expect(dataStoreServiceMock.merklizeWallet).toHaveBeenCalledWith(\n expect.any(DataStore),\n mockInternalWallet,\n );\n expect(walletSerializerMock.serialize).toHaveBeenCalledWith(\n mockInternalWallet,\n );\n expect(isSuccessCommandResult(result)).toBe(true);\n if (isSuccessCommandResult(result)) {\n expect(result.data).toBeInstanceOf(RegisteredWallet);\n expect(result.data).toEqual(\n new RegisteredWallet(\n WALLET_POLICY.name,\n WALLET_POLICY.descriptorTemplate,\n WALLET_POLICY.keys,\n WALLET_HMAC,\n ),\n );\n }\n });\n\n it(\"should return an error if the RegisterWalletAddressCommand fails\", async () => {\n // GIVEN\n const args = {\n walletPolicy: WALLET_POLICY,\n };\n\n const resultError = CommandResultFactory<ApduResponse, void>({\n error: new InvalidStatusWordError(\"Registration failed\"),\n });\n\n const continueTaskFactory = () =>\n ({\n run: vi.fn().mockReturnValue(resultError),\n }) as unknown as ContinueTask;\n\n // WHEN\n const result = await new RegisterWalletTask(\n apiMock,\n args,\n walletBuilderMock,\n walletSerializerMock,\n dataStoreServiceMock,\n continueTaskFactory,\n ).run();\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"Registration failed\"),\n }),\n );\n });\n\n it(\"should call sendCommand with the serialized wallet policy\", async () => {\n // GIVEN\n const args = {\n walletPolicy: WALLET_POLICY,\n };\n\n const successResult = CommandResultFactory<ApduResponse, void>({\n data: new ApduResponse({\n statusCode: new Uint8Array([0x90, 0x00]),\n data: APDU_RESPONSE_DATA,\n }),\n });\n\n const continueTaskFactory = () =>\n ({\n run: vi.fn().mockReturnValue(successResult),\n }) as unknown as ContinueTask;\n\n // WHEN\n await new RegisterWalletTask(\n apiMock,\n args,\n walletBuilderMock,\n walletSerializerMock,\n dataStoreServiceMock,\n continueTaskFactory,\n ).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n expect.objectContaining({\n name: \"registerWalletAddress\",\n }),\n );\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_device_management_kit", "import_Wallet", "import_DataStore", "import_RegisterWalletTask", "WALLET_POLICY", "WALLET_ID", "WALLET_HMAC", "APDU_RESPONSE_DATA", "SERIALIZED_WALLET", "apiMock", "mockInternalWallet", "walletBuilderMock", "walletSerializerMock", "dataStoreServiceMock", "args", "successResult", "continueTaskFactory", "result", "resultError"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var a=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var G=Object.prototype.hasOwnProperty;var M=(e,s)=>{for(var r in s)a(e,r,{get:s[r],enumerable:!0})},S=(e,s,r,i)=>{if(s&&typeof s=="object"||typeof s=="function")for(let o of u(s))!G.call(e,o)&&o!==r&&a(e,o,{get:()=>s[o],enumerable:!(i=c(s,o))||i.enumerable});return e};var d=e=>S(a({},"__esModule",{value:!0}),e);var P={};M(P,{useCasesModuleFactory:()=>y});module.exports=d(P);var m=require("inversify"),t=require("../../use-cases/di/useCasesTypes"),C=require("../../use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase"),n=require("../../use-cases/get-master-fingerprint/GetMasterFingerprintUseCase"),U=require("../../use-cases/get-wallet-address/GetWalletAddressUseCase"),p=require("../../use-cases/register-wallet/RegisterWalletUseCase"),g=require("../../use-cases/sign-message/SignMessageUseCase"),l=require("../../use-cases/sign-psbt/SignPsbtUseCase"),f=require("../../use-cases/sign-transaction/SignTransactionUseCase");const y=()=>new m.ContainerModule(({bind:e})=>{e(t.useCasesTypes.GetExtendedPublicKeyUseCase).to(C.GetExtendedPublicKeyUseCase),e(t.useCasesTypes.GetMasterFingerprintUseCase).to(n.GetMasterFingerprintUseCase),e(t.useCasesTypes.RegisterWalletUseCase).to(p.RegisterWalletUseCase),e(t.useCasesTypes.SignMessageUseCase).to(g.SignMessageUseCase),e(t.useCasesTypes.SignPsbtUseCase).to(l.SignPsbtUseCase),e(t.useCasesTypes.SignTransactionUseCase).to(f.SignTransactionUseCase),e(t.useCasesTypes.GetWalletAddressUseCase).to(U.GetWalletAddressUseCase)});0&&(module.exports={useCasesModuleFactory});
|
|
2
2
|
//# sourceMappingURL=useCasesModule.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/use-cases/di/useCasesModule.ts"],
|
|
4
|
-
"sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { useCasesTypes } from \"@internal/use-cases/di/useCasesTypes\";\nimport { GetExtendedPublicKeyUseCase } from \"@internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase\";\nimport { GetWalletAddressUseCase } from \"@internal/use-cases/get-wallet-address/GetWalletAddressUseCase\";\nimport { SignMessageUseCase } from \"@internal/use-cases/sign-message/SignMessageUseCase\";\nimport { SignPsbtUseCase } from \"@internal/use-cases/sign-psbt/SignPsbtUseCase\";\nimport { SignTransactionUseCase } from \"@internal/use-cases/sign-transaction/SignTransactionUseCase\";\n\nexport const useCasesModuleFactory = () =>\n new ContainerModule(({ bind }) => {\n bind(useCasesTypes.GetExtendedPublicKeyUseCase).to(\n GetExtendedPublicKeyUseCase,\n );\n bind(useCasesTypes.SignMessageUseCase).to(SignMessageUseCase);\n bind(useCasesTypes.SignPsbtUseCase).to(SignPsbtUseCase);\n bind(useCasesTypes.SignTransactionUseCase).to(SignTransactionUseCase);\n bind(useCasesTypes.GetWalletAddressUseCase).to(GetWalletAddressUseCase);\n });\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,2BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAgC,qBAEhCC,EAA8B,gDAC9BC,EAA4C,mFAC5CC,EAAwC,0EACxCC,EAAmC,+DACnCC,EAAgC,yDAChCC,EAAuC,uEAEhC,
|
|
6
|
-
"names": ["useCasesModule_exports", "__export", "useCasesModuleFactory", "__toCommonJS", "import_inversify", "import_useCasesTypes", "import_GetExtendedPublicKeyUseCase", "import_GetWalletAddressUseCase", "import_SignMessageUseCase", "import_SignPsbtUseCase", "import_SignTransactionUseCase", "bind"]
|
|
4
|
+
"sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { useCasesTypes } from \"@internal/use-cases/di/useCasesTypes\";\nimport { GetExtendedPublicKeyUseCase } from \"@internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase\";\nimport { GetMasterFingerprintUseCase } from \"@internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase\";\nimport { GetWalletAddressUseCase } from \"@internal/use-cases/get-wallet-address/GetWalletAddressUseCase\";\nimport { RegisterWalletUseCase } from \"@internal/use-cases/register-wallet/RegisterWalletUseCase\";\nimport { SignMessageUseCase } from \"@internal/use-cases/sign-message/SignMessageUseCase\";\nimport { SignPsbtUseCase } from \"@internal/use-cases/sign-psbt/SignPsbtUseCase\";\nimport { SignTransactionUseCase } from \"@internal/use-cases/sign-transaction/SignTransactionUseCase\";\n\nexport const useCasesModuleFactory = () =>\n new ContainerModule(({ bind }) => {\n bind(useCasesTypes.GetExtendedPublicKeyUseCase).to(\n GetExtendedPublicKeyUseCase,\n );\n bind(useCasesTypes.GetMasterFingerprintUseCase).to(\n GetMasterFingerprintUseCase,\n );\n bind(useCasesTypes.RegisterWalletUseCase).to(RegisterWalletUseCase);\n bind(useCasesTypes.SignMessageUseCase).to(SignMessageUseCase);\n bind(useCasesTypes.SignPsbtUseCase).to(SignPsbtUseCase);\n bind(useCasesTypes.SignTransactionUseCase).to(SignTransactionUseCase);\n bind(useCasesTypes.GetWalletAddressUseCase).to(GetWalletAddressUseCase);\n });\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,2BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAgC,qBAEhCC,EAA8B,gDAC9BC,EAA4C,mFAC5CC,EAA4C,kFAC5CC,EAAwC,0EACxCC,EAAsC,qEACtCC,EAAmC,+DACnCC,EAAgC,yDAChCC,EAAuC,uEAEhC,MAAMV,EAAwB,IACnC,IAAI,kBAAgB,CAAC,CAAE,KAAAW,CAAK,IAAM,CAChCA,EAAK,gBAAc,2BAA2B,EAAE,GAC9C,6BACF,EACAA,EAAK,gBAAc,2BAA2B,EAAE,GAC9C,6BACF,EACAA,EAAK,gBAAc,qBAAqB,EAAE,GAAG,uBAAqB,EAClEA,EAAK,gBAAc,kBAAkB,EAAE,GAAG,oBAAkB,EAC5DA,EAAK,gBAAc,eAAe,EAAE,GAAG,iBAAe,EACtDA,EAAK,gBAAc,sBAAsB,EAAE,GAAG,wBAAsB,EACpEA,EAAK,gBAAc,uBAAuB,EAAE,GAAG,yBAAuB,CACxE,CAAC",
|
|
6
|
+
"names": ["useCasesModule_exports", "__export", "useCasesModuleFactory", "__toCommonJS", "import_inversify", "import_useCasesTypes", "import_GetExtendedPublicKeyUseCase", "import_GetMasterFingerprintUseCase", "import_GetWalletAddressUseCase", "import_RegisterWalletUseCase", "import_SignMessageUseCase", "import_SignPsbtUseCase", "import_SignTransactionUseCase", "bind"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var o=require("inversify"),d=require("./useCasesModule"),s=require("./useCasesTypes");describe("useCasesModuleFactory",()=>{describe("Default",()=>{let e,t;beforeEach(()=>{t=(0,d.useCasesModuleFactory)(),e=new o.Container,e.loadSync(t)}),it("should return the address module",()=>{expect(t).toBeDefined()}),it("should bind GetExtendedPublicKeyUseCase",()=>{expect(e.isBound(s.useCasesTypes.GetExtendedPublicKeyUseCase)).toBeTruthy()}),it("should bind SignMessageUseCase",()=>{expect(e.isBound(s.useCasesTypes.SignMessageUseCase)).toBeTruthy()}),it("should bind GetWalletAddressUseCase",()=>{expect(e.isBound(s.useCasesTypes.GetWalletAddressUseCase)).toBeTruthy()})})});
|
|
1
|
+
"use strict";var o=require("inversify"),d=require("./useCasesModule"),s=require("./useCasesTypes");describe("useCasesModuleFactory",()=>{describe("Default",()=>{let e,t;beforeEach(()=>{t=(0,d.useCasesModuleFactory)(),e=new o.Container,e.loadSync(t)}),it("should return the address module",()=>{expect(t).toBeDefined()}),it("should bind GetExtendedPublicKeyUseCase",()=>{expect(e.isBound(s.useCasesTypes.GetExtendedPublicKeyUseCase)).toBeTruthy()}),it("should bind GetMasterFingerprintUseCase",()=>{expect(e.isBound(s.useCasesTypes.GetMasterFingerprintUseCase)).toBeTruthy()}),it("should bind RegisterWalletUseCase",()=>{expect(e.isBound(s.useCasesTypes.RegisterWalletUseCase)).toBeTruthy()}),it("should bind SignMessageUseCase",()=>{expect(e.isBound(s.useCasesTypes.SignMessageUseCase)).toBeTruthy()}),it("should bind GetWalletAddressUseCase",()=>{expect(e.isBound(s.useCasesTypes.GetWalletAddressUseCase)).toBeTruthy()})})});
|
|
2
2
|
//# sourceMappingURL=useCasesModule.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/use-cases/di/useCasesModule.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { Container } from \"inversify\";\n\nimport { useCasesModuleFactory } from \"./useCasesModule\";\nimport { useCasesTypes } from \"./useCasesTypes\";\n\ndescribe(\"useCasesModuleFactory\", () => {\n describe(\"Default\", () => {\n let container: Container;\n let mod: ReturnType<typeof useCasesModuleFactory>;\n beforeEach(() => {\n mod = useCasesModuleFactory();\n container = new Container();\n container.loadSync(mod);\n });\n\n it(\"should return the address module\", () => {\n expect(mod).toBeDefined();\n });\n\n it(\"should bind GetExtendedPublicKeyUseCase\", () => {\n expect(\n container.isBound(useCasesTypes.GetExtendedPublicKeyUseCase),\n ).toBeTruthy();\n });\n\n it(\"should bind SignMessageUseCase\", () => {\n expect(container.isBound(useCasesTypes.SignMessageUseCase)).toBeTruthy();\n });\n\n it(\"should bind GetWalletAddressUseCase\", () => {\n expect(\n container.isBound(useCasesTypes.GetWalletAddressUseCase),\n ).toBeTruthy();\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "aAAA,IAAAA,EAA0B,qBAE1BC,EAAsC,4BACtCC,EAA8B,2BAE9B,SAAS,wBAAyB,IAAM,CACtC,SAAS,UAAW,IAAM,CACxB,IAAIC,EACAC,EACJ,WAAW,IAAM,CACfA,KAAM,yBAAsB,EAC5BD,EAAY,IAAI,YAChBA,EAAU,SAASC,CAAG,CACxB,CAAC,EAED,GAAG,mCAAoC,IAAM,CAC3C,OAAOA,CAAG,EAAE,YAAY,CAC1B,CAAC,EAED,GAAG,0CAA2C,IAAM,CAClD,OACED,EAAU,QAAQ,gBAAc,2BAA2B,CAC7D,EAAE,WAAW,CACf,CAAC,EAED,GAAG,iCAAkC,IAAM,CACzC,OAAOA,EAAU,QAAQ,gBAAc,kBAAkB,CAAC,EAAE,WAAW,CACzE,CAAC,EAED,GAAG,sCAAuC,IAAM,CAC9C,OACEA,EAAU,QAAQ,gBAAc,uBAAuB,CACzD,EAAE,WAAW,CACf,CAAC,CACH,CAAC,CACH,CAAC",
|
|
4
|
+
"sourcesContent": ["import { Container } from \"inversify\";\n\nimport { useCasesModuleFactory } from \"./useCasesModule\";\nimport { useCasesTypes } from \"./useCasesTypes\";\n\ndescribe(\"useCasesModuleFactory\", () => {\n describe(\"Default\", () => {\n let container: Container;\n let mod: ReturnType<typeof useCasesModuleFactory>;\n beforeEach(() => {\n mod = useCasesModuleFactory();\n container = new Container();\n container.loadSync(mod);\n });\n\n it(\"should return the address module\", () => {\n expect(mod).toBeDefined();\n });\n\n it(\"should bind GetExtendedPublicKeyUseCase\", () => {\n expect(\n container.isBound(useCasesTypes.GetExtendedPublicKeyUseCase),\n ).toBeTruthy();\n });\n\n it(\"should bind GetMasterFingerprintUseCase\", () => {\n expect(\n container.isBound(useCasesTypes.GetMasterFingerprintUseCase),\n ).toBeTruthy();\n });\n\n it(\"should bind RegisterWalletUseCase\", () => {\n expect(\n container.isBound(useCasesTypes.RegisterWalletUseCase),\n ).toBeTruthy();\n });\n\n it(\"should bind SignMessageUseCase\", () => {\n expect(container.isBound(useCasesTypes.SignMessageUseCase)).toBeTruthy();\n });\n\n it(\"should bind GetWalletAddressUseCase\", () => {\n expect(\n container.isBound(useCasesTypes.GetWalletAddressUseCase),\n ).toBeTruthy();\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAA0B,qBAE1BC,EAAsC,4BACtCC,EAA8B,2BAE9B,SAAS,wBAAyB,IAAM,CACtC,SAAS,UAAW,IAAM,CACxB,IAAIC,EACAC,EACJ,WAAW,IAAM,CACfA,KAAM,yBAAsB,EAC5BD,EAAY,IAAI,YAChBA,EAAU,SAASC,CAAG,CACxB,CAAC,EAED,GAAG,mCAAoC,IAAM,CAC3C,OAAOA,CAAG,EAAE,YAAY,CAC1B,CAAC,EAED,GAAG,0CAA2C,IAAM,CAClD,OACED,EAAU,QAAQ,gBAAc,2BAA2B,CAC7D,EAAE,WAAW,CACf,CAAC,EAED,GAAG,0CAA2C,IAAM,CAClD,OACEA,EAAU,QAAQ,gBAAc,2BAA2B,CAC7D,EAAE,WAAW,CACf,CAAC,EAED,GAAG,oCAAqC,IAAM,CAC5C,OACEA,EAAU,QAAQ,gBAAc,qBAAqB,CACvD,EAAE,WAAW,CACf,CAAC,EAED,GAAG,iCAAkC,IAAM,CACzC,OAAOA,EAAU,QAAQ,gBAAc,kBAAkB,CAAC,EAAE,WAAW,CACzE,CAAC,EAED,GAAG,sCAAuC,IAAM,CAC9C,OACEA,EAAU,QAAQ,gBAAc,uBAAuB,CACzD,EAAE,WAAW,CACf,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
6
|
"names": ["import_inversify", "import_useCasesModule", "import_useCasesTypes", "container", "mod"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var r=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var C=(s,e)=>{for(var t in e)r(s,t,{get:e[t],enumerable:!0})},U=(s,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of n(e))!i.call(s,a)&&a!==t&&r(s,a,{get:()=>e[a],enumerable:!(o=l(e,a))||o.enumerable});return s};var S=s=>U(r({},"__esModule",{value:!0}),s);var b={};C(b,{useCasesTypes:()=>g});module.exports=S(b);const g={GetExtendedPublicKeyUseCase:Symbol.for("GetExtendedPublicKeyUseCase"),GetMasterFingerprintUseCase:Symbol.for("GetMasterFingerprintUseCase"),RegisterWalletUseCase:Symbol.for("RegisterWalletUseCase"),SignMessageUseCase:Symbol.for("SignMessageUseCase"),SignPsbtUseCase:Symbol.for("SignPsbtUseCase"),SignTransactionUseCase:Symbol.for("SignTransactionUseCase"),GetWalletAddressUseCase:Symbol.for("GetWalletAddressUseCase")};0&&(module.exports={useCasesTypes});
|
|
2
2
|
//# sourceMappingURL=useCasesTypes.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/use-cases/di/useCasesTypes.ts"],
|
|
4
|
-
"sourcesContent": ["export const useCasesTypes = {\n GetExtendedPublicKeyUseCase: Symbol.for(\"GetExtendedPublicKeyUseCase\"),\n SignMessageUseCase: Symbol.for(\"SignMessageUseCase\"),\n SignPsbtUseCase: Symbol.for(\"SignPsbtUseCase\"),\n SignTransactionUseCase: Symbol.for(\"SignTransactionUseCase\"),\n GetWalletAddressUseCase: Symbol.for(\"GetWalletAddressUseCase\"),\n};\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,IAAA,eAAAC,EAAAH,GAAO,MAAME,EAAgB,CAC3B,4BAA6B,OAAO,IAAI,6BAA6B,EACrE,mBAAoB,OAAO,IAAI,oBAAoB,EACnD,gBAAiB,OAAO,IAAI,iBAAiB,EAC7C,uBAAwB,OAAO,IAAI,wBAAwB,EAC3D,wBAAyB,OAAO,IAAI,yBAAyB,CAC/D",
|
|
4
|
+
"sourcesContent": ["export const useCasesTypes = {\n GetExtendedPublicKeyUseCase: Symbol.for(\"GetExtendedPublicKeyUseCase\"),\n GetMasterFingerprintUseCase: Symbol.for(\"GetMasterFingerprintUseCase\"),\n RegisterWalletUseCase: Symbol.for(\"RegisterWalletUseCase\"),\n SignMessageUseCase: Symbol.for(\"SignMessageUseCase\"),\n SignPsbtUseCase: Symbol.for(\"SignPsbtUseCase\"),\n SignTransactionUseCase: Symbol.for(\"SignTransactionUseCase\"),\n GetWalletAddressUseCase: Symbol.for(\"GetWalletAddressUseCase\"),\n};\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,IAAA,eAAAC,EAAAH,GAAO,MAAME,EAAgB,CAC3B,4BAA6B,OAAO,IAAI,6BAA6B,EACrE,4BAA6B,OAAO,IAAI,6BAA6B,EACrE,sBAAuB,OAAO,IAAI,uBAAuB,EACzD,mBAAoB,OAAO,IAAI,oBAAoB,EACnD,gBAAiB,OAAO,IAAI,iBAAiB,EAC7C,uBAAwB,OAAO,IAAI,wBAAwB,EAC3D,wBAAyB,OAAO,IAAI,yBAAyB,CAC/D",
|
|
6
6
|
"names": ["useCasesTypes_exports", "__export", "useCasesTypes", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var c=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var u=(r,p)=>{for(var o in p)c(r,o,{get:p[o],enumerable:!0})},O=(r,p,o,n)=>{if(p&&typeof p=="object"||typeof p=="function")for(let i of f(p))!k.call(r,i)&&i!==o&&c(r,i,{get:()=>p[i],enumerable:!(n=m(p,i))||n.enumerable});return r};var b=r=>O(c({},"__esModule",{value:!0}),r),A=(r,p,o,n)=>{for(var i=n>1?void 0:n?m(p,o):p,B=r.length-1,d;B>=0;B--)(d=r[B])&&(i=(n?d(p,o,i):d(i))||i);return n&&i&&c(p,o,i),i},l=(r,p)=>(o,n)=>p(o,n,r);var j={};u(j,{GetMasterFingerprintUseCase:()=>e});module.exports=b(j);var t=require("inversify"),a=require("../../app-binder/di/appBinderTypes");let e=class{constructor(p){this._appBinder=p}execute(p){return this._appBinder.getMasterFingerprint({skipOpenApp:p.skipOpenApp})}};e=A([(0,t.injectable)(),l(0,(0,t.inject)(a.appBinderTypes.AppBinder))],e);0&&(module.exports={GetMasterFingerprintUseCase});
|
|
2
|
+
//# sourceMappingURL=GetMasterFingerprintUseCase.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.ts"],
|
|
4
|
+
"sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport { BtcAppBinder } from \"@internal/app-binder/BtcAppBinder\";\nimport { appBinderTypes } from \"@internal/app-binder/di/appBinderTypes\";\n\n@injectable()\nexport class GetMasterFingerprintUseCase {\n constructor(\n @inject(appBinderTypes.AppBinder)\n private readonly _appBinder: BtcAppBinder,\n ) {}\n\n execute(options: { skipOpenApp: boolean }) {\n return this._appBinder.getMasterFingerprint({\n skipOpenApp: options.skipOpenApp,\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBAGnCC,EAA+B,kDAGxB,IAAMC,EAAN,KAAkC,CACvC,YAEmBC,EACjB,CADiB,gBAAAA,CAChB,CAEH,QAAQC,EAAmC,CACzC,OAAO,KAAK,WAAW,qBAAqB,CAC1C,YAAaA,EAAQ,WACvB,CAAC,CACH,CACF,EAXaF,EAANG,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,iBAAe,SAAS,IAFvBJ",
|
|
6
|
+
"names": ["GetMasterFingerprintUseCase_exports", "__export", "GetMasterFingerprintUseCase", "__toCommonJS", "import_inversify", "import_appBinderTypes", "GetMasterFingerprintUseCase", "_appBinder", "options", "__decorateClass", "__decorateParam"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var r=require("./GetMasterFingerprintUseCase");describe("GetMasterFingerprintUseCase",()=>{const p=Uint8Array.from([130,141,194,243]),e=vi.fn().mockReturnValue(p),n={getMasterFingerprint:e};let t;beforeEach(()=>{vi.clearAllMocks(),t=new r.GetMasterFingerprintUseCase(n)}),it("should return the master fingerprint from the appBinder's getMasterFingerprint method",()=>{const i=t.execute({skipOpenApp:!1});expect(i).toEqual(p),expect(e).toHaveBeenCalledWith({skipOpenApp:!1})}),it("should pass skipOpenApp option correctly",()=>{t.execute({skipOpenApp:!0}),expect(e).toHaveBeenCalledWith({skipOpenApp:!0})})});
|
|
2
|
+
//# sourceMappingURL=GetMasterFingerprintUseCase.test.js.map
|
package/lib/cjs/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.test.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { type BtcAppBinder } from \"@internal/app-binder/BtcAppBinder\";\n\nimport { GetMasterFingerprintUseCase } from \"./GetMasterFingerprintUseCase\";\n\ndescribe(\"GetMasterFingerprintUseCase\", () => {\n const masterFingerprint = Uint8Array.from([0x82, 0x8d, 0xc2, 0xf3]);\n const getMasterFingerprintMock = vi.fn().mockReturnValue(masterFingerprint);\n const appBinderMock = {\n getMasterFingerprint: getMasterFingerprintMock,\n } as unknown as BtcAppBinder;\n let useCase: GetMasterFingerprintUseCase;\n\n beforeEach(() => {\n vi.clearAllMocks();\n useCase = new GetMasterFingerprintUseCase(appBinderMock);\n });\n\n it(\"should return the master fingerprint from the appBinder's getMasterFingerprint method\", () => {\n // GIVEN\n const skipOpenApp = false;\n\n // WHEN\n const result = useCase.execute({ skipOpenApp });\n\n // THEN\n expect(result).toEqual(masterFingerprint);\n expect(getMasterFingerprintMock).toHaveBeenCalledWith({\n skipOpenApp,\n });\n });\n\n it(\"should pass skipOpenApp option correctly\", () => {\n // GIVEN\n const skipOpenApp = true;\n\n // WHEN\n useCase.execute({ skipOpenApp });\n\n // THEN\n expect(getMasterFingerprintMock).toHaveBeenCalledWith({\n skipOpenApp: true,\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aAEA,IAAAA,EAA4C,yCAE5C,SAAS,8BAA+B,IAAM,CAC5C,MAAMC,EAAoB,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,GAAI,CAAC,EAC5DC,EAA2B,GAAG,GAAG,EAAE,gBAAgBD,CAAiB,EACpEE,EAAgB,CACpB,qBAAsBD,CACxB,EACA,IAAIE,EAEJ,WAAW,IAAM,CACf,GAAG,cAAc,EACjBA,EAAU,IAAI,8BAA4BD,CAAa,CACzD,CAAC,EAED,GAAG,wFAAyF,IAAM,CAKhG,MAAME,EAASD,EAAQ,QAAQ,CAAE,cAAY,CAAC,EAG9C,OAAOC,CAAM,EAAE,QAAQJ,CAAiB,EACxC,OAAOC,CAAwB,EAAE,qBAAqB,CACpD,cACF,CAAC,CACH,CAAC,EAED,GAAG,2CAA4C,IAAM,CAKnDE,EAAQ,QAAQ,CAAE,cAAY,CAAC,EAG/B,OAAOF,CAAwB,EAAE,qBAAqB,CACpD,YAAa,EACf,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_GetMasterFingerprintUseCase", "masterFingerprint", "getMasterFingerprintMock", "appBinderMock", "useCase", "result"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var c=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var A=(r,p)=>{for(var i in p)c(r,i,{get:p[i],enumerable:!0})},b=(r,p,i,t)=>{if(p&&typeof p=="object"||typeof p=="function")for(let o of f(p))!u.call(r,o)&&o!==i&&c(r,o,{get:()=>p[o],enumerable:!(t=d(p,o))||t.enumerable});return r};var j=r=>b(c({},"__esModule",{value:!0}),r),l=(r,p,i,t)=>{for(var o=t>1?void 0:t?d(p,i):p,m=r.length-1,B;m>=0;m--)(B=r[m])&&(o=(t?B(p,i,o):B(o))||o);return t&&o&&c(p,i,o),o},a=(r,p)=>(i,t)=>p(i,t,r);var x={};A(x,{RegisterWalletUseCase:()=>n});module.exports=j(x);var e=require("inversify"),y=require("../../app-binder/di/appBinderTypes");let n=class{constructor(p){this._appBinder=p}execute(p,i){return this._appBinder.registerWallet({wallet:p,skipOpenApp:i})}};n=l([(0,e.injectable)(),a(0,(0,e.inject)(y.appBinderTypes.AppBinder))],n);0&&(module.exports={RegisterWalletUseCase});
|
|
2
|
+
//# sourceMappingURL=RegisterWalletUseCase.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/use-cases/register-wallet/RegisterWalletUseCase.ts"],
|
|
4
|
+
"sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport { type WalletPolicy } from \"@api/model/Wallet\";\nimport { BtcAppBinder } from \"@internal/app-binder/BtcAppBinder\";\nimport { appBinderTypes } from \"@internal/app-binder/di/appBinderTypes\";\n\n@injectable()\nexport class RegisterWalletUseCase {\n constructor(\n @inject(appBinderTypes.AppBinder)\n private readonly _appBinder: BtcAppBinder,\n ) {}\n\n execute(wallet: WalletPolicy, skipOpenApp: boolean) {\n return this._appBinder.registerWallet({\n wallet,\n skipOpenApp,\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,2BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBAInCC,EAA+B,kDAGxB,IAAMC,EAAN,KAA4B,CACjC,YAEmBC,EACjB,CADiB,gBAAAA,CAChB,CAEH,QAAQC,EAAsBC,EAAsB,CAClD,OAAO,KAAK,WAAW,eAAe,CACpC,OAAAD,EACA,YAAAC,CACF,CAAC,CACH,CACF,EAZaH,EAANI,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,iBAAe,SAAS,IAFvBL",
|
|
6
|
+
"names": ["RegisterWalletUseCase_exports", "__export", "RegisterWalletUseCase", "__toCommonJS", "import_inversify", "import_appBinderTypes", "RegisterWalletUseCase", "_appBinder", "wallet", "skipOpenApp", "__decorateClass", "__decorateParam"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var t=require("../../../api/model/Wallet"),r=require("./RegisterWalletUseCase");describe("RegisterWalletUseCase",()=>{const e=new t.WalletPolicy("My Multisig","wsh(sortedmulti(2,@0/**,@1/**))",["[f5acc2fd/48'/1'/0'/2']tpubXXX","tpubYYY"]),s=new t.RegisteredWallet(e.name,e.descriptorTemplate,e.keys,Uint8Array.from(new Array(32).fill(66))),p=vi.fn().mockReturnValue(s),i={registerWallet:p};let l;beforeEach(()=>{vi.clearAllMocks(),l=new r.RegisterWalletUseCase(i)}),it("should return the registered wallet from the appBinder's registerWallet method",()=>{const o=l.execute(e,!1);expect(o).toEqual(s),expect(p).toHaveBeenCalledWith({wallet:e,skipOpenApp:!1})}),it("should pass skipOpenApp option correctly",()=>{l.execute(e,!0),expect(p).toHaveBeenCalledWith({wallet:e,skipOpenApp:!0})})});
|
|
2
|
+
//# sourceMappingURL=RegisterWalletUseCase.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/use-cases/register-wallet/RegisterWalletUseCase.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { RegisteredWallet, WalletPolicy } from \"@api/model/Wallet\";\nimport { type BtcAppBinder } from \"@internal/app-binder/BtcAppBinder\";\n\nimport { RegisterWalletUseCase } from \"./RegisterWalletUseCase\";\n\ndescribe(\"RegisterWalletUseCase\", () => {\n const walletPolicy = new WalletPolicy(\n \"My Multisig\",\n \"wsh(sortedmulti(2,@0/**,@1/**))\",\n [\"[f5acc2fd/48'/1'/0'/2']tpubXXX\", \"tpubYYY\"],\n );\n const registeredWallet = new RegisteredWallet(\n walletPolicy.name,\n walletPolicy.descriptorTemplate,\n walletPolicy.keys,\n Uint8Array.from(new Array(32).fill(0x42)),\n );\n const registerWalletMock = vi.fn().mockReturnValue(registeredWallet);\n const appBinderMock = {\n registerWallet: registerWalletMock,\n } as unknown as BtcAppBinder;\n let useCase: RegisterWalletUseCase;\n\n beforeEach(() => {\n vi.clearAllMocks();\n useCase = new RegisterWalletUseCase(appBinderMock);\n });\n\n it(\"should return the registered wallet from the appBinder's registerWallet method\", () => {\n // GIVEN\n const skipOpenApp = false;\n\n // WHEN\n const result = useCase.execute(walletPolicy, skipOpenApp);\n\n // THEN\n expect(result).toEqual(registeredWallet);\n expect(registerWalletMock).toHaveBeenCalledWith({\n wallet: walletPolicy,\n skipOpenApp,\n });\n });\n\n it(\"should pass skipOpenApp option correctly\", () => {\n // GIVEN\n const skipOpenApp = true;\n\n // WHEN\n useCase.execute(walletPolicy, skipOpenApp);\n\n // THEN\n expect(registerWalletMock).toHaveBeenCalledWith({\n wallet: walletPolicy,\n skipOpenApp: true,\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAA+C,6BAG/CC,EAAsC,mCAEtC,SAAS,wBAAyB,IAAM,CACtC,MAAMC,EAAe,IAAI,eACvB,cACA,kCACA,CAAC,iCAAkC,SAAS,CAC9C,EACMC,EAAmB,IAAI,mBAC3BD,EAAa,KACbA,EAAa,mBACbA,EAAa,KACb,WAAW,KAAK,IAAI,MAAM,EAAE,EAAE,KAAK,EAAI,CAAC,CAC1C,EACME,EAAqB,GAAG,GAAG,EAAE,gBAAgBD,CAAgB,EAC7DE,EAAgB,CACpB,eAAgBD,CAClB,EACA,IAAIE,EAEJ,WAAW,IAAM,CACf,GAAG,cAAc,EACjBA,EAAU,IAAI,wBAAsBD,CAAa,CACnD,CAAC,EAED,GAAG,iFAAkF,IAAM,CAKzF,MAAME,EAASD,EAAQ,QAAQJ,EAAc,EAAW,EAGxD,OAAOK,CAAM,EAAE,QAAQJ,CAAgB,EACvC,OAAOC,CAAkB,EAAE,qBAAqB,CAC9C,OAAQF,EACR,cACF,CAAC,CACH,CAAC,EAED,GAAG,2CAA4C,IAAM,CAKnDI,EAAQ,QAAQJ,EAAc,EAAW,EAGzC,OAAOE,CAAkB,EAAE,qBAAqB,CAC9C,OAAQF,EACR,YAAa,EACf,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_Wallet", "import_RegisterWalletUseCase", "walletPolicy", "registeredWallet", "registerWalletMock", "appBinderMock", "useCase", "result"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var o=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var p=(a,t)=>{for(var s in t)o(a,s,{get:t[s],enumerable:!0})},R=(a,t,s,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of l(t))!m.call(a,r)&&r!==s&&o(a,r,{get:()=>t[r],enumerable:!(n=u(t,r))||n.enumerable});return a};var C=a=>R(o({},"__esModule",{value:!0}),a);var y={};p(y,{BtcCommandUtils:()=>d});module.exports=C(y);var e=require("@ledgerhq/device-management-kit"),i=require("../app-binder/command/utils/constants");const g=32,A=32,S=32,E=32;class d{static isContinueResponse(t){return t.statusCode[0]===i.SW_INTERRUPTED_EXECUTION[0]&&t.statusCode[1]===i.SW_INTERRUPTED_EXECUTION[1]}static isSuccessResponse(t){return e.CommandUtils.isSuccessResponse(t)||d.isContinueResponse(t)}static getSignature(t){const s=new e.ApduParser(t.data),n=s.extract8BitUInt();if(n===void 0)return(0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("V is missing")});const r=s.encodeToHexaString(s.extractFieldByLength(g),!0);if(!r)return(0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("R is missing")});const c=s.encodeToHexaString(s.extractFieldByLength(A),!0);return c?(0,e.CommandResultFactory)({data:{v:n,r,s:c}}):(0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("S is missing")})}static getAddress(t){const s=new e.ApduParser(t.data);if(!t.data)return(0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("Failed to extract address from response")});const n=s.encodeToString(t.data.data);return(0,e.CommandResultFactory)({data:{address:n}})}static getWalletRegistration(t){const s=new e.ApduParser(t.data),n=s.extractFieldByLength(S);if(!n)return(0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("Wallet ID is missing")});const r=s.extractFieldByLength(E);return r?(0,e.CommandResultFactory)({data:{walletId:n,walletHmac:r}}):(0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("Wallet HMAC is missing")})}}0&&(module.exports={BtcCommandUtils});
|
|
2
2
|
//# sourceMappingURL=BtcCommandUtils.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/internal/utils/BtcCommandUtils.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n ApduParser,\n type ApduResponse,\n type CommandResult,\n CommandResultFactory,\n type CommandSuccessResult,\n CommandUtils as DmkCommandUtils,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type Signature } from \"@api/model/Signature\";\nimport { type WalletAddress } from \"@api/model/Wallet\";\nimport { type BtcErrorCodes } from \"@internal/app-binder/command/utils/bitcoinAppErrors\";\nimport { SW_INTERRUPTED_EXECUTION } from \"@internal/app-binder/command/utils/constants\";\n\nconst R_LENGTH = 32;\nconst S_LENGTH = 32;\n\nexport class BtcCommandUtils {\n static isContinueResponse(response: ApduResponse) {\n return (\n response.statusCode[0] === SW_INTERRUPTED_EXECUTION[0] &&\n response.statusCode[1] === SW_INTERRUPTED_EXECUTION[1]\n );\n }\n static isSuccessResponse(response: ApduResponse) {\n return (\n DmkCommandUtils.isSuccessResponse(response) ||\n BtcCommandUtils.isContinueResponse(response)\n );\n }\n\n static getSignature(\n result: CommandSuccessResult<ApduResponse>,\n ): CommandResult<Signature, BtcErrorCodes> {\n const parser = new ApduParser(result.data);\n\n const v = parser.extract8BitUInt();\n if (v === undefined) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"V is missing\"),\n });\n }\n\n const r = parser.encodeToHexaString(\n parser.extractFieldByLength(R_LENGTH),\n true,\n );\n if (!r) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"R is missing\"),\n });\n }\n\n const s = parser.encodeToHexaString(\n parser.extractFieldByLength(S_LENGTH),\n true,\n );\n if (!s) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"S is missing\"),\n });\n }\n\n return CommandResultFactory({\n data: {\n v,\n r,\n s,\n },\n });\n }\n\n static getAddress(\n response: CommandSuccessResult<ApduResponse>,\n ): CommandResult<WalletAddress, BtcErrorCodes> {\n const parser = new ApduParser(response.data);\n if (!response.data) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"Failed to extract address from response\",\n ),\n });\n }\n\n const address = parser.encodeToString(response.data.data);\n return CommandResultFactory({\n data: {\n address,\n },\n });\n }\n}\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAQO,2CAKPC,EAAyC,wDAEzC,MAAMC,EAAW,GACXC,EAAW,
|
|
6
|
-
"names": ["BtcCommandUtils_exports", "__export", "BtcCommandUtils", "__toCommonJS", "import_device_management_kit", "import_constants", "R_LENGTH", "S_LENGTH", "response", "DmkCommandUtils", "result", "parser", "v", "s", "address"]
|
|
4
|
+
"sourcesContent": ["import {\n ApduParser,\n type ApduResponse,\n type CommandResult,\n CommandResultFactory,\n type CommandSuccessResult,\n CommandUtils as DmkCommandUtils,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type Signature } from \"@api/model/Signature\";\nimport { type WalletAddress } from \"@api/model/Wallet\";\nimport { type BtcErrorCodes } from \"@internal/app-binder/command/utils/bitcoinAppErrors\";\nimport { SW_INTERRUPTED_EXECUTION } from \"@internal/app-binder/command/utils/constants\";\n\nconst R_LENGTH = 32;\nconst S_LENGTH = 32;\nconst WALLET_ID_LENGTH = 32;\nconst WALLET_HMAC_LENGTH = 32;\n\nexport type WalletRegistrationResult = {\n walletId: Uint8Array;\n walletHmac: Uint8Array;\n};\n\nexport class BtcCommandUtils {\n static isContinueResponse(response: ApduResponse) {\n return (\n response.statusCode[0] === SW_INTERRUPTED_EXECUTION[0] &&\n response.statusCode[1] === SW_INTERRUPTED_EXECUTION[1]\n );\n }\n static isSuccessResponse(response: ApduResponse) {\n return (\n DmkCommandUtils.isSuccessResponse(response) ||\n BtcCommandUtils.isContinueResponse(response)\n );\n }\n\n static getSignature(\n result: CommandSuccessResult<ApduResponse>,\n ): CommandResult<Signature, BtcErrorCodes> {\n const parser = new ApduParser(result.data);\n\n const v = parser.extract8BitUInt();\n if (v === undefined) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"V is missing\"),\n });\n }\n\n const r = parser.encodeToHexaString(\n parser.extractFieldByLength(R_LENGTH),\n true,\n );\n if (!r) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"R is missing\"),\n });\n }\n\n const s = parser.encodeToHexaString(\n parser.extractFieldByLength(S_LENGTH),\n true,\n );\n if (!s) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"S is missing\"),\n });\n }\n\n return CommandResultFactory({\n data: {\n v,\n r,\n s,\n },\n });\n }\n\n static getAddress(\n response: CommandSuccessResult<ApduResponse>,\n ): CommandResult<WalletAddress, BtcErrorCodes> {\n const parser = new ApduParser(response.data);\n if (!response.data) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n \"Failed to extract address from response\",\n ),\n });\n }\n\n const address = parser.encodeToString(response.data.data);\n return CommandResultFactory({\n data: {\n address,\n },\n });\n }\n\n static getWalletRegistration(\n response: CommandSuccessResult<ApduResponse>,\n ): CommandResult<WalletRegistrationResult, BtcErrorCodes> {\n const parser = new ApduParser(response.data);\n\n const walletId = parser.extractFieldByLength(WALLET_ID_LENGTH);\n if (!walletId) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Wallet ID is missing\"),\n });\n }\n\n const walletHmac = parser.extractFieldByLength(WALLET_HMAC_LENGTH);\n if (!walletHmac) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Wallet HMAC is missing\"),\n });\n }\n\n return CommandResultFactory({\n data: {\n walletId,\n walletHmac,\n },\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAQO,2CAKPC,EAAyC,wDAEzC,MAAMC,EAAW,GACXC,EAAW,GACXC,EAAmB,GACnBC,EAAqB,GAOpB,MAAMP,CAAgB,CAC3B,OAAO,mBAAmBQ,EAAwB,CAChD,OACEA,EAAS,WAAW,CAAC,IAAM,2BAAyB,CAAC,GACrDA,EAAS,WAAW,CAAC,IAAM,2BAAyB,CAAC,CAEzD,CACA,OAAO,kBAAkBA,EAAwB,CAC/C,OACE,EAAAC,aAAgB,kBAAkBD,CAAQ,GAC1CR,EAAgB,mBAAmBQ,CAAQ,CAE/C,CAEA,OAAO,aACLE,EACyC,CACzC,MAAMC,EAAS,IAAI,aAAWD,EAAO,IAAI,EAEnCE,EAAID,EAAO,gBAAgB,EACjC,GAAIC,IAAM,OACR,SAAO,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,cAAc,CAClD,CAAC,EAGH,MAAM,EAAID,EAAO,mBACfA,EAAO,qBAAqBP,CAAQ,EACpC,EACF,EACA,GAAI,CAAC,EACH,SAAO,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,cAAc,CAClD,CAAC,EAGH,MAAMS,EAAIF,EAAO,mBACfA,EAAO,qBAAqBN,CAAQ,EACpC,EACF,EACA,OAAKQ,KAME,wBAAqB,CAC1B,KAAM,CACJ,EAAAD,EACA,EACA,EAAAC,CACF,CACF,CAAC,KAXQ,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,cAAc,CAClD,CAAC,CAUL,CAEA,OAAO,WACLL,EAC6C,CAC7C,MAAMG,EAAS,IAAI,aAAWH,EAAS,IAAI,EAC3C,GAAI,CAACA,EAAS,KACZ,SAAO,wBAAqB,CAC1B,MAAO,IAAI,yBACT,yCACF,CACF,CAAC,EAGH,MAAMM,EAAUH,EAAO,eAAeH,EAAS,KAAK,IAAI,EACxD,SAAO,wBAAqB,CAC1B,KAAM,CACJ,QAAAM,CACF,CACF,CAAC,CACH,CAEA,OAAO,sBACLN,EACwD,CACxD,MAAMG,EAAS,IAAI,aAAWH,EAAS,IAAI,EAErCO,EAAWJ,EAAO,qBAAqBL,CAAgB,EAC7D,GAAI,CAACS,EACH,SAAO,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,sBAAsB,CAC1D,CAAC,EAGH,MAAMC,EAAaL,EAAO,qBAAqBJ,CAAkB,EACjE,OAAKS,KAME,wBAAqB,CAC1B,KAAM,CACJ,SAAAD,EACA,WAAAC,CACF,CACF,CAAC,KAVQ,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,wBAAwB,CAC5D,CAAC,CASL,CACF",
|
|
6
|
+
"names": ["BtcCommandUtils_exports", "__export", "BtcCommandUtils", "__toCommonJS", "import_device_management_kit", "import_constants", "R_LENGTH", "S_LENGTH", "WALLET_ID_LENGTH", "WALLET_HMAC_LENGTH", "response", "DmkCommandUtils", "result", "parser", "v", "s", "address", "walletId", "walletHmac"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("@ledgerhq/device-management-kit"),
|
|
1
|
+
"use strict";var e=require("@ledgerhq/device-management-kit"),a=require("../utils/BtcCommandUtils");const x=new Uint8Array([27]),o=new Uint8Array([151,164,202,143,105,70,51,89,38,1,245,162,62,11,204,85,60,157,10,144,211,163,66,45,87,85,8,169,40,152,185,110]),i=new Uint8Array([105,80,208,46,116,233,193,2,193,100,162,37,83,48,130,202,189,216,144,239,196,99,246,127,96,206,254,140,63,135,207,206]),d=new Uint8Array([...x,...o,...i]);describe("BtcCommandUtils",()=>{describe("isSuccessResponse",()=>{it("should return true if statusCode is e000",()=>{const t=new e.ApduResponse({statusCode:Uint8Array.from([224,0]),data:Uint8Array.from([])}),s=a.BtcCommandUtils.isSuccessResponse(t);expect(s).toBe(!0)}),it("should return true if statusCode is 9000",()=>{const t=new e.ApduResponse({statusCode:Uint8Array.from([144,0]),data:Uint8Array.from([])}),s=a.BtcCommandUtils.isSuccessResponse(t);expect(s).toBe(!0)}),it("should return false if statusCode is not allowed",()=>{const t=new e.ApduResponse({statusCode:Uint8Array.from([67,4]),data:Uint8Array.from([])}),s=a.BtcCommandUtils.isSuccessResponse(t);expect(s).toBe(!1)})}),describe("isContinueResponse",()=>{it("should return true if statusCode is e000",()=>{const t=new e.ApduResponse({statusCode:Uint8Array.from([224,0]),data:Uint8Array.from([])}),s=a.BtcCommandUtils.isContinueResponse(t);expect(s).toBe(!0)}),it("should return false if statusCode is 9000",()=>{const t=new e.ApduResponse({statusCode:Uint8Array.from([144,0]),data:Uint8Array.from([])}),s=a.BtcCommandUtils.isContinueResponse(t);expect(s).toBe(!1)})}),describe("getSignature",()=>{it("should return an error if 'v' is missing",()=>{const t=(0,e.CommandResultFactory)({data:new e.ApduResponse({statusCode:new Uint8Array([144,0]),data:new Uint8Array([])})}),s=a.BtcCommandUtils.getSignature(t);expect(s).toStrictEqual((0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("V is missing")}))}),it("should return an error if 's' is missing",()=>{const t=(0,e.CommandResultFactory)({data:new e.ApduResponse({statusCode:new Uint8Array([144,0]),data:new Uint8Array([...x,...o])})}),s=a.BtcCommandUtils.getSignature(t);expect(s).toStrictEqual((0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("S is missing")}))}),it("should return a signature if v, r, and s are present",()=>{const t=(0,e.CommandResultFactory)({data:new e.ApduResponse({statusCode:new Uint8Array([144,0]),data:d})}),s=a.BtcCommandUtils.getSignature(t);expect(s).toStrictEqual((0,e.CommandResultFactory)({data:{v:27,r:"0x97a4ca8f694633592601f5a23e0bcc553c9d0a90d3a3422d575508a92898b96e",s:"0x6950d02e74e9c102c164a225533082cabdd890efc463f67f60cefe8c3f87cfce"}}))})}),describe("getAddress",()=>{it("should return an address from valid response data",()=>{const t=new TextEncoder().encode("bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq"),s=(0,e.CommandResultFactory)({data:new e.ApduResponse({statusCode:new Uint8Array([144,0]),data:t})}),r=a.BtcCommandUtils.getAddress(s);expect(r).toStrictEqual((0,e.CommandResultFactory)({data:{address:"bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq"}}))})}),describe("getWalletRegistration",()=>{const t=new Uint8Array([124,103,232,79,153,116,70,113,20,147,239,139,116,112,177,15,96,75,2,210,88,79,160,68,111,206,247,217,137,131,227,220]),s=new Uint8Array([29,21,14,212,37,168,113,165,202,126,44,85,219,27,50,149,193,253,151,20,127,208,167,177,136,212,50,127,75,167,64,42]);it("should return an error if wallet ID is missing",()=>{const r=(0,e.CommandResultFactory)({data:new e.ApduResponse({statusCode:new Uint8Array([144,0]),data:new Uint8Array([])})}),n=a.BtcCommandUtils.getWalletRegistration(r);expect(n).toStrictEqual((0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("Wallet ID is missing")}))}),it("should return an error if wallet HMAC is missing",()=>{const r=(0,e.CommandResultFactory)({data:new e.ApduResponse({statusCode:new Uint8Array([144,0]),data:t})}),n=a.BtcCommandUtils.getWalletRegistration(r);expect(n).toStrictEqual((0,e.CommandResultFactory)({error:new e.InvalidStatusWordError("Wallet HMAC is missing")}))}),it("should return wallet ID and HMAC from valid response",()=>{const r=(0,e.CommandResultFactory)({data:new e.ApduResponse({statusCode:new Uint8Array([144,0]),data:new Uint8Array([...t,...s])})}),n=a.BtcCommandUtils.getWalletRegistration(r);expect(n).toStrictEqual((0,e.CommandResultFactory)({data:{walletId:t,walletHmac:s}}))})})});
|
|
2
2
|
//# sourceMappingURL=BtcCommandUtils.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/internal/utils/BtcCommandUtils.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n type CommandSuccessResult,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { BtcCommandUtils } from \"@internal/utils/BtcCommandUtils\";\n\nconst SIGNATURE_V_RESPONSE = new Uint8Array([0x1b]);\nconst SIGNATURE_R_RESPONSE = new Uint8Array([\n 0x97, 0xa4, 0xca, 0x8f, 0x69, 0x46, 0x33, 0x59, 0x26, 0x01, 0xf5, 0xa2, 0x3e,\n 0x0b, 0xcc, 0x55, 0x3c, 0x9d, 0x0a, 0x90, 0xd3, 0xa3, 0x42, 0x2d, 0x57, 0x55,\n 0x08, 0xa9, 0x28, 0x98, 0xb9, 0x6e,\n]);\nconst SIGNATURE_S_RESPONSE = new Uint8Array([\n 0x69, 0x50, 0xd0, 0x2e, 0x74, 0xe9, 0xc1, 0x02, 0xc1, 0x64, 0xa2, 0x25, 0x53,\n 0x30, 0x82, 0xca, 0xbd, 0xd8, 0x90, 0xef, 0xc4, 0x63, 0xf6, 0x7f, 0x60, 0xce,\n 0xfe, 0x8c, 0x3f, 0x87, 0xcf, 0xce,\n]);\n\nconst SIGNATURE_RESPONSE = new Uint8Array([\n ...SIGNATURE_V_RESPONSE,\n ...SIGNATURE_R_RESPONSE,\n ...SIGNATURE_S_RESPONSE,\n]);\n\ndescribe(\"BtcCommandUtils\", () => {\n describe(\"isSuccessResponse\", () => {\n it(\"should return true if statusCode is e000\", () => {\n // given\n const apduResponse = new ApduResponse({\n statusCode: Uint8Array.from([0xe0, 0x00]),\n data: Uint8Array.from([]),\n });\n // when\n const result = BtcCommandUtils.isSuccessResponse(apduResponse);\n // then\n expect(result).toBe(true);\n });\n it(\"should return true if statusCode is 9000\", () => {\n // given\n const apduResponse = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: Uint8Array.from([]),\n });\n // when\n const result = BtcCommandUtils.isSuccessResponse(apduResponse);\n // then\n expect(result).toBe(true);\n });\n it(\"should return false if statusCode is not allowed\", () => {\n // given\n const apduResponse = new ApduResponse({\n statusCode: Uint8Array.from([0x43, 0x04]),\n data: Uint8Array.from([]),\n });\n // when\n const result = BtcCommandUtils.isSuccessResponse(apduResponse);\n // then\n expect(result).toBe(false);\n });\n });\n describe(\"isContinueResponse\", () => {\n it(\"should return true if statusCode is e000\", () => {\n const apduResponse = new ApduResponse({\n statusCode: Uint8Array.from([0xe0, 0x00]),\n data: Uint8Array.from([]),\n });\n // when\n const result = BtcCommandUtils.isContinueResponse(apduResponse);\n // then\n expect(result).toBe(true);\n });\n it(\"should return false if statusCode is 9000\", () => {\n const apduResponse = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: Uint8Array.from([]),\n });\n // when\n const result = BtcCommandUtils.isContinueResponse(apduResponse);\n // then\n expect(result).toBe(false);\n });\n });\n describe(\"getSignature\", () => {\n it(\"should return an error if 'v' is missing\", () => {\n // given\n const result = CommandResultFactory({\n data: new ApduResponse({\n statusCode: new Uint8Array([0x90, 0x00]),\n data: new Uint8Array([]),\n }),\n });\n\n // when\n const signature = BtcCommandUtils.getSignature(\n result as CommandSuccessResult<ApduResponse>,\n );\n\n // then\n expect(signature).toStrictEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"V is missing\"),\n }),\n );\n });\n\n it(\"should return an error if 's' is missing\", () => {\n // given\n const result = CommandResultFactory({\n data: new ApduResponse({\n statusCode: new Uint8Array([0x90, 0x00]),\n data: new Uint8Array([\n ...SIGNATURE_V_RESPONSE,\n ...SIGNATURE_R_RESPONSE,\n ]),\n }),\n });\n // when\n const signature = BtcCommandUtils.getSignature(\n result as CommandSuccessResult<ApduResponse>,\n );\n // then\n expect(signature).toStrictEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"S is missing\"),\n }),\n );\n });\n\n it(\"should return a signature if v, r, and s are present\", () => {\n // given\n const result = CommandResultFactory({\n data: new ApduResponse({\n statusCode: new Uint8Array([0x90, 0x00]),\n data: SIGNATURE_RESPONSE,\n }),\n });\n // when\n const signature = BtcCommandUtils.getSignature(\n result as CommandSuccessResult<ApduResponse>,\n );\n // then\n expect(signature).toStrictEqual(\n CommandResultFactory({\n data: {\n v: 27,\n r: \"0x97a4ca8f694633592601f5a23e0bcc553c9d0a90d3a3422d575508a92898b96e\",\n s: \"0x6950d02e74e9c102c164a225533082cabdd890efc463f67f60cefe8c3f87cfce\",\n },\n }),\n );\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "aAAA,IAAAA,EAKO,2CAEPC,EAAgC,2CAEhC,MAAMC,EAAuB,IAAI,WAAW,CAAC,EAAI,CAAC,EAC5CC,EAAuB,IAAI,WAAW,CAC1C,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,IAAM,IAAM,GACxE,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GACxE,EAAM,IAAM,GAAM,IAAM,IAAM,GAChC,CAAC,EACKC,EAAuB,IAAI,WAAW,CAC1C,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,GACxE,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IACxE,IAAM,IAAM,GAAM,IAAM,IAAM,GAChC,CAAC,EAEKC,EAAqB,IAAI,WAAW,CACxC,GAAGH,EACH,GAAGC,EACH,GAAGC,CACL,CAAC,EAED,SAAS,kBAAmB,IAAM,CAChC,SAAS,oBAAqB,IAAM,CAClC,GAAG,2CAA4C,IAAM,CAEnD,MAAME,EAAe,IAAI,eAAa,CACpC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,WAAW,KAAK,CAAC,CAAC,CAC1B,CAAC,EAEKC,EAAS,kBAAgB,kBAAkBD,CAAY,EAE7D,OAAOC,CAAM,EAAE,KAAK,EAAI,CAC1B,CAAC,EACD,GAAG,2CAA4C,IAAM,CAEnD,MAAMD,EAAe,IAAI,eAAa,CACpC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,WAAW,KAAK,CAAC,CAAC,CAC1B,CAAC,EAEKC,EAAS,kBAAgB,kBAAkBD,CAAY,EAE7D,OAAOC,CAAM,EAAE,KAAK,EAAI,CAC1B,CAAC,EACD,GAAG,mDAAoD,IAAM,CAE3D,MAAMD,EAAe,IAAI,eAAa,CACpC,WAAY,WAAW,KAAK,CAAC,GAAM,CAAI,CAAC,EACxC,KAAM,WAAW,KAAK,CAAC,CAAC,CAC1B,CAAC,EAEKC,EAAS,kBAAgB,kBAAkBD,CAAY,EAE7D,OAAOC,CAAM,EAAE,KAAK,EAAK,CAC3B,CAAC,CACH,CAAC,EACD,SAAS,qBAAsB,IAAM,CACnC,GAAG,2CAA4C,IAAM,CACnD,MAAMD,EAAe,IAAI,eAAa,CACpC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,WAAW,KAAK,CAAC,CAAC,CAC1B,CAAC,EAEKC,EAAS,kBAAgB,mBAAmBD,CAAY,EAE9D,OAAOC,CAAM,EAAE,KAAK,EAAI,CAC1B,CAAC,EACD,GAAG,4CAA6C,IAAM,CACpD,MAAMD,EAAe,IAAI,eAAa,CACpC,WAAY,WAAW,KAAK,CAAC,IAAM,CAAI,CAAC,EACxC,KAAM,WAAW,KAAK,CAAC,CAAC,CAC1B,CAAC,EAEKC,EAAS,kBAAgB,mBAAmBD,CAAY,EAE9D,OAAOC,CAAM,EAAE,KAAK,EAAK,CAC3B,CAAC,CACH,CAAC,EACD,SAAS,eAAgB,IAAM,CAC7B,GAAG,2CAA4C,IAAM,CAEnD,MAAMA,KAAS,wBAAqB,CAClC,KAAM,IAAI,eAAa,CACrB,WAAY,IAAI,WAAW,CAAC,IAAM,CAAI,CAAC,EACvC,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,CAAC,CACH,CAAC,EAGKC,EAAY,kBAAgB,aAChCD,CACF,EAGA,OAAOC,CAAS,EAAE,iBAChB,wBAAqB,CACnB,MAAO,IAAI,yBAAuB,cAAc,CAClD,CAAC,CACH,CACF,CAAC,EAED,GAAG,2CAA4C,IAAM,CAEnD,MAAMD,KAAS,wBAAqB,CAClC,KAAM,IAAI,eAAa,CACrB,WAAY,IAAI,WAAW,CAAC,IAAM,CAAI,CAAC,EACvC,KAAM,IAAI,WAAW,CACnB,GAAGL,EACH,GAAGC,CACL,CAAC,CACH,CAAC,CACH,CAAC,EAEKK,EAAY,kBAAgB,aAChCD,CACF,EAEA,OAAOC,CAAS,EAAE,iBAChB,wBAAqB,CACnB,MAAO,IAAI,yBAAuB,cAAc,CAClD,CAAC,CACH,CACF,CAAC,EAED,GAAG,uDAAwD,IAAM,CAE/D,MAAMD,KAAS,wBAAqB,CAClC,KAAM,IAAI,eAAa,CACrB,WAAY,IAAI,WAAW,CAAC,IAAM,CAAI,CAAC,EACvC,KAAMF,CACR,CAAC,CACH,CAAC,EAEKG,EAAY,kBAAgB,aAChCD,CACF,EAEA,OAAOC,CAAS,EAAE,iBAChB,wBAAqB,CACnB,KAAM,CACJ,EAAG,GACH,EAAG,qEACH,EAAG,oEACL,CACF,CAAC,CACH,CACF,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
-
"names": ["import_device_management_kit", "import_BtcCommandUtils", "SIGNATURE_V_RESPONSE", "SIGNATURE_R_RESPONSE", "SIGNATURE_S_RESPONSE", "SIGNATURE_RESPONSE", "apduResponse", "result", "signature"]
|
|
4
|
+
"sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n type CommandSuccessResult,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { BtcCommandUtils } from \"@internal/utils/BtcCommandUtils\";\n\nconst SIGNATURE_V_RESPONSE = new Uint8Array([0x1b]);\nconst SIGNATURE_R_RESPONSE = new Uint8Array([\n 0x97, 0xa4, 0xca, 0x8f, 0x69, 0x46, 0x33, 0x59, 0x26, 0x01, 0xf5, 0xa2, 0x3e,\n 0x0b, 0xcc, 0x55, 0x3c, 0x9d, 0x0a, 0x90, 0xd3, 0xa3, 0x42, 0x2d, 0x57, 0x55,\n 0x08, 0xa9, 0x28, 0x98, 0xb9, 0x6e,\n]);\nconst SIGNATURE_S_RESPONSE = new Uint8Array([\n 0x69, 0x50, 0xd0, 0x2e, 0x74, 0xe9, 0xc1, 0x02, 0xc1, 0x64, 0xa2, 0x25, 0x53,\n 0x30, 0x82, 0xca, 0xbd, 0xd8, 0x90, 0xef, 0xc4, 0x63, 0xf6, 0x7f, 0x60, 0xce,\n 0xfe, 0x8c, 0x3f, 0x87, 0xcf, 0xce,\n]);\n\nconst SIGNATURE_RESPONSE = new Uint8Array([\n ...SIGNATURE_V_RESPONSE,\n ...SIGNATURE_R_RESPONSE,\n ...SIGNATURE_S_RESPONSE,\n]);\n\ndescribe(\"BtcCommandUtils\", () => {\n describe(\"isSuccessResponse\", () => {\n it(\"should return true if statusCode is e000\", () => {\n // given\n const apduResponse = new ApduResponse({\n statusCode: Uint8Array.from([0xe0, 0x00]),\n data: Uint8Array.from([]),\n });\n // when\n const result = BtcCommandUtils.isSuccessResponse(apduResponse);\n // then\n expect(result).toBe(true);\n });\n it(\"should return true if statusCode is 9000\", () => {\n // given\n const apduResponse = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: Uint8Array.from([]),\n });\n // when\n const result = BtcCommandUtils.isSuccessResponse(apduResponse);\n // then\n expect(result).toBe(true);\n });\n it(\"should return false if statusCode is not allowed\", () => {\n // given\n const apduResponse = new ApduResponse({\n statusCode: Uint8Array.from([0x43, 0x04]),\n data: Uint8Array.from([]),\n });\n // when\n const result = BtcCommandUtils.isSuccessResponse(apduResponse);\n // then\n expect(result).toBe(false);\n });\n });\n describe(\"isContinueResponse\", () => {\n it(\"should return true if statusCode is e000\", () => {\n const apduResponse = new ApduResponse({\n statusCode: Uint8Array.from([0xe0, 0x00]),\n data: Uint8Array.from([]),\n });\n // when\n const result = BtcCommandUtils.isContinueResponse(apduResponse);\n // then\n expect(result).toBe(true);\n });\n it(\"should return false if statusCode is 9000\", () => {\n const apduResponse = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: Uint8Array.from([]),\n });\n // when\n const result = BtcCommandUtils.isContinueResponse(apduResponse);\n // then\n expect(result).toBe(false);\n });\n });\n describe(\"getSignature\", () => {\n it(\"should return an error if 'v' is missing\", () => {\n // given\n const result = CommandResultFactory({\n data: new ApduResponse({\n statusCode: new Uint8Array([0x90, 0x00]),\n data: new Uint8Array([]),\n }),\n });\n\n // when\n const signature = BtcCommandUtils.getSignature(\n result as CommandSuccessResult<ApduResponse>,\n );\n\n // then\n expect(signature).toStrictEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"V is missing\"),\n }),\n );\n });\n\n it(\"should return an error if 's' is missing\", () => {\n // given\n const result = CommandResultFactory({\n data: new ApduResponse({\n statusCode: new Uint8Array([0x90, 0x00]),\n data: new Uint8Array([\n ...SIGNATURE_V_RESPONSE,\n ...SIGNATURE_R_RESPONSE,\n ]),\n }),\n });\n // when\n const signature = BtcCommandUtils.getSignature(\n result as CommandSuccessResult<ApduResponse>,\n );\n // then\n expect(signature).toStrictEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"S is missing\"),\n }),\n );\n });\n\n it(\"should return a signature if v, r, and s are present\", () => {\n // given\n const result = CommandResultFactory({\n data: new ApduResponse({\n statusCode: new Uint8Array([0x90, 0x00]),\n data: SIGNATURE_RESPONSE,\n }),\n });\n // when\n const signature = BtcCommandUtils.getSignature(\n result as CommandSuccessResult<ApduResponse>,\n );\n // then\n expect(signature).toStrictEqual(\n CommandResultFactory({\n data: {\n v: 27,\n r: \"0x97a4ca8f694633592601f5a23e0bcc553c9d0a90d3a3422d575508a92898b96e\",\n s: \"0x6950d02e74e9c102c164a225533082cabdd890efc463f67f60cefe8c3f87cfce\",\n },\n }),\n );\n });\n });\n\n describe(\"getAddress\", () => {\n it(\"should return an address from valid response data\", () => {\n // given\n const addressBytes = new TextEncoder().encode(\n \"bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq\",\n );\n const result = CommandResultFactory({\n data: new ApduResponse({\n statusCode: new Uint8Array([0x90, 0x00]),\n data: addressBytes,\n }),\n });\n\n // when\n const address = BtcCommandUtils.getAddress(\n result as CommandSuccessResult<ApduResponse>,\n );\n\n // then\n expect(address).toStrictEqual(\n CommandResultFactory({\n data: {\n address: \"bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq\",\n },\n }),\n );\n });\n });\n\n describe(\"getWalletRegistration\", () => {\n const WALLET_ID = new Uint8Array([\n 0x7c, 0x67, 0xe8, 0x4f, 0x99, 0x74, 0x46, 0x71, 0x14, 0x93, 0xef, 0x8b,\n 0x74, 0x70, 0xb1, 0x0f, 0x60, 0x4b, 0x02, 0xd2, 0x58, 0x4f, 0xa0, 0x44,\n 0x6f, 0xce, 0xf7, 0xd9, 0x89, 0x83, 0xe3, 0xdc,\n ]);\n const WALLET_HMAC = new Uint8Array([\n 0x1d, 0x15, 0x0e, 0xd4, 0x25, 0xa8, 0x71, 0xa5, 0xca, 0x7e, 0x2c, 0x55,\n 0xdb, 0x1b, 0x32, 0x95, 0xc1, 0xfd, 0x97, 0x14, 0x7f, 0xd0, 0xa7, 0xb1,\n 0x88, 0xd4, 0x32, 0x7f, 0x4b, 0xa7, 0x40, 0x2a,\n ]);\n\n it(\"should return an error if wallet ID is missing\", () => {\n // given\n const result = CommandResultFactory({\n data: new ApduResponse({\n statusCode: new Uint8Array([0x90, 0x00]),\n data: new Uint8Array([]),\n }),\n });\n\n // when\n const registration = BtcCommandUtils.getWalletRegistration(\n result as CommandSuccessResult<ApduResponse>,\n );\n\n // then\n expect(registration).toStrictEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"Wallet ID is missing\"),\n }),\n );\n });\n\n it(\"should return an error if wallet HMAC is missing\", () => {\n // given\n const result = CommandResultFactory({\n data: new ApduResponse({\n statusCode: new Uint8Array([0x90, 0x00]),\n data: WALLET_ID, // Only 32 bytes, missing HMAC\n }),\n });\n\n // when\n const registration = BtcCommandUtils.getWalletRegistration(\n result as CommandSuccessResult<ApduResponse>,\n );\n\n // then\n expect(registration).toStrictEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"Wallet HMAC is missing\"),\n }),\n );\n });\n\n it(\"should return wallet ID and HMAC from valid response\", () => {\n // given\n const result = CommandResultFactory({\n data: new ApduResponse({\n statusCode: new Uint8Array([0x90, 0x00]),\n data: new Uint8Array([...WALLET_ID, ...WALLET_HMAC]),\n }),\n });\n\n // when\n const registration = BtcCommandUtils.getWalletRegistration(\n result as CommandSuccessResult<ApduResponse>,\n );\n\n // then\n expect(registration).toStrictEqual(\n CommandResultFactory({\n data: {\n walletId: WALLET_ID,\n walletHmac: WALLET_HMAC,\n },\n }),\n );\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_device_management_kit", "import_BtcCommandUtils", "SIGNATURE_V_RESPONSE", "SIGNATURE_R_RESPONSE", "SIGNATURE_S_RESPONSE", "SIGNATURE_RESPONSE", "apduResponse", "result", "signature", "addressBytes", "address", "WALLET_ID", "WALLET_HMAC", "registration"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var m=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var W=Object.prototype.hasOwnProperty;var x=(o,e)=>{for(var r in e)m(o,r,{get:e[r],enumerable:!0})},M=(o,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of h(e))!W.call(o,t)&&t!==r&&m(o,t,{get:()=>e[t],enumerable:!(n=d(e,t))||n.enumerable});return o};var g=o=>M(m({},"__esModule",{value:!0}),o),f=(o,e,r,n)=>{for(var t=n>1?void 0:n?d(e,r):e,s=o.length-1,i;s>=0;s--)(i=o[s])&&(t=(n?i(e,r,t):i(t))||t);return n&&t&&m(e,r,t),t},k=(o,e)=>(r,n)=>e(r,n,o);var b={};x(b,{DefaultWalletBuilder:()=>l});module.exports=g(b);var T=require("@ledgerhq/device-management-kit"),c=require("inversify"),y=require("../../../api/model/Wallet"),u=require("../../merkle-tree/di/merkleTreeTypes"),p=require("../../wallet/model/Wallet");let l=class{constructor(e){this.merkleTreeBuilder=e}fromRegisteredWallet(e){const r=new TextEncoder,n=e.keys.map(i=>r.encode(i)),t=this.merkleTreeBuilder.build(n),s=r.encode(e.descriptorTemplate);return new p.Wallet({name:e.name,descriptorTemplate:e.descriptorTemplate,keys:e.keys,hmac:e.hmac,keysTree:t,descriptorBuffer:s})}fromDefaultWallet(e,r,n){const i=`${`[${(0,T.bufferToHexaString)(e,!1)}/${n.derivationPath}]`}${r}`,a="",B=new Uint8Array(32).fill(0);return this.fromRegisteredWallet(new y.RegisteredWallet(a,n.template,[i],B))}fromWalletPolicy(e){const r=new TextEncoder,n=e.keys.map(a=>r.encode(a)),t=this.merkleTreeBuilder.build(n),s=r.encode(e.descriptorTemplate),i=new Uint8Array(32).fill(0);return new p.Wallet({name:e.name,descriptorTemplate:e.descriptorTemplate,keys:e.keys,hmac:i,keysTree:t,descriptorBuffer:s})}};l=f([(0,c.injectable)(),k(0,(0,c.inject)(u.merkleTreeTypes.MerkleTreeBuilder))],l);0&&(module.exports={DefaultWalletBuilder});
|
|
2
2
|
//# sourceMappingURL=DefaultWalletBuilder.js.map
|