pass hash to pubkey_from_signature
This commit is contained in:
parent
d4dcd551e4
commit
31ab5b2e0a
|
@ -486,14 +486,14 @@ def msg_magic(message):
|
||||||
|
|
||||||
def verify_message(address, sig, message):
|
def verify_message(address, sig, message):
|
||||||
try:
|
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
|
# check public key using the address
|
||||||
pubkey = point_to_ser(public_key.pubkey.point, compressed)
|
pubkey = point_to_ser(public_key.pubkey.point, compressed)
|
||||||
addr = public_key_to_p2pkh(pubkey)
|
addr = public_key_to_p2pkh(pubkey)
|
||||||
if address != addr:
|
if address != addr:
|
||||||
raise Exception("Bad signature")
|
raise Exception("Bad signature")
|
||||||
# check message
|
# check message
|
||||||
h = Hash(msg_magic(message))
|
|
||||||
public_key.verify_digest(sig[1:], h, sigdecode = ecdsa.util.sigdecode_string)
|
public_key.verify_digest(sig[1:], h, sigdecode = ecdsa.util.sigdecode_string)
|
||||||
return True
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
@ -575,7 +575,7 @@ class MyVerifyingKey(ecdsa.VerifyingKey):
|
||||||
return klass.from_public_point( Q, curve )
|
return klass.from_public_point( Q, curve )
|
||||||
|
|
||||||
|
|
||||||
def pubkey_from_signature(sig, message):
|
def pubkey_from_signature(sig, h):
|
||||||
if len(sig) != 65:
|
if len(sig) != 65:
|
||||||
raise Exception("Wrong encoding")
|
raise Exception("Wrong encoding")
|
||||||
nV = ord(sig[0])
|
nV = ord(sig[0])
|
||||||
|
@ -587,7 +587,6 @@ def pubkey_from_signature(sig, message):
|
||||||
else:
|
else:
|
||||||
compressed = False
|
compressed = False
|
||||||
recid = nV - 27
|
recid = nV - 27
|
||||||
h = Hash(msg_magic(message))
|
|
||||||
return MyVerifyingKey.from_signature(sig[1:], recid, h, curve = SECP256k1), compressed
|
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):
|
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
|
# check public key
|
||||||
if point_to_ser(public_key.pubkey.point, compressed) != point_to_ser(self.pubkey.point, compressed):
|
if point_to_ser(public_key.pubkey.point, compressed) != point_to_ser(self.pubkey.point, compressed):
|
||||||
raise Exception("Bad signature")
|
raise Exception("Bad signature")
|
||||||
# check message
|
# check message
|
||||||
h = Hash(msg_magic(message))
|
|
||||||
public_key.verify_digest(sig[1:], h, sigdecode = ecdsa.util.sigdecode_string)
|
public_key.verify_digest(sig[1:], h, sigdecode = ecdsa.util.sigdecode_string)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue