diff --git a/src/app/tabs/run-tab.js b/src/app/tabs/run-tab.js index 5c36615b1e..8d6e9986e6 100644 --- a/src/app/tabs/run-tab.js +++ b/src/app/tabs/run-tab.js @@ -631,17 +631,17 @@ function settings (container, self) { function signMessage (event) { self._deps.udapp.getAccounts((err, accounts) => { if (err) { addTooltip(`Cannot get account list: ${err}`) } - var signMessageDialog = {'title': 'Sign a message', 'text': 'Enter a message to sign', 'inputvalue': 'Message to sign' } + var signMessageDialog = { 'title': 'Sign a message', 'text': 'Enter a message to sign', 'inputvalue': 'Message to sign' } var $txOrigin = container.querySelector('#txorigin') var account = $txOrigin.selectedOptions[0].value var isVM = executionContext.isVM() - var isInjected = executionContext.getProvider() === "injected" - function alertSignedData(error, signedData) { + var isInjected = executionContext.getProvider() === 'injected' + function alertSignedData (error, hash, signedData) { if (error && error.message !== '') { - console.log(error) + console.log(error) addTooltip(error.message) } else { - modalDialogCustom.alert(signedData) + modalDialogCustom.alert(yo`
hash:${hash}
signature:${signedData}
`) } } if (isVM) { @@ -650,9 +650,8 @@ function settings (container, self) { var privKey = self._deps.udapp.accounts[account].privateKey try { var rsv = ethJSUtil.ecsign(personalMsg, privKey) - var rsvJson = JSON.stringify(rsv, null, '\t') var signedData = ethJSUtil.toRpcSig(rsv.v, rsv.r, rsv.s) - modalDialogCustom.alert(rsvJson + '\n' + signedData) + alertSignedData(null, '0x' + personalMsg.toString('hex'), signedData) } catch (e) { addTooltip(e.message) return @@ -660,9 +659,11 @@ function settings (container, self) { }, false) } else if (isInjected) { modalDialogCustom.promptMulti(signMessageDialog, (message) => { - const hashedMsg = executionContext.web3().sha3(message) + const hashedMsg = executionContext.web3().sha3(message) try { - executionContext.web3().eth.sign(account, hashedMsg, alertSignedData) + executionContext.web3().eth.sign(account, hashedMsg, (error, signedData) => { + alertSignedData(error, hashedMsg, signedData) + }) } catch (e) { addTooltip(e.message) console.log(e) @@ -675,16 +676,20 @@ function settings (container, self) { const hashedMsg = executionContext.web3().sha3(message) try { var personal = new Personal(executionContext.web3().currentProvider) - personal.sign('0x' + Buffer.from(message).toString('hex'), account, passphrase, alertSignedData) + personal.sign(hashedMsg, account, passphrase, (error, signedData) => { + alertSignedData(error, hashedMsg, signedData) + web3.eth.personal.ecRecover(hashedMsg, signedData, (error, data) => { + addTooltip(data) + }) + }) } catch (e) { addTooltip(e.message) - comsole.log(e) + console.log(e) return } - }) + }) }, false) } - }) }