add use_compressed_pubkeys field to keystores. fix #2973

This commit is contained in:
ThomasV 2017-10-04 13:04:21 +02:00
parent 6c215c895a
commit 0f4b5abc15
3 changed files with 7 additions and 6 deletions

View File

@ -617,10 +617,6 @@ def verify_message(address, sig, message):
print_error("Verification error: {0}".format(e)) print_error("Verification error: {0}".format(e))
return False return False
def sign_message_with_wif_privkey(sec, message):
txin_type, privkey, compressed = deserialize_privkey(sec)
key = regenerate_key(privkey)
return key.sign_message(message, compressed)
def encrypt_message(message, pubkey): def encrypt_message(message, pubkey):
return EC_KEY.encrypt_message(message, bfh(pubkey)) return EC_KEY.encrypt_message(message, bfh(pubkey))

View File

@ -88,7 +88,9 @@ class Software_KeyStore(KeyStore):
def sign_message(self, sequence, message, password): def sign_message(self, sequence, message, password):
sec = self.get_private_key(sequence, password) sec = self.get_private_key(sequence, password)
return sign_message_with_wif_privkey(sec, message) compressed = self.use_compressed_pubkeys
key = regenerate_key(privkey)
return key.sign_message(message, compressed)
def decrypt_message(self, sequence, message, password): def decrypt_message(self, sequence, message, password):
sec = self.get_private_key(sequence, password) sec = self.get_private_key(sequence, password)
@ -277,6 +279,7 @@ class BIP32_KeyStore(Deterministic_KeyStore, Xpub):
def __init__(self, d): def __init__(self, d):
Xpub.__init__(self) Xpub.__init__(self)
Deterministic_KeyStore.__init__(self, d) Deterministic_KeyStore.__init__(self, d)
self.use_compressed_pubkeys = True
self.xpub = d.get('xpub') self.xpub = d.get('xpub')
self.xprv = d.get('xprv') self.xprv = d.get('xprv')
@ -337,6 +340,7 @@ class Old_KeyStore(Deterministic_KeyStore):
def __init__(self, d): def __init__(self, d):
Deterministic_KeyStore.__init__(self, d) Deterministic_KeyStore.__init__(self, d)
self.mpk = d.get('mpk') self.mpk = d.get('mpk')
self.use_compressed_pubkeys = False
def get_hex_seed(self, password): def get_hex_seed(self, password):
return pw_decode(self.seed, password).encode('utf8') return pw_decode(self.seed, password).encode('utf8')

View File

@ -274,12 +274,13 @@ class Abstract_Wallet(PrintError):
return [] return []
index = self.get_address_index(address) index = self.get_address_index(address)
pk = self.keystore.get_private_key(index, password) pk = self.keystore.get_private_key(index, password)
compressed = self.keystore.use_compressed_pubkeys
if self.txin_type in ['p2sh', 'p2wsh', 'p2wsh-p2sh']: if self.txin_type in ['p2sh', 'p2wsh', 'p2wsh-p2sh']:
pubkeys = self.get_public_keys(address) pubkeys = self.get_public_keys(address)
redeem_script = self.pubkeys_to_redeem_script(pubkeys) redeem_script = self.pubkeys_to_redeem_script(pubkeys)
else: else:
redeem_script = None redeem_script = None
return bitcoin.serialize_privkey(pk, True, self.txin_type), redeem_script return bitcoin.serialize_privkey(pk, compressed, self.txin_type), redeem_script
def get_public_key(self, address): def get_public_key(self, address):
if self.keystore.can_import(): if self.keystore.can_import():