@metamask-previews/signature-controller 19.1.0-preview-e46fca9e → 19.1.0-preview-2ccc4900
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/dist/SignatureController.cjs +15 -15
- package/dist/SignatureController.cjs.map +1 -1
- package/dist/SignatureController.mjs +15 -15
- package/dist/SignatureController.mjs.map +1 -1
- package/dist/index.cjs +1 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -0
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +3 -3
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +3 -3
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -176,7 +176,7 @@ class SignatureController extends base_controller_1.BaseController {
|
|
|
176
176
|
*/
|
|
177
177
|
setDeferredSignSuccess(signatureRequestId, signature) {
|
|
178
178
|
const updatedSignatureRequest = __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_updateMetadata).call(this, signatureRequestId, (draftMetadata) => {
|
|
179
|
-
draftMetadata.
|
|
179
|
+
draftMetadata.rawSig = signature;
|
|
180
180
|
draftMetadata.status = types_1.SignatureRequestStatus.Signed;
|
|
181
181
|
});
|
|
182
182
|
this.hub.emit(`${signatureRequestId}:finished`, updatedSignatureRequest);
|
|
@@ -250,7 +250,7 @@ _SignatureController_getCurrentChainId = new WeakMap(), _SignatureController_tra
|
|
|
250
250
|
try {
|
|
251
251
|
const metadata = {
|
|
252
252
|
id: (0, uuid_1.v1)(),
|
|
253
|
-
|
|
253
|
+
messageParams: finalMessageParams,
|
|
254
254
|
securityAlertResponse,
|
|
255
255
|
signingOptions,
|
|
256
256
|
status: types_1.SignatureRequestStatus.Unapproved,
|
|
@@ -298,17 +298,17 @@ _SignatureController_getCurrentChainId = new WeakMap(), _SignatureController_tra
|
|
|
298
298
|
});
|
|
299
299
|
await __classPrivateFieldGet(this, _SignatureController_trace, "f").call(this, { name: 'Sign', parentContext: traceContext }, () => __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_signRequest).call(this, metadata));
|
|
300
300
|
}, _SignatureController_signRequest = async function _SignatureController_signRequest(metadata) {
|
|
301
|
-
const { id,
|
|
301
|
+
const { id, messageParams, signingOptions, type } = metadata;
|
|
302
302
|
try {
|
|
303
303
|
let signature;
|
|
304
304
|
switch (type) {
|
|
305
305
|
case types_1.SignatureRequestType.PersonalSign:
|
|
306
|
-
signature = await this.messagingSystem.call('KeyringController:signPersonalMessage',
|
|
306
|
+
signature = await this.messagingSystem.call('KeyringController:signPersonalMessage', messageParams);
|
|
307
307
|
break;
|
|
308
308
|
case types_1.SignatureRequestType.TypedSign:
|
|
309
309
|
const finalRequest = signingOptions?.parseJsonData
|
|
310
|
-
? __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_parseTypedData).call(this,
|
|
311
|
-
:
|
|
310
|
+
? __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_parseTypedData).call(this, messageParams, metadata.version)
|
|
311
|
+
: messageParams;
|
|
312
312
|
signature = await this.messagingSystem.call('KeyringController:signTypedMessage', finalRequest, metadata.version);
|
|
313
313
|
break;
|
|
314
314
|
/* istanbul ignore next */
|
|
@@ -316,11 +316,11 @@ _SignatureController_getCurrentChainId = new WeakMap(), _SignatureController_tra
|
|
|
316
316
|
throw new Error(`Unknown signature request type: ${type}`);
|
|
317
317
|
}
|
|
318
318
|
this.hub.emit(`${type}:signed`, { signature, messageId: id });
|
|
319
|
-
if (
|
|
319
|
+
if (messageParams.deferSetAsSigned) {
|
|
320
320
|
return;
|
|
321
321
|
}
|
|
322
322
|
const finalMetadata = __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_updateMetadata).call(this, id, (draftMetadata) => {
|
|
323
|
-
draftMetadata.
|
|
323
|
+
draftMetadata.rawSig = signature;
|
|
324
324
|
draftMetadata.status = types_1.SignatureRequestStatus.Signed;
|
|
325
325
|
});
|
|
326
326
|
this.hub.emit(`${id}:finished`, finalMetadata);
|
|
@@ -349,21 +349,21 @@ _SignatureController_getCurrentChainId = new WeakMap(), _SignatureController_tra
|
|
|
349
349
|
}, _SignatureController_waitForSignatureRequestFinished = async function _SignatureController_waitForSignatureRequestFinished(id) {
|
|
350
350
|
return new Promise((resolve, reject) => {
|
|
351
351
|
this.hub.once(`${id}:finished`, (metadata) => {
|
|
352
|
-
const {
|
|
352
|
+
const { messageParams, rawSig, status, type } = metadata;
|
|
353
353
|
switch (status) {
|
|
354
354
|
case types_1.SignatureRequestStatus.Signed:
|
|
355
|
-
return resolve(
|
|
355
|
+
return resolve(rawSig);
|
|
356
356
|
case types_1.SignatureRequestStatus.Rejected:
|
|
357
357
|
return reject(new Error(`MetaMask ${type} Signature: User denied message signature.`));
|
|
358
358
|
/* istanbul ignore next */
|
|
359
359
|
default:
|
|
360
|
-
return reject(new Error(`MetaMask ${type} Signature: Unknown problem: ${JSON.stringify(
|
|
360
|
+
return reject(new Error(`MetaMask ${type} Signature: Unknown problem: ${JSON.stringify(messageParams)}`));
|
|
361
361
|
}
|
|
362
362
|
});
|
|
363
363
|
});
|
|
364
364
|
}, _SignatureController_requestApproval = async function _SignatureController_requestApproval(metadata, type, { traceContext, actionId, }) {
|
|
365
|
-
const { id,
|
|
366
|
-
const origin =
|
|
365
|
+
const { id, messageParams } = metadata;
|
|
366
|
+
const origin = messageParams.origin || controller_utils_1.ORIGIN_METAMASK;
|
|
367
367
|
await __classPrivateFieldGet(this, _SignatureController_trace, "f").call(this, {
|
|
368
368
|
name: 'Notification Display',
|
|
369
369
|
id: actionId,
|
|
@@ -373,7 +373,7 @@ _SignatureController_getCurrentChainId = new WeakMap(), _SignatureController_tra
|
|
|
373
373
|
id,
|
|
374
374
|
origin,
|
|
375
375
|
type,
|
|
376
|
-
requestData: { ...
|
|
376
|
+
requestData: { ...messageParams },
|
|
377
377
|
expectsResult: true,
|
|
378
378
|
}, true));
|
|
379
379
|
}, _SignatureController_updateMetadata = function _SignatureController_updateMetadata(id, callback) {
|
|
@@ -400,7 +400,7 @@ _SignatureController_getCurrentChainId = new WeakMap(), _SignatureController_tra
|
|
|
400
400
|
.filter((request) => request.type === type)
|
|
401
401
|
.reduce((acc, request) => ({
|
|
402
402
|
...acc,
|
|
403
|
-
[request.id]: { ...request, msgParams: request.
|
|
403
|
+
[request.id]: { ...request, msgParams: request.messageParams },
|
|
404
404
|
}), {});
|
|
405
405
|
}, _SignatureController_addLog = function _SignatureController_addLog(signatureRequestType, version, stage, signingData) {
|
|
406
406
|
const signingMethod = __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_getSignTypeForLogger).call(this, signatureRequestType, version);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignatureController.cjs","sourceRoot":"","sources":["../src/SignatureController.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport 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} from './types';\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\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, any>;\n\n /**\n * Map of typed messages with the unapproved status, keyed by ID.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedTypedMessages: Record<string, any>;\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 messageParams.siwe = detectSIWE(messageParams);\n\n return this.#processSignatureRequest({\n messageParams,\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 return this.#processSignatureRequest({\n messageParams,\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 setDeferredSignSuccess(signatureRequestId: string, signature: any) {\n const updatedSignatureRequest = this.#updateMetadata(\n signatureRequestId,\n (draftMetadata) => {\n draftMetadata.signature = signature;\n draftMetadata.status = SignatureRequestStatus.Signed;\n },\n );\n\n this.hub.emit(`${signatureRequestId}:finished`, updatedSignatureRequest);\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 const updatedSignatureRequest = this.#updateMetadata(\n signatureRequestId,\n (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Rejected;\n },\n );\n\n this.hub.emit(`${signatureRequestId}:finished`, updatedSignatureRequest);\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 { securityAlertResponse } = request;\n\n const finalMessageParams = {\n ...messageParams,\n origin: request.origin,\n requestId: request.id,\n };\n\n let resultCallbacks: AcceptResultCallbacks | undefined;\n\n try {\n const metadata = {\n id: random(),\n request: 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 const finishedPromise = this.#waitForSignatureRequestFinished(\n metadata.id,\n );\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 resultCallbacks = acceptResult.resultCallbacks;\n } catch (error) {\n log('User rejected request', metadata.id);\n\n this.#addLog(type, version, SigningStage.Rejected, messageParams);\n this.#rejectSignatureRequest(metadata.id);\n\n throw error;\n }\n\n await this.#approveAndSignRequest(metadata, traceContext);\n\n const signature = await finishedPromise;\n\n log('Signature request finished', { id: metadata.id, signature });\n\n this.#addLog(type, version, SigningStage.Signed, messageParams);\n\n resultCallbacks?.success(signature);\n\n return signature;\n } catch (error) {\n log('Signature request failed', error);\n resultCallbacks?.error(error as Error);\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, request, 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 request,\n );\n break;\n\n case SignatureRequestType.TypedSign:\n const finalRequest = signingOptions?.parseJsonData\n ? this.#parseTypedData(request, metadata.version)\n : request;\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 (request.deferSetAsSigned) {\n return;\n }\n\n const finalMetadata = this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.signature = signature;\n draftMetadata.status = SignatureRequestStatus.Signed;\n });\n\n this.hub.emit(`${id}:finished`, finalMetadata);\n } catch (error: any) {\n if (type === SignatureRequestType.TypedSign) {\n this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Errored;\n draftMetadata.error = error.message;\n });\n } else {\n this.#rejectSignatureRequest(id);\n }\n\n this.hub.emit(`${id}:signError`, { error });\n\n throw 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 #waitForSignatureRequestFinished(id: string): Promise<string> {\n return new Promise((resolve, reject) => {\n this.hub.once(`${id}:finished`, (metadata: SignatureRequest) => {\n const { request, signature, status, type } = metadata;\n\n switch (status) {\n case SignatureRequestStatus.Signed:\n return resolve(signature as string);\n\n case SignatureRequestStatus.Rejected:\n return reject(\n new Error(\n `MetaMask ${type} Signature: User denied message signature.`,\n ),\n );\n\n /* istanbul ignore next */\n default:\n return reject(\n new Error(\n `MetaMask ${type} Signature: Unknown problem: ${JSON.stringify(\n request,\n )}`,\n ),\n );\n }\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, request } = metadata;\n const origin = request.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: { ...request } as any,\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 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 callback(metadata);\n });\n\n return nextState.signatureRequests[id];\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 any);\n\n const unapprovedRequests = Object.values(\n state.signatureRequests as unknown as Record<string, SignatureRequest>,\n ).filter(\n (request) => request.status === SignatureRequestStatus.Unapproved,\n );\n\n state.unapprovedPersonalMsgs = this.#generateLegacyState(\n unapprovedRequests,\n SignatureRequestType.PersonalSign,\n );\n\n state.unapprovedTypedMessages = this.#generateLegacyState(\n unapprovedRequests,\n SignatureRequestType.TypedSign,\n );\n\n state.unapprovedPersonalMsgCount = Object.values(\n state.unapprovedPersonalMsgs,\n ).length;\n\n state.unapprovedTypedMessagesCount = Object.values(\n state.unapprovedTypedMessages,\n ).length;\n });\n }\n\n #generateLegacyState(\n unapprovedSignatureRequests: SignatureRequest[],\n type: SignatureRequestType,\n ) {\n return unapprovedSignatureRequests\n .filter((request) => request.type === type)\n .reduce(\n (acc, request) => ({\n ...acc,\n [request.id]: { ...request, msgParams: request.request },\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":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport 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} from './types';\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\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, any>;\n\n /**\n * Map of typed messages with the unapproved status, keyed by ID.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedTypedMessages: Record<string, any>;\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 messageParams.siwe = detectSIWE(messageParams);\n\n return this.#processSignatureRequest({\n messageParams,\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 return this.#processSignatureRequest({\n messageParams,\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 setDeferredSignSuccess(signatureRequestId: string, signature: any) {\n const updatedSignatureRequest = this.#updateMetadata(\n signatureRequestId,\n (draftMetadata) => {\n draftMetadata.rawSig = signature;\n draftMetadata.status = SignatureRequestStatus.Signed;\n },\n );\n\n this.hub.emit(`${signatureRequestId}:finished`, updatedSignatureRequest);\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 const updatedSignatureRequest = this.#updateMetadata(\n signatureRequestId,\n (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Rejected;\n },\n );\n\n this.hub.emit(`${signatureRequestId}:finished`, updatedSignatureRequest);\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 { securityAlertResponse } = request;\n\n const finalMessageParams = {\n ...messageParams,\n origin: request.origin,\n requestId: request.id,\n };\n\n let resultCallbacks: AcceptResultCallbacks | undefined;\n\n try {\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 const finishedPromise = this.#waitForSignatureRequestFinished(\n metadata.id,\n );\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 resultCallbacks = acceptResult.resultCallbacks;\n } catch (error) {\n log('User rejected request', metadata.id);\n\n this.#addLog(type, version, SigningStage.Rejected, messageParams);\n this.#rejectSignatureRequest(metadata.id);\n\n throw error;\n }\n\n await this.#approveAndSignRequest(metadata, traceContext);\n\n const signature = await finishedPromise;\n\n log('Signature request finished', { id: metadata.id, signature });\n\n this.#addLog(type, version, SigningStage.Signed, messageParams);\n\n resultCallbacks?.success(signature);\n\n return signature;\n } catch (error) {\n log('Signature request failed', error);\n resultCallbacks?.error(error as Error);\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 messageParams,\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 const finalMetadata = this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.rawSig = signature;\n draftMetadata.status = SignatureRequestStatus.Signed;\n });\n\n this.hub.emit(`${id}:finished`, finalMetadata);\n } catch (error: any) {\n if (type === SignatureRequestType.TypedSign) {\n this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Errored;\n draftMetadata.error = error.message;\n });\n } else {\n this.#rejectSignatureRequest(id);\n }\n\n this.hub.emit(`${id}:signError`, { error });\n\n throw 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 #waitForSignatureRequestFinished(id: string): Promise<string> {\n return new Promise((resolve, reject) => {\n this.hub.once(`${id}:finished`, (metadata: SignatureRequest) => {\n const { messageParams, rawSig, status, type } = metadata;\n\n switch (status) {\n case SignatureRequestStatus.Signed:\n return resolve(rawSig as string);\n\n case SignatureRequestStatus.Rejected:\n return reject(\n new Error(\n `MetaMask ${type} Signature: User denied message signature.`,\n ),\n );\n\n /* istanbul ignore next */\n default:\n return reject(\n new Error(\n `MetaMask ${type} Signature: Unknown problem: ${JSON.stringify(\n messageParams,\n )}`,\n ),\n );\n }\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 } as any,\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 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 callback(metadata);\n });\n\n return nextState.signatureRequests[id];\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 any);\n\n const unapprovedRequests = Object.values(\n state.signatureRequests as unknown as Record<string, SignatureRequest>,\n ).filter(\n (request) => request.status === SignatureRequestStatus.Unapproved,\n );\n\n state.unapprovedPersonalMsgs = this.#generateLegacyState(\n unapprovedRequests,\n SignatureRequestType.PersonalSign,\n );\n\n state.unapprovedTypedMessages = this.#generateLegacyState(\n unapprovedRequests,\n SignatureRequestType.TypedSign,\n );\n\n state.unapprovedPersonalMsgCount = Object.values(\n state.unapprovedPersonalMsgs,\n ).length;\n\n state.unapprovedTypedMessagesCount = Object.values(\n state.unapprovedTypedMessages,\n ).length;\n });\n }\n\n #generateLegacyState(\n unapprovedSignatureRequests: SignatureRequest[],\n type: SignatureRequestType,\n ) {\n return unapprovedSignatureRequests\n .filter((request) => request.type === type)\n .reduce(\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"]}
|
|
@@ -170,7 +170,7 @@ export class SignatureController extends BaseController {
|
|
|
170
170
|
*/
|
|
171
171
|
setDeferredSignSuccess(signatureRequestId, signature) {
|
|
172
172
|
const updatedSignatureRequest = __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_updateMetadata).call(this, signatureRequestId, (draftMetadata) => {
|
|
173
|
-
draftMetadata.
|
|
173
|
+
draftMetadata.rawSig = signature;
|
|
174
174
|
draftMetadata.status = SignatureRequestStatus.Signed;
|
|
175
175
|
});
|
|
176
176
|
this.hub.emit(`${signatureRequestId}:finished`, updatedSignatureRequest);
|
|
@@ -243,7 +243,7 @@ _SignatureController_getCurrentChainId = new WeakMap(), _SignatureController_tra
|
|
|
243
243
|
try {
|
|
244
244
|
const metadata = {
|
|
245
245
|
id: random(),
|
|
246
|
-
|
|
246
|
+
messageParams: finalMessageParams,
|
|
247
247
|
securityAlertResponse,
|
|
248
248
|
signingOptions,
|
|
249
249
|
status: SignatureRequestStatus.Unapproved,
|
|
@@ -291,17 +291,17 @@ _SignatureController_getCurrentChainId = new WeakMap(), _SignatureController_tra
|
|
|
291
291
|
});
|
|
292
292
|
await __classPrivateFieldGet(this, _SignatureController_trace, "f").call(this, { name: 'Sign', parentContext: traceContext }, () => __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_signRequest).call(this, metadata));
|
|
293
293
|
}, _SignatureController_signRequest = async function _SignatureController_signRequest(metadata) {
|
|
294
|
-
const { id,
|
|
294
|
+
const { id, messageParams, signingOptions, type } = metadata;
|
|
295
295
|
try {
|
|
296
296
|
let signature;
|
|
297
297
|
switch (type) {
|
|
298
298
|
case SignatureRequestType.PersonalSign:
|
|
299
|
-
signature = await this.messagingSystem.call('KeyringController:signPersonalMessage',
|
|
299
|
+
signature = await this.messagingSystem.call('KeyringController:signPersonalMessage', messageParams);
|
|
300
300
|
break;
|
|
301
301
|
case SignatureRequestType.TypedSign:
|
|
302
302
|
const finalRequest = signingOptions?.parseJsonData
|
|
303
|
-
? __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_parseTypedData).call(this,
|
|
304
|
-
:
|
|
303
|
+
? __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_parseTypedData).call(this, messageParams, metadata.version)
|
|
304
|
+
: messageParams;
|
|
305
305
|
signature = await this.messagingSystem.call('KeyringController:signTypedMessage', finalRequest, metadata.version);
|
|
306
306
|
break;
|
|
307
307
|
/* istanbul ignore next */
|
|
@@ -309,11 +309,11 @@ _SignatureController_getCurrentChainId = new WeakMap(), _SignatureController_tra
|
|
|
309
309
|
throw new Error(`Unknown signature request type: ${type}`);
|
|
310
310
|
}
|
|
311
311
|
this.hub.emit(`${type}:signed`, { signature, messageId: id });
|
|
312
|
-
if (
|
|
312
|
+
if (messageParams.deferSetAsSigned) {
|
|
313
313
|
return;
|
|
314
314
|
}
|
|
315
315
|
const finalMetadata = __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_updateMetadata).call(this, id, (draftMetadata) => {
|
|
316
|
-
draftMetadata.
|
|
316
|
+
draftMetadata.rawSig = signature;
|
|
317
317
|
draftMetadata.status = SignatureRequestStatus.Signed;
|
|
318
318
|
});
|
|
319
319
|
this.hub.emit(`${id}:finished`, finalMetadata);
|
|
@@ -342,21 +342,21 @@ _SignatureController_getCurrentChainId = new WeakMap(), _SignatureController_tra
|
|
|
342
342
|
}, _SignatureController_waitForSignatureRequestFinished = async function _SignatureController_waitForSignatureRequestFinished(id) {
|
|
343
343
|
return new Promise((resolve, reject) => {
|
|
344
344
|
this.hub.once(`${id}:finished`, (metadata) => {
|
|
345
|
-
const {
|
|
345
|
+
const { messageParams, rawSig, status, type } = metadata;
|
|
346
346
|
switch (status) {
|
|
347
347
|
case SignatureRequestStatus.Signed:
|
|
348
|
-
return resolve(
|
|
348
|
+
return resolve(rawSig);
|
|
349
349
|
case SignatureRequestStatus.Rejected:
|
|
350
350
|
return reject(new Error(`MetaMask ${type} Signature: User denied message signature.`));
|
|
351
351
|
/* istanbul ignore next */
|
|
352
352
|
default:
|
|
353
|
-
return reject(new Error(`MetaMask ${type} Signature: Unknown problem: ${JSON.stringify(
|
|
353
|
+
return reject(new Error(`MetaMask ${type} Signature: Unknown problem: ${JSON.stringify(messageParams)}`));
|
|
354
354
|
}
|
|
355
355
|
});
|
|
356
356
|
});
|
|
357
357
|
}, _SignatureController_requestApproval = async function _SignatureController_requestApproval(metadata, type, { traceContext, actionId, }) {
|
|
358
|
-
const { id,
|
|
359
|
-
const origin =
|
|
358
|
+
const { id, messageParams } = metadata;
|
|
359
|
+
const origin = messageParams.origin || ORIGIN_METAMASK;
|
|
360
360
|
await __classPrivateFieldGet(this, _SignatureController_trace, "f").call(this, {
|
|
361
361
|
name: 'Notification Display',
|
|
362
362
|
id: actionId,
|
|
@@ -366,7 +366,7 @@ _SignatureController_getCurrentChainId = new WeakMap(), _SignatureController_tra
|
|
|
366
366
|
id,
|
|
367
367
|
origin,
|
|
368
368
|
type,
|
|
369
|
-
requestData: { ...
|
|
369
|
+
requestData: { ...messageParams },
|
|
370
370
|
expectsResult: true,
|
|
371
371
|
}, true));
|
|
372
372
|
}, _SignatureController_updateMetadata = function _SignatureController_updateMetadata(id, callback) {
|
|
@@ -393,7 +393,7 @@ _SignatureController_getCurrentChainId = new WeakMap(), _SignatureController_tra
|
|
|
393
393
|
.filter((request) => request.type === type)
|
|
394
394
|
.reduce((acc, request) => ({
|
|
395
395
|
...acc,
|
|
396
|
-
[request.id]: { ...request, msgParams: request.
|
|
396
|
+
[request.id]: { ...request, msgParams: request.messageParams },
|
|
397
397
|
}), {});
|
|
398
398
|
}, _SignatureController_addLog = function _SignatureController_addLog(signatureRequestType, version, stage, signingData) {
|
|
399
399
|
const signingMethod = __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_getSignTypeForLogger).call(this, signatureRequestType, version);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignatureController.mjs","sourceRoot":"","sources":["../src/SignatureController.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport 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} from './types';\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\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, any>;\n\n /**\n * Map of typed messages with the unapproved status, keyed by ID.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedTypedMessages: Record<string, any>;\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 messageParams.siwe = detectSIWE(messageParams);\n\n return this.#processSignatureRequest({\n messageParams,\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 return this.#processSignatureRequest({\n messageParams,\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 setDeferredSignSuccess(signatureRequestId: string, signature: any) {\n const updatedSignatureRequest = this.#updateMetadata(\n signatureRequestId,\n (draftMetadata) => {\n draftMetadata.signature = signature;\n draftMetadata.status = SignatureRequestStatus.Signed;\n },\n );\n\n this.hub.emit(`${signatureRequestId}:finished`, updatedSignatureRequest);\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 const updatedSignatureRequest = this.#updateMetadata(\n signatureRequestId,\n (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Rejected;\n },\n );\n\n this.hub.emit(`${signatureRequestId}:finished`, updatedSignatureRequest);\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 { securityAlertResponse } = request;\n\n const finalMessageParams = {\n ...messageParams,\n origin: request.origin,\n requestId: request.id,\n };\n\n let resultCallbacks: AcceptResultCallbacks | undefined;\n\n try {\n const metadata = {\n id: random(),\n request: 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 const finishedPromise = this.#waitForSignatureRequestFinished(\n metadata.id,\n );\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 resultCallbacks = acceptResult.resultCallbacks;\n } catch (error) {\n log('User rejected request', metadata.id);\n\n this.#addLog(type, version, SigningStage.Rejected, messageParams);\n this.#rejectSignatureRequest(metadata.id);\n\n throw error;\n }\n\n await this.#approveAndSignRequest(metadata, traceContext);\n\n const signature = await finishedPromise;\n\n log('Signature request finished', { id: metadata.id, signature });\n\n this.#addLog(type, version, SigningStage.Signed, messageParams);\n\n resultCallbacks?.success(signature);\n\n return signature;\n } catch (error) {\n log('Signature request failed', error);\n resultCallbacks?.error(error as Error);\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, request, 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 request,\n );\n break;\n\n case SignatureRequestType.TypedSign:\n const finalRequest = signingOptions?.parseJsonData\n ? this.#parseTypedData(request, metadata.version)\n : request;\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 (request.deferSetAsSigned) {\n return;\n }\n\n const finalMetadata = this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.signature = signature;\n draftMetadata.status = SignatureRequestStatus.Signed;\n });\n\n this.hub.emit(`${id}:finished`, finalMetadata);\n } catch (error: any) {\n if (type === SignatureRequestType.TypedSign) {\n this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Errored;\n draftMetadata.error = error.message;\n });\n } else {\n this.#rejectSignatureRequest(id);\n }\n\n this.hub.emit(`${id}:signError`, { error });\n\n throw 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 #waitForSignatureRequestFinished(id: string): Promise<string> {\n return new Promise((resolve, reject) => {\n this.hub.once(`${id}:finished`, (metadata: SignatureRequest) => {\n const { request, signature, status, type } = metadata;\n\n switch (status) {\n case SignatureRequestStatus.Signed:\n return resolve(signature as string);\n\n case SignatureRequestStatus.Rejected:\n return reject(\n new Error(\n `MetaMask ${type} Signature: User denied message signature.`,\n ),\n );\n\n /* istanbul ignore next */\n default:\n return reject(\n new Error(\n `MetaMask ${type} Signature: Unknown problem: ${JSON.stringify(\n request,\n )}`,\n ),\n );\n }\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, request } = metadata;\n const origin = request.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: { ...request } as any,\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 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 callback(metadata);\n });\n\n return nextState.signatureRequests[id];\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 any);\n\n const unapprovedRequests = Object.values(\n state.signatureRequests as unknown as Record<string, SignatureRequest>,\n ).filter(\n (request) => request.status === SignatureRequestStatus.Unapproved,\n );\n\n state.unapprovedPersonalMsgs = this.#generateLegacyState(\n unapprovedRequests,\n SignatureRequestType.PersonalSign,\n );\n\n state.unapprovedTypedMessages = this.#generateLegacyState(\n unapprovedRequests,\n SignatureRequestType.TypedSign,\n );\n\n state.unapprovedPersonalMsgCount = Object.values(\n state.unapprovedPersonalMsgs,\n ).length;\n\n state.unapprovedTypedMessagesCount = Object.values(\n state.unapprovedTypedMessages,\n ).length;\n });\n }\n\n #generateLegacyState(\n unapprovedSignatureRequests: SignatureRequest[],\n type: SignatureRequestType,\n ) {\n return unapprovedSignatureRequests\n .filter((request) => request.type === type)\n .reduce(\n (acc, request) => ({\n ...acc,\n [request.id]: { ...request, msgParams: request.request },\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":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport 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} from './types';\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\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, any>;\n\n /**\n * Map of typed messages with the unapproved status, keyed by ID.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedTypedMessages: Record<string, any>;\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 messageParams.siwe = detectSIWE(messageParams);\n\n return this.#processSignatureRequest({\n messageParams,\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 return this.#processSignatureRequest({\n messageParams,\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 setDeferredSignSuccess(signatureRequestId: string, signature: any) {\n const updatedSignatureRequest = this.#updateMetadata(\n signatureRequestId,\n (draftMetadata) => {\n draftMetadata.rawSig = signature;\n draftMetadata.status = SignatureRequestStatus.Signed;\n },\n );\n\n this.hub.emit(`${signatureRequestId}:finished`, updatedSignatureRequest);\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 const updatedSignatureRequest = this.#updateMetadata(\n signatureRequestId,\n (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Rejected;\n },\n );\n\n this.hub.emit(`${signatureRequestId}:finished`, updatedSignatureRequest);\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 { securityAlertResponse } = request;\n\n const finalMessageParams = {\n ...messageParams,\n origin: request.origin,\n requestId: request.id,\n };\n\n let resultCallbacks: AcceptResultCallbacks | undefined;\n\n try {\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 const finishedPromise = this.#waitForSignatureRequestFinished(\n metadata.id,\n );\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 resultCallbacks = acceptResult.resultCallbacks;\n } catch (error) {\n log('User rejected request', metadata.id);\n\n this.#addLog(type, version, SigningStage.Rejected, messageParams);\n this.#rejectSignatureRequest(metadata.id);\n\n throw error;\n }\n\n await this.#approveAndSignRequest(metadata, traceContext);\n\n const signature = await finishedPromise;\n\n log('Signature request finished', { id: metadata.id, signature });\n\n this.#addLog(type, version, SigningStage.Signed, messageParams);\n\n resultCallbacks?.success(signature);\n\n return signature;\n } catch (error) {\n log('Signature request failed', error);\n resultCallbacks?.error(error as Error);\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 messageParams,\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 const finalMetadata = this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.rawSig = signature;\n draftMetadata.status = SignatureRequestStatus.Signed;\n });\n\n this.hub.emit(`${id}:finished`, finalMetadata);\n } catch (error: any) {\n if (type === SignatureRequestType.TypedSign) {\n this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Errored;\n draftMetadata.error = error.message;\n });\n } else {\n this.#rejectSignatureRequest(id);\n }\n\n this.hub.emit(`${id}:signError`, { error });\n\n throw 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 #waitForSignatureRequestFinished(id: string): Promise<string> {\n return new Promise((resolve, reject) => {\n this.hub.once(`${id}:finished`, (metadata: SignatureRequest) => {\n const { messageParams, rawSig, status, type } = metadata;\n\n switch (status) {\n case SignatureRequestStatus.Signed:\n return resolve(rawSig as string);\n\n case SignatureRequestStatus.Rejected:\n return reject(\n new Error(\n `MetaMask ${type} Signature: User denied message signature.`,\n ),\n );\n\n /* istanbul ignore next */\n default:\n return reject(\n new Error(\n `MetaMask ${type} Signature: Unknown problem: ${JSON.stringify(\n messageParams,\n )}`,\n ),\n );\n }\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 } as any,\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 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 callback(metadata);\n });\n\n return nextState.signatureRequests[id];\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 any);\n\n const unapprovedRequests = Object.values(\n state.signatureRequests as unknown as Record<string, SignatureRequest>,\n ).filter(\n (request) => request.status === SignatureRequestStatus.Unapproved,\n );\n\n state.unapprovedPersonalMsgs = this.#generateLegacyState(\n unapprovedRequests,\n SignatureRequestType.PersonalSign,\n );\n\n state.unapprovedTypedMessages = this.#generateLegacyState(\n unapprovedRequests,\n SignatureRequestType.TypedSign,\n );\n\n state.unapprovedPersonalMsgCount = Object.values(\n state.unapprovedPersonalMsgs,\n ).length;\n\n state.unapprovedTypedMessagesCount = Object.values(\n state.unapprovedTypedMessages,\n ).length;\n });\n }\n\n #generateLegacyState(\n unapprovedSignatureRequests: SignatureRequest[],\n type: SignatureRequestType,\n ) {\n return unapprovedSignatureRequests\n .filter((request) => request.type === type)\n .reduce(\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"]}
|
package/dist/index.cjs
CHANGED
|
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./SignatureController.cjs"), exports);
|
|
18
|
+
__exportStar(require("./types.cjs"), exports);
|
|
18
19
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAAsC","sourcesContent":["export * from './SignatureController';\n"]}
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAAsC;AACtC,8CAAwB","sourcesContent":["export * from './SignatureController';\nexport * from './types';\n"]}
|
package/dist/index.d.cts
CHANGED
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAAsC"}
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAAsC;AACtC,4BAAwB"}
|
package/dist/index.d.mts
CHANGED
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAAsC"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAAsC;AACtC,4BAAwB"}
|
package/dist/index.mjs
CHANGED
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAAsC","sourcesContent":["export * from './SignatureController';\n"]}
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAAsC;AACtC,4BAAwB","sourcesContent":["export * from './SignatureController';\nexport * from './types';\n"]}
|
package/dist/types.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;AA4GvD,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":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\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\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?: any;\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, any>[]\n | string\n | {\n types: Record<string, any>;\n domain: Record<string, any>;\n primaryType: string;\n message: any;\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 /** Response following a security scan of the request. */\n securityAlertResponse?: Record<string, Json>;\n\n /** Signature hash resulting from the request. */\n
|
|
1
|
+
{"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;AA4GvD,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":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\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\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?: any;\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, any>[]\n | string\n | {\n types: Record<string, any>;\n domain: Record<string, any>;\n primaryType: string;\n message: any;\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 /** Response following a security scan of the request. */\n securityAlertResponse?: Record<string, Json>;\n\n /** Signature hash resulting from the request. */\n rawSig?: string;\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/** 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
|
@@ -57,7 +57,7 @@ type SignatureRequestBase = {
|
|
|
57
57
|
/** Response following a security scan of the request. */
|
|
58
58
|
securityAlertResponse?: Record<string, Json>;
|
|
59
59
|
/** Signature hash resulting from the request. */
|
|
60
|
-
|
|
60
|
+
rawSig?: string;
|
|
61
61
|
/** Options used for signing. */
|
|
62
62
|
signingOptions?: TypedSigningOptions;
|
|
63
63
|
/** Current status of the request. */
|
|
@@ -69,10 +69,10 @@ type SignatureRequestBase = {
|
|
|
69
69
|
};
|
|
70
70
|
/** Metadata concerning a request to sign data. */
|
|
71
71
|
export type SignatureRequest = SignatureRequestBase & ({
|
|
72
|
-
|
|
72
|
+
messageParams: MessageParamsPersonal;
|
|
73
73
|
type: SignatureRequestType.PersonalSign;
|
|
74
74
|
} | {
|
|
75
|
-
|
|
75
|
+
messageParams: MessageParamsTyped;
|
|
76
76
|
type: SignatureRequestType.TypedSign;
|
|
77
77
|
});
|
|
78
78
|
/** Status of a signature request. */
|
package/dist/types.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qCAAqC;AACzE,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAE5C,oEAAoE;AACpE,MAAM,MAAM,eAAe,GAAG;IAC5B,gDAAgD;IAChD,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,yDAAyD;IACzD,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC9C,CAAC;AAEF,sCAAsC;AACtC,MAAM,MAAM,mBAAmB,GAAG;IAChC,sEAAsE;IACtE,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,+DAA+D;AAC/D,MAAM,MAAM,aAAa,GAAG;IAC1B,iHAAiH;IACjH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,oEAAoE;AACpE,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG;IAClD,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IAEb,0DAA0D;IAC1D,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,CAAC;AAEF,iEAAiE;AACjE,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,+BAA+B;IAC/B,IAAI,EACA,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GACrB,MAAM,GACN;QACE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5B,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,GAAG,CAAC;KACd,CAAC;CACP,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IAEX,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,IAAI,CAAC;IAEhB,yDAAyD;IACzD,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE7C,iDAAiD;IACjD,
|
|
1
|
+
{"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qCAAqC;AACzE,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAE5C,oEAAoE;AACpE,MAAM,MAAM,eAAe,GAAG;IAC5B,gDAAgD;IAChD,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,yDAAyD;IACzD,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC9C,CAAC;AAEF,sCAAsC;AACtC,MAAM,MAAM,mBAAmB,GAAG;IAChC,sEAAsE;IACtE,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,+DAA+D;AAC/D,MAAM,MAAM,aAAa,GAAG;IAC1B,iHAAiH;IACjH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,oEAAoE;AACpE,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG;IAClD,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IAEb,0DAA0D;IAC1D,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,CAAC;AAEF,iEAAiE;AACjE,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,+BAA+B;IAC/B,IAAI,EACA,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GACrB,MAAM,GACN;QACE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5B,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,GAAG,CAAC;KACd,CAAC;CACP,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IAEX,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,IAAI,CAAC;IAEhB,yDAAyD;IACzD,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE7C,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,gCAAgC;IAChC,cAAc,CAAC,EAAE,mBAAmB,CAAC;IAErC,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IAEf,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IAEb,4CAA4C;IAC5C,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC,CAAC;AAEF,kDAAkD;AAClD,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GACjD,CACI;IACE,aAAa,EAAE,qBAAqB,CAAC;IACrC,IAAI,EAAE,oBAAoB,CAAC,YAAY,CAAC;CACzC,GACD;IACE,aAAa,EAAE,kBAAkB,CAAC;IAClC,IAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC;CACtC,CACJ,CAAC;AAEJ,qCAAqC;AACrC,oBAAY,sBAAsB;IAChC,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,4CAA4C;AAC5C,oBAAY,oBAAoB;IAC9B,YAAY,kBAAkB;IAC9B,SAAS,sBAAsB;CAChC"}
|
package/dist/types.d.mts
CHANGED
|
@@ -57,7 +57,7 @@ type SignatureRequestBase = {
|
|
|
57
57
|
/** Response following a security scan of the request. */
|
|
58
58
|
securityAlertResponse?: Record<string, Json>;
|
|
59
59
|
/** Signature hash resulting from the request. */
|
|
60
|
-
|
|
60
|
+
rawSig?: string;
|
|
61
61
|
/** Options used for signing. */
|
|
62
62
|
signingOptions?: TypedSigningOptions;
|
|
63
63
|
/** Current status of the request. */
|
|
@@ -69,10 +69,10 @@ type SignatureRequestBase = {
|
|
|
69
69
|
};
|
|
70
70
|
/** Metadata concerning a request to sign data. */
|
|
71
71
|
export type SignatureRequest = SignatureRequestBase & ({
|
|
72
|
-
|
|
72
|
+
messageParams: MessageParamsPersonal;
|
|
73
73
|
type: SignatureRequestType.PersonalSign;
|
|
74
74
|
} | {
|
|
75
|
-
|
|
75
|
+
messageParams: MessageParamsTyped;
|
|
76
76
|
type: SignatureRequestType.TypedSign;
|
|
77
77
|
});
|
|
78
78
|
/** Status of a signature request. */
|
package/dist/types.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qCAAqC;AACzE,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAE5C,oEAAoE;AACpE,MAAM,MAAM,eAAe,GAAG;IAC5B,gDAAgD;IAChD,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,yDAAyD;IACzD,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC9C,CAAC;AAEF,sCAAsC;AACtC,MAAM,MAAM,mBAAmB,GAAG;IAChC,sEAAsE;IACtE,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,+DAA+D;AAC/D,MAAM,MAAM,aAAa,GAAG;IAC1B,iHAAiH;IACjH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,oEAAoE;AACpE,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG;IAClD,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IAEb,0DAA0D;IAC1D,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,CAAC;AAEF,iEAAiE;AACjE,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,+BAA+B;IAC/B,IAAI,EACA,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GACrB,MAAM,GACN;QACE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5B,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,GAAG,CAAC;KACd,CAAC;CACP,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IAEX,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,IAAI,CAAC;IAEhB,yDAAyD;IACzD,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE7C,iDAAiD;IACjD,
|
|
1
|
+
{"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qCAAqC;AACzE,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAE5C,oEAAoE;AACpE,MAAM,MAAM,eAAe,GAAG;IAC5B,gDAAgD;IAChD,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,yDAAyD;IACzD,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC9C,CAAC;AAEF,sCAAsC;AACtC,MAAM,MAAM,mBAAmB,GAAG;IAChC,sEAAsE;IACtE,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,+DAA+D;AAC/D,MAAM,MAAM,aAAa,GAAG;IAC1B,iHAAiH;IACjH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,oEAAoE;AACpE,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG;IAClD,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IAEb,0DAA0D;IAC1D,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,CAAC;AAEF,iEAAiE;AACjE,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,+BAA+B;IAC/B,IAAI,EACA,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GACrB,MAAM,GACN;QACE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5B,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,GAAG,CAAC;KACd,CAAC;CACP,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IAEX,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,IAAI,CAAC;IAEhB,yDAAyD;IACzD,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE7C,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,gCAAgC;IAChC,cAAc,CAAC,EAAE,mBAAmB,CAAC;IAErC,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IAEf,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IAEb,4CAA4C;IAC5C,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC,CAAC;AAEF,kDAAkD;AAClD,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GACjD,CACI;IACE,aAAa,EAAE,qBAAqB,CAAC;IACrC,IAAI,EAAE,oBAAoB,CAAC,YAAY,CAAC;CACzC,GACD;IACE,aAAa,EAAE,kBAAkB,CAAC;IAClC,IAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC;CACtC,CACJ,CAAC;AAEJ,qCAAqC;AACrC,oBAAY,sBAAsB;IAChC,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,4CAA4C;AAC5C,oBAAY,oBAAoB;IAC9B,YAAY,kBAAkB;IAC9B,SAAS,sBAAsB;CAChC"}
|
package/dist/types.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,uDAAuD;AA4GvD,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":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\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\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?: any;\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, any>[]\n | string\n | {\n types: Record<string, any>;\n domain: Record<string, any>;\n primaryType: string;\n message: any;\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 /** Response following a security scan of the request. */\n securityAlertResponse?: Record<string, Json>;\n\n /** Signature hash resulting from the request. */\n
|
|
1
|
+
{"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,uDAAuD;AA4GvD,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":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\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\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?: any;\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, any>[]\n | string\n | {\n types: Record<string, any>;\n domain: Record<string, any>;\n primaryType: string;\n message: any;\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 /** Response following a security scan of the request. */\n securityAlertResponse?: Record<string, Json>;\n\n /** Signature hash resulting from the request. */\n rawSig?: string;\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/** 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