pass hash to pubkey_from_signature

This commit is contained in:
ThomasV 2017-06-15 10:03:18 +02:00
parent d4dcd551e4
commit 31ab5b2e0a
1 changed files with 5 additions and 6 deletions

View File

@ -486,14 +486,14 @@ def msg_magic(message):
def verify_message(address, sig, message):
try:
public_key, compressed = pubkey_from_signature(sig, message)
h = Hash(msg_magic(message))
public_key, compressed = pubkey_from_signature(sig, h)
# check public key using the address
pubkey = point_to_ser(public_key.pubkey.point, compressed)
addr = public_key_to_p2pkh(pubkey)
if address != addr:
raise Exception("Bad signature")
# check message
h = Hash(msg_magic(message))
public_key.verify_digest(sig[1:], h, sigdecode = ecdsa.util.sigdecode_string)
return True
except Exception as e:
@ -575,7 +575,7 @@ class MyVerifyingKey(ecdsa.VerifyingKey):
return klass.from_public_point( Q, curve )
def pubkey_from_signature(sig, message):
def pubkey_from_signature(sig, h):
if len(sig) != 65:
raise Exception("Wrong encoding")
nV = ord(sig[0])
@ -587,7 +587,6 @@ def pubkey_from_signature(sig, message):
else:
compressed = False
recid = nV - 27
h = Hash(msg_magic(message))
return MyVerifyingKey.from_signature(sig[1:], recid, h, curve = SECP256k1), compressed
@ -636,12 +635,12 @@ class EC_KEY(object):
def verify_message(self, sig, message):
public_key, compressed = pubkey_from_signature(sig, message)
h = Hash(msg_magic(message))
public_key, compressed = pubkey_from_signature(sig, h)
# check public key
if point_to_ser(public_key.pubkey.point, compressed) != point_to_ser(self.pubkey.point, compressed):
raise Exception("Bad signature")
# check message
h = Hash(msg_magic(message))
public_key.verify_digest(sig[1:], h, sigdecode = ecdsa.util.sigdecode_string)