Browse Source

passwords

283
ThomasV 13 years ago
parent
commit
9156375d10
  1. 107
      client/electrum4a.py

107
client/electrum4a.py

@ -23,13 +23,13 @@ from interface import WalletSynchronizer
from wallet import Wallet
from wallet import format_satoshis
from decimal import Decimal
import mnemonic
import datetime
def modal_dialog(title, msg):
def modal_dialog(title, msg = ''):
droid.dialogCreateAlert(title,msg)
droid.dialogSetPositiveButtonText('OK')
droid.dialogShow()
@ -273,21 +273,6 @@ payto_layout = make_layout("""
settings_layout = make_layout("""
<TextView android:id="@+id/feeTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Fee:"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="left">
</TextView>
<EditText android:id="@+id/fee"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:tag="Tag Me"
android:inputType="numberDecimal">
</EditText>
<TextView android:id="@+id/serverTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@ -320,6 +305,20 @@ settings_layout = make_layout("""
</LinearLayout>
<TextView android:id="@+id/feeTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Fee:"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="left">
</TextView>
<EditText android:id="@+id/fee"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:tag="Tag Me"
android:inputType="numberDecimal">
</EditText>
<Button android:id="@+id/buttonSave" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="Save"></Button>
@ -488,11 +487,14 @@ def recover():
else:
exit(1)
if not modal_question('Seed', seed):
if not modal_question('Seed', seed ):
exit(1)
wallet.seed = str(seed)
wallet.init_mpk( wallet.seed )
change_password_dialog()
droid.dialogCreateSpinnerProgress("Electrum", "recovering wallet...")
droid.dialogShow()
WalletSynchronizer(wallet,True).start()
@ -505,10 +507,11 @@ def recover():
# history and addressbook
wallet.update_tx_history()
wallet.fill_addressbook()
wallet.save()
modal_dialog("recovery successful")
else:
modal_dialog("no transactions found for this seed")
if not modal_question("no transactions found for this seed","do you want to keep this wallet?"):
exit(1)
wallet.save()
@ -655,6 +658,43 @@ def server_dialog(plist):
return response
def seed_dialog():
if wallet.use_encryption:
password = droid.dialogGetPassword('Password').result
if not password: return
else:
password = None
try:
seed = wallet.pw_decode( wallet.seed, password)
except:
modal_dialog('error','incorrect password')
return
modal_dialog('Your seed is',seed)
modal_dialog('Mnemonic code:', ' '.join(mnemonic.mn_encode(seed)) )
def change_password_dialog():
if wallet.use_encryption:
password = droid.dialogGetPassword('Current password').result
if not password: return
else:
password = None
try:
seed = wallet.pw_decode( wallet.seed, password)
except:
modal_dialog('error','incorrect password')
return
new_password = droid.dialogGetPassword('Choose a password').result
password2 = droid.dialogGetPassword('Confirm new password').result
if new_password != password2:
modal_dialog('error','passwords do not match')
return
if new_password:
wallet.update_password(seed, new_password)
def settings_loop():
@ -696,8 +736,8 @@ def settings_loop():
if server:
droid.fullSetProperty("server","text",server)
elif id=="buttonSave":
elif id=="buttonSave":
droid.fullQuery()
srv = droid.fullQueryDetail("server").result.get('text')
fee = droid.fullQueryDetail("fee").result.get('text')
@ -714,20 +754,22 @@ def settings_loop():
except:
modal_dialog('error','invalid fee value')
out = 'main'
elif event["name"] in menu_commands:
out = event["name"]
elif id=="buttonCancel":
out = 'main'
elif event["name"] == 'password':
change_password_dialog()
elif event["name"] == 'seed':
seed_dialog()
elif event["name"] == 'cancel':
out = 'main'
elif event["name"] == "key":
if event["data"]["key"] == '4':
out = 'main'
elif event["name"] in menu_commands:
out = event["name"]
return out
@ -743,7 +785,6 @@ wallet.set_path("/sdcard/electrum.dat")
wallet.read()
if not wallet.file_exists:
recover()
exit(1)
else:
WalletSynchronizer(wallet,True).start()
@ -765,11 +806,13 @@ def add_menu(s):
#droid.addOptionsMenuItem("Edit label","editcontact",None,"")
#droid.addOptionsMenuItem("Delete","removecontact",None,"")
elif s == 'settings':
droid.addOptionsMenuItem("Save","save",None,"")
droid.addOptionsMenuItem("Cancel","cancel",None,"")
droid.addOptionsMenuItem("Password","password",None,"")
droid.addOptionsMenuItem("Seed","seed",None,"")
while True:
add_menu(s)
if s == 'main':

Loading…
Cancel
Save