Browse Source

wallet.incog_base: minor cleanups

The MMGen Project 3 years ago
parent
commit
c7f0b2d8f9
2 changed files with 50 additions and 22 deletions
  1. 2 2
      mmgen/crypto.py
  2. 48 20
      mmgen/wallet/incog_base.py

+ 2 - 2
mmgen/crypto.py

@@ -81,8 +81,8 @@ def scramble_seed(seed,scramble_key):
 		msg(f'Seed:  {seed.hex()!r}\nScramble key: {scramble_key}\nScrambled seed: {step1.hex()}\n')
 	return sha256_rounds( step1, scramble_hash_rounds )
 
-def encrypt_seed(seed,key):
-	return encrypt_data(seed,key,desc='seed')
+def encrypt_seed(data,key,desc='seed'):
+	return encrypt_data(data,key,desc=desc)
 
 def decrypt_seed(enc_seed,key,seed_id,key_id):
 	vmsg_r('Checking key...')

+ 48 - 20
mmgen/wallet/incog_base.py

@@ -65,9 +65,9 @@ class wallet(wallet):
 	def _encrypt (self):
 		self._get_first_pw_and_hp_and_encrypt_seed()
 		if opt.old_incog_fmt:
-			die(1,'Writing old-format incog wallets is unsupported')
+			die(1,'Writing old-format incognito wallets is unsupported')
 		d = self.ssdata
-		# IV is used BOTH to initialize counter and to salt password!
+
 		d.iv = crypto.get_random( crypto.aesctr_iv_len )
 		d.iv_id = self._make_iv_chksum(d.iv)
 		msg(f'New Incog Wallet ID: {d.iv_id}')
@@ -75,27 +75,37 @@ class wallet(wallet):
 		vmsg('\n  ' + self.msg['record_incog_id'].strip()+'\n')
 
 		d.salt = crypto.get_random( crypto.salt_len )
-		key = crypto.make_key( d.passwd, d.salt, d.hash_preset, 'incog wallet key' )
+		seed_key = crypto.make_key(
+			passwd      = d.passwd,
+			salt        = d.salt,
+			hash_preset = d.hash_preset,
+			desc        = 'incog wallet key' )
+
 		from hashlib import sha256
 		chk = sha256(self.seed.data).digest()[:8]
-		d.enc_seed = crypto.encrypt_data(
-			chk + self.seed.data,
-			key,
-			crypto.aesctr_dfl_iv,
-			'seed' )
+		d.enc_seed = crypto.encrypt_seed(
+			data = chk + self.seed.data,
+			key  = seed_key )
+
+		# IV is used BOTH to initialize counter and to salt password!
+		d.wrapper_key = crypto.make_key(
+			passwd      = d.passwd,
+			salt        = d.iv,
+			hash_preset = d.hash_preset,
+			desc        = 'incog wrapper key' )
 
-		d.wrapper_key = crypto.make_key( d.passwd, d.iv, d.hash_preset, 'incog wrapper key' )
 		d.key_id = make_chksum_8(d.wrapper_key)
 		vmsg(f'Key ID: {d.key_id}')
+
 		d.target_data_len = self._get_incog_data_len(self.seed.bitlen)
 
 	def _format(self):
 		d = self.ssdata
 		self.fmt_data = d.iv + crypto.encrypt_data(
-			d.salt + d.enc_seed,
-			d.wrapper_key,
-			d.iv,
-			self.desc )
+			data = d.salt + d.enc_seed,
+			key  = d.wrapper_key,
+			iv   = d.iv,
+			desc = self.desc )
 
 	def _filename(self):
 		s = self.seed
@@ -147,19 +157,37 @@ class wallet(wallet):
 		d.passwd = self._get_passphrase(add_desc=d.incog_id)
 
 		# IV is used BOTH to initialize counter and to salt password!
-		key = crypto.make_key( d.passwd, d.iv, d.hash_preset, 'wrapper key' )
-		dd = crypto.decrypt_data( d.enc_incog_data, key, d.iv, 'incog data' )
+		wrapper_key = crypto.make_key(
+			passwd      = d.passwd,
+			salt        = d.iv,
+			hash_preset = d.hash_preset,
+			desc        = 'wrapper key' )
+
+		dd = crypto.decrypt_data(
+			enc_data = d.enc_incog_data,
+			key      = wrapper_key,
+			iv       = d.iv,
+			desc     = 'incog data' )
 
 		d.salt     = dd[0:crypto.salt_len]
 		d.enc_seed = dd[crypto.salt_len:]
 
-		key = crypto.make_key( d.passwd, d.salt, d.hash_preset, 'main key' )
-		qmsg(f'Key ID: {make_chksum_8(key)}')
+		seed_key = crypto.make_key(
+			passwd      = d.passwd,
+			salt        = d.salt,
+			hash_preset = d.hash_preset,
+			desc        = 'main key' )
+
+		qmsg(f'Key ID: {make_chksum_8(seed_key)}')
 
-		verify_seed = getattr(self,'_verify_seed_'+
-						('newfmt','oldfmt')[bool(opt.old_incog_fmt)])
+		verify_seed_func = getattr( self, '_verify_seed_'+ ('oldfmt' if opt.old_incog_fmt else 'newfmt') )
 
-		seed = verify_seed( crypto.decrypt_seed(d.enc_seed, key, '', '') )
+		seed = verify_seed_func(
+			crypto.decrypt_seed(
+				enc_seed = d.enc_seed,
+				key      = seed_key,
+				seed_id  = '',
+				key_id   = '' ))
 
 		if seed:
 			self.seed = Seed(seed)