@metamask-previews/signature-controller 5.3.1-preview.c338244 → 5.3.1-preview.c5136a4

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.
@@ -2,6 +2,7 @@
2
2
  import type { AddApprovalRequest } from '@metamask/approval-controller';
3
3
  import type { RestrictedControllerMessenger } from '@metamask/base-controller';
4
4
  import { BaseControllerV2 } from '@metamask/base-controller';
5
+ import type { KeyringControllerSignMessageAction, KeyringControllerSignPersonalMessageAction, KeyringControllerSignTypedMessageAction } from '@metamask/keyring-controller';
5
6
  import type { MessageParams, PersonalMessageParams, TypedMessageParams, AbstractMessage, AbstractMessageParams, OriginalRequest, TypedMessage, PersonalMessage, Message } from '@metamask/message-manager';
6
7
  import type { Hex, Json } from '@metamask/utils';
7
8
  import EventEmitter from 'events';
@@ -18,7 +19,7 @@ declare type SignatureControllerState = {
18
19
  unapprovedPersonalMsgCount: number;
19
20
  unapprovedTypedMessagesCount: number;
20
21
  };
21
- declare type AllowedActions = AddApprovalRequest;
22
+ declare type AllowedActions = AddApprovalRequest | KeyringControllerSignMessageAction | KeyringControllerSignPersonalMessageAction | KeyringControllerSignTypedMessageAction;
22
23
  declare type TypedMessageSigningOptions = {
23
24
  parseJsonData: boolean;
24
25
  };
@@ -33,16 +34,8 @@ export declare type SignatureStateChange = {
33
34
  export declare type SignatureControllerActions = GetSignatureState;
34
35
  export declare type SignatureControllerEvents = SignatureStateChange;
35
36
  export declare type SignatureControllerMessenger = RestrictedControllerMessenger<typeof controllerName, SignatureControllerActions | AllowedActions, SignatureControllerEvents, AllowedActions['type'], never>;
36
- export interface KeyringController {
37
- signMessage: (messsageParams: MessageParams) => Promise<string>;
38
- signPersonalMessage: (messsageParams: PersonalMessageParams) => Promise<string>;
39
- signTypedMessage: (messsageParams: TypedMessageParams, options: {
40
- version: string | undefined;
41
- }) => Promise<string>;
42
- }
43
37
  export declare type SignatureControllerOptions = {
44
38
  messenger: SignatureControllerMessenger;
45
- keyringController: KeyringController;
46
39
  isEthSignEnabled: () => boolean;
47
40
  getAllState: () => unknown;
48
41
  securityProviderRequest?: (requestData: any, methodName: string) => Promise<any>;
@@ -59,13 +52,12 @@ export declare class SignatureController extends BaseControllerV2<typeof control
59
52
  *
60
53
  * @param options - The controller options.
61
54
  * @param options.messenger - The restricted controller messenger for the sign controller.
62
- * @param options.keyringController - An instance of a keyring controller used to perform the signing operations.
63
55
  * @param options.isEthSignEnabled - Callback to return true if eth_sign is enabled.
64
56
  * @param options.getAllState - Callback to retrieve all user state.
65
57
  * @param options.securityProviderRequest - A function for verifying a message, whether it is malicious or not.
66
58
  * @param options.getCurrentChainId - A function for retrieving the current chainId.
67
59
  */
68
- constructor({ messenger, keyringController, isEthSignEnabled, getAllState, securityProviderRequest, getCurrentChainId, }: SignatureControllerOptions);
60
+ constructor({ messenger, isEthSignEnabled, getAllState, securityProviderRequest, getCurrentChainId, }: SignatureControllerOptions);
69
61
  /**
70
62
  * A getter for the number of 'unapproved' Messages in this.messages.
71
63
  *
@@ -1 +1 @@
1
- {"version":3,"file":"SignatureController.d.ts","sourceRoot":"","sources":["../src/SignatureController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SignatureController.d.ts","sourceRoot":"","sources":["../src/SignatureController.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,7 @@ var __rest = (this && this.__rest) || function (s, e) {
33
33
  var __importDefault = (this && this.__importDefault) || function (mod) {
34
34
  return (mod && mod.__esModule) ? mod : { "default": mod };
35
35
  };
36
- var _SignatureController_instances, _SignatureController_keyringController, _SignatureController_isEthSignEnabled, _SignatureController_getAllState, _SignatureController_messageManager, _SignatureController_personalMessageManager, _SignatureController_typedMessageManager, _SignatureController_validateUnsignedMessage, _SignatureController_newUnsignedAbstractMessage, _SignatureController_signMessage, _SignatureController_signPersonalMessage, _SignatureController_signTypedMessage, _SignatureController_tryForEachMessageManager, _SignatureController_trySetDeferredSignSuccess, _SignatureController_trySetMessageMetadata, _SignatureController_trySetDeferredSignError, _SignatureController_rejectUnapproved, _SignatureController_clearUnapproved, _SignatureController_signAbstractMessage, _SignatureController_errorMessage, _SignatureController_cancelAbstractMessage, _SignatureController_handleMessageManagerEvents, _SignatureController_subscribeToMessageState, _SignatureController_migrateMessages, _SignatureController_migrateMessage, _SignatureController_normalizeMsgData, _SignatureController_getMessage, _SignatureController_requestApproval, _SignatureController_removeJsonData;
36
+ var _SignatureController_instances, _SignatureController_isEthSignEnabled, _SignatureController_getAllState, _SignatureController_messageManager, _SignatureController_personalMessageManager, _SignatureController_typedMessageManager, _SignatureController_validateUnsignedMessage, _SignatureController_newUnsignedAbstractMessage, _SignatureController_signMessage, _SignatureController_signPersonalMessage, _SignatureController_signTypedMessage, _SignatureController_tryForEachMessageManager, _SignatureController_trySetDeferredSignSuccess, _SignatureController_trySetMessageMetadata, _SignatureController_trySetDeferredSignError, _SignatureController_rejectUnapproved, _SignatureController_clearUnapproved, _SignatureController_signAbstractMessage, _SignatureController_errorMessage, _SignatureController_cancelAbstractMessage, _SignatureController_handleMessageManagerEvents, _SignatureController_subscribeToMessageState, _SignatureController_migrateMessages, _SignatureController_migrateMessage, _SignatureController_normalizeMsgData, _SignatureController_getMessage, _SignatureController_requestApproval, _SignatureController_removeJsonData;
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
38
  exports.SignatureController = void 0;
39
39
  const base_controller_1 = require("@metamask/base-controller");
@@ -69,13 +69,12 @@ class SignatureController extends base_controller_1.BaseControllerV2 {
69
69
  *
70
70
  * @param options - The controller options.
71
71
  * @param options.messenger - The restricted controller messenger for the sign controller.
72
- * @param options.keyringController - An instance of a keyring controller used to perform the signing operations.
73
72
  * @param options.isEthSignEnabled - Callback to return true if eth_sign is enabled.
74
73
  * @param options.getAllState - Callback to retrieve all user state.
75
74
  * @param options.securityProviderRequest - A function for verifying a message, whether it is malicious or not.
76
75
  * @param options.getCurrentChainId - A function for retrieving the current chainId.
77
76
  */
78
- constructor({ messenger, keyringController, isEthSignEnabled, getAllState, securityProviderRequest, getCurrentChainId, }) {
77
+ constructor({ messenger, isEthSignEnabled, getAllState, securityProviderRequest, getCurrentChainId, }) {
79
78
  super({
80
79
  name: controllerName,
81
80
  metadata: stateMetadata,
@@ -83,13 +82,11 @@ class SignatureController extends base_controller_1.BaseControllerV2 {
83
82
  state: getDefaultState(),
84
83
  });
85
84
  _SignatureController_instances.add(this);
86
- _SignatureController_keyringController.set(this, void 0);
87
85
  _SignatureController_isEthSignEnabled.set(this, void 0);
88
86
  _SignatureController_getAllState.set(this, void 0);
89
87
  _SignatureController_messageManager.set(this, void 0);
90
88
  _SignatureController_personalMessageManager.set(this, void 0);
91
89
  _SignatureController_typedMessageManager.set(this, void 0);
92
- __classPrivateFieldSet(this, _SignatureController_keyringController, keyringController, "f");
93
90
  __classPrivateFieldSet(this, _SignatureController_isEthSignEnabled, isEthSignEnabled, "f");
94
91
  __classPrivateFieldSet(this, _SignatureController_getAllState, getAllState, "f");
95
92
  this.hub = new events_1.default();
@@ -257,7 +254,7 @@ class SignatureController extends base_controller_1.BaseControllerV2 {
257
254
  }
258
255
  }
259
256
  exports.SignatureController = SignatureController;
260
- _SignatureController_keyringController = new WeakMap(), _SignatureController_isEthSignEnabled = new WeakMap(), _SignatureController_getAllState = new WeakMap(), _SignatureController_messageManager = new WeakMap(), _SignatureController_personalMessageManager = new WeakMap(), _SignatureController_typedMessageManager = new WeakMap(), _SignatureController_instances = new WeakSet(), _SignatureController_validateUnsignedMessage = function _SignatureController_validateUnsignedMessage(messageParams) {
257
+ _SignatureController_isEthSignEnabled = new WeakMap(), _SignatureController_getAllState = new WeakMap(), _SignatureController_messageManager = new WeakMap(), _SignatureController_personalMessageManager = new WeakMap(), _SignatureController_typedMessageManager = new WeakMap(), _SignatureController_instances = new WeakSet(), _SignatureController_validateUnsignedMessage = function _SignatureController_validateUnsignedMessage(messageParams) {
261
258
  if (!__classPrivateFieldGet(this, _SignatureController_isEthSignEnabled, "f").call(this)) {
262
259
  throw eth_rpc_errors_1.ethErrors.rpc.methodNotFound('eth_sign has been disabled. You must enable it in the advanced settings');
263
260
  }
@@ -299,11 +296,15 @@ _SignatureController_keyringController = new WeakMap(), _SignatureController_isE
299
296
  });
300
297
  }, _SignatureController_signMessage = function _SignatureController_signMessage(msgParams) {
301
298
  return __awaiter(this, void 0, void 0, function* () {
302
- return yield __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_signAbstractMessage).call(this, __classPrivateFieldGet(this, _SignatureController_messageManager, "f"), controller_utils_1.ApprovalType.EthSign, msgParams, (cleanMsgParams) => __awaiter(this, void 0, void 0, function* () { return yield __classPrivateFieldGet(this, _SignatureController_keyringController, "f").signMessage(cleanMsgParams); }));
299
+ return yield __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_signAbstractMessage).call(this, __classPrivateFieldGet(this, _SignatureController_messageManager, "f"), controller_utils_1.ApprovalType.EthSign, msgParams, (cleanMsgParams) => __awaiter(this, void 0, void 0, function* () {
300
+ return yield this.messagingSystem.call('KeyringController:signMessage', cleanMsgParams);
301
+ }));
303
302
  });
304
303
  }, _SignatureController_signPersonalMessage = function _SignatureController_signPersonalMessage(msgParams) {
305
304
  return __awaiter(this, void 0, void 0, function* () {
306
- return yield __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_signAbstractMessage).call(this, __classPrivateFieldGet(this, _SignatureController_personalMessageManager, "f"), controller_utils_1.ApprovalType.PersonalSign, msgParams, (cleanMsgParams) => __awaiter(this, void 0, void 0, function* () { return yield __classPrivateFieldGet(this, _SignatureController_keyringController, "f").signPersonalMessage(cleanMsgParams); }));
305
+ return yield __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_signAbstractMessage).call(this, __classPrivateFieldGet(this, _SignatureController_personalMessageManager, "f"), controller_utils_1.ApprovalType.PersonalSign, msgParams, (cleanMsgParams) => __awaiter(this, void 0, void 0, function* () {
306
+ return yield this.messagingSystem.call('KeyringController:signPersonalMessage', cleanMsgParams);
307
+ }));
307
308
  });
308
309
  }, _SignatureController_signTypedMessage = function _SignatureController_signTypedMessage(msgParams,
309
310
  /* istanbul ignore next */
@@ -314,9 +315,7 @@ opts = { parseJsonData: true }) {
314
315
  const finalMessageParams = opts.parseJsonData
315
316
  ? __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_removeJsonData).call(this, cleanMsgParams, version)
316
317
  : cleanMsgParams;
317
- return yield __classPrivateFieldGet(this, _SignatureController_keyringController, "f").signTypedMessage(finalMessageParams, {
318
- version,
319
- });
318
+ return yield this.messagingSystem.call('KeyringController:signTypedMessage', finalMessageParams, version);
320
319
  }));
321
320
  });
322
321
  }, _SignatureController_tryForEachMessageManager = function _SignatureController_tryForEachMessageManager(callbackFn, ...args) {
@@ -1 +1 @@
1
- {"version":3,"file":"SignatureController.js","sourceRoot":"","sources":["../src/SignatureController.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n AddApprovalRequest,\n AcceptResultCallbacks,\n AddResult,\n} from '@metamask/approval-controller';\nimport type { RestrictedControllerMessenger } from '@metamask/base-controller';\nimport { BaseControllerV2 } from '@metamask/base-controller';\nimport { ApprovalType, ORIGIN_METAMASK } from '@metamask/controller-utils';\nimport type {\n MessageParams,\n MessageParamsMetamask,\n PersonalMessageParams,\n PersonalMessageParamsMetamask,\n TypedMessageParams,\n TypedMessageParamsMetamask,\n AbstractMessageManager,\n AbstractMessage,\n MessageManagerState,\n AbstractMessageParams,\n AbstractMessageParamsMetamask,\n OriginalRequest,\n TypedMessage,\n PersonalMessage,\n Message,\n} from '@metamask/message-manager';\nimport {\n MessageManager,\n PersonalMessageManager,\n TypedMessageManager,\n} from '@metamask/message-manager';\nimport type { Hex, Json } from '@metamask/utils';\nimport { ethErrors } from 'eth-rpc-errors';\nimport { bufferToHex } from 'ethereumjs-util';\nimport EventEmitter from 'events';\nimport type { Patch } from 'immer';\nimport { cloneDeep } from 'lodash';\n\nconst controllerName = 'SignatureController';\n\nconst stateMetadata = {\n unapprovedMsgs: { persist: false, anonymous: false },\n unapprovedPersonalMsgs: { persist: false, anonymous: false },\n unapprovedTypedMessages: { persist: false, anonymous: false },\n unapprovedMsgCount: { persist: false, anonymous: false },\n unapprovedPersonalMsgCount: { persist: false, anonymous: false },\n unapprovedTypedMessagesCount: { persist: false, anonymous: false },\n};\n\nconst getDefaultState = () => ({\n unapprovedMsgs: {},\n unapprovedPersonalMsgs: {},\n unapprovedTypedMessages: {},\n unapprovedMsgCount: 0,\n unapprovedPersonalMsgCount: 0,\n unapprovedTypedMessagesCount: 0,\n});\n\ntype CoreMessage = AbstractMessage & {\n messageParams: AbstractMessageParams;\n};\n\ntype StateMessage = Required<AbstractMessage> & {\n msgParams: Required<AbstractMessageParams>;\n};\n\ntype SignatureControllerState = {\n unapprovedMsgs: Record<string, StateMessage>;\n unapprovedPersonalMsgs: Record<string, StateMessage>;\n unapprovedTypedMessages: Record<string, StateMessage>;\n unapprovedMsgCount: number;\n unapprovedPersonalMsgCount: number;\n unapprovedTypedMessagesCount: number;\n};\n\ntype AllowedActions = AddApprovalRequest;\n\ntype TypedMessageSigningOptions = {\n parseJsonData: boolean;\n};\n\nexport type GetSignatureState = {\n type: `${typeof controllerName}:getState`;\n handler: () => SignatureControllerState;\n};\n\nexport type SignatureStateChange = {\n type: `${typeof controllerName}:stateChange`;\n payload: [SignatureControllerState, Patch[]];\n};\n\nexport type SignatureControllerActions = GetSignatureState;\n\nexport type SignatureControllerEvents = SignatureStateChange;\n\nexport type SignatureControllerMessenger = RestrictedControllerMessenger<\n typeof controllerName,\n SignatureControllerActions | AllowedActions,\n SignatureControllerEvents,\n AllowedActions['type'],\n never\n>;\n\nexport interface KeyringController {\n signMessage: (messsageParams: MessageParams) => Promise<string>;\n signPersonalMessage: (\n messsageParams: PersonalMessageParams,\n ) => Promise<string>;\n signTypedMessage: (\n messsageParams: TypedMessageParams,\n options: { version: string | undefined },\n ) => Promise<string>;\n}\n\nexport type SignatureControllerOptions = {\n messenger: SignatureControllerMessenger;\n keyringController: KeyringController;\n isEthSignEnabled: () => boolean;\n getAllState: () => unknown;\n securityProviderRequest?: (\n requestData: any,\n methodName: string,\n ) => Promise<any>;\n getCurrentChainId: () => Hex;\n};\n\n/**\n * Controller for creating signing requests requiring user approval.\n */\nexport class SignatureController extends BaseControllerV2<\n typeof controllerName,\n SignatureControllerState,\n SignatureControllerMessenger\n> {\n hub: EventEmitter;\n\n #keyringController: KeyringController;\n\n #isEthSignEnabled: () => boolean;\n\n #getAllState: () => any;\n\n #messageManager: MessageManager;\n\n #personalMessageManager: PersonalMessageManager;\n\n #typedMessageManager: TypedMessageManager;\n\n /**\n * Construct a Sign controller.\n *\n * @param options - The controller options.\n * @param options.messenger - The restricted controller messenger for the sign controller.\n * @param options.keyringController - An instance of a keyring controller used to perform the signing operations.\n * @param options.isEthSignEnabled - Callback to return true if eth_sign is enabled.\n * @param options.getAllState - Callback to retrieve all user state.\n * @param options.securityProviderRequest - A function for verifying a message, whether it is malicious or not.\n * @param options.getCurrentChainId - A function for retrieving the current chainId.\n */\n constructor({\n messenger,\n keyringController,\n isEthSignEnabled,\n getAllState,\n securityProviderRequest,\n getCurrentChainId,\n }: SignatureControllerOptions) {\n super({\n name: controllerName,\n metadata: stateMetadata,\n messenger,\n state: getDefaultState(),\n });\n\n this.#keyringController = keyringController;\n this.#isEthSignEnabled = isEthSignEnabled;\n this.#getAllState = getAllState;\n\n this.hub = new EventEmitter();\n this.#messageManager = new MessageManager(\n undefined,\n undefined,\n securityProviderRequest,\n );\n this.#personalMessageManager = new PersonalMessageManager(\n undefined,\n undefined,\n securityProviderRequest,\n );\n this.#typedMessageManager = new TypedMessageManager(\n undefined,\n undefined,\n securityProviderRequest,\n undefined,\n getCurrentChainId,\n );\n\n this.#handleMessageManagerEvents(this.#messageManager, 'unapprovedMessage');\n this.#handleMessageManagerEvents(\n this.#personalMessageManager,\n 'unapprovedPersonalMessage',\n );\n this.#handleMessageManagerEvents(\n this.#typedMessageManager,\n 'unapprovedTypedMessage',\n );\n\n this.#subscribeToMessageState(\n this.#messageManager,\n (state, newMessages, messageCount) => {\n state.unapprovedMsgs = newMessages;\n state.unapprovedMsgCount = messageCount;\n },\n );\n\n this.#subscribeToMessageState(\n this.#personalMessageManager,\n (state, newMessages, messageCount) => {\n state.unapprovedPersonalMsgs = newMessages;\n state.unapprovedPersonalMsgCount = messageCount;\n },\n );\n\n this.#subscribeToMessageState(\n this.#typedMessageManager,\n (state, newMessages, messageCount) => {\n state.unapprovedTypedMessages = newMessages;\n state.unapprovedTypedMessagesCount = messageCount;\n },\n );\n }\n\n /**\n * A getter for the number of 'unapproved' Messages in this.messages.\n *\n * @returns The number of 'unapproved' Messages in this.messages\n */\n get unapprovedMsgCount(): number {\n return this.#messageManager.getUnapprovedMessagesCount();\n }\n\n /**\n * A getter for the number of 'unapproved' PersonalMessages in this.messages.\n *\n * @returns The number of 'unapproved' PersonalMessages in this.messages\n */\n get unapprovedPersonalMessagesCount(): number {\n return this.#personalMessageManager.getUnapprovedMessagesCount();\n }\n\n /**\n * A getter for the number of 'unapproved' TypedMessages in this.messages.\n *\n * @returns The number of 'unapproved' TypedMessages in this.messages\n */\n get unapprovedTypedMessagesCount(): number {\n return this.#typedMessageManager.getUnapprovedMessagesCount();\n }\n\n /**\n * A getter for returning all messages.\n *\n * @returns The object containing all messages.\n */\n get messages(): { [id: string]: Message | PersonalMessage | TypedMessage } {\n const messages = [\n ...this.#typedMessageManager.getAllMessages(),\n ...this.#personalMessageManager.getAllMessages(),\n ...this.#messageManager.getAllMessages(),\n ];\n\n const messagesObject = messages.reduce<{\n [id: string]: Message | PersonalMessage | TypedMessage;\n }>((acc, message) => {\n acc[message.id] = message;\n return acc;\n }, {});\n\n return messagesObject;\n }\n\n /**\n * Reset the controller state to the initial state.\n */\n resetState() {\n this.update(() => getDefaultState());\n }\n\n /**\n * Reject all unapproved messages of any type.\n *\n * @param reason - A message to indicate why.\n */\n rejectUnapproved(reason?: string) {\n this.#rejectUnapproved(this.#messageManager, reason);\n this.#rejectUnapproved(this.#personalMessageManager, reason);\n this.#rejectUnapproved(this.#typedMessageManager, reason);\n }\n\n /**\n * Clears all unapproved messages from memory.\n */\n clearUnapproved() {\n this.#clearUnapproved(this.#messageManager);\n this.#clearUnapproved(this.#personalMessageManager);\n this.#clearUnapproved(this.#typedMessageManager);\n }\n\n /**\n * Called when a Dapp uses the eth_sign method, to request user approval.\n * eth_sign is a pure signature of arbitrary data. It is on a deprecation\n * path, since this data can be a transaction, or can leak private key\n * information.\n *\n * @param messageParams - The params passed to eth_sign.\n * @param [req] - The original request, containing the origin.\n * @returns Promise resolving to the raw data of the signature request.\n */\n async newUnsignedMessage(\n messageParams: MessageParams,\n req: OriginalRequest,\n ): Promise<string> {\n return this.#newUnsignedAbstractMessage(\n this.#messageManager,\n ApprovalType.EthSign,\n 'Message',\n this.#signMessage.bind(this),\n messageParams,\n req,\n this.#validateUnsignedMessage.bind(this),\n );\n }\n\n /**\n * Called when a dapp uses the personal_sign method.\n * This is identical to the Geth eth_sign method, and may eventually replace\n * eth_sign.\n *\n * We currently define our eth_sign and personal_sign mostly for legacy Dapps.\n *\n * @param messageParams - The params of the message to sign & return to the Dapp.\n * @param req - The original request, containing the origin.\n * @returns Promise resolving to the raw data of the signature request.\n */\n async newUnsignedPersonalMessage(\n messageParams: PersonalMessageParams,\n req: OriginalRequest,\n ): Promise<string> {\n return this.#newUnsignedAbstractMessage(\n this.#personalMessageManager,\n ApprovalType.PersonalSign,\n 'Personal Message',\n this.#signPersonalMessage.bind(this),\n messageParams,\n req,\n );\n }\n\n /**\n * Called when a dapp uses the eth_signTypedData method, per EIP 712.\n *\n * @param messageParams - The params passed to eth_signTypedData.\n * @param req - The original request, containing the origin.\n * @param version - The version indicating the format of the typed data.\n * @param signingOpts - An options bag for signing.\n * @param signingOpts.parseJsonData - Whether to parse the JSON before signing.\n * @returns Promise resolving to the raw data of the signature request.\n */\n async newUnsignedTypedMessage(\n messageParams: TypedMessageParams,\n req: OriginalRequest,\n version: string,\n signingOpts: TypedMessageSigningOptions,\n ): Promise<string> {\n return this.#newUnsignedAbstractMessage(\n this.#typedMessageManager,\n ApprovalType.EthSignTypedData,\n 'Typed Message',\n this.#signTypedMessage.bind(this),\n messageParams,\n req,\n undefined,\n version,\n signingOpts,\n );\n }\n\n /**\n * Called to update the message status as signed.\n *\n * @param messageId - The id of the Message to update.\n * @param signature - The data to update the message with.\n */\n setDeferredSignSuccess(messageId: string, signature: any) {\n this.#tryForEachMessageManager(\n this.#trySetDeferredSignSuccess,\n messageId,\n signature,\n );\n }\n\n /**\n * Called when the message metadata needs to be updated.\n *\n * @param messageId - The id of the message to update.\n * @param metadata - The data to update the metadata property in the message.\n */\n setMessageMetadata(messageId: string, metadata: Json) {\n this.#tryForEachMessageManager(\n this.#trySetMessageMetadata,\n messageId,\n metadata,\n );\n }\n\n /**\n * Called to cancel a signing message.\n *\n * @param messageId - The id of the Message to update.\n */\n setDeferredSignError(messageId: string) {\n this.#tryForEachMessageManager(this.#trySetDeferredSignError, messageId);\n }\n\n setTypedMessageInProgress(messageId: string) {\n this.#typedMessageManager.setMessageStatusInProgress(messageId);\n }\n\n setPersonalMessageInProgress(messageId: string) {\n this.#personalMessageManager.setMessageStatusInProgress(messageId);\n }\n\n #validateUnsignedMessage(messageParams: MessageParamsMetamask): void {\n if (!this.#isEthSignEnabled()) {\n throw ethErrors.rpc.methodNotFound(\n 'eth_sign has been disabled. You must enable it in the advanced settings',\n );\n }\n const data = this.#normalizeMsgData(messageParams.data);\n // 64 hex + \"0x\" at the beginning\n // This is needed because Ethereum's EcSign works only on 32 byte numbers\n // For 67 length see: https://github.com/MetaMask/metamask-extension/pull/12679/files#r749479607\n if (data.length !== 66 && data.length !== 67) {\n throw ethErrors.rpc.invalidParams(\n 'eth_sign requires 32 byte message hash',\n );\n }\n }\n\n async #newUnsignedAbstractMessage<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n SO,\n >(\n messageManager: AbstractMessageManager<M, P, PM>,\n approvalType: ApprovalType,\n messageName: string,\n signMessage: (messageParams: PM, signingOpts?: SO) => void,\n messageParams: PM,\n req: OriginalRequest,\n validateMessage?: (params: PM) => void,\n version?: string,\n signingOpts?: SO,\n ) {\n if (validateMessage) {\n validateMessage(messageParams);\n }\n\n let resultCallbacks: AcceptResultCallbacks | undefined;\n try {\n const messageId = await messageManager.addUnapprovedMessage(\n messageParams,\n req,\n version,\n );\n\n const messageParamsWithId = {\n ...messageParams,\n metamaskId: messageId,\n ...(version && { version }),\n };\n\n const signaturePromise = messageManager.waitForFinishStatus(\n messageParamsWithId,\n messageName,\n );\n\n try {\n const acceptResult = await this.#requestApproval(\n messageParamsWithId,\n approvalType,\n );\n\n resultCallbacks = acceptResult.resultCallbacks;\n } catch {\n this.#cancelAbstractMessage(messageManager, messageId);\n throw ethErrors.provider.userRejectedRequest(\n 'User rejected the request.',\n );\n }\n\n await signMessage(messageParamsWithId, signingOpts);\n\n const signatureResult = await signaturePromise;\n\n /* istanbul ignore next */\n resultCallbacks?.success(signatureResult);\n\n return signatureResult;\n } catch (error) {\n resultCallbacks?.error(error as Error);\n throw error;\n }\n }\n\n /**\n * Signifies user intent to complete an eth_sign method.\n *\n * @param msgParams - The params passed to eth_call.\n * @returns Signature result from signing.\n */\n async #signMessage(msgParams: MessageParamsMetamask) {\n return await this.#signAbstractMessage(\n this.#messageManager,\n ApprovalType.EthSign,\n msgParams,\n async (cleanMsgParams) =>\n await this.#keyringController.signMessage(cleanMsgParams),\n );\n }\n\n /**\n * Signifies a user's approval to sign a personal_sign message in queue.\n * Triggers signing, and the callback function from newUnsignedPersonalMessage.\n *\n * @param msgParams - The params of the message to sign & return to the Dapp.\n * @returns Signature result from signing.\n */\n async #signPersonalMessage(msgParams: PersonalMessageParamsMetamask) {\n return await this.#signAbstractMessage(\n this.#personalMessageManager,\n ApprovalType.PersonalSign,\n msgParams,\n async (cleanMsgParams) =>\n await this.#keyringController.signPersonalMessage(cleanMsgParams),\n );\n }\n\n /**\n * The method for a user approving a call to eth_signTypedData, per EIP 712.\n * Triggers the callback in newUnsignedTypedMessage.\n *\n * @param msgParams - The params passed to eth_signTypedData.\n * @param opts - The options for the method.\n * @param opts.parseJsonData - Whether to parse JSON data before calling the KeyringController.\n * @returns Signature result from signing.\n */\n async #signTypedMessage(\n msgParams: TypedMessageParamsMetamask,\n /* istanbul ignore next */\n opts = { parseJsonData: true },\n ): Promise<any> {\n const { version } = msgParams;\n return await this.#signAbstractMessage(\n this.#typedMessageManager,\n ApprovalType.EthSignTypedData,\n msgParams,\n async (cleanMsgParams) => {\n const finalMessageParams = opts.parseJsonData\n ? this.#removeJsonData(cleanMsgParams, version as string)\n : cleanMsgParams;\n\n return await this.#keyringController.signTypedMessage(\n finalMessageParams,\n {\n version,\n },\n );\n },\n );\n }\n\n #tryForEachMessageManager(\n callbackFn: (\n messageManager: AbstractMessageManager<any, any, any>,\n ...args: any[]\n ) => boolean,\n ...args: any\n ) {\n const messageManagers = [\n this.#messageManager,\n this.#personalMessageManager,\n this.#typedMessageManager,\n ];\n\n for (const manager of messageManagers) {\n if (callbackFn(manager, ...args)) {\n return true;\n }\n }\n throw new Error('Message not found');\n }\n\n #trySetDeferredSignSuccess(\n messageManager: AbstractMessageManager<any, any, any>,\n messageId: string,\n signature: any,\n ) {\n try {\n messageManager.setMessageStatusSigned(messageId, signature);\n return true;\n } catch (error) {\n return false;\n }\n }\n\n #trySetMessageMetadata(\n messageManager: AbstractMessageManager<any, any, any>,\n messageId: string,\n metadata: Json,\n ) {\n try {\n messageManager.setMetadata(messageId, metadata);\n return true;\n } catch (error) {\n return false;\n }\n }\n\n #trySetDeferredSignError(\n messageManager: AbstractMessageManager<any, any, any>,\n messageId: string,\n ) {\n try {\n messageManager.rejectMessage(messageId);\n return true;\n } catch (error) {\n return false;\n }\n }\n\n #rejectUnapproved<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(messageManager: AbstractMessageManager<M, P, PM>, reason?: string) {\n Object.keys(messageManager.getUnapprovedMessages()).forEach((messageId) => {\n this.#cancelAbstractMessage(messageManager, messageId, reason);\n });\n }\n\n #clearUnapproved<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(messageManager: AbstractMessageManager<M, P, PM>) {\n messageManager.update({\n unapprovedMessages: {},\n unapprovedMessagesCount: 0,\n });\n }\n\n async #signAbstractMessage<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(\n messageManager: AbstractMessageManager<M, P, PM>,\n methodName: string,\n msgParams: PM,\n getSignature: (cleanMessageParams: P) => Promise<any>,\n ) {\n console.info(`MetaMaskController - ${methodName}`);\n\n const messageId = msgParams.metamaskId as string;\n\n try {\n const cleanMessageParams = await messageManager.approveMessage(msgParams);\n\n try {\n const signature = await getSignature(cleanMessageParams);\n\n this.hub.emit(`${methodName}:signed`, { signature, messageId });\n\n if (!cleanMessageParams.deferSetAsSigned) {\n messageManager.setMessageStatusSigned(messageId, signature);\n }\n\n return signature;\n } catch (error) {\n this.hub.emit(`${messageId}:signError`, { error });\n throw error;\n }\n } catch (error: any) {\n console.info(`MetaMaskController - ${methodName} failed.`, error);\n this.#errorMessage(messageManager, messageId, error.message);\n throw error;\n }\n }\n\n #errorMessage<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(\n messageManager: AbstractMessageManager<M, P, PM>,\n messageId: string,\n error: string,\n ) {\n if (messageManager instanceof TypedMessageManager) {\n messageManager.setMessageStatusErrored(messageId, error);\n } else {\n this.#cancelAbstractMessage(messageManager, messageId);\n }\n }\n\n #cancelAbstractMessage<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(\n messageManager: AbstractMessageManager<M, P, PM>,\n messageId: string,\n reason?: string,\n ) {\n if (reason) {\n const message = this.#getMessage(messageId);\n this.hub.emit('cancelWithReason', { message, reason });\n }\n messageManager.rejectMessage(messageId);\n }\n\n #handleMessageManagerEvents<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(messageManager: AbstractMessageManager<M, P, PM>, eventName: string) {\n messageManager.hub.on('updateBadge', () => {\n this.hub.emit('updateBadge');\n });\n\n messageManager.hub.on(\n 'unapprovedMessage',\n (msgParams: AbstractMessageParamsMetamask) => {\n this.hub.emit(eventName, msgParams);\n },\n );\n }\n\n #subscribeToMessageState<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(\n messageManager: AbstractMessageManager<M, P, PM>,\n updateState: (\n state: SignatureControllerState,\n newMessages: Record<string, StateMessage>,\n messageCount: number,\n ) => void,\n ) {\n messageManager.subscribe((state: MessageManagerState<AbstractMessage>) => {\n const newMessages = this.#migrateMessages(\n state.unapprovedMessages as any,\n );\n\n this.update(() => {\n const newState = { ...this.state };\n updateState(newState, newMessages, state.unapprovedMessagesCount);\n return newState;\n });\n });\n }\n\n #migrateMessages(\n coreMessages: Record<string, CoreMessage>,\n ): Record<string, StateMessage> {\n const stateMessages: Record<string, StateMessage> = {};\n\n for (const messageId of Object.keys(coreMessages)) {\n const coreMessage = coreMessages[messageId];\n const stateMessage = this.#migrateMessage(coreMessage);\n\n stateMessages[messageId] = stateMessage;\n }\n\n return stateMessages;\n }\n\n #migrateMessage(coreMessage: CoreMessage): StateMessage {\n const { messageParams, ...coreMessageData } = coreMessage;\n\n // Core message managers use messageParams but frontend uses msgParams with lots of references\n const stateMessage = {\n ...coreMessageData,\n msgParams: messageParams,\n };\n\n return stateMessage as StateMessage;\n }\n\n #normalizeMsgData(data: string) {\n if (data.startsWith('0x')) {\n // data is already hex\n return data;\n }\n // data is unicode, convert to hex\n return bufferToHex(Buffer.from(data, 'utf8'));\n }\n\n #getMessage(messageId: string): StateMessage {\n return {\n ...this.state.unapprovedMsgs,\n ...this.state.unapprovedPersonalMsgs,\n ...this.state.unapprovedTypedMessages,\n }[messageId];\n }\n\n async #requestApproval(\n msgParams: AbstractMessageParamsMetamask,\n type: ApprovalType,\n ): Promise<AddResult> {\n const id = msgParams.metamaskId as string;\n const origin = msgParams.origin || ORIGIN_METAMASK;\n\n // We are explicitly cloning the message params here to prevent the mutation errors on development mode\n // Because sending it through the messaging system will make the object read only\n const clonedMsgParams = cloneDeep(msgParams);\n return (await this.messagingSystem.call(\n 'ApprovalController:addRequest',\n {\n id,\n origin,\n type,\n requestData: clonedMsgParams as Required<AbstractMessageParamsMetamask>,\n expectsResult: true,\n },\n true,\n )) as Promise<AddResult>;\n }\n\n #removeJsonData(\n messageParams: TypedMessageParams,\n version: string,\n ): TypedMessageParams {\n if (version === 'V1' || typeof messageParams.data !== 'string') {\n return messageParams;\n }\n\n return {\n ...messageParams,\n data: JSON.parse(messageParams.data),\n };\n }\n}\n"]}
1
+ {"version":3,"file":"SignatureController.js","sourceRoot":"","sources":["../src/SignatureController.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n AddApprovalRequest,\n AcceptResultCallbacks,\n AddResult,\n} from '@metamask/approval-controller';\nimport type { RestrictedControllerMessenger } from '@metamask/base-controller';\nimport { BaseControllerV2 } from '@metamask/base-controller';\nimport { ApprovalType, ORIGIN_METAMASK } from '@metamask/controller-utils';\nimport type {\n KeyringControllerSignMessageAction,\n KeyringControllerSignPersonalMessageAction,\n KeyringControllerSignTypedMessageAction,\n SignTypedDataVersion,\n} from '@metamask/keyring-controller';\nimport type {\n MessageParams,\n MessageParamsMetamask,\n PersonalMessageParams,\n PersonalMessageParamsMetamask,\n TypedMessageParams,\n TypedMessageParamsMetamask,\n AbstractMessageManager,\n AbstractMessage,\n MessageManagerState,\n AbstractMessageParams,\n AbstractMessageParamsMetamask,\n OriginalRequest,\n TypedMessage,\n PersonalMessage,\n Message,\n} from '@metamask/message-manager';\nimport {\n MessageManager,\n PersonalMessageManager,\n TypedMessageManager,\n} from '@metamask/message-manager';\nimport type { Hex, Json } from '@metamask/utils';\nimport { ethErrors } from 'eth-rpc-errors';\nimport { bufferToHex } from 'ethereumjs-util';\nimport EventEmitter from 'events';\nimport type { Patch } from 'immer';\nimport { cloneDeep } from 'lodash';\n\nconst controllerName = 'SignatureController';\n\nconst stateMetadata = {\n unapprovedMsgs: { persist: false, anonymous: false },\n unapprovedPersonalMsgs: { persist: false, anonymous: false },\n unapprovedTypedMessages: { persist: false, anonymous: false },\n unapprovedMsgCount: { persist: false, anonymous: false },\n unapprovedPersonalMsgCount: { persist: false, anonymous: false },\n unapprovedTypedMessagesCount: { persist: false, anonymous: false },\n};\n\nconst getDefaultState = () => ({\n unapprovedMsgs: {},\n unapprovedPersonalMsgs: {},\n unapprovedTypedMessages: {},\n unapprovedMsgCount: 0,\n unapprovedPersonalMsgCount: 0,\n unapprovedTypedMessagesCount: 0,\n});\n\ntype CoreMessage = AbstractMessage & {\n messageParams: AbstractMessageParams;\n};\n\ntype StateMessage = Required<AbstractMessage> & {\n msgParams: Required<AbstractMessageParams>;\n};\n\ntype SignatureControllerState = {\n unapprovedMsgs: Record<string, StateMessage>;\n unapprovedPersonalMsgs: Record<string, StateMessage>;\n unapprovedTypedMessages: Record<string, StateMessage>;\n unapprovedMsgCount: number;\n unapprovedPersonalMsgCount: number;\n unapprovedTypedMessagesCount: number;\n};\n\ntype AllowedActions =\n | AddApprovalRequest\n | KeyringControllerSignMessageAction\n | KeyringControllerSignPersonalMessageAction\n | KeyringControllerSignTypedMessageAction;\n\ntype TypedMessageSigningOptions = {\n parseJsonData: boolean;\n};\n\nexport type GetSignatureState = {\n type: `${typeof controllerName}:getState`;\n handler: () => SignatureControllerState;\n};\n\nexport type SignatureStateChange = {\n type: `${typeof controllerName}:stateChange`;\n payload: [SignatureControllerState, Patch[]];\n};\n\nexport type SignatureControllerActions = GetSignatureState;\n\nexport type SignatureControllerEvents = SignatureStateChange;\n\nexport type SignatureControllerMessenger = RestrictedControllerMessenger<\n typeof controllerName,\n SignatureControllerActions | AllowedActions,\n SignatureControllerEvents,\n AllowedActions['type'],\n never\n>;\n\nexport type SignatureControllerOptions = {\n messenger: SignatureControllerMessenger;\n isEthSignEnabled: () => boolean;\n getAllState: () => unknown;\n securityProviderRequest?: (\n requestData: any,\n methodName: string,\n ) => Promise<any>;\n getCurrentChainId: () => Hex;\n};\n\n/**\n * Controller for creating signing requests requiring user approval.\n */\nexport class SignatureController extends BaseControllerV2<\n typeof controllerName,\n SignatureControllerState,\n SignatureControllerMessenger\n> {\n hub: EventEmitter;\n\n #isEthSignEnabled: () => boolean;\n\n #getAllState: () => any;\n\n #messageManager: MessageManager;\n\n #personalMessageManager: PersonalMessageManager;\n\n #typedMessageManager: TypedMessageManager;\n\n /**\n * Construct a Sign controller.\n *\n * @param options - The controller options.\n * @param options.messenger - The restricted controller messenger for the sign controller.\n * @param options.isEthSignEnabled - Callback to return true if eth_sign is enabled.\n * @param options.getAllState - Callback to retrieve all user state.\n * @param options.securityProviderRequest - A function for verifying a message, whether it is malicious or not.\n * @param options.getCurrentChainId - A function for retrieving the current chainId.\n */\n constructor({\n messenger,\n isEthSignEnabled,\n getAllState,\n securityProviderRequest,\n getCurrentChainId,\n }: SignatureControllerOptions) {\n super({\n name: controllerName,\n metadata: stateMetadata,\n messenger,\n state: getDefaultState(),\n });\n\n this.#isEthSignEnabled = isEthSignEnabled;\n this.#getAllState = getAllState;\n\n this.hub = new EventEmitter();\n this.#messageManager = new MessageManager(\n undefined,\n undefined,\n securityProviderRequest,\n );\n this.#personalMessageManager = new PersonalMessageManager(\n undefined,\n undefined,\n securityProviderRequest,\n );\n this.#typedMessageManager = new TypedMessageManager(\n undefined,\n undefined,\n securityProviderRequest,\n undefined,\n getCurrentChainId,\n );\n\n this.#handleMessageManagerEvents(this.#messageManager, 'unapprovedMessage');\n this.#handleMessageManagerEvents(\n this.#personalMessageManager,\n 'unapprovedPersonalMessage',\n );\n this.#handleMessageManagerEvents(\n this.#typedMessageManager,\n 'unapprovedTypedMessage',\n );\n\n this.#subscribeToMessageState(\n this.#messageManager,\n (state, newMessages, messageCount) => {\n state.unapprovedMsgs = newMessages;\n state.unapprovedMsgCount = messageCount;\n },\n );\n\n this.#subscribeToMessageState(\n this.#personalMessageManager,\n (state, newMessages, messageCount) => {\n state.unapprovedPersonalMsgs = newMessages;\n state.unapprovedPersonalMsgCount = messageCount;\n },\n );\n\n this.#subscribeToMessageState(\n this.#typedMessageManager,\n (state, newMessages, messageCount) => {\n state.unapprovedTypedMessages = newMessages;\n state.unapprovedTypedMessagesCount = messageCount;\n },\n );\n }\n\n /**\n * A getter for the number of 'unapproved' Messages in this.messages.\n *\n * @returns The number of 'unapproved' Messages in this.messages\n */\n get unapprovedMsgCount(): number {\n return this.#messageManager.getUnapprovedMessagesCount();\n }\n\n /**\n * A getter for the number of 'unapproved' PersonalMessages in this.messages.\n *\n * @returns The number of 'unapproved' PersonalMessages in this.messages\n */\n get unapprovedPersonalMessagesCount(): number {\n return this.#personalMessageManager.getUnapprovedMessagesCount();\n }\n\n /**\n * A getter for the number of 'unapproved' TypedMessages in this.messages.\n *\n * @returns The number of 'unapproved' TypedMessages in this.messages\n */\n get unapprovedTypedMessagesCount(): number {\n return this.#typedMessageManager.getUnapprovedMessagesCount();\n }\n\n /**\n * A getter for returning all messages.\n *\n * @returns The object containing all messages.\n */\n get messages(): { [id: string]: Message | PersonalMessage | TypedMessage } {\n const messages = [\n ...this.#typedMessageManager.getAllMessages(),\n ...this.#personalMessageManager.getAllMessages(),\n ...this.#messageManager.getAllMessages(),\n ];\n\n const messagesObject = messages.reduce<{\n [id: string]: Message | PersonalMessage | TypedMessage;\n }>((acc, message) => {\n acc[message.id] = message;\n return acc;\n }, {});\n\n return messagesObject;\n }\n\n /**\n * Reset the controller state to the initial state.\n */\n resetState() {\n this.update(() => getDefaultState());\n }\n\n /**\n * Reject all unapproved messages of any type.\n *\n * @param reason - A message to indicate why.\n */\n rejectUnapproved(reason?: string) {\n this.#rejectUnapproved(this.#messageManager, reason);\n this.#rejectUnapproved(this.#personalMessageManager, reason);\n this.#rejectUnapproved(this.#typedMessageManager, reason);\n }\n\n /**\n * Clears all unapproved messages from memory.\n */\n clearUnapproved() {\n this.#clearUnapproved(this.#messageManager);\n this.#clearUnapproved(this.#personalMessageManager);\n this.#clearUnapproved(this.#typedMessageManager);\n }\n\n /**\n * Called when a Dapp uses the eth_sign method, to request user approval.\n * eth_sign is a pure signature of arbitrary data. It is on a deprecation\n * path, since this data can be a transaction, or can leak private key\n * information.\n *\n * @param messageParams - The params passed to eth_sign.\n * @param [req] - The original request, containing the origin.\n * @returns Promise resolving to the raw data of the signature request.\n */\n async newUnsignedMessage(\n messageParams: MessageParams,\n req: OriginalRequest,\n ): Promise<string> {\n return this.#newUnsignedAbstractMessage(\n this.#messageManager,\n ApprovalType.EthSign,\n 'Message',\n this.#signMessage.bind(this),\n messageParams,\n req,\n this.#validateUnsignedMessage.bind(this),\n );\n }\n\n /**\n * Called when a dapp uses the personal_sign method.\n * This is identical to the Geth eth_sign method, and may eventually replace\n * eth_sign.\n *\n * We currently define our eth_sign and personal_sign mostly for legacy Dapps.\n *\n * @param messageParams - The params of the message to sign & return to the Dapp.\n * @param req - The original request, containing the origin.\n * @returns Promise resolving to the raw data of the signature request.\n */\n async newUnsignedPersonalMessage(\n messageParams: PersonalMessageParams,\n req: OriginalRequest,\n ): Promise<string> {\n return this.#newUnsignedAbstractMessage(\n this.#personalMessageManager,\n ApprovalType.PersonalSign,\n 'Personal Message',\n this.#signPersonalMessage.bind(this),\n messageParams,\n req,\n );\n }\n\n /**\n * Called when a dapp uses the eth_signTypedData method, per EIP 712.\n *\n * @param messageParams - The params passed to eth_signTypedData.\n * @param req - The original request, containing the origin.\n * @param version - The version indicating the format of the typed data.\n * @param signingOpts - An options bag for signing.\n * @param signingOpts.parseJsonData - Whether to parse the JSON before signing.\n * @returns Promise resolving to the raw data of the signature request.\n */\n async newUnsignedTypedMessage(\n messageParams: TypedMessageParams,\n req: OriginalRequest,\n version: string,\n signingOpts: TypedMessageSigningOptions,\n ): Promise<string> {\n return this.#newUnsignedAbstractMessage(\n this.#typedMessageManager,\n ApprovalType.EthSignTypedData,\n 'Typed Message',\n this.#signTypedMessage.bind(this),\n messageParams,\n req,\n undefined,\n version,\n signingOpts,\n );\n }\n\n /**\n * Called to update the message status as signed.\n *\n * @param messageId - The id of the Message to update.\n * @param signature - The data to update the message with.\n */\n setDeferredSignSuccess(messageId: string, signature: any) {\n this.#tryForEachMessageManager(\n this.#trySetDeferredSignSuccess,\n messageId,\n signature,\n );\n }\n\n /**\n * Called when the message metadata needs to be updated.\n *\n * @param messageId - The id of the message to update.\n * @param metadata - The data to update the metadata property in the message.\n */\n setMessageMetadata(messageId: string, metadata: Json) {\n this.#tryForEachMessageManager(\n this.#trySetMessageMetadata,\n messageId,\n metadata,\n );\n }\n\n /**\n * Called to cancel a signing message.\n *\n * @param messageId - The id of the Message to update.\n */\n setDeferredSignError(messageId: string) {\n this.#tryForEachMessageManager(this.#trySetDeferredSignError, messageId);\n }\n\n setTypedMessageInProgress(messageId: string) {\n this.#typedMessageManager.setMessageStatusInProgress(messageId);\n }\n\n setPersonalMessageInProgress(messageId: string) {\n this.#personalMessageManager.setMessageStatusInProgress(messageId);\n }\n\n #validateUnsignedMessage(messageParams: MessageParamsMetamask): void {\n if (!this.#isEthSignEnabled()) {\n throw ethErrors.rpc.methodNotFound(\n 'eth_sign has been disabled. You must enable it in the advanced settings',\n );\n }\n const data = this.#normalizeMsgData(messageParams.data);\n // 64 hex + \"0x\" at the beginning\n // This is needed because Ethereum's EcSign works only on 32 byte numbers\n // For 67 length see: https://github.com/MetaMask/metamask-extension/pull/12679/files#r749479607\n if (data.length !== 66 && data.length !== 67) {\n throw ethErrors.rpc.invalidParams(\n 'eth_sign requires 32 byte message hash',\n );\n }\n }\n\n async #newUnsignedAbstractMessage<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n SO,\n >(\n messageManager: AbstractMessageManager<M, P, PM>,\n approvalType: ApprovalType,\n messageName: string,\n signMessage: (messageParams: PM, signingOpts?: SO) => void,\n messageParams: PM,\n req: OriginalRequest,\n validateMessage?: (params: PM) => void,\n version?: string,\n signingOpts?: SO,\n ) {\n if (validateMessage) {\n validateMessage(messageParams);\n }\n\n let resultCallbacks: AcceptResultCallbacks | undefined;\n try {\n const messageId = await messageManager.addUnapprovedMessage(\n messageParams,\n req,\n version,\n );\n\n const messageParamsWithId = {\n ...messageParams,\n metamaskId: messageId,\n ...(version && { version }),\n };\n\n const signaturePromise = messageManager.waitForFinishStatus(\n messageParamsWithId,\n messageName,\n );\n\n try {\n const acceptResult = await this.#requestApproval(\n messageParamsWithId,\n approvalType,\n );\n\n resultCallbacks = acceptResult.resultCallbacks;\n } catch {\n this.#cancelAbstractMessage(messageManager, messageId);\n throw ethErrors.provider.userRejectedRequest(\n 'User rejected the request.',\n );\n }\n\n await signMessage(messageParamsWithId, signingOpts);\n\n const signatureResult = await signaturePromise;\n\n /* istanbul ignore next */\n resultCallbacks?.success(signatureResult);\n\n return signatureResult;\n } catch (error) {\n resultCallbacks?.error(error as Error);\n throw error;\n }\n }\n\n /**\n * Signifies user intent to complete an eth_sign method.\n *\n * @param msgParams - The params passed to eth_call.\n * @returns Signature result from signing.\n */\n async #signMessage(msgParams: MessageParamsMetamask) {\n return await this.#signAbstractMessage(\n this.#messageManager,\n ApprovalType.EthSign,\n msgParams,\n async (cleanMsgParams) =>\n await this.messagingSystem.call(\n 'KeyringController:signMessage',\n cleanMsgParams,\n ),\n );\n }\n\n /**\n * Signifies a user's approval to sign a personal_sign message in queue.\n * Triggers signing, and the callback function from newUnsignedPersonalMessage.\n *\n * @param msgParams - The params of the message to sign & return to the Dapp.\n * @returns Signature result from signing.\n */\n async #signPersonalMessage(msgParams: PersonalMessageParamsMetamask) {\n return await this.#signAbstractMessage(\n this.#personalMessageManager,\n ApprovalType.PersonalSign,\n msgParams,\n async (cleanMsgParams) =>\n await this.messagingSystem.call(\n 'KeyringController:signPersonalMessage',\n cleanMsgParams,\n ),\n );\n }\n\n /**\n * The method for a user approving a call to eth_signTypedData, per EIP 712.\n * Triggers the callback in newUnsignedTypedMessage.\n *\n * @param msgParams - The params passed to eth_signTypedData.\n * @param opts - The options for the method.\n * @param opts.parseJsonData - Whether to parse JSON data before calling the KeyringController.\n * @returns Signature result from signing.\n */\n async #signTypedMessage(\n msgParams: TypedMessageParamsMetamask,\n /* istanbul ignore next */\n opts = { parseJsonData: true },\n ): Promise<any> {\n const { version } = msgParams;\n return await this.#signAbstractMessage(\n this.#typedMessageManager,\n ApprovalType.EthSignTypedData,\n msgParams,\n async (cleanMsgParams) => {\n const finalMessageParams = opts.parseJsonData\n ? this.#removeJsonData(cleanMsgParams, version as string)\n : cleanMsgParams;\n\n return await this.messagingSystem.call(\n 'KeyringController:signTypedMessage',\n finalMessageParams,\n version as SignTypedDataVersion,\n );\n },\n );\n }\n\n #tryForEachMessageManager(\n callbackFn: (\n messageManager: AbstractMessageManager<any, any, any>,\n ...args: any[]\n ) => boolean,\n ...args: any\n ) {\n const messageManagers = [\n this.#messageManager,\n this.#personalMessageManager,\n this.#typedMessageManager,\n ];\n\n for (const manager of messageManagers) {\n if (callbackFn(manager, ...args)) {\n return true;\n }\n }\n throw new Error('Message not found');\n }\n\n #trySetDeferredSignSuccess(\n messageManager: AbstractMessageManager<any, any, any>,\n messageId: string,\n signature: any,\n ) {\n try {\n messageManager.setMessageStatusSigned(messageId, signature);\n return true;\n } catch (error) {\n return false;\n }\n }\n\n #trySetMessageMetadata(\n messageManager: AbstractMessageManager<any, any, any>,\n messageId: string,\n metadata: Json,\n ) {\n try {\n messageManager.setMetadata(messageId, metadata);\n return true;\n } catch (error) {\n return false;\n }\n }\n\n #trySetDeferredSignError(\n messageManager: AbstractMessageManager<any, any, any>,\n messageId: string,\n ) {\n try {\n messageManager.rejectMessage(messageId);\n return true;\n } catch (error) {\n return false;\n }\n }\n\n #rejectUnapproved<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(messageManager: AbstractMessageManager<M, P, PM>, reason?: string) {\n Object.keys(messageManager.getUnapprovedMessages()).forEach((messageId) => {\n this.#cancelAbstractMessage(messageManager, messageId, reason);\n });\n }\n\n #clearUnapproved<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(messageManager: AbstractMessageManager<M, P, PM>) {\n messageManager.update({\n unapprovedMessages: {},\n unapprovedMessagesCount: 0,\n });\n }\n\n async #signAbstractMessage<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(\n messageManager: AbstractMessageManager<M, P, PM>,\n methodName: string,\n msgParams: PM,\n getSignature: (cleanMessageParams: P) => Promise<any>,\n ) {\n console.info(`MetaMaskController - ${methodName}`);\n\n const messageId = msgParams.metamaskId as string;\n\n try {\n const cleanMessageParams = await messageManager.approveMessage(msgParams);\n\n try {\n const signature = await getSignature(cleanMessageParams);\n\n this.hub.emit(`${methodName}:signed`, { signature, messageId });\n\n if (!cleanMessageParams.deferSetAsSigned) {\n messageManager.setMessageStatusSigned(messageId, signature);\n }\n\n return signature;\n } catch (error) {\n this.hub.emit(`${messageId}:signError`, { error });\n throw error;\n }\n } catch (error: any) {\n console.info(`MetaMaskController - ${methodName} failed.`, error);\n this.#errorMessage(messageManager, messageId, error.message);\n throw error;\n }\n }\n\n #errorMessage<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(\n messageManager: AbstractMessageManager<M, P, PM>,\n messageId: string,\n error: string,\n ) {\n if (messageManager instanceof TypedMessageManager) {\n messageManager.setMessageStatusErrored(messageId, error);\n } else {\n this.#cancelAbstractMessage(messageManager, messageId);\n }\n }\n\n #cancelAbstractMessage<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(\n messageManager: AbstractMessageManager<M, P, PM>,\n messageId: string,\n reason?: string,\n ) {\n if (reason) {\n const message = this.#getMessage(messageId);\n this.hub.emit('cancelWithReason', { message, reason });\n }\n messageManager.rejectMessage(messageId);\n }\n\n #handleMessageManagerEvents<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(messageManager: AbstractMessageManager<M, P, PM>, eventName: string) {\n messageManager.hub.on('updateBadge', () => {\n this.hub.emit('updateBadge');\n });\n\n messageManager.hub.on(\n 'unapprovedMessage',\n (msgParams: AbstractMessageParamsMetamask) => {\n this.hub.emit(eventName, msgParams);\n },\n );\n }\n\n #subscribeToMessageState<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(\n messageManager: AbstractMessageManager<M, P, PM>,\n updateState: (\n state: SignatureControllerState,\n newMessages: Record<string, StateMessage>,\n messageCount: number,\n ) => void,\n ) {\n messageManager.subscribe((state: MessageManagerState<AbstractMessage>) => {\n const newMessages = this.#migrateMessages(\n state.unapprovedMessages as any,\n );\n\n this.update(() => {\n const newState = { ...this.state };\n updateState(newState, newMessages, state.unapprovedMessagesCount);\n return newState;\n });\n });\n }\n\n #migrateMessages(\n coreMessages: Record<string, CoreMessage>,\n ): Record<string, StateMessage> {\n const stateMessages: Record<string, StateMessage> = {};\n\n for (const messageId of Object.keys(coreMessages)) {\n const coreMessage = coreMessages[messageId];\n const stateMessage = this.#migrateMessage(coreMessage);\n\n stateMessages[messageId] = stateMessage;\n }\n\n return stateMessages;\n }\n\n #migrateMessage(coreMessage: CoreMessage): StateMessage {\n const { messageParams, ...coreMessageData } = coreMessage;\n\n // Core message managers use messageParams but frontend uses msgParams with lots of references\n const stateMessage = {\n ...coreMessageData,\n msgParams: messageParams,\n };\n\n return stateMessage as StateMessage;\n }\n\n #normalizeMsgData(data: string) {\n if (data.startsWith('0x')) {\n // data is already hex\n return data;\n }\n // data is unicode, convert to hex\n return bufferToHex(Buffer.from(data, 'utf8'));\n }\n\n #getMessage(messageId: string): StateMessage {\n return {\n ...this.state.unapprovedMsgs,\n ...this.state.unapprovedPersonalMsgs,\n ...this.state.unapprovedTypedMessages,\n }[messageId];\n }\n\n async #requestApproval(\n msgParams: AbstractMessageParamsMetamask,\n type: ApprovalType,\n ): Promise<AddResult> {\n const id = msgParams.metamaskId as string;\n const origin = msgParams.origin || ORIGIN_METAMASK;\n\n // We are explicitly cloning the message params here to prevent the mutation errors on development mode\n // Because sending it through the messaging system will make the object read only\n const clonedMsgParams = cloneDeep(msgParams);\n return (await this.messagingSystem.call(\n 'ApprovalController:addRequest',\n {\n id,\n origin,\n type,\n requestData: clonedMsgParams as Required<AbstractMessageParamsMetamask>,\n expectsResult: true,\n },\n true,\n )) as Promise<AddResult>;\n }\n\n #removeJsonData(\n messageParams: TypedMessageParams,\n version: string,\n ): TypedMessageParams {\n if (version === 'V1' || typeof messageParams.data !== 'string') {\n return messageParams;\n }\n\n return {\n ...messageParams,\n data: JSON.parse(messageParams.data),\n };\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask-previews/signature-controller",
3
- "version": "5.3.1-preview.c338244",
3
+ "version": "5.3.1-preview.c5136a4",
4
4
  "description": "Processes signing requests in order to sign arbitrary and typed data",
5
5
  "keywords": [
6
6
  "MetaMask",
@@ -40,6 +40,7 @@
40
40
  },
41
41
  "devDependencies": {
42
42
  "@metamask/auto-changelog": "^3.1.0",
43
+ "@metamask/keyring-controller": "^7.4.0",
43
44
  "@types/jest": "^27.4.1",
44
45
  "deepmerge": "^4.2.2",
45
46
  "jest": "^27.5.1",