UNPKG

@trezor/connect-plugin-ethereum

Version:
40 lines 1.31 kB
import * as sigUtil from "@metamask/eth-sig-util"; function sanitizeData(data) { switch (Object.prototype.toString.call(data)) { case '[object Object]': { const entries = Object.keys(data).map(k => [k, sanitizeData(data[k])]); return Object.fromEntries(entries); } case '[object Array]': return data.map(v => sanitizeData(v)); case '[object BigInt]': return data.toString(); default: return data; } } export const transformTypedData = (data, metamask_v4_compat) => { if (!metamask_v4_compat) { throw new Error('Trezor: Only version 4 of typed data signing is supported'); } const version = sigUtil.SignTypedDataVersion.V4; const { types, primaryType, domain, message } = sigUtil.TypedDataUtils.sanitizeData(data); const domainSeparatorHash = sigUtil.TypedDataUtils.hashStruct('EIP712Domain', sanitizeData(domain), types, version).toString('hex'); let messageHash = null; if (primaryType !== 'EIP712Domain') { messageHash = sigUtil.TypedDataUtils.hashStruct(primaryType, sanitizeData(message), types, version).toString('hex'); } return { domain_separator_hash: domainSeparatorHash, message_hash: messageHash, ...data }; }; export default transformTypedData; //# sourceMappingURL=index.js.map