const { recoverPersonalSignature } = require('@metamask/eth-sig-util'); const verifySignature = ({ authors, content, signature, embeddedData, }) => { let contentToVerify = content; if (embeddedData && Object.entries(embeddedData).length) { contentToVerify += `\n\n${JSON.stringify(embeddedData, null, 2)}`; } try { const account = recoverPersonalSignature({ data: contentToVerify, signature }); const authorAddresses = authors.map((author) => author.authorAddress.toLowerCase()); if (!authorAddresses.includes(account.toLowerCase())) { console.log('error: signer is not among the authors'); return false; } } catch (e) { console.log('error: failed to recover signature:', e.message); return false; } return true; }; module.exports = verifySignature;