Browse Source

interactive flag for get_alias

283
thomasv 13 years ago
parent
commit
d7132e5e9a
  1. 1
      client/electrum
  2. 24
      client/gui.py
  3. 1
      client/wallet.py

1
client/electrum

@ -243,6 +243,7 @@ if __name__ == '__main__':
elif cmd == 'eval': elif cmd == 'eval':
print eval(args[1]) print eval(args[1])
wallet.save()
elif cmd in [ 'addresses']: elif cmd in [ 'addresses']:
for addr in wallet.all_addresses(): for addr in wallet.all_addresses():

24
client/gui.py

@ -588,7 +588,7 @@ class BitcoinGUI:
r = r.strip() r = r.strip()
if re.match('^(|([\w\-\.]+)@)((\w[\w\-]+\.)+[\w\-]+)$', r): if re.match('^(|([\w\-\.]+)@)((\w[\w\-]+\.)+[\w\-]+)$', r):
try: try:
to_address = self.wallet.read_alias(r)[0] to_address = self.get_alias(r, interactive=False)
except: except:
continue continue
if to_address: if to_address:
@ -764,7 +764,7 @@ class BitcoinGUI:
def set_send_tab(self, payto, amount, message, label, identity, signature, cmd): def set_send_tab(self, payto, amount, message, label, identity, signature, cmd):
if signature: if signature:
signing_address = self.get_alias(identity) signing_address = self.get_alias(identity, interactive = True)
if not signing_address: if not signing_address:
return return
try: try:
@ -814,31 +814,33 @@ class BitcoinGUI:
dialog.destroy() dialog.destroy()
return result == gtk.RESPONSE_OK return result == gtk.RESPONSE_OK
def get_alias(self, r): def get_alias(self, alias, interactive = False):
try: try:
target, signing_address, auth_name = self.wallet.read_alias(r) target, signing_address, auth_name = self.wallet.read_alias(alias)
except BaseException, e: except BaseException, e:
# raise exception if verify fails (verify the chain) # raise exception if verify fails (verify the chain)
self.show_message("Alias error: " + e.message) self.show_message("Alias error: " + e.message)
return return
print target, signing_address, auth_name
if auth_name is None: if auth_name is None:
a = self.wallet.aliases.get(r) a = self.wallet.aliases.get(alias)
if not a: if not a:
if self.question( "Warning: the alias is self-signed. Do you want to trust address %s ?"%to_address ): if interactive and self.question( "Warning: the alias is self-signed. Do you want to trust address %s ?"%to_address ):
self.wallet.aliases[r] = signing_address self.wallet.aliases[r] = signing_address
else: else:
target = None target = None
else: else:
if signing_address != a: if signing_address != a:
if self.question( "Warning: the signing key of %s does not match its previously known value! It is possible that someone is trying to do something nasty!!!\nDo you wish to accept the new key?"%r ): if interactive and self.question( "Warning: the signing key of %s does not match its previously known value! It is possible that someone is trying to do something nasty!!!\nDo you wish to accept the new key?"%alias ):
self.wallet.aliases[r] = signing_address self.wallet.aliases[alias] = signing_address
else: else:
target = None target = None
else: else:
if signing_address not in self.wallet.authorities.keys(): if signing_address not in self.wallet.authorities.keys():
if self.question( "Warning: the alias '%s' was signed by %s [%s].\n\nDo you want to add this key to your list of trusted keys?"\ if interactive and self.question( "The alias: '%s' links to %s\n\nWarning: this alias was signed by an unknown key.\nSigning authority: %s\nSigning address: %s\n\nDo you want to add this key to your list of trusted keys?"\
%(r,auth_name,signing_address)): %(alias,target,auth_name,signing_address)):
self.wallet.authorities[signing_address] = auth_name self.wallet.authorities[signing_address] = auth_name
else: else:
target = None target = None
@ -857,7 +859,7 @@ class BitcoinGUI:
m2 = re.match('(|([\w\-\.]+)@)((\w[\w\-]+\.)+[\w\-]+) \<([1-9A-HJ-NP-Za-km-z]{26,})\>', r) m2 = re.match('(|([\w\-\.]+)@)((\w[\w\-]+\.)+[\w\-]+) \<([1-9A-HJ-NP-Za-km-z]{26,})\>', r)
if m1: if m1:
to_address = self.get_alias(r) to_address = self.get_alias(r, interactive = True)
if not to_address: if not to_address:
return return
elif m2: elif m2:

1
client/wallet.py

@ -410,6 +410,7 @@ class Wallet:
addr = public_key_to_bc_address( '04'.decode('hex') + public_key.to_string() ) addr = public_key_to_bc_address( '04'.decode('hex') + public_key.to_string() )
# print addr # print addr
if address != addr: if address != addr:
print "bad signature"
raise BaseException("Bad signature") raise BaseException("Bad signature")

Loading…
Cancel
Save