diff options
author | Fabio Berger <me@fabioberger.com> | 2018-01-30 20:45:44 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-30 20:45:44 +0800 |
commit | 7603cef3084a33b8a55b3db363c7197694e7396c (patch) | |
tree | 907ca6c0b7773e1b8153ab84a44b56634e8833d5 /packages/0x.js/src/0x.ts | |
parent | ad52a82190259580f00b3a06b06ef1e950ccdc68 (diff) | |
parent | be370c4e192b642eeaf52a970a2f0addf459605c (diff) | |
download | dexon-sol-tools-7603cef3084a33b8a55b3db363c7197694e7396c.tar dexon-sol-tools-7603cef3084a33b8a55b3db363c7197694e7396c.tar.gz dexon-sol-tools-7603cef3084a33b8a55b3db363c7197694e7396c.tar.bz2 dexon-sol-tools-7603cef3084a33b8a55b3db363c7197694e7396c.tar.lz dexon-sol-tools-7603cef3084a33b8a55b3db363c7197694e7396c.tar.xz dexon-sol-tools-7603cef3084a33b8a55b3db363c7197694e7396c.tar.zst dexon-sol-tools-7603cef3084a33b8a55b3db363c7197694e7396c.zip |
Merge pull request #349 from 0xProject/fix/0x.js/signOrderHash
Add shouldAddPersonalMessagePrefix param to signOrderHashAsync
Diffstat (limited to 'packages/0x.js/src/0x.ts')
-rw-r--r-- | packages/0x.js/src/0x.ts | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/packages/0x.js/src/0x.ts b/packages/0x.js/src/0x.ts index 503a937c4..f8a484c5d 100644 --- a/packages/0x.js/src/0x.ts +++ b/packages/0x.js/src/0x.ts @@ -240,20 +240,22 @@ export class ZeroEx { * @param orderHash Hex encoded orderHash to sign. * @param signerAddress The hex encoded Ethereum address you wish to sign it with. This address * must be available via the Web3.Provider supplied to 0x.js. + * @param shouldAddPersonalMessagePrefix Some signers add the personal message prefix `\x19Ethereum Signed Message` + * themselves (e.g Parity Signer, Ledger, TestRPC) and others expect it to already be done by the client + * (e.g Metamask). Depending on which signer this request is going to, decide on whether to add the prefix + * before sending the request. * @return An object containing the Elliptic curve signature parameters generated by signing the orderHash. */ - public async signOrderHashAsync(orderHash: string, signerAddress: string): Promise<ECSignature> { + public async signOrderHashAsync( + orderHash: string, + signerAddress: string, + shouldAddPersonalMessagePrefix: boolean, + ): Promise<ECSignature> { assert.isHexString('orderHash', orderHash); await assert.isSenderAddressAsync('signerAddress', signerAddress, this._web3Wrapper); - let msgHashHex; - const nodeVersion = await this._web3Wrapper.getNodeVersionAsync(); - const isParityNode = utils.isParityNode(nodeVersion); - const isTestRpc = utils.isTestRpc(nodeVersion); - if (isParityNode || isTestRpc) { - // Parity and TestRpc nodes add the personalMessage prefix itself - msgHashHex = orderHash; - } else { + let msgHashHex = orderHash; + if (shouldAddPersonalMessagePrefix) { const orderHashBuff = ethUtil.toBuffer(orderHash); const msgHashBuff = ethUtil.hashPersonalMessage(orderHashBuff); msgHashHex = ethUtil.bufferToHex(msgHashBuff); |