Add createCoordinatorApprovalTypedData method to order-utils and use in Coordinator tests
				
					
				
			This commit is contained in:
		@@ -1,5 +1,4 @@
 | 
				
			|||||||
import { eip712Utils, transactionHashUtils } from '@0x/order-utils';
 | 
					import { eip712Utils } from '@0x/order-utils';
 | 
				
			||||||
import { constants } from '@0x/order-utils/lib/src/constants';
 | 
					 | 
				
			||||||
import { SignedZeroExTransaction } from '@0x/types';
 | 
					import { SignedZeroExTransaction } from '@0x/types';
 | 
				
			||||||
import { BigNumber, signTypedDataUtils } from '@0x/utils';
 | 
					import { BigNumber, signTypedDataUtils } from '@0x/utils';
 | 
				
			||||||
import * as _ from 'lodash';
 | 
					import * as _ from 'lodash';
 | 
				
			||||||
@@ -11,25 +10,11 @@ export const hashUtils = {
 | 
				
			|||||||
        txOrigin: string,
 | 
					        txOrigin: string,
 | 
				
			||||||
        approvalExpirationTimeSeconds: BigNumber,
 | 
					        approvalExpirationTimeSeconds: BigNumber,
 | 
				
			||||||
    ): Buffer {
 | 
					    ): Buffer {
 | 
				
			||||||
        const domain = {
 | 
					        const typedData = eip712Utils.createCoordinatorApprovalTypedData(
 | 
				
			||||||
            name: constants.COORDINATOR_DOMAIN_NAME,
 | 
					            transaction,
 | 
				
			||||||
            version: constants.COORDINATOR_DOMAIN_VERSION,
 | 
					 | 
				
			||||||
            verifyingContractAddress,
 | 
					            verifyingContractAddress,
 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
        const transactionHash = transactionHashUtils.getTransactionHashHex(transaction);
 | 
					 | 
				
			||||||
        const approval = {
 | 
					 | 
				
			||||||
            txOrigin,
 | 
					            txOrigin,
 | 
				
			||||||
            transactionHash,
 | 
					            approvalExpirationTimeSeconds,
 | 
				
			||||||
            transactionSignature: transaction.signature,
 | 
					 | 
				
			||||||
            approvalExpirationTimeSeconds: approvalExpirationTimeSeconds.toString(),
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
        const typedData = eip712Utils.createTypedData(
 | 
					 | 
				
			||||||
            constants.COORDINATOR_APPROVAL_SCHEMA.name,
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                CoordinatorApproval: constants.COORDINATOR_APPROVAL_SCHEMA.parameters,
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            approval,
 | 
					 | 
				
			||||||
            domain,
 | 
					 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
        const hashBuffer = signTypedDataUtils.generateTypedDataHash(typedData);
 | 
					        const hashBuffer = signTypedDataUtils.generateTypedDataHash(typedData);
 | 
				
			||||||
        return hashBuffer;
 | 
					        return hashBuffer;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,11 +6,14 @@ import {
 | 
				
			|||||||
    EIP712TypedData,
 | 
					    EIP712TypedData,
 | 
				
			||||||
    EIP712Types,
 | 
					    EIP712Types,
 | 
				
			||||||
    Order,
 | 
					    Order,
 | 
				
			||||||
 | 
					    SignedZeroExTransaction,
 | 
				
			||||||
    ZeroExTransaction,
 | 
					    ZeroExTransaction,
 | 
				
			||||||
} from '@0x/types';
 | 
					} from '@0x/types';
 | 
				
			||||||
 | 
					import { BigNumber } from '@0x/utils';
 | 
				
			||||||
import * as _ from 'lodash';
 | 
					import * as _ from 'lodash';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { constants } from './constants';
 | 
					import { constants } from './constants';
 | 
				
			||||||
 | 
					import { transactionHashUtils } from './transaction_hash';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const eip712Utils = {
 | 
					export const eip712Utils = {
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -69,7 +72,7 @@ export const eip712Utils = {
 | 
				
			|||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Creates an ExecuteTransaction EIP712TypedData object for use with signTypedData and
 | 
					     * Creates an ExecuteTransaction EIP712TypedData object for use with signTypedData and
 | 
				
			||||||
     * 0x Exchange executeTransaction.
 | 
					     * 0x Exchange executeTransaction.
 | 
				
			||||||
     * @param   ZeroExTransaction the 0x transaction
 | 
					     * @param   zeroExTransaction the 0x transaction
 | 
				
			||||||
     * @return  A typed data object
 | 
					     * @return  A typed data object
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    createZeroExTransactionTypedData: (zeroExTransaction: ZeroExTransaction): EIP712TypedData => {
 | 
					    createZeroExTransactionTypedData: (zeroExTransaction: ZeroExTransaction): EIP712TypedData => {
 | 
				
			||||||
@@ -89,4 +92,40 @@ export const eip712Utils = {
 | 
				
			|||||||
        );
 | 
					        );
 | 
				
			||||||
        return typedData;
 | 
					        return typedData;
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Creates an Coordiantor typedData EIP712TypedData object for use with the Coordinator extension contract
 | 
				
			||||||
 | 
					     * @param   zeroExTransaction A 0x transaction
 | 
				
			||||||
 | 
					     * @param   verifyingContractAddress The coordinator extension contract address that will be verifying the typedData
 | 
				
			||||||
 | 
					     * @param   txOrigin The desired `tx.origin` that should be able to submit an Ethereum txn involving this 0x transaction
 | 
				
			||||||
 | 
					     * @param   approvalExpirationTimeSeconds The approvals expiration time
 | 
				
			||||||
 | 
					     * @return  A typed data object
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    createCoordinatorApprovalTypedData: (
 | 
				
			||||||
 | 
					        transaction: SignedZeroExTransaction,
 | 
				
			||||||
 | 
					        verifyingContractAddress: string,
 | 
				
			||||||
 | 
					        txOrigin: string,
 | 
				
			||||||
 | 
					        approvalExpirationTimeSeconds: BigNumber,
 | 
				
			||||||
 | 
					    ): EIP712TypedData => {
 | 
				
			||||||
 | 
					        const domain = {
 | 
				
			||||||
 | 
					            name: constants.COORDINATOR_DOMAIN_NAME,
 | 
				
			||||||
 | 
					            version: constants.COORDINATOR_DOMAIN_VERSION,
 | 
				
			||||||
 | 
					            verifyingContractAddress,
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        const transactionHash = transactionHashUtils.getTransactionHashHex(transaction);
 | 
				
			||||||
 | 
					        const approval = {
 | 
				
			||||||
 | 
					            txOrigin,
 | 
				
			||||||
 | 
					            transactionHash,
 | 
				
			||||||
 | 
					            transactionSignature: transaction.signature,
 | 
				
			||||||
 | 
					            approvalExpirationTimeSeconds: approvalExpirationTimeSeconds.toString(),
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        const typedData = eip712Utils.createTypedData(
 | 
				
			||||||
 | 
					            constants.COORDINATOR_APPROVAL_SCHEMA.name,
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                CoordinatorApproval: constants.COORDINATOR_APPROVAL_SCHEMA.parameters,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            approval,
 | 
				
			||||||
 | 
					            domain,
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					        return typedData;
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user