aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts
diff options
context:
space:
mode:
authorbrunobar79 <brunobar79@gmail.com>2018-08-12 08:26:34 +0800
committerbrunobar79 <brunobar79@gmail.com>2018-08-12 08:26:34 +0800
commite6d64cecf84d91f1db3aab5777db3530c9cd8ab7 (patch)
tree43311cd9dac09834977b672589cd534cb7b25a5e /app/scripts
parent068bf43615fa0d0038f43798fbf9e04d03369e68 (diff)
downloadtangerine-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/scripts')
-rw-r--r--app/scripts/eth-ledger-keyring-listener.js22
-rw-r--r--app/scripts/lib/createLoggerMiddleware.js2
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()
})
}