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 | |
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
-rw-r--r-- | package.json | 4 | ||||
-rw-r--r-- | packages/0x.js/CHANGELOG.md | 15 | ||||
-rw-r--r-- | packages/0x.js/package.json | 17 | ||||
-rw-r--r-- | packages/0x.js/src/0x.ts | 20 | ||||
-rw-r--r-- | packages/0x.js/src/utils/utils.ts | 6 | ||||
-rw-r--r-- | packages/0x.js/test/0x.js_test.ts | 20 | ||||
-rw-r--r-- | packages/0x.js/test/utils/order_factory.ts | 4 | ||||
-rw-r--r-- | packages/chai-as-promised-typescript-typings/package.json | 4 | ||||
-rw-r--r-- | packages/connect/package.json | 11 | ||||
-rw-r--r-- | packages/contracts/package.json | 6 | ||||
-rw-r--r-- | packages/tslint-config/package.json | 14 | ||||
-rw-r--r-- | packages/web3-typescript-typings/package.json | 4 | ||||
-rw-r--r-- | packages/website/package.json | 9 |
13 files changed, 70 insertions, 64 deletions
diff --git a/package.json b/package.json index dcb48c10d..435920d2c 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,8 @@ "workspaces": ["packages/*"], "scripts": { "testrpc": "testrpc -p 8545 --networkId 50 -m \"${npm_package_config_mnemonic}\"", - "prettier": "prettier --write '**/*.{ts,tsx,json,md}'", - "prettier:ci": "prettier --list-different '**/*.{ts,tsx,json,md}'", + "prettier": "prettier --write '**/*.{ts,tsx,json,md}' --config .prettierrc", + "prettier:ci": "prettier --list-different '**/*.{ts,tsx,json,md}' --config .prettierrc", "lerna:run": "lerna run", "lerna:rebuild": "lerna run clean; lerna run build;", "lerna:publish": diff --git a/packages/0x.js/CHANGELOG.md b/packages/0x.js/CHANGELOG.md index ec44bfc16..83c33ee1c 100644 --- a/packages/0x.js/CHANGELOG.md +++ b/packages/0x.js/CHANGELOG.md @@ -1,10 +1,21 @@ # CHANGELOG -## v0.30.1 - _TBD, 2018_ +## v0.31.0 - _January 30, 2018_ + + * Add the `shouldAddPersonalMessagePrefix` parameter to `signOrderHashAsync` so that the + caller can decide on whether to add the personalMessage prefix before relaying the request + to the signer. Parity Signer, Ledger and TestRPC add the prefix themselves, Metamask expects + it to have already been added. (#349) + +## v0.30.2 - _January 29, 2018_ + + * Add Rinkeby testnet addresses to artifacts (#337) + * Move @0xproject/types to dependencies from devDependencies fixing missing type errors + +## v0.30.1 - _January 24, 2018_ * Fix a bug allowing negative fill values (#212) * Fix a bug that made it impossible to pass a custom ZRX address (#341) - * Add Rinkeby testnet addresses to artifacts (#337) ## v0.30.0 - _January 17, 2018_ diff --git a/packages/0x.js/package.json b/packages/0x.js/package.json index 10d923501..465a2a753 100644 --- a/packages/0x.js/package.json +++ b/packages/0x.js/package.json @@ -2,27 +2,24 @@ "name": "0x.js", "version": "0.30.2", "description": "A javascript library for interacting with the 0x protocol", - "keywords": [ - "0x.js", - "0xproject", - "ethereum", - "tokens", - "exchange" - ], + "keywords": ["0x.js", "0xproject", "ethereum", "tokens", "exchange"], "main": "lib/src/index.js", "types": "lib/src/index.d.ts", "scripts": { "prebuild": "run-s clean generate_contract_wrappers", "build": "run-p build:umd:prod build:commonjs; exit 0;", "docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --json $JSON_FILE_PATH $PROJECT_DIR", - "upload_docs_json": "aws s3 cp generated_docs/index.json $S3_URL --profile 0xproject --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers --content-type application/json", - "generate_contract_wrappers": "node ../abi-gen/lib/index.js --abiGlob 'src/artifacts/@(Exchange|Token|TokenTransferProxy|EtherToken|TokenRegistry|DummyToken).json' --templates contract_templates --output src/contract_wrappers/generated", + "upload_docs_json": + "aws s3 cp generated_docs/index.json $S3_URL --profile 0xproject --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers --content-type application/json", + "generate_contract_wrappers": + "node ../abi-gen/lib/index.js --abiGlob 'src/artifacts/@(Exchange|Token|TokenTransferProxy|EtherToken|TokenRegistry|DummyToken).json' --templates contract_templates --output src/contract_wrappers/generated", "lint": "tslint --project . 'src/**/*.ts' 'test/**/*.ts'", "test:circleci": "run-s test:coverage report_test_coverage", "test": "run-s clean test:commonjs", "test:coverage": "nyc npm run test --all", "report_test_coverage": "nyc report --reporter=text-lcov | coveralls", - "update_contracts": "for i in ${npm_package_config_artifacts}; do copyfiles -u 4 ../contracts/build/contracts/$i.json ../0x.js/src/artifacts; done;", + "update_contracts": + "for i in ${npm_package_config_artifacts}; do copyfiles -u 4 ../contracts/build/contracts/$i.json ../0x.js/src/artifacts; done;", "clean": "shx rm -rf _bundles lib test_temp", "build:umd:prod": "NODE_ENV=production webpack", "build:commonjs": "tsc && copyfiles -u 2 './src/artifacts/**/*.json' ./lib/src/artifacts;", 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); diff --git a/packages/0x.js/src/utils/utils.ts b/packages/0x.js/src/utils/utils.ts index e42a1a853..42cf5d956 100644 --- a/packages/0x.js/src/utils/utils.ts +++ b/packages/0x.js/src/utils/utils.ts @@ -20,12 +20,6 @@ export const utils = { // tslint:disable-next-line: no-console console.log(message); }, - isParityNode(nodeVersion: string): boolean { - return _.includes(nodeVersion, 'Parity'); - }, - isTestRpc(nodeVersion: string): boolean { - return _.includes(nodeVersion, 'TestRPC'); - }, spawnSwitchErr(name: string, value: any): Error { return new Error(`Unexpected switch value: ${value} encountered for ${name}`); }, diff --git a/packages/0x.js/test/0x.js_test.ts b/packages/0x.js/test/0x.js_test.ts index 5bc2c149c..927fe20be 100644 --- a/packages/0x.js/test/0x.js_test.ts +++ b/packages/0x.js/test/0x.js_test.ts @@ -16,6 +16,8 @@ const blockchainLifecycle = new BlockchainLifecycle(constants.RPC_URL); chaiSetup.configure(); const expect = chai.expect; +const SHOULD_ADD_PERSONAL_MESSAGE_PREFIX = false; + describe('ZeroEx library', () => { const web3 = web3Factory.create(); const config = { @@ -198,7 +200,11 @@ describe('ZeroEx library', () => { r: '0x61a3ed31b43c8780e905a260a35faefcc527be7516aa11c0256729b5b351bc33', s: '0x40349190569279751135161d22529dc25add4f6069af05be04cacbda2ace2254', }; - const ecSignature = await zeroEx.signOrderHashAsync(orderHash, makerAddress); + const ecSignature = await zeroEx.signOrderHashAsync( + orderHash, + makerAddress, + SHOULD_ADD_PERSONAL_MESSAGE_PREFIX, + ); expect(ecSignature).to.deep.equal(expectedECSignature); }); it('should return the correct ECSignature for signatureHex concatenated as R + S + V', async () => { @@ -215,7 +221,11 @@ describe('ZeroEx library', () => { Sinon.stub(ZeroEx, 'isValidSignature').returns(true), ]; - const ecSignature = await zeroEx.signOrderHashAsync(orderHash, makerAddress); + const ecSignature = await zeroEx.signOrderHashAsync( + orderHash, + makerAddress, + SHOULD_ADD_PERSONAL_MESSAGE_PREFIX, + ); expect(ecSignature).to.deep.equal(expectedECSignature); }); it('should return the correct ECSignature for signatureHex concatenated as V + R + S', async () => { @@ -232,7 +242,11 @@ describe('ZeroEx library', () => { Sinon.stub(ZeroEx, 'isValidSignature').returns(true), ]; - const ecSignature = await zeroEx.signOrderHashAsync(orderHash, makerAddress); + const ecSignature = await zeroEx.signOrderHashAsync( + orderHash, + makerAddress, + SHOULD_ADD_PERSONAL_MESSAGE_PREFIX, + ); expect(ecSignature).to.deep.equal(expectedECSignature); }); }); diff --git a/packages/0x.js/test/utils/order_factory.ts b/packages/0x.js/test/utils/order_factory.ts index 60a7c5fb2..08f2081a4 100644 --- a/packages/0x.js/test/utils/order_factory.ts +++ b/packages/0x.js/test/utils/order_factory.ts @@ -3,6 +3,8 @@ import * as _ from 'lodash'; import { SignedOrder, ZeroEx } from '../../src'; +const SHOULD_ADD_PERSONAL_MESSAGE_PREFIX = false; + export const orderFactory = { async createSignedOrderAsync( zeroEx: ZeroEx, @@ -37,7 +39,7 @@ export const orderFactory = { expirationUnixTimestampSec, }; const orderHash = ZeroEx.getOrderHashHex(order); - const ecSignature = await zeroEx.signOrderHashAsync(orderHash, maker); + const ecSignature = await zeroEx.signOrderHashAsync(orderHash, maker, SHOULD_ADD_PERSONAL_MESSAGE_PREFIX); const signedOrder: SignedOrder = _.assign(order, { ecSignature }); return signedOrder; }, diff --git a/packages/chai-as-promised-typescript-typings/package.json b/packages/chai-as-promised-typescript-typings/package.json index bde308547..bea3d273d 100644 --- a/packages/chai-as-promised-typescript-typings/package.json +++ b/packages/chai-as-promised-typescript-typings/package.json @@ -9,9 +9,7 @@ "url": "git+https://github.com/0xProject/0x.js.git" }, "author": "Fabio Berger", - "contributors": [ - "Leonid Logvinov <logvinov.leon@gmail.com>" - ], + "contributors": ["Leonid Logvinov <logvinov.leon@gmail.com>"], "license": "Apache-2.0", "bugs": { "url": "https://github.com/0xProject/0x.js/issues" diff --git a/packages/connect/package.json b/packages/connect/package.json index e67947dd4..104e28803 100644 --- a/packages/connect/package.json +++ b/packages/connect/package.json @@ -2,20 +2,15 @@ "name": "@0xproject/connect", "version": "0.5.2", "description": "A javascript library for interacting with the standard relayer api", - "keywords": [ - "connect", - "0xproject", - "ethereum", - "tokens", - "exchange" - ], + "keywords": ["connect", "0xproject", "ethereum", "tokens", "exchange"], "main": "lib/src/index.js", "types": "lib/src/index.d.ts", "scripts": { "build": "tsc", "clean": "shx rm -rf _bundles lib test_temp", "docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --json $JSON_FILE_PATH $PROJECT_DIR", - "upload_docs_json": "aws s3 cp generated_docs/index.json $S3_URL --profile 0xproject --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers --content-type application/json", + "upload_docs_json": + "aws s3 cp generated_docs/index.json $S3_URL --profile 0xproject --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers --content-type application/json", "copy_test_fixtures": "copyfiles -u 2 './test/fixtures/**/*.json' ./lib/test/fixtures", "lint": "tslint --project . 'src/**/*.ts' 'test/**/*.ts'", "run_mocha": "mocha lib/test/**/*_test.js", diff --git a/packages/contracts/package.json b/packages/contracts/package.json index b3af7c55d..468607c16 100644 --- a/packages/contracts/package.json +++ b/packages/contracts/package.json @@ -8,9 +8,11 @@ "test": "test" }, "scripts": { - "build": "rm -rf ./lib; copyfiles ./build/**/* ./deploy/solc/solc_bin/* ./deploy/test/fixtures/contracts/**/* ./deploy/test/fixtures/contracts/* ./lib; tsc;", + "build": + "rm -rf ./lib; copyfiles ./build/**/* ./deploy/solc/solc_bin/* ./deploy/test/fixtures/contracts/**/* ./deploy/test/fixtures/contracts/* ./lib; tsc;", "test": "npm run build; truffle test", - "compile:comment": "Yarn workspaces do not link binaries correctly so we need to reference them directly https://github.com/yarnpkg/yarn/issues/3846", + "compile:comment": + "Yarn workspaces do not link binaries correctly so we need to reference them directly https://github.com/yarnpkg/yarn/issues/3846", "compile": "node ../deployer/lib/src/cli.js compile", "clean": "rm -rf ./lib", "migrate": "node ../deployer/lib/src/cli.js migrate", diff --git a/packages/tslint-config/package.json b/packages/tslint-config/package.json index fc015de26..8dd884370 100644 --- a/packages/tslint-config/package.json +++ b/packages/tslint-config/package.json @@ -8,22 +8,12 @@ "clean": "shx rm -rf lib", "lint": "tslint --project . 'rules/**/*.ts'" }, - "files": [ - "tslint.js", - "README.md", - "LICENSE" - ], + "files": ["tslint.js", "README.md", "LICENSE"], "repository": { "type": "git", "url": "git://github.com/0xProject/0x.js.git" }, - "keywords": [ - "tslint", - "config", - "0xProject", - "typescript", - "ts" - ], + "keywords": ["tslint", "config", "0xProject", "typescript", "ts"], "author": { "name": "Fabio Berger", "email": "fabio@0xproject.com" diff --git a/packages/web3-typescript-typings/package.json b/packages/web3-typescript-typings/package.json index 958a4a646..e0e433c93 100644 --- a/packages/web3-typescript-typings/package.json +++ b/packages/web3-typescript-typings/package.json @@ -12,9 +12,7 @@ "url": "git+https://github.com/0xProject/0x.js.git" }, "author": "Fabio Berger", - "contributors": [ - "Leonid Logvinov <logvinov.leon@gmail.com>" - ], + "contributors": ["Leonid Logvinov <logvinov.leon@gmail.com>"], "license": "Apache-2.0", "bugs": { "url": "https://github.com/0xProject/0x.js/issues" diff --git a/packages/website/package.json b/packages/website/package.json index 678893f59..6db74a20e 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -8,9 +8,12 @@ "clean": "shx rm -f public/bundle*", "lint": "tslint --project . 'ts/**/*.ts' 'ts/**/*.tsx'", "dev": "webpack-dev-server --content-base public --https", - "update_contracts": "for i in ${npm_package_config_artifacts}; do copyfiles -u 4 ../contracts/build/contracts/$i.json ../website/contracts; done;", - "deploy_staging": "npm run build; aws s3 sync ./public/. s3://staging-0xproject --profile 0xproject --region us-east-1 --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers", - "deploy_live": "npm run build; aws s3 sync ./public/. s3://0xproject.com --profile 0xproject --region us-east-1 --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers" + "update_contracts": + "for i in ${npm_package_config_artifacts}; do copyfiles -u 4 ../contracts/build/contracts/$i.json ../website/contracts; done;", + "deploy_staging": + "npm run build; aws s3 sync ./public/. s3://staging-0xproject --profile 0xproject --region us-east-1 --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers", + "deploy_live": + "npm run build; aws s3 sync ./public/. s3://0xproject.com --profile 0xproject --region us-east-1 --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers" }, "config": { "artifacts": "Mintable" |