Fix TSLint rules
This commit is contained in:
@@ -17,7 +17,8 @@ const INVALID_TAKER_FORMAT = 'instance.taker is not of a type(s) string';
|
||||
* We do not use BN anywhere else in the codebase.
|
||||
*/
|
||||
function bigNumberToBN(value: BigNumber): BN {
|
||||
return new BN(value.toString(), 10);
|
||||
const base = 10;
|
||||
return new BN(value.toString(), base);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -72,6 +72,7 @@ export async function signOrderHashAsync(
|
||||
// v + r + s OR r + s + v, and different clients (even different versions of the same client)
|
||||
// return the signature params in different orders. In order to support all client implementations,
|
||||
// we parse the signature in both ways, and evaluate if either one is a valid signature.
|
||||
// tslint:disable-next-line:custom-no-magic-numbers
|
||||
const validVParamValues = [27, 28];
|
||||
const ecSignatureVRS = parseSignatureHexAsVRS(signature);
|
||||
if (_.includes(validVParamValues, ecSignatureVRS.v)) {
|
||||
@@ -95,11 +96,19 @@ export async function signOrderHashAsync(
|
||||
function parseSignatureHexAsVRS(signatureHex: string): ECSignature {
|
||||
const signatureBuffer = ethUtil.toBuffer(signatureHex);
|
||||
let v = signatureBuffer[0];
|
||||
if (v < 27) {
|
||||
v += 27;
|
||||
// HACK: Sometimes v is returned as [0, 1] and sometimes as [27, 28]
|
||||
// If it is returned as [0, 1], add 27 to both so it becomes [27, 28]
|
||||
const lowestValidV = 27;
|
||||
const isProperlyFormattedV = v < lowestValidV;
|
||||
if (!isProperlyFormattedV) {
|
||||
v += lowestValidV;
|
||||
}
|
||||
const r = signatureBuffer.slice(1, 33);
|
||||
const s = signatureBuffer.slice(33, 65);
|
||||
// signatureBuffer contains vrs
|
||||
const vEndIndex = 1;
|
||||
const rsIndex = 33;
|
||||
const r = signatureBuffer.slice(vEndIndex, rsIndex);
|
||||
const sEndIndex = 65;
|
||||
const s = signatureBuffer.slice(rsIndex, sEndIndex);
|
||||
const ecSignature: ECSignature = {
|
||||
v,
|
||||
r: ethUtil.bufferToHex(r),
|
||||
|
||||
@@ -46,12 +46,13 @@ describe('Signature utils', () => {
|
||||
});
|
||||
describe('#generateSalt', () => {
|
||||
it('generates different salts', () => {
|
||||
const equal = generatePseudoRandomSalt().eq(generatePseudoRandomSalt());
|
||||
expect(equal).to.be.false();
|
||||
const isEqual = generatePseudoRandomSalt().eq(generatePseudoRandomSalt());
|
||||
expect(isEqual).to.be.false();
|
||||
});
|
||||
it('generates salt in range [0..2^256)', () => {
|
||||
const salt = generatePseudoRandomSalt();
|
||||
expect(salt.greaterThanOrEqualTo(0)).to.be.true();
|
||||
// tslint:disable-next-line:custom-no-magic-numbers
|
||||
const twoPow256 = new BigNumber(2).pow(256);
|
||||
expect(salt.lessThan(twoPow256)).to.be.true();
|
||||
});
|
||||
@@ -66,7 +67,8 @@ describe('Signature utils', () => {
|
||||
expect(isValid).to.be.false();
|
||||
});
|
||||
it('returns true if order hash is correct', () => {
|
||||
const isValid = isValidOrderHash('0x' + Array(65).join('0'));
|
||||
const orderHashLength = 65;
|
||||
const isValid = isValidOrderHash('0x' + Array(orderHashLength).join('0'));
|
||||
expect(isValid).to.be.true();
|
||||
});
|
||||
});
|
||||
@@ -110,10 +112,12 @@ describe('Signature utils', () => {
|
||||
if (payload.method === 'eth_sign') {
|
||||
const [address, message] = payload.params;
|
||||
const signature = await web3Wrapper.signMessageAsync(address, message);
|
||||
// tslint:disable-next-line:custom-no-magic-numbers
|
||||
const rsvHex = `0x${signature.substr(130)}${signature.substr(2, 128)}`;
|
||||
callback(null, {
|
||||
id: 42,
|
||||
jsonrpc: '2.0',
|
||||
result: `0x${signature.substr(130)}${signature.substr(2, 128)}`,
|
||||
result: rsvHex,
|
||||
});
|
||||
} else {
|
||||
callback(null, { id: 42, jsonrpc: '2.0', result: [makerAddress] });
|
||||
|
||||
Reference in New Issue
Block a user