deseed and reseed

This commit is contained in:
ThomasV 2012-05-13 01:32:28 +02:00
parent 2e1fd923b8
commit 6559eb4397
1 changed files with 40 additions and 9 deletions

View File

@ -24,8 +24,8 @@ from decimal import Decimal
from electrum import Wallet, SecretToASecret, WalletSynchronizer, format_satoshis
known_commands = ['help', 'validateaddress', 'balance', 'contacts', 'create', 'restore', 'payto', 'sendtx', 'password', 'addresses', 'history', 'label', 'mktx','seed','import','signmessage','verifymessage','eval','deseed']
offline_commands = ['password', 'mktx', 'history', 'label', 'contacts', 'help', 'validateaddress', 'signmessage', 'verifymessage', 'eval', 'create', 'addresses', 'import', 'seed','deseed']
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', 'history', 'label', 'contacts', 'help', 'validateaddress', 'signmessage', 'verifymessage', 'eval', 'create', 'addresses', 'import', 'seed','deseed','reseed']
protected_commands = ['payto', 'password', 'mktx', 'seed', 'import','signmessage' ]
if __name__ == '__main__':
@ -248,14 +248,45 @@ if __name__ == '__main__':
print seed, '"'+' '.join(mnemonic.mn_encode(seed))+'"'
elif cmd == 'deseed':
print "Warning: you are going to remove the seed from this wallet, which will forbid to send coins.\nPlease make sure that you have saved the seed elsewhere."
if raw_input("Are you sure you want to continue? (y/n) ") in ['y','Y','yes']:
wallet.seed = ''
wallet.use_encryption = False
wallet.save()
print "Done."
if not wallet.seed:
print "This wallet has no seed"
else:
print "Action canceled."
ns = options.wallet_path+'.seed'
print "Warning: you are going to extract the seed from '%s'\nThe seed will be saved in '%s'"%(options.wallet_path,ns)
if raw_input("Are you sure you want to continue? (y/n) ") in ['y','Y','yes']:
f = open(ns,'w')
f.write(wallet.seed)
f.close()
wallet.seed = ''
wallet.use_encryption = False
wallet.save()
print "Done."
else:
print "Action canceled."
elif cmd == 'reseed':
if wallet.seed:
print "This wallet already has a seed"
else:
ns = options.wallet_path+'.seed'
try:
f = open(ns,'r')
seed = f.read()
f.close()
except:
print "seed file not found"
sys.exit()
mpk = wallet.master_public_key
wallet.seed = seed
wallet.use_encryption = False
wallet.init_mpk(seed)
if mpk == wallet.master_public_key:
wallet.save()
print "done"
else:
print "error: master public key does not match"
elif cmd == 'validateaddress':
addr = args[1]