diff options
author | Fabio Berger <me@fabioberger.com> | 2018-01-30 21:19:58 +0800 |
---|---|---|
committer | Fabio Berger <me@fabioberger.com> | 2018-01-30 21:19:58 +0800 |
commit | 8d30058a6dade197efbfa24380a479d7b72a882a (patch) | |
tree | f5041e33887a42035c934530b0394b8d9c80af42 | |
parent | 69151c06e42fd588506db3aa62b95df5b4399607 (diff) | |
download | dexon-sol-tools-8d30058a6dade197efbfa24380a479d7b72a882a.tar dexon-sol-tools-8d30058a6dade197efbfa24380a479d7b72a882a.tar.gz dexon-sol-tools-8d30058a6dade197efbfa24380a479d7b72a882a.tar.bz2 dexon-sol-tools-8d30058a6dade197efbfa24380a479d7b72a882a.tar.lz dexon-sol-tools-8d30058a6dade197efbfa24380a479d7b72a882a.tar.xz dexon-sol-tools-8d30058a6dade197efbfa24380a479d7b72a882a.tar.zst dexon-sol-tools-8d30058a6dade197efbfa24380a479d7b72a882a.zip |
Pass in whether we want the personal message prefix appended and never append it for Ledger. This fixes signing when Ledger is used and the backing node is not Parity
-rw-r--r-- | packages/website/ts/blockchain.ts | 15 | ||||
-rw-r--r-- | packages/website/ts/utils/utils.ts | 6 |
2 files changed, 20 insertions, 1 deletions
diff --git a/packages/website/ts/blockchain.ts b/packages/website/ts/blockchain.ts index d310464ed..d7c23205d 100644 --- a/packages/website/ts/blockchain.ts +++ b/packages/website/ts/blockchain.ts @@ -421,8 +421,21 @@ export class Blockchain { if (_.isUndefined(makerAddress)) { throw new Error('Tried to send a sign request but user has no associated addresses'); } + this._showFlashMessageIfLedger(); - const ecSignature = await this._zeroEx.signOrderHashAsync(orderHash, makerAddress); + const nodeVersion = await this._web3Wrapper.getNodeVersionAsync(); + const isParityNode = utils.isParityNode(nodeVersion); + const isTestRpc = utils.isTestRpc(nodeVersion); + const isLedgerSigner = !_.isUndefined(this._ledgerSubprovider); + let shouldAddPersonalMessagePrefix = true; + if ((isParityNode && !isLedgerSigner) || isTestRpc || isLedgerSigner) { + shouldAddPersonalMessagePrefix = false; + } + const ecSignature = await this._zeroEx.signOrderHashAsync( + orderHash, + makerAddress, + shouldAddPersonalMessagePrefix, + ); const signatureData = _.extend({}, ecSignature, { hash: orderHash, }); diff --git a/packages/website/ts/utils/utils.ts b/packages/website/ts/utils/utils.ts index 23db8c0a7..003ecd30a 100644 --- a/packages/website/ts/utils/utils.ts +++ b/packages/website/ts/utils/utils.ts @@ -276,4 +276,10 @@ export const utils = { exchangeContractErrorToHumanReadableError[error] || ZeroExErrorToHumanReadableError[error]; return humanReadableErrorMsg; }, + isParityNode(nodeVersion: string): boolean { + return _.includes(nodeVersion, 'Parity'); + }, + isTestRpc(nodeVersion: string): boolean { + return _.includes(nodeVersion, 'TestRPC'); + }, }; |