new wallet format: PlainHexSeedFile (plain hexadecimal w/o checksum)

This commit is contained in:
The MMGen Project 2019-10-23 12:25:24 +00:00
commit 15ac6c6947
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
6 changed files with 49 additions and 0 deletions

View file

@ -1014,6 +1014,35 @@ class MMGenSeedFile(SeedSourceUnenc):
return True
class PlainHexSeedFile(SeedSourceUnenc):
stdin_ok = True
fmt_codes = 'hex','rawhex','plainhex'
desc = 'plain hexadecimal seed data'
ext = 'hex'
def _format(self):
self.fmt_data = self.seed.hexdata + '\n'
def _deformat(self):
desc = self.desc
d = self.fmt_data.strip()
if not is_hex_str_lc(d):
msg("'{}': not a lowercase hexidecimal string, in {}".format(d,desc))
return False
if not len(d)*4 in g.seed_lens:
msg('Invalid data length ({}) in {}'.format(len(d),desc))
return False
self.seed = Seed(bytes.fromhex(d))
self.ssdata.hexseed = d
check_usr_seed_len(self.seed.bitlen)
return True
class MMGenHexSeedFile(SeedSourceUnenc):
stdin_ok = True

1
test/ref/1378FC64.hex Normal file
View file

@ -0,0 +1 @@
456d7f5f1c4bfe3bc916b87560ae6a3e20da39691cf53ded

1
test/ref/98831F3A.hex Normal file
View file

@ -0,0 +1 @@
456d7f5f1c4bfe3bc916b87560ae6a3e20da39691cf53ded010e90a56e048e62

1
test/ref/FE3C6545.hex Normal file
View file

@ -0,0 +1 @@
456d7f5f1c4bfe3bc916b87560ae6a3e

View file

@ -46,6 +46,7 @@ class TestSuiteRef3Seed(TestSuiteBase,TestSuiteShared):
('ref_wallet_chk', ([],'saved reference wallet')),
('ref_seed_chk', ([],'saved seed file')),
('ref_hex_chk', ([],'saved mmhex file')),
('ref_plainhex_chk',([],'saved hex file')),
('ref_mn_chk', ([],'saved native MMGen mnemonic file')),
('ref_bip39_chk', ([],'saved BIP39 mnemonic file')),
('ref_hincog_chk', ([],'saved hidden incog reference wallet')),
@ -56,6 +57,7 @@ class TestSuiteRef3Seed(TestSuiteBase,TestSuiteShared):
('ref_walletconv_bip39', (['mmdat',pwfile],'wallet filename (bip39)')),
('ref_walletconv_seed', (['mmdat',pwfile],'wallet filename (seed)')),
('ref_walletconv_hexseed',(['mmdat',pwfile],'wallet filename (hex seed)')),
('ref_walletconv_plainhexseed',(['mmdat',pwfile],'wallet filename (plain hex seed)')),
('ref_walletconv_incog', (['mmdat',pwfile],'wallet filename (incog)')),
('ref_walletconv_xincog', (['mmdat',pwfile],'wallet filename (hex incog)')),
)
@ -86,6 +88,10 @@ class TestSuiteRef3Seed(TestSuiteBase,TestSuiteShared):
from mmgen.seed import MMGenHexSeedFile
return self.ref_ss_chk(ss=MMGenHexSeedFile)
def ref_plainhex_chk(self):
from mmgen.seed import PlainHexSeedFile
return self.ref_ss_chk(ss=PlainHexSeedFile)
def ref_mn_chk(self):
from mmgen.seed import MMGenMnemonic
return self.ref_ss_chk(ss=MMGenMnemonic)
@ -164,6 +170,9 @@ class TestSuiteRef3Seed(TestSuiteBase,TestSuiteShared):
def ref_walletconv_hexseed(self,fn,pf):
return self.ref_walletconv(fn,pf,ofmt='mmhex',desc='Hexadecimal seed data with checksum',ext='mmhex')
def ref_walletconv_plainhexseed(self,fn,pf):
return self.ref_walletconv(fn,pf,ofmt='hex',desc='Plain hexadecimal seed data',ext='hex')
def ref_walletconv_incog(self,fn,pf,desc='Incognito data',ofmt='incog',ext='mmincog'):
args = ['-r0','-p1']
pat = r'{}-[0-9A-F]{{8}}-[0-9A-F]{{8}}\[{},1\].' + ext

View file

@ -63,6 +63,7 @@ class TestSuiteWalletConv(TestSuiteBase,TestSuiteShared):
('ref_bip39_conv', 'conversion of saved BIP39 mnemonic'),
('ref_seed_conv', 'conversion of saved seed file'),
('ref_hex_conv', 'conversion of saved MMGen hexadecimal seed file'),
('ref_plainhex_conv', 'conversion of saved plain hexadecimal seed file'),
('ref_brain_conv', 'conversion of ref brainwallet'),
('ref_incog_conv', 'conversion of saved incog wallet'),
('ref_incox_conv', 'conversion of saved hex incog wallet'),
@ -73,6 +74,7 @@ class TestSuiteWalletConv(TestSuiteBase,TestSuiteShared):
('ref_mn_conv_out', 'ref seed conversion to MMGen native mnemonic'),
('ref_bip39_conv_out', 'ref seed conversion to BIP39 mnemonic'),
('ref_hex_conv_out', 'ref seed conversion to MMGen hex seed'),
('ref_plainhex_conv_out','ref seed conversion to plain hex seed'),
('ref_seed_conv_out', 'ref seed conversion to seed'),
('ref_incog_conv_out', 'ref seed conversion to incog data'),
('ref_incox_conv_out', 'ref seed conversion to hex incog data'),
@ -103,6 +105,9 @@ class TestSuiteWalletConv(TestSuiteBase,TestSuiteShared):
def ref_hex_conv(self):
return self.ref_mn_conv(ext='mmhex',desc='Hexadecimal seed data with checksum')
def ref_plainhex_conv(self):
return self.ref_mn_conv(ext='hex',desc='Plain hexadecimal seed data')
def ref_brain_conv(self):
uopts = ['-i','b','-p','1','-l',str(self.seed_len)]
return self.walletconv_in(None,'brainwallet',uopts,oo=True)
@ -139,6 +144,9 @@ class TestSuiteWalletConv(TestSuiteBase,TestSuiteShared):
def ref_hex_conv_out(self):
return self.walletconv_out('hexadecimal seed data with checksum','hexseed')
def ref_plainhex_conv_out(self):
return self.walletconv_out('plain hexadecimal seed data','hex')
def ref_incog_conv_out(self):
return self.walletconv_out('incognito data',out_fmt='i',pw=True)