@metamask-previews/signature-controller 21.0.0-preview-3f52b814 → 21.0.0-preview-de5d2fda
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 +27 -3
- package/dist/SignatureController.cjs.map +1 -1
- package/dist/SignatureController.d.cts +6 -1
- package/dist/SignatureController.d.cts.map +1 -1
- package/dist/SignatureController.d.mts +6 -1
- package/dist/SignatureController.d.mts.map +1 -1
- package/dist/SignatureController.mjs +27 -3
- package/dist/SignatureController.mjs.map +1 -1
- package/dist/constants.cjs +14 -0
- package/dist/constants.cjs.map +1 -0
- package/dist/constants.d.cts +11 -0
- package/dist/constants.d.cts.map +1 -0
- package/dist/constants.d.mts +11 -0
- package/dist/constants.d.mts.map +1 -0
- package/dist/constants.mjs +11 -0
- package/dist/constants.mjs.map +1 -0
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +31 -0
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +31 -0
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils/decoding-api.cjs +56 -0
- package/dist/utils/decoding-api.cjs.map +1 -0
- package/dist/utils/decoding-api.d.cts +15 -0
- package/dist/utils/decoding-api.d.cts.map +1 -0
- package/dist/utils/decoding-api.d.mts +15 -0
- package/dist/utils/decoding-api.d.mts.map +1 -0
- package/dist/utils/decoding-api.mjs +52 -0
- package/dist/utils/decoding-api.mjs.map +1 -0
- package/dist/utils/normalize.cjs +14 -1
- package/dist/utils/normalize.cjs.map +1 -1
- package/dist/utils/normalize.d.cts +7 -0
- package/dist/utils/normalize.d.cts.map +1 -1
- package/dist/utils/normalize.d.mts +7 -0
- package/dist/utils/normalize.d.mts.map +1 -1
- package/dist/utils/normalize.mjs +12 -0
- package/dist/utils/normalize.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -13,7 +13,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
13
13
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
15
|
};
|
|
16
|
-
var _SignatureController_instances, _SignatureController_trace, _SignatureController_parseTypedData, _SignatureController_processSignatureRequest, _SignatureController_addMetadata, _SignatureController_processApproval, _SignatureController_approveAndSignRequest, _SignatureController_signRequest, _SignatureController_errorSignatureRequest, _SignatureController_rejectSignatureRequest, _SignatureController_waitForFinished, _SignatureController_requestApproval, _SignatureController_updateMetadata, _SignatureController_updateState, _SignatureController_generateLegacyState, _SignatureController_addLog, _SignatureController_getSignTypeForLogger, _SignatureController_getChainId;
|
|
16
|
+
var _SignatureController_instances, _SignatureController_decodingApiUrl, _SignatureController_trace, _SignatureController_parseTypedData, _SignatureController_processSignatureRequest, _SignatureController_addMetadata, _SignatureController_processApproval, _SignatureController_approveAndSignRequest, _SignatureController_signRequest, _SignatureController_errorSignatureRequest, _SignatureController_rejectSignatureRequest, _SignatureController_waitForFinished, _SignatureController_requestApproval, _SignatureController_updateMetadata, _SignatureController_updateState, _SignatureController_generateLegacyState, _SignatureController_addLog, _SignatureController_getSignTypeForLogger, _SignatureController_getChainId, _SignatureController_decodePermitSignatureRequest;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.SignatureController = void 0;
|
|
19
19
|
const base_controller_1 = require("@metamask/base-controller");
|
|
@@ -24,6 +24,7 @@ const events_1 = __importDefault(require("events"));
|
|
|
24
24
|
const uuid_1 = require("uuid");
|
|
25
25
|
const logger_1 = require("./logger.cjs");
|
|
26
26
|
const types_1 = require("./types.cjs");
|
|
27
|
+
const decoding_api_1 = require("./utils/decoding-api.cjs");
|
|
27
28
|
const normalize_1 = require("./utils/normalize.cjs");
|
|
28
29
|
const validation_1 = require("./utils/validation.cjs");
|
|
29
30
|
const controllerName = 'SignatureController';
|
|
@@ -58,8 +59,9 @@ class SignatureController extends base_controller_1.BaseController {
|
|
|
58
59
|
* @param options.messenger - The restricted controller messenger for the sign controller.
|
|
59
60
|
* @param options.state - Initial state to set on this controller.
|
|
60
61
|
* @param options.trace - Callback to generate trace information.
|
|
62
|
+
* @param options.decodingApiUrl - Api used to get decoded data for permits.
|
|
61
63
|
*/
|
|
62
|
-
constructor({ messenger, state, trace }) {
|
|
64
|
+
constructor({ decodingApiUrl, messenger, state, trace, }) {
|
|
63
65
|
super({
|
|
64
66
|
name: controllerName,
|
|
65
67
|
metadata: stateMetadata,
|
|
@@ -70,9 +72,11 @@ class SignatureController extends base_controller_1.BaseController {
|
|
|
70
72
|
},
|
|
71
73
|
});
|
|
72
74
|
_SignatureController_instances.add(this);
|
|
75
|
+
_SignatureController_decodingApiUrl.set(this, void 0);
|
|
73
76
|
_SignatureController_trace.set(this, void 0);
|
|
74
77
|
this.hub = new events_1.default();
|
|
75
78
|
__classPrivateFieldSet(this, _SignatureController_trace, trace ?? ((_request, fn) => fn?.()), "f");
|
|
79
|
+
__classPrivateFieldSet(this, _SignatureController_decodingApiUrl, decodingApiUrl, "f");
|
|
76
80
|
}
|
|
77
81
|
/**
|
|
78
82
|
* A getter for the number of 'unapproved' PersonalMessages in this.messages.
|
|
@@ -229,7 +233,7 @@ class SignatureController extends base_controller_1.BaseController {
|
|
|
229
233
|
}
|
|
230
234
|
}
|
|
231
235
|
exports.SignatureController = SignatureController;
|
|
232
|
-
_SignatureController_trace = new WeakMap(), _SignatureController_instances = new WeakSet(), _SignatureController_parseTypedData = function _SignatureController_parseTypedData(messageParams, version) {
|
|
236
|
+
_SignatureController_decodingApiUrl = new WeakMap(), _SignatureController_trace = new WeakMap(), _SignatureController_instances = new WeakSet(), _SignatureController_parseTypedData = function _SignatureController_parseTypedData(messageParams, version) {
|
|
233
237
|
if (![keyring_controller_1.SignTypedDataVersion.V3, keyring_controller_1.SignTypedDataVersion.V4].includes(version) ||
|
|
234
238
|
typeof messageParams.data !== 'string') {
|
|
235
239
|
return messageParams;
|
|
@@ -258,6 +262,7 @@ _SignatureController_trace = new WeakMap(), _SignatureController_instances = new
|
|
|
258
262
|
let resultCallbacks;
|
|
259
263
|
let approveOrSignError;
|
|
260
264
|
const finalMetadataPromise = __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_waitForFinished).call(this, metadata.id);
|
|
265
|
+
__classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_decodePermitSignatureRequest).call(this, metadata.id, request, chainId);
|
|
261
266
|
try {
|
|
262
267
|
resultCallbacks = await __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_processApproval).call(this, {
|
|
263
268
|
approvalType,
|
|
@@ -496,5 +501,24 @@ _SignatureController_trace = new WeakMap(), _SignatureController_instances = new
|
|
|
496
501
|
}
|
|
497
502
|
const networkClient = this.messagingSystem.call('NetworkController:getNetworkClientById', networkClientId);
|
|
498
503
|
return networkClient.configuration.chainId;
|
|
504
|
+
}, _SignatureController_decodePermitSignatureRequest = function _SignatureController_decodePermitSignatureRequest(signatureRequestId, request, chainId) {
|
|
505
|
+
__classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_updateMetadata).call(this, signatureRequestId, (draftMetadata) => {
|
|
506
|
+
draftMetadata.decodingLoading = true;
|
|
507
|
+
});
|
|
508
|
+
(0, decoding_api_1.decodeSignature)(request, chainId, __classPrivateFieldGet(this, _SignatureController_decodingApiUrl, "f"))
|
|
509
|
+
.then((decodingData) => __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_updateMetadata).call(this, signatureRequestId, (draftMetadata) => {
|
|
510
|
+
draftMetadata.decodingData = decodingData;
|
|
511
|
+
draftMetadata.decodingLoading = false;
|
|
512
|
+
}))
|
|
513
|
+
.catch((error) => __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_updateMetadata).call(this, signatureRequestId, (draftMetadata) => {
|
|
514
|
+
draftMetadata.decodingData = {
|
|
515
|
+
stateChanges: null,
|
|
516
|
+
error: {
|
|
517
|
+
message: error.message,
|
|
518
|
+
type: decoding_api_1.DECODING_API_ERRORS.DECODING_FAILED_WITH_ERROR,
|
|
519
|
+
},
|
|
520
|
+
};
|
|
521
|
+
draftMetadata.decodingLoading = false;
|
|
522
|
+
}));
|
|
499
523
|
};
|
|
500
524
|
//# sourceMappingURL=SignatureController.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignatureController.cjs","sourceRoot":"","sources":["../src/SignatureController.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n AddApprovalRequest,\n AcceptResultCallbacks,\n AddResult,\n} from '@metamask/approval-controller';\nimport type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n RestrictedControllerMessenger,\n} from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type { TraceCallback, TraceContext } from '@metamask/controller-utils';\nimport {\n ApprovalType,\n detectSIWE,\n ORIGIN_METAMASK,\n} from '@metamask/controller-utils';\nimport type {\n KeyringControllerSignMessageAction,\n KeyringControllerSignPersonalMessageAction,\n KeyringControllerSignTypedMessageAction,\n} from '@metamask/keyring-controller';\nimport { SignTypedDataVersion } from '@metamask/keyring-controller';\nimport {\n SigningMethod,\n LogType,\n SigningStage,\n type AddLog,\n} from '@metamask/logging-controller';\nimport type { NetworkControllerGetNetworkClientByIdAction } from '@metamask/network-controller';\nimport type { Hex, Json } from '@metamask/utils';\nimport EventEmitter from 'events';\nimport { v1 as random } from 'uuid';\n\nimport { projectLogger as log } from './logger';\nimport { SignatureRequestStatus, SignatureRequestType } from './types';\nimport type {\n MessageParamsPersonal,\n MessageParamsTyped,\n OriginalRequest,\n SignatureRequest,\n MessageParams,\n TypedSigningOptions,\n LegacyStateMessage,\n StateSIWEMessage,\n} from './types';\nimport {\n normalizePersonalMessageParams,\n normalizeTypedMessageParams,\n} from './utils/normalize';\nimport {\n validatePersonalSignatureRequest,\n validateTypedSignatureRequest,\n} from './utils/validation';\n\nconst controllerName = 'SignatureController';\n\nconst stateMetadata = {\n signatureRequests: { persist: false, anonymous: false },\n unapprovedPersonalMsgs: { persist: false, anonymous: false },\n unapprovedTypedMessages: { persist: false, anonymous: false },\n unapprovedPersonalMsgCount: { persist: false, anonymous: false },\n unapprovedTypedMessagesCount: { persist: false, anonymous: false },\n};\n\nconst getDefaultState = () => ({\n signatureRequests: {},\n unapprovedPersonalMsgs: {},\n unapprovedTypedMessages: {},\n unapprovedPersonalMsgCount: 0,\n unapprovedTypedMessagesCount: 0,\n});\n\n/** List of statuses that will not be updated and trigger the finished event. */\nconst FINAL_STATUSES: SignatureRequestStatus[] = [\n SignatureRequestStatus.Signed,\n SignatureRequestStatus.Rejected,\n SignatureRequestStatus.Errored,\n];\n\nexport type SignatureControllerState = {\n /**\n * Map of all signature requests including all types and statuses, keyed by ID.\n */\n signatureRequests: Record<string, SignatureRequest>;\n\n /**\n * Map of personal messages with the unapproved status, keyed by ID.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedPersonalMsgs: Record<string, LegacyStateMessage>;\n\n /**\n * Map of typed messages with the unapproved status, keyed by ID.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedTypedMessages: Record<string, LegacyStateMessage>;\n\n /**\n * Number of unapproved personal messages.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedPersonalMsgCount: number;\n\n /**\n * Number of unapproved typed messages.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedTypedMessagesCount: number;\n};\n\ntype AllowedActions =\n | AddApprovalRequest\n | KeyringControllerSignMessageAction\n | KeyringControllerSignPersonalMessageAction\n | KeyringControllerSignTypedMessageAction\n | AddLog\n | NetworkControllerGetNetworkClientByIdAction;\n\nexport type GetSignatureState = ControllerGetStateAction<\n typeof controllerName,\n SignatureControllerState\n>;\n\nexport type SignatureStateChange = ControllerStateChangeEvent<\n typeof controllerName,\n SignatureControllerState\n>;\n\nexport type SignatureControllerActions = GetSignatureState;\n\nexport type SignatureControllerEvents = SignatureStateChange;\n\nexport type SignatureControllerMessenger = RestrictedControllerMessenger<\n typeof controllerName,\n SignatureControllerActions | AllowedActions,\n SignatureControllerEvents,\n AllowedActions['type'],\n never\n>;\n\nexport type SignatureControllerOptions = {\n /**\n * Restricted controller messenger required by the signature controller.\n */\n messenger: SignatureControllerMessenger;\n\n /**\n * @deprecated No longer in use.\n */\n securityProviderRequest?: (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n requestData: any,\n methodName: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ) => Promise<any>;\n\n /**\n * Initial state of the controller.\n */\n state?: SignatureControllerState;\n\n /**\n * Callback to record the duration of code.\n */\n trace?: TraceCallback;\n};\n\n/**\n * Controller for creating signing requests requiring user approval.\n */\nexport class SignatureController extends BaseController<\n typeof controllerName,\n SignatureControllerState,\n SignatureControllerMessenger\n> {\n hub: EventEmitter;\n\n #trace: TraceCallback;\n\n /**\n * Construct a Sign controller.\n *\n * @param options - The controller options.\n * @param options.messenger - The restricted controller messenger for the sign controller.\n * @param options.state - Initial state to set on this controller.\n * @param options.trace - Callback to generate trace information.\n */\n constructor({ messenger, state, trace }: SignatureControllerOptions) {\n super({\n name: controllerName,\n metadata: stateMetadata,\n messenger,\n state: {\n ...getDefaultState(),\n ...state,\n },\n });\n\n this.hub = new EventEmitter();\n this.#trace = trace ?? (((_request, fn) => fn?.()) as TraceCallback);\n }\n\n /**\n * A getter for the number of 'unapproved' PersonalMessages in this.messages.\n * @deprecated Use `signatureRequests` state instead.\n * @returns The number of 'unapproved' PersonalMessages in this.messages\n */\n get unapprovedPersonalMessagesCount(): number {\n return this.state.unapprovedPersonalMsgCount;\n }\n\n /**\n * A getter for the number of 'unapproved' TypedMessages in this.messages.\n * @deprecated Use `signatureRequests` state instead.\n * @returns The number of 'unapproved' TypedMessages in this.messages\n */\n get unapprovedTypedMessagesCount(): number {\n return this.state.unapprovedTypedMessagesCount;\n }\n\n /**\n * A getter for returning all messages.\n * @deprecated Use `signatureRequests` state instead.\n * @returns The object containing all messages.\n */\n get messages(): { [id: string]: SignatureRequest } {\n return this.state.signatureRequests;\n }\n\n /**\n * Reset the controller state to the initial state.\n */\n resetState() {\n this.#updateState((state) => {\n Object.assign(state, getDefaultState());\n });\n }\n\n /**\n * Reject all unapproved messages of any type.\n *\n * @param reason - A message to indicate why.\n */\n rejectUnapproved(reason?: string) {\n const unapprovedSignatureRequests = Object.values(\n this.state.signatureRequests,\n ).filter(\n (metadata) => metadata.status === SignatureRequestStatus.Unapproved,\n );\n\n for (const metadata of unapprovedSignatureRequests) {\n this.#rejectSignatureRequest(metadata.id, reason);\n }\n }\n\n /**\n * Clears all unapproved messages from memory.\n */\n clearUnapproved() {\n this.#updateState((state) => {\n Object.values(state.signatureRequests)\n .filter(\n (metadata) => metadata.status === SignatureRequestStatus.Unapproved,\n )\n .forEach((metadata) => delete state.signatureRequests[metadata.id]);\n });\n }\n\n /**\n * Called when a dApp uses the personal_sign method.\n * We currently provide personal_sign mostly for legacy dApps.\n *\n * @param messageParams - The params of the message to sign and return to the dApp.\n * @param request - The original request, containing the origin.\n * @param options - An options bag for the method.\n * @param options.traceContext - The parent context for any new traces.\n * @returns Promise resolving to the raw signature hash generated from the signature request.\n */\n async newUnsignedPersonalMessage(\n messageParams: MessageParamsPersonal,\n request: OriginalRequest,\n options: { traceContext?: TraceContext } = {},\n ): Promise<string> {\n validatePersonalSignatureRequest(messageParams);\n\n const normalizedMessageParams =\n normalizePersonalMessageParams(messageParams);\n\n normalizedMessageParams.siwe = detectSIWE(\n messageParams,\n ) as StateSIWEMessage;\n\n return this.#processSignatureRequest({\n messageParams: normalizedMessageParams,\n request,\n type: SignatureRequestType.PersonalSign,\n approvalType: ApprovalType.PersonalSign,\n traceContext: options.traceContext,\n });\n }\n\n /**\n * Called when a dapp uses the eth_signTypedData method, per EIP-712.\n *\n * @param messageParams - The params of the message to sign and return to the dApp.\n * @param request - The original request, containing the origin.\n * @param version - The version of the signTypedData request.\n * @param signingOptions - Options for signing the typed message.\n * @param options - An options bag for the method.\n * @param options.traceContext - The parent context for any new traces.\n * @returns Promise resolving to the raw signature hash generated from the signature request.\n */\n async newUnsignedTypedMessage(\n messageParams: MessageParamsTyped,\n request: OriginalRequest,\n version: string,\n signingOptions?: TypedSigningOptions,\n options: { traceContext?: TraceContext } = {},\n ): Promise<string> {\n const chainId = this.#getChainId(request);\n\n validateTypedSignatureRequest(\n messageParams,\n version as SignTypedDataVersion,\n chainId,\n );\n\n const normalizedMessageParams = normalizeTypedMessageParams(\n messageParams,\n version as SignTypedDataVersion,\n );\n\n return this.#processSignatureRequest({\n approvalType: ApprovalType.EthSignTypedData,\n messageParams: normalizedMessageParams,\n request,\n signingOptions,\n traceContext: options.traceContext,\n type: SignatureRequestType.TypedSign,\n version: version as SignTypedDataVersion,\n });\n }\n\n /**\n * Provide a signature for a pending signature request that used `deferSetAsSigned`.\n * Changes the status of the signature request to `signed`.\n *\n * @param signatureRequestId - The ID of the signature request.\n * @param signature - The signature to provide.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setDeferredSignSuccess(signatureRequestId: string, signature: any) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.rawSig = signature;\n draftMetadata.status = SignatureRequestStatus.Signed;\n });\n }\n\n /**\n * Set custom metadata on a signature request.\n * @param signatureRequestId - The ID of the signature request.\n * @param metadata - The custom metadata to set.\n */\n setMessageMetadata(signatureRequestId: string, metadata: Json) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.metadata = metadata;\n });\n }\n\n /**\n * Reject a pending signature request that used `deferSetAsSigned`.\n * Changes the status of the signature request to `rejected`.\n *\n * @param signatureRequestId - The ID of the signature request.\n */\n setDeferredSignError(signatureRequestId: string) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Rejected;\n });\n }\n\n /**\n * Set the status of a signature request to 'inProgress'.\n *\n * @param signatureRequestId - The ID of the signature request.\n */\n setTypedMessageInProgress(signatureRequestId: string) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.InProgress;\n });\n }\n\n /**\n * Set the status of a signature request to 'inProgress'.\n *\n * @param signatureRequestId - The ID of the signature request.\n */\n setPersonalMessageInProgress(signatureRequestId: string) {\n this.setTypedMessageInProgress(signatureRequestId);\n }\n\n #parseTypedData(\n messageParams: MessageParamsTyped,\n version?: SignTypedDataVersion,\n ): MessageParamsTyped {\n if (\n ![SignTypedDataVersion.V3, SignTypedDataVersion.V4].includes(\n version as SignTypedDataVersion,\n ) ||\n typeof messageParams.data !== 'string'\n ) {\n return messageParams;\n }\n\n return {\n ...messageParams,\n data: JSON.parse(messageParams.data),\n };\n }\n\n async #processSignatureRequest({\n chainId: optionChainId,\n messageParams,\n request,\n type,\n approvalType,\n version,\n signingOptions,\n traceContext,\n }: {\n chainId?: Hex;\n messageParams: MessageParams;\n request: OriginalRequest;\n type: SignatureRequestType;\n approvalType: ApprovalType;\n version?: SignTypedDataVersion;\n signingOptions?: TypedSigningOptions;\n traceContext?: TraceContext;\n }): Promise<string> {\n log('Processing signature request', {\n messageParams,\n request,\n type,\n version,\n });\n\n const chainId = optionChainId ?? this.#getChainId(request);\n\n this.#addLog(type, version, SigningStage.Proposed, messageParams);\n\n const metadata = this.#addMetadata({\n chainId,\n messageParams,\n request,\n signingOptions,\n type,\n version,\n });\n\n let resultCallbacks: AcceptResultCallbacks | undefined;\n let approveOrSignError: unknown;\n\n const finalMetadataPromise = this.#waitForFinished(metadata.id);\n\n try {\n resultCallbacks = await this.#processApproval({\n approvalType,\n metadata,\n request,\n traceContext,\n });\n\n await this.#approveAndSignRequest(metadata, traceContext);\n } catch (error) {\n log('Signature request failed', error);\n approveOrSignError = error;\n }\n\n const finalMetadata = await finalMetadataPromise;\n\n const {\n error,\n id,\n messageParams: finalMessageParams,\n rawSig: signature,\n } = finalMetadata;\n\n switch (finalMetadata.status) {\n case SignatureRequestStatus.Signed:\n log('Signature request finished', { id, signature });\n this.#addLog(type, version, SigningStage.Signed, finalMessageParams);\n resultCallbacks?.success(signature);\n return finalMetadata.rawSig as string;\n\n case SignatureRequestStatus.Rejected:\n /* istanbul ignore next */\n const rejectedError = (approveOrSignError ??\n new Error(\n `MetaMask ${type} Signature: User denied message signature.`,\n )) as Error;\n\n resultCallbacks?.error(rejectedError);\n throw rejectedError;\n\n case SignatureRequestStatus.Errored:\n /* istanbul ignore next */\n const erroredError = (approveOrSignError ??\n new Error(`MetaMask ${type} Signature: ${error as string}`)) as Error;\n\n resultCallbacks?.error(erroredError);\n throw erroredError;\n\n /* istanbul ignore next */\n default:\n throw new Error(\n `MetaMask ${type} Signature: Unknown problem: ${JSON.stringify(\n finalMessageParams,\n )}`,\n );\n }\n }\n\n #addMetadata({\n chainId,\n messageParams,\n request,\n signingOptions,\n type,\n version,\n }: {\n chainId: Hex;\n messageParams: MessageParams;\n request?: OriginalRequest;\n signingOptions?: TypedSigningOptions;\n type: SignatureRequestType;\n version?: SignTypedDataVersion;\n }): SignatureRequest {\n const id = random();\n const origin = request?.origin ?? messageParams.origin;\n const requestId = request?.id;\n const securityAlertResponse = request?.securityAlertResponse;\n const networkClientId = request?.networkClientId;\n\n const finalMessageParams = {\n ...messageParams,\n metamaskId: id,\n origin,\n requestId,\n version,\n };\n\n const metadata = {\n chainId,\n id: random(),\n messageParams: finalMessageParams,\n networkClientId,\n securityAlertResponse,\n signingOptions,\n status: SignatureRequestStatus.Unapproved,\n time: Date.now(),\n type,\n version,\n } as SignatureRequest;\n\n this.#updateState((state) => {\n state.signatureRequests[metadata.id] = metadata;\n });\n\n log('Added signature request', metadata);\n\n this.hub.emit('unapprovedMessage', {\n messageParams,\n metamaskId: metadata.id,\n });\n\n return metadata;\n }\n\n async #processApproval({\n approvalType,\n metadata,\n request,\n traceContext,\n }: {\n approvalType: ApprovalType;\n metadata: SignatureRequest;\n request?: OriginalRequest;\n traceContext?: TraceContext;\n }): Promise<AcceptResultCallbacks | undefined> {\n const { id, messageParams, type, version } = metadata;\n\n try {\n const acceptResult = await this.#trace(\n { name: 'Await Approval', parentContext: traceContext },\n (context) =>\n this.#requestApproval(metadata, approvalType, {\n traceContext: context,\n actionId: request?.id?.toString(),\n }),\n );\n\n return acceptResult.resultCallbacks;\n } catch (error) {\n log('User rejected request', { id, error });\n\n this.#addLog(type, version, SigningStage.Rejected, messageParams);\n this.#rejectSignatureRequest(id);\n\n throw error;\n }\n }\n\n async #approveAndSignRequest(\n metadata: SignatureRequest,\n traceContext?: TraceContext,\n ) {\n const { id } = metadata;\n\n this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Approved;\n });\n\n await this.#trace({ name: 'Sign', parentContext: traceContext }, () =>\n this.#signRequest(metadata),\n );\n }\n\n async #signRequest(metadata: SignatureRequest) {\n const { id, messageParams, signingOptions, type } = metadata;\n\n try {\n let signature: string;\n\n switch (type) {\n case SignatureRequestType.PersonalSign:\n signature = await this.messagingSystem.call(\n 'KeyringController:signPersonalMessage',\n // Keyring controller temporarily using message manager types.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n messageParams as any,\n );\n break;\n\n case SignatureRequestType.TypedSign:\n const finalRequest = signingOptions?.parseJsonData\n ? this.#parseTypedData(messageParams, metadata.version)\n : messageParams;\n\n signature = await this.messagingSystem.call(\n 'KeyringController:signTypedMessage',\n finalRequest,\n metadata.version as SignTypedDataVersion,\n );\n break;\n\n /* istanbul ignore next */\n default:\n throw new Error(`Unknown signature request type: ${type as string}`);\n }\n\n this.hub.emit(`${type}:signed`, { signature, messageId: id });\n\n if (messageParams.deferSetAsSigned) {\n return;\n }\n\n this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.rawSig = signature;\n draftMetadata.status = SignatureRequestStatus.Signed;\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n if (type === SignatureRequestType.TypedSign) {\n this.#errorSignatureRequest(id, error.message);\n } else {\n this.#rejectSignatureRequest(id);\n }\n\n this.hub.emit(`${id}:signError`, { error });\n\n throw error;\n }\n }\n\n #errorSignatureRequest(id: string, error: string) {\n this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Errored;\n draftMetadata.error = error;\n });\n }\n\n #rejectSignatureRequest(signatureRequestId: string, reason?: string) {\n if (reason) {\n const metadata = this.state.signatureRequests[signatureRequestId];\n this.hub.emit('cancelWithReason', { metadata, reason });\n }\n\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Rejected;\n });\n }\n\n async #waitForFinished(id: string): Promise<SignatureRequest> {\n return new Promise((resolve) => {\n this.hub.once(`${id}:finished`, (metadata: SignatureRequest) => {\n resolve(metadata);\n });\n });\n }\n\n async #requestApproval(\n metadata: SignatureRequest,\n type: ApprovalType,\n {\n traceContext,\n actionId,\n }: { traceContext?: TraceContext; actionId?: string },\n ): Promise<AddResult> {\n const { id, messageParams } = metadata;\n const origin = messageParams.origin || ORIGIN_METAMASK;\n\n await this.#trace({\n name: 'Notification Display',\n id: actionId,\n parentContext: traceContext,\n });\n\n return (await this.messagingSystem.call(\n 'ApprovalController:addRequest',\n {\n id,\n origin,\n type,\n requestData: { ...messageParams },\n expectsResult: true,\n },\n true,\n )) as Promise<AddResult>;\n }\n\n #updateMetadata(\n id: string,\n callback: (metadata: SignatureRequest) => void,\n ): SignatureRequest {\n let statusChanged = false;\n\n const { nextState } = this.#updateState((state) => {\n const metadata = state.signatureRequests[id];\n\n if (!metadata) {\n throw new Error(`Signature request with id ${id} not found`);\n }\n\n const originalStatus = metadata.status;\n\n // eslint-disable-next-line n/callback-return\n callback(metadata);\n\n statusChanged = metadata.status !== originalStatus;\n });\n\n const updatedMetadata = nextState.signatureRequests[id];\n\n if (\n statusChanged &&\n FINAL_STATUSES.includes(updatedMetadata.status as SignatureRequestStatus)\n ) {\n this.hub.emit(`${id}:finished`, updatedMetadata);\n }\n\n return updatedMetadata;\n }\n\n #updateState(callback: (state: SignatureControllerState) => void) {\n return this.update((state) => {\n // eslint-disable-next-line n/callback-return, n/no-callback-literal\n callback(state as unknown as SignatureControllerState);\n\n const unapprovedRequests = Object.values(state.signatureRequests).filter(\n (request) => request.status === SignatureRequestStatus.Unapproved,\n ) as unknown as SignatureRequest[];\n\n const personalSignMessages = this.#generateLegacyState(\n unapprovedRequests,\n SignatureRequestType.PersonalSign,\n );\n\n const typedSignMessages = this.#generateLegacyState(\n unapprovedRequests,\n SignatureRequestType.TypedSign,\n );\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n state.unapprovedPersonalMsgs = personalSignMessages as any;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n state.unapprovedTypedMessages = typedSignMessages as any;\n\n state.unapprovedPersonalMsgCount =\n Object.values(personalSignMessages).length;\n\n state.unapprovedTypedMessagesCount =\n Object.values(typedSignMessages).length;\n });\n }\n\n #generateLegacyState(\n signatureRequests: SignatureRequest[],\n type: SignatureRequestType,\n ): Record<string, LegacyStateMessage> {\n return signatureRequests\n .filter((request) => request.type === type)\n .reduce<Record<string, LegacyStateMessage>>(\n (acc, request) => ({\n ...acc,\n [request.id]: { ...request, msgParams: request.messageParams },\n }),\n {},\n );\n }\n\n #addLog(\n signatureRequestType: SignatureRequestType,\n version: SignTypedDataVersion | undefined,\n stage: SigningStage,\n signingData: MessageParams,\n ): void {\n const signingMethod = this.#getSignTypeForLogger(\n signatureRequestType,\n version,\n );\n\n this.messagingSystem.call('LoggingController:add', {\n type: LogType.EthSignLog,\n data: {\n signingMethod,\n stage,\n signingData,\n },\n });\n }\n\n #getSignTypeForLogger(\n requestType: SignatureRequestType,\n version?: SignTypedDataVersion,\n ): SigningMethod {\n if (requestType === SignatureRequestType.PersonalSign) {\n return SigningMethod.PersonalSign;\n }\n\n if (\n requestType === SignatureRequestType.TypedSign &&\n version === SignTypedDataVersion.V3\n ) {\n return SigningMethod.EthSignTypedDataV3;\n }\n\n if (\n requestType === SignatureRequestType.TypedSign &&\n version === SignTypedDataVersion.V4\n ) {\n return SigningMethod.EthSignTypedDataV4;\n }\n\n return SigningMethod.EthSignTypedData;\n }\n\n #getChainId(request: OriginalRequest): Hex {\n const { networkClientId } = request;\n\n if (!networkClientId) {\n throw new Error('Network client ID not found in request');\n }\n\n const networkClient = this.messagingSystem.call(\n 'NetworkController:getNetworkClientById',\n networkClientId,\n );\n\n return networkClient.configuration.chainId;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SignatureController.cjs","sourceRoot":"","sources":["../src/SignatureController.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n AddApprovalRequest,\n AcceptResultCallbacks,\n AddResult,\n} from '@metamask/approval-controller';\nimport type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n RestrictedControllerMessenger,\n} from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type { TraceCallback, TraceContext } from '@metamask/controller-utils';\nimport {\n ApprovalType,\n detectSIWE,\n ORIGIN_METAMASK,\n} from '@metamask/controller-utils';\nimport type {\n KeyringControllerSignMessageAction,\n KeyringControllerSignPersonalMessageAction,\n KeyringControllerSignTypedMessageAction,\n} from '@metamask/keyring-controller';\nimport { SignTypedDataVersion } from '@metamask/keyring-controller';\nimport {\n SigningMethod,\n LogType,\n SigningStage,\n type AddLog,\n} from '@metamask/logging-controller';\nimport type { NetworkControllerGetNetworkClientByIdAction } from '@metamask/network-controller';\nimport type { Hex, Json } from '@metamask/utils';\nimport EventEmitter from 'events';\nimport { v1 as random } from 'uuid';\n\nimport { projectLogger as log } from './logger';\nimport { SignatureRequestStatus, SignatureRequestType } from './types';\nimport type {\n MessageParamsPersonal,\n MessageParamsTyped,\n OriginalRequest,\n SignatureRequest,\n MessageParams,\n TypedSigningOptions,\n LegacyStateMessage,\n StateSIWEMessage,\n} from './types';\nimport { DECODING_API_ERRORS, decodeSignature } from './utils/decoding-api';\nimport {\n normalizePersonalMessageParams,\n normalizeTypedMessageParams,\n} from './utils/normalize';\nimport {\n validatePersonalSignatureRequest,\n validateTypedSignatureRequest,\n} from './utils/validation';\n\nconst controllerName = 'SignatureController';\n\nconst stateMetadata = {\n signatureRequests: { persist: false, anonymous: false },\n unapprovedPersonalMsgs: { persist: false, anonymous: false },\n unapprovedTypedMessages: { persist: false, anonymous: false },\n unapprovedPersonalMsgCount: { persist: false, anonymous: false },\n unapprovedTypedMessagesCount: { persist: false, anonymous: false },\n};\n\nconst getDefaultState = () => ({\n signatureRequests: {},\n unapprovedPersonalMsgs: {},\n unapprovedTypedMessages: {},\n unapprovedPersonalMsgCount: 0,\n unapprovedTypedMessagesCount: 0,\n});\n\n/** List of statuses that will not be updated and trigger the finished event. */\nconst FINAL_STATUSES: SignatureRequestStatus[] = [\n SignatureRequestStatus.Signed,\n SignatureRequestStatus.Rejected,\n SignatureRequestStatus.Errored,\n];\n\nexport type SignatureControllerState = {\n /**\n * Map of all signature requests including all types and statuses, keyed by ID.\n */\n signatureRequests: Record<string, SignatureRequest>;\n\n /**\n * Map of personal messages with the unapproved status, keyed by ID.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedPersonalMsgs: Record<string, LegacyStateMessage>;\n\n /**\n * Map of typed messages with the unapproved status, keyed by ID.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedTypedMessages: Record<string, LegacyStateMessage>;\n\n /**\n * Number of unapproved personal messages.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedPersonalMsgCount: number;\n\n /**\n * Number of unapproved typed messages.\n * @deprecated - Use `signatureRequests` instead.\n */\n unapprovedTypedMessagesCount: number;\n};\n\ntype AllowedActions =\n | AddApprovalRequest\n | KeyringControllerSignMessageAction\n | KeyringControllerSignPersonalMessageAction\n | KeyringControllerSignTypedMessageAction\n | AddLog\n | NetworkControllerGetNetworkClientByIdAction;\n\nexport type GetSignatureState = ControllerGetStateAction<\n typeof controllerName,\n SignatureControllerState\n>;\n\nexport type SignatureStateChange = ControllerStateChangeEvent<\n typeof controllerName,\n SignatureControllerState\n>;\n\nexport type SignatureControllerActions = GetSignatureState;\n\nexport type SignatureControllerEvents = SignatureStateChange;\n\nexport type SignatureControllerMessenger = RestrictedControllerMessenger<\n typeof controllerName,\n SignatureControllerActions | AllowedActions,\n SignatureControllerEvents,\n AllowedActions['type'],\n never\n>;\n\nexport type SignatureControllerOptions = {\n /**\n * 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 * URL of API to retrieve decoding data for typed requests.\n */\n decodingApiUrl?: string;\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 #decodingApiUrl?: string;\n\n #trace: TraceCallback;\n\n /**\n * Construct a Sign controller.\n *\n * @param options - The controller options.\n * @param options.messenger - The restricted controller messenger for the sign controller.\n * @param options.state - Initial state to set on this controller.\n * @param options.trace - Callback to generate trace information.\n * @param options.decodingApiUrl - Api used to get decoded data for permits.\n */\n constructor({\n decodingApiUrl,\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.#trace = trace ?? (((_request, fn) => fn?.()) as TraceCallback);\n this.#decodingApiUrl = decodingApiUrl;\n }\n\n /**\n * A getter for the number of 'unapproved' PersonalMessages in this.messages.\n * @deprecated Use `signatureRequests` state instead.\n * @returns The number of 'unapproved' PersonalMessages in this.messages\n */\n get unapprovedPersonalMessagesCount(): number {\n return this.state.unapprovedPersonalMsgCount;\n }\n\n /**\n * A getter for the number of 'unapproved' TypedMessages in this.messages.\n * @deprecated Use `signatureRequests` state instead.\n * @returns The number of 'unapproved' TypedMessages in this.messages\n */\n get unapprovedTypedMessagesCount(): number {\n return this.state.unapprovedTypedMessagesCount;\n }\n\n /**\n * A getter for returning all messages.\n * @deprecated Use `signatureRequests` state instead.\n * @returns The object containing all messages.\n */\n get messages(): { [id: string]: SignatureRequest } {\n return this.state.signatureRequests;\n }\n\n /**\n * Reset the controller state to the initial state.\n */\n resetState() {\n this.#updateState((state) => {\n Object.assign(state, getDefaultState());\n });\n }\n\n /**\n * Reject all unapproved messages of any type.\n *\n * @param reason - A message to indicate why.\n */\n rejectUnapproved(reason?: string) {\n const unapprovedSignatureRequests = Object.values(\n this.state.signatureRequests,\n ).filter(\n (metadata) => metadata.status === SignatureRequestStatus.Unapproved,\n );\n\n for (const metadata of unapprovedSignatureRequests) {\n this.#rejectSignatureRequest(metadata.id, reason);\n }\n }\n\n /**\n * Clears all unapproved messages from memory.\n */\n clearUnapproved() {\n this.#updateState((state) => {\n Object.values(state.signatureRequests)\n .filter(\n (metadata) => metadata.status === SignatureRequestStatus.Unapproved,\n )\n .forEach((metadata) => delete state.signatureRequests[metadata.id]);\n });\n }\n\n /**\n * Called when a dApp uses the personal_sign method.\n * We currently provide personal_sign mostly for legacy dApps.\n *\n * @param messageParams - The params of the message to sign and return to the dApp.\n * @param request - The original request, containing the origin.\n * @param options - An options bag for the method.\n * @param options.traceContext - The parent context for any new traces.\n * @returns Promise resolving to the raw signature hash generated from the signature request.\n */\n async newUnsignedPersonalMessage(\n messageParams: MessageParamsPersonal,\n request: OriginalRequest,\n options: { traceContext?: TraceContext } = {},\n ): Promise<string> {\n validatePersonalSignatureRequest(messageParams);\n\n const normalizedMessageParams =\n normalizePersonalMessageParams(messageParams);\n\n normalizedMessageParams.siwe = detectSIWE(\n messageParams,\n ) as StateSIWEMessage;\n\n return this.#processSignatureRequest({\n messageParams: normalizedMessageParams,\n request,\n type: SignatureRequestType.PersonalSign,\n approvalType: ApprovalType.PersonalSign,\n traceContext: options.traceContext,\n });\n }\n\n /**\n * Called when a dapp uses the eth_signTypedData method, per EIP-712.\n *\n * @param messageParams - The params of the message to sign and return to the dApp.\n * @param request - The original request, containing the origin.\n * @param version - The version of the signTypedData request.\n * @param signingOptions - Options for signing the typed message.\n * @param options - An options bag for the method.\n * @param options.traceContext - The parent context for any new traces.\n * @returns Promise resolving to the raw signature hash generated from the signature request.\n */\n async newUnsignedTypedMessage(\n messageParams: MessageParamsTyped,\n request: OriginalRequest,\n version: string,\n signingOptions?: TypedSigningOptions,\n options: { traceContext?: TraceContext } = {},\n ): Promise<string> {\n const chainId = this.#getChainId(request);\n\n validateTypedSignatureRequest(\n messageParams,\n version as SignTypedDataVersion,\n chainId,\n );\n\n const normalizedMessageParams = normalizeTypedMessageParams(\n messageParams,\n version as SignTypedDataVersion,\n );\n\n return this.#processSignatureRequest({\n approvalType: ApprovalType.EthSignTypedData,\n messageParams: normalizedMessageParams,\n request,\n signingOptions,\n traceContext: options.traceContext,\n type: SignatureRequestType.TypedSign,\n version: version as SignTypedDataVersion,\n });\n }\n\n /**\n * Provide a signature for a pending signature request that used `deferSetAsSigned`.\n * Changes the status of the signature request to `signed`.\n *\n * @param signatureRequestId - The ID of the signature request.\n * @param signature - The signature to provide.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setDeferredSignSuccess(signatureRequestId: string, signature: any) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.rawSig = signature;\n draftMetadata.status = SignatureRequestStatus.Signed;\n });\n }\n\n /**\n * Set custom metadata on a signature request.\n * @param signatureRequestId - The ID of the signature request.\n * @param metadata - The custom metadata to set.\n */\n setMessageMetadata(signatureRequestId: string, metadata: Json) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.metadata = metadata;\n });\n }\n\n /**\n * Reject a pending signature request that used `deferSetAsSigned`.\n * Changes the status of the signature request to `rejected`.\n *\n * @param signatureRequestId - The ID of the signature request.\n */\n setDeferredSignError(signatureRequestId: string) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Rejected;\n });\n }\n\n /**\n * Set the status of a signature request to 'inProgress'.\n *\n * @param signatureRequestId - The ID of the signature request.\n */\n setTypedMessageInProgress(signatureRequestId: string) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.InProgress;\n });\n }\n\n /**\n * Set the status of a signature request to 'inProgress'.\n *\n * @param signatureRequestId - The ID of the signature request.\n */\n setPersonalMessageInProgress(signatureRequestId: string) {\n this.setTypedMessageInProgress(signatureRequestId);\n }\n\n #parseTypedData(\n messageParams: MessageParamsTyped,\n version?: SignTypedDataVersion,\n ): MessageParamsTyped {\n if (\n ![SignTypedDataVersion.V3, SignTypedDataVersion.V4].includes(\n version as SignTypedDataVersion,\n ) ||\n typeof messageParams.data !== 'string'\n ) {\n return messageParams;\n }\n\n return {\n ...messageParams,\n data: JSON.parse(messageParams.data),\n };\n }\n\n async #processSignatureRequest({\n chainId: optionChainId,\n messageParams,\n request,\n type,\n approvalType,\n version,\n signingOptions,\n traceContext,\n }: {\n chainId?: Hex;\n messageParams: MessageParams;\n request: OriginalRequest;\n type: SignatureRequestType;\n approvalType: ApprovalType;\n version?: SignTypedDataVersion;\n signingOptions?: TypedSigningOptions;\n traceContext?: TraceContext;\n }): Promise<string> {\n log('Processing signature request', {\n messageParams,\n request,\n type,\n version,\n });\n\n const chainId = optionChainId ?? this.#getChainId(request);\n\n this.#addLog(type, version, SigningStage.Proposed, messageParams);\n\n const metadata = this.#addMetadata({\n chainId,\n messageParams,\n request,\n signingOptions,\n type,\n version,\n });\n\n let resultCallbacks: AcceptResultCallbacks | undefined;\n let approveOrSignError: unknown;\n\n const finalMetadataPromise = this.#waitForFinished(metadata.id);\n this.#decodePermitSignatureRequest(metadata.id, request, chainId);\n\n try {\n resultCallbacks = await this.#processApproval({\n approvalType,\n metadata,\n request,\n traceContext,\n });\n\n await this.#approveAndSignRequest(metadata, traceContext);\n } catch (error) {\n log('Signature request failed', error);\n approveOrSignError = error;\n }\n\n const finalMetadata = await finalMetadataPromise;\n\n const {\n error,\n id,\n messageParams: finalMessageParams,\n rawSig: signature,\n } = finalMetadata;\n\n switch (finalMetadata.status) {\n case SignatureRequestStatus.Signed:\n log('Signature request finished', { id, signature });\n this.#addLog(type, version, SigningStage.Signed, finalMessageParams);\n resultCallbacks?.success(signature);\n return finalMetadata.rawSig as string;\n\n case SignatureRequestStatus.Rejected:\n /* istanbul ignore next */\n const rejectedError = (approveOrSignError ??\n new Error(\n `MetaMask ${type} Signature: User denied message signature.`,\n )) as Error;\n\n resultCallbacks?.error(rejectedError);\n throw rejectedError;\n\n case SignatureRequestStatus.Errored:\n /* istanbul ignore next */\n const erroredError = (approveOrSignError ??\n new Error(`MetaMask ${type} Signature: ${error as string}`)) as Error;\n\n resultCallbacks?.error(erroredError);\n throw erroredError;\n\n /* istanbul ignore next */\n default:\n throw new Error(\n `MetaMask ${type} Signature: Unknown problem: ${JSON.stringify(\n finalMessageParams,\n )}`,\n );\n }\n }\n\n #addMetadata({\n chainId,\n messageParams,\n request,\n signingOptions,\n type,\n version,\n }: {\n chainId: Hex;\n messageParams: MessageParams;\n request?: OriginalRequest;\n signingOptions?: TypedSigningOptions;\n type: SignatureRequestType;\n version?: SignTypedDataVersion;\n }): SignatureRequest {\n const id = random();\n const origin = request?.origin ?? messageParams.origin;\n const requestId = request?.id;\n const securityAlertResponse = request?.securityAlertResponse;\n const networkClientId = request?.networkClientId;\n\n const finalMessageParams = {\n ...messageParams,\n metamaskId: id,\n origin,\n requestId,\n version,\n };\n\n const metadata = {\n chainId,\n id: random(),\n messageParams: finalMessageParams,\n networkClientId,\n securityAlertResponse,\n signingOptions,\n status: SignatureRequestStatus.Unapproved,\n time: Date.now(),\n type,\n version,\n } as SignatureRequest;\n\n this.#updateState((state) => {\n state.signatureRequests[metadata.id] = metadata;\n });\n\n log('Added signature request', metadata);\n\n this.hub.emit('unapprovedMessage', {\n messageParams,\n metamaskId: metadata.id,\n });\n\n return metadata;\n }\n\n async #processApproval({\n approvalType,\n metadata,\n request,\n traceContext,\n }: {\n approvalType: ApprovalType;\n metadata: SignatureRequest;\n request?: OriginalRequest;\n traceContext?: TraceContext;\n }): Promise<AcceptResultCallbacks | undefined> {\n const { id, messageParams, type, version } = metadata;\n\n try {\n const acceptResult = await this.#trace(\n { name: 'Await Approval', parentContext: traceContext },\n (context) =>\n this.#requestApproval(metadata, approvalType, {\n traceContext: context,\n actionId: request?.id?.toString(),\n }),\n );\n\n return acceptResult.resultCallbacks;\n } catch (error) {\n log('User rejected request', { id, error });\n\n this.#addLog(type, version, SigningStage.Rejected, messageParams);\n this.#rejectSignatureRequest(id);\n\n throw error;\n }\n }\n\n async #approveAndSignRequest(\n metadata: SignatureRequest,\n traceContext?: TraceContext,\n ) {\n const { id } = metadata;\n\n this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Approved;\n });\n\n await this.#trace({ name: 'Sign', parentContext: traceContext }, () =>\n this.#signRequest(metadata),\n );\n }\n\n async #signRequest(metadata: SignatureRequest) {\n const { id, messageParams, signingOptions, type } = metadata;\n\n try {\n let signature: string;\n\n switch (type) {\n case SignatureRequestType.PersonalSign:\n signature = await this.messagingSystem.call(\n 'KeyringController:signPersonalMessage',\n // Keyring controller temporarily using message manager types.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n messageParams as any,\n );\n break;\n\n case SignatureRequestType.TypedSign:\n const finalRequest = signingOptions?.parseJsonData\n ? this.#parseTypedData(messageParams, metadata.version)\n : messageParams;\n\n signature = await this.messagingSystem.call(\n 'KeyringController:signTypedMessage',\n finalRequest,\n metadata.version as SignTypedDataVersion,\n );\n break;\n\n /* istanbul ignore next */\n default:\n throw new Error(`Unknown signature request type: ${type as string}`);\n }\n\n this.hub.emit(`${type}:signed`, { signature, messageId: id });\n\n if (messageParams.deferSetAsSigned) {\n return;\n }\n\n this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.rawSig = signature;\n draftMetadata.status = SignatureRequestStatus.Signed;\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n if (type === SignatureRequestType.TypedSign) {\n this.#errorSignatureRequest(id, error.message);\n } else {\n this.#rejectSignatureRequest(id);\n }\n\n this.hub.emit(`${id}:signError`, { error });\n\n throw error;\n }\n }\n\n #errorSignatureRequest(id: string, error: string) {\n this.#updateMetadata(id, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Errored;\n draftMetadata.error = error;\n });\n }\n\n #rejectSignatureRequest(signatureRequestId: string, reason?: string) {\n if (reason) {\n const metadata = this.state.signatureRequests[signatureRequestId];\n this.hub.emit('cancelWithReason', { metadata, reason });\n }\n\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.status = SignatureRequestStatus.Rejected;\n });\n }\n\n async #waitForFinished(id: string): Promise<SignatureRequest> {\n return new Promise((resolve) => {\n this.hub.once(`${id}:finished`, (metadata: SignatureRequest) => {\n resolve(metadata);\n });\n });\n }\n\n async #requestApproval(\n metadata: SignatureRequest,\n type: ApprovalType,\n {\n traceContext,\n actionId,\n }: { traceContext?: TraceContext; actionId?: string },\n ): Promise<AddResult> {\n const { id, messageParams } = metadata;\n const origin = messageParams.origin || ORIGIN_METAMASK;\n\n await this.#trace({\n name: 'Notification Display',\n id: actionId,\n parentContext: traceContext,\n });\n\n return (await this.messagingSystem.call(\n 'ApprovalController:addRequest',\n {\n id,\n origin,\n type,\n requestData: { ...messageParams },\n expectsResult: true,\n },\n true,\n )) as Promise<AddResult>;\n }\n\n #updateMetadata(\n id: string,\n callback: (metadata: SignatureRequest) => void,\n ): SignatureRequest {\n let statusChanged = false;\n\n const { nextState } = this.#updateState((state) => {\n const metadata = state.signatureRequests[id];\n\n if (!metadata) {\n throw new Error(`Signature request with id ${id} not found`);\n }\n\n const originalStatus = metadata.status;\n\n // eslint-disable-next-line n/callback-return\n callback(metadata);\n\n statusChanged = metadata.status !== originalStatus;\n });\n\n const updatedMetadata = nextState.signatureRequests[id];\n\n if (\n statusChanged &&\n FINAL_STATUSES.includes(updatedMetadata.status as SignatureRequestStatus)\n ) {\n this.hub.emit(`${id}:finished`, updatedMetadata);\n }\n\n return updatedMetadata;\n }\n\n #updateState(callback: (state: SignatureControllerState) => void) {\n return this.update((state) => {\n // eslint-disable-next-line n/callback-return, n/no-callback-literal\n callback(state as unknown as SignatureControllerState);\n\n const unapprovedRequests = Object.values(state.signatureRequests).filter(\n (request) => request.status === SignatureRequestStatus.Unapproved,\n ) as unknown as SignatureRequest[];\n\n const personalSignMessages = this.#generateLegacyState(\n unapprovedRequests,\n SignatureRequestType.PersonalSign,\n );\n\n const typedSignMessages = this.#generateLegacyState(\n unapprovedRequests,\n SignatureRequestType.TypedSign,\n );\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n state.unapprovedPersonalMsgs = personalSignMessages as any;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n state.unapprovedTypedMessages = typedSignMessages as any;\n\n state.unapprovedPersonalMsgCount =\n Object.values(personalSignMessages).length;\n\n state.unapprovedTypedMessagesCount =\n Object.values(typedSignMessages).length;\n });\n }\n\n #generateLegacyState(\n signatureRequests: SignatureRequest[],\n type: SignatureRequestType,\n ): Record<string, LegacyStateMessage> {\n return signatureRequests\n .filter((request) => request.type === type)\n .reduce<Record<string, LegacyStateMessage>>(\n (acc, request) => ({\n ...acc,\n [request.id]: { ...request, msgParams: request.messageParams },\n }),\n {},\n );\n }\n\n #addLog(\n signatureRequestType: SignatureRequestType,\n version: SignTypedDataVersion | undefined,\n stage: SigningStage,\n signingData: MessageParams,\n ): void {\n const signingMethod = this.#getSignTypeForLogger(\n signatureRequestType,\n version,\n );\n\n this.messagingSystem.call('LoggingController:add', {\n type: LogType.EthSignLog,\n data: {\n signingMethod,\n stage,\n signingData,\n },\n });\n }\n\n #getSignTypeForLogger(\n requestType: SignatureRequestType,\n version?: SignTypedDataVersion,\n ): SigningMethod {\n if (requestType === SignatureRequestType.PersonalSign) {\n return SigningMethod.PersonalSign;\n }\n\n if (\n requestType === SignatureRequestType.TypedSign &&\n version === SignTypedDataVersion.V3\n ) {\n return SigningMethod.EthSignTypedDataV3;\n }\n\n if (\n requestType === SignatureRequestType.TypedSign &&\n version === SignTypedDataVersion.V4\n ) {\n return SigningMethod.EthSignTypedDataV4;\n }\n\n return SigningMethod.EthSignTypedData;\n }\n\n #getChainId(request: OriginalRequest): Hex {\n const { networkClientId } = request;\n\n if (!networkClientId) {\n throw new Error('Network client ID not found in request');\n }\n\n const networkClient = this.messagingSystem.call(\n 'NetworkController:getNetworkClientById',\n networkClientId,\n );\n\n return networkClient.configuration.chainId;\n }\n\n #decodePermitSignatureRequest(\n signatureRequestId: string,\n request: OriginalRequest,\n chainId: string,\n ) {\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.decodingLoading = true;\n });\n decodeSignature(request, chainId, this.#decodingApiUrl)\n .then((decodingData) =>\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.decodingData = decodingData;\n draftMetadata.decodingLoading = false;\n }),\n )\n .catch((error) =>\n this.#updateMetadata(signatureRequestId, (draftMetadata) => {\n draftMetadata.decodingData = {\n stateChanges: null,\n error: {\n message: (error as unknown as Error).message,\n type: DECODING_API_ERRORS.DECODING_FAILED_WITH_ERROR,\n },\n };\n draftMetadata.decodingLoading = false;\n }),\n );\n }\n}\n"]}
|
|
@@ -51,6 +51,10 @@ export type SignatureControllerOptions = {
|
|
|
51
51
|
* @deprecated No longer in use.
|
|
52
52
|
*/
|
|
53
53
|
securityProviderRequest?: (requestData: any, methodName: string) => Promise<any>;
|
|
54
|
+
/**
|
|
55
|
+
* URL of API to retrieve decoding data for typed requests.
|
|
56
|
+
*/
|
|
57
|
+
decodingApiUrl?: string;
|
|
54
58
|
/**
|
|
55
59
|
* Initial state of the controller.
|
|
56
60
|
*/
|
|
@@ -73,8 +77,9 @@ export declare class SignatureController extends BaseController<typeof controlle
|
|
|
73
77
|
* @param options.messenger - The restricted controller messenger for the sign controller.
|
|
74
78
|
* @param options.state - Initial state to set on this controller.
|
|
75
79
|
* @param options.trace - Callback to generate trace information.
|
|
80
|
+
* @param options.decodingApiUrl - Api used to get decoded data for permits.
|
|
76
81
|
*/
|
|
77
|
-
constructor({ messenger, state, trace }: SignatureControllerOptions);
|
|
82
|
+
constructor({ decodingApiUrl, messenger, state, trace, }: SignatureControllerOptions);
|
|
78
83
|
/**
|
|
79
84
|
* A getter for the number of 'unapproved' PersonalMessages in this.messages.
|
|
80
85
|
* @deprecated Use `signatureRequests` state instead.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignatureController.d.cts","sourceRoot":"","sources":["../src/SignatureController.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EACV,kBAAkB,EAGnB,sCAAsC;AACvC,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAC1B,6BAA6B,EAC9B,kCAAkC;AACnC,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,mCAAmC;AAM9E,OAAO,KAAK,EACV,kCAAkC,EAClC,0CAA0C,EAC1C,uCAAuC,EACxC,qCAAqC;AAEtC,OAAO,EAIL,KAAK,MAAM,EACZ,qCAAqC;AACtC,OAAO,KAAK,EAAE,2CAA2C,EAAE,qCAAqC;AAChG,OAAO,KAAK,EAAO,IAAI,EAAE,wBAAwB;AACjD,OAAO,YAAY,eAAe;AAKlC,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAEhB,mBAAmB,EACnB,kBAAkB,EAEnB,oBAAgB;
|
|
1
|
+
{"version":3,"file":"SignatureController.d.cts","sourceRoot":"","sources":["../src/SignatureController.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,6 +51,10 @@ export type SignatureControllerOptions = {
|
|
|
51
51
|
* @deprecated No longer in use.
|
|
52
52
|
*/
|
|
53
53
|
securityProviderRequest?: (requestData: any, methodName: string) => Promise<any>;
|
|
54
|
+
/**
|
|
55
|
+
* URL of API to retrieve decoding data for typed requests.
|
|
56
|
+
*/
|
|
57
|
+
decodingApiUrl?: string;
|
|
54
58
|
/**
|
|
55
59
|
* Initial state of the controller.
|
|
56
60
|
*/
|
|
@@ -73,8 +77,9 @@ export declare class SignatureController extends BaseController<typeof controlle
|
|
|
73
77
|
* @param options.messenger - The restricted controller messenger for the sign controller.
|
|
74
78
|
* @param options.state - Initial state to set on this controller.
|
|
75
79
|
* @param options.trace - Callback to generate trace information.
|
|
80
|
+
* @param options.decodingApiUrl - Api used to get decoded data for permits.
|
|
76
81
|
*/
|
|
77
|
-
constructor({ messenger, state, trace }: SignatureControllerOptions);
|
|
82
|
+
constructor({ decodingApiUrl, messenger, state, trace, }: SignatureControllerOptions);
|
|
78
83
|
/**
|
|
79
84
|
* A getter for the number of 'unapproved' PersonalMessages in this.messages.
|
|
80
85
|
* @deprecated Use `signatureRequests` state instead.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignatureController.d.mts","sourceRoot":"","sources":["../src/SignatureController.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EACV,kBAAkB,EAGnB,sCAAsC;AACvC,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAC1B,6BAA6B,EAC9B,kCAAkC;AACnC,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,mCAAmC;AAM9E,OAAO,KAAK,EACV,kCAAkC,EAClC,0CAA0C,EAC1C,uCAAuC,EACxC,qCAAqC;AAEtC,OAAO,EAIL,KAAK,MAAM,EACZ,qCAAqC;AACtC,OAAO,KAAK,EAAE,2CAA2C,EAAE,qCAAqC;AAChG,OAAO,KAAK,EAAO,IAAI,EAAE,wBAAwB;AACjD,OAAO,YAAY,eAAe;AAKlC,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAEhB,mBAAmB,EACnB,kBAAkB,EAEnB,oBAAgB;
|
|
1
|
+
{"version":3,"file":"SignatureController.d.mts","sourceRoot":"","sources":["../src/SignatureController.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
9
9
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
10
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
11
|
};
|
|
12
|
-
var _SignatureController_instances, _SignatureController_trace, _SignatureController_parseTypedData, _SignatureController_processSignatureRequest, _SignatureController_addMetadata, _SignatureController_processApproval, _SignatureController_approveAndSignRequest, _SignatureController_signRequest, _SignatureController_errorSignatureRequest, _SignatureController_rejectSignatureRequest, _SignatureController_waitForFinished, _SignatureController_requestApproval, _SignatureController_updateMetadata, _SignatureController_updateState, _SignatureController_generateLegacyState, _SignatureController_addLog, _SignatureController_getSignTypeForLogger, _SignatureController_getChainId;
|
|
12
|
+
var _SignatureController_instances, _SignatureController_decodingApiUrl, _SignatureController_trace, _SignatureController_parseTypedData, _SignatureController_processSignatureRequest, _SignatureController_addMetadata, _SignatureController_processApproval, _SignatureController_approveAndSignRequest, _SignatureController_signRequest, _SignatureController_errorSignatureRequest, _SignatureController_rejectSignatureRequest, _SignatureController_waitForFinished, _SignatureController_requestApproval, _SignatureController_updateMetadata, _SignatureController_updateState, _SignatureController_generateLegacyState, _SignatureController_addLog, _SignatureController_getSignTypeForLogger, _SignatureController_getChainId, _SignatureController_decodePermitSignatureRequest;
|
|
13
13
|
import { BaseController } from "@metamask/base-controller";
|
|
14
14
|
import { ApprovalType, detectSIWE, ORIGIN_METAMASK } from "@metamask/controller-utils";
|
|
15
15
|
import { SignTypedDataVersion } from "@metamask/keyring-controller";
|
|
@@ -18,6 +18,7 @@ import EventEmitter from "events";
|
|
|
18
18
|
import { v1 as random } from "uuid";
|
|
19
19
|
import { projectLogger as log } from "./logger.mjs";
|
|
20
20
|
import { SignatureRequestStatus, SignatureRequestType } from "./types.mjs";
|
|
21
|
+
import { DECODING_API_ERRORS, decodeSignature } from "./utils/decoding-api.mjs";
|
|
21
22
|
import { normalizePersonalMessageParams, normalizeTypedMessageParams } from "./utils/normalize.mjs";
|
|
22
23
|
import { validatePersonalSignatureRequest, validateTypedSignatureRequest } from "./utils/validation.mjs";
|
|
23
24
|
const controllerName = 'SignatureController';
|
|
@@ -52,8 +53,9 @@ export class SignatureController extends BaseController {
|
|
|
52
53
|
* @param options.messenger - The restricted controller messenger for the sign controller.
|
|
53
54
|
* @param options.state - Initial state to set on this controller.
|
|
54
55
|
* @param options.trace - Callback to generate trace information.
|
|
56
|
+
* @param options.decodingApiUrl - Api used to get decoded data for permits.
|
|
55
57
|
*/
|
|
56
|
-
constructor({ messenger, state, trace }) {
|
|
58
|
+
constructor({ decodingApiUrl, messenger, state, trace, }) {
|
|
57
59
|
super({
|
|
58
60
|
name: controllerName,
|
|
59
61
|
metadata: stateMetadata,
|
|
@@ -64,9 +66,11 @@ export class SignatureController extends BaseController {
|
|
|
64
66
|
},
|
|
65
67
|
});
|
|
66
68
|
_SignatureController_instances.add(this);
|
|
69
|
+
_SignatureController_decodingApiUrl.set(this, void 0);
|
|
67
70
|
_SignatureController_trace.set(this, void 0);
|
|
68
71
|
this.hub = new EventEmitter();
|
|
69
72
|
__classPrivateFieldSet(this, _SignatureController_trace, trace ?? ((_request, fn) => fn?.()), "f");
|
|
73
|
+
__classPrivateFieldSet(this, _SignatureController_decodingApiUrl, decodingApiUrl, "f");
|
|
70
74
|
}
|
|
71
75
|
/**
|
|
72
76
|
* A getter for the number of 'unapproved' PersonalMessages in this.messages.
|
|
@@ -222,7 +226,7 @@ export class SignatureController extends BaseController {
|
|
|
222
226
|
this.setTypedMessageInProgress(signatureRequestId);
|
|
223
227
|
}
|
|
224
228
|
}
|
|
225
|
-
_SignatureController_trace = new WeakMap(), _SignatureController_instances = new WeakSet(), _SignatureController_parseTypedData = function _SignatureController_parseTypedData(messageParams, version) {
|
|
229
|
+
_SignatureController_decodingApiUrl = new WeakMap(), _SignatureController_trace = new WeakMap(), _SignatureController_instances = new WeakSet(), _SignatureController_parseTypedData = function _SignatureController_parseTypedData(messageParams, version) {
|
|
226
230
|
if (![SignTypedDataVersion.V3, SignTypedDataVersion.V4].includes(version) ||
|
|
227
231
|
typeof messageParams.data !== 'string') {
|
|
228
232
|
return messageParams;
|
|
@@ -251,6 +255,7 @@ _SignatureController_trace = new WeakMap(), _SignatureController_instances = new
|
|
|
251
255
|
let resultCallbacks;
|
|
252
256
|
let approveOrSignError;
|
|
253
257
|
const finalMetadataPromise = __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_waitForFinished).call(this, metadata.id);
|
|
258
|
+
__classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_decodePermitSignatureRequest).call(this, metadata.id, request, chainId);
|
|
254
259
|
try {
|
|
255
260
|
resultCallbacks = await __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_processApproval).call(this, {
|
|
256
261
|
approvalType,
|
|
@@ -489,5 +494,24 @@ _SignatureController_trace = new WeakMap(), _SignatureController_instances = new
|
|
|
489
494
|
}
|
|
490
495
|
const networkClient = this.messagingSystem.call('NetworkController:getNetworkClientById', networkClientId);
|
|
491
496
|
return networkClient.configuration.chainId;
|
|
497
|
+
}, _SignatureController_decodePermitSignatureRequest = function _SignatureController_decodePermitSignatureRequest(signatureRequestId, request, chainId) {
|
|
498
|
+
__classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_updateMetadata).call(this, signatureRequestId, (draftMetadata) => {
|
|
499
|
+
draftMetadata.decodingLoading = true;
|
|
500
|
+
});
|
|
501
|
+
decodeSignature(request, chainId, __classPrivateFieldGet(this, _SignatureController_decodingApiUrl, "f"))
|
|
502
|
+
.then((decodingData) => __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_updateMetadata).call(this, signatureRequestId, (draftMetadata) => {
|
|
503
|
+
draftMetadata.decodingData = decodingData;
|
|
504
|
+
draftMetadata.decodingLoading = false;
|
|
505
|
+
}))
|
|
506
|
+
.catch((error) => __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_updateMetadata).call(this, signatureRequestId, (draftMetadata) => {
|
|
507
|
+
draftMetadata.decodingData = {
|
|
508
|
+
stateChanges: null,
|
|
509
|
+
error: {
|
|
510
|
+
message: error.message,
|
|
511
|
+
type: DECODING_API_ERRORS.DECODING_FAILED_WITH_ERROR,
|
|
512
|
+
},
|
|
513
|
+
};
|
|
514
|
+
draftMetadata.decodingLoading = false;
|
|
515
|
+
}));
|
|
492
516
|
};
|
|
493
517
|
//# sourceMappingURL=SignatureController.mjs.map
|