@metamask-previews/signature-controller 40.0.0-preview-4fa35a45a → 40.0.0-preview-3d1e571
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegations.d.ts","sourceRoot":"","sources":["../../src/utils/delegations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,wCAAwC,CAAC;AAGhD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,KAAK,EACV,sBAAsB,EACtB,kCAAkC,EACnC,MAAM,aAAa,CAAC;AAIrB;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAIzE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,CAAC,EAC1C,MAAM,EACN,IAAI,EACJ,SAAS,GACV,EAAE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,kCAAkC,CAAC;IACzC,SAAS,EAAE,4BAA4B,CAAC;CACzC,GAAG,iBAAiB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"delegations.d.ts","sourceRoot":"","sources":["../../src/utils/delegations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,wCAAwC,CAAC;AAGhD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,KAAK,EACV,sBAAsB,EACtB,kCAAkC,EACnC,MAAM,aAAa,CAAC;AAIrB;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAIzE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,CAAC,EAC1C,MAAM,EACN,IAAI,EACJ,SAAS,GACV,EAAE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,kCAAkC,CAAC;IACzC,SAAS,EAAE,4BAA4B,CAAC;CACzC,GAAG,iBAAiB,GAAG,SAAS,CAqChC;AAED;;;;;;GAMG;AACH,wBAAgB,mCAAmC,CACjD,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,IAAI,IAAI,kCAAkC,CAYpD"}
|
|
@@ -38,10 +38,10 @@ export function decodePermissionFromRequest({ origin, data, messenger, }) {
|
|
|
38
38
|
const { delegate, delegator, authority, caveats } = data.message;
|
|
39
39
|
if (!(
|
|
40
40
|
// isHexAddress requires a lowercase hex string
|
|
41
|
-
|
|
41
|
+
isHexAddress(delegate?.toLowerCase()) &&
|
|
42
42
|
isHexAddress(delegator?.toLowerCase()) &&
|
|
43
43
|
isStrictHexString(authority) &&
|
|
44
|
-
caveats))
|
|
44
|
+
caveats)) {
|
|
45
45
|
return undefined;
|
|
46
46
|
}
|
|
47
47
|
const decodedPermission = messenger.call('GatorPermissionsController:decodePermissionFromPermissionContextForOrigin', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegations.js","sourceRoot":"","sources":["../../src/utils/delegations.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAQlE,MAAM,uBAAuB,GAAG,YAAY,CAAC;AAE7C;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAA4B;IAC9D,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAE7B,OAAO,WAAW,KAAK,uBAAuB,CAAC;AACjD,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,2BAA2B,CAAC,EAC1C,MAAM,EACN,IAAI,EACJ,SAAS,GAKV;IACC,MAAM,EACJ,QAAQ,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,GACrD,GAAG,IAAI,CAAC;IAET,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;IAEhC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,GAC/C,IAAI,CAAC,OAA4B,CAAC;IAEpC,IACE,CAAC;IACC,+CAA+C;IAC/C,
|
|
1
|
+
{"version":3,"file":"delegations.js","sourceRoot":"","sources":["../../src/utils/delegations.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAQlE,MAAM,uBAAuB,GAAG,YAAY,CAAC;AAE7C;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAA4B;IAC9D,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAE7B,OAAO,WAAW,KAAK,uBAAuB,CAAC;AACjD,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,2BAA2B,CAAC,EAC1C,MAAM,EACN,IAAI,EACJ,SAAS,GAKV;IACC,MAAM,EACJ,QAAQ,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,GACrD,GAAG,IAAI,CAAC;IAET,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;IAEhC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,GAC/C,IAAI,CAAC,OAA4B,CAAC;IAEpC,IACE,CAAC;IACC,+CAA+C;IAC/C,YAAY,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;QACrC,YAAY,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC;QACtC,iBAAiB,CAAC,SAAS,CAAC;QAC5B,OAAO,CACR,EACD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,iBAAiB,GAAG,SAAS,CAAC,IAAI,CACtC,2EAA2E,EAC3E;QACE,MAAM;QACN,OAAO;QACP,UAAU,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;QACvD,QAAQ,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE;KACrD,CACF,CAAC;IAEF,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mCAAmC,CACjD,IAA4B;IAE5B,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAA0C,CAAC;IAChE,IACE,CAAC,QAAQ;QACT,CAAC,CAAC,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC;QACtC,CAAC,CAAC,OAAO,QAAQ,CAAC,aAAa,KAAK,QAAQ,CAAC,EAC7C,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;AACH,CAAC","sourcesContent":["import type {\n DecodedPermission,\n DelegationDetails,\n} from '@metamask/gator-permissions-controller';\nimport { isHexAddress, isStrictHexString } from '@metamask/utils';\n\nimport type { SignatureControllerMessenger } from '../SignatureController.js';\nimport type {\n MessageParamsTypedData,\n MessageParamsTypedDataWithMetadata,\n} from '../types.js';\n\nconst DELEGATION_PRIMARY_TYPE = 'Delegation';\n\n/**\n * Determines whether the provided EIP-712 typed data represents a Delegation request.\n *\n * Accepts either a pre-parsed typed data object or a JSON string. If a string is\n * provided, it is parsed. Returns true when the `primaryType` is \"Delegation\".\n *\n * @param data - EIP-712 typed data object or its JSON string representation.\n *\n * @returns True if the typed message is a Delegation request; otherwise false.\n */\nexport function isDelegationRequest(data: MessageParamsTypedData): boolean {\n const { primaryType } = data;\n\n return primaryType === DELEGATION_PRIMARY_TYPE;\n}\n\n/**\n * Decodes a permission from a Delegation EIP-712 request using the permissions controller.\n *\n * Parses the typed data from `messageParams`, validates and extracts `metadata.origin`\n * and `metadata.justification`, determines the `chainId`, and forwards the delegation\n * context to the permissions controller via the supplied messenger.\n *\n * @param params - Wrapper object for parameters.\n * @param params.messenger - Messenger used to call the permissions controller.\n * @param params.origin - The origin of the request.\n * @param params.data - The typed data to decode.\n *\n * @returns A decoded permission, or `undefined` if no permission can be derived.\n * @throws {Error} If required metadata (origin or justification) is missing or invalid.\n */\nexport function decodePermissionFromRequest({\n origin,\n data,\n messenger,\n}: {\n origin: string;\n data: MessageParamsTypedDataWithMetadata;\n messenger: SignatureControllerMessenger;\n}): DecodedPermission | undefined {\n const {\n metadata: { origin: specifiedOrigin, justification },\n } = data;\n\n if (typeof data.domain.chainId !== 'number') {\n throw new Error('Invalid chainId');\n }\n\n const { chainId } = data.domain;\n\n const { delegate, delegator, authority, caveats } =\n data.message as DelegationDetails;\n\n if (\n !(\n // isHexAddress requires a lowercase hex string\n isHexAddress(delegate?.toLowerCase()) &&\n isHexAddress(delegator?.toLowerCase()) &&\n isStrictHexString(authority) &&\n caveats\n )\n ) {\n return undefined;\n }\n\n const decodedPermission = messenger.call(\n 'GatorPermissionsController:decodePermissionFromPermissionContextForOrigin',\n {\n origin,\n chainId,\n delegation: { delegate, delegator, caveats, authority },\n metadata: { justification, origin: specifiedOrigin },\n },\n );\n\n return decodedPermission;\n}\n\n/**\n * Validates the provided MessageParamsTypedData contains valid EIP-7715\n * execution permissions metadata.\n *\n * @param data - The typed data to validate.\n * @throws {Error} If the metadata is invalid.\n */\nexport function validateExecutionPermissionMetadata(\n data: MessageParamsTypedData,\n): asserts data is MessageParamsTypedDataWithMetadata {\n if (!('metadata' in data)) {\n throw new Error('Invalid metadata');\n }\n const { metadata } = data as MessageParamsTypedDataWithMetadata;\n if (\n !metadata ||\n !(typeof metadata.origin === 'string') ||\n !(typeof metadata.justification === 'string')\n ) {\n throw new Error('Invalid metadata');\n }\n}\n"]}
|
package/package.json
CHANGED