aboutsummaryrefslogtreecommitdiffstats
path: root/packages/contracts/src/utils/eip712_utils.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/contracts/src/utils/eip712_utils.ts')
-rw-r--r--packages/contracts/src/utils/eip712_utils.ts63
1 files changed, 0 insertions, 63 deletions
diff --git a/packages/contracts/src/utils/eip712_utils.ts b/packages/contracts/src/utils/eip712_utils.ts
deleted file mode 100644
index 07b45c8af..000000000
--- a/packages/contracts/src/utils/eip712_utils.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-import { BigNumber } from '@0xproject/utils';
-import ethUtil = require('ethereumjs-util');
-import * as _ from 'lodash';
-
-import { crypto } from './crypto';
-import { EIP712Schema } from './types';
-
-const EIP191_PREFIX = '\x19\x01';
-const EIP712_DOMAIN_NAME = '0x Protocol';
-const EIP712_DOMAIN_VERSION = '1';
-
-const EIP712_DOMAIN_SCHEMA: EIP712Schema = {
- name: 'DomainSeparator',
- parameters: [
- { name: 'name', type: 'string' },
- { name: 'version', type: 'string' },
- { name: 'contract', type: 'address' },
- ],
-};
-
-export const EIP712Utils = {
- compileSchema(schema: EIP712Schema): Buffer {
- const namedTypes = _.map(schema.parameters, parameter => `${parameter.type} ${parameter.name}`);
- const namedTypesJoined = namedTypes.join(',');
- const eip712Schema = `${schema.name}(${namedTypesJoined})`;
- const eip712SchemaHashBuffer = crypto.solSHA3([eip712Schema]);
- return eip712SchemaHashBuffer;
- },
- createEIP712Message(hashStruct: string, contractAddress: string): Buffer {
- const domainSeparatorHashHex = EIP712Utils.getDomainSeparatorHashHex(contractAddress);
- const messageBuff = crypto.solSHA3([
- EIP191_PREFIX,
- new BigNumber(domainSeparatorHashHex),
- new BigNumber(hashStruct),
- ]);
- return messageBuff;
- },
- getDomainSeparatorSchemaBuffer(): Buffer {
- return EIP712Utils.compileSchema(EIP712_DOMAIN_SCHEMA);
- },
- getDomainSeparatorHashHex(exchangeAddress: string): string {
- const domainSeparatorSchemaBuffer = EIP712Utils.getDomainSeparatorSchemaBuffer();
- const nameHash = crypto.solSHA3([EIP712_DOMAIN_NAME]);
- const versionHash = crypto.solSHA3([EIP712_DOMAIN_VERSION]);
- const domainSeparatorHashBuff = crypto.solSHA3([
- domainSeparatorSchemaBuffer,
- nameHash,
- versionHash,
- EIP712Utils.pad32Address(exchangeAddress),
- ]);
- const domainSeparatorHashHex = `0x${domainSeparatorHashBuff.toString('hex')}`;
- return domainSeparatorHashHex;
- },
- pad32Address(address: string): Buffer {
- const addressBuffer = ethUtil.toBuffer(address);
- const addressPadded = EIP712Utils.pad32Buffer(addressBuffer);
- return addressPadded;
- },
- pad32Buffer(buffer: Buffer): Buffer {
- const bufferPadded = ethUtil.setLengthLeft(buffer, 32);
- return bufferPadded;
- },
-};