aboutsummaryrefslogtreecommitdiffstats
path: root/src/utils
diff options
context:
space:
mode:
authorLeonid Logvinov <logvinov.leon@gmail.com>2017-06-08 18:14:35 +0800
committerLeonid Logvinov <logvinov.leon@gmail.com>2017-06-08 18:14:35 +0800
commit8311203f73bf6eff8bcac8d1fb72f9cf8b65c45b (patch)
tree5bd5de97b456b87741660a2ed80e412f76764924 /src/utils
parentc6645f9f4f470323086d9004cf603a68091d71a3 (diff)
downloaddexon-sol-tools-8311203f73bf6eff8bcac8d1fb72f9cf8b65c45b.tar
dexon-sol-tools-8311203f73bf6eff8bcac8d1fb72f9cf8b65c45b.tar.gz
dexon-sol-tools-8311203f73bf6eff8bcac8d1fb72f9cf8b65c45b.tar.bz2
dexon-sol-tools-8311203f73bf6eff8bcac8d1fb72f9cf8b65c45b.tar.lz
dexon-sol-tools-8311203f73bf6eff8bcac8d1fb72f9cf8b65c45b.tar.xz
dexon-sol-tools-8311203f73bf6eff8bcac8d1fb72f9cf8b65c45b.tar.zst
dexon-sol-tools-8311203f73bf6eff8bcac8d1fb72f9cf8b65c45b.zip
Refactor isValidSignature
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/utils.ts16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/utils/utils.ts b/src/utils/utils.ts
index 5786bab07..ea3d8c7e1 100644
--- a/src/utils/utils.ts
+++ b/src/utils/utils.ts
@@ -4,6 +4,7 @@ import * as ethABI from 'ethereumjs-abi';
import * as ethUtil from 'ethereumjs-util';
import {Order, SignedOrder, SolidityTypes} from '../types';
import * as BigNumber from 'bignumber.js';
+import {ECSignature} from '../types';
export const utils = {
/**
@@ -50,6 +51,21 @@ export const utils = {
const hashHex = ethUtil.bufferToHex(hashBuff);
return hashHex;
},
+ isValidSignature(dataHex: string, signature: ECSignature, signerAddressHex: string): boolean {
+ const dataBuff = ethUtil.toBuffer(dataHex);
+ const msgHashBuff = ethUtil.hashPersonalMessage(dataBuff);
+ try {
+ const pubKey = ethUtil.ecrecover(
+ msgHashBuff,
+ signature.v,
+ ethUtil.toBuffer(signature.r),
+ ethUtil.toBuffer(signature.s));
+ const retrievedAddress = ethUtil.bufferToHex(ethUtil.pubToAddress(pubKey));
+ return retrievedAddress === signerAddressHex;
+ } catch (err) {
+ return false;
+ }
+ },
getCurrentUnixTimestamp(): BigNumber.BigNumber {
return new BigNumber(Date.now() / 1000);
},