From 71b6590bee27c0c2c1702037c71bdc0bdc95c93a Mon Sep 17 00:00:00 2001 From: Iuri Matias Date: Tue, 7 Jan 2020 11:31:19 -0500 Subject: [PATCH] refactor/move signMessage to their own providers --- src/blockchain/blockchain.js | 38 +--------------------------- src/blockchain/providers/injected.js | 11 ++++++++ src/blockchain/providers/node.js | 13 ++++++++++ src/blockchain/providers/vm.js | 13 ++++++++++ 4 files changed, 38 insertions(+), 37 deletions(-) diff --git a/src/blockchain/blockchain.js b/src/blockchain/blockchain.js index 9583ad83c8..e0387604b6 100644 --- a/src/blockchain/blockchain.js +++ b/src/blockchain/blockchain.js @@ -7,7 +7,6 @@ const Txlistener = remixLib.execution.txListener const EventManager = remixLib.EventManager const executionContext = remixLib.execution.executionContext const ethJSUtil = require('ethereumjs-util') -const Personal = require('web3-eth-personal') const Web3 = require('web3') const async = require('async') @@ -233,42 +232,7 @@ class Blockchain { } signMessage (message, account, passphrase, cb) { - const isVM = this.executionContext.isVM() - const isInjected = this.executionContext.getProvider() === 'injected' - - if (isVM) { - const personalMsg = ethJSUtil.hashPersonalMessage(Buffer.from(message)) - const privKey = this.providers.vm.accounts[account].privateKey - try { - const rsv = ethJSUtil.ecsign(personalMsg, privKey) - const signedData = ethJSUtil.toRpcSig(rsv.v, rsv.r, rsv.s) - cb(null, '0x' + personalMsg.toString('hex'), signedData) - } catch (e) { - cb(e.message) - } - return - } - if (isInjected) { - const hashedMsg = Web3.utils.sha3(message) - try { - this.executionContext.web3().eth.sign(account, hashedMsg, (error, signedData) => { - cb(error.message, hashedMsg, signedData) - }) - } catch (e) { - cb(e.message) - } - return - } - - const hashedMsg = Web3.utils.sha3(message) - try { - const personal = new Personal(this.executionContext.web3().currentProvider) - personal.sign(hashedMsg, account, passphrase, (error, signedData) => { - cb(error.message, hashedMsg, signedData) - }) - } catch (e) { - cb(e.message) - } + this.getCurrentProvider().signMessage(message, account, passphrase, cb) } web3 () { diff --git a/src/blockchain/providers/injected.js b/src/blockchain/providers/injected.js index b3b3fa4597..b9484533d4 100644 --- a/src/blockchain/providers/injected.js +++ b/src/blockchain/providers/injected.js @@ -29,6 +29,17 @@ class InjectedProvider { cb(null, Web3.utils.fromWei(res.toString(10), 'ether')) }) } + + signMessage (message, account, _passphrase, cb) { + const hashedMsg = Web3.utils.sha3(message) + try { + this.executionContext.web3().eth.sign(account, hashedMsg, (error, signedData) => { + cb(error.message, hashedMsg, signedData) + }) + } catch (e) { + cb(e.message) + } + } } module.exports = InjectedProvider diff --git a/src/blockchain/providers/node.js b/src/blockchain/providers/node.js index c05e49efec..5f013a3ef4 100644 --- a/src/blockchain/providers/node.js +++ b/src/blockchain/providers/node.js @@ -1,5 +1,6 @@ const Web3 = require('web3') const { stripHexPrefix } = require('ethereumjs-util') +const Personal = require('web3-eth-personal') class NodeProvider { @@ -36,6 +37,18 @@ class NodeProvider { cb(null, Web3.utils.fromWei(res.toString(10), 'ether')) }) } + + signMessage (message, account, passphrase, cb) { + const hashedMsg = Web3.utils.sha3(message) + try { + const personal = new Personal(this.executionContext.web3().currentProvider) + personal.sign(hashedMsg, account, passphrase, (error, signedData) => { + cb(error.message, hashedMsg, signedData) + }) + } catch (e) { + cb(e.message) + } + } } module.exports = NodeProvider diff --git a/src/blockchain/providers/vm.js b/src/blockchain/providers/vm.js index d1fbd1966f..6e8dd6a870 100644 --- a/src/blockchain/providers/vm.js +++ b/src/blockchain/providers/vm.js @@ -1,6 +1,7 @@ const Web3 = require('web3') const { BN, privateToAddress, toChecksumAddress, isValidPrivate, stripHexPrefix } = require('ethereumjs-util') const crypto = require('crypto') +const ethJSUtil = require('ethereumjs-util') class VMProvider { @@ -70,6 +71,18 @@ class VMProvider { cb(null, Web3.utils.fromWei(new BN(res.balance).toString(10), 'ether')) }) } + + signMessage (message, account, _passphrase, cb) { + const personalMsg = ethJSUtil.hashPersonalMessage(Buffer.from(message)) + const privKey = this.providers.vm.accounts[account].privateKey + try { + const rsv = ethJSUtil.ecsign(personalMsg, privKey) + const signedData = ethJSUtil.toRpcSig(rsv.v, rsv.r, rsv.s) + cb(null, '0x' + personalMsg.toString('hex'), signedData) + } catch (e) { + cb(e.message) + } + } } module.exports = VMProvider