diff options
author | brunobar79 <brunobar79@gmail.com> | 2018-08-12 08:26:34 +0800 |
---|---|---|
committer | brunobar79 <brunobar79@gmail.com> | 2018-08-12 08:26:34 +0800 |
commit | e6d64cecf84d91f1db3aab5777db3530c9cd8ab7 (patch) | |
tree | 43311cd9dac09834977b672589cd534cb7b25a5e | |
parent | 068bf43615fa0d0038f43798fbf9e04d03369e68 (diff) | |
download | dexon-wallet-e6d64cecf84d91f1db3aab5777db3530c9cd8ab7.tar.gz dexon-wallet-e6d64cecf84d91f1db3aab5777db3530c9cd8ab7.tar.zst dexon-wallet-e6d64cecf84d91f1db3aab5777db3530c9cd8ab7.zip |
message signing works
-rw-r--r-- | app/scripts/eth-ledger-keyring-listener.js | 22 | ||||
-rw-r--r-- | app/scripts/lib/createLoggerMiddleware.js | 2 | ||||
-rw-r--r-- | ui/app/css/itcss/components/new-account.scss | 1 |
3 files changed, 19 insertions, 6 deletions
diff --git a/app/scripts/eth-ledger-keyring-listener.js b/app/scripts/eth-ledger-keyring-listener.js index 0043058e..bc580110 100644 --- a/app/scripts/eth-ledger-keyring-listener.js +++ b/app/scripts/eth-ledger-keyring-listener.js @@ -1,4 +1,3 @@ -const extension = require('extensionizer') const {EventEmitter} = require('events') const HDKey = require('hdkey') const ethUtil = require('ethereumjs-util') @@ -202,7 +201,7 @@ class LedgerKeyring extends EventEmitter { const correctAddress = ethUtil.toChecksumAddress(address) if (addressSignedWith !== correctAddress) { reject('signature doesnt match the right address') - } + } resolve(signedTx) } else { reject(payload) @@ -218,19 +217,32 @@ class LedgerKeyring extends EventEmitter { // For personal_sign, we need to prefix the message: async signPersonalMessage (withAccount, message) { + const humanReadableMsg = this._toAscii(message) + const bufferMsg = Buffer.from(humanReadableMsg).toString('hex') return new Promise((resolve, reject) => { this.unlock() .then(_ => { this.sendMessage({ action: 'ledger-sign-personal-message', params: { - withAccount, - message, + path: this._pathFromAddress(withAccount ), + message: bufferMsg, }, }, ({action, success, payload}) => { if (success) { - resolve(payload) + const { result } = payload + let v = result['v'] - 27 + v = v.toString(16) + if (v.length < 2) { + v = `0${v}` + } + const signature = `0x${result['r']}${result['s']}${v}` + const addressSignedWith = sigUtil.recoverPersonalSignature({data: message, sig: signature}) + if (ethUtil.toChecksumAddress(addressSignedWith) !== ethUtil.toChecksumAddress(withAccount)) { + reject('signature doesnt match the right address') + } + resolve(signature) } else { reject(payload) } diff --git a/app/scripts/lib/createLoggerMiddleware.js b/app/scripts/lib/createLoggerMiddleware.js index 996c3477..53913921 100644 --- a/app/scripts/lib/createLoggerMiddleware.js +++ b/app/scripts/lib/createLoggerMiddleware.js @@ -14,7 +14,7 @@ function createLoggerMiddleware (opts) { log.error('Error in RPC response:\n', res) } if (req.isMetamaskInternal) return - log.info(`RPC (${opts.origin}):`, req, '->', res) + //log.info(`RPC (${opts.origin}):`, req, '->', res) cb() }) } diff --git a/ui/app/css/itcss/components/new-account.scss b/ui/app/css/itcss/components/new-account.scss index b12afb12..8a620180 100644 --- a/ui/app/css/itcss/components/new-account.scss +++ b/ui/app/css/itcss/components/new-account.scss @@ -412,6 +412,7 @@ min-height: 54px; font-weight: 300; font-size: 14px; + margin-bottom: 20px } &__button.unlock { |