123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- """
- mnemonic.py: Test suite for mmgen.mnemonic module
- """
- from mmgen.mnemonic import *
- from test import *
- import sys
- from binascii import hexlify
- from mmgen.mn_electrum import electrum_words as el
- from mmgen.mn_tirosh import tirosh_words as tl
- def do_random_tests(n):
- r = get_random(n)
- em = get_mnemonic_from_seed(r,el.strip().split("\n"),
- "electrum",print_info=False)
- tm = get_mnemonic_from_seed(r,tl.strip().split("\n"),
- "tirosh",print_info=False)
- print "Seed: %s (%s bits)" % (hexlify(r),len(r)*8)
- print "Electrum: %s" % " ".join(em)
- print "Tirosh: %s" % " ".join(tm)
- def hextobaseN_test(num_in,base,wl,quiet=False):
- do_msg = nomsg if quiet else msg
- do_msg("Input: %s" % num_in)
- num_enc = "".join(hextobaseN(base,num_in,wl,len(num_in)*2))
- do_msg("Encoded value: %s" % num_enc)
- num_dec = baseNtohex(base,num_enc,wl)
- do_msg("Decoded value: %s" % num_dec)
- test_equality(num_in,num_dec,wl,quiet)
- return num_enc,num_dec
- def baseNtohex_test(num_in,base,wl,quiet=False):
- do_msg = nomsg if quiet else msg
- do_msg("Input: %s" % num_in)
- num_enc = baseNtohex(base,list(num_in),wl)
- do_msg("Encoded value: %s" % num_enc)
- num_dec = "".join(hextobaseN(base,num_enc,wl,len(num_enc)*2))
- do_msg("Decoded value: %s" % num_dec)
- test_equality(num_in,num_dec,wl,quiet)
- return num_enc,num_dec
- def random128(): do_random_tests(16)
- def random192(): do_random_tests(24)
- def random256(): do_random_tests(32)
- def random512(): do_random_tests(64)
- def electrum(): check_wordlist(el,"electrum")
- def tirosh(): check_wordlist(tl,"tirosh")
- def base10tohex(num,quiet=False):
- enc,dec = baseNtohex_test(num,10,"0123456789",quiet)
- print "Decimal: %s" % num
- print "Hex (encoded): %s" % enc
- print "Decimal (recoded): %s" % dec.lstrip("0")
- def hextobase10(num,quiet=False):
- enc,dec= hextobaseN_test(num,10,"0123456789",quiet)
- print "Hex: %s" % num
- print "Decimal (encoded): %s" % enc.lstrip("0")
- print "Hex (recoded): %s" % dec
- def base8tohex(num,quiet=False):
- enc,dec = baseNtohex_test(num,8,"01234567",quiet)
- print "Octal: %s" % num
- print "Hex (encoded): %s" % enc
- print "Octal (recoded): %s" % "0" + dec.lstrip("0")
- def hextobase8(num,quiet=False):
- enc,dec = hextobaseN_test(num,8,"01234567",quiet)
- print "Hex: %s" % num
- print "Octal: %s" % "0" + enc.lstrip("0")
- print "Hex (recoded): %s" % dec
- tests = {
- "random128": [],
- "random192": [],
- "random256": [],
- "random512": [],
- "electrum": [],
- "tirosh": [],
- "base10tohex": ['base10num [int]','quiet [bool=False]'],
- "hextobase10": ['hexnum [str]', 'quiet [bool=False]'],
- "base8tohex": ['base8num [int]', 'quiet [bool=False]'],
- "hextobase8": ['hexnum [str]', 'quiet [bool=False]'],
- }
- args = process_test_args(sys.argv, tests)
- eval(sys.argv[1])(*args)
|