12345678910111213141516171819202122232425262728 |
- const utils = require('ethereumjs-util');
- /**
- * Hash and add same prefix to the hash that ganache use.
- * @param {string} message the plaintext/ascii/original message
- * @return {string} the hash of the message, prefixed, and then hashed again
- */
- function hashMessage (message) {
- const messageHex = Buffer.from(utils.sha3(message).toString('hex'), 'hex');
- const prefix = utils.toBuffer('\u0019Ethereum Signed Message:\n' + messageHex.length.toString());
- return utils.bufferToHex(utils.sha3(Buffer.concat([prefix, messageHex])));
- }
- // signs message using web3 (auto-applies prefix)
- function signMessage (signer, message = '', options = {}) {
- return web3.eth.sign(signer, web3.sha3(message, options));
- }
- // signs hex string using web3 (auto-applies prefix)
- function signHex (signer, message = '') {
- return signMessage(signer, message, { encoding: 'hex' });
- }
- module.exports = {
- hashMessage,
- signMessage,
- signHex,
- };
|