diff options
author | Brandon Millman <brandon@0xproject.com> | 2018-02-07 08:15:25 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-07 08:15:25 +0800 |
commit | 562bcb85710c281d817c7dd4957f0a7db1ddc306 (patch) | |
tree | 3a96355adab7a5ee7c9a203ad4247ef356d35668 /packages/testnet-faucets/src/ts/id_management.ts | |
parent | 00c07b38a42c82d7c37835234d7f81236b0342ce (diff) | |
parent | f44bfa9682544a8fc50ef9221991982fd665f9f5 (diff) | |
download | dexon-sol-tools-562bcb85710c281d817c7dd4957f0a7db1ddc306.tar dexon-sol-tools-562bcb85710c281d817c7dd4957f0a7db1ddc306.tar.gz dexon-sol-tools-562bcb85710c281d817c7dd4957f0a7db1ddc306.tar.bz2 dexon-sol-tools-562bcb85710c281d817c7dd4957f0a7db1ddc306.tar.lz dexon-sol-tools-562bcb85710c281d817c7dd4957f0a7db1ddc306.tar.xz dexon-sol-tools-562bcb85710c281d817c7dd4957f0a7db1ddc306.tar.zst dexon-sol-tools-562bcb85710c281d817c7dd4957f0a7db1ddc306.zip |
Merge pull request #352 from 0xProject/feature/testnet-faucets/order-dispenser
Add order signing and dispensing ability to faucet
Diffstat (limited to 'packages/testnet-faucets/src/ts/id_management.ts')
-rw-r--r-- | packages/testnet-faucets/src/ts/id_management.ts | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/packages/testnet-faucets/src/ts/id_management.ts b/packages/testnet-faucets/src/ts/id_management.ts index db9b610a3..7c598f91c 100644 --- a/packages/testnet-faucets/src/ts/id_management.ts +++ b/packages/testnet-faucets/src/ts/id_management.ts @@ -1,8 +1,10 @@ import EthereumTx = require('ethereumjs-tx'); +import * as ethUtil from 'ethereumjs-util'; +import * as _ from 'lodash'; import { configs } from './configs'; -type Callback = (err: Error | null, accounts: any) => void; +type Callback = (err: Error | null, result: any) => void; export const idManagement = { getAccounts(callback: Callback) { @@ -18,4 +20,16 @@ export const idManagement = { const rawTx = `0x${tx.serialize().toString('hex')}`; callback(null, rawTx); }, + signMessage(message: object, callback: Callback) { + const dataIfExists = _.get(message, 'data'); + if (_.isUndefined(dataIfExists)) { + callback(new Error('NO_DATA_TO_SIGN'), null); + } + const privateKeyBuffer = new Buffer(configs.DISPENSER_PRIVATE_KEY as string, 'hex'); + const dataBuff = ethUtil.toBuffer(dataIfExists); + const msgHashBuff = ethUtil.hashPersonalMessage(dataBuff); + const sig = ethUtil.ecsign(msgHashBuff, privateKeyBuffer); + const rpcSig = ethUtil.toRpcSig(sig.v, sig.r, sig.s); + callback(null, rpcSig); + }, }; |