do not derive private keys when there is no seed

This commit is contained in:
ThomasV 2012-05-14 21:31:37 +02:00
parent 04d78a3bf4
commit e34f7dce7f
3 changed files with 9 additions and 4 deletions

View File

@ -35,7 +35,7 @@ import electrum
from optparse import OptionParser
from decimal import Decimal
from electrum import Wallet, SecretToASecret, WalletSynchronizer, format_satoshis
from electrum import Wallet, WalletSynchronizer, format_satoshis
known_commands = ['help', 'validateaddress', 'balance', 'contacts', 'create', 'restore', 'payto', 'sendtx', 'password', 'addresses', 'history', 'label', 'mktx','seed','import','signmessage','verifymessage','eval','deseed','reseed']
offline_commands = ['password', 'mktx', 'label', 'contacts', 'help', 'validateaddress', 'signmessage', 'verifymessage', 'eval', 'create', 'addresses', 'import', 'seed','deseed','reseed']
@ -361,8 +361,7 @@ if __name__ == '__main__':
b = "%d %d %s"%(no, ni, str(Decimal(wallet.get_addr_balance(addr)[0])/100000000))
else: b=''
if options.show_keys:
pk = wallet.get_private_key(addr, password)
addr = addr + ':' + SecretToASecret(pk)
addr += ':' + str(wallet.get_private_key_base58(addr, password))
print addr, b, _type, label
if cmd == 'history':

View File

@ -1,3 +1,3 @@
from wallet import Wallet, SecretToASecret, format_satoshis
from wallet import Wallet, format_satoshis
from interface import WalletSynchronizer
from interface import TcpStratumInterface

View File

@ -371,6 +371,11 @@ class Wallet:
def get_sequence(self,n,for_change):
return string_to_number( Hash( "%d:%d:"%(n,for_change) + self.master_public_key ) )
def get_private_key_base58(self, address, password):
pk = self.get_private_key(address, password)
if pk is None: return None
return SecretToASecret( pk )
def get_private_key(self, address, password):
""" Privatekey(type,n) = Master_private_key + H(n|S|type) """
order = generator_secp256k1.order()
@ -388,6 +393,7 @@ class Wallet:
for_change = True
else:
raise BaseException("unknown address")
if not self.seed: return None
try:
seed = self.pw_decode( self.seed, password)
except: