@metamask-previews/signature-controller 20.0.0-preview-b7ea5d52 → 20.1.0-preview-ead2f439

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [20.1.0]
11
+
12
+ ### Added
13
+
14
+ - Add additional properties to message parameter types ([#4822](https://github.com/MetaMask/core/pull/4822))
15
+ - Add `metamaskId` to `MessageParams`.
16
+ - Add `version` to `MessageParamsTyped`.
17
+
18
+ ### Changed
19
+
20
+ - Update required arguments in methods ([#4822](https://github.com/MetaMask/core/pull/4822))
21
+ - Make `request` argument optional in `newUnsignedPersonalMessage` and `newUnsignedTypedMessage`.
22
+ - Make `signingOptions` argument optional in `newUnsignedTypedMessage`.
23
+ - Bump `eth-sig-util` from `^7.0.1` to `^8.0.0` ([#4830](https://github.com/MetaMask/core/pull/4830))
24
+ - Bump `@metamask/keyring-controller` from `^17.2.2` to `^17.3.0` ([#4643](https://github.com/MetaMask/core/pull/4643))
25
+
10
26
  ## [20.0.0]
11
27
 
12
28
  ### Added
@@ -363,7 +379,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
363
379
 
364
380
  - Initial release ([#1214](https://github.com/MetaMask/core/pull/1214))
365
381
 
366
- [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@20.0.0...HEAD
382
+ [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@20.1.0...HEAD
383
+ [20.1.0]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@20.0.0...@metamask/signature-controller@20.1.0
367
384
  [20.0.0]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@19.1.0...@metamask/signature-controller@20.0.0
368
385
  [19.1.0]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@19.0.0...@metamask/signature-controller@19.1.0
369
386
  [19.0.0]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@18.1.0...@metamask/signature-controller@19.0.0
@@ -296,14 +296,19 @@ _SignatureController_getCurrentChainId = new WeakMap(), _SignatureController_tra
296
296
  throw new Error(`MetaMask ${type} Signature: Unknown problem: ${JSON.stringify(finalMessageParams)}`);
297
297
  }
298
298
  }, _SignatureController_addMetadata = function _SignatureController_addMetadata({ messageParams, request, signingOptions, type, version, }) {
299
+ const id = (0, uuid_1.v1)();
300
+ const origin = request?.origin ?? messageParams.origin;
301
+ const requestId = request?.id;
302
+ const securityAlertResponse = request?.securityAlertResponse;
299
303
  const finalMessageParams = {
300
304
  ...messageParams,
301
- origin: request.origin,
302
- requestId: request.id,
305
+ metamaskId: id,
306
+ origin,
307
+ requestId,
308
+ version,
303
309
  };
304
- const { securityAlertResponse } = request;
305
310
  const metadata = {
306
- id: (0, uuid_1.v1)(),
311
+ id,
307
312
  messageParams: finalMessageParams,
308
313
  securityAlertResponse,
309
314
  signingOptions,
@@ -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 { 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
+ {"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 | undefined,\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 id = random();\n const origin = request?.origin ?? messageParams.origin;\n const requestId = request?.id;\n const securityAlertResponse = request?.securityAlertResponse;\n\n const finalMessageParams = {\n ...messageParams,\n metamaskId: id,\n origin,\n requestId,\n version,\n };\n\n const metadata = {\n id,\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"]}
@@ -127,7 +127,7 @@ export declare class SignatureController extends BaseController<typeof controlle
127
127
  * @param options.traceContext - The parent context for any new traces.
128
128
  * @returns Promise resolving to the raw signature hash generated from the signature request.
129
129
  */
130
- newUnsignedPersonalMessage(messageParams: MessageParamsPersonal, request: OriginalRequest, options?: {
130
+ newUnsignedPersonalMessage(messageParams: MessageParamsPersonal, request?: OriginalRequest, options?: {
131
131
  traceContext?: TraceContext;
132
132
  }): Promise<string>;
133
133
  /**
@@ -141,7 +141,7 @@ export declare class SignatureController extends BaseController<typeof controlle
141
141
  * @param options.traceContext - The parent context for any new traces.
142
142
  * @returns Promise resolving to the raw signature hash generated from the signature request.
143
143
  */
144
- newUnsignedTypedMessage(messageParams: MessageParamsTyped, request: OriginalRequest, version: string, signingOptions: TypedSigningOptions, options?: {
144
+ newUnsignedTypedMessage(messageParams: MessageParamsTyped, request: OriginalRequest | undefined, version: string, signingOptions?: TypedSigningOptions, options?: {
145
145
  traceContext?: TraceContext;
146
146
  }): Promise<string>;
147
147
  /**
@@ -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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"}
@@ -127,7 +127,7 @@ export declare class SignatureController extends BaseController<typeof controlle
127
127
  * @param options.traceContext - The parent context for any new traces.
128
128
  * @returns Promise resolving to the raw signature hash generated from the signature request.
129
129
  */
130
- newUnsignedPersonalMessage(messageParams: MessageParamsPersonal, request: OriginalRequest, options?: {
130
+ newUnsignedPersonalMessage(messageParams: MessageParamsPersonal, request?: OriginalRequest, options?: {
131
131
  traceContext?: TraceContext;
132
132
  }): Promise<string>;
133
133
  /**
@@ -141,7 +141,7 @@ export declare class SignatureController extends BaseController<typeof controlle
141
141
  * @param options.traceContext - The parent context for any new traces.
142
142
  * @returns Promise resolving to the raw signature hash generated from the signature request.
143
143
  */
144
- newUnsignedTypedMessage(messageParams: MessageParamsTyped, request: OriginalRequest, version: string, signingOptions: TypedSigningOptions, options?: {
144
+ newUnsignedTypedMessage(messageParams: MessageParamsTyped, request: OriginalRequest | undefined, version: string, signingOptions?: TypedSigningOptions, options?: {
145
145
  traceContext?: TraceContext;
146
146
  }): Promise<string>;
147
147
  /**
@@ -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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"}
@@ -289,14 +289,19 @@ _SignatureController_getCurrentChainId = new WeakMap(), _SignatureController_tra
289
289
  throw new Error(`MetaMask ${type} Signature: Unknown problem: ${JSON.stringify(finalMessageParams)}`);
290
290
  }
291
291
  }, _SignatureController_addMetadata = function _SignatureController_addMetadata({ messageParams, request, signingOptions, type, version, }) {
292
+ const id = random();
293
+ const origin = request?.origin ?? messageParams.origin;
294
+ const requestId = request?.id;
295
+ const securityAlertResponse = request?.securityAlertResponse;
292
296
  const finalMessageParams = {
293
297
  ...messageParams,
294
- origin: request.origin,
295
- requestId: request.id,
298
+ metamaskId: id,
299
+ origin,
300
+ requestId,
301
+ version,
296
302
  };
297
- const { securityAlertResponse } = request;
298
303
  const metadata = {
299
- id: random(),
304
+ id,
300
305
  messageParams: finalMessageParams,
301
306
  securityAlertResponse,
302
307
  signingOptions,
@@ -1 +1 @@
1
- {"version":3,"file":"SignatureController.mjs","sourceRoot":"","sources":["../src/SignatureController.ts"],"names":[],"mappings":";;;;;;;;;;;;AAUA,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAE3D,OAAO,EACL,YAAY,EACZ,UAAU,EACV,eAAe,EAChB,mCAAmC;AAMpC,OAAO,EAAE,oBAAoB,EAAE,qCAAqC;AACpE,OAAO,EACL,aAAa,EACb,OAAO,EACP,YAAY,EAEb,qCAAqC;AAEtC,OAAO,YAAY,eAAe;AAClC,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,aAAa;AAEpC,OAAO,EAAE,aAAa,IAAI,GAAG,EAAE,qBAAiB;AAChD,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,oBAAgB;AAWvE,OAAO,EACL,8BAA8B,EAC9B,2BAA2B,EAC5B,8BAA0B;AAC3B,OAAO,EACL,gCAAgC,EAChC,6BAA6B,EAC9B,+BAA2B;AAE5B,MAAM,cAAc,GAAG,qBAAqB,CAAC;AAE7C,MAAM,aAAa,GAAG;IACpB,iBAAiB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;IACvD,sBAAsB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;IAC5D,uBAAuB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;IAC7D,0BAA0B,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;IAChE,4BAA4B,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;CACnE,CAAC;AAEF,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,CAAC;IAC7B,iBAAiB,EAAE,EAAE;IACrB,sBAAsB,EAAE,EAAE;IAC1B,uBAAuB,EAAE,EAAE;IAC3B,0BAA0B,EAAE,CAAC;IAC7B,4BAA4B,EAAE,CAAC;CAChC,CAAC,CAAC;AAEH,gFAAgF;AAChF,MAAM,cAAc,GAA6B;IAC/C,sBAAsB,CAAC,MAAM;IAC7B,sBAAsB,CAAC,QAAQ;IAC/B,sBAAsB,CAAC,OAAO;CAC/B,CAAC;AAmGF;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,cAIxC;IAOC;;;;;;;;OAQG;IACH,YAAY,EACV,iBAAiB,EACjB,SAAS,EACT,KAAK,EACL,KAAK,GACsB;QAC3B,KAAK,CAAC;YACJ,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE,aAAa;YACvB,SAAS;YACT,KAAK,EAAE;gBACL,GAAG,eAAe,EAAE;gBACpB,GAAG,KAAK;aACT;SACF,CAAC,CAAC;;QA3BL,yDAA8B;QAE9B,6CAAsB;QA2BpB,IAAI,CAAC,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;QAC9B,uBAAA,IAAI,0CAAsB,iBAAiB,MAAA,CAAC;QAC5C,uBAAA,IAAI,8BAAU,KAAK,IAAK,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAmB,MAAA,CAAC;IACvE,CAAC;IAED;;;;OAIG;IACH,IAAI,+BAA+B;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,IAAI,4BAA4B;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,UAAU;QACR,uBAAA,IAAI,wEAAa,MAAjB,IAAI,EAAc,CAAC,KAAK,EAAE,EAAE;YAC1B,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,gBAAgB,CAAC,MAAe;QAC9B,MAAM,2BAA2B,GAAG,MAAM,CAAC,MAAM,CAC/C,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC7B,CAAC,MAAM,CACN,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,sBAAsB,CAAC,UAAU,CACpE,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,2BAA2B,EAAE;YAClD,uBAAA,IAAI,mFAAwB,MAA5B,IAAI,EAAyB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;SACnD;IACH,CAAC;IAED;;OAEG;IACH,eAAe;QACb,uBAAA,IAAI,wEAAa,MAAjB,IAAI,EAAc,CAAC,KAAK,EAAE,EAAE;YAC1B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC;iBACnC,MAAM,CACL,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,sBAAsB,CAAC,UAAU,CACpE;iBACA,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,0BAA0B,CAC9B,aAAoC,EACpC,OAAwB,EACxB,UAA2C,EAAE;QAE7C,gCAAgC,CAAC,aAAa,CAAC,CAAC;QAEhD,MAAM,uBAAuB,GAC3B,8BAA8B,CAAC,aAAa,CAAC,CAAC;QAEhD,uBAAuB,CAAC,IAAI,GAAG,UAAU,CACvC,aAAa,CACM,CAAC;QAEtB,OAAO,uBAAA,IAAI,oFAAyB,MAA7B,IAAI,EAA0B;YACnC,aAAa,EAAE,uBAAuB;YACtC,OAAO;YACP,IAAI,EAAE,oBAAoB,CAAC,YAAY;YACvC,YAAY,EAAE,YAAY,CAAC,YAAY;YACvC,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,uBAAuB,CAC3B,aAAiC,EACjC,OAAwB,EACxB,OAAe,EACf,cAAmC,EACnC,UAA2C,EAAE;QAE7C,6BAA6B,CAC3B,aAAa,EACb,OAA+B,EAC/B,uBAAA,IAAI,8CAAmB,MAAvB,IAAI,CAAqB,CAC1B,CAAC;QAEF,MAAM,uBAAuB,GAAG,2BAA2B,CACzD,aAAa,EACb,OAA+B,CAChC,CAAC;QAEF,OAAO,uBAAA,IAAI,oFAAyB,MAA7B,IAAI,EAA0B;YACnC,aAAa,EAAE,uBAAuB;YACtC,OAAO;YACP,IAAI,EAAE,oBAAoB,CAAC,SAAS;YACpC,YAAY,EAAE,YAAY,CAAC,gBAAgB;YAC3C,OAAO,EAAE,OAA+B;YACxC,cAAc;YACd,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,8DAA8D;IAC9D,sBAAsB,CAAC,kBAA0B,EAAE,SAAc;QAC/D,uBAAA,IAAI,2EAAgB,MAApB,IAAI,EAAiB,kBAAkB,EAAE,CAAC,aAAa,EAAE,EAAE;YACzD,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC;YACjC,aAAa,CAAC,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,kBAA0B,EAAE,QAAc;QAC3D,uBAAA,IAAI,2EAAgB,MAApB,IAAI,EAAiB,kBAAkB,EAAE,CAAC,aAAa,EAAE,EAAE;YACzD,aAAa,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,oBAAoB,CAAC,kBAA0B;QAC7C,uBAAA,IAAI,2EAAgB,MAApB,IAAI,EAAiB,kBAAkB,EAAE,CAAC,aAAa,EAAE,EAAE;YACzD,aAAa,CAAC,MAAM,GAAG,sBAAsB,CAAC,QAAQ,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,yBAAyB,CAAC,kBAA0B;QAClD,uBAAA,IAAI,2EAAgB,MAApB,IAAI,EAAiB,kBAAkB,EAAE,CAAC,aAAa,EAAE,EAAE;YACzD,aAAa,CAAC,MAAM,GAAG,sBAAsB,CAAC,UAAU,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,4BAA4B,CAAC,kBAA0B;QACrD,IAAI,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,CAAC;IACrD,CAAC;CAkcF;uOA/bG,aAAiC,EACjC,OAA8B;IAE9B,IACE,CAAC,CAAC,oBAAoB,CAAC,EAAE,EAAE,oBAAoB,CAAC,EAAE,CAAC,CAAC,QAAQ,CAC1D,OAA+B,CAChC;QACD,OAAO,aAAa,CAAC,IAAI,KAAK,QAAQ,EACtC;QACA,OAAO,aAAa,CAAC;KACtB;IAED,OAAO;QACL,GAAG,aAAa;QAChB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC;KACrC,CAAC;AACJ,CAAC,iDAED,KAAK,uDAA0B,EAC7B,aAAa,EACb,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,cAAc,EACd,YAAY,GASb;IACC,GAAG,CAAC,8BAA8B,EAAE;QAClC,aAAa;QACb,OAAO;QACP,IAAI;QACJ,OAAO;KACR,CAAC,CAAC;IAEH,uBAAA,IAAI,mEAAQ,MAAZ,IAAI,EAAS,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAElE,MAAM,QAAQ,GAAG,uBAAA,IAAI,wEAAa,MAAjB,IAAI,EAAc;QACjC,aAAa;QACb,OAAO;QACP,cAAc;QACd,IAAI;QACJ,OAAO;KACR,CAAC,CAAC;IAEH,IAAI,eAAkD,CAAC;IACvD,IAAI,kBAA2B,CAAC;IAEhC,MAAM,oBAAoB,GAAG,uBAAA,IAAI,4EAAiB,MAArB,IAAI,EAAkB,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEhE,IAAI;QACF,eAAe,GAAG,MAAM,uBAAA,IAAI,4EAAiB,MAArB,IAAI,EAAkB;YAC5C,YAAY;YACZ,QAAQ;YACR,OAAO;YACP,YAAY;SACb,CAAC,CAAC;QAEH,MAAM,uBAAA,IAAI,kFAAuB,MAA3B,IAAI,EAAwB,QAAQ,EAAE,YAAY,CAAC,CAAC;KAC3D;IAAC,OAAO,KAAK,EAAE;QACd,GAAG,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;QACvC,kBAAkB,GAAG,KAAK,CAAC;KAC5B;IAED,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAAC;IAEjD,MAAM,EACJ,KAAK,EACL,EAAE,EACF,aAAa,EAAE,kBAAkB,EACjC,MAAM,EAAE,SAAS,GAClB,GAAG,aAAa,CAAC;IAElB,QAAQ,aAAa,CAAC,MAAM,EAAE;QAC5B,KAAK,sBAAsB,CAAC,MAAM;YAChC,GAAG,CAAC,4BAA4B,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YACrD,uBAAA,IAAI,mEAAQ,MAAZ,IAAI,EAAS,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;YACrE,eAAe,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YACpC,OAAO,aAAa,CAAC,MAAgB,CAAC;QAExC,KAAK,sBAAsB,CAAC,QAAQ;YAClC,0BAA0B;YAC1B,MAAM,aAAa,GAAG,CAAC,kBAAkB;gBACvC,IAAI,KAAK,CACP,YAAY,IAAI,4CAA4C,CAC7D,CAAU,CAAC;YAEd,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;YACtC,MAAM,aAAa,CAAC;QAEtB,KAAK,sBAAsB,CAAC,OAAO;YACjC,0BAA0B;YAC1B,MAAM,YAAY,GAAG,CAAC,kBAAkB;gBACtC,IAAI,KAAK,CAAC,YAAY,IAAI,eAAe,KAAe,EAAE,CAAC,CAAU,CAAC;YAExE,eAAe,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;YACrC,MAAM,YAAY,CAAC;QAErB,0BAA0B;QAC1B;YACE,MAAM,IAAI,KAAK,CACb,YAAY,IAAI,gCAAgC,IAAI,CAAC,SAAS,CAC5D,kBAAkB,CACnB,EAAE,CACJ,CAAC;KACL;AACH,CAAC,+EAEY,EACX,aAAa,EACb,OAAO,EACP,cAAc,EACd,IAAI,EACJ,OAAO,GAOR;IACC,MAAM,kBAAkB,GAAG;QACzB,GAAG,aAAa;QAChB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,EAAE,OAAO,CAAC,EAAE;KACtB,CAAC;IAEF,MAAM,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC;IAE1C,MAAM,QAAQ,GAAG;QACf,EAAE,EAAE,MAAM,EAAE;QACZ,aAAa,EAAE,kBAAkB;QACjC,qBAAqB;QACrB,cAAc;QACd,MAAM,EAAE,sBAAsB,CAAC,UAAU;QACzC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;QAChB,IAAI;QACJ,OAAO;KACY,CAAC;IAEtB,uBAAA,IAAI,wEAAa,MAAjB,IAAI,EAAc,CAAC,KAAK,EAAE,EAAE;QAC1B,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE;QACjC,aAAa;QACb,UAAU,EAAE,QAAQ,CAAC,EAAE;KACxB,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC,yCAED,KAAK,+CAAkB,EACrB,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,YAAY,GAMb;IACC,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IAEtD,IAAI;QACF,MAAM,YAAY,GAAG,MAAM,uBAAA,IAAI,kCAAO,MAAX,IAAI,EAC7B,EAAE,IAAI,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,EACvD,CAAC,OAAO,EAAE,EAAE,CACV,uBAAA,IAAI,4EAAiB,MAArB,IAAI,EAAkB,QAAQ,EAAE,YAAY,EAAE;YAC5C,YAAY,EAAE,OAAO;YACrB,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE;SAClC,CAAC,CACL,CAAC;QAEF,OAAO,YAAY,CAAC,eAAe,CAAC;KACrC;IAAC,OAAO,KAAK,EAAE;QACd,GAAG,CAAC,uBAAuB,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAE5C,uBAAA,IAAI,mEAAQ,MAAZ,IAAI,EAAS,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAClE,uBAAA,IAAI,mFAAwB,MAA5B,IAAI,EAAyB,EAAE,CAAC,CAAC;QAEjC,MAAM,KAAK,CAAC;KACb;AACH,CAAC,+CAED,KAAK,qDACH,QAA0B,EAC1B,YAA2B;IAE3B,MAAM,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC;IAExB,uBAAA,IAAI,2EAAgB,MAApB,IAAI,EAAiB,EAAE,EAAE,CAAC,aAAa,EAAE,EAAE;QACzC,aAAa,CAAC,MAAM,GAAG,sBAAsB,CAAC,QAAQ,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,MAAM,uBAAA,IAAI,kCAAO,MAAX,IAAI,EAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,CACpE,uBAAA,IAAI,wEAAa,MAAjB,IAAI,EAAc,QAAQ,CAAC,CAC5B,CAAC;AACJ,CAAC,qCAED,KAAK,2CAAc,QAA0B;IAC3C,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;IAE7D,IAAI;QACF,IAAI,SAAiB,CAAC;QAEtB,QAAQ,IAAI,EAAE;YACZ,KAAK,oBAAoB,CAAC,YAAY;gBACpC,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CACzC,uCAAuC;gBACvC,8DAA8D;gBAC9D,8DAA8D;gBAC9D,aAAoB,CACrB,CAAC;gBACF,MAAM;YAER,KAAK,oBAAoB,CAAC,SAAS;gBACjC,MAAM,YAAY,GAAG,cAAc,EAAE,aAAa;oBAChD,CAAC,CAAC,uBAAA,IAAI,2EAAgB,MAApB,IAAI,EAAiB,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC;oBACvD,CAAC,CAAC,aAAa,CAAC;gBAElB,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CACzC,oCAAoC,EACpC,YAAY,EACZ,QAAQ,CAAC,OAA+B,CACzC,CAAC;gBACF,MAAM;YAER,0BAA0B;YAC1B;gBACE,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAc,EAAE,CAAC,CAAC;SACxE;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QAE9D,IAAI,aAAa,CAAC,gBAAgB,EAAE;YAClC,OAAO;SACR;QAED,uBAAA,IAAI,2EAAgB,MAApB,IAAI,EAAiB,EAAE,EAAE,CAAC,aAAa,EAAE,EAAE;YACzC,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC;YACjC,aAAa,CAAC,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC;QACvD,CAAC,CAAC,CAAC;QACH,8DAA8D;KAC/D;IAAC,OAAO,KAAU,EAAE;QACnB,IAAI,IAAI,KAAK,oBAAoB,CAAC,SAAS,EAAE;YAC3C,uBAAA,IAAI,kFAAuB,MAA3B,IAAI,EAAwB,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;SAChD;aAAM;YACL,uBAAA,IAAI,mFAAwB,MAA5B,IAAI,EAAyB,EAAE,CAAC,CAAC;SAClC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAE5C,MAAM,KAAK,CAAC;KACb;AACH,CAAC,mGAEsB,EAAU,EAAE,KAAa;IAC9C,uBAAA,IAAI,2EAAgB,MAApB,IAAI,EAAiB,EAAE,EAAE,CAAC,aAAa,EAAE,EAAE;QACzC,aAAa,CAAC,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC;QACtD,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,qGAEuB,kBAA0B,EAAE,MAAe;IACjE,IAAI,MAAM,EAAE;QACV,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;QAClE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;KACzD;IAED,uBAAA,IAAI,2EAAgB,MAApB,IAAI,EAAiB,kBAAkB,EAAE,CAAC,aAAa,EAAE,EAAE;QACzD,aAAa,CAAC,MAAM,GAAG,sBAAsB,CAAC,QAAQ,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,yCAED,KAAK,+CAAkB,EAAU;IAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC,QAA0B,EAAE,EAAE;YAC7D,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,yCAED,KAAK,+CACH,QAA0B,EAC1B,IAAkB,EAClB,EACE,YAAY,EACZ,QAAQ,GAC2C;IAErD,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,QAAQ,CAAC;IACvC,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,IAAI,eAAe,CAAC;IAEvD,MAAM,uBAAA,IAAI,kCAAO,MAAX,IAAI,EAAQ;QAChB,IAAI,EAAE,sBAAsB;QAC5B,EAAE,EAAE,QAAQ;QACZ,aAAa,EAAE,YAAY;KAC5B,CAAC,CAAC;IAEH,OAAO,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CACrC,+BAA+B,EAC/B;QACE,EAAE;QACF,MAAM;QACN,IAAI;QACJ,WAAW,EAAE,EAAE,GAAG,aAAa,EAAE;QACjC,aAAa,EAAE,IAAI;KACpB,EACD,IAAI,CACL,CAAuB,CAAC;AAC3B,CAAC,qFAGC,EAAU,EACV,QAA8C;IAE9C,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,MAAM,EAAE,SAAS,EAAE,GAAG,uBAAA,IAAI,wEAAa,MAAjB,IAAI,EAAc,CAAC,KAAK,EAAE,EAAE;QAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAE7C,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,6BAA6B,EAAE,YAAY,CAAC,CAAC;SAC9D;QAED,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;QAEvC,6CAA6C;QAC7C,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEnB,aAAa,GAAG,QAAQ,CAAC,MAAM,KAAK,cAAc,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAExD,IACE,aAAa;QACb,cAAc,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAgC,CAAC,EACzE;QACA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;KAClD;IAED,OAAO,eAAe,CAAC;AACzB,CAAC,+EAEY,QAAmD;IAC9D,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3B,oEAAoE;QACpE,QAAQ,CAAC,KAA4C,CAAC,CAAC;QAEvD,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,MAAM,CACtE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,sBAAsB,CAAC,UAAU,CACjC,CAAC;QAEnC,MAAM,oBAAoB,GAAG,uBAAA,IAAI,gFAAqB,MAAzB,IAAI,EAC/B,kBAAkB,EAClB,oBAAoB,CAAC,YAAY,CAClC,CAAC;QAEF,MAAM,iBAAiB,GAAG,uBAAA,IAAI,gFAAqB,MAAzB,IAAI,EAC5B,kBAAkB,EAClB,oBAAoB,CAAC,SAAS,CAC/B,CAAC;QAEF,8DAA8D;QAC9D,KAAK,CAAC,sBAAsB,GAAG,oBAA2B,CAAC;QAE3D,8DAA8D;QAC9D,KAAK,CAAC,uBAAuB,GAAG,iBAAwB,CAAC;QAEzD,KAAK,CAAC,0BAA0B;YAC9B,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC;QAE7C,KAAK,CAAC,4BAA4B;YAChC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,+FAGC,iBAAqC,EACrC,IAA0B;IAE1B,OAAO,iBAAiB;SACrB,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC;SAC1C,MAAM,CACL,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QACjB,GAAG,GAAG;QACN,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,aAAa,EAAE;KAC/D,CAAC,EACF,EAAE,CACH,CAAC;AACN,CAAC,qEAGC,oBAA0C,EAC1C,OAAyC,EACzC,KAAmB,EACnB,WAA0B;IAE1B,MAAM,aAAa,GAAG,uBAAA,IAAI,iFAAsB,MAA1B,IAAI,EACxB,oBAAoB,EACpB,OAAO,CACR,CAAC;IAEF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,uBAAuB,EAAE;QACjD,IAAI,EAAE,OAAO,CAAC,UAAU;QACxB,IAAI,EAAE;YACJ,aAAa;YACb,KAAK;YACL,WAAW;SACZ;KACF,CAAC,CAAC;AACL,CAAC,iGAGC,WAAiC,EACjC,OAA8B;IAE9B,IAAI,WAAW,KAAK,oBAAoB,CAAC,YAAY,EAAE;QACrD,OAAO,aAAa,CAAC,YAAY,CAAC;KACnC;IAED,IACE,WAAW,KAAK,oBAAoB,CAAC,SAAS;QAC9C,OAAO,KAAK,oBAAoB,CAAC,EAAE,EACnC;QACA,OAAO,aAAa,CAAC,kBAAkB,CAAC;KACzC;IAED,IACE,WAAW,KAAK,oBAAoB,CAAC,SAAS;QAC9C,OAAO,KAAK,oBAAoB,CAAC,EAAE,EACnC;QACA,OAAO,aAAa,CAAC,kBAAkB,CAAC;KACzC;IAED,OAAO,aAAa,CAAC,gBAAgB,CAAC;AACxC,CAAC","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
+ {"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 | undefined,\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 id = random();\n const origin = request?.origin ?? messageParams.origin;\n const requestId = request?.id;\n const securityAlertResponse = request?.securityAlertResponse;\n\n const finalMessageParams = {\n ...messageParams,\n metamaskId: id,\n origin,\n requestId,\n version,\n };\n\n const metadata = {\n id,\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":";;;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"]}
1
+ {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AA8HA,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 /** ID of the associated signature request. */\n metamaskId?: 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 /** Version of the signTypedData request. */\n version?: string;\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
@@ -21,6 +21,8 @@ export type MessageParams = {
21
21
  deferSetAsSigned?: boolean;
22
22
  /** Ethereum address to sign with. */
23
23
  from: string;
24
+ /** ID of the associated signature request. */
25
+ metamaskId?: string;
24
26
  /**
25
27
  * Source of the request.
26
28
  * Such as a hostname of a dApp.
@@ -50,6 +52,8 @@ export type MessageParamsTyped = MessageParams & {
50
52
  primaryType: string;
51
53
  message: Json;
52
54
  };
55
+ /** Version of the signTypedData request. */
56
+ version?: string;
53
57
  };
54
58
  type SignatureRequestBase = {
55
59
  /** Error message that occurred during the signing. */
@@ -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
@@ -21,6 +21,8 @@ export type MessageParams = {
21
21
  deferSetAsSigned?: boolean;
22
22
  /** Ethereum address to sign with. */
23
23
  from: string;
24
+ /** ID of the associated signature request. */
25
+ metamaskId?: string;
24
26
  /**
25
27
  * Source of the request.
26
28
  * Such as a hostname of a dApp.
@@ -50,6 +52,8 @@ export type MessageParamsTyped = MessageParams & {
50
52
  primaryType: string;
51
53
  message: Json;
52
54
  };
55
+ /** Version of the signTypedData request. */
56
+ version?: string;
53
57
  };
54
58
  type SignatureRequestBase = {
55
59
  /** Error message that occurred during the signing. */
@@ -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":"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"]}
1
+ {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA8HA,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 /** ID of the associated signature request. */\n metamaskId?: 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 /** Version of the signTypedData request. */\n version?: string;\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": "20.0.0-preview-b7ea5d52",
3
+ "version": "20.1.0-preview-ead2f439",
4
4
  "description": "Processes signing requests in order to sign arbitrary and typed data",
5
5
  "keywords": [
6
6
  "MetaMask",
@@ -49,7 +49,7 @@
49
49
  "dependencies": {
50
50
  "@metamask/base-controller": "^7.0.1",
51
51
  "@metamask/controller-utils": "^11.3.0",
52
- "@metamask/eth-sig-util": "^7.0.1",
52
+ "@metamask/eth-sig-util": "^8.0.0",
53
53
  "@metamask/utils": "^9.1.0",
54
54
  "jsonschema": "^1.2.4",
55
55
  "lodash": "^4.17.21",