Browse Source

wallet.Mnemonic: remove redundant pad calculation code

The MMGen Project 3 years ago
parent
commit
20a0ac03fc
2 changed files with 8 additions and 22 deletions
  1. 2 2
      mmgen/bip39.py
  2. 6 20
      mmgen/wallet.py

+ 2 - 2
mmgen/bip39.py

@@ -77,7 +77,7 @@ class bip39(baseconv):
 
 	def tohex(self,words,pad=None):
 		assert isinstance(words,(list,tuple)),'words must be list or tuple'
-		assert pad == None, f"{pad}: invalid 'pad' argument (must be None)"
+		assert pad in (None,'seed'), f"{pad}: invalid 'pad' argument (must be None or 'seed')"
 
 		wl = self.digits['bip39']
 
@@ -112,7 +112,7 @@ class bip39(baseconv):
 	def fromhex(self,seed_hex,pad=None,tostr=False):
 		assert is_hex_str(seed_hex),'seed data not a hexadecimal string'
 		assert tostr == False,"'tostr' must be False for 'bip39'"
-		assert pad == None, f"{pad}: invalid 'pad' argument (must be None)"
+		assert pad in (None,'seed'), f"{pad}: invalid 'pad' argument (must be None or 'seed')"
 
 		wl = self.digits['bip39']
 		seed_bytes = bytes.fromhex(seed_hex)

+ 6 - 20
mmgen/wallet.py

@@ -413,24 +413,16 @@ class Mnemonic(WalletUnenc):
 		mn_len = self._choose_seedlen(self.wclass,self.mn_lens,self.mn_type)
 		return mn_entry(self.wl_id).get_mnemonic_from_user(mn_len)
 
-	@staticmethod
-	def _mn2hex_pad(mn):
-		return len(mn) * 8 // 3
-
-	@staticmethod
-	def _hex2mn_pad(hexnum):
-		return len(hexnum) * 3 // 8
-
 	def _format(self):
 
 		hexseed = self.seed.hexdata
 
 		bc = self.conv_cls(self.wl_id)
-		mn  = bc.fromhex( hexseed, self._hex2mn_pad(hexseed) )
-		ret = bc.tohex( mn, self._mn2hex_pad(mn) )
+		mn  = bc.fromhex( hexseed, 'seed' )
+		rev = bc.tohex( mn, 'seed' )
 
 		# Internal error, so just die on fail
-		compare_or_die(ret,'recomputed seed',hexseed,'original',e='Internal error')
+		compare_or_die( rev, 'recomputed seed', hexseed, 'original', e='Internal error' )
 
 		self.ssdata.mnemonic = mn
 		self.fmt_data = ' '.join(mn) + '\n'
@@ -451,15 +443,15 @@ class Mnemonic(WalletUnenc):
 				msg(f'Invalid mnemonic: word #{n} is not in the {self.wl_id.upper()} wordlist')
 				return False
 
-		hexseed = bc.tohex( mn, self._mn2hex_pad(mn) )
-		ret     = bc.fromhex( hexseed, self._hex2mn_pad(hexseed) )
+		hexseed = bc.tohex( mn, 'seed' )
+		rev     = bc.fromhex( hexseed, 'seed' )
 
 		if len(hexseed) * 4 not in g.seed_lens:
 			msg('Invalid mnemonic (produces too large a number)')
 			return False
 
 		# Internal error, so just die
-		compare_or_die(' '.join(ret),'recomputed mnemonic',' '.join(mn),'original',e='Internal error')
+		compare_or_die( ' '.join(rev), 'recomputed mnemonic', ' '.join(mn), 'original', e='Internal error' )
 
 		self.seed = Seed(bytes.fromhex(hexseed))
 		self.ssdata.mnemonic = mn
@@ -489,12 +481,6 @@ class BIP39Mnemonic(Mnemonic):
 		self.conv_cls = bip39
 		super().__init__(*args,**kwargs)
 
-	@staticmethod
-	def _mn2hex_pad(mn): return None
-
-	@staticmethod
-	def _hex2mn_pad(hexnum): return None
-
 class MMGenSeedFile(WalletUnenc):
 
 	stdin_ok = True