Improved new password prompting
This commit is contained in:
parent
ea449e652a
commit
3c0eb1d26c
5 changed files with 20 additions and 19 deletions
|
|
@ -79,9 +79,8 @@ def generate_addrs(seed, addrnums, opts):
|
|||
t_addrs,num,pos,out = len(addrnums),0,0,[]
|
||||
addrnums.sort() # needed only if caller didn't sort
|
||||
|
||||
ws = 'key' if 'keys' in opts['gen_what'] else 'address'
|
||||
if t_addrs == 1: wp = ws
|
||||
else: wp = ws+"s" if ws == 'key' else ws+"es"
|
||||
ws,wp = ('key','keys') if 'keys' in opts['gen_what'] \
|
||||
else ('address','addresses')
|
||||
|
||||
while pos != t_addrs:
|
||||
seed = sha512(seed).digest()
|
||||
|
|
@ -104,7 +103,7 @@ def generate_addrs(seed, addrnums, opts):
|
|||
|
||||
out.append(eval("addrinfo("+addrinfo_args+")"))
|
||||
|
||||
qmsg("\rGenerated %s %s%s"%(t_addrs, wp, " "*15))
|
||||
qmsg("\rGenerated %s %s%s"%(t_addrs, (ws if t_addrs == 1 else wp), " "*15))
|
||||
|
||||
return out
|
||||
|
||||
|
|
|
|||
|
|
@ -376,7 +376,7 @@ def mmgen_encrypt(data,what="data",hash_preset='',opts={}):
|
|||
m = "default" if hp == '3' else "user-requested"
|
||||
vmsg("Encrypting %s" % what)
|
||||
qmsg("Using %s hash preset of '%s'" % (m,hp))
|
||||
passwd = get_new_passphrase("passphrase",{})
|
||||
passwd = get_new_passphrase(what, {})
|
||||
key = make_key(passwd, salt, hp)
|
||||
enc_d = encrypt_data(sha256(nonce+data).digest() + nonce + data, key,
|
||||
int(hexlify(iv),16), what=what)
|
||||
|
|
@ -390,7 +390,7 @@ def mmgen_decrypt(data,what="data",hash_preset='',opts={}):
|
|||
hp = hash_preset or get_hash_preset_from_user('3',what)
|
||||
m = "default" if hp == '3' else "user-requested"
|
||||
qmsg("Using %s hash preset of '%s'" % (m,hp))
|
||||
passwd = get_mmgen_passphrase("Enter passphrase: ",{})
|
||||
passwd = get_mmgen_passphrase(("Enter passphrase for %s: " % what),{})
|
||||
key = make_key(passwd, salt, hp)
|
||||
dec_d = decrypt_data(enc_d, key, int(hexlify(iv),16), what)
|
||||
if dec_d[:sha256_len] == sha256(dec_d[sha256_len:]).digest():
|
||||
|
|
|
|||
|
|
@ -69,8 +69,10 @@ label,metadata,hash_preset,salt,enc_seed = get_data_from_wallet(infile)
|
|||
seed_id,key_id = metadata[:2]
|
||||
|
||||
# Repeat on incorrect pw entry
|
||||
prompt = "Enter %spassphrase: " % (""
|
||||
if 'keep_old_passphrase' in opts else "old ")
|
||||
prompt = "Enter {}{} wallet passphrase: ".format(
|
||||
("" if 'keep_old_passphrase' in opts else "old "),
|
||||
g.proj_name
|
||||
)
|
||||
while True:
|
||||
passwd = get_mmgen_passphrase(prompt,{})
|
||||
key = make_key(passwd, salt, hash_preset)
|
||||
|
|
@ -100,7 +102,8 @@ else:
|
|||
if 'keep_old_passphrase' in opts:
|
||||
msg("Keeping old passphrase by user request")
|
||||
else:
|
||||
new_passwd = get_new_passphrase("new passphrase", opts)
|
||||
new_passwd = get_new_passphrase(
|
||||
"{} wallet".format(g.proj_name), opts, True)
|
||||
|
||||
if new_passwd == passwd:
|
||||
qmsg("Passphrase is unchanged")
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ salt = sha256(get_random(128,opts)).digest()[:g.salt_len]
|
|||
|
||||
qmsg(cmessages['choose_wallet_passphrase'] % opts['hash_preset'])
|
||||
|
||||
passwd = get_new_passphrase("{} wallet passphrase".format(g.proj_name), opts)
|
||||
passwd = get_new_passphrase("{} wallet".format(g.proj_name), opts)
|
||||
|
||||
key = make_key(passwd, salt, opts['hash_preset'])
|
||||
|
||||
|
|
|
|||
|
|
@ -286,22 +286,21 @@ def parse_address_list(arg,sep=","):
|
|||
return sorted(set(ret))
|
||||
|
||||
|
||||
def get_new_passphrase(what, opts):
|
||||
def get_new_passphrase(what, opts, passchg=False):
|
||||
|
||||
w = "{}passphrase for {}".format("new " if passchg else "", what)
|
||||
if 'passwd_file' in opts:
|
||||
pw = " ".join(_get_words_from_file(opts['passwd_file'],what))
|
||||
pw = " ".join(_get_words_from_file(opts['passwd_file'],w))
|
||||
elif 'echo_passphrase' in opts:
|
||||
pw = " ".join(_get_words_from_user(("Enter %s: " % what), opts))
|
||||
pw = " ".join(_get_words_from_user("Enter {}: ".format(w), opts))
|
||||
else:
|
||||
for i in range(g.passwd_max_tries):
|
||||
pw = " ".join(_get_words_from_user(("Enter %s: " % what),opts))
|
||||
pw2 = " ".join(_get_words_from_user(("Repeat %s: " % what),opts))
|
||||
pw = " ".join(_get_words_from_user("Enter {}: ".format(w),opts))
|
||||
pw2 = " ".join(_get_words_from_user("Repeat passphrase: ",opts))
|
||||
if g.debug: print "Passphrases: [%s] [%s]" % (pw,pw2)
|
||||
if pw == pw2:
|
||||
vmsg("%ss match" % what.capitalize())
|
||||
break
|
||||
else:
|
||||
msg("%ss do not match" % what.capitalize())
|
||||
vmsg("Passphrases match"); break
|
||||
else: msg("Passphrases do not match")
|
||||
else:
|
||||
msg("User failed to duplicate passphrase in %s attempts" %
|
||||
g.passwd_max_tries)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue