aboutsummaryrefslogtreecommitdiffstats
path: root/packages/contracts/src/utils/order_factory.ts
diff options
context:
space:
mode:
authorAmir Bandeali <abandeali1@gmail.com>2018-03-08 08:05:43 +0800
committerAmir Bandeali <abandeali1@gmail.com>2018-04-21 04:56:16 +0800
commit3ff8a319c5460caaf9edc1bea68e807fe0611aaa (patch)
tree77c255e42d1dfcedad7f1692c9467e28cd9a3802 /packages/contracts/src/utils/order_factory.ts
parentcd8f8e1e4acc00e9e31265050456a4c98d79a7d4 (diff)
downloaddexon-sol-tools-3ff8a319c5460caaf9edc1bea68e807fe0611aaa.tar
dexon-sol-tools-3ff8a319c5460caaf9edc1bea68e807fe0611aaa.tar.gz
dexon-sol-tools-3ff8a319c5460caaf9edc1bea68e807fe0611aaa.tar.bz2
dexon-sol-tools-3ff8a319c5460caaf9edc1bea68e807fe0611aaa.tar.lz
dexon-sol-tools-3ff8a319c5460caaf9edc1bea68e807fe0611aaa.tar.xz
dexon-sol-tools-3ff8a319c5460caaf9edc1bea68e807fe0611aaa.tar.zst
dexon-sol-tools-3ff8a319c5460caaf9edc1bea68e807fe0611aaa.zip
Add utils for hashing and signing orders, update wrappers
Diffstat (limited to 'packages/contracts/src/utils/order_factory.ts')
-rw-r--r--packages/contracts/src/utils/order_factory.ts36
1 files changed, 17 insertions, 19 deletions
diff --git a/packages/contracts/src/utils/order_factory.ts b/packages/contracts/src/utils/order_factory.ts
index d5c3a9544..3f09cedf3 100644
--- a/packages/contracts/src/utils/order_factory.ts
+++ b/packages/contracts/src/utils/order_factory.ts
@@ -1,37 +1,35 @@
-import { Order, ZeroEx } from '0x.js';
+import { ZeroEx } from '0x.js';
import { BigNumber } from '@0xproject/utils';
-import { Web3Wrapper } from '@0xproject/web3-wrapper';
import * as _ from 'lodash';
-import { signedOrderUtils } from './signed_order_utils';
-import { DefaultOrderParams, SignedOrder } from './types';
+import { orderUtils } from './order_utils';
+import { signingUtils } from './signing_utils';
+import { DefaultOrderParams, SignatureType, SignedOrder, UnsignedOrder } from './types';
export class OrderFactory {
- private _defaultOrderParams: Partial<Order>;
- private _zeroEx: ZeroEx;
- constructor(zeroEx: ZeroEx, defaultOrderParams: Partial<Order>) {
+ private _defaultOrderParams: Partial<UnsignedOrder>;
+ private _secretKey: Buffer;
+ constructor(secretKey: Buffer, defaultOrderParams: Partial<UnsignedOrder>) {
this._defaultOrderParams = defaultOrderParams;
- this._zeroEx = zeroEx;
+ this._secretKey = secretKey;
}
- public async newSignedOrderAsync(customOrderParams: Partial<Order> = {}): Promise<SignedOrder> {
+ public newSignedOrder(
+ customOrderParams: Partial<UnsignedOrder> = {},
+ signatureType: SignatureType = SignatureType.Ecrecover,
+ ): SignedOrder {
const randomExpiration = new BigNumber(Math.floor((Date.now() + Math.random() * 100000000000) / 1000));
const order = ({
- expirationTimestampSeconds: randomExpiration,
+ expirationTimeSeconds: randomExpiration,
salt: ZeroEx.generatePseudoRandomSalt(),
takerAddress: ZeroEx.NULL_ADDRESS,
...this._defaultOrderParams,
...customOrderParams,
- } as any) as SignedOrder;
- const orderHashHex = signedOrderUtils.getOrderHashHex(order);
- const shouldAddPersonalMessagePrefix = false;
- const ecSignature = await this._zeroEx.signOrderHashAsync(
- orderHashHex,
- order.makerAddress,
- shouldAddPersonalMessagePrefix,
- );
+ } as any) as UnsignedOrder;
+ const orderHashBuff = orderUtils.getOrderHashBuff(order);
+ const signature = signingUtils.signMessage(orderHashBuff, this._secretKey, signatureType);
const signedOrder = {
...order,
- ecSignature,
+ signature: `0x${signature.toString('hex')}`,
};
return signedOrder;
}