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 /app | |
parent | 068bf43615fa0d0038f43798fbf9e04d03369e68 (diff) | |
download | tangerine-wallet-browser-e6d64cecf84d91f1db3aab5777db3530c9cd8ab7.tar tangerine-wallet-browser-e6d64cecf84d91f1db3aab5777db3530c9cd8ab7.tar.gz tangerine-wallet-browser-e6d64cecf84d91f1db3aab5777db3530c9cd8ab7.tar.bz2 tangerine-wallet-browser-e6d64cecf84d91f1db3aab5777db3530c9cd8ab7.tar.lz tangerine-wallet-browser-e6d64cecf84d91f1db3aab5777db3530c9cd8ab7.tar.xz tangerine-wallet-browser-e6d64cecf84d91f1db3aab5777db3530c9cd8ab7.tar.zst tangerine-wallet-browser-e6d64cecf84d91f1db3aab5777db3530c9cd8ab7.zip |
message signing works
Diffstat (limited to 'app')
-rw-r--r-- | app/scripts/eth-ledger-keyring-listener.js | 22 | ||||
-rw-r--r-- | app/scripts/lib/createLoggerMiddleware.js | 2 |
2 files changed, 18 insertions, 6 deletions
diff --git a/app/scripts/eth-ledger-keyring-listener.js b/app/scripts/eth-ledger-keyring-listener.js index 0043058e6..bc5801106 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 996c3477c..53913921c 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() }) } |