aboutsummaryrefslogtreecommitdiffstats
path: root/src/utils/signature_utils.ts
diff options
context:
space:
mode:
authorFabio Berger <me@fabioberger.com>2017-11-13 09:50:42 +0800
committerGitHub <noreply@github.com>2017-11-13 09:50:42 +0800
commitb0be323e899ea7be42b6c695b4fd6d526070b213 (patch)
tree86042b06c407b388e39be690d9a40db218f82675 /src/utils/signature_utils.ts
parent1392a855bb17981f7680548a23062842fb6dc4e0 (diff)
parenta22661670f105a2bf527aca0e803689e0302ed17 (diff)
downloaddexon-sol-tools-b0be323e899ea7be42b6c695b4fd6d526070b213.tar
dexon-sol-tools-b0be323e899ea7be42b6c695b4fd6d526070b213.tar.gz
dexon-sol-tools-b0be323e899ea7be42b6c695b4fd6d526070b213.tar.bz2
dexon-sol-tools-b0be323e899ea7be42b6c695b4fd6d526070b213.tar.lz
dexon-sol-tools-b0be323e899ea7be42b6c695b4fd6d526070b213.tar.xz
dexon-sol-tools-b0be323e899ea7be42b6c695b4fd6d526070b213.tar.zst
dexon-sol-tools-b0be323e899ea7be42b6c695b4fd6d526070b213.zip
Merge pull request #205 from 0xProject/orderWatcher
Order watcher
Diffstat (limited to 'src/utils/signature_utils.ts')
-rw-r--r--src/utils/signature_utils.ts15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/utils/signature_utils.ts b/src/utils/signature_utils.ts
index b312b5554..d066f8bf0 100644
--- a/src/utils/signature_utils.ts
+++ b/src/utils/signature_utils.ts
@@ -2,6 +2,21 @@ import * as ethUtil from 'ethereumjs-util';
import {ECSignature} from '../types';
export const signatureUtils = {
+ isValidSignature(data: string, signature: ECSignature, signerAddress: string): boolean {
+ const dataBuff = ethUtil.toBuffer(data);
+ 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 === signerAddress;
+ } catch (err) {
+ return false;
+ }
+ },
parseSignatureHexAsVRS(signatureHex: string): ECSignature {
const signatureBuffer = ethUtil.toBuffer(signatureHex);
let v = signatureBuffer[0];