aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabio Berger <me@fabioberger.com>2018-01-30 20:45:44 +0800
committerGitHub <noreply@github.com>2018-01-30 20:45:44 +0800
commit7603cef3084a33b8a55b3db363c7197694e7396c (patch)
tree907ca6c0b7773e1b8153ab84a44b56634e8833d5
parentad52a82190259580f00b3a06b06ef1e950ccdc68 (diff)
parentbe370c4e192b642eeaf52a970a2f0addf459605c (diff)
downloaddexon-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.json4
-rw-r--r--packages/0x.js/CHANGELOG.md15
-rw-r--r--packages/0x.js/package.json17
-rw-r--r--packages/0x.js/src/0x.ts20
-rw-r--r--packages/0x.js/src/utils/utils.ts6
-rw-r--r--packages/0x.js/test/0x.js_test.ts20
-rw-r--r--packages/0x.js/test/utils/order_factory.ts4
-rw-r--r--packages/chai-as-promised-typescript-typings/package.json4
-rw-r--r--packages/connect/package.json11
-rw-r--r--packages/contracts/package.json6
-rw-r--r--packages/tslint-config/package.json14
-rw-r--r--packages/web3-typescript-typings/package.json4
-rw-r--r--packages/website/package.json9
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"