@metamask-previews/signature-controller 19.1.0-preview-2c5a4f93 → 19.1.0-preview-00a41cb8

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.
@@ -13,7 +13,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
13
13
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
15
  };
16
- var _SignatureController_instances, _SignatureController_trace, _SignatureController_parseTypedData, _SignatureController_processSignatureRequest, _SignatureController_addMetadata, _SignatureController_processApproval, _SignatureController_approveAndSignRequest, _SignatureController_signRequest, _SignatureController_errorSignatureRequest, _SignatureController_rejectSignatureRequest, _SignatureController_waitForFinished, _SignatureController_requestApproval, _SignatureController_updateMetadata, _SignatureController_updateState, _SignatureController_generateLegacyState, _SignatureController_addLog, _SignatureController_getSignTypeForLogger, _SignatureController_getChainId;
16
+ var _SignatureController_instances, _SignatureController_getCurrentChainId, _SignatureController_trace, _SignatureController_parseTypedData, _SignatureController_processSignatureRequest, _SignatureController_addMetadata, _SignatureController_processApproval, _SignatureController_approveAndSignRequest, _SignatureController_signRequest, _SignatureController_errorSignatureRequest, _SignatureController_rejectSignatureRequest, _SignatureController_waitForFinished, _SignatureController_requestApproval, _SignatureController_updateMetadata, _SignatureController_updateState, _SignatureController_generateLegacyState, _SignatureController_addLog, _SignatureController_getSignTypeForLogger;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.SignatureController = void 0;
19
19
  const base_controller_1 = require("@metamask/base-controller");
@@ -55,11 +55,12 @@ class SignatureController extends base_controller_1.BaseController {
55
55
  * Construct a Sign controller.
56
56
  *
57
57
  * @param options - The controller options.
58
+ * @param options.getCurrentChainId - A function that returns the current chain ID.
58
59
  * @param options.messenger - The restricted controller messenger for the sign controller.
59
60
  * @param options.state - Initial state to set on this controller.
60
61
  * @param options.trace - Callback to generate trace information.
61
62
  */
62
- constructor({ messenger, state, trace }) {
63
+ constructor({ getCurrentChainId, messenger, state, trace, }) {
63
64
  super({
64
65
  name: controllerName,
65
66
  metadata: stateMetadata,
@@ -70,8 +71,10 @@ class SignatureController extends base_controller_1.BaseController {
70
71
  },
71
72
  });
72
73
  _SignatureController_instances.add(this);
74
+ _SignatureController_getCurrentChainId.set(this, void 0);
73
75
  _SignatureController_trace.set(this, void 0);
74
76
  this.hub = new events_1.default();
77
+ __classPrivateFieldSet(this, _SignatureController_getCurrentChainId, getCurrentChainId, "f");
75
78
  __classPrivateFieldSet(this, _SignatureController_trace, trace ?? ((_request, fn) => fn?.()), "f");
76
79
  }
77
80
  /**
@@ -161,17 +164,16 @@ class SignatureController extends base_controller_1.BaseController {
161
164
  * @returns Promise resolving to the raw signature hash generated from the signature request.
162
165
  */
163
166
  async newUnsignedTypedMessage(messageParams, request, version, signingOptions, options = {}) {
164
- const chainId = __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_getChainId).call(this, request);
165
- (0, validation_1.validateTypedSignatureRequest)(messageParams, version, chainId);
167
+ (0, validation_1.validateTypedSignatureRequest)(messageParams, version, __classPrivateFieldGet(this, _SignatureController_getCurrentChainId, "f").call(this));
166
168
  const normalizedMessageParams = (0, normalize_1.normalizeTypedMessageParams)(messageParams, version);
167
169
  return __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_processSignatureRequest).call(this, {
168
- approvalType: controller_utils_1.ApprovalType.EthSignTypedData,
169
170
  messageParams: normalizedMessageParams,
170
171
  request,
171
- signingOptions,
172
- traceContext: options.traceContext,
173
172
  type: types_1.SignatureRequestType.TypedSign,
173
+ approvalType: controller_utils_1.ApprovalType.EthSignTypedData,
174
174
  version: version,
175
+ signingOptions,
176
+ traceContext: options.traceContext,
175
177
  });
176
178
  }
177
179
  /**
@@ -229,7 +231,7 @@ class SignatureController extends base_controller_1.BaseController {
229
231
  }
230
232
  }
231
233
  exports.SignatureController = SignatureController;
232
- _SignatureController_trace = new WeakMap(), _SignatureController_instances = new WeakSet(), _SignatureController_parseTypedData = function _SignatureController_parseTypedData(messageParams, version) {
234
+ _SignatureController_getCurrentChainId = new WeakMap(), _SignatureController_trace = new WeakMap(), _SignatureController_instances = new WeakSet(), _SignatureController_parseTypedData = function _SignatureController_parseTypedData(messageParams, version) {
233
235
  if (![keyring_controller_1.SignTypedDataVersion.V3, keyring_controller_1.SignTypedDataVersion.V4].includes(version) ||
234
236
  typeof messageParams.data !== 'string') {
235
237
  return messageParams;
@@ -238,17 +240,15 @@ _SignatureController_trace = new WeakMap(), _SignatureController_instances = new
238
240
  ...messageParams,
239
241
  data: JSON.parse(messageParams.data),
240
242
  };
241
- }, _SignatureController_processSignatureRequest = async function _SignatureController_processSignatureRequest({ chainId: optionChainId, messageParams, request, type, approvalType, version, signingOptions, traceContext, }) {
243
+ }, _SignatureController_processSignatureRequest = async function _SignatureController_processSignatureRequest({ messageParams, request, type, approvalType, version, signingOptions, traceContext, }) {
242
244
  (0, logger_1.projectLogger)('Processing signature request', {
243
245
  messageParams,
244
246
  request,
245
247
  type,
246
248
  version,
247
249
  });
248
- const chainId = optionChainId ?? __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_getChainId).call(this, request);
249
250
  __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_addLog).call(this, type, version, logging_controller_1.SigningStage.Proposed, messageParams);
250
251
  const metadata = __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_addMetadata).call(this, {
251
- chainId,
252
252
  messageParams,
253
253
  request,
254
254
  signingOptions,
@@ -295,18 +295,16 @@ _SignatureController_trace = new WeakMap(), _SignatureController_instances = new
295
295
  default:
296
296
  throw new Error(`MetaMask ${type} Signature: Unknown problem: ${JSON.stringify(finalMessageParams)}`);
297
297
  }
298
- }, _SignatureController_addMetadata = function _SignatureController_addMetadata({ chainId, messageParams, request, signingOptions, type, version, }) {
298
+ }, _SignatureController_addMetadata = function _SignatureController_addMetadata({ messageParams, request, signingOptions, type, version, }) {
299
299
  const finalMessageParams = {
300
300
  ...messageParams,
301
301
  origin: request.origin,
302
302
  requestId: request.id,
303
303
  };
304
- const { networkClientId, securityAlertResponse } = request;
304
+ const { securityAlertResponse } = request;
305
305
  const metadata = {
306
- chainId,
307
306
  id: (0, uuid_1.v1)(),
308
307
  messageParams: finalMessageParams,
309
- networkClientId,
310
308
  securityAlertResponse,
311
309
  signingOptions,
312
310
  status: types_1.SignatureRequestStatus.Unapproved,
@@ -317,7 +315,6 @@ _SignatureController_trace = new WeakMap(), _SignatureController_instances = new
317
315
  __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_updateState).call(this, (state) => {
318
316
  state.signatureRequests[metadata.id] = metadata;
319
317
  });
320
- (0, logger_1.projectLogger)('Added signature request', metadata);
321
318
  this.hub.emit('unapprovedMessage', {
322
319
  messageParams,
323
320
  metamaskId: metadata.id,
@@ -483,12 +480,5 @@ _SignatureController_trace = new WeakMap(), _SignatureController_instances = new
483
480
  return logging_controller_1.SigningMethod.EthSignTypedDataV4;
484
481
  }
485
482
  return logging_controller_1.SigningMethod.EthSignTypedData;
486
- }, _SignatureController_getChainId = function _SignatureController_getChainId(request) {
487
- const { networkClientId } = request;
488
- if (!networkClientId) {
489
- throw new Error('Network client ID not found in request');
490
- }
491
- const networkClient = this.messagingSystem.call('NetworkController:getNetworkClientById', networkClientId);
492
- return networkClient.configuration.chainId;
493
483
  };
494
484
  //# sourceMappingURL=SignatureController.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SignatureController.cjs","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 {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n RestrictedControllerMessenger,\n} from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type { TraceCallback, TraceContext } from '@metamask/controller-utils';\nimport {\n ApprovalType,\n detectSIWE,\n ORIGIN_METAMASK,\n} from '@metamask/controller-utils';\nimport type {\n KeyringControllerSignMessageAction,\n KeyringControllerSignPersonalMessageAction,\n KeyringControllerSignTypedMessageAction,\n} from '@metamask/keyring-controller';\nimport { SignTypedDataVersion } from '@metamask/keyring-controller';\nimport {\n SigningMethod,\n LogType,\n SigningStage,\n type AddLog,\n} from '@metamask/logging-controller';\nimport type { NetworkControllerGetNetworkClientByIdAction } from '@metamask/network-controller';\nimport type { Hex, Json } from '@metamask/utils';\nimport EventEmitter from 'events';\nimport { v1 as random } from 'uuid';\n\nimport { projectLogger as log } from './logger';\nimport { SignatureRequestStatus, SignatureRequestType } from './types';\nimport type {\n MessageParamsPersonal,\n MessageParamsTyped,\n OriginalRequest,\n SignatureRequest,\n MessageParams,\n TypedSigningOptions,\n LegacyStateMessage,\n StateSIWEMessage,\n} from './types';\nimport {\n normalizePersonalMessageParams,\n normalizeTypedMessageParams,\n} from './utils/normalize';\nimport {\n validatePersonalSignatureRequest,\n validateTypedSignatureRequest,\n} from './utils/validation';\n\nconst controllerName = 'SignatureController';\n\nconst stateMetadata = {\n signatureRequests: { persist: false, anonymous: false },\n unapprovedPersonalMsgs: { persist: false, anonymous: false },\n unapprovedTypedMessages: { persist: false, anonymous: false },\n unapprovedPersonalMsgCount: { persist: false, anonymous: false },\n unapprovedTypedMessagesCount: { persist: false, anonymous: false },\n};\n\nconst getDefaultState = () => ({\n signatureRequests: {},\n unapprovedPersonalMsgs: {},\n unapprovedTypedMessages: {},\n unapprovedPersonalMsgCount: 0,\n unapprovedTypedMessagesCount: 0,\n});\n\n/** List of statuses that will not be updated and trigger the finished event. */\nconst FINAL_STATUSES: SignatureRequestStatus[] = [\n SignatureRequestStatus.Signed,\n SignatureRequestStatus.Rejected,\n SignatureRequestStatus.Errored,\n];\n\nexport type SignatureControllerState = {\n /**\n * Map of all signature requests including all types and statuses, keyed by ID.\n */\n signatureRequests: Record<string, SignatureRequest>;\n\n /**\n * Map of personal messages with the unapproved status, keyed by ID.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedPersonalMsgs: Record<string, LegacyStateMessage>;\n\n /**\n * Map of typed messages with the unapproved status, keyed by ID.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedTypedMessages: Record<string, LegacyStateMessage>;\n\n /**\n * Number of unapproved personal messages.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedPersonalMsgCount: number;\n\n /**\n * Number of unapproved typed messages.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedTypedMessagesCount: number;\n};\n\ntype AllowedActions =\n | AddApprovalRequest\n | KeyringControllerSignMessageAction\n | KeyringControllerSignPersonalMessageAction\n | KeyringControllerSignTypedMessageAction\n | AddLog\n | NetworkControllerGetNetworkClientByIdAction;\n\nexport type GetSignatureState = ControllerGetStateAction<\n typeof controllerName,\n SignatureControllerState\n>;\n\nexport type SignatureStateChange = ControllerStateChangeEvent<\n typeof controllerName,\n SignatureControllerState\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 /**\n * @deprecated No longer in use.\n */\n getAllState?: () => unknown;\n\n /**\n * Callback that returns the current chain ID.\n */\n getCurrentChainId: () => Hex;\n\n /**\n * Restricted controller messenger required by the signature controller.\n */\n messenger: SignatureControllerMessenger;\n\n /**\n * @deprecated No longer in use.\n */\n securityProviderRequest?: (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n requestData: any,\n methodName: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ) => Promise<any>;\n\n /**\n * Initial state of the controller.\n */\n state?: SignatureControllerState;\n\n /**\n * Callback to record the duration of code.\n */\n trace?: TraceCallback;\n};\n\n/**\n * Controller for creating signing requests requiring user approval.\n */\nexport class SignatureController extends BaseController<\n typeof controllerName,\n SignatureControllerState,\n SignatureControllerMessenger\n> {\n hub: EventEmitter;\n\n #trace: TraceCallback;\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.state - Initial state to set on this controller.\n * @param options.trace - Callback to generate trace information.\n */\n constructor({ messenger, state, trace }: SignatureControllerOptions) {\n super({\n name: controllerName,\n metadata: stateMetadata,\n messenger,\n state: {\n ...getDefaultState(),\n ...state,\n },\n });\n\n this.hub = new EventEmitter();\n this.#trace = trace ?? (((_request, fn) => fn?.()) as TraceCallback);\n }\n\n /**\n * A getter for the number of 'unapproved' PersonalMessages in this.messages.\n * @deprecated Use `signatureRequests` state instead.\n * @returns The number of 'unapproved' PersonalMessages in this.messages\n */\n get unapprovedPersonalMessagesCount(): number {\n return this.state.unapprovedPersonalMsgCount;\n }\n\n /**\n * A getter for the number of 'unapproved' TypedMessages in this.messages.\n * @deprecated Use `signatureRequests` state instead.\n * @returns The number of 'unapproved' TypedMessages in this.messages\n */\n get unapprovedTypedMessagesCount(): number {\n return this.state.unapprovedTypedMessagesCount;\n }\n\n /**\n * A getter for returning all messages.\n * @deprecated Use `signatureRequests` state instead.\n * @returns The object containing all messages.\n */\n get messages(): { [id: string]: SignatureRequest } {\n return this.state.signatureRequests;\n }\n\n /**\n * Reset the controller state to the initial state.\n */\n resetState() {\n this.#updateState((state) => {\n Object.assign(state, getDefaultState());\n });\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 const unapprovedSignatureRequests = Object.values(\n this.state.signatureRequests,\n ).filter(\n (metadata) => metadata.status === SignatureRequestStatus.Unapproved,\n );\n\n for (const metadata of unapprovedSignatureRequests) {\n this.#rejectSignatureRequest(metadata.id, reason);\n }\n }\n\n /**\n * Clears all unapproved messages from memory.\n */\n clearUnapproved() {\n this.#updateState((state) => {\n Object.values(state.signatureRequests)\n .filter(\n (metadata) => metadata.status === SignatureRequestStatus.Unapproved,\n )\n .forEach((metadata) => delete state.signatureRequests[metadata.id]);\n });\n }\n\n /**\n * Called when a dApp uses the personal_sign method.\n * We currently provide personal_sign mostly for legacy dApps.\n *\n * @param messageParams - The params of the message to sign and return to the dApp.\n * @param request - The original request, containing the origin.\n * @param options - An options bag for the method.\n * @param options.traceContext - The parent context for any new traces.\n * @returns Promise resolving to the raw signature hash generated from the signature request.\n */\n async newUnsignedPersonalMessage(\n messageParams: MessageParamsPersonal,\n request: OriginalRequest,\n options: { traceContext?: TraceContext } = {},\n ): Promise<string> {\n validatePersonalSignatureRequest(messageParams);\n\n const normalizedMessageParams =\n normalizePersonalMessageParams(messageParams);\n\n normalizedMessageParams.siwe = detectSIWE(\n messageParams,\n ) as StateSIWEMessage;\n\n return this.#processSignatureRequest({\n messageParams: normalizedMessageParams,\n request,\n type: SignatureRequestType.PersonalSign,\n approvalType: ApprovalType.PersonalSign,\n traceContext: options.traceContext,\n });\n }\n\n /**\n * Called when a dapp uses the eth_signTypedData method, per EIP-712.\n *\n * @param messageParams - The params of the message to sign and return to the dApp.\n * @param request - The original request, containing the origin.\n * @param version - The version of the signTypedData request.\n * @param signingOptions - Options for signing the typed message.\n * @param options - An options bag for the method.\n * @param options.traceContext - The parent context for any new traces.\n * @returns Promise resolving to the raw signature hash generated from the signature request.\n */\n async newUnsignedTypedMessage(\n messageParams: MessageParamsTyped,\n request: OriginalRequest,\n version: string,\n signingOptions: TypedSigningOptions,\n options: { traceContext?: TraceContext } = {},\n ): Promise<string> {\n const chainId = this.#getChainId(request);\n\n validateTypedSignatureRequest(\n messageParams,\n version as SignTypedDataVersion,\n chainId,\n );\n\n const normalizedMessageParams = normalizeTypedMessageParams(\n messageParams,\n version as SignTypedDataVersion,\n );\n\n return this.#processSignatureRequest({\n approvalType: ApprovalType.EthSignTypedData,\n messageParams: normalizedMessageParams,\n request,\n signingOptions,\n traceContext: options.traceContext,\n type: SignatureRequestType.TypedSign,\n version: version as SignTypedDataVersion,\n });\n }\n\n /**\n * Provide a signature for a pending signature request that used `deferSetAsSigned`.\n * Changes the status of the signature request to `signed`.\n *\n * @param signatureRequestId - The ID of the signature request.\n * @param signature - The signature to provide.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setDeferredSignSuccess(signatureRequestId: string, signature: any) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.rawSig = signature;\n draftMetadata.status = SignatureRequestStatus.Signed;\n });\n }\n\n /**\n * Set custom metadata on a signature request.\n * @param signatureRequestId - The ID of the signature request.\n * @param metadata - The custom metadata to set.\n */\n setMessageMetadata(signatureRequestId: string, metadata: Json) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.metadata = metadata;\n });\n }\n\n /**\n * Reject a pending signature request that used `deferSetAsSigned`.\n * Changes the status of the signature request to `rejected`.\n *\n * @param signatureRequestId - The ID of the signature request.\n */\n setDeferredSignError(signatureRequestId: string) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Rejected;\n });\n }\n\n /**\n * Set the status of a signature request to 'inProgress'.\n *\n * @param signatureRequestId - The ID of the signature request.\n */\n setTypedMessageInProgress(signatureRequestId: string) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.InProgress;\n });\n }\n\n /**\n * Set the status of a signature request to 'inProgress'.\n *\n * @param signatureRequestId - The ID of the signature request.\n */\n setPersonalMessageInProgress(signatureRequestId: string) {\n this.setTypedMessageInProgress(signatureRequestId);\n }\n\n #parseTypedData(\n messageParams: MessageParamsTyped,\n version?: SignTypedDataVersion,\n ): MessageParamsTyped {\n if (\n ![SignTypedDataVersion.V3, SignTypedDataVersion.V4].includes(\n version as SignTypedDataVersion,\n ) ||\n typeof messageParams.data !== 'string'\n ) {\n return messageParams;\n }\n\n return {\n ...messageParams,\n data: JSON.parse(messageParams.data),\n };\n }\n\n async #processSignatureRequest({\n chainId: optionChainId,\n messageParams,\n request,\n type,\n approvalType,\n version,\n signingOptions,\n traceContext,\n }: {\n chainId?: Hex;\n messageParams: MessageParams;\n request: OriginalRequest;\n type: SignatureRequestType;\n approvalType: ApprovalType;\n version?: SignTypedDataVersion;\n signingOptions?: TypedSigningOptions;\n traceContext?: TraceContext;\n }): Promise<string> {\n log('Processing signature request', {\n messageParams,\n request,\n type,\n version,\n });\n\n const chainId = optionChainId ?? this.#getChainId(request);\n\n this.#addLog(type, version, SigningStage.Proposed, messageParams);\n\n const metadata = this.#addMetadata({\n chainId,\n messageParams,\n request,\n signingOptions,\n type,\n version,\n });\n\n let resultCallbacks: AcceptResultCallbacks | undefined;\n let approveOrSignError: unknown;\n\n const finalMetadataPromise = this.#waitForFinished(metadata.id);\n\n try {\n resultCallbacks = await this.#processApproval({\n approvalType,\n metadata,\n request,\n traceContext,\n });\n\n await this.#approveAndSignRequest(metadata, traceContext);\n } catch (error) {\n log('Signature request failed', error);\n approveOrSignError = error;\n }\n\n const finalMetadata = await finalMetadataPromise;\n\n const {\n error,\n id,\n messageParams: finalMessageParams,\n rawSig: signature,\n } = finalMetadata;\n\n switch (finalMetadata.status) {\n case SignatureRequestStatus.Signed:\n log('Signature request finished', { id, signature });\n this.#addLog(type, version, SigningStage.Signed, finalMessageParams);\n resultCallbacks?.success(signature);\n return finalMetadata.rawSig as string;\n\n case SignatureRequestStatus.Rejected:\n /* istanbul ignore next */\n const rejectedError = (approveOrSignError ??\n new Error(\n `MetaMask ${type} Signature: User denied message signature.`,\n )) as Error;\n\n resultCallbacks?.error(rejectedError);\n throw rejectedError;\n\n case SignatureRequestStatus.Errored:\n /* istanbul ignore next */\n const erroredError = (approveOrSignError ??\n new Error(`MetaMask ${type} Signature: ${error as string}`)) as Error;\n\n resultCallbacks?.error(erroredError);\n throw erroredError;\n\n /* istanbul ignore next */\n default:\n throw new Error(\n `MetaMask ${type} Signature: Unknown problem: ${JSON.stringify(\n finalMessageParams,\n )}`,\n );\n }\n }\n\n #addMetadata({\n chainId,\n messageParams,\n request,\n signingOptions,\n type,\n version,\n }: {\n chainId: Hex;\n messageParams: MessageParams;\n request: OriginalRequest;\n signingOptions?: TypedSigningOptions;\n type: SignatureRequestType;\n version?: SignTypedDataVersion;\n }): SignatureRequest {\n const finalMessageParams = {\n ...messageParams,\n origin: request.origin,\n requestId: request.id,\n };\n\n const { networkClientId, securityAlertResponse } = request;\n\n const metadata = {\n chainId,\n id: random(),\n messageParams: finalMessageParams,\n networkClientId,\n securityAlertResponse,\n signingOptions,\n status: SignatureRequestStatus.Unapproved,\n time: Date.now(),\n type,\n version,\n } as SignatureRequest;\n\n this.#updateState((state) => {\n state.signatureRequests[metadata.id] = metadata;\n });\n\n log('Added signature request', metadata);\n\n this.hub.emit('unapprovedMessage', {\n messageParams,\n metamaskId: metadata.id,\n });\n\n return metadata;\n }\n\n async #processApproval({\n approvalType,\n metadata,\n request,\n traceContext,\n }: {\n approvalType: ApprovalType;\n metadata: SignatureRequest;\n request?: OriginalRequest;\n traceContext?: TraceContext;\n }): Promise<AcceptResultCallbacks | undefined> {\n const { id, messageParams, type, version } = metadata;\n\n try {\n const acceptResult = await this.#trace(\n { name: 'Await Approval', parentContext: traceContext },\n (context) =>\n this.#requestApproval(metadata, approvalType, {\n traceContext: context,\n actionId: request?.id?.toString(),\n }),\n );\n\n return acceptResult.resultCallbacks;\n } catch (error) {\n log('User rejected request', { id, error });\n\n this.#addLog(type, version, SigningStage.Rejected, messageParams);\n this.#rejectSignatureRequest(id);\n\n throw error;\n }\n }\n\n async #approveAndSignRequest(\n metadata: SignatureRequest,\n traceContext?: TraceContext,\n ) {\n const { id } = metadata;\n\n this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Approved;\n });\n\n await this.#trace({ name: 'Sign', parentContext: traceContext }, () =>\n this.#signRequest(metadata),\n );\n }\n\n async #signRequest(metadata: SignatureRequest) {\n const { id, messageParams, signingOptions, type } = metadata;\n\n try {\n let signature: string;\n\n switch (type) {\n case SignatureRequestType.PersonalSign:\n signature = await this.messagingSystem.call(\n 'KeyringController:signPersonalMessage',\n // Keyring controller temporarily using message manager types.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n messageParams as any,\n );\n break;\n\n case SignatureRequestType.TypedSign:\n const finalRequest = signingOptions?.parseJsonData\n ? this.#parseTypedData(messageParams, metadata.version)\n : messageParams;\n\n signature = await this.messagingSystem.call(\n 'KeyringController:signTypedMessage',\n finalRequest,\n metadata.version as SignTypedDataVersion,\n );\n break;\n\n /* istanbul ignore next */\n default:\n throw new Error(`Unknown signature request type: ${type as string}`);\n }\n\n this.hub.emit(`${type}:signed`, { signature, messageId: id });\n\n if (messageParams.deferSetAsSigned) {\n return;\n }\n\n this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.rawSig = signature;\n draftMetadata.status = SignatureRequestStatus.Signed;\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n if (type === SignatureRequestType.TypedSign) {\n this.#errorSignatureRequest(id, error.message);\n } else {\n this.#rejectSignatureRequest(id);\n }\n\n this.hub.emit(`${id}:signError`, { error });\n\n throw error;\n }\n }\n\n #errorSignatureRequest(id: string, error: string) {\n this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Errored;\n draftMetadata.error = error;\n });\n }\n\n #rejectSignatureRequest(signatureRequestId: string, reason?: string) {\n if (reason) {\n const metadata = this.state.signatureRequests[signatureRequestId];\n this.hub.emit('cancelWithReason', { metadata, reason });\n }\n\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Rejected;\n });\n }\n\n async #waitForFinished(id: string): Promise<SignatureRequest> {\n return new Promise((resolve) => {\n this.hub.once(`${id}:finished`, (metadata: SignatureRequest) => {\n resolve(metadata);\n });\n });\n }\n\n async #requestApproval(\n metadata: SignatureRequest,\n type: ApprovalType,\n {\n traceContext,\n actionId,\n }: { traceContext?: TraceContext; actionId?: string },\n ): Promise<AddResult> {\n const { id, messageParams } = metadata;\n const origin = messageParams.origin || ORIGIN_METAMASK;\n\n await this.#trace({\n name: 'Notification Display',\n id: actionId,\n parentContext: traceContext,\n });\n\n return (await this.messagingSystem.call(\n 'ApprovalController:addRequest',\n {\n id,\n origin,\n type,\n requestData: { ...messageParams },\n expectsResult: true,\n },\n true,\n )) as Promise<AddResult>;\n }\n\n #updateMetadata(\n id: string,\n callback: (metadata: SignatureRequest) => void,\n ): SignatureRequest {\n let statusChanged = false;\n\n const { nextState } = this.#updateState((state) => {\n const metadata = state.signatureRequests[id];\n\n if (!metadata) {\n throw new Error(`Signature request with id ${id} not found`);\n }\n\n const originalStatus = metadata.status;\n\n // eslint-disable-next-line n/callback-return\n callback(metadata);\n\n statusChanged = metadata.status !== originalStatus;\n });\n\n const updatedMetadata = nextState.signatureRequests[id];\n\n if (\n statusChanged &&\n FINAL_STATUSES.includes(updatedMetadata.status as SignatureRequestStatus)\n ) {\n this.hub.emit(`${id}:finished`, updatedMetadata);\n }\n\n return updatedMetadata;\n }\n\n #updateState(callback: (state: SignatureControllerState) => void) {\n return this.update((state) => {\n // eslint-disable-next-line n/callback-return, n/no-callback-literal\n callback(state as unknown as SignatureControllerState);\n\n const unapprovedRequests = Object.values(state.signatureRequests).filter(\n (request) => request.status === SignatureRequestStatus.Unapproved,\n ) as unknown as SignatureRequest[];\n\n const personalSignMessages = this.#generateLegacyState(\n unapprovedRequests,\n SignatureRequestType.PersonalSign,\n );\n\n const typedSignMessages = this.#generateLegacyState(\n unapprovedRequests,\n SignatureRequestType.TypedSign,\n );\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n state.unapprovedPersonalMsgs = personalSignMessages as any;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n state.unapprovedTypedMessages = typedSignMessages as any;\n\n state.unapprovedPersonalMsgCount =\n Object.values(personalSignMessages).length;\n\n state.unapprovedTypedMessagesCount =\n Object.values(typedSignMessages).length;\n });\n }\n\n #generateLegacyState(\n signatureRequests: SignatureRequest[],\n type: SignatureRequestType,\n ): Record<string, LegacyStateMessage> {\n return signatureRequests\n .filter((request) => request.type === type)\n .reduce<Record<string, LegacyStateMessage>>(\n (acc, request) => ({\n ...acc,\n [request.id]: { ...request, msgParams: request.messageParams },\n }),\n {},\n );\n }\n\n #addLog(\n signatureRequestType: SignatureRequestType,\n version: SignTypedDataVersion | undefined,\n stage: SigningStage,\n signingData: MessageParams,\n ): void {\n const signingMethod = this.#getSignTypeForLogger(\n signatureRequestType,\n version,\n );\n\n this.messagingSystem.call('LoggingController:add', {\n type: LogType.EthSignLog,\n data: {\n signingMethod,\n stage,\n signingData,\n },\n });\n }\n\n #getSignTypeForLogger(\n requestType: SignatureRequestType,\n version?: SignTypedDataVersion,\n ): SigningMethod {\n if (requestType === SignatureRequestType.PersonalSign) {\n return SigningMethod.PersonalSign;\n }\n\n if (\n requestType === SignatureRequestType.TypedSign &&\n version === SignTypedDataVersion.V3\n ) {\n return SigningMethod.EthSignTypedDataV3;\n }\n\n if (\n requestType === SignatureRequestType.TypedSign &&\n version === SignTypedDataVersion.V4\n ) {\n return SigningMethod.EthSignTypedDataV4;\n }\n\n return SigningMethod.EthSignTypedData;\n }\n\n #getChainId(request: OriginalRequest): Hex {\n const { networkClientId } = request;\n\n if (!networkClientId) {\n throw new Error('Network client ID not found in request');\n }\n\n const networkClient = this.messagingSystem.call(\n 'NetworkController:getNetworkClientById',\n networkClientId,\n );\n\n return networkClient.configuration.chainId;\n }\n}\n"]}
1
+ {"version":3,"file":"SignatureController.cjs","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 {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n RestrictedControllerMessenger,\n} from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type { TraceCallback, TraceContext } from '@metamask/controller-utils';\nimport {\n ApprovalType,\n detectSIWE,\n ORIGIN_METAMASK,\n} from '@metamask/controller-utils';\nimport type {\n KeyringControllerSignMessageAction,\n KeyringControllerSignPersonalMessageAction,\n KeyringControllerSignTypedMessageAction,\n} from '@metamask/keyring-controller';\nimport { SignTypedDataVersion } from '@metamask/keyring-controller';\nimport {\n SigningMethod,\n LogType,\n SigningStage,\n type AddLog,\n} from '@metamask/logging-controller';\nimport type { Hex, Json } from '@metamask/utils';\nimport EventEmitter from 'events';\nimport { v1 as random } from 'uuid';\n\nimport { projectLogger as log } from './logger';\nimport { SignatureRequestStatus, SignatureRequestType } from './types';\nimport type {\n MessageParamsPersonal,\n MessageParamsTyped,\n OriginalRequest,\n SignatureRequest,\n MessageParams,\n TypedSigningOptions,\n LegacyStateMessage,\n StateSIWEMessage,\n} from './types';\nimport {\n normalizePersonalMessageParams,\n normalizeTypedMessageParams,\n} from './utils/normalize';\nimport {\n validatePersonalSignatureRequest,\n validateTypedSignatureRequest,\n} from './utils/validation';\n\nconst controllerName = 'SignatureController';\n\nconst stateMetadata = {\n signatureRequests: { persist: false, anonymous: false },\n unapprovedPersonalMsgs: { persist: false, anonymous: false },\n unapprovedTypedMessages: { persist: false, anonymous: false },\n unapprovedPersonalMsgCount: { persist: false, anonymous: false },\n unapprovedTypedMessagesCount: { persist: false, anonymous: false },\n};\n\nconst getDefaultState = () => ({\n signatureRequests: {},\n unapprovedPersonalMsgs: {},\n unapprovedTypedMessages: {},\n unapprovedPersonalMsgCount: 0,\n unapprovedTypedMessagesCount: 0,\n});\n\n/** List of statuses that will not be updated and trigger the finished event. */\nconst FINAL_STATUSES: SignatureRequestStatus[] = [\n SignatureRequestStatus.Signed,\n SignatureRequestStatus.Rejected,\n SignatureRequestStatus.Errored,\n];\n\nexport type SignatureControllerState = {\n /**\n * Map of all signature requests including all types and statuses, keyed by ID.\n */\n signatureRequests: Record<string, SignatureRequest>;\n\n /**\n * Map of personal messages with the unapproved status, keyed by ID.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedPersonalMsgs: Record<string, LegacyStateMessage>;\n\n /**\n * Map of typed messages with the unapproved status, keyed by ID.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedTypedMessages: Record<string, LegacyStateMessage>;\n\n /**\n * Number of unapproved personal messages.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedPersonalMsgCount: number;\n\n /**\n * Number of unapproved typed messages.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedTypedMessagesCount: number;\n};\n\ntype AllowedActions =\n | AddApprovalRequest\n | KeyringControllerSignMessageAction\n | KeyringControllerSignPersonalMessageAction\n | KeyringControllerSignTypedMessageAction\n | AddLog;\n\nexport type GetSignatureState = ControllerGetStateAction<\n typeof controllerName,\n SignatureControllerState\n>;\n\nexport type SignatureStateChange = ControllerStateChangeEvent<\n typeof controllerName,\n SignatureControllerState\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 /**\n * @deprecated No longer in use.\n */\n getAllState?: () => unknown;\n\n /**\n * Callback that returns the current chain ID.\n */\n getCurrentChainId: () => Hex;\n\n /**\n * Restricted controller messenger required by the signature controller.\n */\n messenger: SignatureControllerMessenger;\n\n /**\n * @deprecated No longer in use.\n */\n securityProviderRequest?: (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n requestData: any,\n methodName: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ) => Promise<any>;\n\n /**\n * Initial state of the controller.\n */\n state?: SignatureControllerState;\n\n /**\n * Callback to record the duration of code.\n */\n trace?: TraceCallback;\n};\n\n/**\n * Controller for creating signing requests requiring user approval.\n */\nexport class SignatureController extends BaseController<\n typeof controllerName,\n SignatureControllerState,\n SignatureControllerMessenger\n> {\n hub: EventEmitter;\n\n #getCurrentChainId: () => Hex;\n\n #trace: TraceCallback;\n\n /**\n * Construct a Sign controller.\n *\n * @param options - The controller options.\n * @param options.getCurrentChainId - A function that returns the current chain ID.\n * @param options.messenger - The restricted controller messenger for the sign controller.\n * @param options.state - Initial state to set on this controller.\n * @param options.trace - Callback to generate trace information.\n */\n constructor({\n getCurrentChainId,\n messenger,\n state,\n trace,\n }: SignatureControllerOptions) {\n super({\n name: controllerName,\n metadata: stateMetadata,\n messenger,\n state: {\n ...getDefaultState(),\n ...state,\n },\n });\n\n this.hub = new EventEmitter();\n this.#getCurrentChainId = getCurrentChainId;\n this.#trace = trace ?? (((_request, fn) => fn?.()) as TraceCallback);\n }\n\n /**\n * A getter for the number of 'unapproved' PersonalMessages in this.messages.\n * @deprecated Use `signatureRequests` state instead.\n * @returns The number of 'unapproved' PersonalMessages in this.messages\n */\n get unapprovedPersonalMessagesCount(): number {\n return this.state.unapprovedPersonalMsgCount;\n }\n\n /**\n * A getter for the number of 'unapproved' TypedMessages in this.messages.\n * @deprecated Use `signatureRequests` state instead.\n * @returns The number of 'unapproved' TypedMessages in this.messages\n */\n get unapprovedTypedMessagesCount(): number {\n return this.state.unapprovedTypedMessagesCount;\n }\n\n /**\n * A getter for returning all messages.\n * @deprecated Use `signatureRequests` state instead.\n * @returns The object containing all messages.\n */\n get messages(): { [id: string]: SignatureRequest } {\n return this.state.signatureRequests;\n }\n\n /**\n * Reset the controller state to the initial state.\n */\n resetState() {\n this.#updateState((state) => {\n Object.assign(state, getDefaultState());\n });\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 const unapprovedSignatureRequests = Object.values(\n this.state.signatureRequests,\n ).filter(\n (metadata) => metadata.status === SignatureRequestStatus.Unapproved,\n );\n\n for (const metadata of unapprovedSignatureRequests) {\n this.#rejectSignatureRequest(metadata.id, reason);\n }\n }\n\n /**\n * Clears all unapproved messages from memory.\n */\n clearUnapproved() {\n this.#updateState((state) => {\n Object.values(state.signatureRequests)\n .filter(\n (metadata) => metadata.status === SignatureRequestStatus.Unapproved,\n )\n .forEach((metadata) => delete state.signatureRequests[metadata.id]);\n });\n }\n\n /**\n * Called when a dApp uses the personal_sign method.\n * We currently provide personal_sign mostly for legacy dApps.\n *\n * @param messageParams - The params of the message to sign and return to the dApp.\n * @param request - The original request, containing the origin.\n * @param options - An options bag for the method.\n * @param options.traceContext - The parent context for any new traces.\n * @returns Promise resolving to the raw signature hash generated from the signature request.\n */\n async newUnsignedPersonalMessage(\n messageParams: MessageParamsPersonal,\n request: OriginalRequest,\n options: { traceContext?: TraceContext } = {},\n ): Promise<string> {\n validatePersonalSignatureRequest(messageParams);\n\n const normalizedMessageParams =\n normalizePersonalMessageParams(messageParams);\n\n normalizedMessageParams.siwe = detectSIWE(\n messageParams,\n ) as StateSIWEMessage;\n\n return this.#processSignatureRequest({\n messageParams: normalizedMessageParams,\n request,\n type: SignatureRequestType.PersonalSign,\n approvalType: ApprovalType.PersonalSign,\n traceContext: options.traceContext,\n });\n }\n\n /**\n * Called when a dapp uses the eth_signTypedData method, per EIP-712.\n *\n * @param messageParams - The params of the message to sign and return to the dApp.\n * @param request - The original request, containing the origin.\n * @param version - The version of the signTypedData request.\n * @param signingOptions - Options for signing the typed message.\n * @param options - An options bag for the method.\n * @param options.traceContext - The parent context for any new traces.\n * @returns Promise resolving to the raw signature hash generated from the signature request.\n */\n async newUnsignedTypedMessage(\n messageParams: MessageParamsTyped,\n request: OriginalRequest,\n version: string,\n signingOptions: TypedSigningOptions,\n options: { traceContext?: TraceContext } = {},\n ): Promise<string> {\n validateTypedSignatureRequest(\n messageParams,\n version as SignTypedDataVersion,\n this.#getCurrentChainId(),\n );\n\n const normalizedMessageParams = normalizeTypedMessageParams(\n messageParams,\n version as SignTypedDataVersion,\n );\n\n return this.#processSignatureRequest({\n messageParams: normalizedMessageParams,\n request,\n type: SignatureRequestType.TypedSign,\n approvalType: ApprovalType.EthSignTypedData,\n version: version as SignTypedDataVersion,\n signingOptions,\n traceContext: options.traceContext,\n });\n }\n\n /**\n * Provide a signature for a pending signature request that used `deferSetAsSigned`.\n * Changes the status of the signature request to `signed`.\n *\n * @param signatureRequestId - The ID of the signature request.\n * @param signature - The signature to provide.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setDeferredSignSuccess(signatureRequestId: string, signature: any) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.rawSig = signature;\n draftMetadata.status = SignatureRequestStatus.Signed;\n });\n }\n\n /**\n * Set custom metadata on a signature request.\n * @param signatureRequestId - The ID of the signature request.\n * @param metadata - The custom metadata to set.\n */\n setMessageMetadata(signatureRequestId: string, metadata: Json) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.metadata = metadata;\n });\n }\n\n /**\n * Reject a pending signature request that used `deferSetAsSigned`.\n * Changes the status of the signature request to `rejected`.\n *\n * @param signatureRequestId - The ID of the signature request.\n */\n setDeferredSignError(signatureRequestId: string) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Rejected;\n });\n }\n\n /**\n * Set the status of a signature request to 'inProgress'.\n *\n * @param signatureRequestId - The ID of the signature request.\n */\n setTypedMessageInProgress(signatureRequestId: string) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.InProgress;\n });\n }\n\n /**\n * Set the status of a signature request to 'inProgress'.\n *\n * @param signatureRequestId - The ID of the signature request.\n */\n setPersonalMessageInProgress(signatureRequestId: string) {\n this.setTypedMessageInProgress(signatureRequestId);\n }\n\n #parseTypedData(\n messageParams: MessageParamsTyped,\n version?: SignTypedDataVersion,\n ): MessageParamsTyped {\n if (\n ![SignTypedDataVersion.V3, SignTypedDataVersion.V4].includes(\n version as SignTypedDataVersion,\n ) ||\n typeof messageParams.data !== 'string'\n ) {\n return messageParams;\n }\n\n return {\n ...messageParams,\n data: JSON.parse(messageParams.data),\n };\n }\n\n async #processSignatureRequest({\n messageParams,\n request,\n type,\n approvalType,\n version,\n signingOptions,\n traceContext,\n }: {\n messageParams: MessageParams;\n request: OriginalRequest;\n type: SignatureRequestType;\n approvalType: ApprovalType;\n version?: SignTypedDataVersion;\n signingOptions?: TypedSigningOptions;\n traceContext?: TraceContext;\n }): Promise<string> {\n log('Processing signature request', {\n messageParams,\n request,\n type,\n version,\n });\n\n this.#addLog(type, version, SigningStage.Proposed, messageParams);\n\n const metadata = this.#addMetadata({\n messageParams,\n request,\n signingOptions,\n type,\n version,\n });\n\n let resultCallbacks: AcceptResultCallbacks | undefined;\n let approveOrSignError: unknown;\n\n const finalMetadataPromise = this.#waitForFinished(metadata.id);\n\n try {\n resultCallbacks = await this.#processApproval({\n approvalType,\n metadata,\n request,\n traceContext,\n });\n\n await this.#approveAndSignRequest(metadata, traceContext);\n } catch (error) {\n log('Signature request failed', error);\n approveOrSignError = error;\n }\n\n const finalMetadata = await finalMetadataPromise;\n\n const {\n error,\n id,\n messageParams: finalMessageParams,\n rawSig: signature,\n } = finalMetadata;\n\n switch (finalMetadata.status) {\n case SignatureRequestStatus.Signed:\n log('Signature request finished', { id, signature });\n this.#addLog(type, version, SigningStage.Signed, finalMessageParams);\n resultCallbacks?.success(signature);\n return finalMetadata.rawSig as string;\n\n case SignatureRequestStatus.Rejected:\n /* istanbul ignore next */\n const rejectedError = (approveOrSignError ??\n new Error(\n `MetaMask ${type} Signature: User denied message signature.`,\n )) as Error;\n\n resultCallbacks?.error(rejectedError);\n throw rejectedError;\n\n case SignatureRequestStatus.Errored:\n /* istanbul ignore next */\n const erroredError = (approveOrSignError ??\n new Error(`MetaMask ${type} Signature: ${error as string}`)) as Error;\n\n resultCallbacks?.error(erroredError);\n throw erroredError;\n\n /* istanbul ignore next */\n default:\n throw new Error(\n `MetaMask ${type} Signature: Unknown problem: ${JSON.stringify(\n finalMessageParams,\n )}`,\n );\n }\n }\n\n #addMetadata({\n messageParams,\n request,\n signingOptions,\n type,\n version,\n }: {\n messageParams: MessageParams;\n request: OriginalRequest;\n signingOptions?: TypedSigningOptions;\n type: SignatureRequestType;\n version?: SignTypedDataVersion;\n }): SignatureRequest {\n const finalMessageParams = {\n ...messageParams,\n origin: request.origin,\n requestId: request.id,\n };\n\n const { securityAlertResponse } = request;\n\n const metadata = {\n id: random(),\n messageParams: finalMessageParams,\n securityAlertResponse,\n signingOptions,\n status: SignatureRequestStatus.Unapproved,\n time: Date.now(),\n type,\n version,\n } as SignatureRequest;\n\n this.#updateState((state) => {\n state.signatureRequests[metadata.id] = metadata;\n });\n\n this.hub.emit('unapprovedMessage', {\n messageParams,\n metamaskId: metadata.id,\n });\n\n return metadata;\n }\n\n async #processApproval({\n approvalType,\n metadata,\n request,\n traceContext,\n }: {\n approvalType: ApprovalType;\n metadata: SignatureRequest;\n request?: OriginalRequest;\n traceContext?: TraceContext;\n }): Promise<AcceptResultCallbacks | undefined> {\n const { id, messageParams, type, version } = metadata;\n\n try {\n const acceptResult = await this.#trace(\n { name: 'Await Approval', parentContext: traceContext },\n (context) =>\n this.#requestApproval(metadata, approvalType, {\n traceContext: context,\n actionId: request?.id?.toString(),\n }),\n );\n\n return acceptResult.resultCallbacks;\n } catch (error) {\n log('User rejected request', { id, error });\n\n this.#addLog(type, version, SigningStage.Rejected, messageParams);\n this.#rejectSignatureRequest(id);\n\n throw error;\n }\n }\n\n async #approveAndSignRequest(\n metadata: SignatureRequest,\n traceContext?: TraceContext,\n ) {\n const { id } = metadata;\n\n this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Approved;\n });\n\n await this.#trace({ name: 'Sign', parentContext: traceContext }, () =>\n this.#signRequest(metadata),\n );\n }\n\n async #signRequest(metadata: SignatureRequest) {\n const { id, messageParams, signingOptions, type } = metadata;\n\n try {\n let signature: string;\n\n switch (type) {\n case SignatureRequestType.PersonalSign:\n signature = await this.messagingSystem.call(\n 'KeyringController:signPersonalMessage',\n // Keyring controller temporarily using message manager types.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n messageParams as any,\n );\n break;\n\n case SignatureRequestType.TypedSign:\n const finalRequest = signingOptions?.parseJsonData\n ? this.#parseTypedData(messageParams, metadata.version)\n : messageParams;\n\n signature = await this.messagingSystem.call(\n 'KeyringController:signTypedMessage',\n finalRequest,\n metadata.version as SignTypedDataVersion,\n );\n break;\n\n /* istanbul ignore next */\n default:\n throw new Error(`Unknown signature request type: ${type as string}`);\n }\n\n this.hub.emit(`${type}:signed`, { signature, messageId: id });\n\n if (messageParams.deferSetAsSigned) {\n return;\n }\n\n this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.rawSig = signature;\n draftMetadata.status = SignatureRequestStatus.Signed;\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n if (type === SignatureRequestType.TypedSign) {\n this.#errorSignatureRequest(id, error.message);\n } else {\n this.#rejectSignatureRequest(id);\n }\n\n this.hub.emit(`${id}:signError`, { error });\n\n throw error;\n }\n }\n\n #errorSignatureRequest(id: string, error: string) {\n this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Errored;\n draftMetadata.error = error;\n });\n }\n\n #rejectSignatureRequest(signatureRequestId: string, reason?: string) {\n if (reason) {\n const metadata = this.state.signatureRequests[signatureRequestId];\n this.hub.emit('cancelWithReason', { metadata, reason });\n }\n\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Rejected;\n });\n }\n\n async #waitForFinished(id: string): Promise<SignatureRequest> {\n return new Promise((resolve) => {\n this.hub.once(`${id}:finished`, (metadata: SignatureRequest) => {\n resolve(metadata);\n });\n });\n }\n\n async #requestApproval(\n metadata: SignatureRequest,\n type: ApprovalType,\n {\n traceContext,\n actionId,\n }: { traceContext?: TraceContext; actionId?: string },\n ): Promise<AddResult> {\n const { id, messageParams } = metadata;\n const origin = messageParams.origin || ORIGIN_METAMASK;\n\n await this.#trace({\n name: 'Notification Display',\n id: actionId,\n parentContext: traceContext,\n });\n\n return (await this.messagingSystem.call(\n 'ApprovalController:addRequest',\n {\n id,\n origin,\n type,\n requestData: { ...messageParams },\n expectsResult: true,\n },\n true,\n )) as Promise<AddResult>;\n }\n\n #updateMetadata(\n id: string,\n callback: (metadata: SignatureRequest) => void,\n ): SignatureRequest {\n let statusChanged = false;\n\n const { nextState } = this.#updateState((state) => {\n const metadata = state.signatureRequests[id];\n\n if (!metadata) {\n throw new Error(`Signature request with id ${id} not found`);\n }\n\n const originalStatus = metadata.status;\n\n // eslint-disable-next-line n/callback-return\n callback(metadata);\n\n statusChanged = metadata.status !== originalStatus;\n });\n\n const updatedMetadata = nextState.signatureRequests[id];\n\n if (\n statusChanged &&\n FINAL_STATUSES.includes(updatedMetadata.status as SignatureRequestStatus)\n ) {\n this.hub.emit(`${id}:finished`, updatedMetadata);\n }\n\n return updatedMetadata;\n }\n\n #updateState(callback: (state: SignatureControllerState) => void) {\n return this.update((state) => {\n // eslint-disable-next-line n/callback-return, n/no-callback-literal\n callback(state as unknown as SignatureControllerState);\n\n const unapprovedRequests = Object.values(state.signatureRequests).filter(\n (request) => request.status === SignatureRequestStatus.Unapproved,\n ) as unknown as SignatureRequest[];\n\n const personalSignMessages = this.#generateLegacyState(\n unapprovedRequests,\n SignatureRequestType.PersonalSign,\n );\n\n const typedSignMessages = this.#generateLegacyState(\n unapprovedRequests,\n SignatureRequestType.TypedSign,\n );\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n state.unapprovedPersonalMsgs = personalSignMessages as any;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n state.unapprovedTypedMessages = typedSignMessages as any;\n\n state.unapprovedPersonalMsgCount =\n Object.values(personalSignMessages).length;\n\n state.unapprovedTypedMessagesCount =\n Object.values(typedSignMessages).length;\n });\n }\n\n #generateLegacyState(\n signatureRequests: SignatureRequest[],\n type: SignatureRequestType,\n ): Record<string, LegacyStateMessage> {\n return signatureRequests\n .filter((request) => request.type === type)\n .reduce<Record<string, LegacyStateMessage>>(\n (acc, request) => ({\n ...acc,\n [request.id]: { ...request, msgParams: request.messageParams },\n }),\n {},\n );\n }\n\n #addLog(\n signatureRequestType: SignatureRequestType,\n version: SignTypedDataVersion | undefined,\n stage: SigningStage,\n signingData: MessageParams,\n ): void {\n const signingMethod = this.#getSignTypeForLogger(\n signatureRequestType,\n version,\n );\n\n this.messagingSystem.call('LoggingController:add', {\n type: LogType.EthSignLog,\n data: {\n signingMethod,\n stage,\n signingData,\n },\n });\n }\n\n #getSignTypeForLogger(\n requestType: SignatureRequestType,\n version?: SignTypedDataVersion,\n ): SigningMethod {\n if (requestType === SignatureRequestType.PersonalSign) {\n return SigningMethod.PersonalSign;\n }\n\n if (\n requestType === SignatureRequestType.TypedSign &&\n version === SignTypedDataVersion.V3\n ) {\n return SigningMethod.EthSignTypedDataV3;\n }\n\n if (\n requestType === SignatureRequestType.TypedSign &&\n version === SignTypedDataVersion.V4\n ) {\n return SigningMethod.EthSignTypedDataV4;\n }\n\n return SigningMethod.EthSignTypedData;\n }\n}\n"]}
@@ -5,7 +5,6 @@ import { BaseController } from "@metamask/base-controller";
5
5
  import type { TraceCallback, TraceContext } from "@metamask/controller-utils";
6
6
  import type { KeyringControllerSignMessageAction, KeyringControllerSignPersonalMessageAction, KeyringControllerSignTypedMessageAction } from "@metamask/keyring-controller";
7
7
  import { type AddLog } from "@metamask/logging-controller";
8
- import type { NetworkControllerGetNetworkClientByIdAction } from "@metamask/network-controller";
9
8
  import type { Hex, Json } from "@metamask/utils";
10
9
  import EventEmitter from "events";
11
10
  import type { MessageParamsPersonal, MessageParamsTyped, OriginalRequest, SignatureRequest, TypedSigningOptions, LegacyStateMessage } from "./types.cjs";
@@ -36,7 +35,7 @@ export type SignatureControllerState = {
36
35
  */
37
36
  unapprovedTypedMessagesCount: number;
38
37
  };
39
- type AllowedActions = AddApprovalRequest | KeyringControllerSignMessageAction | KeyringControllerSignPersonalMessageAction | KeyringControllerSignTypedMessageAction | AddLog | NetworkControllerGetNetworkClientByIdAction;
38
+ type AllowedActions = AddApprovalRequest | KeyringControllerSignMessageAction | KeyringControllerSignPersonalMessageAction | KeyringControllerSignTypedMessageAction | AddLog;
40
39
  export type GetSignatureState = ControllerGetStateAction<typeof controllerName, SignatureControllerState>;
41
40
  export type SignatureStateChange = ControllerStateChangeEvent<typeof controllerName, SignatureControllerState>;
42
41
  export type SignatureControllerActions = GetSignatureState;
@@ -78,11 +77,12 @@ export declare class SignatureController extends BaseController<typeof controlle
78
77
  * Construct a Sign controller.
79
78
  *
80
79
  * @param options - The controller options.
80
+ * @param options.getCurrentChainId - A function that returns the current chain ID.
81
81
  * @param options.messenger - The restricted controller messenger for the sign controller.
82
82
  * @param options.state - Initial state to set on this controller.
83
83
  * @param options.trace - Callback to generate trace information.
84
84
  */
85
- constructor({ messenger, state, trace }: SignatureControllerOptions);
85
+ constructor({ getCurrentChainId, messenger, state, trace, }: SignatureControllerOptions);
86
86
  /**
87
87
  * A getter for the number of 'unapproved' PersonalMessages in this.messages.
88
88
  * @deprecated Use `signatureRequests` state instead.
@@ -1 +1 @@
1
- {"version":3,"file":"SignatureController.d.cts","sourceRoot":"","sources":["../src/SignatureController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SignatureController.d.cts","sourceRoot":"","sources":["../src/SignatureController.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,6 @@ import { BaseController } from "@metamask/base-controller";
5
5
  import type { TraceCallback, TraceContext } from "@metamask/controller-utils";
6
6
  import type { KeyringControllerSignMessageAction, KeyringControllerSignPersonalMessageAction, KeyringControllerSignTypedMessageAction } from "@metamask/keyring-controller";
7
7
  import { type AddLog } from "@metamask/logging-controller";
8
- import type { NetworkControllerGetNetworkClientByIdAction } from "@metamask/network-controller";
9
8
  import type { Hex, Json } from "@metamask/utils";
10
9
  import EventEmitter from "events";
11
10
  import type { MessageParamsPersonal, MessageParamsTyped, OriginalRequest, SignatureRequest, TypedSigningOptions, LegacyStateMessage } from "./types.mjs";
@@ -36,7 +35,7 @@ export type SignatureControllerState = {
36
35
  */
37
36
  unapprovedTypedMessagesCount: number;
38
37
  };
39
- type AllowedActions = AddApprovalRequest | KeyringControllerSignMessageAction | KeyringControllerSignPersonalMessageAction | KeyringControllerSignTypedMessageAction | AddLog | NetworkControllerGetNetworkClientByIdAction;
38
+ type AllowedActions = AddApprovalRequest | KeyringControllerSignMessageAction | KeyringControllerSignPersonalMessageAction | KeyringControllerSignTypedMessageAction | AddLog;
40
39
  export type GetSignatureState = ControllerGetStateAction<typeof controllerName, SignatureControllerState>;
41
40
  export type SignatureStateChange = ControllerStateChangeEvent<typeof controllerName, SignatureControllerState>;
42
41
  export type SignatureControllerActions = GetSignatureState;
@@ -78,11 +77,12 @@ export declare class SignatureController extends BaseController<typeof controlle
78
77
  * Construct a Sign controller.
79
78
  *
80
79
  * @param options - The controller options.
80
+ * @param options.getCurrentChainId - A function that returns the current chain ID.
81
81
  * @param options.messenger - The restricted controller messenger for the sign controller.
82
82
  * @param options.state - Initial state to set on this controller.
83
83
  * @param options.trace - Callback to generate trace information.
84
84
  */
85
- constructor({ messenger, state, trace }: SignatureControllerOptions);
85
+ constructor({ getCurrentChainId, messenger, state, trace, }: SignatureControllerOptions);
86
86
  /**
87
87
  * A getter for the number of 'unapproved' PersonalMessages in this.messages.
88
88
  * @deprecated Use `signatureRequests` state instead.
@@ -1 +1 @@
1
- {"version":3,"file":"SignatureController.d.mts","sourceRoot":"","sources":["../src/SignatureController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SignatureController.d.mts","sourceRoot":"","sources":["../src/SignatureController.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
- var _SignatureController_instances, _SignatureController_trace, _SignatureController_parseTypedData, _SignatureController_processSignatureRequest, _SignatureController_addMetadata, _SignatureController_processApproval, _SignatureController_approveAndSignRequest, _SignatureController_signRequest, _SignatureController_errorSignatureRequest, _SignatureController_rejectSignatureRequest, _SignatureController_waitForFinished, _SignatureController_requestApproval, _SignatureController_updateMetadata, _SignatureController_updateState, _SignatureController_generateLegacyState, _SignatureController_addLog, _SignatureController_getSignTypeForLogger, _SignatureController_getChainId;
12
+ var _SignatureController_instances, _SignatureController_getCurrentChainId, _SignatureController_trace, _SignatureController_parseTypedData, _SignatureController_processSignatureRequest, _SignatureController_addMetadata, _SignatureController_processApproval, _SignatureController_approveAndSignRequest, _SignatureController_signRequest, _SignatureController_errorSignatureRequest, _SignatureController_rejectSignatureRequest, _SignatureController_waitForFinished, _SignatureController_requestApproval, _SignatureController_updateMetadata, _SignatureController_updateState, _SignatureController_generateLegacyState, _SignatureController_addLog, _SignatureController_getSignTypeForLogger;
13
13
  import { BaseController } from "@metamask/base-controller";
14
14
  import { ApprovalType, detectSIWE, ORIGIN_METAMASK } from "@metamask/controller-utils";
15
15
  import { SignTypedDataVersion } from "@metamask/keyring-controller";
@@ -49,11 +49,12 @@ export class SignatureController extends BaseController {
49
49
  * Construct a Sign controller.
50
50
  *
51
51
  * @param options - The controller options.
52
+ * @param options.getCurrentChainId - A function that returns the current chain ID.
52
53
  * @param options.messenger - The restricted controller messenger for the sign controller.
53
54
  * @param options.state - Initial state to set on this controller.
54
55
  * @param options.trace - Callback to generate trace information.
55
56
  */
56
- constructor({ messenger, state, trace }) {
57
+ constructor({ getCurrentChainId, messenger, state, trace, }) {
57
58
  super({
58
59
  name: controllerName,
59
60
  metadata: stateMetadata,
@@ -64,8 +65,10 @@ export class SignatureController extends BaseController {
64
65
  },
65
66
  });
66
67
  _SignatureController_instances.add(this);
68
+ _SignatureController_getCurrentChainId.set(this, void 0);
67
69
  _SignatureController_trace.set(this, void 0);
68
70
  this.hub = new EventEmitter();
71
+ __classPrivateFieldSet(this, _SignatureController_getCurrentChainId, getCurrentChainId, "f");
69
72
  __classPrivateFieldSet(this, _SignatureController_trace, trace ?? ((_request, fn) => fn?.()), "f");
70
73
  }
71
74
  /**
@@ -155,17 +158,16 @@ export class SignatureController extends BaseController {
155
158
  * @returns Promise resolving to the raw signature hash generated from the signature request.
156
159
  */
157
160
  async newUnsignedTypedMessage(messageParams, request, version, signingOptions, options = {}) {
158
- const chainId = __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_getChainId).call(this, request);
159
- validateTypedSignatureRequest(messageParams, version, chainId);
161
+ validateTypedSignatureRequest(messageParams, version, __classPrivateFieldGet(this, _SignatureController_getCurrentChainId, "f").call(this));
160
162
  const normalizedMessageParams = normalizeTypedMessageParams(messageParams, version);
161
163
  return __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_processSignatureRequest).call(this, {
162
- approvalType: ApprovalType.EthSignTypedData,
163
164
  messageParams: normalizedMessageParams,
164
165
  request,
165
- signingOptions,
166
- traceContext: options.traceContext,
167
166
  type: SignatureRequestType.TypedSign,
167
+ approvalType: ApprovalType.EthSignTypedData,
168
168
  version: version,
169
+ signingOptions,
170
+ traceContext: options.traceContext,
169
171
  });
170
172
  }
171
173
  /**
@@ -222,7 +224,7 @@ export class SignatureController extends BaseController {
222
224
  this.setTypedMessageInProgress(signatureRequestId);
223
225
  }
224
226
  }
225
- _SignatureController_trace = new WeakMap(), _SignatureController_instances = new WeakSet(), _SignatureController_parseTypedData = function _SignatureController_parseTypedData(messageParams, version) {
227
+ _SignatureController_getCurrentChainId = new WeakMap(), _SignatureController_trace = new WeakMap(), _SignatureController_instances = new WeakSet(), _SignatureController_parseTypedData = function _SignatureController_parseTypedData(messageParams, version) {
226
228
  if (![SignTypedDataVersion.V3, SignTypedDataVersion.V4].includes(version) ||
227
229
  typeof messageParams.data !== 'string') {
228
230
  return messageParams;
@@ -231,17 +233,15 @@ _SignatureController_trace = new WeakMap(), _SignatureController_instances = new
231
233
  ...messageParams,
232
234
  data: JSON.parse(messageParams.data),
233
235
  };
234
- }, _SignatureController_processSignatureRequest = async function _SignatureController_processSignatureRequest({ chainId: optionChainId, messageParams, request, type, approvalType, version, signingOptions, traceContext, }) {
236
+ }, _SignatureController_processSignatureRequest = async function _SignatureController_processSignatureRequest({ messageParams, request, type, approvalType, version, signingOptions, traceContext, }) {
235
237
  log('Processing signature request', {
236
238
  messageParams,
237
239
  request,
238
240
  type,
239
241
  version,
240
242
  });
241
- const chainId = optionChainId ?? __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_getChainId).call(this, request);
242
243
  __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_addLog).call(this, type, version, SigningStage.Proposed, messageParams);
243
244
  const metadata = __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_addMetadata).call(this, {
244
- chainId,
245
245
  messageParams,
246
246
  request,
247
247
  signingOptions,
@@ -288,18 +288,16 @@ _SignatureController_trace = new WeakMap(), _SignatureController_instances = new
288
288
  default:
289
289
  throw new Error(`MetaMask ${type} Signature: Unknown problem: ${JSON.stringify(finalMessageParams)}`);
290
290
  }
291
- }, _SignatureController_addMetadata = function _SignatureController_addMetadata({ chainId, messageParams, request, signingOptions, type, version, }) {
291
+ }, _SignatureController_addMetadata = function _SignatureController_addMetadata({ messageParams, request, signingOptions, type, version, }) {
292
292
  const finalMessageParams = {
293
293
  ...messageParams,
294
294
  origin: request.origin,
295
295
  requestId: request.id,
296
296
  };
297
- const { networkClientId, securityAlertResponse } = request;
297
+ const { securityAlertResponse } = request;
298
298
  const metadata = {
299
- chainId,
300
299
  id: random(),
301
300
  messageParams: finalMessageParams,
302
- networkClientId,
303
301
  securityAlertResponse,
304
302
  signingOptions,
305
303
  status: SignatureRequestStatus.Unapproved,
@@ -310,7 +308,6 @@ _SignatureController_trace = new WeakMap(), _SignatureController_instances = new
310
308
  __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_updateState).call(this, (state) => {
311
309
  state.signatureRequests[metadata.id] = metadata;
312
310
  });
313
- log('Added signature request', metadata);
314
311
  this.hub.emit('unapprovedMessage', {
315
312
  messageParams,
316
313
  metamaskId: metadata.id,
@@ -476,12 +473,5 @@ _SignatureController_trace = new WeakMap(), _SignatureController_instances = new
476
473
  return SigningMethod.EthSignTypedDataV4;
477
474
  }
478
475
  return SigningMethod.EthSignTypedData;
479
- }, _SignatureController_getChainId = function _SignatureController_getChainId(request) {
480
- const { networkClientId } = request;
481
- if (!networkClientId) {
482
- throw new Error('Network client ID not found in request');
483
- }
484
- const networkClient = this.messagingSystem.call('NetworkController:getNetworkClientById', networkClientId);
485
- return networkClient.configuration.chainId;
486
476
  };
487
477
  //# sourceMappingURL=SignatureController.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SignatureController.mjs","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 {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n RestrictedControllerMessenger,\n} from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type { TraceCallback, TraceContext } from '@metamask/controller-utils';\nimport {\n ApprovalType,\n detectSIWE,\n ORIGIN_METAMASK,\n} from '@metamask/controller-utils';\nimport type {\n KeyringControllerSignMessageAction,\n KeyringControllerSignPersonalMessageAction,\n KeyringControllerSignTypedMessageAction,\n} from '@metamask/keyring-controller';\nimport { SignTypedDataVersion } from '@metamask/keyring-controller';\nimport {\n SigningMethod,\n LogType,\n SigningStage,\n type AddLog,\n} from '@metamask/logging-controller';\nimport type { NetworkControllerGetNetworkClientByIdAction } from '@metamask/network-controller';\nimport type { Hex, Json } from '@metamask/utils';\nimport EventEmitter from 'events';\nimport { v1 as random } from 'uuid';\n\nimport { projectLogger as log } from './logger';\nimport { SignatureRequestStatus, SignatureRequestType } from './types';\nimport type {\n MessageParamsPersonal,\n MessageParamsTyped,\n OriginalRequest,\n SignatureRequest,\n MessageParams,\n TypedSigningOptions,\n LegacyStateMessage,\n StateSIWEMessage,\n} from './types';\nimport {\n normalizePersonalMessageParams,\n normalizeTypedMessageParams,\n} from './utils/normalize';\nimport {\n validatePersonalSignatureRequest,\n validateTypedSignatureRequest,\n} from './utils/validation';\n\nconst controllerName = 'SignatureController';\n\nconst stateMetadata = {\n signatureRequests: { persist: false, anonymous: false },\n unapprovedPersonalMsgs: { persist: false, anonymous: false },\n unapprovedTypedMessages: { persist: false, anonymous: false },\n unapprovedPersonalMsgCount: { persist: false, anonymous: false },\n unapprovedTypedMessagesCount: { persist: false, anonymous: false },\n};\n\nconst getDefaultState = () => ({\n signatureRequests: {},\n unapprovedPersonalMsgs: {},\n unapprovedTypedMessages: {},\n unapprovedPersonalMsgCount: 0,\n unapprovedTypedMessagesCount: 0,\n});\n\n/** List of statuses that will not be updated and trigger the finished event. */\nconst FINAL_STATUSES: SignatureRequestStatus[] = [\n SignatureRequestStatus.Signed,\n SignatureRequestStatus.Rejected,\n SignatureRequestStatus.Errored,\n];\n\nexport type SignatureControllerState = {\n /**\n * Map of all signature requests including all types and statuses, keyed by ID.\n */\n signatureRequests: Record<string, SignatureRequest>;\n\n /**\n * Map of personal messages with the unapproved status, keyed by ID.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedPersonalMsgs: Record<string, LegacyStateMessage>;\n\n /**\n * Map of typed messages with the unapproved status, keyed by ID.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedTypedMessages: Record<string, LegacyStateMessage>;\n\n /**\n * Number of unapproved personal messages.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedPersonalMsgCount: number;\n\n /**\n * Number of unapproved typed messages.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedTypedMessagesCount: number;\n};\n\ntype AllowedActions =\n | AddApprovalRequest\n | KeyringControllerSignMessageAction\n | KeyringControllerSignPersonalMessageAction\n | KeyringControllerSignTypedMessageAction\n | AddLog\n | NetworkControllerGetNetworkClientByIdAction;\n\nexport type GetSignatureState = ControllerGetStateAction<\n typeof controllerName,\n SignatureControllerState\n>;\n\nexport type SignatureStateChange = ControllerStateChangeEvent<\n typeof controllerName,\n SignatureControllerState\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 /**\n * @deprecated No longer in use.\n */\n getAllState?: () => unknown;\n\n /**\n * Callback that returns the current chain ID.\n */\n getCurrentChainId: () => Hex;\n\n /**\n * Restricted controller messenger required by the signature controller.\n */\n messenger: SignatureControllerMessenger;\n\n /**\n * @deprecated No longer in use.\n */\n securityProviderRequest?: (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n requestData: any,\n methodName: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ) => Promise<any>;\n\n /**\n * Initial state of the controller.\n */\n state?: SignatureControllerState;\n\n /**\n * Callback to record the duration of code.\n */\n trace?: TraceCallback;\n};\n\n/**\n * Controller for creating signing requests requiring user approval.\n */\nexport class SignatureController extends BaseController<\n typeof controllerName,\n SignatureControllerState,\n SignatureControllerMessenger\n> {\n hub: EventEmitter;\n\n #trace: TraceCallback;\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.state - Initial state to set on this controller.\n * @param options.trace - Callback to generate trace information.\n */\n constructor({ messenger, state, trace }: SignatureControllerOptions) {\n super({\n name: controllerName,\n metadata: stateMetadata,\n messenger,\n state: {\n ...getDefaultState(),\n ...state,\n },\n });\n\n this.hub = new EventEmitter();\n this.#trace = trace ?? (((_request, fn) => fn?.()) as TraceCallback);\n }\n\n /**\n * A getter for the number of 'unapproved' PersonalMessages in this.messages.\n * @deprecated Use `signatureRequests` state instead.\n * @returns The number of 'unapproved' PersonalMessages in this.messages\n */\n get unapprovedPersonalMessagesCount(): number {\n return this.state.unapprovedPersonalMsgCount;\n }\n\n /**\n * A getter for the number of 'unapproved' TypedMessages in this.messages.\n * @deprecated Use `signatureRequests` state instead.\n * @returns The number of 'unapproved' TypedMessages in this.messages\n */\n get unapprovedTypedMessagesCount(): number {\n return this.state.unapprovedTypedMessagesCount;\n }\n\n /**\n * A getter for returning all messages.\n * @deprecated Use `signatureRequests` state instead.\n * @returns The object containing all messages.\n */\n get messages(): { [id: string]: SignatureRequest } {\n return this.state.signatureRequests;\n }\n\n /**\n * Reset the controller state to the initial state.\n */\n resetState() {\n this.#updateState((state) => {\n Object.assign(state, getDefaultState());\n });\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 const unapprovedSignatureRequests = Object.values(\n this.state.signatureRequests,\n ).filter(\n (metadata) => metadata.status === SignatureRequestStatus.Unapproved,\n );\n\n for (const metadata of unapprovedSignatureRequests) {\n this.#rejectSignatureRequest(metadata.id, reason);\n }\n }\n\n /**\n * Clears all unapproved messages from memory.\n */\n clearUnapproved() {\n this.#updateState((state) => {\n Object.values(state.signatureRequests)\n .filter(\n (metadata) => metadata.status === SignatureRequestStatus.Unapproved,\n )\n .forEach((metadata) => delete state.signatureRequests[metadata.id]);\n });\n }\n\n /**\n * Called when a dApp uses the personal_sign method.\n * We currently provide personal_sign mostly for legacy dApps.\n *\n * @param messageParams - The params of the message to sign and return to the dApp.\n * @param request - The original request, containing the origin.\n * @param options - An options bag for the method.\n * @param options.traceContext - The parent context for any new traces.\n * @returns Promise resolving to the raw signature hash generated from the signature request.\n */\n async newUnsignedPersonalMessage(\n messageParams: MessageParamsPersonal,\n request: OriginalRequest,\n options: { traceContext?: TraceContext } = {},\n ): Promise<string> {\n validatePersonalSignatureRequest(messageParams);\n\n const normalizedMessageParams =\n normalizePersonalMessageParams(messageParams);\n\n normalizedMessageParams.siwe = detectSIWE(\n messageParams,\n ) as StateSIWEMessage;\n\n return this.#processSignatureRequest({\n messageParams: normalizedMessageParams,\n request,\n type: SignatureRequestType.PersonalSign,\n approvalType: ApprovalType.PersonalSign,\n traceContext: options.traceContext,\n });\n }\n\n /**\n * Called when a dapp uses the eth_signTypedData method, per EIP-712.\n *\n * @param messageParams - The params of the message to sign and return to the dApp.\n * @param request - The original request, containing the origin.\n * @param version - The version of the signTypedData request.\n * @param signingOptions - Options for signing the typed message.\n * @param options - An options bag for the method.\n * @param options.traceContext - The parent context for any new traces.\n * @returns Promise resolving to the raw signature hash generated from the signature request.\n */\n async newUnsignedTypedMessage(\n messageParams: MessageParamsTyped,\n request: OriginalRequest,\n version: string,\n signingOptions: TypedSigningOptions,\n options: { traceContext?: TraceContext } = {},\n ): Promise<string> {\n const chainId = this.#getChainId(request);\n\n validateTypedSignatureRequest(\n messageParams,\n version as SignTypedDataVersion,\n chainId,\n );\n\n const normalizedMessageParams = normalizeTypedMessageParams(\n messageParams,\n version as SignTypedDataVersion,\n );\n\n return this.#processSignatureRequest({\n approvalType: ApprovalType.EthSignTypedData,\n messageParams: normalizedMessageParams,\n request,\n signingOptions,\n traceContext: options.traceContext,\n type: SignatureRequestType.TypedSign,\n version: version as SignTypedDataVersion,\n });\n }\n\n /**\n * Provide a signature for a pending signature request that used `deferSetAsSigned`.\n * Changes the status of the signature request to `signed`.\n *\n * @param signatureRequestId - The ID of the signature request.\n * @param signature - The signature to provide.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setDeferredSignSuccess(signatureRequestId: string, signature: any) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.rawSig = signature;\n draftMetadata.status = SignatureRequestStatus.Signed;\n });\n }\n\n /**\n * Set custom metadata on a signature request.\n * @param signatureRequestId - The ID of the signature request.\n * @param metadata - The custom metadata to set.\n */\n setMessageMetadata(signatureRequestId: string, metadata: Json) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.metadata = metadata;\n });\n }\n\n /**\n * Reject a pending signature request that used `deferSetAsSigned`.\n * Changes the status of the signature request to `rejected`.\n *\n * @param signatureRequestId - The ID of the signature request.\n */\n setDeferredSignError(signatureRequestId: string) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Rejected;\n });\n }\n\n /**\n * Set the status of a signature request to 'inProgress'.\n *\n * @param signatureRequestId - The ID of the signature request.\n */\n setTypedMessageInProgress(signatureRequestId: string) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.InProgress;\n });\n }\n\n /**\n * Set the status of a signature request to 'inProgress'.\n *\n * @param signatureRequestId - The ID of the signature request.\n */\n setPersonalMessageInProgress(signatureRequestId: string) {\n this.setTypedMessageInProgress(signatureRequestId);\n }\n\n #parseTypedData(\n messageParams: MessageParamsTyped,\n version?: SignTypedDataVersion,\n ): MessageParamsTyped {\n if (\n ![SignTypedDataVersion.V3, SignTypedDataVersion.V4].includes(\n version as SignTypedDataVersion,\n ) ||\n typeof messageParams.data !== 'string'\n ) {\n return messageParams;\n }\n\n return {\n ...messageParams,\n data: JSON.parse(messageParams.data),\n };\n }\n\n async #processSignatureRequest({\n chainId: optionChainId,\n messageParams,\n request,\n type,\n approvalType,\n version,\n signingOptions,\n traceContext,\n }: {\n chainId?: Hex;\n messageParams: MessageParams;\n request: OriginalRequest;\n type: SignatureRequestType;\n approvalType: ApprovalType;\n version?: SignTypedDataVersion;\n signingOptions?: TypedSigningOptions;\n traceContext?: TraceContext;\n }): Promise<string> {\n log('Processing signature request', {\n messageParams,\n request,\n type,\n version,\n });\n\n const chainId = optionChainId ?? this.#getChainId(request);\n\n this.#addLog(type, version, SigningStage.Proposed, messageParams);\n\n const metadata = this.#addMetadata({\n chainId,\n messageParams,\n request,\n signingOptions,\n type,\n version,\n });\n\n let resultCallbacks: AcceptResultCallbacks | undefined;\n let approveOrSignError: unknown;\n\n const finalMetadataPromise = this.#waitForFinished(metadata.id);\n\n try {\n resultCallbacks = await this.#processApproval({\n approvalType,\n metadata,\n request,\n traceContext,\n });\n\n await this.#approveAndSignRequest(metadata, traceContext);\n } catch (error) {\n log('Signature request failed', error);\n approveOrSignError = error;\n }\n\n const finalMetadata = await finalMetadataPromise;\n\n const {\n error,\n id,\n messageParams: finalMessageParams,\n rawSig: signature,\n } = finalMetadata;\n\n switch (finalMetadata.status) {\n case SignatureRequestStatus.Signed:\n log('Signature request finished', { id, signature });\n this.#addLog(type, version, SigningStage.Signed, finalMessageParams);\n resultCallbacks?.success(signature);\n return finalMetadata.rawSig as string;\n\n case SignatureRequestStatus.Rejected:\n /* istanbul ignore next */\n const rejectedError = (approveOrSignError ??\n new Error(\n `MetaMask ${type} Signature: User denied message signature.`,\n )) as Error;\n\n resultCallbacks?.error(rejectedError);\n throw rejectedError;\n\n case SignatureRequestStatus.Errored:\n /* istanbul ignore next */\n const erroredError = (approveOrSignError ??\n new Error(`MetaMask ${type} Signature: ${error as string}`)) as Error;\n\n resultCallbacks?.error(erroredError);\n throw erroredError;\n\n /* istanbul ignore next */\n default:\n throw new Error(\n `MetaMask ${type} Signature: Unknown problem: ${JSON.stringify(\n finalMessageParams,\n )}`,\n );\n }\n }\n\n #addMetadata({\n chainId,\n messageParams,\n request,\n signingOptions,\n type,\n version,\n }: {\n chainId: Hex;\n messageParams: MessageParams;\n request: OriginalRequest;\n signingOptions?: TypedSigningOptions;\n type: SignatureRequestType;\n version?: SignTypedDataVersion;\n }): SignatureRequest {\n const finalMessageParams = {\n ...messageParams,\n origin: request.origin,\n requestId: request.id,\n };\n\n const { networkClientId, securityAlertResponse } = request;\n\n const metadata = {\n chainId,\n id: random(),\n messageParams: finalMessageParams,\n networkClientId,\n securityAlertResponse,\n signingOptions,\n status: SignatureRequestStatus.Unapproved,\n time: Date.now(),\n type,\n version,\n } as SignatureRequest;\n\n this.#updateState((state) => {\n state.signatureRequests[metadata.id] = metadata;\n });\n\n log('Added signature request', metadata);\n\n this.hub.emit('unapprovedMessage', {\n messageParams,\n metamaskId: metadata.id,\n });\n\n return metadata;\n }\n\n async #processApproval({\n approvalType,\n metadata,\n request,\n traceContext,\n }: {\n approvalType: ApprovalType;\n metadata: SignatureRequest;\n request?: OriginalRequest;\n traceContext?: TraceContext;\n }): Promise<AcceptResultCallbacks | undefined> {\n const { id, messageParams, type, version } = metadata;\n\n try {\n const acceptResult = await this.#trace(\n { name: 'Await Approval', parentContext: traceContext },\n (context) =>\n this.#requestApproval(metadata, approvalType, {\n traceContext: context,\n actionId: request?.id?.toString(),\n }),\n );\n\n return acceptResult.resultCallbacks;\n } catch (error) {\n log('User rejected request', { id, error });\n\n this.#addLog(type, version, SigningStage.Rejected, messageParams);\n this.#rejectSignatureRequest(id);\n\n throw error;\n }\n }\n\n async #approveAndSignRequest(\n metadata: SignatureRequest,\n traceContext?: TraceContext,\n ) {\n const { id } = metadata;\n\n this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Approved;\n });\n\n await this.#trace({ name: 'Sign', parentContext: traceContext }, () =>\n this.#signRequest(metadata),\n );\n }\n\n async #signRequest(metadata: SignatureRequest) {\n const { id, messageParams, signingOptions, type } = metadata;\n\n try {\n let signature: string;\n\n switch (type) {\n case SignatureRequestType.PersonalSign:\n signature = await this.messagingSystem.call(\n 'KeyringController:signPersonalMessage',\n // Keyring controller temporarily using message manager types.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n messageParams as any,\n );\n break;\n\n case SignatureRequestType.TypedSign:\n const finalRequest = signingOptions?.parseJsonData\n ? this.#parseTypedData(messageParams, metadata.version)\n : messageParams;\n\n signature = await this.messagingSystem.call(\n 'KeyringController:signTypedMessage',\n finalRequest,\n metadata.version as SignTypedDataVersion,\n );\n break;\n\n /* istanbul ignore next */\n default:\n throw new Error(`Unknown signature request type: ${type as string}`);\n }\n\n this.hub.emit(`${type}:signed`, { signature, messageId: id });\n\n if (messageParams.deferSetAsSigned) {\n return;\n }\n\n this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.rawSig = signature;\n draftMetadata.status = SignatureRequestStatus.Signed;\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n if (type === SignatureRequestType.TypedSign) {\n this.#errorSignatureRequest(id, error.message);\n } else {\n this.#rejectSignatureRequest(id);\n }\n\n this.hub.emit(`${id}:signError`, { error });\n\n throw error;\n }\n }\n\n #errorSignatureRequest(id: string, error: string) {\n this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Errored;\n draftMetadata.error = error;\n });\n }\n\n #rejectSignatureRequest(signatureRequestId: string, reason?: string) {\n if (reason) {\n const metadata = this.state.signatureRequests[signatureRequestId];\n this.hub.emit('cancelWithReason', { metadata, reason });\n }\n\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Rejected;\n });\n }\n\n async #waitForFinished(id: string): Promise<SignatureRequest> {\n return new Promise((resolve) => {\n this.hub.once(`${id}:finished`, (metadata: SignatureRequest) => {\n resolve(metadata);\n });\n });\n }\n\n async #requestApproval(\n metadata: SignatureRequest,\n type: ApprovalType,\n {\n traceContext,\n actionId,\n }: { traceContext?: TraceContext; actionId?: string },\n ): Promise<AddResult> {\n const { id, messageParams } = metadata;\n const origin = messageParams.origin || ORIGIN_METAMASK;\n\n await this.#trace({\n name: 'Notification Display',\n id: actionId,\n parentContext: traceContext,\n });\n\n return (await this.messagingSystem.call(\n 'ApprovalController:addRequest',\n {\n id,\n origin,\n type,\n requestData: { ...messageParams },\n expectsResult: true,\n },\n true,\n )) as Promise<AddResult>;\n }\n\n #updateMetadata(\n id: string,\n callback: (metadata: SignatureRequest) => void,\n ): SignatureRequest {\n let statusChanged = false;\n\n const { nextState } = this.#updateState((state) => {\n const metadata = state.signatureRequests[id];\n\n if (!metadata) {\n throw new Error(`Signature request with id ${id} not found`);\n }\n\n const originalStatus = metadata.status;\n\n // eslint-disable-next-line n/callback-return\n callback(metadata);\n\n statusChanged = metadata.status !== originalStatus;\n });\n\n const updatedMetadata = nextState.signatureRequests[id];\n\n if (\n statusChanged &&\n FINAL_STATUSES.includes(updatedMetadata.status as SignatureRequestStatus)\n ) {\n this.hub.emit(`${id}:finished`, updatedMetadata);\n }\n\n return updatedMetadata;\n }\n\n #updateState(callback: (state: SignatureControllerState) => void) {\n return this.update((state) => {\n // eslint-disable-next-line n/callback-return, n/no-callback-literal\n callback(state as unknown as SignatureControllerState);\n\n const unapprovedRequests = Object.values(state.signatureRequests).filter(\n (request) => request.status === SignatureRequestStatus.Unapproved,\n ) as unknown as SignatureRequest[];\n\n const personalSignMessages = this.#generateLegacyState(\n unapprovedRequests,\n SignatureRequestType.PersonalSign,\n );\n\n const typedSignMessages = this.#generateLegacyState(\n unapprovedRequests,\n SignatureRequestType.TypedSign,\n );\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n state.unapprovedPersonalMsgs = personalSignMessages as any;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n state.unapprovedTypedMessages = typedSignMessages as any;\n\n state.unapprovedPersonalMsgCount =\n Object.values(personalSignMessages).length;\n\n state.unapprovedTypedMessagesCount =\n Object.values(typedSignMessages).length;\n });\n }\n\n #generateLegacyState(\n signatureRequests: SignatureRequest[],\n type: SignatureRequestType,\n ): Record<string, LegacyStateMessage> {\n return signatureRequests\n .filter((request) => request.type === type)\n .reduce<Record<string, LegacyStateMessage>>(\n (acc, request) => ({\n ...acc,\n [request.id]: { ...request, msgParams: request.messageParams },\n }),\n {},\n );\n }\n\n #addLog(\n signatureRequestType: SignatureRequestType,\n version: SignTypedDataVersion | undefined,\n stage: SigningStage,\n signingData: MessageParams,\n ): void {\n const signingMethod = this.#getSignTypeForLogger(\n signatureRequestType,\n version,\n );\n\n this.messagingSystem.call('LoggingController:add', {\n type: LogType.EthSignLog,\n data: {\n signingMethod,\n stage,\n signingData,\n },\n });\n }\n\n #getSignTypeForLogger(\n requestType: SignatureRequestType,\n version?: SignTypedDataVersion,\n ): SigningMethod {\n if (requestType === SignatureRequestType.PersonalSign) {\n return SigningMethod.PersonalSign;\n }\n\n if (\n requestType === SignatureRequestType.TypedSign &&\n version === SignTypedDataVersion.V3\n ) {\n return SigningMethod.EthSignTypedDataV3;\n }\n\n if (\n requestType === SignatureRequestType.TypedSign &&\n version === SignTypedDataVersion.V4\n ) {\n return SigningMethod.EthSignTypedDataV4;\n }\n\n return SigningMethod.EthSignTypedData;\n }\n\n #getChainId(request: OriginalRequest): Hex {\n const { networkClientId } = request;\n\n if (!networkClientId) {\n throw new Error('Network client ID not found in request');\n }\n\n const networkClient = this.messagingSystem.call(\n 'NetworkController:getNetworkClientById',\n networkClientId,\n );\n\n return networkClient.configuration.chainId;\n }\n}\n"]}
1
+ {"version":3,"file":"SignatureController.mjs","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 {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n RestrictedControllerMessenger,\n} from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type { TraceCallback, TraceContext } from '@metamask/controller-utils';\nimport {\n ApprovalType,\n detectSIWE,\n ORIGIN_METAMASK,\n} from '@metamask/controller-utils';\nimport type {\n KeyringControllerSignMessageAction,\n KeyringControllerSignPersonalMessageAction,\n KeyringControllerSignTypedMessageAction,\n} from '@metamask/keyring-controller';\nimport { SignTypedDataVersion } from '@metamask/keyring-controller';\nimport {\n SigningMethod,\n LogType,\n SigningStage,\n type AddLog,\n} from '@metamask/logging-controller';\nimport type { Hex, Json } from '@metamask/utils';\nimport EventEmitter from 'events';\nimport { v1 as random } from 'uuid';\n\nimport { projectLogger as log } from './logger';\nimport { SignatureRequestStatus, SignatureRequestType } from './types';\nimport type {\n MessageParamsPersonal,\n MessageParamsTyped,\n OriginalRequest,\n SignatureRequest,\n MessageParams,\n TypedSigningOptions,\n LegacyStateMessage,\n StateSIWEMessage,\n} from './types';\nimport {\n normalizePersonalMessageParams,\n normalizeTypedMessageParams,\n} from './utils/normalize';\nimport {\n validatePersonalSignatureRequest,\n validateTypedSignatureRequest,\n} from './utils/validation';\n\nconst controllerName = 'SignatureController';\n\nconst stateMetadata = {\n signatureRequests: { persist: false, anonymous: false },\n unapprovedPersonalMsgs: { persist: false, anonymous: false },\n unapprovedTypedMessages: { persist: false, anonymous: false },\n unapprovedPersonalMsgCount: { persist: false, anonymous: false },\n unapprovedTypedMessagesCount: { persist: false, anonymous: false },\n};\n\nconst getDefaultState = () => ({\n signatureRequests: {},\n unapprovedPersonalMsgs: {},\n unapprovedTypedMessages: {},\n unapprovedPersonalMsgCount: 0,\n unapprovedTypedMessagesCount: 0,\n});\n\n/** List of statuses that will not be updated and trigger the finished event. */\nconst FINAL_STATUSES: SignatureRequestStatus[] = [\n SignatureRequestStatus.Signed,\n SignatureRequestStatus.Rejected,\n SignatureRequestStatus.Errored,\n];\n\nexport type SignatureControllerState = {\n /**\n * Map of all signature requests including all types and statuses, keyed by ID.\n */\n signatureRequests: Record<string, SignatureRequest>;\n\n /**\n * Map of personal messages with the unapproved status, keyed by ID.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedPersonalMsgs: Record<string, LegacyStateMessage>;\n\n /**\n * Map of typed messages with the unapproved status, keyed by ID.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedTypedMessages: Record<string, LegacyStateMessage>;\n\n /**\n * Number of unapproved personal messages.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedPersonalMsgCount: number;\n\n /**\n * Number of unapproved typed messages.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedTypedMessagesCount: number;\n};\n\ntype AllowedActions =\n | AddApprovalRequest\n | KeyringControllerSignMessageAction\n | KeyringControllerSignPersonalMessageAction\n | KeyringControllerSignTypedMessageAction\n | AddLog;\n\nexport type GetSignatureState = ControllerGetStateAction<\n typeof controllerName,\n SignatureControllerState\n>;\n\nexport type SignatureStateChange = ControllerStateChangeEvent<\n typeof controllerName,\n SignatureControllerState\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 /**\n * @deprecated No longer in use.\n */\n getAllState?: () => unknown;\n\n /**\n * Callback that returns the current chain ID.\n */\n getCurrentChainId: () => Hex;\n\n /**\n * Restricted controller messenger required by the signature controller.\n */\n messenger: SignatureControllerMessenger;\n\n /**\n * @deprecated No longer in use.\n */\n securityProviderRequest?: (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n requestData: any,\n methodName: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ) => Promise<any>;\n\n /**\n * Initial state of the controller.\n */\n state?: SignatureControllerState;\n\n /**\n * Callback to record the duration of code.\n */\n trace?: TraceCallback;\n};\n\n/**\n * Controller for creating signing requests requiring user approval.\n */\nexport class SignatureController extends BaseController<\n typeof controllerName,\n SignatureControllerState,\n SignatureControllerMessenger\n> {\n hub: EventEmitter;\n\n #getCurrentChainId: () => Hex;\n\n #trace: TraceCallback;\n\n /**\n * Construct a Sign controller.\n *\n * @param options - The controller options.\n * @param options.getCurrentChainId - A function that returns the current chain ID.\n * @param options.messenger - The restricted controller messenger for the sign controller.\n * @param options.state - Initial state to set on this controller.\n * @param options.trace - Callback to generate trace information.\n */\n constructor({\n getCurrentChainId,\n messenger,\n state,\n trace,\n }: SignatureControllerOptions) {\n super({\n name: controllerName,\n metadata: stateMetadata,\n messenger,\n state: {\n ...getDefaultState(),\n ...state,\n },\n });\n\n this.hub = new EventEmitter();\n this.#getCurrentChainId = getCurrentChainId;\n this.#trace = trace ?? (((_request, fn) => fn?.()) as TraceCallback);\n }\n\n /**\n * A getter for the number of 'unapproved' PersonalMessages in this.messages.\n * @deprecated Use `signatureRequests` state instead.\n * @returns The number of 'unapproved' PersonalMessages in this.messages\n */\n get unapprovedPersonalMessagesCount(): number {\n return this.state.unapprovedPersonalMsgCount;\n }\n\n /**\n * A getter for the number of 'unapproved' TypedMessages in this.messages.\n * @deprecated Use `signatureRequests` state instead.\n * @returns The number of 'unapproved' TypedMessages in this.messages\n */\n get unapprovedTypedMessagesCount(): number {\n return this.state.unapprovedTypedMessagesCount;\n }\n\n /**\n * A getter for returning all messages.\n * @deprecated Use `signatureRequests` state instead.\n * @returns The object containing all messages.\n */\n get messages(): { [id: string]: SignatureRequest } {\n return this.state.signatureRequests;\n }\n\n /**\n * Reset the controller state to the initial state.\n */\n resetState() {\n this.#updateState((state) => {\n Object.assign(state, getDefaultState());\n });\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 const unapprovedSignatureRequests = Object.values(\n this.state.signatureRequests,\n ).filter(\n (metadata) => metadata.status === SignatureRequestStatus.Unapproved,\n );\n\n for (const metadata of unapprovedSignatureRequests) {\n this.#rejectSignatureRequest(metadata.id, reason);\n }\n }\n\n /**\n * Clears all unapproved messages from memory.\n */\n clearUnapproved() {\n this.#updateState((state) => {\n Object.values(state.signatureRequests)\n .filter(\n (metadata) => metadata.status === SignatureRequestStatus.Unapproved,\n )\n .forEach((metadata) => delete state.signatureRequests[metadata.id]);\n });\n }\n\n /**\n * Called when a dApp uses the personal_sign method.\n * We currently provide personal_sign mostly for legacy dApps.\n *\n * @param messageParams - The params of the message to sign and return to the dApp.\n * @param request - The original request, containing the origin.\n * @param options - An options bag for the method.\n * @param options.traceContext - The parent context for any new traces.\n * @returns Promise resolving to the raw signature hash generated from the signature request.\n */\n async newUnsignedPersonalMessage(\n messageParams: MessageParamsPersonal,\n request: OriginalRequest,\n options: { traceContext?: TraceContext } = {},\n ): Promise<string> {\n validatePersonalSignatureRequest(messageParams);\n\n const normalizedMessageParams =\n normalizePersonalMessageParams(messageParams);\n\n normalizedMessageParams.siwe = detectSIWE(\n messageParams,\n ) as StateSIWEMessage;\n\n return this.#processSignatureRequest({\n messageParams: normalizedMessageParams,\n request,\n type: SignatureRequestType.PersonalSign,\n approvalType: ApprovalType.PersonalSign,\n traceContext: options.traceContext,\n });\n }\n\n /**\n * Called when a dapp uses the eth_signTypedData method, per EIP-712.\n *\n * @param messageParams - The params of the message to sign and return to the dApp.\n * @param request - The original request, containing the origin.\n * @param version - The version of the signTypedData request.\n * @param signingOptions - Options for signing the typed message.\n * @param options - An options bag for the method.\n * @param options.traceContext - The parent context for any new traces.\n * @returns Promise resolving to the raw signature hash generated from the signature request.\n */\n async newUnsignedTypedMessage(\n messageParams: MessageParamsTyped,\n request: OriginalRequest,\n version: string,\n signingOptions: TypedSigningOptions,\n options: { traceContext?: TraceContext } = {},\n ): Promise<string> {\n validateTypedSignatureRequest(\n messageParams,\n version as SignTypedDataVersion,\n this.#getCurrentChainId(),\n );\n\n const normalizedMessageParams = normalizeTypedMessageParams(\n messageParams,\n version as SignTypedDataVersion,\n );\n\n return this.#processSignatureRequest({\n messageParams: normalizedMessageParams,\n request,\n type: SignatureRequestType.TypedSign,\n approvalType: ApprovalType.EthSignTypedData,\n version: version as SignTypedDataVersion,\n signingOptions,\n traceContext: options.traceContext,\n });\n }\n\n /**\n * Provide a signature for a pending signature request that used `deferSetAsSigned`.\n * Changes the status of the signature request to `signed`.\n *\n * @param signatureRequestId - The ID of the signature request.\n * @param signature - The signature to provide.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setDeferredSignSuccess(signatureRequestId: string, signature: any) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.rawSig = signature;\n draftMetadata.status = SignatureRequestStatus.Signed;\n });\n }\n\n /**\n * Set custom metadata on a signature request.\n * @param signatureRequestId - The ID of the signature request.\n * @param metadata - The custom metadata to set.\n */\n setMessageMetadata(signatureRequestId: string, metadata: Json) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.metadata = metadata;\n });\n }\n\n /**\n * Reject a pending signature request that used `deferSetAsSigned`.\n * Changes the status of the signature request to `rejected`.\n *\n * @param signatureRequestId - The ID of the signature request.\n */\n setDeferredSignError(signatureRequestId: string) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Rejected;\n });\n }\n\n /**\n * Set the status of a signature request to 'inProgress'.\n *\n * @param signatureRequestId - The ID of the signature request.\n */\n setTypedMessageInProgress(signatureRequestId: string) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.InProgress;\n });\n }\n\n /**\n * Set the status of a signature request to 'inProgress'.\n *\n * @param signatureRequestId - The ID of the signature request.\n */\n setPersonalMessageInProgress(signatureRequestId: string) {\n this.setTypedMessageInProgress(signatureRequestId);\n }\n\n #parseTypedData(\n messageParams: MessageParamsTyped,\n version?: SignTypedDataVersion,\n ): MessageParamsTyped {\n if (\n ![SignTypedDataVersion.V3, SignTypedDataVersion.V4].includes(\n version as SignTypedDataVersion,\n ) ||\n typeof messageParams.data !== 'string'\n ) {\n return messageParams;\n }\n\n return {\n ...messageParams,\n data: JSON.parse(messageParams.data),\n };\n }\n\n async #processSignatureRequest({\n messageParams,\n request,\n type,\n approvalType,\n version,\n signingOptions,\n traceContext,\n }: {\n messageParams: MessageParams;\n request: OriginalRequest;\n type: SignatureRequestType;\n approvalType: ApprovalType;\n version?: SignTypedDataVersion;\n signingOptions?: TypedSigningOptions;\n traceContext?: TraceContext;\n }): Promise<string> {\n log('Processing signature request', {\n messageParams,\n request,\n type,\n version,\n });\n\n this.#addLog(type, version, SigningStage.Proposed, messageParams);\n\n const metadata = this.#addMetadata({\n messageParams,\n request,\n signingOptions,\n type,\n version,\n });\n\n let resultCallbacks: AcceptResultCallbacks | undefined;\n let approveOrSignError: unknown;\n\n const finalMetadataPromise = this.#waitForFinished(metadata.id);\n\n try {\n resultCallbacks = await this.#processApproval({\n approvalType,\n metadata,\n request,\n traceContext,\n });\n\n await this.#approveAndSignRequest(metadata, traceContext);\n } catch (error) {\n log('Signature request failed', error);\n approveOrSignError = error;\n }\n\n const finalMetadata = await finalMetadataPromise;\n\n const {\n error,\n id,\n messageParams: finalMessageParams,\n rawSig: signature,\n } = finalMetadata;\n\n switch (finalMetadata.status) {\n case SignatureRequestStatus.Signed:\n log('Signature request finished', { id, signature });\n this.#addLog(type, version, SigningStage.Signed, finalMessageParams);\n resultCallbacks?.success(signature);\n return finalMetadata.rawSig as string;\n\n case SignatureRequestStatus.Rejected:\n /* istanbul ignore next */\n const rejectedError = (approveOrSignError ??\n new Error(\n `MetaMask ${type} Signature: User denied message signature.`,\n )) as Error;\n\n resultCallbacks?.error(rejectedError);\n throw rejectedError;\n\n case SignatureRequestStatus.Errored:\n /* istanbul ignore next */\n const erroredError = (approveOrSignError ??\n new Error(`MetaMask ${type} Signature: ${error as string}`)) as Error;\n\n resultCallbacks?.error(erroredError);\n throw erroredError;\n\n /* istanbul ignore next */\n default:\n throw new Error(\n `MetaMask ${type} Signature: Unknown problem: ${JSON.stringify(\n finalMessageParams,\n )}`,\n );\n }\n }\n\n #addMetadata({\n messageParams,\n request,\n signingOptions,\n type,\n version,\n }: {\n messageParams: MessageParams;\n request: OriginalRequest;\n signingOptions?: TypedSigningOptions;\n type: SignatureRequestType;\n version?: SignTypedDataVersion;\n }): SignatureRequest {\n const finalMessageParams = {\n ...messageParams,\n origin: request.origin,\n requestId: request.id,\n };\n\n const { securityAlertResponse } = request;\n\n const metadata = {\n id: random(),\n messageParams: finalMessageParams,\n securityAlertResponse,\n signingOptions,\n status: SignatureRequestStatus.Unapproved,\n time: Date.now(),\n type,\n version,\n } as SignatureRequest;\n\n this.#updateState((state) => {\n state.signatureRequests[metadata.id] = metadata;\n });\n\n this.hub.emit('unapprovedMessage', {\n messageParams,\n metamaskId: metadata.id,\n });\n\n return metadata;\n }\n\n async #processApproval({\n approvalType,\n metadata,\n request,\n traceContext,\n }: {\n approvalType: ApprovalType;\n metadata: SignatureRequest;\n request?: OriginalRequest;\n traceContext?: TraceContext;\n }): Promise<AcceptResultCallbacks | undefined> {\n const { id, messageParams, type, version } = metadata;\n\n try {\n const acceptResult = await this.#trace(\n { name: 'Await Approval', parentContext: traceContext },\n (context) =>\n this.#requestApproval(metadata, approvalType, {\n traceContext: context,\n actionId: request?.id?.toString(),\n }),\n );\n\n return acceptResult.resultCallbacks;\n } catch (error) {\n log('User rejected request', { id, error });\n\n this.#addLog(type, version, SigningStage.Rejected, messageParams);\n this.#rejectSignatureRequest(id);\n\n throw error;\n }\n }\n\n async #approveAndSignRequest(\n metadata: SignatureRequest,\n traceContext?: TraceContext,\n ) {\n const { id } = metadata;\n\n this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Approved;\n });\n\n await this.#trace({ name: 'Sign', parentContext: traceContext }, () =>\n this.#signRequest(metadata),\n );\n }\n\n async #signRequest(metadata: SignatureRequest) {\n const { id, messageParams, signingOptions, type } = metadata;\n\n try {\n let signature: string;\n\n switch (type) {\n case SignatureRequestType.PersonalSign:\n signature = await this.messagingSystem.call(\n 'KeyringController:signPersonalMessage',\n // Keyring controller temporarily using message manager types.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n messageParams as any,\n );\n break;\n\n case SignatureRequestType.TypedSign:\n const finalRequest = signingOptions?.parseJsonData\n ? this.#parseTypedData(messageParams, metadata.version)\n : messageParams;\n\n signature = await this.messagingSystem.call(\n 'KeyringController:signTypedMessage',\n finalRequest,\n metadata.version as SignTypedDataVersion,\n );\n break;\n\n /* istanbul ignore next */\n default:\n throw new Error(`Unknown signature request type: ${type as string}`);\n }\n\n this.hub.emit(`${type}:signed`, { signature, messageId: id });\n\n if (messageParams.deferSetAsSigned) {\n return;\n }\n\n this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.rawSig = signature;\n draftMetadata.status = SignatureRequestStatus.Signed;\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n if (type === SignatureRequestType.TypedSign) {\n this.#errorSignatureRequest(id, error.message);\n } else {\n this.#rejectSignatureRequest(id);\n }\n\n this.hub.emit(`${id}:signError`, { error });\n\n throw error;\n }\n }\n\n #errorSignatureRequest(id: string, error: string) {\n this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Errored;\n draftMetadata.error = error;\n });\n }\n\n #rejectSignatureRequest(signatureRequestId: string, reason?: string) {\n if (reason) {\n const metadata = this.state.signatureRequests[signatureRequestId];\n this.hub.emit('cancelWithReason', { metadata, reason });\n }\n\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Rejected;\n });\n }\n\n async #waitForFinished(id: string): Promise<SignatureRequest> {\n return new Promise((resolve) => {\n this.hub.once(`${id}:finished`, (metadata: SignatureRequest) => {\n resolve(metadata);\n });\n });\n }\n\n async #requestApproval(\n metadata: SignatureRequest,\n type: ApprovalType,\n {\n traceContext,\n actionId,\n }: { traceContext?: TraceContext; actionId?: string },\n ): Promise<AddResult> {\n const { id, messageParams } = metadata;\n const origin = messageParams.origin || ORIGIN_METAMASK;\n\n await this.#trace({\n name: 'Notification Display',\n id: actionId,\n parentContext: traceContext,\n });\n\n return (await this.messagingSystem.call(\n 'ApprovalController:addRequest',\n {\n id,\n origin,\n type,\n requestData: { ...messageParams },\n expectsResult: true,\n },\n true,\n )) as Promise<AddResult>;\n }\n\n #updateMetadata(\n id: string,\n callback: (metadata: SignatureRequest) => void,\n ): SignatureRequest {\n let statusChanged = false;\n\n const { nextState } = this.#updateState((state) => {\n const metadata = state.signatureRequests[id];\n\n if (!metadata) {\n throw new Error(`Signature request with id ${id} not found`);\n }\n\n const originalStatus = metadata.status;\n\n // eslint-disable-next-line n/callback-return\n callback(metadata);\n\n statusChanged = metadata.status !== originalStatus;\n });\n\n const updatedMetadata = nextState.signatureRequests[id];\n\n if (\n statusChanged &&\n FINAL_STATUSES.includes(updatedMetadata.status as SignatureRequestStatus)\n ) {\n this.hub.emit(`${id}:finished`, updatedMetadata);\n }\n\n return updatedMetadata;\n }\n\n #updateState(callback: (state: SignatureControllerState) => void) {\n return this.update((state) => {\n // eslint-disable-next-line n/callback-return, n/no-callback-literal\n callback(state as unknown as SignatureControllerState);\n\n const unapprovedRequests = Object.values(state.signatureRequests).filter(\n (request) => request.status === SignatureRequestStatus.Unapproved,\n ) as unknown as SignatureRequest[];\n\n const personalSignMessages = this.#generateLegacyState(\n unapprovedRequests,\n SignatureRequestType.PersonalSign,\n );\n\n const typedSignMessages = this.#generateLegacyState(\n unapprovedRequests,\n SignatureRequestType.TypedSign,\n );\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n state.unapprovedPersonalMsgs = personalSignMessages as any;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n state.unapprovedTypedMessages = typedSignMessages as any;\n\n state.unapprovedPersonalMsgCount =\n Object.values(personalSignMessages).length;\n\n state.unapprovedTypedMessagesCount =\n Object.values(typedSignMessages).length;\n });\n }\n\n #generateLegacyState(\n signatureRequests: SignatureRequest[],\n type: SignatureRequestType,\n ): Record<string, LegacyStateMessage> {\n return signatureRequests\n .filter((request) => request.type === type)\n .reduce<Record<string, LegacyStateMessage>>(\n (acc, request) => ({\n ...acc,\n [request.id]: { ...request, msgParams: request.messageParams },\n }),\n {},\n );\n }\n\n #addLog(\n signatureRequestType: SignatureRequestType,\n version: SignTypedDataVersion | undefined,\n stage: SigningStage,\n signingData: MessageParams,\n ): void {\n const signingMethod = this.#getSignTypeForLogger(\n signatureRequestType,\n version,\n );\n\n this.messagingSystem.call('LoggingController:add', {\n type: LogType.EthSignLog,\n data: {\n signingMethod,\n stage,\n signingData,\n },\n });\n }\n\n #getSignTypeForLogger(\n requestType: SignatureRequestType,\n version?: SignTypedDataVersion,\n ): SigningMethod {\n if (requestType === SignatureRequestType.PersonalSign) {\n return SigningMethod.PersonalSign;\n }\n\n if (\n requestType === SignatureRequestType.TypedSign &&\n version === SignTypedDataVersion.V3\n ) {\n return SigningMethod.EthSignTypedDataV3;\n }\n\n if (\n requestType === SignatureRequestType.TypedSign &&\n version === SignTypedDataVersion.V4\n ) {\n return SigningMethod.EthSignTypedDataV4;\n }\n\n return SigningMethod.EthSignTypedData;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAiIA,qCAAqC;AACrC,IAAY,sBAOX;AAPD,WAAY,sBAAsB;IAChC,mDAAyB,CAAA;IACzB,+CAAqB,CAAA;IACrB,+CAAqB,CAAA;IACrB,mDAAyB,CAAA;IACzB,2CAAiB,CAAA;IACjB,6CAAmB,CAAA;AACrB,CAAC,EAPW,sBAAsB,sCAAtB,sBAAsB,QAOjC;AAED,4CAA4C;AAC5C,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC9B,sDAA8B,CAAA;IAC9B,uDAA+B,CAAA;AACjC,CAAC,EAHW,oBAAoB,oCAApB,oBAAoB,QAG/B","sourcesContent":["import type { SIWEMessage } from '@metamask/controller-utils';\nimport type { SignTypedDataVersion } from '@metamask/keyring-controller';\nimport type { Hex, Json } from '@metamask/utils';\n\n/** Original client request that triggered the signature request. */\nexport type OriginalRequest = {\n /** Unique ID to identify the client request. */\n id?: number;\n\n /** ID of the network client associated with the request. */\n networkClientId?: string;\n\n /** Source of the client request. */\n origin?: string;\n\n /** Response following a security scan of the request. */\n securityAlertResponse?: Record<string, Json>;\n};\n\n/** Options for signing typed data. */\nexport type TypedSigningOptions = {\n /** Whether to automatically convert JSON string data to an object. */\n parseJsonData: boolean;\n};\n\n/** The message parameters that were requested to be signed. */\nexport type MessageParams = {\n /** Whether to delay marking the request as signed until a signature is provided via `setDeferredSignSuccess`. */\n deferSetAsSigned?: boolean;\n\n /** Ethereum address to sign with. */\n from: string;\n\n /**\n * Source of the request.\n * Such as a hostname of a dApp.\n */\n origin?: string;\n\n /**\n * ID of the request that triggered this signature request.\n */\n requestId?: number;\n};\n\nexport type StateSIWEMessage = Omit<SIWEMessage, 'parsedMessage'> & {\n parsedMessage: Omit<SIWEMessage['parsedMessage'], 'constructor'>;\n};\n\n/** Personal message parameters that were requested to be signed. */\nexport type MessageParamsPersonal = MessageParams & {\n /** Hexadecimal data to sign. */\n data: string;\n\n /** Sign-In With Ethereum data extracted from the data. */\n siwe?: StateSIWEMessage;\n};\n\n/** Typed message parameters that were requested to be signed. */\nexport type MessageParamsTyped = MessageParams & {\n /** Structured data to sign. */\n data:\n | Record<string, Json>[]\n | string\n | {\n types: Record<string, Json>;\n domain: Record<string, Json>;\n primaryType: string;\n message: Json;\n };\n};\n\ntype SignatureRequestBase = {\n /** ID of the associated chain. */\n chainId: Hex;\n\n /** Error message that occurred during the signing. */\n error?: string;\n\n /** Unique ID to identify this request. */\n id: string;\n\n /** Custom metadata stored with the request. */\n metadata?: Json;\n\n /** ID of the associated network client. */\n networkClientId: string;\n\n /** Signature hash resulting from the request. */\n rawSig?: string;\n\n /** Response following a security scan of the request. */\n securityAlertResponse?: Record<string, Json>;\n\n /** Options used for signing. */\n signingOptions?: TypedSigningOptions;\n\n /** Current status of the request. */\n status: string;\n\n /** Time the request was created. */\n time: number;\n\n /** Version of the signTypedData request. */\n version?: SignTypedDataVersion;\n};\n\n/** Legacy messages stored in the state. */\nexport type LegacyStateMessage = SignatureRequestBase & {\n /** Message parameters that were requested to be signed. */\n msgParams: MessageParamsPersonal | MessageParamsTyped;\n\n /** Type of the signature request. */\n type: string;\n};\n\n/** Metadata concerning a request to sign data. */\nexport type SignatureRequest = SignatureRequestBase &\n (\n | {\n messageParams: MessageParamsPersonal;\n type: SignatureRequestType.PersonalSign;\n }\n | {\n messageParams: MessageParamsTyped;\n type: SignatureRequestType.TypedSign;\n }\n );\n\n/** Status of a signature request. */\nexport enum SignatureRequestStatus {\n Unapproved = 'unapproved',\n Approved = 'approved',\n Rejected = 'rejected',\n InProgress = 'inProgress',\n Signed = 'signed',\n Errored = 'errored',\n}\n\n/** Type of supported signature requests. */\nexport enum SignatureRequestType {\n PersonalSign = 'personal_sign',\n TypedSign = 'eth_signTypedData',\n}\n"]}
1
+ {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAwHA,qCAAqC;AACrC,IAAY,sBAOX;AAPD,WAAY,sBAAsB;IAChC,mDAAyB,CAAA;IACzB,+CAAqB,CAAA;IACrB,+CAAqB,CAAA;IACrB,mDAAyB,CAAA;IACzB,2CAAiB,CAAA;IACjB,6CAAmB,CAAA;AACrB,CAAC,EAPW,sBAAsB,sCAAtB,sBAAsB,QAOjC;AAED,4CAA4C;AAC5C,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC9B,sDAA8B,CAAA;IAC9B,uDAA+B,CAAA;AACjC,CAAC,EAHW,oBAAoB,oCAApB,oBAAoB,QAG/B","sourcesContent":["import type { SIWEMessage } from '@metamask/controller-utils';\nimport type { SignTypedDataVersion } from '@metamask/keyring-controller';\nimport type { Json } from '@metamask/utils';\n\n/** Original client request that triggered the signature request. */\nexport type OriginalRequest = {\n /** Unique ID to identify the client request. */\n id?: number;\n\n /** Source of the client request. */\n origin?: string;\n\n /** Response following a security scan of the request. */\n securityAlertResponse?: Record<string, Json>;\n};\n\n/** Options for signing typed data. */\nexport type TypedSigningOptions = {\n /** Whether to automatically convert JSON string data to an object. */\n parseJsonData: boolean;\n};\n\n/** The message parameters that were requested to be signed. */\nexport type MessageParams = {\n /** Whether to delay marking the request as signed until a signature is provided via `setDeferredSignSuccess`. */\n deferSetAsSigned?: boolean;\n\n /** Ethereum address to sign with. */\n from: string;\n\n /**\n * Source of the request.\n * Such as a hostname of a dApp.\n */\n origin?: string;\n\n /**\n * ID of the request that triggered this signature request.\n */\n requestId?: number;\n};\n\nexport type StateSIWEMessage = Omit<SIWEMessage, 'parsedMessage'> & {\n parsedMessage: Omit<SIWEMessage['parsedMessage'], 'constructor'>;\n};\n\n/** Personal message parameters that were requested to be signed. */\nexport type MessageParamsPersonal = MessageParams & {\n /** Hexadecimal data to sign. */\n data: string;\n\n /** Sign-In With Ethereum data extracted from the data. */\n siwe?: StateSIWEMessage;\n};\n\n/** Typed message parameters that were requested to be signed. */\nexport type MessageParamsTyped = MessageParams & {\n /** Structured data to sign. */\n data:\n | Record<string, Json>[]\n | string\n | {\n types: Record<string, Json>;\n domain: Record<string, Json>;\n primaryType: string;\n message: Json;\n };\n};\n\ntype SignatureRequestBase = {\n /** Error message that occurred during the signing. */\n error?: string;\n\n /** Unique ID to identify this request. */\n id: string;\n\n /** Custom metadata stored with the request. */\n metadata?: Json;\n\n /** Signature hash resulting from the request. */\n rawSig?: string;\n\n /** Response following a security scan of the request. */\n securityAlertResponse?: Record<string, Json>;\n\n /** Options used for signing. */\n signingOptions?: TypedSigningOptions;\n\n /** Current status of the request. */\n status: string;\n\n /** Time the request was created. */\n time: number;\n\n /** Version of the signTypedData request. */\n version?: SignTypedDataVersion;\n};\n\n/** Legacy messages stored in the state. */\nexport type LegacyStateMessage = SignatureRequestBase & {\n /** Message parameters that were requested to be signed. */\n msgParams: MessageParamsPersonal | MessageParamsTyped;\n\n /** Type of the signature request. */\n type: string;\n};\n\n/** Metadata concerning a request to sign data. */\nexport type SignatureRequest = SignatureRequestBase &\n (\n | {\n messageParams: MessageParamsPersonal;\n type: SignatureRequestType.PersonalSign;\n }\n | {\n messageParams: MessageParamsTyped;\n type: SignatureRequestType.TypedSign;\n }\n );\n\n/** Status of a signature request. */\nexport enum SignatureRequestStatus {\n Unapproved = 'unapproved',\n Approved = 'approved',\n Rejected = 'rejected',\n InProgress = 'inProgress',\n Signed = 'signed',\n Errored = 'errored',\n}\n\n/** Type of supported signature requests. */\nexport enum SignatureRequestType {\n PersonalSign = 'personal_sign',\n TypedSign = 'eth_signTypedData',\n}\n"]}
package/dist/types.d.cts CHANGED
@@ -1,12 +1,10 @@
1
1
  import type { SIWEMessage } from "@metamask/controller-utils";
2
2
  import type { SignTypedDataVersion } from "@metamask/keyring-controller";
3
- import type { Hex, Json } from "@metamask/utils";
3
+ import type { Json } from "@metamask/utils";
4
4
  /** Original client request that triggered the signature request. */
5
5
  export type OriginalRequest = {
6
6
  /** Unique ID to identify the client request. */
7
7
  id?: number;
8
- /** ID of the network client associated with the request. */
9
- networkClientId?: string;
10
8
  /** Source of the client request. */
11
9
  origin?: string;
12
10
  /** Response following a security scan of the request. */
@@ -54,16 +52,12 @@ export type MessageParamsTyped = MessageParams & {
54
52
  };
55
53
  };
56
54
  type SignatureRequestBase = {
57
- /** ID of the associated chain. */
58
- chainId: Hex;
59
55
  /** Error message that occurred during the signing. */
60
56
  error?: string;
61
57
  /** Unique ID to identify this request. */
62
58
  id: string;
63
59
  /** Custom metadata stored with the request. */
64
60
  metadata?: Json;
65
- /** ID of the associated network client. */
66
- networkClientId: string;
67
61
  /** Signature hash resulting from the request. */
68
62
  rawSig?: string;
69
63
  /** Response following a security scan of the request. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.d.mts CHANGED
@@ -1,12 +1,10 @@
1
1
  import type { SIWEMessage } from "@metamask/controller-utils";
2
2
  import type { SignTypedDataVersion } from "@metamask/keyring-controller";
3
- import type { Hex, Json } from "@metamask/utils";
3
+ import type { Json } from "@metamask/utils";
4
4
  /** Original client request that triggered the signature request. */
5
5
  export type OriginalRequest = {
6
6
  /** Unique ID to identify the client request. */
7
7
  id?: number;
8
- /** ID of the network client associated with the request. */
9
- networkClientId?: string;
10
8
  /** Source of the client request. */
11
9
  origin?: string;
12
10
  /** Response following a security scan of the request. */
@@ -54,16 +52,12 @@ export type MessageParamsTyped = MessageParams & {
54
52
  };
55
53
  };
56
54
  type SignatureRequestBase = {
57
- /** ID of the associated chain. */
58
- chainId: Hex;
59
55
  /** Error message that occurred during the signing. */
60
56
  error?: string;
61
57
  /** Unique ID to identify this request. */
62
58
  id: string;
63
59
  /** Custom metadata stored with the request. */
64
60
  metadata?: Json;
65
- /** ID of the associated network client. */
66
- networkClientId: string;
67
61
  /** Signature hash resulting from the request. */
68
62
  rawSig?: string;
69
63
  /** Response following a security scan of the request. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAiIA,qCAAqC;AACrC,MAAM,CAAN,IAAY,sBAOX;AAPD,WAAY,sBAAsB;IAChC,mDAAyB,CAAA;IACzB,+CAAqB,CAAA;IACrB,+CAAqB,CAAA;IACrB,mDAAyB,CAAA;IACzB,2CAAiB,CAAA;IACjB,6CAAmB,CAAA;AACrB,CAAC,EAPW,sBAAsB,KAAtB,sBAAsB,QAOjC;AAED,4CAA4C;AAC5C,MAAM,CAAN,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC9B,sDAA8B,CAAA;IAC9B,uDAA+B,CAAA;AACjC,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,QAG/B","sourcesContent":["import type { SIWEMessage } from '@metamask/controller-utils';\nimport type { SignTypedDataVersion } from '@metamask/keyring-controller';\nimport type { Hex, Json } from '@metamask/utils';\n\n/** Original client request that triggered the signature request. */\nexport type OriginalRequest = {\n /** Unique ID to identify the client request. */\n id?: number;\n\n /** ID of the network client associated with the request. */\n networkClientId?: string;\n\n /** Source of the client request. */\n origin?: string;\n\n /** Response following a security scan of the request. */\n securityAlertResponse?: Record<string, Json>;\n};\n\n/** Options for signing typed data. */\nexport type TypedSigningOptions = {\n /** Whether to automatically convert JSON string data to an object. */\n parseJsonData: boolean;\n};\n\n/** The message parameters that were requested to be signed. */\nexport type MessageParams = {\n /** Whether to delay marking the request as signed until a signature is provided via `setDeferredSignSuccess`. */\n deferSetAsSigned?: boolean;\n\n /** Ethereum address to sign with. */\n from: string;\n\n /**\n * Source of the request.\n * Such as a hostname of a dApp.\n */\n origin?: string;\n\n /**\n * ID of the request that triggered this signature request.\n */\n requestId?: number;\n};\n\nexport type StateSIWEMessage = Omit<SIWEMessage, 'parsedMessage'> & {\n parsedMessage: Omit<SIWEMessage['parsedMessage'], 'constructor'>;\n};\n\n/** Personal message parameters that were requested to be signed. */\nexport type MessageParamsPersonal = MessageParams & {\n /** Hexadecimal data to sign. */\n data: string;\n\n /** Sign-In With Ethereum data extracted from the data. */\n siwe?: StateSIWEMessage;\n};\n\n/** Typed message parameters that were requested to be signed. */\nexport type MessageParamsTyped = MessageParams & {\n /** Structured data to sign. */\n data:\n | Record<string, Json>[]\n | string\n | {\n types: Record<string, Json>;\n domain: Record<string, Json>;\n primaryType: string;\n message: Json;\n };\n};\n\ntype SignatureRequestBase = {\n /** ID of the associated chain. */\n chainId: Hex;\n\n /** Error message that occurred during the signing. */\n error?: string;\n\n /** Unique ID to identify this request. */\n id: string;\n\n /** Custom metadata stored with the request. */\n metadata?: Json;\n\n /** ID of the associated network client. */\n networkClientId: string;\n\n /** Signature hash resulting from the request. */\n rawSig?: string;\n\n /** Response following a security scan of the request. */\n securityAlertResponse?: Record<string, Json>;\n\n /** Options used for signing. */\n signingOptions?: TypedSigningOptions;\n\n /** Current status of the request. */\n status: string;\n\n /** Time the request was created. */\n time: number;\n\n /** Version of the signTypedData request. */\n version?: SignTypedDataVersion;\n};\n\n/** Legacy messages stored in the state. */\nexport type LegacyStateMessage = SignatureRequestBase & {\n /** Message parameters that were requested to be signed. */\n msgParams: MessageParamsPersonal | MessageParamsTyped;\n\n /** Type of the signature request. */\n type: string;\n};\n\n/** Metadata concerning a request to sign data. */\nexport type SignatureRequest = SignatureRequestBase &\n (\n | {\n messageParams: MessageParamsPersonal;\n type: SignatureRequestType.PersonalSign;\n }\n | {\n messageParams: MessageParamsTyped;\n type: SignatureRequestType.TypedSign;\n }\n );\n\n/** Status of a signature request. */\nexport enum SignatureRequestStatus {\n Unapproved = 'unapproved',\n Approved = 'approved',\n Rejected = 'rejected',\n InProgress = 'inProgress',\n Signed = 'signed',\n Errored = 'errored',\n}\n\n/** Type of supported signature requests. */\nexport enum SignatureRequestType {\n PersonalSign = 'personal_sign',\n TypedSign = 'eth_signTypedData',\n}\n"]}
1
+ {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAwHA,qCAAqC;AACrC,MAAM,CAAN,IAAY,sBAOX;AAPD,WAAY,sBAAsB;IAChC,mDAAyB,CAAA;IACzB,+CAAqB,CAAA;IACrB,+CAAqB,CAAA;IACrB,mDAAyB,CAAA;IACzB,2CAAiB,CAAA;IACjB,6CAAmB,CAAA;AACrB,CAAC,EAPW,sBAAsB,KAAtB,sBAAsB,QAOjC;AAED,4CAA4C;AAC5C,MAAM,CAAN,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC9B,sDAA8B,CAAA;IAC9B,uDAA+B,CAAA;AACjC,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,QAG/B","sourcesContent":["import type { SIWEMessage } from '@metamask/controller-utils';\nimport type { SignTypedDataVersion } from '@metamask/keyring-controller';\nimport type { Json } from '@metamask/utils';\n\n/** Original client request that triggered the signature request. */\nexport type OriginalRequest = {\n /** Unique ID to identify the client request. */\n id?: number;\n\n /** Source of the client request. */\n origin?: string;\n\n /** Response following a security scan of the request. */\n securityAlertResponse?: Record<string, Json>;\n};\n\n/** Options for signing typed data. */\nexport type TypedSigningOptions = {\n /** Whether to automatically convert JSON string data to an object. */\n parseJsonData: boolean;\n};\n\n/** The message parameters that were requested to be signed. */\nexport type MessageParams = {\n /** Whether to delay marking the request as signed until a signature is provided via `setDeferredSignSuccess`. */\n deferSetAsSigned?: boolean;\n\n /** Ethereum address to sign with. */\n from: string;\n\n /**\n * Source of the request.\n * Such as a hostname of a dApp.\n */\n origin?: string;\n\n /**\n * ID of the request that triggered this signature request.\n */\n requestId?: number;\n};\n\nexport type StateSIWEMessage = Omit<SIWEMessage, 'parsedMessage'> & {\n parsedMessage: Omit<SIWEMessage['parsedMessage'], 'constructor'>;\n};\n\n/** Personal message parameters that were requested to be signed. */\nexport type MessageParamsPersonal = MessageParams & {\n /** Hexadecimal data to sign. */\n data: string;\n\n /** Sign-In With Ethereum data extracted from the data. */\n siwe?: StateSIWEMessage;\n};\n\n/** Typed message parameters that were requested to be signed. */\nexport type MessageParamsTyped = MessageParams & {\n /** Structured data to sign. */\n data:\n | Record<string, Json>[]\n | string\n | {\n types: Record<string, Json>;\n domain: Record<string, Json>;\n primaryType: string;\n message: Json;\n };\n};\n\ntype SignatureRequestBase = {\n /** Error message that occurred during the signing. */\n error?: string;\n\n /** Unique ID to identify this request. */\n id: string;\n\n /** Custom metadata stored with the request. */\n metadata?: Json;\n\n /** Signature hash resulting from the request. */\n rawSig?: string;\n\n /** Response following a security scan of the request. */\n securityAlertResponse?: Record<string, Json>;\n\n /** Options used for signing. */\n signingOptions?: TypedSigningOptions;\n\n /** Current status of the request. */\n status: string;\n\n /** Time the request was created. */\n time: number;\n\n /** Version of the signTypedData request. */\n version?: SignTypedDataVersion;\n};\n\n/** Legacy messages stored in the state. */\nexport type LegacyStateMessage = SignatureRequestBase & {\n /** Message parameters that were requested to be signed. */\n msgParams: MessageParamsPersonal | MessageParamsTyped;\n\n /** Type of the signature request. */\n type: string;\n};\n\n/** Metadata concerning a request to sign data. */\nexport type SignatureRequest = SignatureRequestBase &\n (\n | {\n messageParams: MessageParamsPersonal;\n type: SignatureRequestType.PersonalSign;\n }\n | {\n messageParams: MessageParamsTyped;\n type: SignatureRequestType.TypedSign;\n }\n );\n\n/** Status of a signature request. */\nexport enum SignatureRequestStatus {\n Unapproved = 'unapproved',\n Approved = 'approved',\n Rejected = 'rejected',\n InProgress = 'inProgress',\n Signed = 'signed',\n Errored = 'errored',\n}\n\n/** Type of supported signature requests. */\nexport enum SignatureRequestType {\n PersonalSign = 'personal_sign',\n TypedSign = 'eth_signTypedData',\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask-previews/signature-controller",
3
- "version": "19.1.0-preview-2c5a4f93",
3
+ "version": "19.1.0-preview-00a41cb8",
4
4
  "description": "Processes signing requests in order to sign arbitrary and typed data",
5
5
  "keywords": [
6
6
  "MetaMask",
@@ -60,7 +60,6 @@
60
60
  "@metamask/auto-changelog": "^3.4.4",
61
61
  "@metamask/keyring-controller": "^17.2.2",
62
62
  "@metamask/logging-controller": "^6.0.1",
63
- "@metamask/network-controller": "^21.0.1",
64
63
  "@types/jest": "^27.4.1",
65
64
  "deepmerge": "^4.2.2",
66
65
  "jest": "^27.5.1",
@@ -72,8 +71,7 @@
72
71
  "peerDependencies": {
73
72
  "@metamask/approval-controller": "^7.0.0",
74
73
  "@metamask/keyring-controller": "^17.0.0",
75
- "@metamask/logging-controller": "^6.0.0",
76
- "@metamask/network-controller": "^21.0.1"
74
+ "@metamask/logging-controller": "^6.0.0"
77
75
  },
78
76
  "engines": {
79
77
  "node": "^18.18 || >=20"