|
|
|
|
@ -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) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|