@metamask-previews/signature-controller 6.0.0-preview.56ca173 → 6.1.2-preview.26b130a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [6.1.2]
|
|
10
|
+
### Changed
|
|
11
|
+
- Bump dependency on `@metamask/utils` to ^8.1.0 ([#1639](https://github.com/MetaMask/core/pull/1639))
|
|
12
|
+
- Bump dependency and peer dependency on `@metamask/approval-controller` to ^4.0.0
|
|
13
|
+
- Bump dependency on `@metamask/base-controller` to ^3.2.3
|
|
14
|
+
- Bump dependency on `@metamask/controller-utils` to 5.0.2
|
|
15
|
+
- Bump dependency on `@metamask/message-manager` to ^7.3.5
|
|
16
|
+
|
|
17
|
+
## [6.1.1]
|
|
18
|
+
### Changed
|
|
19
|
+
- Update TypeScript to v4.8.x ([#1718](https://github.com/MetaMask/core/pull/1718))
|
|
20
|
+
|
|
21
|
+
## [6.1.0]
|
|
22
|
+
### Changed
|
|
23
|
+
- Add `LoggingController` logs on signature operation stages ([#1692](https://github.com/MetaMask/core/pull/1692))
|
|
24
|
+
- Bump dependency on `@metamask/controller-utils` to ^5.0.0
|
|
25
|
+
- Bump dependency on `@metamask/keyring-controller` to ^8.0.0
|
|
26
|
+
- Bump dependency on `@metamask/logging-controller` to ^1.0.2
|
|
27
|
+
- Bump dependency on `@metamask/message-manager` to ^7.3.3
|
|
28
|
+
|
|
9
29
|
## [6.0.0]
|
|
10
30
|
### Changed
|
|
11
31
|
- **BREAKING**: Removed `keyringController` property from constructor option ([#1593](https://github.com/MetaMask/core/pull/1593))
|
|
@@ -70,7 +90,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
70
90
|
### Added
|
|
71
91
|
- Initial release ([#1214](https://github.com/MetaMask/core/pull/1214))
|
|
72
92
|
|
|
73
|
-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@6.
|
|
93
|
+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@6.1.2...HEAD
|
|
94
|
+
[6.1.2]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@6.1.1...@metamask/signature-controller@6.1.2
|
|
95
|
+
[6.1.1]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@6.1.0...@metamask/signature-controller@6.1.1
|
|
96
|
+
[6.1.0]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@6.0.0...@metamask/signature-controller@6.1.0
|
|
74
97
|
[6.0.0]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@5.3.1...@metamask/signature-controller@6.0.0
|
|
75
98
|
[5.3.1]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@5.3.0...@metamask/signature-controller@5.3.1
|
|
76
99
|
[5.3.0]: https://github.com/MetaMask/core/compare/@metamask/signature-controller@5.2.0...@metamask/signature-controller@5.3.0
|
|
@@ -3,6 +3,7 @@ import type { AddApprovalRequest } from '@metamask/approval-controller';
|
|
|
3
3
|
import type { RestrictedControllerMessenger } from '@metamask/base-controller';
|
|
4
4
|
import { BaseControllerV2 } from '@metamask/base-controller';
|
|
5
5
|
import type { KeyringControllerSignMessageAction, KeyringControllerSignPersonalMessageAction, KeyringControllerSignTypedMessageAction } from '@metamask/keyring-controller';
|
|
6
|
+
import type { AddLog } from '@metamask/logging-controller';
|
|
6
7
|
import type { MessageParams, PersonalMessageParams, TypedMessageParams, AbstractMessage, AbstractMessageParams, OriginalRequest, TypedMessage, PersonalMessage, Message } from '@metamask/message-manager';
|
|
7
8
|
import type { Hex, Json } from '@metamask/utils';
|
|
8
9
|
import EventEmitter from 'events';
|
|
@@ -19,7 +20,7 @@ declare type SignatureControllerState = {
|
|
|
19
20
|
unapprovedPersonalMsgCount: number;
|
|
20
21
|
unapprovedTypedMessagesCount: number;
|
|
21
22
|
};
|
|
22
|
-
declare type AllowedActions = AddApprovalRequest | KeyringControllerSignMessageAction | KeyringControllerSignPersonalMessageAction | KeyringControllerSignTypedMessageAction;
|
|
23
|
+
declare type AllowedActions = AddApprovalRequest | KeyringControllerSignMessageAction | KeyringControllerSignPersonalMessageAction | KeyringControllerSignTypedMessageAction | AddLog;
|
|
23
24
|
declare type TypedMessageSigningOptions = {
|
|
24
25
|
parseJsonData: boolean;
|
|
25
26
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignatureController.d.ts","sourceRoot":"","sources":["../src/SignatureController.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EACV,kBAAkB,EAGnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,KAAK,EACV,kCAAkC,EAClC,0CAA0C,EAC1C,uCAAuC,EAExC,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"SignatureController.d.ts","sourceRoot":"","sources":["../src/SignatureController.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,11 +33,12 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
33
33
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
34
34
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
35
35
|
};
|
|
36
|
-
var _SignatureController_instances, _SignatureController_isEthSignEnabled, _SignatureController_getAllState, _SignatureController_messageManager, _SignatureController_personalMessageManager, _SignatureController_typedMessageManager, _SignatureController_validateUnsignedMessage, _SignatureController_newUnsignedAbstractMessage, _SignatureController_signMessage, _SignatureController_signPersonalMessage, _SignatureController_signTypedMessage, _SignatureController_tryForEachMessageManager, _SignatureController_trySetDeferredSignSuccess, _SignatureController_trySetMessageMetadata, _SignatureController_trySetDeferredSignError, _SignatureController_rejectUnapproved, _SignatureController_clearUnapproved, _SignatureController_signAbstractMessage, _SignatureController_errorMessage, _SignatureController_cancelAbstractMessage, _SignatureController_handleMessageManagerEvents, _SignatureController_subscribeToMessageState, _SignatureController_migrateMessages, _SignatureController_migrateMessage, _SignatureController_normalizeMsgData, _SignatureController_getMessage, _SignatureController_requestApproval, _SignatureController_removeJsonData;
|
|
36
|
+
var _SignatureController_instances, _SignatureController_isEthSignEnabled, _SignatureController_getAllState, _SignatureController_messageManager, _SignatureController_personalMessageManager, _SignatureController_typedMessageManager, _SignatureController_validateUnsignedMessage, _SignatureController_newUnsignedAbstractMessage, _SignatureController_signMessage, _SignatureController_signPersonalMessage, _SignatureController_signTypedMessage, _SignatureController_tryForEachMessageManager, _SignatureController_trySetDeferredSignSuccess, _SignatureController_trySetMessageMetadata, _SignatureController_trySetDeferredSignError, _SignatureController_rejectUnapproved, _SignatureController_clearUnapproved, _SignatureController_signAbstractMessage, _SignatureController_errorMessage, _SignatureController_cancelAbstractMessage, _SignatureController_handleMessageManagerEvents, _SignatureController_subscribeToMessageState, _SignatureController_migrateMessages, _SignatureController_migrateMessage, _SignatureController_normalizeMsgData, _SignatureController_getMessage, _SignatureController_requestApproval, _SignatureController_removeJsonData, _SignatureController_addLog, _SignatureController_getSignTypeForLogger;
|
|
37
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
38
|
exports.SignatureController = void 0;
|
|
39
39
|
const base_controller_1 = require("@metamask/base-controller");
|
|
40
40
|
const controller_utils_1 = require("@metamask/controller-utils");
|
|
41
|
+
const logging_controller_1 = require("@metamask/logging-controller");
|
|
41
42
|
const message_manager_1 = require("@metamask/message-manager");
|
|
42
43
|
const eth_rpc_errors_1 = require("eth-rpc-errors");
|
|
43
44
|
const ethereumjs_util_1 = require("ethereumjs-util");
|
|
@@ -186,7 +187,7 @@ class SignatureController extends base_controller_1.BaseControllerV2 {
|
|
|
186
187
|
*/
|
|
187
188
|
newUnsignedMessage(messageParams, req) {
|
|
188
189
|
return __awaiter(this, void 0, void 0, function* () {
|
|
189
|
-
return __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_newUnsignedAbstractMessage).call(this, __classPrivateFieldGet(this, _SignatureController_messageManager, "f"), controller_utils_1.ApprovalType.EthSign, 'Message', __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_signMessage).bind(this), messageParams, req, __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_validateUnsignedMessage).bind(this));
|
|
190
|
+
return __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_newUnsignedAbstractMessage).call(this, __classPrivateFieldGet(this, _SignatureController_messageManager, "f"), controller_utils_1.ApprovalType.EthSign, logging_controller_1.SigningMethod.EthSign, 'Message', __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_signMessage).bind(this), messageParams, req, __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_validateUnsignedMessage).bind(this));
|
|
190
191
|
});
|
|
191
192
|
}
|
|
192
193
|
/**
|
|
@@ -202,7 +203,7 @@ class SignatureController extends base_controller_1.BaseControllerV2 {
|
|
|
202
203
|
*/
|
|
203
204
|
newUnsignedPersonalMessage(messageParams, req) {
|
|
204
205
|
return __awaiter(this, void 0, void 0, function* () {
|
|
205
|
-
return __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_newUnsignedAbstractMessage).call(this, __classPrivateFieldGet(this, _SignatureController_personalMessageManager, "f"), controller_utils_1.ApprovalType.PersonalSign, 'Personal Message', __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_signPersonalMessage).bind(this), messageParams, req);
|
|
206
|
+
return __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_newUnsignedAbstractMessage).call(this, __classPrivateFieldGet(this, _SignatureController_personalMessageManager, "f"), controller_utils_1.ApprovalType.PersonalSign, logging_controller_1.SigningMethod.PersonalSign, 'Personal Message', __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_signPersonalMessage).bind(this), messageParams, req);
|
|
206
207
|
});
|
|
207
208
|
}
|
|
208
209
|
/**
|
|
@@ -217,7 +218,8 @@ class SignatureController extends base_controller_1.BaseControllerV2 {
|
|
|
217
218
|
*/
|
|
218
219
|
newUnsignedTypedMessage(messageParams, req, version, signingOpts) {
|
|
219
220
|
return __awaiter(this, void 0, void 0, function* () {
|
|
220
|
-
|
|
221
|
+
const signTypeForLogger = __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_getSignTypeForLogger).call(this, version);
|
|
222
|
+
return __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_newUnsignedAbstractMessage).call(this, __classPrivateFieldGet(this, _SignatureController_typedMessageManager, "f"), controller_utils_1.ApprovalType.EthSignTypedData, signTypeForLogger, 'Typed Message', __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_signTypedMessage).bind(this), messageParams, req, undefined, version, signingOpts);
|
|
221
223
|
});
|
|
222
224
|
}
|
|
223
225
|
/**
|
|
@@ -265,7 +267,7 @@ _SignatureController_isEthSignEnabled = new WeakMap(), _SignatureController_getA
|
|
|
265
267
|
if (data.length !== 66 && data.length !== 67) {
|
|
266
268
|
throw eth_rpc_errors_1.ethErrors.rpc.invalidParams('eth_sign requires 32 byte message hash');
|
|
267
269
|
}
|
|
268
|
-
}, _SignatureController_newUnsignedAbstractMessage = function _SignatureController_newUnsignedAbstractMessage(messageManager, approvalType, messageName, signMessage, messageParams, req, validateMessage, version, signingOpts) {
|
|
270
|
+
}, _SignatureController_newUnsignedAbstractMessage = function _SignatureController_newUnsignedAbstractMessage(messageManager, approvalType, signTypeForLogger, messageName, signMessage, messageParams, req, validateMessage, version, signingOpts) {
|
|
269
271
|
return __awaiter(this, void 0, void 0, function* () {
|
|
270
272
|
if (validateMessage) {
|
|
271
273
|
validateMessage(messageParams);
|
|
@@ -276,15 +278,21 @@ _SignatureController_isEthSignEnabled = new WeakMap(), _SignatureController_getA
|
|
|
276
278
|
const messageParamsWithId = Object.assign(Object.assign(Object.assign({}, messageParams), { metamaskId: messageId }), (version && { version }));
|
|
277
279
|
const signaturePromise = messageManager.waitForFinishStatus(messageParamsWithId, messageName);
|
|
278
280
|
try {
|
|
281
|
+
// Signature request is proposed to the user
|
|
282
|
+
__classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_addLog).call(this, signTypeForLogger, logging_controller_1.SigningStage.Proposed, messageParamsWithId);
|
|
279
283
|
const acceptResult = yield __classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_requestApproval).call(this, messageParamsWithId, approvalType);
|
|
280
284
|
resultCallbacks = acceptResult.resultCallbacks;
|
|
281
285
|
}
|
|
282
286
|
catch (_a) {
|
|
287
|
+
// User rejected the signature request
|
|
288
|
+
__classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_addLog).call(this, signTypeForLogger, logging_controller_1.SigningStage.Rejected, messageParamsWithId);
|
|
283
289
|
__classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_cancelAbstractMessage).call(this, messageManager, messageId);
|
|
284
290
|
throw eth_rpc_errors_1.ethErrors.provider.userRejectedRequest('User rejected the request.');
|
|
285
291
|
}
|
|
286
292
|
yield signMessage(messageParamsWithId, signingOpts);
|
|
287
293
|
const signatureResult = yield signaturePromise;
|
|
294
|
+
// Signature operation is completed
|
|
295
|
+
__classPrivateFieldGet(this, _SignatureController_instances, "m", _SignatureController_addLog).call(this, signTypeForLogger, logging_controller_1.SigningStage.Signed, messageParamsWithId);
|
|
288
296
|
/* istanbul ignore next */
|
|
289
297
|
resultCallbacks === null || resultCallbacks === void 0 ? void 0 : resultCallbacks.success(signatureResult);
|
|
290
298
|
return signatureResult;
|
|
@@ -459,5 +467,23 @@ opts = { parseJsonData: true }) {
|
|
|
459
467
|
return messageParams;
|
|
460
468
|
}
|
|
461
469
|
return Object.assign(Object.assign({}, messageParams), { data: JSON.parse(messageParams.data) });
|
|
470
|
+
}, _SignatureController_addLog = function _SignatureController_addLog(signingMethod, stage, signingData) {
|
|
471
|
+
this.messagingSystem.call('LoggingController:add', {
|
|
472
|
+
type: logging_controller_1.LogType.EthSignLog,
|
|
473
|
+
data: {
|
|
474
|
+
signingMethod,
|
|
475
|
+
stage,
|
|
476
|
+
signingData,
|
|
477
|
+
},
|
|
478
|
+
});
|
|
479
|
+
}, _SignatureController_getSignTypeForLogger = function _SignatureController_getSignTypeForLogger(version) {
|
|
480
|
+
let signTypeForLogger = logging_controller_1.SigningMethod.EthSignTypedData;
|
|
481
|
+
if (version === 'V3') {
|
|
482
|
+
signTypeForLogger = logging_controller_1.SigningMethod.EthSignTypedDataV3;
|
|
483
|
+
}
|
|
484
|
+
else if (version === 'V4') {
|
|
485
|
+
signTypeForLogger = logging_controller_1.SigningMethod.EthSignTypedDataV4;
|
|
486
|
+
}
|
|
487
|
+
return signTypeForLogger;
|
|
462
488
|
};
|
|
463
489
|
//# sourceMappingURL=SignatureController.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignatureController.js","sourceRoot":"","sources":["../src/SignatureController.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n AddApprovalRequest,\n AcceptResultCallbacks,\n AddResult,\n} from '@metamask/approval-controller';\nimport type { RestrictedControllerMessenger } from '@metamask/base-controller';\nimport { BaseControllerV2 } from '@metamask/base-controller';\nimport { ApprovalType, ORIGIN_METAMASK } from '@metamask/controller-utils';\nimport type {\n KeyringControllerSignMessageAction,\n KeyringControllerSignPersonalMessageAction,\n KeyringControllerSignTypedMessageAction,\n SignTypedDataVersion,\n} from '@metamask/keyring-controller';\nimport type {\n MessageParams,\n MessageParamsMetamask,\n PersonalMessageParams,\n PersonalMessageParamsMetamask,\n TypedMessageParams,\n TypedMessageParamsMetamask,\n AbstractMessageManager,\n AbstractMessage,\n MessageManagerState,\n AbstractMessageParams,\n AbstractMessageParamsMetamask,\n OriginalRequest,\n TypedMessage,\n PersonalMessage,\n Message,\n} from '@metamask/message-manager';\nimport {\n MessageManager,\n PersonalMessageManager,\n TypedMessageManager,\n} from '@metamask/message-manager';\nimport type { Hex, Json } from '@metamask/utils';\nimport { ethErrors } from 'eth-rpc-errors';\nimport { bufferToHex } from 'ethereumjs-util';\nimport EventEmitter from 'events';\nimport type { Patch } from 'immer';\nimport { cloneDeep } from 'lodash';\n\nconst controllerName = 'SignatureController';\n\nconst stateMetadata = {\n unapprovedMsgs: { persist: false, anonymous: false },\n unapprovedPersonalMsgs: { persist: false, anonymous: false },\n unapprovedTypedMessages: { persist: false, anonymous: false },\n unapprovedMsgCount: { persist: false, anonymous: false },\n unapprovedPersonalMsgCount: { persist: false, anonymous: false },\n unapprovedTypedMessagesCount: { persist: false, anonymous: false },\n};\n\nconst getDefaultState = () => ({\n unapprovedMsgs: {},\n unapprovedPersonalMsgs: {},\n unapprovedTypedMessages: {},\n unapprovedMsgCount: 0,\n unapprovedPersonalMsgCount: 0,\n unapprovedTypedMessagesCount: 0,\n});\n\ntype CoreMessage = AbstractMessage & {\n messageParams: AbstractMessageParams;\n};\n\ntype StateMessage = Required<AbstractMessage> & {\n msgParams: Required<AbstractMessageParams>;\n};\n\ntype SignatureControllerState = {\n unapprovedMsgs: Record<string, StateMessage>;\n unapprovedPersonalMsgs: Record<string, StateMessage>;\n unapprovedTypedMessages: Record<string, StateMessage>;\n unapprovedMsgCount: number;\n unapprovedPersonalMsgCount: number;\n unapprovedTypedMessagesCount: number;\n};\n\ntype AllowedActions =\n | AddApprovalRequest\n | KeyringControllerSignMessageAction\n | KeyringControllerSignPersonalMessageAction\n | KeyringControllerSignTypedMessageAction;\n\ntype TypedMessageSigningOptions = {\n parseJsonData: boolean;\n};\n\nexport type GetSignatureState = {\n type: `${typeof controllerName}:getState`;\n handler: () => SignatureControllerState;\n};\n\nexport type SignatureStateChange = {\n type: `${typeof controllerName}:stateChange`;\n payload: [SignatureControllerState, Patch[]];\n};\n\nexport type SignatureControllerActions = GetSignatureState;\n\nexport type SignatureControllerEvents = SignatureStateChange;\n\nexport type SignatureControllerMessenger = RestrictedControllerMessenger<\n typeof controllerName,\n SignatureControllerActions | AllowedActions,\n SignatureControllerEvents,\n AllowedActions['type'],\n never\n>;\n\nexport type SignatureControllerOptions = {\n messenger: SignatureControllerMessenger;\n isEthSignEnabled: () => boolean;\n getAllState: () => unknown;\n securityProviderRequest?: (\n requestData: any,\n methodName: string,\n ) => Promise<any>;\n getCurrentChainId: () => Hex;\n};\n\n/**\n * Controller for creating signing requests requiring user approval.\n */\nexport class SignatureController extends BaseControllerV2<\n typeof controllerName,\n SignatureControllerState,\n SignatureControllerMessenger\n> {\n hub: EventEmitter;\n\n #isEthSignEnabled: () => boolean;\n\n #getAllState: () => any;\n\n #messageManager: MessageManager;\n\n #personalMessageManager: PersonalMessageManager;\n\n #typedMessageManager: TypedMessageManager;\n\n /**\n * Construct a Sign controller.\n *\n * @param options - The controller options.\n * @param options.messenger - The restricted controller messenger for the sign controller.\n * @param options.isEthSignEnabled - Callback to return true if eth_sign is enabled.\n * @param options.getAllState - Callback to retrieve all user state.\n * @param options.securityProviderRequest - A function for verifying a message, whether it is malicious or not.\n * @param options.getCurrentChainId - A function for retrieving the current chainId.\n */\n constructor({\n messenger,\n isEthSignEnabled,\n getAllState,\n securityProviderRequest,\n getCurrentChainId,\n }: SignatureControllerOptions) {\n super({\n name: controllerName,\n metadata: stateMetadata,\n messenger,\n state: getDefaultState(),\n });\n\n this.#isEthSignEnabled = isEthSignEnabled;\n this.#getAllState = getAllState;\n\n this.hub = new EventEmitter();\n this.#messageManager = new MessageManager(\n undefined,\n undefined,\n securityProviderRequest,\n );\n this.#personalMessageManager = new PersonalMessageManager(\n undefined,\n undefined,\n securityProviderRequest,\n );\n this.#typedMessageManager = new TypedMessageManager(\n undefined,\n undefined,\n securityProviderRequest,\n undefined,\n getCurrentChainId,\n );\n\n this.#handleMessageManagerEvents(this.#messageManager, 'unapprovedMessage');\n this.#handleMessageManagerEvents(\n this.#personalMessageManager,\n 'unapprovedPersonalMessage',\n );\n this.#handleMessageManagerEvents(\n this.#typedMessageManager,\n 'unapprovedTypedMessage',\n );\n\n this.#subscribeToMessageState(\n this.#messageManager,\n (state, newMessages, messageCount) => {\n state.unapprovedMsgs = newMessages;\n state.unapprovedMsgCount = messageCount;\n },\n );\n\n this.#subscribeToMessageState(\n this.#personalMessageManager,\n (state, newMessages, messageCount) => {\n state.unapprovedPersonalMsgs = newMessages;\n state.unapprovedPersonalMsgCount = messageCount;\n },\n );\n\n this.#subscribeToMessageState(\n this.#typedMessageManager,\n (state, newMessages, messageCount) => {\n state.unapprovedTypedMessages = newMessages;\n state.unapprovedTypedMessagesCount = messageCount;\n },\n );\n }\n\n /**\n * A getter for the number of 'unapproved' Messages in this.messages.\n *\n * @returns The number of 'unapproved' Messages in this.messages\n */\n get unapprovedMsgCount(): number {\n return this.#messageManager.getUnapprovedMessagesCount();\n }\n\n /**\n * A getter for the number of 'unapproved' PersonalMessages in this.messages.\n *\n * @returns The number of 'unapproved' PersonalMessages in this.messages\n */\n get unapprovedPersonalMessagesCount(): number {\n return this.#personalMessageManager.getUnapprovedMessagesCount();\n }\n\n /**\n * A getter for the number of 'unapproved' TypedMessages in this.messages.\n *\n * @returns The number of 'unapproved' TypedMessages in this.messages\n */\n get unapprovedTypedMessagesCount(): number {\n return this.#typedMessageManager.getUnapprovedMessagesCount();\n }\n\n /**\n * A getter for returning all messages.\n *\n * @returns The object containing all messages.\n */\n get messages(): { [id: string]: Message | PersonalMessage | TypedMessage } {\n const messages = [\n ...this.#typedMessageManager.getAllMessages(),\n ...this.#personalMessageManager.getAllMessages(),\n ...this.#messageManager.getAllMessages(),\n ];\n\n const messagesObject = messages.reduce<{\n [id: string]: Message | PersonalMessage | TypedMessage;\n }>((acc, message) => {\n acc[message.id] = message;\n return acc;\n }, {});\n\n return messagesObject;\n }\n\n /**\n * Reset the controller state to the initial state.\n */\n resetState() {\n this.update(() => getDefaultState());\n }\n\n /**\n * Reject all unapproved messages of any type.\n *\n * @param reason - A message to indicate why.\n */\n rejectUnapproved(reason?: string) {\n this.#rejectUnapproved(this.#messageManager, reason);\n this.#rejectUnapproved(this.#personalMessageManager, reason);\n this.#rejectUnapproved(this.#typedMessageManager, reason);\n }\n\n /**\n * Clears all unapproved messages from memory.\n */\n clearUnapproved() {\n this.#clearUnapproved(this.#messageManager);\n this.#clearUnapproved(this.#personalMessageManager);\n this.#clearUnapproved(this.#typedMessageManager);\n }\n\n /**\n * Called when a Dapp uses the eth_sign method, to request user approval.\n * eth_sign is a pure signature of arbitrary data. It is on a deprecation\n * path, since this data can be a transaction, or can leak private key\n * information.\n *\n * @param messageParams - The params passed to eth_sign.\n * @param [req] - The original request, containing the origin.\n * @returns Promise resolving to the raw data of the signature request.\n */\n async newUnsignedMessage(\n messageParams: MessageParams,\n req: OriginalRequest,\n ): Promise<string> {\n return this.#newUnsignedAbstractMessage(\n this.#messageManager,\n ApprovalType.EthSign,\n 'Message',\n this.#signMessage.bind(this),\n messageParams,\n req,\n this.#validateUnsignedMessage.bind(this),\n );\n }\n\n /**\n * Called when a dapp uses the personal_sign method.\n * This is identical to the Geth eth_sign method, and may eventually replace\n * eth_sign.\n *\n * We currently define our eth_sign and personal_sign mostly for legacy Dapps.\n *\n * @param messageParams - The params of the message to sign & return to the Dapp.\n * @param req - The original request, containing the origin.\n * @returns Promise resolving to the raw data of the signature request.\n */\n async newUnsignedPersonalMessage(\n messageParams: PersonalMessageParams,\n req: OriginalRequest,\n ): Promise<string> {\n return this.#newUnsignedAbstractMessage(\n this.#personalMessageManager,\n ApprovalType.PersonalSign,\n 'Personal Message',\n this.#signPersonalMessage.bind(this),\n messageParams,\n req,\n );\n }\n\n /**\n * Called when a dapp uses the eth_signTypedData method, per EIP 712.\n *\n * @param messageParams - The params passed to eth_signTypedData.\n * @param req - The original request, containing the origin.\n * @param version - The version indicating the format of the typed data.\n * @param signingOpts - An options bag for signing.\n * @param signingOpts.parseJsonData - Whether to parse the JSON before signing.\n * @returns Promise resolving to the raw data of the signature request.\n */\n async newUnsignedTypedMessage(\n messageParams: TypedMessageParams,\n req: OriginalRequest,\n version: string,\n signingOpts: TypedMessageSigningOptions,\n ): Promise<string> {\n return this.#newUnsignedAbstractMessage(\n this.#typedMessageManager,\n ApprovalType.EthSignTypedData,\n 'Typed Message',\n this.#signTypedMessage.bind(this),\n messageParams,\n req,\n undefined,\n version,\n signingOpts,\n );\n }\n\n /**\n * Called to update the message status as signed.\n *\n * @param messageId - The id of the Message to update.\n * @param signature - The data to update the message with.\n */\n setDeferredSignSuccess(messageId: string, signature: any) {\n this.#tryForEachMessageManager(\n this.#trySetDeferredSignSuccess,\n messageId,\n signature,\n );\n }\n\n /**\n * Called when the message metadata needs to be updated.\n *\n * @param messageId - The id of the message to update.\n * @param metadata - The data to update the metadata property in the message.\n */\n setMessageMetadata(messageId: string, metadata: Json) {\n this.#tryForEachMessageManager(\n this.#trySetMessageMetadata,\n messageId,\n metadata,\n );\n }\n\n /**\n * Called to cancel a signing message.\n *\n * @param messageId - The id of the Message to update.\n */\n setDeferredSignError(messageId: string) {\n this.#tryForEachMessageManager(this.#trySetDeferredSignError, messageId);\n }\n\n setTypedMessageInProgress(messageId: string) {\n this.#typedMessageManager.setMessageStatusInProgress(messageId);\n }\n\n setPersonalMessageInProgress(messageId: string) {\n this.#personalMessageManager.setMessageStatusInProgress(messageId);\n }\n\n #validateUnsignedMessage(messageParams: MessageParamsMetamask): void {\n if (!this.#isEthSignEnabled()) {\n throw ethErrors.rpc.methodNotFound(\n 'eth_sign has been disabled. You must enable it in the advanced settings',\n );\n }\n const data = this.#normalizeMsgData(messageParams.data);\n // 64 hex + \"0x\" at the beginning\n // This is needed because Ethereum's EcSign works only on 32 byte numbers\n // For 67 length see: https://github.com/MetaMask/metamask-extension/pull/12679/files#r749479607\n if (data.length !== 66 && data.length !== 67) {\n throw ethErrors.rpc.invalidParams(\n 'eth_sign requires 32 byte message hash',\n );\n }\n }\n\n async #newUnsignedAbstractMessage<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n SO,\n >(\n messageManager: AbstractMessageManager<M, P, PM>,\n approvalType: ApprovalType,\n messageName: string,\n signMessage: (messageParams: PM, signingOpts?: SO) => void,\n messageParams: PM,\n req: OriginalRequest,\n validateMessage?: (params: PM) => void,\n version?: string,\n signingOpts?: SO,\n ) {\n if (validateMessage) {\n validateMessage(messageParams);\n }\n\n let resultCallbacks: AcceptResultCallbacks | undefined;\n try {\n const messageId = await messageManager.addUnapprovedMessage(\n messageParams,\n req,\n version,\n );\n\n const messageParamsWithId = {\n ...messageParams,\n metamaskId: messageId,\n ...(version && { version }),\n };\n\n const signaturePromise = messageManager.waitForFinishStatus(\n messageParamsWithId,\n messageName,\n );\n\n try {\n const acceptResult = await this.#requestApproval(\n messageParamsWithId,\n approvalType,\n );\n\n resultCallbacks = acceptResult.resultCallbacks;\n } catch {\n this.#cancelAbstractMessage(messageManager, messageId);\n throw ethErrors.provider.userRejectedRequest(\n 'User rejected the request.',\n );\n }\n\n await signMessage(messageParamsWithId, signingOpts);\n\n const signatureResult = await signaturePromise;\n\n /* istanbul ignore next */\n resultCallbacks?.success(signatureResult);\n\n return signatureResult;\n } catch (error) {\n resultCallbacks?.error(error as Error);\n throw error;\n }\n }\n\n /**\n * Signifies user intent to complete an eth_sign method.\n *\n * @param msgParams - The params passed to eth_call.\n * @returns Signature result from signing.\n */\n async #signMessage(msgParams: MessageParamsMetamask) {\n return await this.#signAbstractMessage(\n this.#messageManager,\n ApprovalType.EthSign,\n msgParams,\n async (cleanMsgParams) =>\n await this.messagingSystem.call(\n 'KeyringController:signMessage',\n cleanMsgParams,\n ),\n );\n }\n\n /**\n * Signifies a user's approval to sign a personal_sign message in queue.\n * Triggers signing, and the callback function from newUnsignedPersonalMessage.\n *\n * @param msgParams - The params of the message to sign & return to the Dapp.\n * @returns Signature result from signing.\n */\n async #signPersonalMessage(msgParams: PersonalMessageParamsMetamask) {\n return await this.#signAbstractMessage(\n this.#personalMessageManager,\n ApprovalType.PersonalSign,\n msgParams,\n async (cleanMsgParams) =>\n await this.messagingSystem.call(\n 'KeyringController:signPersonalMessage',\n cleanMsgParams,\n ),\n );\n }\n\n /**\n * The method for a user approving a call to eth_signTypedData, per EIP 712.\n * Triggers the callback in newUnsignedTypedMessage.\n *\n * @param msgParams - The params passed to eth_signTypedData.\n * @param opts - The options for the method.\n * @param opts.parseJsonData - Whether to parse JSON data before calling the KeyringController.\n * @returns Signature result from signing.\n */\n async #signTypedMessage(\n msgParams: TypedMessageParamsMetamask,\n /* istanbul ignore next */\n opts = { parseJsonData: true },\n ): Promise<any> {\n const { version } = msgParams;\n return await this.#signAbstractMessage(\n this.#typedMessageManager,\n ApprovalType.EthSignTypedData,\n msgParams,\n async (cleanMsgParams) => {\n const finalMessageParams = opts.parseJsonData\n ? this.#removeJsonData(cleanMsgParams, version as string)\n : cleanMsgParams;\n\n return await this.messagingSystem.call(\n 'KeyringController:signTypedMessage',\n finalMessageParams,\n version as SignTypedDataVersion,\n );\n },\n );\n }\n\n #tryForEachMessageManager(\n callbackFn: (\n messageManager: AbstractMessageManager<any, any, any>,\n ...args: any[]\n ) => boolean,\n ...args: any\n ) {\n const messageManagers = [\n this.#messageManager,\n this.#personalMessageManager,\n this.#typedMessageManager,\n ];\n\n for (const manager of messageManagers) {\n if (callbackFn(manager, ...args)) {\n return true;\n }\n }\n throw new Error('Message not found');\n }\n\n #trySetDeferredSignSuccess(\n messageManager: AbstractMessageManager<any, any, any>,\n messageId: string,\n signature: any,\n ) {\n try {\n messageManager.setMessageStatusSigned(messageId, signature);\n return true;\n } catch (error) {\n return false;\n }\n }\n\n #trySetMessageMetadata(\n messageManager: AbstractMessageManager<any, any, any>,\n messageId: string,\n metadata: Json,\n ) {\n try {\n messageManager.setMetadata(messageId, metadata);\n return true;\n } catch (error) {\n return false;\n }\n }\n\n #trySetDeferredSignError(\n messageManager: AbstractMessageManager<any, any, any>,\n messageId: string,\n ) {\n try {\n messageManager.rejectMessage(messageId);\n return true;\n } catch (error) {\n return false;\n }\n }\n\n #rejectUnapproved<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(messageManager: AbstractMessageManager<M, P, PM>, reason?: string) {\n Object.keys(messageManager.getUnapprovedMessages()).forEach((messageId) => {\n this.#cancelAbstractMessage(messageManager, messageId, reason);\n });\n }\n\n #clearUnapproved<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(messageManager: AbstractMessageManager<M, P, PM>) {\n messageManager.update({\n unapprovedMessages: {},\n unapprovedMessagesCount: 0,\n });\n }\n\n async #signAbstractMessage<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(\n messageManager: AbstractMessageManager<M, P, PM>,\n methodName: string,\n msgParams: PM,\n getSignature: (cleanMessageParams: P) => Promise<any>,\n ) {\n console.info(`MetaMaskController - ${methodName}`);\n\n const messageId = msgParams.metamaskId as string;\n\n try {\n const cleanMessageParams = await messageManager.approveMessage(msgParams);\n\n try {\n const signature = await getSignature(cleanMessageParams);\n\n this.hub.emit(`${methodName}:signed`, { signature, messageId });\n\n if (!cleanMessageParams.deferSetAsSigned) {\n messageManager.setMessageStatusSigned(messageId, signature);\n }\n\n return signature;\n } catch (error) {\n this.hub.emit(`${messageId}:signError`, { error });\n throw error;\n }\n } catch (error: any) {\n console.info(`MetaMaskController - ${methodName} failed.`, error);\n this.#errorMessage(messageManager, messageId, error.message);\n throw error;\n }\n }\n\n #errorMessage<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(\n messageManager: AbstractMessageManager<M, P, PM>,\n messageId: string,\n error: string,\n ) {\n if (messageManager instanceof TypedMessageManager) {\n messageManager.setMessageStatusErrored(messageId, error);\n } else {\n this.#cancelAbstractMessage(messageManager, messageId);\n }\n }\n\n #cancelAbstractMessage<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(\n messageManager: AbstractMessageManager<M, P, PM>,\n messageId: string,\n reason?: string,\n ) {\n if (reason) {\n const message = this.#getMessage(messageId);\n this.hub.emit('cancelWithReason', { message, reason });\n }\n messageManager.rejectMessage(messageId);\n }\n\n #handleMessageManagerEvents<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(messageManager: AbstractMessageManager<M, P, PM>, eventName: string) {\n messageManager.hub.on('updateBadge', () => {\n this.hub.emit('updateBadge');\n });\n\n messageManager.hub.on(\n 'unapprovedMessage',\n (msgParams: AbstractMessageParamsMetamask) => {\n this.hub.emit(eventName, msgParams);\n },\n );\n }\n\n #subscribeToMessageState<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(\n messageManager: AbstractMessageManager<M, P, PM>,\n updateState: (\n state: SignatureControllerState,\n newMessages: Record<string, StateMessage>,\n messageCount: number,\n ) => void,\n ) {\n messageManager.subscribe((state: MessageManagerState<AbstractMessage>) => {\n const newMessages = this.#migrateMessages(\n state.unapprovedMessages as any,\n );\n\n this.update(() => {\n const newState = { ...this.state };\n updateState(newState, newMessages, state.unapprovedMessagesCount);\n return newState;\n });\n });\n }\n\n #migrateMessages(\n coreMessages: Record<string, CoreMessage>,\n ): Record<string, StateMessage> {\n const stateMessages: Record<string, StateMessage> = {};\n\n for (const messageId of Object.keys(coreMessages)) {\n const coreMessage = coreMessages[messageId];\n const stateMessage = this.#migrateMessage(coreMessage);\n\n stateMessages[messageId] = stateMessage;\n }\n\n return stateMessages;\n }\n\n #migrateMessage(coreMessage: CoreMessage): StateMessage {\n const { messageParams, ...coreMessageData } = coreMessage;\n\n // Core message managers use messageParams but frontend uses msgParams with lots of references\n const stateMessage = {\n ...coreMessageData,\n msgParams: messageParams,\n };\n\n return stateMessage as StateMessage;\n }\n\n #normalizeMsgData(data: string) {\n if (data.startsWith('0x')) {\n // data is already hex\n return data;\n }\n // data is unicode, convert to hex\n return bufferToHex(Buffer.from(data, 'utf8'));\n }\n\n #getMessage(messageId: string): StateMessage {\n return {\n ...this.state.unapprovedMsgs,\n ...this.state.unapprovedPersonalMsgs,\n ...this.state.unapprovedTypedMessages,\n }[messageId];\n }\n\n async #requestApproval(\n msgParams: AbstractMessageParamsMetamask,\n type: ApprovalType,\n ): Promise<AddResult> {\n const id = msgParams.metamaskId as string;\n const origin = msgParams.origin || ORIGIN_METAMASK;\n\n // We are explicitly cloning the message params here to prevent the mutation errors on development mode\n // Because sending it through the messaging system will make the object read only\n const clonedMsgParams = cloneDeep(msgParams);\n return (await this.messagingSystem.call(\n 'ApprovalController:addRequest',\n {\n id,\n origin,\n type,\n requestData: clonedMsgParams as Required<AbstractMessageParamsMetamask>,\n expectsResult: true,\n },\n true,\n )) as Promise<AddResult>;\n }\n\n #removeJsonData(\n messageParams: TypedMessageParams,\n version: string,\n ): TypedMessageParams {\n if (version === 'V1' || typeof messageParams.data !== 'string') {\n return messageParams;\n }\n\n return {\n ...messageParams,\n data: JSON.parse(messageParams.data),\n };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SignatureController.js","sourceRoot":"","sources":["../src/SignatureController.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n AddApprovalRequest,\n AcceptResultCallbacks,\n AddResult,\n} from '@metamask/approval-controller';\nimport type { RestrictedControllerMessenger } from '@metamask/base-controller';\nimport { BaseControllerV2 } from '@metamask/base-controller';\nimport { ApprovalType, ORIGIN_METAMASK } from '@metamask/controller-utils';\nimport type {\n KeyringControllerSignMessageAction,\n KeyringControllerSignPersonalMessageAction,\n KeyringControllerSignTypedMessageAction,\n SignTypedDataVersion,\n} from '@metamask/keyring-controller';\nimport {\n SigningMethod,\n SigningStage,\n LogType,\n} from '@metamask/logging-controller';\nimport type { AddLog } from '@metamask/logging-controller';\nimport type {\n MessageParams,\n MessageParamsMetamask,\n PersonalMessageParams,\n PersonalMessageParamsMetamask,\n TypedMessageParams,\n TypedMessageParamsMetamask,\n AbstractMessageManager,\n AbstractMessage,\n MessageManagerState,\n AbstractMessageParams,\n AbstractMessageParamsMetamask,\n OriginalRequest,\n TypedMessage,\n PersonalMessage,\n Message,\n} from '@metamask/message-manager';\nimport {\n MessageManager,\n PersonalMessageManager,\n TypedMessageManager,\n} from '@metamask/message-manager';\nimport type { Hex, Json } from '@metamask/utils';\nimport { ethErrors } from 'eth-rpc-errors';\nimport { bufferToHex } from 'ethereumjs-util';\nimport EventEmitter from 'events';\nimport type { Patch } from 'immer';\nimport { cloneDeep } from 'lodash';\n\nconst controllerName = 'SignatureController';\n\nconst stateMetadata = {\n unapprovedMsgs: { persist: false, anonymous: false },\n unapprovedPersonalMsgs: { persist: false, anonymous: false },\n unapprovedTypedMessages: { persist: false, anonymous: false },\n unapprovedMsgCount: { persist: false, anonymous: false },\n unapprovedPersonalMsgCount: { persist: false, anonymous: false },\n unapprovedTypedMessagesCount: { persist: false, anonymous: false },\n};\n\nconst getDefaultState = () => ({\n unapprovedMsgs: {},\n unapprovedPersonalMsgs: {},\n unapprovedTypedMessages: {},\n unapprovedMsgCount: 0,\n unapprovedPersonalMsgCount: 0,\n unapprovedTypedMessagesCount: 0,\n});\n\ntype CoreMessage = AbstractMessage & {\n messageParams: AbstractMessageParams;\n};\n\ntype StateMessage = Required<AbstractMessage> & {\n msgParams: Required<AbstractMessageParams>;\n};\n\ntype SignatureControllerState = {\n unapprovedMsgs: Record<string, StateMessage>;\n unapprovedPersonalMsgs: Record<string, StateMessage>;\n unapprovedTypedMessages: Record<string, StateMessage>;\n unapprovedMsgCount: number;\n unapprovedPersonalMsgCount: number;\n unapprovedTypedMessagesCount: number;\n};\n\ntype AllowedActions =\n | AddApprovalRequest\n | KeyringControllerSignMessageAction\n | KeyringControllerSignPersonalMessageAction\n | KeyringControllerSignTypedMessageAction\n | AddLog;\n\ntype TypedMessageSigningOptions = {\n parseJsonData: boolean;\n};\n\nexport type GetSignatureState = {\n type: `${typeof controllerName}:getState`;\n handler: () => SignatureControllerState;\n};\n\nexport type SignatureStateChange = {\n type: `${typeof controllerName}:stateChange`;\n payload: [SignatureControllerState, Patch[]];\n};\n\nexport type SignatureControllerActions = GetSignatureState;\n\nexport type SignatureControllerEvents = SignatureStateChange;\n\nexport type SignatureControllerMessenger = RestrictedControllerMessenger<\n typeof controllerName,\n SignatureControllerActions | AllowedActions,\n SignatureControllerEvents,\n AllowedActions['type'],\n never\n>;\n\nexport type SignatureControllerOptions = {\n messenger: SignatureControllerMessenger;\n isEthSignEnabled: () => boolean;\n getAllState: () => unknown;\n securityProviderRequest?: (\n requestData: any,\n methodName: string,\n ) => Promise<any>;\n getCurrentChainId: () => Hex;\n};\n\n/**\n * Controller for creating signing requests requiring user approval.\n */\nexport class SignatureController extends BaseControllerV2<\n typeof controllerName,\n SignatureControllerState,\n SignatureControllerMessenger\n> {\n hub: EventEmitter;\n\n #isEthSignEnabled: () => boolean;\n\n #getAllState: () => any;\n\n #messageManager: MessageManager;\n\n #personalMessageManager: PersonalMessageManager;\n\n #typedMessageManager: TypedMessageManager;\n\n /**\n * Construct a Sign controller.\n *\n * @param options - The controller options.\n * @param options.messenger - The restricted controller messenger for the sign controller.\n * @param options.isEthSignEnabled - Callback to return true if eth_sign is enabled.\n * @param options.getAllState - Callback to retrieve all user state.\n * @param options.securityProviderRequest - A function for verifying a message, whether it is malicious or not.\n * @param options.getCurrentChainId - A function for retrieving the current chainId.\n */\n constructor({\n messenger,\n isEthSignEnabled,\n getAllState,\n securityProviderRequest,\n getCurrentChainId,\n }: SignatureControllerOptions) {\n super({\n name: controllerName,\n metadata: stateMetadata,\n messenger,\n state: getDefaultState(),\n });\n\n this.#isEthSignEnabled = isEthSignEnabled;\n this.#getAllState = getAllState;\n\n this.hub = new EventEmitter();\n this.#messageManager = new MessageManager(\n undefined,\n undefined,\n securityProviderRequest,\n );\n this.#personalMessageManager = new PersonalMessageManager(\n undefined,\n undefined,\n securityProviderRequest,\n );\n this.#typedMessageManager = new TypedMessageManager(\n undefined,\n undefined,\n securityProviderRequest,\n undefined,\n getCurrentChainId,\n );\n\n this.#handleMessageManagerEvents(this.#messageManager, 'unapprovedMessage');\n this.#handleMessageManagerEvents(\n this.#personalMessageManager,\n 'unapprovedPersonalMessage',\n );\n this.#handleMessageManagerEvents(\n this.#typedMessageManager,\n 'unapprovedTypedMessage',\n );\n\n this.#subscribeToMessageState(\n this.#messageManager,\n (state, newMessages, messageCount) => {\n state.unapprovedMsgs = newMessages;\n state.unapprovedMsgCount = messageCount;\n },\n );\n\n this.#subscribeToMessageState(\n this.#personalMessageManager,\n (state, newMessages, messageCount) => {\n state.unapprovedPersonalMsgs = newMessages;\n state.unapprovedPersonalMsgCount = messageCount;\n },\n );\n\n this.#subscribeToMessageState(\n this.#typedMessageManager,\n (state, newMessages, messageCount) => {\n state.unapprovedTypedMessages = newMessages;\n state.unapprovedTypedMessagesCount = messageCount;\n },\n );\n }\n\n /**\n * A getter for the number of 'unapproved' Messages in this.messages.\n *\n * @returns The number of 'unapproved' Messages in this.messages\n */\n get unapprovedMsgCount(): number {\n return this.#messageManager.getUnapprovedMessagesCount();\n }\n\n /**\n * A getter for the number of 'unapproved' PersonalMessages in this.messages.\n *\n * @returns The number of 'unapproved' PersonalMessages in this.messages\n */\n get unapprovedPersonalMessagesCount(): number {\n return this.#personalMessageManager.getUnapprovedMessagesCount();\n }\n\n /**\n * A getter for the number of 'unapproved' TypedMessages in this.messages.\n *\n * @returns The number of 'unapproved' TypedMessages in this.messages\n */\n get unapprovedTypedMessagesCount(): number {\n return this.#typedMessageManager.getUnapprovedMessagesCount();\n }\n\n /**\n * A getter for returning all messages.\n *\n * @returns The object containing all messages.\n */\n get messages(): { [id: string]: Message | PersonalMessage | TypedMessage } {\n const messages = [\n ...this.#typedMessageManager.getAllMessages(),\n ...this.#personalMessageManager.getAllMessages(),\n ...this.#messageManager.getAllMessages(),\n ];\n\n const messagesObject = messages.reduce<{\n [id: string]: Message | PersonalMessage | TypedMessage;\n }>((acc, message) => {\n acc[message.id] = message;\n return acc;\n }, {});\n\n return messagesObject;\n }\n\n /**\n * Reset the controller state to the initial state.\n */\n resetState() {\n this.update(() => getDefaultState());\n }\n\n /**\n * Reject all unapproved messages of any type.\n *\n * @param reason - A message to indicate why.\n */\n rejectUnapproved(reason?: string) {\n this.#rejectUnapproved(this.#messageManager, reason);\n this.#rejectUnapproved(this.#personalMessageManager, reason);\n this.#rejectUnapproved(this.#typedMessageManager, reason);\n }\n\n /**\n * Clears all unapproved messages from memory.\n */\n clearUnapproved() {\n this.#clearUnapproved(this.#messageManager);\n this.#clearUnapproved(this.#personalMessageManager);\n this.#clearUnapproved(this.#typedMessageManager);\n }\n\n /**\n * Called when a Dapp uses the eth_sign method, to request user approval.\n * eth_sign is a pure signature of arbitrary data. It is on a deprecation\n * path, since this data can be a transaction, or can leak private key\n * information.\n *\n * @param messageParams - The params passed to eth_sign.\n * @param [req] - The original request, containing the origin.\n * @returns Promise resolving to the raw data of the signature request.\n */\n async newUnsignedMessage(\n messageParams: MessageParams,\n req: OriginalRequest,\n ): Promise<string> {\n return this.#newUnsignedAbstractMessage(\n this.#messageManager,\n ApprovalType.EthSign,\n SigningMethod.EthSign,\n 'Message',\n this.#signMessage.bind(this),\n messageParams,\n req,\n this.#validateUnsignedMessage.bind(this),\n );\n }\n\n /**\n * Called when a dapp uses the personal_sign method.\n * This is identical to the Geth eth_sign method, and may eventually replace\n * eth_sign.\n *\n * We currently define our eth_sign and personal_sign mostly for legacy Dapps.\n *\n * @param messageParams - The params of the message to sign & return to the Dapp.\n * @param req - The original request, containing the origin.\n * @returns Promise resolving to the raw data of the signature request.\n */\n async newUnsignedPersonalMessage(\n messageParams: PersonalMessageParams,\n req: OriginalRequest,\n ): Promise<string> {\n return this.#newUnsignedAbstractMessage(\n this.#personalMessageManager,\n ApprovalType.PersonalSign,\n SigningMethod.PersonalSign,\n 'Personal Message',\n this.#signPersonalMessage.bind(this),\n messageParams,\n req,\n );\n }\n\n /**\n * Called when a dapp uses the eth_signTypedData method, per EIP 712.\n *\n * @param messageParams - The params passed to eth_signTypedData.\n * @param req - The original request, containing the origin.\n * @param version - The version indicating the format of the typed data.\n * @param signingOpts - An options bag for signing.\n * @param signingOpts.parseJsonData - Whether to parse the JSON before signing.\n * @returns Promise resolving to the raw data of the signature request.\n */\n async newUnsignedTypedMessage(\n messageParams: TypedMessageParams,\n req: OriginalRequest,\n version: string,\n signingOpts: TypedMessageSigningOptions,\n ): Promise<string> {\n const signTypeForLogger = this.#getSignTypeForLogger(version);\n return this.#newUnsignedAbstractMessage(\n this.#typedMessageManager,\n ApprovalType.EthSignTypedData,\n signTypeForLogger,\n 'Typed Message',\n this.#signTypedMessage.bind(this),\n messageParams,\n req,\n undefined,\n version,\n signingOpts,\n );\n }\n\n /**\n * Called to update the message status as signed.\n *\n * @param messageId - The id of the Message to update.\n * @param signature - The data to update the message with.\n */\n setDeferredSignSuccess(messageId: string, signature: any) {\n this.#tryForEachMessageManager(\n this.#trySetDeferredSignSuccess,\n messageId,\n signature,\n );\n }\n\n /**\n * Called when the message metadata needs to be updated.\n *\n * @param messageId - The id of the message to update.\n * @param metadata - The data to update the metadata property in the message.\n */\n setMessageMetadata(messageId: string, metadata: Json) {\n this.#tryForEachMessageManager(\n this.#trySetMessageMetadata,\n messageId,\n metadata,\n );\n }\n\n /**\n * Called to cancel a signing message.\n *\n * @param messageId - The id of the Message to update.\n */\n setDeferredSignError(messageId: string) {\n this.#tryForEachMessageManager(this.#trySetDeferredSignError, messageId);\n }\n\n setTypedMessageInProgress(messageId: string) {\n this.#typedMessageManager.setMessageStatusInProgress(messageId);\n }\n\n setPersonalMessageInProgress(messageId: string) {\n this.#personalMessageManager.setMessageStatusInProgress(messageId);\n }\n\n #validateUnsignedMessage(messageParams: MessageParamsMetamask): void {\n if (!this.#isEthSignEnabled()) {\n throw ethErrors.rpc.methodNotFound(\n 'eth_sign has been disabled. You must enable it in the advanced settings',\n );\n }\n const data = this.#normalizeMsgData(messageParams.data);\n // 64 hex + \"0x\" at the beginning\n // This is needed because Ethereum's EcSign works only on 32 byte numbers\n // For 67 length see: https://github.com/MetaMask/metamask-extension/pull/12679/files#r749479607\n if (data.length !== 66 && data.length !== 67) {\n throw ethErrors.rpc.invalidParams(\n 'eth_sign requires 32 byte message hash',\n );\n }\n }\n\n async #newUnsignedAbstractMessage<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n SO,\n >(\n messageManager: AbstractMessageManager<M, P, PM>,\n approvalType: ApprovalType,\n signTypeForLogger: SigningMethod,\n messageName: string,\n signMessage: (messageParams: PM, signingOpts?: SO) => void,\n messageParams: PM,\n req: OriginalRequest,\n validateMessage?: (params: PM) => void,\n version?: string,\n signingOpts?: SO,\n ) {\n if (validateMessage) {\n validateMessage(messageParams);\n }\n\n let resultCallbacks: AcceptResultCallbacks | undefined;\n try {\n const messageId = await messageManager.addUnapprovedMessage(\n messageParams,\n req,\n version,\n );\n\n const messageParamsWithId = {\n ...messageParams,\n metamaskId: messageId,\n ...(version && { version }),\n };\n\n const signaturePromise = messageManager.waitForFinishStatus(\n messageParamsWithId,\n messageName,\n );\n\n try {\n // Signature request is proposed to the user\n this.#addLog(\n signTypeForLogger,\n SigningStage.Proposed,\n messageParamsWithId,\n );\n\n const acceptResult = await this.#requestApproval(\n messageParamsWithId,\n approvalType,\n );\n\n resultCallbacks = acceptResult.resultCallbacks;\n } catch {\n // User rejected the signature request\n this.#addLog(\n signTypeForLogger,\n SigningStage.Rejected,\n messageParamsWithId,\n );\n\n this.#cancelAbstractMessage(messageManager, messageId);\n throw ethErrors.provider.userRejectedRequest(\n 'User rejected the request.',\n );\n }\n\n await signMessage(messageParamsWithId, signingOpts);\n\n const signatureResult = await signaturePromise;\n\n // Signature operation is completed\n this.#addLog(signTypeForLogger, SigningStage.Signed, messageParamsWithId);\n\n /* istanbul ignore next */\n resultCallbacks?.success(signatureResult);\n\n return signatureResult;\n } catch (error) {\n resultCallbacks?.error(error as Error);\n throw error;\n }\n }\n\n /**\n * Signifies user intent to complete an eth_sign method.\n *\n * @param msgParams - The params passed to eth_call.\n * @returns Signature result from signing.\n */\n async #signMessage(msgParams: MessageParamsMetamask) {\n return await this.#signAbstractMessage(\n this.#messageManager,\n ApprovalType.EthSign,\n msgParams,\n async (cleanMsgParams) =>\n await this.messagingSystem.call(\n 'KeyringController:signMessage',\n cleanMsgParams,\n ),\n );\n }\n\n /**\n * Signifies a user's approval to sign a personal_sign message in queue.\n * Triggers signing, and the callback function from newUnsignedPersonalMessage.\n *\n * @param msgParams - The params of the message to sign & return to the Dapp.\n * @returns Signature result from signing.\n */\n async #signPersonalMessage(msgParams: PersonalMessageParamsMetamask) {\n return await this.#signAbstractMessage(\n this.#personalMessageManager,\n ApprovalType.PersonalSign,\n msgParams,\n async (cleanMsgParams) =>\n await this.messagingSystem.call(\n 'KeyringController:signPersonalMessage',\n cleanMsgParams,\n ),\n );\n }\n\n /**\n * The method for a user approving a call to eth_signTypedData, per EIP 712.\n * Triggers the callback in newUnsignedTypedMessage.\n *\n * @param msgParams - The params passed to eth_signTypedData.\n * @param opts - The options for the method.\n * @param opts.parseJsonData - Whether to parse JSON data before calling the KeyringController.\n * @returns Signature result from signing.\n */\n async #signTypedMessage(\n msgParams: TypedMessageParamsMetamask,\n /* istanbul ignore next */\n opts = { parseJsonData: true },\n ): Promise<any> {\n const { version } = msgParams;\n return await this.#signAbstractMessage(\n this.#typedMessageManager,\n ApprovalType.EthSignTypedData,\n msgParams,\n async (cleanMsgParams) => {\n const finalMessageParams = opts.parseJsonData\n ? this.#removeJsonData(cleanMsgParams, version as string)\n : cleanMsgParams;\n\n return await this.messagingSystem.call(\n 'KeyringController:signTypedMessage',\n finalMessageParams,\n version as SignTypedDataVersion,\n );\n },\n );\n }\n\n #tryForEachMessageManager(\n callbackFn: (\n messageManager: AbstractMessageManager<any, any, any>,\n ...args: any[]\n ) => boolean,\n ...args: any\n ) {\n const messageManagers = [\n this.#messageManager,\n this.#personalMessageManager,\n this.#typedMessageManager,\n ];\n\n for (const manager of messageManagers) {\n if (callbackFn(manager, ...args)) {\n return true;\n }\n }\n throw new Error('Message not found');\n }\n\n #trySetDeferredSignSuccess(\n messageManager: AbstractMessageManager<any, any, any>,\n messageId: string,\n signature: any,\n ) {\n try {\n messageManager.setMessageStatusSigned(messageId, signature);\n return true;\n } catch (error) {\n return false;\n }\n }\n\n #trySetMessageMetadata(\n messageManager: AbstractMessageManager<any, any, any>,\n messageId: string,\n metadata: Json,\n ) {\n try {\n messageManager.setMetadata(messageId, metadata);\n return true;\n } catch (error) {\n return false;\n }\n }\n\n #trySetDeferredSignError(\n messageManager: AbstractMessageManager<any, any, any>,\n messageId: string,\n ) {\n try {\n messageManager.rejectMessage(messageId);\n return true;\n } catch (error) {\n return false;\n }\n }\n\n #rejectUnapproved<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(messageManager: AbstractMessageManager<M, P, PM>, reason?: string) {\n Object.keys(messageManager.getUnapprovedMessages()).forEach((messageId) => {\n this.#cancelAbstractMessage(messageManager, messageId, reason);\n });\n }\n\n #clearUnapproved<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(messageManager: AbstractMessageManager<M, P, PM>) {\n messageManager.update({\n unapprovedMessages: {},\n unapprovedMessagesCount: 0,\n });\n }\n\n async #signAbstractMessage<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(\n messageManager: AbstractMessageManager<M, P, PM>,\n methodName: string,\n msgParams: PM,\n getSignature: (cleanMessageParams: P) => Promise<any>,\n ) {\n console.info(`MetaMaskController - ${methodName}`);\n\n const messageId = msgParams.metamaskId as string;\n\n try {\n const cleanMessageParams = await messageManager.approveMessage(msgParams);\n\n try {\n const signature = await getSignature(cleanMessageParams);\n\n this.hub.emit(`${methodName}:signed`, { signature, messageId });\n\n if (!cleanMessageParams.deferSetAsSigned) {\n messageManager.setMessageStatusSigned(messageId, signature);\n }\n\n return signature;\n } catch (error) {\n this.hub.emit(`${messageId}:signError`, { error });\n throw error;\n }\n } catch (error: any) {\n console.info(`MetaMaskController - ${methodName} failed.`, error);\n this.#errorMessage(messageManager, messageId, error.message);\n throw error;\n }\n }\n\n #errorMessage<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(\n messageManager: AbstractMessageManager<M, P, PM>,\n messageId: string,\n error: string,\n ) {\n if (messageManager instanceof TypedMessageManager) {\n messageManager.setMessageStatusErrored(messageId, error);\n } else {\n this.#cancelAbstractMessage(messageManager, messageId);\n }\n }\n\n #cancelAbstractMessage<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(\n messageManager: AbstractMessageManager<M, P, PM>,\n messageId: string,\n reason?: string,\n ) {\n if (reason) {\n const message = this.#getMessage(messageId);\n this.hub.emit('cancelWithReason', { message, reason });\n }\n messageManager.rejectMessage(messageId);\n }\n\n #handleMessageManagerEvents<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(messageManager: AbstractMessageManager<M, P, PM>, eventName: string) {\n messageManager.hub.on('updateBadge', () => {\n this.hub.emit('updateBadge');\n });\n\n messageManager.hub.on(\n 'unapprovedMessage',\n (msgParams: AbstractMessageParamsMetamask) => {\n this.hub.emit(eventName, msgParams);\n },\n );\n }\n\n #subscribeToMessageState<\n M extends AbstractMessage,\n P extends AbstractMessageParams,\n PM extends AbstractMessageParamsMetamask,\n >(\n messageManager: AbstractMessageManager<M, P, PM>,\n updateState: (\n state: SignatureControllerState,\n newMessages: Record<string, StateMessage>,\n messageCount: number,\n ) => void,\n ) {\n messageManager.subscribe((state: MessageManagerState<AbstractMessage>) => {\n const newMessages = this.#migrateMessages(\n state.unapprovedMessages as any,\n );\n\n this.update(() => {\n const newState = { ...this.state };\n updateState(newState, newMessages, state.unapprovedMessagesCount);\n return newState;\n });\n });\n }\n\n #migrateMessages(\n coreMessages: Record<string, CoreMessage>,\n ): Record<string, StateMessage> {\n const stateMessages: Record<string, StateMessage> = {};\n\n for (const messageId of Object.keys(coreMessages)) {\n const coreMessage = coreMessages[messageId];\n const stateMessage = this.#migrateMessage(coreMessage);\n\n stateMessages[messageId] = stateMessage;\n }\n\n return stateMessages;\n }\n\n #migrateMessage(coreMessage: CoreMessage): StateMessage {\n const { messageParams, ...coreMessageData } = coreMessage;\n\n // Core message managers use messageParams but frontend uses msgParams with lots of references\n const stateMessage = {\n ...coreMessageData,\n msgParams: messageParams,\n };\n\n return stateMessage as StateMessage;\n }\n\n #normalizeMsgData(data: string) {\n if (data.startsWith('0x')) {\n // data is already hex\n return data;\n }\n // data is unicode, convert to hex\n return bufferToHex(Buffer.from(data, 'utf8'));\n }\n\n #getMessage(messageId: string): StateMessage {\n return {\n ...this.state.unapprovedMsgs,\n ...this.state.unapprovedPersonalMsgs,\n ...this.state.unapprovedTypedMessages,\n }[messageId];\n }\n\n async #requestApproval(\n msgParams: AbstractMessageParamsMetamask,\n type: ApprovalType,\n ): Promise<AddResult> {\n const id = msgParams.metamaskId as string;\n const origin = msgParams.origin || ORIGIN_METAMASK;\n\n // We are explicitly cloning the message params here to prevent the mutation errors on development mode\n // Because sending it through the messaging system will make the object read only\n const clonedMsgParams = cloneDeep(msgParams);\n return (await this.messagingSystem.call(\n 'ApprovalController:addRequest',\n {\n id,\n origin,\n type,\n requestData: clonedMsgParams as Required<AbstractMessageParamsMetamask>,\n expectsResult: true,\n },\n true,\n )) as Promise<AddResult>;\n }\n\n #removeJsonData(\n messageParams: TypedMessageParams,\n version: string,\n ): TypedMessageParams {\n if (version === 'V1' || typeof messageParams.data !== 'string') {\n return messageParams;\n }\n\n return {\n ...messageParams,\n data: JSON.parse(messageParams.data),\n };\n }\n\n #addLog(\n signingMethod: SigningMethod,\n stage: SigningStage,\n signingData: AbstractMessageParamsMetamask,\n ): void {\n this.messagingSystem.call('LoggingController:add', {\n type: LogType.EthSignLog,\n data: {\n signingMethod,\n stage,\n signingData,\n },\n });\n }\n\n #getSignTypeForLogger(version: string): SigningMethod {\n let signTypeForLogger = SigningMethod.EthSignTypedData;\n if (version === 'V3') {\n signTypeForLogger = SigningMethod.EthSignTypedDataV3;\n } else if (version === 'V4') {\n signTypeForLogger = SigningMethod.EthSignTypedDataV4;\n }\n return signTypeForLogger;\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamask-previews/signature-controller",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.1.2-preview.26b130a",
|
|
4
4
|
"description": "Processes signing requests in order to sign arbitrary and typed data",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"MetaMask",
|
|
@@ -25,14 +25,16 @@
|
|
|
25
25
|
"changelog:validate": "../../scripts/validate-changelog.sh @metamask/signature-controller",
|
|
26
26
|
"publish:preview": "yarn npm publish --tag preview",
|
|
27
27
|
"test": "jest",
|
|
28
|
+
"test:clean": "jest --clearCache",
|
|
28
29
|
"test:watch": "jest --watch"
|
|
29
30
|
},
|
|
30
31
|
"dependencies": {
|
|
31
|
-
"@metamask/approval-controller": "^
|
|
32
|
-
"@metamask/base-controller": "^3.2.
|
|
33
|
-
"@metamask/controller-utils": "^
|
|
34
|
-
"@metamask/
|
|
35
|
-
"@metamask/
|
|
32
|
+
"@metamask/approval-controller": "^4.0.0",
|
|
33
|
+
"@metamask/base-controller": "^3.2.3",
|
|
34
|
+
"@metamask/controller-utils": "^5.0.2",
|
|
35
|
+
"@metamask/logging-controller": "^1.0.3",
|
|
36
|
+
"@metamask/message-manager": "^7.3.5",
|
|
37
|
+
"@metamask/utils": "^8.1.0",
|
|
36
38
|
"eth-rpc-errors": "^4.0.2",
|
|
37
39
|
"ethereumjs-util": "^7.0.10",
|
|
38
40
|
"immer": "^9.0.6",
|
|
@@ -40,17 +42,18 @@
|
|
|
40
42
|
},
|
|
41
43
|
"devDependencies": {
|
|
42
44
|
"@metamask/auto-changelog": "^3.1.0",
|
|
43
|
-
"@metamask/keyring-controller": "^
|
|
45
|
+
"@metamask/keyring-controller": "^8.0.2",
|
|
44
46
|
"@types/jest": "^27.4.1",
|
|
45
47
|
"deepmerge": "^4.2.2",
|
|
46
48
|
"jest": "^27.5.1",
|
|
47
49
|
"ts-jest": "^27.1.4",
|
|
48
|
-
"typedoc": "^0.
|
|
49
|
-
"typedoc-plugin-missing-exports": "^0.
|
|
50
|
-
"typescript": "~4.
|
|
50
|
+
"typedoc": "^0.24.8",
|
|
51
|
+
"typedoc-plugin-missing-exports": "^2.0.0",
|
|
52
|
+
"typescript": "~4.8.4"
|
|
51
53
|
},
|
|
52
54
|
"peerDependencies": {
|
|
53
|
-
"@metamask/approval-controller": "^
|
|
55
|
+
"@metamask/approval-controller": "^4.0.0",
|
|
56
|
+
"@metamask/logging-controller": "^1.0.3"
|
|
54
57
|
},
|
|
55
58
|
"engines": {
|
|
56
59
|
"node": ">=16.0.0"
|