dieroll wallet: truncate seed to correct length

This commit is contained in:
The MMGen Project 2019-10-30 09:20:47 +00:00
commit d46eeef998
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
3 changed files with 12 additions and 1 deletions

View file

@ -1019,6 +1019,7 @@ class DieRollSeedFile(SeedSourceUnenc):
fmt_codes = 'b6d','die','dieroll',
desc = 'base6d die roll seed data'
ext = 'b6d'
conv_cls = baseconv
def _format(self):
d = baseconv.frombytes(self.seed.data,'b6d',pad='seed',tostr=True) + '\n'
@ -1026,7 +1027,10 @@ class DieRollSeedFile(SeedSourceUnenc):
def _deformat(self):
d = self.fmt_data.translate(dict((ord(ws),None) for ws in '\t\n '))
seed_bytes = baseconv.tobytes(d,'b6d',pad='seed')
# truncate seed to correct length, discarding high bits
seed_len = self.conv_cls.seedlen_map_rev['b6d'][len(d)]
seed_bytes = baseconv.tobytes(d,'b6d',pad='seed')[-seed_len:]
self.seed = Seed(seed_bytes)
self.ssdata.hexseed = seed_bytes.hex()

2
test/ref/overflow128.b6d Normal file
View file

@ -0,0 +1,2 @@
55555 44444 33333 22222 11111
55555 44444 33333 22222 11111

View file

@ -129,6 +129,7 @@ class TestSuiteRef(TestSuiteBase,TestSuiteShared):
# ('txcreate8', 'transaction creation (8)'),
('ref_tx_chk', 'signing saved reference tx file'),
('ref_brain_chk_spc3', 'saved brainwallet (non-standard spacing)'),
('ref_dieroll_chk_overflow','saved dieroll wallet with extra entropy bits'),
('ref_tool_decrypt', 'decryption of saved MMGen-encrypted file'),
)
@ -265,6 +266,10 @@ class TestSuiteRef(TestSuiteBase,TestSuiteShared):
def ref_brain_chk_spc3(self):
return self.ref_brain_chk(bw_file=ref_bw_file_spc)
def ref_dieroll_chk_overflow(self):
wf = joinpath(ref_dir,'overflow128.b6d')
return self.walletchk(wf,None,sid='8EC6D4A2')
def ref_tool_decrypt(self):
f = joinpath(ref_dir,ref_enc_fn)
disable_debug()