From 20a0ac03fc617d5a5740eaea066e70048fe429c9 Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Tue, 18 Jan 2022 09:11:00 +0000 Subject: [PATCH] wallet.Mnemonic: remove redundant pad calculation code --- mmgen/bip39.py | 4 ++-- mmgen/wallet.py | 26 ++++++-------------------- 2 files changed, 8 insertions(+), 22 deletions(-) diff --git a/mmgen/bip39.py b/mmgen/bip39.py index c014690d..a06915ca 100755 --- a/mmgen/bip39.py +++ b/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) diff --git a/mmgen/wallet.py b/mmgen/wallet.py index b11004e9..5bbbecad 100755 --- a/mmgen/wallet.py +++ b/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