whitespace: test/misc
This commit is contained in:
parent
6130efcf0c
commit
f9e6d994f0
11 changed files with 131 additions and 135 deletions
|
|
@ -3,6 +3,6 @@
|
|||
from mmgen.main import launch
|
||||
import sys
|
||||
|
||||
sys.path.insert(0,'test')
|
||||
sys.path.insert(0, 'test')
|
||||
|
||||
launch(fqmod='misc.cfg_main')
|
||||
|
|
|
|||
|
|
@ -11,9 +11,9 @@ cmd_args = cfg._args
|
|||
|
||||
from mmgen.cfgfile import mmgen_cfg_file
|
||||
|
||||
cf_usr = mmgen_cfg_file(cfg,'usr')
|
||||
cf_sys = mmgen_cfg_file(cfg,'sys')
|
||||
cf_sample = mmgen_cfg_file(cfg,'sample')
|
||||
cf_usr = mmgen_cfg_file(cfg, 'usr')
|
||||
cf_sys = mmgen_cfg_file(cfg, 'sys')
|
||||
cf_sample = mmgen_cfg_file(cfg, 'sample')
|
||||
|
||||
msg(f'Usr cfg file: {os.path.relpath(cf_usr.fn)}')
|
||||
msg(f'Sys cfg file: {os.path.relpath(cf_sys.fn)}')
|
||||
|
|
@ -24,13 +24,13 @@ if cmd_args:
|
|||
ps = cf_sample.get_lines()
|
||||
msg(f'parsed chunks: {len(ps)}')
|
||||
pu = cf_usr.get_lines()
|
||||
msg('usr cfg: {}'.format( ' '.join(f'{i.name}={i.value}' for i in pu) ))
|
||||
msg('usr cfg: {}'.format(' '.join(f'{i.name}={i.value}' for i in pu)))
|
||||
elif cmd_args[0] == 'coin_specific_vars':
|
||||
for varname in cmd_args[1:]:
|
||||
msg('{}.{}: {}'.format(
|
||||
type(cfg._proto).__name__,
|
||||
varname,
|
||||
getattr(cfg._proto,varname)
|
||||
getattr(cfg._proto, varname)
|
||||
))
|
||||
elif cmd_args[0] == 'autoset_opts':
|
||||
assert cfg.rpc_backend == 'aiohttp', "cfg.rpc_backend != 'aiohttp'"
|
||||
|
|
@ -40,5 +40,5 @@ if cmd_args:
|
|||
from mmgen.mn_entry import mn_entry
|
||||
msg('mnemonic_entry_modes: {}\nmmgen: {}\nbip39: {}'.format(
|
||||
cfg.mnemonic_entry_modes,
|
||||
mn_entry(cfg,'mmgen').usr_dfl_entry_mode,
|
||||
mn_entry(cfg,'bip39').usr_dfl_entry_mode ))
|
||||
mn_entry(cfg, 'mmgen').usr_dfl_entry_mode,
|
||||
mn_entry(cfg, 'bip39').usr_dfl_entry_mode))
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import sys,os
|
||||
import sys, os
|
||||
pn = os.path.abspath(os.path.dirname(sys.argv[0]))
|
||||
os.chdir(os.path.dirname(os.path.dirname(pn)))
|
||||
sys.path[0] = os.curdir
|
||||
|
||||
from mmgen.cfg import Config,gc
|
||||
from mmgen.cfg import Config, gc
|
||||
from mmgen.util import msg
|
||||
|
||||
opts_data = {
|
||||
|
|
@ -23,7 +23,7 @@ opts_data = {
|
|||
}
|
||||
}
|
||||
|
||||
cfg = Config( opts_data=opts_data, init_opts={'color':True} )
|
||||
cfg = Config(opts_data=opts_data, init_opts={'color': True})
|
||||
|
||||
def crypto():
|
||||
desc = 'test data'
|
||||
|
|
@ -31,10 +31,10 @@ def crypto():
|
|||
from mmgen.crypto import Crypto
|
||||
crypto = Crypto(cfg)
|
||||
|
||||
pw = crypto.get_new_passphrase(data_desc=desc,hash_preset=gc.dfl_hash_preset,passwd_file=None)
|
||||
pw = crypto.get_new_passphrase(data_desc=desc, hash_preset=gc.dfl_hash_preset, passwd_file=None)
|
||||
msg(f'==> got new passphrase: [{pw}]\n')
|
||||
|
||||
pw = crypto.get_passphrase(data_desc=desc,passwd_file=None)
|
||||
pw = crypto.get_passphrase(data_desc=desc, passwd_file=None)
|
||||
msg(f'==> got passphrase: [{pw}]\n')
|
||||
|
||||
hp = crypto.get_hash_preset_from_user(data_desc=desc)
|
||||
|
|
@ -47,18 +47,18 @@ def seed():
|
|||
|
||||
from mmgen.wallet import Wallet
|
||||
|
||||
for n in range(1,3):
|
||||
for n in range(1, 3):
|
||||
msg(f'------- NEW WALLET {n} -------\n')
|
||||
w1 = Wallet(cfg)
|
||||
msg(f'\n==> got pw,preset,lbl: [{w1.ssdata.passwd}][{w1.ssdata.hash_preset}][{w1.ssdata.label}]\n')
|
||||
msg(f'\n==> got pw, preset, lbl: [{w1.ssdata.passwd}][{w1.ssdata.hash_preset}][{w1.ssdata.label}]\n')
|
||||
|
||||
for n in range(1,3):
|
||||
for n in range(1, 3):
|
||||
msg(f'------- PASSCHG {n} -------\n')
|
||||
w2 = Wallet(cfg,ss=w1,passchg=True)
|
||||
msg(f'\n==> got pw,preset,lbl: [{w2.ssdata.passwd}][{w2.ssdata.hash_preset}][{w2.ssdata.label}]\n')
|
||||
w2 = Wallet(cfg, ss=w1, passchg=True)
|
||||
msg(f'\n==> got pw, preset, lbl: [{w2.ssdata.passwd}][{w2.ssdata.hash_preset}][{w2.ssdata.label}]\n')
|
||||
|
||||
msg('------- WALLET FROM FILE -------\n')
|
||||
w3 = Wallet(cfg,fn='test/ref/FE3C6545-D782B529[128,1].mmdat') # passphrase: 'reference password'
|
||||
msg(f'\n==> got pw,preset,lbl: [{w3.ssdata.passwd}][{w3.ssdata.hash_preset}][{w3.ssdata.label}]\n')
|
||||
w3 = Wallet(cfg, fn='test/ref/FE3C6545-D782B529[128,1].mmdat') # passphrase: 'reference password'
|
||||
msg(f'\n==> got pw, preset, lbl: [{w3.ssdata.passwd}][{w3.ssdata.hash_preset}][{w3.ssdata.label}]\n')
|
||||
|
||||
globals()[cfg._args[0]]()
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env python3
|
||||
# this script is used both for interactive and automated testing
|
||||
|
||||
import sys,os
|
||||
import sys, os
|
||||
os.chdir(os.path.dirname(os.path.dirname(os.path.abspath(os.path.dirname(sys.argv[0])))))
|
||||
sys.path[0] = os.curdir
|
||||
|
||||
|
|
@ -26,9 +26,9 @@ if cmd == 'passphrase':
|
|||
from mmgen.ui import get_words_from_user
|
||||
pw = get_words_from_user(
|
||||
cfg,
|
||||
('Enter passphrase: ','Enter passphrase (echoed): ')[bool(cfg.echo_passphrase)] )
|
||||
('Enter passphrase: ', 'Enter passphrase (echoed): ')[bool(cfg.echo_passphrase)] )
|
||||
msg('Entered: {}'.format(' '.join(pw)))
|
||||
elif cmd in ('get_char','line_input'):
|
||||
elif cmd in ('get_char', 'line_input'):
|
||||
from mmgen.term import get_char
|
||||
from mmgen.ui import line_input
|
||||
from ast import literal_eval
|
||||
|
|
@ -37,9 +37,9 @@ elif cmd in ('get_char','line_input'):
|
|||
msg(f' cfg.hold_protect_disable: {cfg.hold_protect_disable}')
|
||||
if cmd == 'line_input':
|
||||
func_args.update({'cfg':cfg})
|
||||
msg(' Calling {name}( {args} )'.format(
|
||||
msg(' Calling {name}({args})'.format(
|
||||
name = cmd,
|
||||
args = ', '.join(f'{k}={v!r}' for k,v in func_args.items())
|
||||
args = ', '.join(f'{k}={v!r}' for k, v in func_args.items())
|
||||
))
|
||||
ret = locals()[cmd](**func_args)
|
||||
msg(f' ==> {ret!r}')
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
from mmgen.cfg import Config
|
||||
from mmgen.util import msg,oneshot_warning,oneshot_warning_group
|
||||
from mmgen.util import msg, oneshot_warning, oneshot_warning_group
|
||||
|
||||
cfg = Config()
|
||||
|
||||
|
|
@ -29,28 +29,28 @@ class wg(oneshot_warning_group):
|
|||
color = 'orange'
|
||||
message = 'baz variant {} selected'
|
||||
|
||||
for i in (1,2,3):
|
||||
for i in (1, 2, 3):
|
||||
|
||||
from mmgen.crypto import Crypto
|
||||
|
||||
msg('\npw')
|
||||
for k in ('A','B'):
|
||||
for k in ('A', 'B'):
|
||||
ret = Crypto.pwfile_reuse_warning(k).warning_shown
|
||||
assert ret == (i != 1), 'warning_shown incorrect'
|
||||
|
||||
msg('wg1')
|
||||
wg('foo')
|
||||
msg('wg2')
|
||||
wg('bar',fmt_args=['dangerous','computer'])
|
||||
wg('bar', fmt_args=['dangerous', 'computer'])
|
||||
msg('wg3')
|
||||
wg('baz',div='alpha',fmt_args=['alpha'])
|
||||
wg('baz', div='alpha', fmt_args=['alpha'])
|
||||
msg('wg4')
|
||||
wg('baz',div='beta',fmt_args=['beta'])
|
||||
wg('baz', div='beta', fmt_args=['beta'])
|
||||
|
||||
msg('w1')
|
||||
foo(div='alpha',fmt_args=['alpha'])
|
||||
foo(div='alpha', fmt_args=['alpha'])
|
||||
msg('w2')
|
||||
foo(div='beta',fmt_args=['beta'])
|
||||
foo(div='beta', fmt_args=['beta'])
|
||||
msg('w3')
|
||||
bar()
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,6 @@
|
|||
from mmgen.main import launch
|
||||
import sys
|
||||
|
||||
sys.path.insert(0,'test')
|
||||
sys.path.insert(0, 'test')
|
||||
|
||||
launch(fqmod='misc.opts_main')
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ from mmgen.cfg import Config
|
|||
from mmgen.util import msg
|
||||
|
||||
opts_data = {
|
||||
'sets': [('print_checksum',True,'quiet',True)],
|
||||
'sets': [('print_checksum', True, 'quiet', True)],
|
||||
'text': {
|
||||
'desc': 'Opts test',
|
||||
'usage':'[args] [opts]',
|
||||
|
|
@ -41,7 +41,7 @@ sample note: {nn}
|
|||
"""
|
||||
},
|
||||
'code': {
|
||||
'options': lambda cfg,help_notes,s: s.format(
|
||||
'options': lambda cfg, help_notes, s: s.format(
|
||||
kgs=help_notes('keygen_backends'),
|
||||
coin_id=help_notes('coin_id'),
|
||||
),
|
||||
|
|
@ -52,38 +52,34 @@ sample note: {nn}
|
|||
cfg = Config(opts_data=opts_data)
|
||||
|
||||
for k in (
|
||||
'foo', # added opt
|
||||
'print_checksum', # sets 'quiet'
|
||||
'quiet','verbose', # _incompatible_opts
|
||||
'passwd_file', # _infile_opts - check_infile()
|
||||
'outdir', # check_outdir()
|
||||
'cached_balances', # opt_sets_global
|
||||
'minconf', # global_sets_opt
|
||||
'hidden_incog_input_params',
|
||||
'keep_label',
|
||||
'seed_len',
|
||||
'hash_preset',
|
||||
'label',
|
||||
'min_temp',
|
||||
'max_temp',
|
||||
'coin',
|
||||
'pager',
|
||||
'point',
|
||||
):
|
||||
msg('{:30} {}'.format( f'cfg.{k}:', getattr(cfg,k) ))
|
||||
'foo', # added opt
|
||||
'print_checksum', # sets 'quiet'
|
||||
'quiet', 'verbose', # _incompatible_opts
|
||||
'passwd_file', # _infile_opts - check_infile()
|
||||
'outdir', # check_outdir()
|
||||
'cached_balances', # opt_sets_global
|
||||
'minconf', # global_sets_opt
|
||||
'hidden_incog_input_params',
|
||||
'keep_label',
|
||||
'seed_len',
|
||||
'hash_preset',
|
||||
'label',
|
||||
'min_temp',
|
||||
'max_temp',
|
||||
'coin',
|
||||
'pager',
|
||||
'point'):
|
||||
msg('{:30} {}'.format(f'cfg.{k}:', getattr(cfg, k)))
|
||||
|
||||
msg('')
|
||||
for k in (
|
||||
'cached_balances', # opt_sets_global
|
||||
'minconf', # global_sets_opt
|
||||
):
|
||||
msg('{:30} {}'.format( f'cfg.{k}:', getattr(cfg,k) ))
|
||||
'cached_balances', # opt_sets_global
|
||||
'minconf'): # global_sets_opt
|
||||
msg('{:30} {}'.format(f'cfg.{k}:', getattr(cfg, k)))
|
||||
|
||||
msg('')
|
||||
for k in (
|
||||
'fee_estimate_mode', # _autoset_opts
|
||||
):
|
||||
msg('{:30} {}'.format( f'cfg.{k}:', getattr(cfg,k) ))
|
||||
for k in ('fee_estimate_mode',): # _autoset_opts
|
||||
msg('{:30} {}'.format(f'cfg.{k}:', getattr(cfg, k)))
|
||||
|
||||
msg('')
|
||||
for n, k in enumerate(cfg._args, 1):
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import sys,os
|
||||
import sys, os
|
||||
pn = os.path.abspath(os.path.dirname(sys.argv[0]))
|
||||
parpar = os.path.dirname(os.path.dirname(pn))
|
||||
os.chdir(parpar)
|
||||
sys.path[0] = os.curdir
|
||||
|
||||
from mmgen.cfg import Config,gc
|
||||
from mmgen.color import yellow,blue,cyan,set_vt100
|
||||
from mmgen.util import msg,ymsg,gmsg,fmt,fmt_list,die
|
||||
from mmgen.cfg import Config, gc
|
||||
from mmgen.color import yellow, blue, cyan, set_vt100
|
||||
from mmgen.util import msg, ymsg, gmsg, fmt, fmt_list, die
|
||||
|
||||
commands = [
|
||||
'start',
|
||||
|
|
@ -41,24 +41,24 @@ opts_data = {
|
|||
""",
|
||||
'notes': f"""
|
||||
available commands for platform {sys.platform!r}:
|
||||
{fmt_list(commands,fmt='col',indent=' ')}
|
||||
{fmt_list(commands, fmt='col', indent=' ')}
|
||||
"""
|
||||
}
|
||||
}
|
||||
|
||||
cfg = Config(opts_data=opts_data)
|
||||
|
||||
from mmgen.term import get_char,get_char_raw,get_terminal_size,get_term
|
||||
from mmgen.ui import line_input,keypress_confirm,do_license_msg
|
||||
from mmgen.term import get_char, get_char_raw, get_terminal_size, get_term
|
||||
from mmgen.ui import line_input, keypress_confirm, do_license_msg
|
||||
import mmgen.term as term_mod
|
||||
|
||||
def cmsg(m):
|
||||
msg('\n'+cyan(m))
|
||||
|
||||
def confirm(m):
|
||||
if not keypress_confirm( cfg, m ):
|
||||
if keypress_confirm( cfg, 'Are you sure you want to exit test?' ):
|
||||
die(1,'Exiting test at user request')
|
||||
if not keypress_confirm(cfg, m):
|
||||
if keypress_confirm(cfg, 'Are you sure you want to exit test?'):
|
||||
die(1, 'Exiting test at user request')
|
||||
else:
|
||||
msg('Continuing...')
|
||||
|
||||
|
|
@ -93,12 +93,12 @@ def tt_line_input():
|
|||
The held-down "y" and ENTER keys should be blocked, not affecting the output
|
||||
on screen or entered text.
|
||||
"""))
|
||||
get_char_raw('Ready? ',num_bytes=1)
|
||||
reply = line_input( cfg, '\nEnter text: ' )
|
||||
get_char_raw('Ready? ', num_bytes=1)
|
||||
reply = line_input(cfg, '\nEnter text: ')
|
||||
confirm(f'Did you enter the text {reply!r}?')
|
||||
|
||||
def _tt_get_char(raw=False,one_char=False,immed_chars=''):
|
||||
funcname = ('get_char','get_char_raw')[raw]
|
||||
def _tt_get_char(raw=False, one_char=False, immed_chars=''):
|
||||
funcname = ('get_char', 'get_char_raw')[raw]
|
||||
fs = fmt("""
|
||||
Press some keys in quick succession.
|
||||
{}{}
|
||||
|
|
@ -133,13 +133,13 @@ def _tt_get_char(raw=False,one_char=False,immed_chars=''):
|
|||
|
||||
cmsg('Testing {}({}):'.format(
|
||||
funcname,
|
||||
','.join(f'{a}={b!r}' for a,b in kwargs.items())
|
||||
','.join(f'{a}={b!r}' for a, b in kwargs.items())
|
||||
))
|
||||
msg(fs.format( m1, yellow(m2), yellow(m3) ))
|
||||
msg(fs.format(m1, yellow(m2), yellow(m3)))
|
||||
|
||||
try:
|
||||
while True:
|
||||
ret = getattr( term_mod, funcname )('Enter a letter: ',**kwargs)
|
||||
ret = getattr(term_mod, funcname)('Enter a letter: ', **kwargs)
|
||||
msg(f'You typed {ret!r}')
|
||||
except KeyboardInterrupt:
|
||||
msg('\nDone')
|
||||
|
|
@ -147,44 +147,44 @@ def _tt_get_char(raw=False,one_char=False,immed_chars=''):
|
|||
def tt_urand():
|
||||
cmsg('Testing _get_random_data_from_user():')
|
||||
from mmgen.crypto import Crypto
|
||||
ret = Crypto(cfg)._get_random_data_from_user(uchars=10,desc='data').decode()
|
||||
msg(f'USER ENTROPY (user input + keystroke timings):\n\n{fmt(ret," ")}')
|
||||
ret = Crypto(cfg)._get_random_data_from_user(uchars=10, desc='data').decode()
|
||||
msg(f'USER ENTROPY (user input + keystroke timings):\n\n{fmt(ret, " ")}')
|
||||
times = ret.splitlines()[1:]
|
||||
avg_prec = sum(len(t.split('.')[1]) for t in times) // len(times)
|
||||
if avg_prec < gc.min_time_precision:
|
||||
ymsg(f'WARNING: Avg. time precision of only {avg_prec} decimal points. User entropy quality is degraded!')
|
||||
else:
|
||||
msg(f'Average time precision: {avg_prec} decimal points - OK')
|
||||
line_input( cfg, 'Press ENTER to continue: ' )
|
||||
line_input(cfg, 'Press ENTER to continue: ')
|
||||
|
||||
def tt_txview():
|
||||
cmsg('Testing tx.info.view_with_prompt() (try each viewing option)')
|
||||
from mmgen.tx import UnsignedTX
|
||||
fn = 'test/ref/0B8D5A[15.31789,14,tl=1320969600].rawtx'
|
||||
tx = UnsignedTX(cfg=cfg,filename=fn,quiet_open=True)
|
||||
tx = UnsignedTX(cfg=cfg, filename=fn, quiet_open=True)
|
||||
while True:
|
||||
tx.info.view_with_prompt('View data for transaction?',pause=False)
|
||||
tx.info.view_with_prompt('View data for transaction?', pause=False)
|
||||
set_vt100()
|
||||
if not keypress_confirm( cfg, 'Continue testing transaction view?', default_yes=True ):
|
||||
if not keypress_confirm(cfg, 'Continue testing transaction view?', default_yes=True):
|
||||
break
|
||||
|
||||
def tt_get_char_one():
|
||||
_tt_get_char(one_char=True)
|
||||
|
||||
def tt_get_char_one_raw():
|
||||
_tt_get_char(one_char=True,raw=True)
|
||||
_tt_get_char(one_char=True, raw=True)
|
||||
|
||||
def tt_get_char():
|
||||
_tt_get_char(one_char=False)
|
||||
|
||||
def tt_get_char_immed_chars():
|
||||
_tt_get_char(one_char=False,immed_chars='asdf')
|
||||
_tt_get_char(one_char=False, immed_chars='asdf')
|
||||
|
||||
def tt_get_char_raw():
|
||||
_tt_get_char(one_char=False,raw=True)
|
||||
_tt_get_char(one_char=False, raw=True)
|
||||
|
||||
def tt_get_char_one_char_immed_chars():
|
||||
_tt_get_char(one_char=True,immed_chars='asdf')
|
||||
_tt_get_char(one_char=True, immed_chars='asdf')
|
||||
|
||||
get_term().register_cleanup()
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import sys,os
|
||||
import sys, os
|
||||
os.chdir(os.path.dirname(os.path.dirname(os.path.abspath(os.path.dirname(sys.argv[0])))))
|
||||
sys.path[0] = os.curdir
|
||||
|
||||
|
|
@ -8,7 +8,7 @@ from mmgen.cfg import Config
|
|||
cfg = Config()
|
||||
|
||||
from mmgen.util import msg
|
||||
from mmgen.term import init_term,get_term
|
||||
from mmgen.term import init_term, get_term
|
||||
init_term(cfg)
|
||||
term = get_term()
|
||||
|
||||
|
|
|
|||
|
|
@ -16,49 +16,49 @@ keys = [
|
|||
'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef',
|
||||
]
|
||||
|
||||
def check_equal(a,b):
|
||||
def check_equal(a, b):
|
||||
assert a == b, f'{a} != {b}'
|
||||
|
||||
def msg(*args,**kwargs):
|
||||
print(*args,**kwargs,file=sys.stdout)
|
||||
def msg(*args, **kwargs):
|
||||
print(*args, **kwargs, file=sys.stdout)
|
||||
|
||||
def init_coin(t,coinsym,network,addrtype):
|
||||
t.init_coin(coinsym,network)
|
||||
def init_coin(t, coinsym, network, addrtype):
|
||||
t.init_coin(coinsym, network)
|
||||
t.addrtype = addrtype
|
||||
check_equal(type(t.addrtype).__name__,'MMGenAddrType')
|
||||
check_equal(type(t.addrtype).__name__, 'MMGenAddrType')
|
||||
msg(f'\n{t.coin} {t.proto.network.capitalize()} {t.addrtype.name.upper()} ({t.addrtype})')
|
||||
|
||||
def test_randpair(t):
|
||||
wif,addr = t.randpair()
|
||||
wif_chk = PrivKey(proto=t.proto,wif=wif).wif
|
||||
check_equal(wif,wif_chk)
|
||||
wif, addr = t.randpair()
|
||||
wif_chk = PrivKey(proto=t.proto, wif=wif).wif
|
||||
check_equal(wif, wif_chk)
|
||||
msg('\n === randwif ===')
|
||||
msg(' wif:',wif)
|
||||
msg(' addr:',CoinAddr(proto=t.proto,addr=addr))
|
||||
msg(' wif:', wif)
|
||||
msg(' addr:', CoinAddr(proto=t.proto, addr=addr))
|
||||
|
||||
def test_wif2addr(t,wif_chk,addr_chk,key_idx):
|
||||
def test_wif2addr(t, wif_chk, addr_chk, key_idx):
|
||||
key_bytes = bytes.fromhex(keys[key_idx])
|
||||
wif = PrivKey(
|
||||
proto = t.proto,
|
||||
s = key_bytes,
|
||||
compressed = t.addrtype.compressed,
|
||||
pubkey_type = t.addrtype.pubkey_type ).wif
|
||||
pubkey_type = t.addrtype.pubkey_type).wif
|
||||
addr = t.wif2addr(wif)
|
||||
|
||||
msg('\n === wif2addr ===')
|
||||
msg(' wif:',PrivKey(proto=t.proto,wif=wif).wif)
|
||||
msg(' addr:',CoinAddr(proto=t.proto,addr=addr))
|
||||
msg(' wif:', PrivKey(proto=t.proto, wif=wif).wif)
|
||||
msg(' addr:', CoinAddr(proto=t.proto, addr=addr))
|
||||
|
||||
addr_ph = t.privhex2addr(key_bytes.hex())
|
||||
|
||||
check_equal(addr,addr_ph)
|
||||
check_equal(wif,wif_chk)
|
||||
check_equal(addr,addr_chk)
|
||||
check_equal(addr, addr_ph)
|
||||
check_equal(wif, wif_chk)
|
||||
check_equal(addr, addr_chk)
|
||||
|
||||
def test_triplet(tool,coin,network,addrtype,key_idx,wif_chk,addr_chk):
|
||||
init_coin(tool,coin,network,addrtype)
|
||||
def test_triplet(tool, coin, network, addrtype, key_idx, wif_chk, addr_chk):
|
||||
init_coin(tool, coin, network, addrtype)
|
||||
test_randpair(tool)
|
||||
test_wif2addr(tool,wif_chk,addr_chk,key_idx)
|
||||
test_wif2addr(tool, wif_chk, addr_chk, key_idx)
|
||||
|
||||
def run_test():
|
||||
|
||||
|
|
@ -70,44 +70,44 @@ def run_test():
|
|||
|
||||
tool.usr_randchars # getter
|
||||
tool.usr_randchars = 0 # setter
|
||||
check_equal(tool.usr_randchars,0)
|
||||
check_equal(tool.usr_randchars, 0)
|
||||
|
||||
check_equal(f'{tool.coin} {tool.proto.cls_name} {tool.addrtype}', 'BTC mainnet L' )
|
||||
check_equal(f'{tool.coin} {tool.proto.cls_name} {tool.addrtype}', 'BTC mainnet L')
|
||||
|
||||
# test vectors from tooltest2.py:
|
||||
|
||||
test_triplet(tool,'btc','mainnet','L',0,
|
||||
test_triplet(tool, 'btc', 'mainnet', 'L', 0,
|
||||
'5HwzecKMWD82ppJK3qMKpC7ohXXAwcyAN5VgdJ9PLFaAzpBG4sX',
|
||||
'1C5VPtgq9xQ6AcTgMAR3J6GDrs72HC4pS1' )
|
||||
'1C5VPtgq9xQ6AcTgMAR3J6GDrs72HC4pS1')
|
||||
|
||||
test_triplet(tool,'btc','mainnet','C',0,
|
||||
test_triplet(tool, 'btc', 'mainnet', 'C', 0,
|
||||
'KwojSzt1VvW343mQfWQi3J537siAt5ktL2qbuCg1ZyKR8BLQ6UJm',
|
||||
'1Kz9fVSUMshzPejpzW9D95kScgA3rY6QxF' )
|
||||
'1Kz9fVSUMshzPejpzW9D95kScgA3rY6QxF')
|
||||
|
||||
test_triplet(tool,'btc','mainnet','segwit',0,
|
||||
test_triplet(tool, 'btc', 'mainnet', 'segwit', 0,
|
||||
'KwojSzt1VvW343mQfWQi3J537siAt5ktL2qbuCg1ZyKR8BLQ6UJm',
|
||||
'3AhjTiWHhVJAi1s5CfKMcLzYps12x3gZhg' )
|
||||
'3AhjTiWHhVJAi1s5CfKMcLzYps12x3gZhg')
|
||||
|
||||
test_triplet(tool,'btc','mainnet','B',0,
|
||||
test_triplet(tool, 'btc', 'mainnet', 'B', 0,
|
||||
'KwojSzt1VvW343mQfWQi3J537siAt5ktL2qbuCg1ZyKR8BLQ6UJm',
|
||||
'bc1q6pqnfwwakuuejpm9w52ds342f9d5u36v0qnz7c' )
|
||||
'bc1q6pqnfwwakuuejpm9w52ds342f9d5u36v0qnz7c')
|
||||
|
||||
if not 'no_altcoin' in sys.argv:
|
||||
test_triplet(tool,'ltc','regtest','bech32',1,
|
||||
test_triplet(tool, 'ltc', 'regtest', 'bech32', 1,
|
||||
'cV3ZRqf8PhyfiFwtJfkvGu2qmBsazE1wXoA2A16S3nixb3BTvvVx',
|
||||
'rltc1qvmqas4maw7lg9clqu6kqu9zq9cluvllnz4kj9y' )
|
||||
'rltc1qvmqas4maw7lg9clqu6kqu9zq9cluvllnz4kj9y')
|
||||
|
||||
test_triplet(tool,'xmr','mainnet','M',1,
|
||||
test_triplet(tool, 'xmr', 'mainnet', 'M', 1,
|
||||
'e8164dda6d42bd1e261a3406b2038dcbddadbeefdeadbeefdeadbeefdeadbe0f',
|
||||
'41i7saPWA53EoHenmJVRt34dubPxsXwoWMnw8AdMyx4mTD1svf7qYzcVjxxRfteLNdYrAxWUMmiPegFW9EfoNgXx7vDMExv' )
|
||||
'41i7saPWA53EoHenmJVRt34dubPxsXwoWMnw8AdMyx4mTD1svf7qYzcVjxxRfteLNdYrAxWUMmiPegFW9EfoNgXx7vDMExv')
|
||||
|
||||
test_triplet(tool,'etc','mainnet','E',1,
|
||||
test_triplet(tool, 'etc', 'mainnet', 'E', 1,
|
||||
'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef',
|
||||
'c96aaa54e2d44c299564da76e1cd3184a2386b8d' )
|
||||
'c96aaa54e2d44c299564da76e1cd3184a2386b8d')
|
||||
|
||||
test_triplet(tool,'zec','mainnet','Z',1,
|
||||
test_triplet(tool, 'zec', 'mainnet', 'Z', 1,
|
||||
'SKxuS56e99jpCeD9mMQ5o63zoGPakNdM9HCvt4Vt2cypvRjCdvGJ',
|
||||
'zchFELwBxqsAubsLQ8yZgPCDDGukjXJssgCbiTPwFNmFwn9haLnDatzfhLdZzJT4PcU4o2yr92B52UFirUzEdF6ZYM2gBkM' )
|
||||
'zchFELwBxqsAubsLQ8yZgPCDDGukjXJssgCbiTPwFNmFwn9haLnDatzfhLdZzJT4PcU4o2yr92B52UFirUzEdF6ZYM2gBkM')
|
||||
|
||||
from mmgen.cfg import Config
|
||||
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
text = {
|
||||
'gr': 'Greek text: {}'.format(''.join(map(chr,list(range(913,939))))),
|
||||
'ru': 'Russian text: {}'.format(''.join(map(chr,list(range(1040,1072))))),
|
||||
'gr': 'Greek text: {}'.format(''.join(map(chr, list(range(913, 939))))),
|
||||
'ru': 'Russian text: {}'.format(''.join(map(chr, list(range(1040, 1072))))),
|
||||
'zh': 'Chinese text: {}'.format('所以,我們非常需要這樣一種電子支付系統,它基於密碼學原理而不基於信用,'),
|
||||
'jp': 'Japanese text: {}'.format('必要なのは、信用ではなく暗号化された証明に基づく電子取引システムであり、')
|
||||
}
|
||||
|
||||
import sys
|
||||
from mmgen.util import msg,die
|
||||
from mmgen.util import msg, die
|
||||
|
||||
if len(sys.argv) != 2 or not sys.argv[1] in text:
|
||||
die(2,f'argument must be one of {list(text.keys())}')
|
||||
die(2, f'argument must be one of {list(text.keys())}')
|
||||
|
||||
msg(text[sys.argv[1]])
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue