@metamask-previews/eth-ledger-bridge-keyring 12.1.0-c42f34c → 12.1.0-e5bc458

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.
Files changed (54) hide show
  1. package/CHANGELOG.md +3 -4
  2. package/dist/index.cjs +0 -3
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.cts +0 -3
  5. package/dist/index.d.cts.map +1 -1
  6. package/dist/index.d.mts +0 -3
  7. package/dist/index.d.mts.map +1 -1
  8. package/dist/index.mjs +0 -3
  9. package/dist/index.mjs.map +1 -1
  10. package/dist/ledger-bridge.cjs.map +1 -1
  11. package/dist/ledger-bridge.d.cts +3 -3
  12. package/dist/ledger-bridge.d.cts.map +1 -1
  13. package/dist/ledger-bridge.d.mts +3 -3
  14. package/dist/ledger-bridge.d.mts.map +1 -1
  15. package/dist/ledger-bridge.mjs.map +1 -1
  16. package/dist/ledger-keyring.cjs +10 -8
  17. package/dist/ledger-keyring.cjs.map +1 -1
  18. package/dist/ledger-keyring.d.cts.map +1 -1
  19. package/dist/ledger-keyring.d.mts.map +1 -1
  20. package/dist/ledger-keyring.mjs +11 -9
  21. package/dist/ledger-keyring.mjs.map +1 -1
  22. package/package.json +4 -8
  23. package/dist/dmk-error-translator.cjs +0 -35
  24. package/dist/dmk-error-translator.cjs.map +0 -1
  25. package/dist/dmk-error-translator.d.cts +0 -12
  26. package/dist/dmk-error-translator.d.cts.map +0 -1
  27. package/dist/dmk-error-translator.d.mts +0 -12
  28. package/dist/dmk-error-translator.d.mts.map +0 -1
  29. package/dist/dmk-error-translator.mjs +0 -30
  30. package/dist/dmk-error-translator.mjs.map +0 -1
  31. package/dist/eth-get-app-configuration-command.cjs +0 -70
  32. package/dist/eth-get-app-configuration-command.cjs.map +0 -1
  33. package/dist/eth-get-app-configuration-command.d.cts +0 -17
  34. package/dist/eth-get-app-configuration-command.d.cts.map +0 -1
  35. package/dist/eth-get-app-configuration-command.d.mts +0 -17
  36. package/dist/eth-get-app-configuration-command.d.mts.map +0 -1
  37. package/dist/eth-get-app-configuration-command.mjs +0 -66
  38. package/dist/eth-get-app-configuration-command.mjs.map +0 -1
  39. package/dist/ledger-dmk-bridge.cjs +0 -363
  40. package/dist/ledger-dmk-bridge.cjs.map +0 -1
  41. package/dist/ledger-dmk-bridge.d.cts +0 -157
  42. package/dist/ledger-dmk-bridge.d.cts.map +0 -1
  43. package/dist/ledger-dmk-bridge.d.mts +0 -157
  44. package/dist/ledger-dmk-bridge.d.mts.map +0 -1
  45. package/dist/ledger-dmk-bridge.mjs +0 -359
  46. package/dist/ledger-dmk-bridge.mjs.map +0 -1
  47. package/dist/ledger-dmk-transport-middleware.cjs +0 -100
  48. package/dist/ledger-dmk-transport-middleware.cjs.map +0 -1
  49. package/dist/ledger-dmk-transport-middleware.d.cts +0 -61
  50. package/dist/ledger-dmk-transport-middleware.d.cts.map +0 -1
  51. package/dist/ledger-dmk-transport-middleware.d.mts +0 -61
  52. package/dist/ledger-dmk-transport-middleware.d.mts.map +0 -1
  53. package/dist/ledger-dmk-transport-middleware.mjs +0 -96
  54. package/dist/ledger-dmk-transport-middleware.mjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -9,10 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
  ### Added
11
11
 
12
- - Add `signEip7702Authorization` method to `LedgerKeyring` for signing EIP-7702 delegation authorizations via Ledger device ([#473](https://github.com/MetaMask/accounts/pull/473))
13
- - Add `deviceSignDelegationAuthorization` to `LedgerBridge` interface.
14
- - Implement in `LedgerDMKBridge` using the DMK signer kit's `signDelegationAuthorization`.
15
- - Add `eth_signEip7702Authorization` to v2 `LedgerKeyring` supported methods.
12
+ - Add EIP-7702 authorization signing to the Ledger keyring ([#564](https://github.com/MetaMask/accounts/pull/564))
13
+ - Not yet functional: both iframe and mobile bridges throw until DMK support lands.
14
+ - Fixes hex `v` parsing (`'1b'`) for personal_sign and typed data.
16
15
 
17
16
  ### Changed
18
17
 
package/dist/index.cjs CHANGED
@@ -17,13 +17,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./ledger-keyring.cjs"), exports);
18
18
  __exportStar(require("./ledger-iframe-bridge.cjs"), exports);
19
19
  __exportStar(require("./ledger-mobile-bridge.cjs"), exports);
20
- __exportStar(require("./ledger-dmk-bridge.cjs"), exports);
21
- __exportStar(require("./ledger-dmk-transport-middleware.cjs"), exports);
22
20
  __exportStar(require("./ledger-transport-middleware.cjs"), exports);
23
21
  __exportStar(require("./ledger-hw-app.cjs"), exports);
24
22
  __exportStar(require("./errors.cjs"), exports);
25
23
  __exportStar(require("./ledger-error-handler.cjs"), exports);
26
24
  __exportStar(require("./constants.cjs"), exports);
27
25
  __exportStar(require("./utils.cjs"), exports);
28
- __exportStar(require("./dmk-error-translator.cjs"), exports);
29
26
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAiC;AACjC,6DAAuC;AACvC,6DAAuC;AACvC,0DAAoC;AACpC,wEAAkD;AAElD,oEAA8C;AAE9C,sDAAgC;AAChC,+CAAyB;AACzB,6DAAuC;AACvC,kDAA4B;AAC5B,8CAAwB;AACxB,6DAAuC","sourcesContent":["export * from './ledger-keyring';\nexport * from './ledger-iframe-bridge';\nexport * from './ledger-mobile-bridge';\nexport * from './ledger-dmk-bridge';\nexport * from './ledger-dmk-transport-middleware';\nexport type * from './ledger-bridge';\nexport * from './ledger-transport-middleware';\nexport type * from './type';\nexport * from './ledger-hw-app';\nexport * from './errors';\nexport * from './ledger-error-handler';\nexport * from './constants';\nexport * from './utils';\nexport * from './dmk-error-translator';\n"]}
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAiC;AACjC,6DAAuC;AACvC,6DAAuC;AAEvC,oEAA8C;AAE9C,sDAAgC;AAChC,+CAAyB;AACzB,6DAAuC;AACvC,kDAA4B;AAC5B,8CAAwB","sourcesContent":["export * from './ledger-keyring';\nexport * from './ledger-iframe-bridge';\nexport * from './ledger-mobile-bridge';\nexport type * from './ledger-bridge';\nexport * from './ledger-transport-middleware';\nexport type * from './type';\nexport * from './ledger-hw-app';\nexport * from './errors';\nexport * from './ledger-error-handler';\nexport * from './constants';\nexport * from './utils';\n"]}
package/dist/index.d.cts CHANGED
@@ -1,8 +1,6 @@
1
1
  export * from "./ledger-keyring.cjs";
2
2
  export * from "./ledger-iframe-bridge.cjs";
3
3
  export * from "./ledger-mobile-bridge.cjs";
4
- export * from "./ledger-dmk-bridge.cjs";
5
- export * from "./ledger-dmk-transport-middleware.cjs";
6
4
  export type * from "./ledger-bridge.cjs";
7
5
  export * from "./ledger-transport-middleware.cjs";
8
6
  export type * from "./type.cjs";
@@ -11,5 +9,4 @@ export * from "./errors.cjs";
11
9
  export * from "./ledger-error-handler.cjs";
12
10
  export * from "./constants.cjs";
13
11
  export * from "./utils.cjs";
14
- export * from "./dmk-error-translator.cjs";
15
12
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAiC;AACjC,2CAAuC;AACvC,2CAAuC;AACvC,wCAAoC;AACpC,sDAAkD;AAClD,yCAAqC;AACrC,kDAA8C;AAC9C,gCAA4B;AAC5B,oCAAgC;AAChC,6BAAyB;AACzB,2CAAuC;AACvC,gCAA4B;AAC5B,4BAAwB;AACxB,2CAAuC"}
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAiC;AACjC,2CAAuC;AACvC,2CAAuC;AACvC,yCAAqC;AACrC,kDAA8C;AAC9C,gCAA4B;AAC5B,oCAAgC;AAChC,6BAAyB;AACzB,2CAAuC;AACvC,gCAA4B;AAC5B,4BAAwB"}
package/dist/index.d.mts CHANGED
@@ -1,8 +1,6 @@
1
1
  export * from "./ledger-keyring.mjs";
2
2
  export * from "./ledger-iframe-bridge.mjs";
3
3
  export * from "./ledger-mobile-bridge.mjs";
4
- export * from "./ledger-dmk-bridge.mjs";
5
- export * from "./ledger-dmk-transport-middleware.mjs";
6
4
  export type * from "./ledger-bridge.mjs";
7
5
  export * from "./ledger-transport-middleware.mjs";
8
6
  export type * from "./type.mjs";
@@ -11,5 +9,4 @@ export * from "./errors.mjs";
11
9
  export * from "./ledger-error-handler.mjs";
12
10
  export * from "./constants.mjs";
13
11
  export * from "./utils.mjs";
14
- export * from "./dmk-error-translator.mjs";
15
12
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAiC;AACjC,2CAAuC;AACvC,2CAAuC;AACvC,wCAAoC;AACpC,sDAAkD;AAClD,yCAAqC;AACrC,kDAA8C;AAC9C,gCAA4B;AAC5B,oCAAgC;AAChC,6BAAyB;AACzB,2CAAuC;AACvC,gCAA4B;AAC5B,4BAAwB;AACxB,2CAAuC"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAiC;AACjC,2CAAuC;AACvC,2CAAuC;AACvC,yCAAqC;AACrC,kDAA8C;AAC9C,gCAA4B;AAC5B,oCAAgC;AAChC,6BAAyB;AACzB,2CAAuC;AACvC,gCAA4B;AAC5B,4BAAwB"}
package/dist/index.mjs CHANGED
@@ -1,13 +1,10 @@
1
1
  export * from "./ledger-keyring.mjs";
2
2
  export * from "./ledger-iframe-bridge.mjs";
3
3
  export * from "./ledger-mobile-bridge.mjs";
4
- export * from "./ledger-dmk-bridge.mjs";
5
- export * from "./ledger-dmk-transport-middleware.mjs";
6
4
  export * from "./ledger-transport-middleware.mjs";
7
5
  export * from "./ledger-hw-app.mjs";
8
6
  export * from "./errors.mjs";
9
7
  export * from "./ledger-error-handler.mjs";
10
8
  export * from "./constants.mjs";
11
9
  export * from "./utils.mjs";
12
- export * from "./dmk-error-translator.mjs";
13
10
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAiC;AACjC,2CAAuC;AACvC,2CAAuC;AACvC,wCAAoC;AACpC,sDAAkD;AAElD,kDAA8C;AAE9C,oCAAgC;AAChC,6BAAyB;AACzB,2CAAuC;AACvC,gCAA4B;AAC5B,4BAAwB;AACxB,2CAAuC","sourcesContent":["export * from './ledger-keyring';\nexport * from './ledger-iframe-bridge';\nexport * from './ledger-mobile-bridge';\nexport * from './ledger-dmk-bridge';\nexport * from './ledger-dmk-transport-middleware';\nexport type * from './ledger-bridge';\nexport * from './ledger-transport-middleware';\nexport type * from './type';\nexport * from './ledger-hw-app';\nexport * from './errors';\nexport * from './ledger-error-handler';\nexport * from './constants';\nexport * from './utils';\nexport * from './dmk-error-translator';\n"]}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAiC;AACjC,2CAAuC;AACvC,2CAAuC;AAEvC,kDAA8C;AAE9C,oCAAgC;AAChC,6BAAyB;AACzB,2CAAuC;AACvC,gCAA4B;AAC5B,4BAAwB","sourcesContent":["export * from './ledger-keyring';\nexport * from './ledger-iframe-bridge';\nexport * from './ledger-mobile-bridge';\nexport type * from './ledger-bridge';\nexport * from './ledger-transport-middleware';\nexport type * from './type';\nexport * from './ledger-hw-app';\nexport * from './errors';\nexport * from './ledger-error-handler';\nexport * from './constants';\nexport * from './utils';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ledger-bridge.cjs","sourceRoot":"","sources":["../src/ledger-bridge.ts"],"names":[],"mappings":"","sourcesContent":["import type LedgerHwAppEth from '@ledgerhq/hw-app-eth';\nimport type Transport from '@ledgerhq/hw-transport';\nimport type { EIP712Message } from '@ledgerhq/types-live';\n\nexport type GetPublicKeyParams = { hdPath: string };\nexport type GetPublicKeyResponse = Awaited<\n ReturnType<LedgerHwAppEth['getAddress']>\n>;\n\nexport type LedgerSignTransactionParams = { hdPath: string; tx: string };\nexport type LedgerSignTransactionResponse = Awaited<\n ReturnType<LedgerHwAppEth['signTransaction']>\n>;\n\nexport type LedgerSignMessageParams = { hdPath: string; message: string };\nexport type LedgerSignMessageResponse = Awaited<\n ReturnType<LedgerHwAppEth['signPersonalMessage']>\n>;\n\nexport type LedgerSignTypedDataParams = {\n hdPath: string;\n message: EIP712Message;\n};\nexport type LedgerSignTypedDataResponse = Awaited<\n ReturnType<LedgerHwAppEth['signEIP712HashedMessage']>\n>;\n\nexport type LedgerSignDelegationAuthorizationParams = {\n hdPath: string;\n chainId: number;\n contractAddress: string;\n nonce: number;\n};\n\nexport type LedgerSignDelegationAuthorizationResponse = {\n v: string;\n r: string;\n s: string;\n};\n\nexport type GetAppNameAndVersionResponse = {\n appName: string;\n version: string;\n};\n\nexport type AppConfigurationResponse = {\n arbitraryDataEnabled: number; // this is the blind signing support\n erc20ProvisioningNecessary: number;\n starkEnabled: number;\n starkv2Supported: number;\n version: string;\n};\n\nexport type LedgerBridgeOptions = Record<string, unknown>;\n\nexport type LedgerBridge<T extends LedgerBridgeOptions> = {\n isDeviceConnected: boolean;\n\n init(): Promise<void>;\n\n destroy(): Promise<void>;\n\n /**\n * Method to get the current configuration of the ledger bridge keyring.\n */\n getOptions(): Promise<T>;\n\n /**\n * Method to set the current configuration of the ledger bridge keyring.\n *\n * @param opts - An object contains configuration of the bridge.\n */\n setOptions(opts: T): Promise<void>;\n\n attemptMakeApp(): Promise<boolean>;\n\n updateTransportMethod(transportType: string | Transport): Promise<boolean>;\n\n getPublicKey(params: GetPublicKeyParams): Promise<GetPublicKeyResponse>;\n\n deviceSignTransaction(\n params: LedgerSignTransactionParams,\n ): Promise<LedgerSignTransactionResponse>;\n\n deviceSignMessage(\n params: LedgerSignMessageParams,\n ): Promise<LedgerSignMessageResponse>;\n\n deviceSignTypedData(\n params: LedgerSignTypedDataParams,\n ): Promise<LedgerSignTypedDataResponse>;\n\n deviceSignDelegationAuthorization(\n params: LedgerSignDelegationAuthorizationParams,\n ): Promise<LedgerSignDelegationAuthorizationResponse>;\n\n /**\n * Method to retrieve the name and version of the running application on the Ledger device.\n *\n * @returns An object containing appName and version.\n */\n getAppNameAndVersion(): Promise<GetAppNameAndVersionResponse>;\n\n /**\n * Method to retrieve the configuration of the running application on the Ledger device.\n *\n * @returns An object containing the configuration of the running application.\n */\n getAppConfiguration(): Promise<AppConfigurationResponse>;\n};\n"]}
1
+ {"version":3,"file":"ledger-bridge.cjs","sourceRoot":"","sources":["../src/ledger-bridge.ts"],"names":[],"mappings":"","sourcesContent":["import type LedgerHwAppEth from '@ledgerhq/hw-app-eth';\nimport type Transport from '@ledgerhq/hw-transport';\nimport type { EIP712Message } from '@ledgerhq/types-live';\n\nexport type GetPublicKeyParams = { hdPath: string };\nexport type GetPublicKeyResponse = Awaited<\n ReturnType<LedgerHwAppEth['getAddress']>\n>;\n\nexport type LedgerSignTransactionParams = { hdPath: string; tx: string };\nexport type LedgerSignTransactionResponse = Awaited<\n ReturnType<LedgerHwAppEth['signTransaction']>\n>;\n\nexport type LedgerSignMessageParams = { hdPath: string; message: string };\nexport type LedgerSignMessageResponse = Awaited<\n ReturnType<LedgerHwAppEth['signPersonalMessage']>\n>;\n\nexport type LedgerSignTypedDataParams = {\n hdPath: string;\n message: EIP712Message;\n};\nexport type LedgerSignTypedDataResponse = Awaited<\n ReturnType<LedgerHwAppEth['signEIP712HashedMessage']>\n>;\n\nexport type LedgerSignDelegationAuthorizationParams = {\n hdPath: string;\n chainId: number;\n contractAddress: string;\n nonce: number;\n};\n\n// TODO: Replace with 7702 return type\nexport type LedgerSignDelegationAuthorizationResponse = Awaited<{\n s: string;\n v: string;\n r: string;\n}>;\n\nexport type GetAppNameAndVersionResponse = {\n appName: string;\n version: string;\n};\n\nexport type AppConfigurationResponse = {\n arbitraryDataEnabled: number; // this is the blind signing support\n erc20ProvisioningNecessary: number;\n starkEnabled: number;\n starkv2Supported: number;\n version: string;\n};\n\nexport type LedgerBridgeOptions = Record<string, unknown>;\n\nexport type LedgerBridge<T extends LedgerBridgeOptions> = {\n isDeviceConnected: boolean;\n\n init(): Promise<void>;\n\n destroy(): Promise<void>;\n\n /**\n * Method to get the current configuration of the ledger bridge keyring.\n */\n getOptions(): Promise<T>;\n\n /**\n * Method to set the current configuration of the ledger bridge keyring.\n *\n * @param opts - An object contains configuration of the bridge.\n */\n setOptions(opts: T): Promise<void>;\n\n attemptMakeApp(): Promise<boolean>;\n\n updateTransportMethod(transportType: string | Transport): Promise<boolean>;\n\n getPublicKey(params: GetPublicKeyParams): Promise<GetPublicKeyResponse>;\n\n deviceSignTransaction(\n params: LedgerSignTransactionParams,\n ): Promise<LedgerSignTransactionResponse>;\n\n deviceSignMessage(\n params: LedgerSignMessageParams,\n ): Promise<LedgerSignMessageResponse>;\n\n deviceSignTypedData(\n params: LedgerSignTypedDataParams,\n ): Promise<LedgerSignTypedDataResponse>;\n\n deviceSignDelegationAuthorization(\n params: LedgerSignDelegationAuthorizationParams,\n ): Promise<LedgerSignDelegationAuthorizationResponse>;\n\n /**\n * Method to retrieve the name and version of the running application on the Ledger device.\n *\n * @returns An object containing appName and version.\n */\n getAppNameAndVersion(): Promise<GetAppNameAndVersionResponse>;\n\n /**\n * Method to retrieve the configuration of the running application on the Ledger device.\n *\n * @returns An object containing the configuration of the running application.\n */\n getAppConfiguration(): Promise<AppConfigurationResponse>;\n};\n"]}
@@ -26,11 +26,11 @@ export type LedgerSignDelegationAuthorizationParams = {
26
26
  contractAddress: string;
27
27
  nonce: number;
28
28
  };
29
- export type LedgerSignDelegationAuthorizationResponse = {
29
+ export type LedgerSignDelegationAuthorizationResponse = Awaited<{
30
+ s: string;
30
31
  v: string;
31
32
  r: string;
32
- s: string;
33
- };
33
+ }>;
34
34
  export type GetAppNameAndVersionResponse = {
35
35
  appName: string;
36
36
  version: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ledger-bridge.d.cts","sourceRoot":"","sources":["../src/ledger-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ledger-bridge.d.cts","sourceRoot":"","sources":["../src/ledger-bridge.ts"],"names":[],"mappings":"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"}
@@ -26,11 +26,11 @@ export type LedgerSignDelegationAuthorizationParams = {
26
26
  contractAddress: string;
27
27
  nonce: number;
28
28
  };
29
- export type LedgerSignDelegationAuthorizationResponse = {
29
+ export type LedgerSignDelegationAuthorizationResponse = Awaited<{
30
+ s: string;
30
31
  v: string;
31
32
  r: string;
32
- s: string;
33
- };
33
+ }>;
34
34
  export type GetAppNameAndVersionResponse = {
35
35
  appName: string;
36
36
  version: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ledger-bridge.d.mts","sourceRoot":"","sources":["../src/ledger-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ledger-bridge.d.mts","sourceRoot":"","sources":["../src/ledger-bridge.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ledger-bridge.mjs","sourceRoot":"","sources":["../src/ledger-bridge.ts"],"names":[],"mappings":"","sourcesContent":["import type LedgerHwAppEth from '@ledgerhq/hw-app-eth';\nimport type Transport from '@ledgerhq/hw-transport';\nimport type { EIP712Message } from '@ledgerhq/types-live';\n\nexport type GetPublicKeyParams = { hdPath: string };\nexport type GetPublicKeyResponse = Awaited<\n ReturnType<LedgerHwAppEth['getAddress']>\n>;\n\nexport type LedgerSignTransactionParams = { hdPath: string; tx: string };\nexport type LedgerSignTransactionResponse = Awaited<\n ReturnType<LedgerHwAppEth['signTransaction']>\n>;\n\nexport type LedgerSignMessageParams = { hdPath: string; message: string };\nexport type LedgerSignMessageResponse = Awaited<\n ReturnType<LedgerHwAppEth['signPersonalMessage']>\n>;\n\nexport type LedgerSignTypedDataParams = {\n hdPath: string;\n message: EIP712Message;\n};\nexport type LedgerSignTypedDataResponse = Awaited<\n ReturnType<LedgerHwAppEth['signEIP712HashedMessage']>\n>;\n\nexport type LedgerSignDelegationAuthorizationParams = {\n hdPath: string;\n chainId: number;\n contractAddress: string;\n nonce: number;\n};\n\nexport type LedgerSignDelegationAuthorizationResponse = {\n v: string;\n r: string;\n s: string;\n};\n\nexport type GetAppNameAndVersionResponse = {\n appName: string;\n version: string;\n};\n\nexport type AppConfigurationResponse = {\n arbitraryDataEnabled: number; // this is the blind signing support\n erc20ProvisioningNecessary: number;\n starkEnabled: number;\n starkv2Supported: number;\n version: string;\n};\n\nexport type LedgerBridgeOptions = Record<string, unknown>;\n\nexport type LedgerBridge<T extends LedgerBridgeOptions> = {\n isDeviceConnected: boolean;\n\n init(): Promise<void>;\n\n destroy(): Promise<void>;\n\n /**\n * Method to get the current configuration of the ledger bridge keyring.\n */\n getOptions(): Promise<T>;\n\n /**\n * Method to set the current configuration of the ledger bridge keyring.\n *\n * @param opts - An object contains configuration of the bridge.\n */\n setOptions(opts: T): Promise<void>;\n\n attemptMakeApp(): Promise<boolean>;\n\n updateTransportMethod(transportType: string | Transport): Promise<boolean>;\n\n getPublicKey(params: GetPublicKeyParams): Promise<GetPublicKeyResponse>;\n\n deviceSignTransaction(\n params: LedgerSignTransactionParams,\n ): Promise<LedgerSignTransactionResponse>;\n\n deviceSignMessage(\n params: LedgerSignMessageParams,\n ): Promise<LedgerSignMessageResponse>;\n\n deviceSignTypedData(\n params: LedgerSignTypedDataParams,\n ): Promise<LedgerSignTypedDataResponse>;\n\n deviceSignDelegationAuthorization(\n params: LedgerSignDelegationAuthorizationParams,\n ): Promise<LedgerSignDelegationAuthorizationResponse>;\n\n /**\n * Method to retrieve the name and version of the running application on the Ledger device.\n *\n * @returns An object containing appName and version.\n */\n getAppNameAndVersion(): Promise<GetAppNameAndVersionResponse>;\n\n /**\n * Method to retrieve the configuration of the running application on the Ledger device.\n *\n * @returns An object containing the configuration of the running application.\n */\n getAppConfiguration(): Promise<AppConfigurationResponse>;\n};\n"]}
1
+ {"version":3,"file":"ledger-bridge.mjs","sourceRoot":"","sources":["../src/ledger-bridge.ts"],"names":[],"mappings":"","sourcesContent":["import type LedgerHwAppEth from '@ledgerhq/hw-app-eth';\nimport type Transport from '@ledgerhq/hw-transport';\nimport type { EIP712Message } from '@ledgerhq/types-live';\n\nexport type GetPublicKeyParams = { hdPath: string };\nexport type GetPublicKeyResponse = Awaited<\n ReturnType<LedgerHwAppEth['getAddress']>\n>;\n\nexport type LedgerSignTransactionParams = { hdPath: string; tx: string };\nexport type LedgerSignTransactionResponse = Awaited<\n ReturnType<LedgerHwAppEth['signTransaction']>\n>;\n\nexport type LedgerSignMessageParams = { hdPath: string; message: string };\nexport type LedgerSignMessageResponse = Awaited<\n ReturnType<LedgerHwAppEth['signPersonalMessage']>\n>;\n\nexport type LedgerSignTypedDataParams = {\n hdPath: string;\n message: EIP712Message;\n};\nexport type LedgerSignTypedDataResponse = Awaited<\n ReturnType<LedgerHwAppEth['signEIP712HashedMessage']>\n>;\n\nexport type LedgerSignDelegationAuthorizationParams = {\n hdPath: string;\n chainId: number;\n contractAddress: string;\n nonce: number;\n};\n\n// TODO: Replace with 7702 return type\nexport type LedgerSignDelegationAuthorizationResponse = Awaited<{\n s: string;\n v: string;\n r: string;\n}>;\n\nexport type GetAppNameAndVersionResponse = {\n appName: string;\n version: string;\n};\n\nexport type AppConfigurationResponse = {\n arbitraryDataEnabled: number; // this is the blind signing support\n erc20ProvisioningNecessary: number;\n starkEnabled: number;\n starkv2Supported: number;\n version: string;\n};\n\nexport type LedgerBridgeOptions = Record<string, unknown>;\n\nexport type LedgerBridge<T extends LedgerBridgeOptions> = {\n isDeviceConnected: boolean;\n\n init(): Promise<void>;\n\n destroy(): Promise<void>;\n\n /**\n * Method to get the current configuration of the ledger bridge keyring.\n */\n getOptions(): Promise<T>;\n\n /**\n * Method to set the current configuration of the ledger bridge keyring.\n *\n * @param opts - An object contains configuration of the bridge.\n */\n setOptions(opts: T): Promise<void>;\n\n attemptMakeApp(): Promise<boolean>;\n\n updateTransportMethod(transportType: string | Transport): Promise<boolean>;\n\n getPublicKey(params: GetPublicKeyParams): Promise<GetPublicKeyResponse>;\n\n deviceSignTransaction(\n params: LedgerSignTransactionParams,\n ): Promise<LedgerSignTransactionResponse>;\n\n deviceSignMessage(\n params: LedgerSignMessageParams,\n ): Promise<LedgerSignMessageResponse>;\n\n deviceSignTypedData(\n params: LedgerSignTypedDataParams,\n ): Promise<LedgerSignTypedDataResponse>;\n\n deviceSignDelegationAuthorization(\n params: LedgerSignDelegationAuthorizationParams,\n ): Promise<LedgerSignDelegationAuthorizationResponse>;\n\n /**\n * Method to retrieve the name and version of the running application on the Ledger device.\n *\n * @returns An object containing appName and version.\n */\n getAppNameAndVersion(): Promise<GetAppNameAndVersionResponse>;\n\n /**\n * Method to retrieve the configuration of the running application on the Ledger device.\n *\n * @returns An object containing the configuration of the running application.\n */\n getAppConfiguration(): Promise<AppConfigurationResponse>;\n};\n"]}
@@ -372,7 +372,7 @@ class LedgerKeyring {
372
372
  const [chainId, contractAddress, nonce] = authorization;
373
373
  const hdPath = await this.unlockAccountByAddress(withAccount);
374
374
  if (!hdPath) {
375
- throw new Error('Ledger: Unknown error while signing EIP-7702 authorization');
375
+ throw new Error('Ledger: Missing hdPath while signing EIP-7702 authorization');
376
376
  }
377
377
  let payload;
378
378
  try {
@@ -384,7 +384,7 @@ class LedgerKeyring {
384
384
  });
385
385
  }
386
386
  catch (error) {
387
- (0, ledger_error_handler_1.handleLedgerTransportError)(error, 'Ledger: Unknown error while signing EIP-7702 authorization');
387
+ (0, ledger_error_handler_1.handleLedgerTransportError)(error, 'Ledger: Error while signing EIP-7702 authorization');
388
388
  }
389
389
  // EIP-7702 authorization signatures use yParity (0 or 1), unlike
390
390
  // EIP-191/EIP-712 signatures which use the legacy format (27 or 28).
@@ -549,16 +549,18 @@ async function _LedgerKeyring_getPage(increment) {
549
549
  }
550
550
  const value = String(recoveryParam).trim();
551
551
  if (value.startsWith('0x') || value.startsWith('0X')) {
552
- // `hexToNumber` validates the format (throws on `'0x'`, `'0xZZ'`, etc.)
553
- // and asserts the result is a safe integer.
552
+ if (!(0, utils_1.isStrictHexString)(value)) {
553
+ throw new Error(`Invalid hex recovery parameter: "${recoveryParam}"`);
554
+ }
554
555
  return (0, utils_1.hexToNumber)(value);
555
556
  }
556
- // Unprefixed: detect bare hex by the presence of hex letters, else treat
557
- // as decimal. Note that a bare `'100'` is ambiguous (decimal 100 vs hex
558
- // 256); we default to decimal as the safer interpretation.
557
+ // If the string contains hex letters (a-f), interpret it as hex;
558
+ // otherwise interpret it as a regular decimal number.
559
559
  const radix = /[a-f]/iu.test(value) ? 16 : 10;
560
560
  const result = parseInt(value, radix);
561
- (0, utils_1.assert)(!Number.isNaN(result), `Invalid recovery parameter: "${recoveryParam}"`);
561
+ if (Number.isNaN(result)) {
562
+ throw new Error(`Invalid recovery parameter: "${recoveryParam}"`);
563
+ }
562
564
  return result;
563
565
  }, _LedgerKeyring_normalizeRecoveryParam = function _LedgerKeyring_normalizeRecoveryParam(recoveryParam) {
564
566
  if (recoveryParam === 0 || recoveryParam === 1) {
@@ -1 +1 @@
1
- {"version":3,"file":"ledger-keyring.cjs","sourceRoot":"","sources":["../src/ledger-keyring.ts"],"names":[],"mappings":"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","sourcesContent":["import { RLP } from '@ethereumjs/rlp';\nimport { TransactionFactory, TypedTxData } from '@ethereumjs/tx';\nimport type { TypedTransaction } from '@ethereumjs/tx';\nimport { publicToAddress } from '@ethereumjs/util';\nimport type { MessageTypes, TypedMessage } from '@metamask/eth-sig-util';\nimport {\n recoverEIP7702Authorization,\n recoverPersonalSignature,\n recoverTypedSignature,\n SignTypedDataVersion,\n TypedDataUtils,\n} from '@metamask/eth-sig-util';\nimport type { Keyring } from '@metamask/keyring-utils';\nimport {\n add0x,\n assert,\n bytesToHex,\n getChecksumAddress,\n Hex,\n hexToNumber,\n remove0x,\n} from '@metamask/utils';\nimport { Buffer } from 'buffer';\nimport type OldEthJsTransaction from 'ethereumjs-tx';\nimport HDKey from 'hdkey';\n\nimport {\n AppConfigurationResponse,\n GetAppNameAndVersionResponse,\n LedgerBridge,\n LedgerBridgeOptions,\n} from './ledger-bridge';\nimport { handleLedgerTransportError } from './ledger-error-handler';\n\nconst pathBase = 'm';\nconst hdPathString = `${pathBase}/44'/60'/0'`;\nconst keyringType = 'Ledger Hardware';\n\n// This number causes one of our failing tests to run very slowly, as the for loop needs to iterate 1000 times.\nconst MAX_INDEX = 1000;\n\nenum NetworkApiUrls {\n Ropsten = 'https://api-ropsten.etherscan.io',\n Kovan = 'https://api-kovan.etherscan.io',\n Rinkeby = 'https://api-rinkeby.etherscan.io',\n Mainnet = `https://api.etherscan.io`,\n}\n\ntype SignTransactionPayload = Awaited<\n ReturnType<LedgerBridge<LedgerBridgeOptions>['deviceSignTransaction']>\n>;\n\nexport type AccountPageEntry = {\n address: string;\n balance: number | null;\n index: number;\n};\n\nexport type AccountPage = AccountPageEntry[];\n\nexport type AccountDetails = {\n index?: number;\n bip44?: boolean;\n hdPath?: string;\n};\n\nexport type LedgerBridgeKeyringOptions = {\n hdPath: string;\n accounts: Hex[];\n deviceId: string;\n accountDetails: Readonly<Record<Hex, AccountDetails>>;\n accountIndexes: Readonly<Record<Hex, number>>;\n implementFullBIP44: boolean;\n};\n\nexport type LedgerKeyringSerializedState = Partial<LedgerBridgeKeyringOptions>;\n\n/**\n * Check if the given transaction is made with ethereumjs-tx or @ethereumjs/tx\n *\n * Transactions built with older versions of ethereumjs-tx have a\n * getChainId method that newer versions do not.\n * Older versions are mutable\n * while newer versions default to being immutable.\n * Expected shape and type\n * of data for v, r and s differ (Buffer (old) vs BN (new)).\n *\n * @param tx - Transaction to check, instance of either ethereumjs-tx or @ethereumjs/tx.\n * @returns Returns `true` if tx is an old-style ethereumjs-tx transaction.\n */\nfunction isOldStyleEthereumjsTx(\n tx: TypedTransaction | OldEthJsTransaction,\n): tx is OldEthJsTransaction {\n return 'getChainId' in tx && typeof tx.getChainId === 'function';\n}\n\nexport class LedgerKeyring implements Keyring {\n static type: string = keyringType;\n\n deviceId = '';\n\n readonly type: string = keyringType;\n\n page = 0;\n\n perPage = 5;\n\n unlockedAccount = 0;\n\n accounts: readonly Hex[] = [];\n\n accountDetails: Record<string, AccountDetails> = {};\n\n hdk = new HDKey();\n\n hdPath = hdPathString;\n\n paths: Record<string, number> = {};\n\n network: NetworkApiUrls = NetworkApiUrls.Mainnet;\n\n implementFullBIP44 = false;\n\n bridge: LedgerBridge<LedgerBridgeOptions>;\n\n constructor({ bridge }: { bridge: LedgerBridge<LedgerBridgeOptions> }) {\n if (!bridge) {\n throw new Error('Bridge is a required dependency for the keyring');\n }\n\n this.bridge = bridge;\n }\n\n async init(): Promise<void> {\n return this.bridge.init();\n }\n\n async destroy(): Promise<void> {\n return this.bridge.destroy();\n }\n\n async serialize(): Promise<\n Omit<LedgerKeyringSerializedState, 'accountIndexes'>\n > {\n return {\n hdPath: this.hdPath,\n accounts: this.accounts.slice(),\n deviceId: this.deviceId,\n accountDetails: this.accountDetails,\n implementFullBIP44: false,\n };\n }\n\n async deserialize(opts: LedgerKeyringSerializedState): Promise<void> {\n this.hdPath = opts.hdPath ?? hdPathString;\n this.accounts = opts.accounts ?? [];\n this.deviceId = opts.deviceId ?? '';\n this.accountDetails = opts.accountDetails ?? {};\n\n if (!opts.accountDetails) {\n this.#migrateAccountDetails(opts);\n }\n\n this.implementFullBIP44 = opts.implementFullBIP44 ?? false;\n\n const keys = new Set<string>(Object.keys(this.accountDetails));\n // Remove accounts that don't have corresponding account details\n this.accounts = this.accounts.filter((account) =>\n keys.has(this.#getChecksumHexAddress(account)),\n );\n\n return Promise.resolve();\n }\n\n public setDeviceId(deviceId: string): void {\n this.deviceId = deviceId;\n }\n\n public getDeviceId(): string {\n return this.deviceId;\n }\n\n #migrateAccountDetails(opts: Partial<LedgerBridgeKeyringOptions>): void {\n if (this.#isLedgerLiveHdPath() && opts.accountIndexes) {\n for (const [account, index] of Object.entries(opts.accountIndexes)) {\n this.accountDetails[account] = {\n bip44: true,\n hdPath: this.#getPathForIndex(index),\n };\n }\n }\n const keys = new Set<string>(Object.keys(this.accountDetails));\n // try to migrate non-LedgerLive accounts too\n if (!this.#isLedgerLiveHdPath()) {\n this.accounts.forEach((account) => {\n const key = this.#getChecksumHexAddress(account);\n\n if (!keys.has(key)) {\n this.accountDetails[key] = {\n bip44: false,\n hdPath: this.#pathFromAddress(account),\n };\n }\n });\n }\n }\n\n isUnlocked(): boolean {\n return Boolean(this.hdk.publicKey);\n }\n\n isConnected(): boolean {\n return this.bridge.isDeviceConnected;\n }\n\n setAccountToUnlock(index: number): void {\n this.unlockedAccount = index;\n }\n\n setHdPath(hdPath: string): void {\n // Reset HDKey if the path changes\n if (this.hdPath !== hdPath) {\n this.hdk = new HDKey();\n }\n this.hdPath = hdPath;\n }\n\n async unlock(hdPath?: string, updateHdk = true): Promise<Hex> {\n if (this.isUnlocked() && !hdPath) {\n // if the device is already unlocked and no path is provided,\n // we return the checksummed address of the public key stored in\n // `this.hdk`, which is the root address of the last unlocked path.\n return this.#getChecksumHexAddress(\n bytesToHex(publicToAddress(this.hdk.publicKey, true)),\n );\n }\n const path = hdPath ? this.#toLedgerPath(hdPath) : this.hdPath;\n\n let payload;\n try {\n payload = await this.bridge.getPublicKey({\n hdPath: path,\n });\n } catch (error: unknown) {\n handleLedgerTransportError(\n error,\n 'Ledger: Unknown error while unlocking account',\n );\n }\n\n if (updateHdk && payload.chainCode) {\n this.hdk.publicKey = Buffer.from(payload.publicKey, 'hex');\n this.hdk.chainCode = Buffer.from(payload.chainCode, 'hex');\n }\n\n return add0x(payload.address);\n }\n\n async addAccounts(amount: number): Promise<Hex[]> {\n return new Promise((resolve, reject) => {\n this.unlock()\n .then(async (_) => {\n const from = this.unlockedAccount;\n const to = from + amount;\n const newAccounts: Hex[] = [];\n for (let i = from; i < to; i++) {\n const path = this.#getPathForIndex(i);\n let address: Hex;\n if (this.#isLedgerLiveHdPath()) {\n address = await this.unlock(path);\n } else {\n address = this.#addressFromIndex(pathBase, i);\n }\n\n this.accountDetails[this.#getChecksumHexAddress(address)] = {\n // TODO: consider renaming this property, as the current name is misleading\n // It's currently used to represent whether an account uses the Ledger Live path.\n bip44: this.#isLedgerLiveHdPath(),\n hdPath: path,\n };\n\n if (!this.accounts.includes(address)) {\n this.accounts = [...this.accounts, address];\n newAccounts.push(address);\n }\n this.page = 0;\n }\n resolve(newAccounts);\n })\n .catch(reject);\n });\n }\n\n getName(): string {\n return keyringType;\n }\n\n async getFirstPage(): Promise<AccountPage> {\n this.page = 0;\n return this.#getPage(1);\n }\n\n async getNextPage(): Promise<AccountPage> {\n return this.#getPage(1);\n }\n\n async getPreviousPage(): Promise<AccountPage> {\n return this.#getPage(-1);\n }\n\n async getAccounts(): Promise<Hex[]> {\n return Promise.resolve(this.accounts.slice());\n }\n\n removeAccount(address: string): void {\n const filteredAccounts = this.accounts.filter(\n (a) => a.toLowerCase() !== address.toLowerCase(),\n );\n\n if (filteredAccounts.length === this.accounts.length) {\n throw new Error(`Address ${address} not found in this keyring`);\n }\n\n this.accounts = filteredAccounts;\n delete this.accountDetails[this.#getChecksumHexAddress(address)];\n }\n\n async attemptMakeApp(): Promise<boolean> {\n return this.bridge.attemptMakeApp();\n }\n\n async updateTransportMethod(transportType: string): Promise<boolean> {\n return this.bridge.updateTransportMethod(transportType);\n }\n\n async getAppNameAndVersion(): Promise<GetAppNameAndVersionResponse> {\n try {\n return await this.bridge.getAppNameAndVersion();\n } catch (error: unknown) {\n return handleLedgerTransportError(\n error,\n 'Ledger: Unknown error while getting app name and version',\n );\n }\n }\n\n async getAppConfiguration(): Promise<AppConfigurationResponse> {\n try {\n return await this.bridge.getAppConfiguration();\n } catch (error: unknown) {\n return handleLedgerTransportError(\n error,\n 'Ledger: Unknown error while getting app configuration',\n );\n }\n }\n\n // tx is an instance of the ethereumjs-transaction class.\n async signTransaction(\n address: Hex,\n tx: TypedTransaction | OldEthJsTransaction,\n ): Promise<TypedTransaction | OldEthJsTransaction> {\n let rawTxHex;\n // transactions built with older versions of ethereumjs-tx have a\n // getChainId method that newer versions do not. Older versions are mutable\n // while newer versions default to being immutable. Expected shape and type\n // of data for v, r and s differ (Buffer (old) vs BN (new))\n if (isOldStyleEthereumjsTx(tx)) {\n // In this version of ethereumjs-tx we must add the chainId in hex format\n // to the initial v value. The chainId must be included in the serialized\n // transaction which is only communicated to ethereumjs-tx in this\n // value. In newer versions the chainId is communicated via the 'Common'\n // object.\n tx.v = tx.getChainId();\n // @ts-expect-error tx.r should be a Buffer, but we are assigning a string\n tx.r = '0x00';\n // @ts-expect-error tx.s should be a Buffer, but we are assigning a string\n tx.s = '0x00';\n\n rawTxHex = tx.serialize().toString('hex');\n\n return this.#signTransaction(address, rawTxHex, (payload) => {\n tx.v = Buffer.from(payload.v, 'hex');\n tx.r = Buffer.from(payload.r, 'hex');\n tx.s = Buffer.from(payload.s, 'hex');\n return tx;\n });\n }\n\n // The below `encode` call is only necessary for legacy transactions, as `getMessageToSign`\n // calls `rlp.encode` internally for non-legacy transactions. As per the \"Transaction Execution\"\n // section of the ethereum yellow paper, transactions need to be \"well-formed RLP, with no additional\n // trailing bytes\".\n\n // Note also that `getMessageToSign` will return valid RLP for all transaction types, whereas the\n // `serialize` method will not for any transaction type except legacy. This is because `serialize` includes\n // empty r, s and v values in the encoded rlp. This is why we use `getMessageToSign` here instead of `serialize`.\n const messageToSign = tx.getMessageToSign();\n\n rawTxHex = Array.isArray(messageToSign)\n ? Buffer.from(RLP.encode(messageToSign)).toString('hex')\n : bytesToHex(messageToSign);\n\n return this.#signTransaction(address, rawTxHex, (payload) => {\n // Because tx will be immutable, first get a plain javascript object that\n // represents the transaction. Using txData here as it aligns with the\n // nomenclature of ethereumjs/tx.\n const txData: TypedTxData = tx.toJSON();\n // The fromTxData utility expects a type to support transactions with a type other than 0\n txData.type = tx.type;\n // The fromTxData utility expects v,r and s to be hex prefixed\n txData.v = add0x(payload.v);\n txData.r = add0x(payload.r);\n txData.s = add0x(payload.s);\n // Adopt the 'common' option from the original transaction and set the\n // returned object to be frozen if the original is frozen.\n return TransactionFactory.fromTxData(txData, {\n common: tx.common,\n freeze: Object.isFrozen(tx),\n });\n });\n }\n\n async #signTransaction(\n address: Hex,\n rawTxHex: string,\n handleSigning: (\n payload: SignTransactionPayload,\n ) => TypedTransaction | OldEthJsTransaction,\n ): Promise<TypedTransaction | OldEthJsTransaction> {\n const hdPath = await this.unlockAccountByAddress(address);\n\n if (!hdPath) {\n throw new Error('Ledger: hdPath is empty while signing transaction');\n }\n\n let payload;\n\n try {\n payload = await this.bridge.deviceSignTransaction({\n tx: remove0x(rawTxHex),\n hdPath,\n });\n } catch (error: unknown) {\n handleLedgerTransportError(\n error,\n 'Ledger: Unknown error while signing transaction',\n );\n }\n\n const newOrMutatedTx = handleSigning(payload);\n const valid = newOrMutatedTx.verifySignature();\n if (valid) {\n return newOrMutatedTx;\n }\n throw new Error('Ledger: The transaction signature is not valid');\n }\n\n async signMessage(withAccount: Hex, data: string): Promise<string> {\n return this.signPersonalMessage(withAccount, data);\n }\n\n // For personal_sign, we need to prefix the message:\n async signPersonalMessage(\n withAccount: Hex,\n message: string,\n ): Promise<string> {\n const hdPath = await this.unlockAccountByAddress(withAccount);\n\n if (!hdPath) {\n throw new Error('Ledger: Unknown error while signing message');\n }\n\n let payload;\n try {\n payload = await this.bridge.deviceSignMessage({\n hdPath,\n message: remove0x(message),\n });\n } catch (error: unknown) {\n handleLedgerTransportError(\n error,\n 'Ledger: Unknown error while signing message',\n );\n }\n\n const modifiedV = this.#normalizeRecoveryParam(\n this.#parseLedgerRecoveryParam(payload.v),\n );\n\n const signature = `0x${payload.r}${payload.s}${modifiedV}`;\n const addressSignedWith = recoverPersonalSignature({\n data: message,\n signature,\n });\n if (\n this.#getChecksumHexAddress(addressSignedWith) !==\n this.#getChecksumHexAddress(withAccount)\n ) {\n throw new Error('Ledger: The signature doesnt match the right address');\n }\n return signature;\n }\n\n async unlockAccountByAddress(address: Hex): Promise<string | undefined> {\n const checksummedAddress = this.#getChecksumHexAddress(address);\n const accountDetails = this.accountDetails[checksummedAddress];\n if (!accountDetails) {\n throw new Error(\n `Ledger: Account for address '${checksummedAddress}' not found`,\n );\n }\n const { hdPath } = accountDetails;\n const unlockedAddress = await this.unlock(hdPath, false);\n\n // unlock resolves to the address for the given hdPath as reported by the ledger device\n // if that address is not the requested address, then this account belongs to a different device or seed\n if (unlockedAddress.toLowerCase() !== address.toLowerCase()) {\n throw new Error(\n `Ledger: Account ${address} does not belong to the connected device`,\n );\n }\n return hdPath;\n }\n\n async signTypedData<\n Version extends SignTypedDataVersion.V4,\n Types extends MessageTypes,\n Options extends { version?: Version },\n >(\n withAccount: Hex,\n data: TypedMessage<Types>,\n options?: Options,\n ): Promise<string> {\n const { version } = options ?? {};\n const isV4 = version === 'V4';\n if (!isV4) {\n throw new Error(\n 'Ledger: Only version 4 of typed data signing is supported',\n );\n }\n\n const { domain, types, primaryType, message } =\n TypedDataUtils.sanitizeData(data);\n\n const hdPath = await this.unlockAccountByAddress(withAccount);\n\n if (!hdPath) {\n throw new Error('Ledger: Unknown error while signing message');\n }\n\n let payload;\n try {\n payload = await this.bridge.deviceSignTypedData({\n hdPath,\n message: {\n domain: {\n name: domain.name,\n chainId: domain.chainId,\n version: domain.version,\n verifyingContract: domain.verifyingContract,\n salt:\n domain.salt instanceof ArrayBuffer\n ? Buffer.from(domain.salt).toString('hex')\n : domain.salt,\n },\n types,\n primaryType: primaryType.toString(),\n message,\n },\n });\n } catch (error: unknown) {\n handleLedgerTransportError(\n error,\n 'Ledger: Unknown error while signing message',\n );\n }\n\n const recoveryId = this.#normalizeRecoveryParam(\n this.#parseLedgerRecoveryParam(payload.v),\n );\n const signature = `0x${payload.r}${payload.s}${recoveryId}`;\n const addressSignedWith = recoverTypedSignature({\n data,\n signature,\n version: SignTypedDataVersion.V4,\n });\n\n if (\n this.#getChecksumHexAddress(addressSignedWith) !==\n this.#getChecksumHexAddress(withAccount)\n ) {\n throw new Error('Ledger: The signature doesnt match the right address');\n }\n return signature;\n }\n\n async signEip7702Authorization(\n withAccount: Hex,\n authorization: [chainId: number, contractAddress: Hex, nonce: number],\n ): Promise<string> {\n const [chainId, contractAddress, nonce] = authorization;\n const hdPath = await this.unlockAccountByAddress(withAccount);\n\n if (!hdPath) {\n throw new Error(\n 'Ledger: Unknown error while signing EIP-7702 authorization',\n );\n }\n\n let payload;\n try {\n payload = await this.bridge.deviceSignDelegationAuthorization({\n hdPath,\n chainId,\n contractAddress: remove0x(contractAddress),\n nonce,\n });\n } catch (error: unknown) {\n handleLedgerTransportError(\n error,\n 'Ledger: Unknown error while signing EIP-7702 authorization',\n );\n }\n\n // EIP-7702 authorization signatures use yParity (0 or 1), unlike\n // EIP-191/EIP-712 signatures which use the legacy format (27 or 28).\n const yParity = this.#normalizeYParity(\n this.#parseLedgerRecoveryParam(payload.v),\n );\n const signature = `0x${payload.r}${payload.s}${yParity}`;\n\n const addressSignedWith = recoverEIP7702Authorization({\n signature,\n authorization,\n });\n\n if (\n this.#getChecksumHexAddress(addressSignedWith) !==\n this.#getChecksumHexAddress(withAccount)\n ) {\n throw new Error(\n 'Ledger: The EIP-7702 authorization signature does not match the right address',\n );\n }\n return signature;\n }\n\n forgetDevice(): void {\n this.deviceId = '';\n this.accounts = [];\n this.page = 0;\n this.unlockedAccount = 0;\n this.paths = {};\n this.accountDetails = {};\n this.hdk = new HDKey();\n }\n\n /* PRIVATE METHODS */\n async #getPage(increment: number): Promise<AccountPage> {\n this.page += increment;\n\n if (this.page <= 0) {\n this.page = 1;\n }\n const from = (this.page - 1) * this.perPage;\n const to = from + this.perPage;\n\n await this.unlock();\n let accounts;\n if (this.#isLedgerLiveHdPath()) {\n accounts = await this.#getAccountsBIP44(from, to);\n } else {\n accounts = this.#getAccountsLegacy(from, to);\n }\n return accounts;\n }\n\n async #getAccountsBIP44(from: number, to: number): Promise<AccountPage> {\n const accounts: AccountPage = [];\n\n for (let i = from; i < to; i++) {\n const path = this.#getPathForIndex(i);\n const address = await this.unlock(path);\n const valid = this.implementFullBIP44\n ? await this.#hasPreviousTransactions(address)\n : true;\n accounts.push({\n address,\n balance: null,\n index: i,\n });\n\n // PER BIP44\n // \"Software should prevent a creation of an account if\n // a previous account does not have a transaction history\n // (meaning none of its addresses have been used before).\"\n if (!valid) {\n break;\n }\n }\n return accounts;\n }\n\n #getAccountsLegacy(from: number, to: number): AccountPage {\n const accounts: AccountPage = [];\n\n for (let i = from; i < to; i++) {\n const address = this.#addressFromIndex(pathBase, i);\n accounts.push({\n address,\n balance: null,\n index: i,\n });\n this.paths[this.#getChecksumHexAddress(address)] = i;\n }\n return accounts;\n }\n\n #addressFromIndex(basePath: string, i: number): Hex {\n const dkey = this.hdk.derive(`${basePath}/${i}`);\n const address = bytesToHex(publicToAddress(dkey.publicKey, true));\n return this.#getChecksumHexAddress(address);\n }\n\n #pathFromAddress(address: string): string {\n const checksummedAddress = this.#getChecksumHexAddress(address);\n let index = this.paths[checksummedAddress];\n if (typeof index === 'undefined') {\n for (let i = 0; i < MAX_INDEX; i++) {\n if (checksummedAddress === this.#addressFromIndex(pathBase, i)) {\n index = i;\n break;\n }\n }\n }\n\n if (typeof index === 'undefined') {\n throw new Error('Unknown address');\n }\n return this.#getPathForIndex(index);\n }\n\n #getPathForIndex(index: number): string {\n // Check if the path is BIP 44 (Ledger Live)\n return this.#isLedgerLiveHdPath()\n ? `m/44'/60'/${index}'/0/0`\n : `${this.hdPath}/${index}`;\n }\n\n #isLedgerLiveHdPath(): boolean {\n return this.hdPath === `m/44'/60'/0'/0/0`;\n }\n\n #toLedgerPath(path: string): string {\n return path.toString().replace('m/', '');\n }\n\n async #hasPreviousTransactions(address: string): Promise<boolean> {\n const apiUrl = this.#getApiUrl();\n const response = await window.fetch(\n `${apiUrl}/api?module=account&action=txlist&address=${address}&tag=latest&page=1&offset=1`,\n );\n const parsedResponse = await response.json();\n return parsedResponse.status !== '0' && parsedResponse.result.length > 0;\n }\n\n #getApiUrl(): NetworkApiUrls {\n return this.network;\n }\n\n #getChecksumHexAddress(address: string): Hex {\n return getChecksumAddress(add0x(address));\n }\n\n /**\n * Parses the recovery parameter (`v`) returned by a Ledger device.\n * Ledger may return `v` as a number, a `0x`-prefixed hex string, a bare hex\n * string (e.g. `'1b'` for 27), or a decimal string.\n *\n * @param recoveryParam - The recovery parameter from Ledger.\n * @returns The recovery parameter as a number.\n */\n #parseLedgerRecoveryParam(recoveryParam: string | number): number {\n if (typeof recoveryParam === 'number') {\n return recoveryParam;\n }\n\n const value = String(recoveryParam).trim();\n\n if (value.startsWith('0x') || value.startsWith('0X')) {\n // `hexToNumber` validates the format (throws on `'0x'`, `'0xZZ'`, etc.)\n // and asserts the result is a safe integer.\n return hexToNumber(value);\n }\n\n // Unprefixed: detect bare hex by the presence of hex letters, else treat\n // as decimal. Note that a bare `'100'` is ambiguous (decimal 100 vs hex\n // 256); we default to decimal as the safer interpretation.\n const radix = /[a-f]/iu.test(value) ? 16 : 10;\n const result = parseInt(value, radix);\n\n assert(\n !Number.isNaN(result),\n `Invalid recovery parameter: \"${recoveryParam}\"`,\n );\n\n return result;\n }\n\n /**\n * Normalizes the signature recovery parameter (v) to legacy format.\n * Ledger devices may return v as 0 or 1 (modern format), but signature\n * recovery expects 27 or 28 (legacy format per EIP-191/EIP-712).\n *\n * @param recoveryParam - The recovery parameter from Ledger.\n * @returns The normalized recovery parameter as a hex string.\n */\n #normalizeRecoveryParam(recoveryParam: number): string {\n if (recoveryParam === 0 || recoveryParam === 1) {\n return (recoveryParam + 27).toString(16);\n }\n return recoveryParam.toString(16);\n }\n\n /**\n * Normalizes the signature recovery parameter (`v`) to yParity format and\n * returns it as a 2-character hex string suitable for appending to a signature.\n *\n * Ledger devices may return `v` as 0/1 (yParity) or 27/28 (legacy). EIP-7702\n * authorization signatures require the yParity value (0 or 1), unlike\n * EIP-191/EIP-712 signatures which use the legacy format (27 or 28).\n *\n * @param recoveryParam - The parsed recovery parameter from Ledger.\n * @returns The yParity as a 2-character lowercase hex string ('00' or '01').\n */\n #normalizeYParity(recoveryParam: number): string {\n const yParity =\n recoveryParam === 0 || recoveryParam === 1\n ? recoveryParam\n : recoveryParam - 27;\n return yParity.toString(16).padStart(2, '0');\n }\n}\n"]}
1
+ {"version":3,"file":"ledger-keyring.cjs","sourceRoot":"","sources":["../src/ledger-keyring.ts"],"names":[],"mappings":"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","sourcesContent":["import { RLP } from '@ethereumjs/rlp';\nimport { TransactionFactory, TypedTxData } from '@ethereumjs/tx';\nimport type { TypedTransaction } from '@ethereumjs/tx';\nimport { publicToAddress } from '@ethereumjs/util';\nimport type { MessageTypes, TypedMessage } from '@metamask/eth-sig-util';\nimport {\n recoverEIP7702Authorization,\n recoverPersonalSignature,\n recoverTypedSignature,\n SignTypedDataVersion,\n TypedDataUtils,\n} from '@metamask/eth-sig-util';\nimport type { Keyring } from '@metamask/keyring-utils';\nimport {\n add0x,\n bytesToHex,\n getChecksumAddress,\n Hex,\n hexToNumber,\n isStrictHexString,\n remove0x,\n} from '@metamask/utils';\nimport { Buffer } from 'buffer';\nimport type OldEthJsTransaction from 'ethereumjs-tx';\nimport HDKey from 'hdkey';\n\nimport {\n AppConfigurationResponse,\n GetAppNameAndVersionResponse,\n LedgerBridge,\n LedgerBridgeOptions,\n} from './ledger-bridge';\nimport { handleLedgerTransportError } from './ledger-error-handler';\nimport { LedgerIframeBridgeOptions } from './ledger-iframe-bridge';\n\nconst pathBase = 'm';\nconst hdPathString = `${pathBase}/44'/60'/0'`;\nconst keyringType = 'Ledger Hardware';\n\n// This number causes one of our failing tests to run very slowly, as the for loop needs to iterate 1000 times.\nconst MAX_INDEX = 1000;\n\nenum NetworkApiUrls {\n Ropsten = 'https://api-ropsten.etherscan.io',\n Kovan = 'https://api-kovan.etherscan.io',\n Rinkeby = 'https://api-rinkeby.etherscan.io',\n Mainnet = `https://api.etherscan.io`,\n}\n\ntype SignTransactionPayload = Awaited<\n ReturnType<LedgerBridge<LedgerIframeBridgeOptions>['deviceSignTransaction']>\n>;\n\nexport type AccountPageEntry = {\n address: string;\n balance: number | null;\n index: number;\n};\n\nexport type AccountPage = AccountPageEntry[];\n\nexport type AccountDetails = {\n index?: number;\n bip44?: boolean;\n hdPath?: string;\n};\n\nexport type LedgerBridgeKeyringOptions = {\n hdPath: string;\n accounts: Hex[];\n deviceId: string;\n accountDetails: Readonly<Record<Hex, AccountDetails>>;\n accountIndexes: Readonly<Record<Hex, number>>;\n implementFullBIP44: boolean;\n};\n\nexport type LedgerKeyringSerializedState = Partial<LedgerBridgeKeyringOptions>;\n\n/**\n * Check if the given transaction is made with ethereumjs-tx or @ethereumjs/tx\n *\n * Transactions built with older versions of ethereumjs-tx have a\n * getChainId method that newer versions do not.\n * Older versions are mutable\n * while newer versions default to being immutable.\n * Expected shape and type\n * of data for v, r and s differ (Buffer (old) vs BN (new)).\n *\n * @param tx - Transaction to check, instance of either ethereumjs-tx or @ethereumjs/tx.\n * @returns Returns `true` if tx is an old-style ethereumjs-tx transaction.\n */\nfunction isOldStyleEthereumjsTx(\n tx: TypedTransaction | OldEthJsTransaction,\n): tx is OldEthJsTransaction {\n return 'getChainId' in tx && typeof tx.getChainId === 'function';\n}\n\nexport class LedgerKeyring implements Keyring {\n static type: string = keyringType;\n\n deviceId = '';\n\n readonly type: string = keyringType;\n\n page = 0;\n\n perPage = 5;\n\n unlockedAccount = 0;\n\n accounts: readonly Hex[] = [];\n\n accountDetails: Record<string, AccountDetails> = {};\n\n hdk = new HDKey();\n\n hdPath = hdPathString;\n\n paths: Record<string, number> = {};\n\n network: NetworkApiUrls = NetworkApiUrls.Mainnet;\n\n implementFullBIP44 = false;\n\n bridge: LedgerBridge<LedgerBridgeOptions>;\n\n constructor({ bridge }: { bridge: LedgerBridge<LedgerBridgeOptions> }) {\n if (!bridge) {\n throw new Error('Bridge is a required dependency for the keyring');\n }\n\n this.bridge = bridge;\n }\n\n async init(): Promise<void> {\n return this.bridge.init();\n }\n\n async destroy(): Promise<void> {\n return this.bridge.destroy();\n }\n\n async serialize(): Promise<\n Omit<LedgerKeyringSerializedState, 'accountIndexes'>\n > {\n return {\n hdPath: this.hdPath,\n accounts: this.accounts.slice(),\n deviceId: this.deviceId,\n accountDetails: this.accountDetails,\n implementFullBIP44: false,\n };\n }\n\n async deserialize(opts: LedgerKeyringSerializedState): Promise<void> {\n this.hdPath = opts.hdPath ?? hdPathString;\n this.accounts = opts.accounts ?? [];\n this.deviceId = opts.deviceId ?? '';\n this.accountDetails = opts.accountDetails ?? {};\n\n if (!opts.accountDetails) {\n this.#migrateAccountDetails(opts);\n }\n\n this.implementFullBIP44 = opts.implementFullBIP44 ?? false;\n\n const keys = new Set<string>(Object.keys(this.accountDetails));\n // Remove accounts that don't have corresponding account details\n this.accounts = this.accounts.filter((account) =>\n keys.has(this.#getChecksumHexAddress(account)),\n );\n\n return Promise.resolve();\n }\n\n public setDeviceId(deviceId: string): void {\n this.deviceId = deviceId;\n }\n\n public getDeviceId(): string {\n return this.deviceId;\n }\n\n #migrateAccountDetails(opts: Partial<LedgerBridgeKeyringOptions>): void {\n if (this.#isLedgerLiveHdPath() && opts.accountIndexes) {\n for (const [account, index] of Object.entries(opts.accountIndexes)) {\n this.accountDetails[account] = {\n bip44: true,\n hdPath: this.#getPathForIndex(index),\n };\n }\n }\n const keys = new Set<string>(Object.keys(this.accountDetails));\n // try to migrate non-LedgerLive accounts too\n if (!this.#isLedgerLiveHdPath()) {\n this.accounts.forEach((account) => {\n const key = this.#getChecksumHexAddress(account);\n\n if (!keys.has(key)) {\n this.accountDetails[key] = {\n bip44: false,\n hdPath: this.#pathFromAddress(account),\n };\n }\n });\n }\n }\n\n isUnlocked(): boolean {\n return Boolean(this.hdk.publicKey);\n }\n\n isConnected(): boolean {\n return this.bridge.isDeviceConnected;\n }\n\n setAccountToUnlock(index: number): void {\n this.unlockedAccount = index;\n }\n\n setHdPath(hdPath: string): void {\n // Reset HDKey if the path changes\n if (this.hdPath !== hdPath) {\n this.hdk = new HDKey();\n }\n this.hdPath = hdPath;\n }\n\n async unlock(hdPath?: string, updateHdk = true): Promise<Hex> {\n if (this.isUnlocked() && !hdPath) {\n // if the device is already unlocked and no path is provided,\n // we return the checksummed address of the public key stored in\n // `this.hdk`, which is the root address of the last unlocked path.\n return this.#getChecksumHexAddress(\n bytesToHex(publicToAddress(this.hdk.publicKey, true)),\n );\n }\n const path = hdPath ? this.#toLedgerPath(hdPath) : this.hdPath;\n\n let payload;\n try {\n payload = await this.bridge.getPublicKey({\n hdPath: path,\n });\n } catch (error: unknown) {\n handleLedgerTransportError(\n error,\n 'Ledger: Unknown error while unlocking account',\n );\n }\n\n if (updateHdk && payload.chainCode) {\n this.hdk.publicKey = Buffer.from(payload.publicKey, 'hex');\n this.hdk.chainCode = Buffer.from(payload.chainCode, 'hex');\n }\n\n return add0x(payload.address);\n }\n\n async addAccounts(amount: number): Promise<Hex[]> {\n return new Promise((resolve, reject) => {\n this.unlock()\n .then(async (_) => {\n const from = this.unlockedAccount;\n const to = from + amount;\n const newAccounts: Hex[] = [];\n for (let i = from; i < to; i++) {\n const path = this.#getPathForIndex(i);\n let address: Hex;\n if (this.#isLedgerLiveHdPath()) {\n address = await this.unlock(path);\n } else {\n address = this.#addressFromIndex(pathBase, i);\n }\n\n this.accountDetails[this.#getChecksumHexAddress(address)] = {\n // TODO: consider renaming this property, as the current name is misleading\n // It's currently used to represent whether an account uses the Ledger Live path.\n bip44: this.#isLedgerLiveHdPath(),\n hdPath: path,\n };\n\n if (!this.accounts.includes(address)) {\n this.accounts = [...this.accounts, address];\n newAccounts.push(address);\n }\n this.page = 0;\n }\n resolve(newAccounts);\n })\n .catch(reject);\n });\n }\n\n getName(): string {\n return keyringType;\n }\n\n async getFirstPage(): Promise<AccountPage> {\n this.page = 0;\n return this.#getPage(1);\n }\n\n async getNextPage(): Promise<AccountPage> {\n return this.#getPage(1);\n }\n\n async getPreviousPage(): Promise<AccountPage> {\n return this.#getPage(-1);\n }\n\n async getAccounts(): Promise<Hex[]> {\n return Promise.resolve(this.accounts.slice());\n }\n\n removeAccount(address: string): void {\n const filteredAccounts = this.accounts.filter(\n (a) => a.toLowerCase() !== address.toLowerCase(),\n );\n\n if (filteredAccounts.length === this.accounts.length) {\n throw new Error(`Address ${address} not found in this keyring`);\n }\n\n this.accounts = filteredAccounts;\n delete this.accountDetails[this.#getChecksumHexAddress(address)];\n }\n\n async attemptMakeApp(): Promise<boolean> {\n return this.bridge.attemptMakeApp();\n }\n\n async updateTransportMethod(transportType: string): Promise<boolean> {\n return this.bridge.updateTransportMethod(transportType);\n }\n\n async getAppNameAndVersion(): Promise<GetAppNameAndVersionResponse> {\n try {\n return await this.bridge.getAppNameAndVersion();\n } catch (error: unknown) {\n return handleLedgerTransportError(\n error,\n 'Ledger: Unknown error while getting app name and version',\n );\n }\n }\n\n async getAppConfiguration(): Promise<AppConfigurationResponse> {\n try {\n return await this.bridge.getAppConfiguration();\n } catch (error: unknown) {\n return handleLedgerTransportError(\n error,\n 'Ledger: Unknown error while getting app configuration',\n );\n }\n }\n\n // tx is an instance of the ethereumjs-transaction class.\n async signTransaction(\n address: Hex,\n tx: TypedTransaction | OldEthJsTransaction,\n ): Promise<TypedTransaction | OldEthJsTransaction> {\n let rawTxHex;\n // transactions built with older versions of ethereumjs-tx have a\n // getChainId method that newer versions do not. Older versions are mutable\n // while newer versions default to being immutable. Expected shape and type\n // of data for v, r and s differ (Buffer (old) vs BN (new))\n if (isOldStyleEthereumjsTx(tx)) {\n // In this version of ethereumjs-tx we must add the chainId in hex format\n // to the initial v value. The chainId must be included in the serialized\n // transaction which is only communicated to ethereumjs-tx in this\n // value. In newer versions the chainId is communicated via the 'Common'\n // object.\n tx.v = tx.getChainId();\n // @ts-expect-error tx.r should be a Buffer, but we are assigning a string\n tx.r = '0x00';\n // @ts-expect-error tx.s should be a Buffer, but we are assigning a string\n tx.s = '0x00';\n\n rawTxHex = tx.serialize().toString('hex');\n\n return this.#signTransaction(address, rawTxHex, (payload) => {\n tx.v = Buffer.from(payload.v, 'hex');\n tx.r = Buffer.from(payload.r, 'hex');\n tx.s = Buffer.from(payload.s, 'hex');\n return tx;\n });\n }\n\n // The below `encode` call is only necessary for legacy transactions, as `getMessageToSign`\n // calls `rlp.encode` internally for non-legacy transactions. As per the \"Transaction Execution\"\n // section of the ethereum yellow paper, transactions need to be \"well-formed RLP, with no additional\n // trailing bytes\".\n\n // Note also that `getMessageToSign` will return valid RLP for all transaction types, whereas the\n // `serialize` method will not for any transaction type except legacy. This is because `serialize` includes\n // empty r, s and v values in the encoded rlp. This is why we use `getMessageToSign` here instead of `serialize`.\n const messageToSign = tx.getMessageToSign();\n\n rawTxHex = Array.isArray(messageToSign)\n ? Buffer.from(RLP.encode(messageToSign)).toString('hex')\n : bytesToHex(messageToSign);\n\n return this.#signTransaction(address, rawTxHex, (payload) => {\n // Because tx will be immutable, first get a plain javascript object that\n // represents the transaction. Using txData here as it aligns with the\n // nomenclature of ethereumjs/tx.\n const txData: TypedTxData = tx.toJSON();\n // The fromTxData utility expects a type to support transactions with a type other than 0\n txData.type = tx.type;\n // The fromTxData utility expects v,r and s to be hex prefixed\n txData.v = add0x(payload.v);\n txData.r = add0x(payload.r);\n txData.s = add0x(payload.s);\n // Adopt the 'common' option from the original transaction and set the\n // returned object to be frozen if the original is frozen.\n return TransactionFactory.fromTxData(txData, {\n common: tx.common,\n freeze: Object.isFrozen(tx),\n });\n });\n }\n\n async #signTransaction(\n address: Hex,\n rawTxHex: string,\n handleSigning: (\n payload: SignTransactionPayload,\n ) => TypedTransaction | OldEthJsTransaction,\n ): Promise<TypedTransaction | OldEthJsTransaction> {\n const hdPath = await this.unlockAccountByAddress(address);\n\n if (!hdPath) {\n throw new Error('Ledger: hdPath is empty while signing transaction');\n }\n\n let payload;\n\n try {\n payload = await this.bridge.deviceSignTransaction({\n tx: remove0x(rawTxHex),\n hdPath,\n });\n } catch (error: unknown) {\n handleLedgerTransportError(\n error,\n 'Ledger: Unknown error while signing transaction',\n );\n }\n\n const newOrMutatedTx = handleSigning(payload);\n const valid = newOrMutatedTx.verifySignature();\n if (valid) {\n return newOrMutatedTx;\n }\n throw new Error('Ledger: The transaction signature is not valid');\n }\n\n async signMessage(withAccount: Hex, data: string): Promise<string> {\n return this.signPersonalMessage(withAccount, data);\n }\n\n // For personal_sign, we need to prefix the message:\n async signPersonalMessage(\n withAccount: Hex,\n message: string,\n ): Promise<string> {\n const hdPath = await this.unlockAccountByAddress(withAccount);\n\n if (!hdPath) {\n throw new Error('Ledger: Unknown error while signing message');\n }\n\n let payload;\n try {\n payload = await this.bridge.deviceSignMessage({\n hdPath,\n message: remove0x(message),\n });\n } catch (error: unknown) {\n handleLedgerTransportError(\n error,\n 'Ledger: Unknown error while signing message',\n );\n }\n\n const modifiedV = this.#normalizeRecoveryParam(\n this.#parseLedgerRecoveryParam(payload.v),\n );\n\n const signature = `0x${payload.r}${payload.s}${modifiedV}`;\n const addressSignedWith = recoverPersonalSignature({\n data: message,\n signature,\n });\n if (\n this.#getChecksumHexAddress(addressSignedWith) !==\n this.#getChecksumHexAddress(withAccount)\n ) {\n throw new Error('Ledger: The signature doesnt match the right address');\n }\n return signature;\n }\n\n async unlockAccountByAddress(address: Hex): Promise<string | undefined> {\n const checksummedAddress = this.#getChecksumHexAddress(address);\n const accountDetails = this.accountDetails[checksummedAddress];\n if (!accountDetails) {\n throw new Error(\n `Ledger: Account for address '${checksummedAddress}' not found`,\n );\n }\n const { hdPath } = accountDetails;\n const unlockedAddress = await this.unlock(hdPath, false);\n\n // unlock resolves to the address for the given hdPath as reported by the ledger device\n // if that address is not the requested address, then this account belongs to a different device or seed\n if (unlockedAddress.toLowerCase() !== address.toLowerCase()) {\n throw new Error(\n `Ledger: Account ${address} does not belong to the connected device`,\n );\n }\n return hdPath;\n }\n\n async signTypedData<\n Version extends SignTypedDataVersion.V4,\n Types extends MessageTypes,\n Options extends { version?: Version },\n >(\n withAccount: Hex,\n data: TypedMessage<Types>,\n options?: Options,\n ): Promise<string> {\n const { version } = options ?? {};\n const isV4 = version === 'V4';\n if (!isV4) {\n throw new Error(\n 'Ledger: Only version 4 of typed data signing is supported',\n );\n }\n\n const { domain, types, primaryType, message } =\n TypedDataUtils.sanitizeData(data);\n\n const hdPath = await this.unlockAccountByAddress(withAccount);\n\n if (!hdPath) {\n throw new Error('Ledger: Unknown error while signing message');\n }\n\n let payload;\n try {\n payload = await this.bridge.deviceSignTypedData({\n hdPath,\n message: {\n domain: {\n name: domain.name,\n chainId: domain.chainId,\n version: domain.version,\n verifyingContract: domain.verifyingContract,\n salt:\n domain.salt instanceof ArrayBuffer\n ? Buffer.from(domain.salt).toString('hex')\n : domain.salt,\n },\n types,\n primaryType: primaryType.toString(),\n message,\n },\n });\n } catch (error: unknown) {\n handleLedgerTransportError(\n error,\n 'Ledger: Unknown error while signing message',\n );\n }\n\n const recoveryId = this.#normalizeRecoveryParam(\n this.#parseLedgerRecoveryParam(payload.v),\n );\n const signature = `0x${payload.r}${payload.s}${recoveryId}`;\n const addressSignedWith = recoverTypedSignature({\n data,\n signature,\n version: SignTypedDataVersion.V4,\n });\n\n if (\n this.#getChecksumHexAddress(addressSignedWith) !==\n this.#getChecksumHexAddress(withAccount)\n ) {\n throw new Error('Ledger: The signature doesnt match the right address');\n }\n return signature;\n }\n\n async signEip7702Authorization(\n withAccount: Hex,\n authorization: [chainId: number, contractAddress: Hex, nonce: number],\n ): Promise<string> {\n const [chainId, contractAddress, nonce] = authorization;\n const hdPath = await this.unlockAccountByAddress(withAccount);\n\n if (!hdPath) {\n throw new Error(\n 'Ledger: Missing hdPath while signing EIP-7702 authorization',\n );\n }\n\n let payload;\n try {\n payload = await this.bridge.deviceSignDelegationAuthorization({\n hdPath,\n chainId,\n contractAddress: remove0x(contractAddress),\n nonce,\n });\n } catch (error: unknown) {\n handleLedgerTransportError(\n error,\n 'Ledger: Error while signing EIP-7702 authorization',\n );\n }\n\n // EIP-7702 authorization signatures use yParity (0 or 1), unlike\n // EIP-191/EIP-712 signatures which use the legacy format (27 or 28).\n const yParity = this.#normalizeYParity(\n this.#parseLedgerRecoveryParam(payload.v),\n );\n const signature = `0x${payload.r}${payload.s}${yParity}`;\n\n const addressSignedWith = recoverEIP7702Authorization({\n signature,\n authorization,\n });\n\n if (\n this.#getChecksumHexAddress(addressSignedWith) !==\n this.#getChecksumHexAddress(withAccount)\n ) {\n throw new Error(\n 'Ledger: The EIP-7702 authorization signature does not match the right address',\n );\n }\n return signature;\n }\n\n forgetDevice(): void {\n this.deviceId = '';\n this.accounts = [];\n this.page = 0;\n this.unlockedAccount = 0;\n this.paths = {};\n this.accountDetails = {};\n this.hdk = new HDKey();\n }\n\n /* PRIVATE METHODS */\n async #getPage(increment: number): Promise<AccountPage> {\n this.page += increment;\n\n if (this.page <= 0) {\n this.page = 1;\n }\n const from = (this.page - 1) * this.perPage;\n const to = from + this.perPage;\n\n await this.unlock();\n let accounts;\n if (this.#isLedgerLiveHdPath()) {\n accounts = await this.#getAccountsBIP44(from, to);\n } else {\n accounts = this.#getAccountsLegacy(from, to);\n }\n return accounts;\n }\n\n async #getAccountsBIP44(from: number, to: number): Promise<AccountPage> {\n const accounts: AccountPage = [];\n\n for (let i = from; i < to; i++) {\n const path = this.#getPathForIndex(i);\n const address = await this.unlock(path);\n const valid = this.implementFullBIP44\n ? await this.#hasPreviousTransactions(address)\n : true;\n accounts.push({\n address,\n balance: null,\n index: i,\n });\n\n // PER BIP44\n // \"Software should prevent a creation of an account if\n // a previous account does not have a transaction history\n // (meaning none of its addresses have been used before).\"\n if (!valid) {\n break;\n }\n }\n return accounts;\n }\n\n #getAccountsLegacy(from: number, to: number): AccountPage {\n const accounts: AccountPage = [];\n\n for (let i = from; i < to; i++) {\n const address = this.#addressFromIndex(pathBase, i);\n accounts.push({\n address,\n balance: null,\n index: i,\n });\n this.paths[this.#getChecksumHexAddress(address)] = i;\n }\n return accounts;\n }\n\n #addressFromIndex(basePath: string, i: number): Hex {\n const dkey = this.hdk.derive(`${basePath}/${i}`);\n const address = bytesToHex(publicToAddress(dkey.publicKey, true));\n return this.#getChecksumHexAddress(address);\n }\n\n #pathFromAddress(address: string): string {\n const checksummedAddress = this.#getChecksumHexAddress(address);\n let index = this.paths[checksummedAddress];\n if (typeof index === 'undefined') {\n for (let i = 0; i < MAX_INDEX; i++) {\n if (checksummedAddress === this.#addressFromIndex(pathBase, i)) {\n index = i;\n break;\n }\n }\n }\n\n if (typeof index === 'undefined') {\n throw new Error('Unknown address');\n }\n return this.#getPathForIndex(index);\n }\n\n #getPathForIndex(index: number): string {\n // Check if the path is BIP 44 (Ledger Live)\n return this.#isLedgerLiveHdPath()\n ? `m/44'/60'/${index}'/0/0`\n : `${this.hdPath}/${index}`;\n }\n\n #isLedgerLiveHdPath(): boolean {\n return this.hdPath === `m/44'/60'/0'/0/0`;\n }\n\n #toLedgerPath(path: string): string {\n return path.toString().replace('m/', '');\n }\n\n async #hasPreviousTransactions(address: string): Promise<boolean> {\n const apiUrl = this.#getApiUrl();\n const response = await window.fetch(\n `${apiUrl}/api?module=account&action=txlist&address=${address}&tag=latest&page=1&offset=1`,\n );\n const parsedResponse = await response.json();\n return parsedResponse.status !== '0' && parsedResponse.result.length > 0;\n }\n\n #getApiUrl(): NetworkApiUrls {\n return this.network;\n }\n\n #getChecksumHexAddress(address: string): Hex {\n return getChecksumAddress(add0x(address));\n }\n\n /**\n * Parses the recovery parameter (`v`) returned by a Ledger device.\n * Ledger may return `v` as a number, a `0x`-prefixed hex string, a bare hex\n * string (e.g. `'1b'` for 27), or a decimal string.\n *\n * @param recoveryParam - The recovery parameter from Ledger.\n * @returns The recovery parameter as a number.\n */\n #parseLedgerRecoveryParam(recoveryParam: string | number): number {\n if (typeof recoveryParam === 'number') {\n return recoveryParam;\n }\n\n const value = String(recoveryParam).trim();\n\n if (value.startsWith('0x') || value.startsWith('0X')) {\n if (!isStrictHexString(value)) {\n throw new Error(`Invalid hex recovery parameter: \"${recoveryParam}\"`);\n }\n return hexToNumber(value);\n }\n\n // If the string contains hex letters (a-f), interpret it as hex;\n // otherwise interpret it as a regular decimal number.\n const radix = /[a-f]/iu.test(value) ? 16 : 10;\n const result = parseInt(value, radix);\n\n if (Number.isNaN(result)) {\n throw new Error(`Invalid recovery parameter: \"${recoveryParam}\"`);\n }\n\n return result;\n }\n\n /**\n * Normalizes the signature recovery parameter (v) to legacy format.\n * Ledger devices may return v as 0 or 1 (modern format), but signature\n * recovery expects 27 or 28 (legacy format per EIP-191/EIP-712).\n *\n * @param recoveryParam - The recovery parameter from Ledger.\n * @returns The normalized recovery parameter as a hex string.\n */\n #normalizeRecoveryParam(recoveryParam: number): string {\n if (recoveryParam === 0 || recoveryParam === 1) {\n return (recoveryParam + 27).toString(16);\n }\n return recoveryParam.toString(16);\n }\n\n /**\n * Normalizes the signature recovery parameter (`v`) to yParity format and\n * returns it as a 2-character hex string suitable for appending to a signature.\n *\n * Ledger devices may return `v` as 0/1 (yParity) or 27/28 (legacy). EIP-7702\n * authorization signatures require the yParity value (0 or 1), unlike\n * EIP-191/EIP-712 signatures which use the legacy format (27 or 28).\n *\n * @param recoveryParam - The parsed recovery parameter from Ledger.\n * @returns The yParity as a 2-character lowercase hex string ('00' or '01').\n */\n #normalizeYParity(recoveryParam: number): string {\n const yParity =\n recoveryParam === 0 || recoveryParam === 1\n ? recoveryParam\n : recoveryParam - 27;\n return yParity.toString(16).padStart(2, '0');\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ledger-keyring.d.cts","sourceRoot":"","sources":["../src/ledger-keyring.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ledger-keyring.d.cts","sourceRoot":"","sources":["../src/ledger-keyring.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ledger-keyring.d.mts","sourceRoot":"","sources":["../src/ledger-keyring.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ledger-keyring.d.mts","sourceRoot":"","sources":["../src/ledger-keyring.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ import { RLP } from "@ethereumjs/rlp";
14
14
  import { TransactionFactory } from "@ethereumjs/tx";
15
15
  import { publicToAddress } from "@ethereumjs/util";
16
16
  import { recoverEIP7702Authorization, recoverPersonalSignature, recoverTypedSignature, SignTypedDataVersion, TypedDataUtils } from "@metamask/eth-sig-util";
17
- import { add0x, assert, bytesToHex, getChecksumAddress, hexToNumber, remove0x } from "@metamask/utils";
17
+ import { add0x, bytesToHex, getChecksumAddress, hexToNumber, isStrictHexString, remove0x } from "@metamask/utils";
18
18
  import { Buffer } from "buffer";
19
19
  import $HDKey from "hdkey";
20
20
  const HDKey = $importDefault($HDKey);
@@ -373,7 +373,7 @@ export class LedgerKeyring {
373
373
  const [chainId, contractAddress, nonce] = authorization;
374
374
  const hdPath = await this.unlockAccountByAddress(withAccount);
375
375
  if (!hdPath) {
376
- throw new Error('Ledger: Unknown error while signing EIP-7702 authorization');
376
+ throw new Error('Ledger: Missing hdPath while signing EIP-7702 authorization');
377
377
  }
378
378
  let payload;
379
379
  try {
@@ -385,7 +385,7 @@ export class LedgerKeyring {
385
385
  });
386
386
  }
387
387
  catch (error) {
388
- handleLedgerTransportError(error, 'Ledger: Unknown error while signing EIP-7702 authorization');
388
+ handleLedgerTransportError(error, 'Ledger: Error while signing EIP-7702 authorization');
389
389
  }
390
390
  // EIP-7702 authorization signatures use yParity (0 or 1), unlike
391
391
  // EIP-191/EIP-712 signatures which use the legacy format (27 or 28).
@@ -549,16 +549,18 @@ async function _LedgerKeyring_getPage(increment) {
549
549
  }
550
550
  const value = String(recoveryParam).trim();
551
551
  if (value.startsWith('0x') || value.startsWith('0X')) {
552
- // `hexToNumber` validates the format (throws on `'0x'`, `'0xZZ'`, etc.)
553
- // and asserts the result is a safe integer.
552
+ if (!isStrictHexString(value)) {
553
+ throw new Error(`Invalid hex recovery parameter: "${recoveryParam}"`);
554
+ }
554
555
  return hexToNumber(value);
555
556
  }
556
- // Unprefixed: detect bare hex by the presence of hex letters, else treat
557
- // as decimal. Note that a bare `'100'` is ambiguous (decimal 100 vs hex
558
- // 256); we default to decimal as the safer interpretation.
557
+ // If the string contains hex letters (a-f), interpret it as hex;
558
+ // otherwise interpret it as a regular decimal number.
559
559
  const radix = /[a-f]/iu.test(value) ? 16 : 10;
560
560
  const result = parseInt(value, radix);
561
- assert(!Number.isNaN(result), `Invalid recovery parameter: "${recoveryParam}"`);
561
+ if (Number.isNaN(result)) {
562
+ throw new Error(`Invalid recovery parameter: "${recoveryParam}"`);
563
+ }
562
564
  return result;
563
565
  }, _LedgerKeyring_normalizeRecoveryParam = function _LedgerKeyring_normalizeRecoveryParam(recoveryParam) {
564
566
  if (recoveryParam === 0 || recoveryParam === 1) {