reformatting
This commit is contained in:
parent
15632adb40
commit
7933ac4324
|
@ -468,6 +468,7 @@ class MyVerifyingKey(ecdsa.VerifyingKey):
|
||||||
|
|
||||||
|
|
||||||
class EC_KEY(object):
|
class EC_KEY(object):
|
||||||
|
|
||||||
def __init__( self, k ):
|
def __init__( self, k ):
|
||||||
secret = string_to_number(k)
|
secret = string_to_number(k)
|
||||||
self.pubkey = ecdsa.ecdsa.Public_key( generator_secp256k1, generator_secp256k1 * secret )
|
self.pubkey = ecdsa.ecdsa.Public_key( generator_secp256k1, generator_secp256k1 * secret )
|
||||||
|
@ -483,21 +484,20 @@ class EC_KEY(object):
|
||||||
signature = private_key.sign_digest_deterministic( Hash( msg_magic(message) ), hashfunc=hashlib.sha256, sigencode = ecdsa.util.sigencode_string )
|
signature = private_key.sign_digest_deterministic( Hash( msg_magic(message) ), hashfunc=hashlib.sha256, sigencode = ecdsa.util.sigencode_string )
|
||||||
assert public_key.verify_digest( signature, Hash( msg_magic(message) ), sigdecode = ecdsa.util.sigdecode_string)
|
assert public_key.verify_digest( signature, Hash( msg_magic(message) ), sigdecode = ecdsa.util.sigdecode_string)
|
||||||
for i in range(4):
|
for i in range(4):
|
||||||
sig = base64.b64encode( chr(27 + i + (4 if compressed else 0)) + signature )
|
sig = base64.b64encode(chr(27 + i + (4 if compressed else 0)) + signature)
|
||||||
try:
|
try:
|
||||||
self.verify_message( address, sig, message)
|
self.verify_message(address, sig, message)
|
||||||
return sig
|
return sig
|
||||||
except Exception:
|
except Exception:
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
raise Exception("error: cannot sign message")
|
raise Exception("error: cannot sign message")
|
||||||
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def verify_message(self, address, signature, message):
|
def verify_message(self, address, signature, message):
|
||||||
sig = base64.b64decode(signature)
|
sig = base64.b64decode(signature)
|
||||||
if len(sig) != 65: raise Exception("Wrong encoding")
|
if len(sig) != 65:
|
||||||
|
raise Exception("Wrong encoding")
|
||||||
nV = ord(sig[0])
|
nV = ord(sig[0])
|
||||||
if nV < 27 or nV >= 35:
|
if nV < 27 or nV >= 35:
|
||||||
raise Exception("Bad encoding")
|
raise Exception("Bad encoding")
|
||||||
|
@ -506,16 +506,15 @@ class EC_KEY(object):
|
||||||
nV -= 4
|
nV -= 4
|
||||||
else:
|
else:
|
||||||
compressed = False
|
compressed = False
|
||||||
|
|
||||||
recid = nV - 27
|
recid = nV - 27
|
||||||
h = Hash( msg_magic(message) )
|
|
||||||
public_key = MyVerifyingKey.from_signature( sig[1:], recid, h, curve = SECP256k1 )
|
|
||||||
|
|
||||||
|
h = Hash(msg_magic(message))
|
||||||
|
public_key = MyVerifyingKey.from_signature(sig[1:], recid, h, curve = SECP256k1)
|
||||||
# check public key
|
# check public key
|
||||||
public_key.verify_digest( sig[1:], h, sigdecode = ecdsa.util.sigdecode_string)
|
public_key.verify_digest(sig[1:], h, sigdecode = ecdsa.util.sigdecode_string)
|
||||||
|
pubkey = point_to_ser(public_key.pubkey.point, compressed)
|
||||||
# check that we get the original signing address
|
# check that we get the original signing address
|
||||||
addr = public_key_to_bc_address( point_to_ser(public_key.pubkey.point, compressed) )
|
addr = public_key_to_bc_address(pubkey)
|
||||||
if address != addr:
|
if address != addr:
|
||||||
raise Exception("Bad signature")
|
raise Exception("Bad signature")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue