Browse Source

Improved new password prompting

philemon 10 years ago
parent
commit
3c0eb1d26c
5 changed files with 20 additions and 19 deletions
  1. 3 4
      mmgen/addr.py
  2. 2 2
      mmgen/crypto.py
  3. 6 3
      mmgen/main_passchg.py
  4. 1 1
      mmgen/main_walletgen.py
  5. 8 9
      mmgen/util.py

+ 3 - 4
mmgen/addr.py

@@ -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
 

+ 2 - 2
mmgen/crypto.py

@@ -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():

+ 6 - 3
mmgen/main_passchg.py

@@ -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")

+ 1 - 1
mmgen/main_walletgen.py

@@ -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'])
 

+ 8 - 9
mmgen/util.py

@@ -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)