Browse Source

Seed: 'length' -> 'bitlen'; new 'byte_len' property

MMGen 5 years ago
parent
commit
665da1a27c
2 changed files with 24 additions and 24 deletions
  1. 23 23
      mmgen/seed.py
  2. 1 1
      test/unit_tests_d/ut_subseed.py

+ 23 - 23
mmgen/seed.py

@@ -61,9 +61,13 @@ class SeedBase(MMGenObject):
 		self.sid       = SeedID(seed=self)
 
 	@property
-	def length(self):
+	def bitlen(self):
 		return len(self.data) * 8
 
+	@property
+	def byte_len(self):
+		return len(self.data)
+
 	@property
 	def hexdata(self):
 		return self.data.hex()
@@ -188,7 +192,7 @@ class SubSeedList(MMGenObject):
 		fs1 = '{:>18} {:>18}\n'
 		fs2 = '{i:>7}L: {:8} {i:>7}S: {:8}\n'
 
-		hdr = '{:>16} {} ({} bits)\n\n'.format('Parent Seed:',self.parent_seed.sid.hl(),self.parent_seed.length)
+		hdr = '{:>16} {} ({} bits)\n\n'.format('Parent Seed:',self.parent_seed.sid.hl(),self.parent_seed.bitlen)
 		hdr += fs1.format('Long Subseeds','Short Subseeds')
 		hdr += fs1.format('-------------','--------------')
 
@@ -225,9 +229,9 @@ class Seed(SeedBase):
 
 		def add_share(ss):
 			if d.slen:
-				assert ss.length == d.slen,'Seed length mismatch! {} != {}'.format(ss.length,d.slen)
+				assert ss.bitlen == d.slen,'Seed length mismatch! {} != {}'.format(ss.bitlen,d.slen)
 			else:
-				d.slen = ss.length
+				d.slen = ss.bitlen
 			d.ret ^= int(ss.data.hex(),16)
 			d.count += 1
 
@@ -265,8 +269,7 @@ class SubSeed(SeedBase):
 		scramble_key  = idx.to_bytes(4,'big',signed=False) + \
 						nonce.to_bytes(2,'big',signed=False) + \
 						short.to_bytes(1,'big',signed=False)
-		byte_len = 16 if short else seed.length // 8
-		return scramble_seed(seed.data,scramble_key)[:byte_len]
+		return scramble_seed(seed.data,scramble_key)[:16 if short else seed.byte_len]
 
 class SeedShareList(SubSeedList):
 	master_share = None
@@ -335,7 +338,7 @@ class SeedShareList(SubSeedList):
 			mfs1,mfs2 = (' with master share #{} ({})',' master #{} ({})')
 			midx,msid = (self.master_share.idx,self.master_share.sid)
 
-		hdr  = '    {} {} ({} bits)\n'.format('Seed:',self.parent_seed.sid.hl(),self.parent_seed.length)
+		hdr  = '    {} {} ({} bits)\n'.format('Seed:',self.parent_seed.sid.hl(),self.parent_seed.bitlen)
 		hdr += '    {} {c}-of-{c} (XOR){m}\n'.format('Split Type:',c=self.count,m=mfs1.format(midx,msid))
 		hdr += '    {} {}\n\n'.format('ID String:',self.id_str.hl())
 		hdr += fs1.format('Shares')
@@ -361,8 +364,7 @@ class SeedShare(SubSeed):
 						nonce.to_bytes(2,'big',signed=False)
 		if parent_list.master_share:
 			scramble_key += b':master:' + parent_list.master_share.idx.to_bytes(2,'big',signed=False)
-		byte_len = seed.length // 8
-		return scramble_seed(seed.data,scramble_key)[:byte_len]
+		return scramble_seed(seed.data,scramble_key)[:seed.byte_len]
 
 class SeedShareLast(SeedBase):
 
@@ -383,7 +385,7 @@ class SeedShareLast(SeedBase):
 		for ss in seed_list:
 			ret ^= int(ss.data.hex(),16)
 
-		return ret.to_bytes(seed.length // 8,'big')
+		return ret.to_bytes(seed.byte_len,'big')
 
 class SeedShareMaster(SeedBase):
 
@@ -401,14 +403,12 @@ class SeedShareMaster(SeedBase):
 		seed = self.parent_list.parent_seed
 		# field maximums: idx: 65535 (1024)
 		scramble_key = b'master:' + self.idx.to_bytes(2,'big',signed=False)
-		byte_len = seed.length // 8
-		return scramble_seed(seed.data,scramble_key)[:byte_len]
+		return scramble_seed(seed.data,scramble_key)[:seed.byte_len]
 
 	def make_derived_seed_bin(self,id_str,count):
 		# field maximums: id_str: none (256 chars), count: 65535 (1024)
 		scramble_key = id_str.encode() + b':' + count.to_bytes(2,'big',signed=False)
-		byte_len = self.length // 8
-		return scramble_seed(self.data,scramble_key)[:byte_len]
+		return scramble_seed(self.data,scramble_key)[:self.byte_len]
 
 class SeedShareMasterJoining(SeedShareMaster):
 
@@ -501,7 +501,7 @@ class SeedSource(MMGenObject):
 			self._deformat_retry()
 			self._decrypt_retry()
 
-		m = ('',', seed length {}'.format(self.seed.length))[self.seed.length!=256]
+		m = ('',', seed length {}'.format(self.seed.bitlen))[self.seed.bitlen!=256]
 		qmsg('Valid {} for Seed ID {}{}'.format(self.desc,self.seed.sid.hl(),m))
 
 	def _get_data(self):
@@ -608,7 +608,7 @@ class SeedSourceUnenc(SeedSource):
 		s = self.seed
 		return '{}[{}]{x}.{}'.format(
 			s.sid,
-			s.length,
+			s.bitlen,
 			self.ext,
 			x='-α' if g.debug_utf8 else '')
 
@@ -860,7 +860,7 @@ class Mnemonic (SeedSourceUnenc):
 		self.seed = Seed(bytes.fromhex(hexseed))
 		self.ssdata.mnemonic = mn
 
-		check_usr_seed_len(self.seed.length)
+		check_usr_seed_len(self.seed.bitlen)
 
 		return True
 
@@ -910,7 +910,7 @@ class SeedFile (SeedSourceUnenc):
 		self.ssdata.chksum = a
 		self.ssdata.b58seed = b
 
-		check_usr_seed_len(self.seed.length)
+		check_usr_seed_len(self.seed.bitlen)
 
 		return True
 
@@ -958,7 +958,7 @@ class HexSeedFile(SeedSourceUnenc):
 		self.ssdata.chksum = chk
 		self.ssdata.hexseed = hstr
 
-		check_usr_seed_len(self.seed.length)
+		check_usr_seed_len(self.seed.bitlen)
 
 		return True
 
@@ -1022,7 +1022,7 @@ class Wallet (SeedSourceEnc):
 		lines = (
 			d.label,
 			'{} {} {} {} {}'.format(s.sid.lower(), d.key_id.lower(),
-										s.length, d.pw_status, d.timestamp),
+										s.bitlen, d.pw_status, d.timestamp),
 			'{}: {} {} {}'.format(d.hash_preset,*get_hash_params(d.hash_preset)),
 			'{} {}'.format(make_chksum_6(slt_fmt),split_into_cols(4,slt_fmt)),
 			'{} {}'.format(make_chksum_6(es_fmt), split_into_cols(4,es_fmt))
@@ -1118,7 +1118,7 @@ class Wallet (SeedSourceEnc):
 		return '{}-{}[{},{}]{x}.{}'.format(
 				s.sid,
 				d.key_id,
-				s.length,
+				s.bitlen,
 				d.hash_preset,
 				self.ext,
 				x='-α' if g.debug_utf8 else '')
@@ -1233,7 +1233,7 @@ to exit and re-run the program with the '--old-incog-fmt' option.
 		d.wrapper_key = make_key(d.passwd, d.iv, d.hash_preset, 'incog wrapper key')
 		d.key_id = make_chksum_8(d.wrapper_key)
 		vmsg('Key ID: {}'.format(d.key_id))
-		d.target_data_len = self._get_incog_data_len(self.seed.length)
+		d.target_data_len = self._get_incog_data_len(self.seed.bitlen)
 
 	def _format(self):
 		d = self.ssdata
@@ -1246,7 +1246,7 @@ to exit and re-run the program with the '--old-incog-fmt' option.
 				s.sid,
 				d.key_id,
 				d.iv_id,
-				s.length,
+				s.bitlen,
 				d.hash_preset,
 				self.ext,
 				x='-α' if g.debug_utf8 else '')

+ 1 - 1
test/unit_tests_d/ut_subseed.py

@@ -30,7 +30,7 @@ class unit_test(object):
 				assert subseed.sid == d, subseed.sid
 
 				subseed = seed.subseed_by_seed_id(e)
-				assert subseed.length == f, subseed.length
+				assert subseed.bitlen == f, subseed.bitlen
 				assert subseed.sid == e, subseed.sid
 				assert subseed.idx == 10, subseed.idx
 				assert subseed.ss_idx == h, subseed.ss_idx