Esempio n. 1
0
	def hex2mn(self,hexstr:'sstr',wordlist_id=dfl_wl_id):
		"convert a 16, 24 or 32-byte hexadecimal number to a mnemonic"
		opt.out_fmt = 'words'
		from mmgen.seed import SeedSource
		s = SeedSource(seed=bytes.fromhex(hexstr))
		s._format()
		return ' '.join(s.ssdata.mnemonic)
Esempio n. 2
0
	def get_subseed_by_seed_id(self,seed_id:str,wallet='',last_idx=g.subseeds):
		"get the Subseed Index of a single subseed by Seed ID for default or specified wallet"
		opt.quiet = True
		sf = get_seed_file([wallet] if wallet else [],1)
		from mmgen.seed import SeedSource
		ret = SeedSource(sf).seed.subseed_by_seed_id(seed_id,last_idx)
		return ret.ss_idx if ret else None
Esempio n. 3
0
 def list_subseeds(self, subseed_idx_range: str, wallet=''):
     "list a range of subseed Seed IDs for default or specified wallet"
     opt.quiet = True
     sf = get_seed_file([wallet] if wallet else [], 1)
     from mmgen.seed import SeedSource
     return SeedSource(sf).seed.subseeds.format(
         *SubSeedIdxRange(subseed_idx_range))
Esempio n. 4
0
 def hex2mn(self, hexstr: 'sstr', fmt: mn_opts_disp = dfl_mnemonic_fmt):
     "convert a 16, 24 or 32-byte hexadecimal number to a mnemonic seed phrase"
     opt.out_fmt = self._get_mnemonic_fmt(fmt)
     from mmgen.seed import SeedSource
     s = SeedSource(seed_bin=bytes.fromhex(hexstr))
     s._format()
     return ' '.join(s.ssdata.mnemonic)
Esempio n. 5
0
def setup():
    remove_wallet_dir()
    gen_key(no_unmount=True)
    from mmgen.seed import SeedSource
    opt.hidden_incog_input_params = None
    opt.quiet = True
    opt.in_fmt = 'words'
    ss_in = SeedSource()
    opt.out_fmt = 'mmdat'
    opt.usr_randchars = 0
    opt.hash_preset = '1'
    opt.set_by_user = ['hash_preset']
    opt.passwd_file = os.path.join(tx_dir, key_fn)
    from mmgen.obj import MMGenWalletLabel
    opt.label = MMGenWalletLabel('Autosign Wallet')
    ss_out = SeedSource(ss=ss_in)
    ss_out.write_to_file(desc='autosign wallet', outdir=wallet_dir)
Esempio n. 6
0
 def mn2hex(self,
            seed_mnemonic: 'sstr',
            fmt: mn_opts_disp = dfl_mnemonic_fmt):
     "convert a 12, 18 or 24-word mnemonic seed phrase to a hexadecimal number"
     in_fmt = self._get_mnemonic_fmt(fmt)
     opt.quiet = True
     from mmgen.seed import SeedSource
     return SeedSource(in_data=seed_mnemonic, in_fmt=in_fmt).seed.hexdata
Esempio n. 7
0
def Gen_addr(addr,wallet='',target='addr'):
	addr = MMGenID(addr)
	sf = get_seed_file([wallet] if wallet else [],1)
	opt.quiet = True
	from mmgen.seed import SeedSource
	ss = SeedSource(sf)
	if ss.seed.sid != addr.sid:
		m = 'Seed ID of requested address ({}) does not match wallet ({})'
		die(1,m.format(addr.sid,ss.seed.sid))
	al = AddrList(seed=ss.seed,addr_idxs=AddrIdxList(str(addr.idx)),mmtype=addr.mmtype,do_chksum=False)
	d = al.data[0]
	Msg(d.sec.wif if target=='wif' else d.addr)
Esempio n. 8
0
	def gen_addr(self,mmgen_addr:str,wallet='',target='addr'):
		"generate a single MMGen address from default or specified wallet"
		addr = MMGenID(mmgen_addr)
		opt.quiet = True
		sf = get_seed_file([wallet] if wallet else [],1)
		from mmgen.seed import SeedSource
		ss = SeedSource(sf)
		if ss.seed.sid != addr.sid:
			m = 'Seed ID of requested address ({}) does not match wallet ({})'
			die(1,m.format(addr.sid,ss.seed.sid))
		al = AddrList(seed=ss.seed,addr_idxs=AddrIdxList(str(addr.idx)),mmtype=addr.mmtype)
		d = al.data[0]
		ret = d.sec.wif if target=='wif' else d.addr
		return ret
Esempio n. 9
0
def decrypt_wallets():
    opt.hash_preset = '1'
    opt.set_by_user = ['hash_preset']
    opt.passwd_file = os.path.join(tx_dir, key_fn)
    #	opt.passwd_file = '/tmp/key'
    from mmgen.seed import SeedSource
    msg("Unlocking wallet{} with key from '{}'".format(suf(wfs),
                                                       opt.passwd_file))
    fails = 0
    for wf in wfs:
        try:
            SeedSource(wf)
        except SystemExit as e:
            if e.code != 0:
                fails += 1

    return False if fails else True
Esempio n. 10
0
errmsg = "'{}': invalid parameter for --type option".format(opt.type)
addr_type = MAT(opt.type or g.proto.dfl_mmtype, errmsg=errmsg)

if len(cmd_args) < 1: opts.usage()

if opt.use_internal_ed25519_mod:
    msg('Using (slow) internal ed25519 module by user request')

idxs = AddrIdxList(fmt_str=cmd_args.pop())

sf = get_seed_file(cmd_args, 1)

do_license_msg()

ss = SeedSource(sf)

i = (gen_what == 'addresses') or bool(opt.no_addresses) * 2
al = (KeyAddrList, AddrList, KeyList)[i](seed=ss.seed,
                                         addr_idxs=idxs,
                                         mmtype=addr_type)
al.format()

if al.gen_addrs and opt.print_checksum:
    Die(0, al.checksum)

if al.gen_keys and keypress_confirm('Encrypt key list?'):
    al.encrypt()
    al.write_to_file(binary=True, desc='encrypted ' + al.file_desc)
else:
    al.write_to_file()
Esempio n. 11
0
cmd_args = opts.init(opts_data, opt_filter=opt_filter)

if opt.label:
    opt.label = MMGenWalletLabel(opt.label, msg="Error in option '--label'")

sf = get_seed_file(cmd_args, nargs, invoked_as=invoked_as)

if not invoked_as == 'chk': do_license_msg()

if invoked_as in ('conv', 'passchg'):
    m1 = green('Processing input wallet')
    m2 = yellow(' (default wallet)'
                ) if sf and os.path.dirname(sf) == g.data_dir else ''
    msg(m1 + m2)

ss_in = None if invoked_as == 'gen' else SeedSource(
    sf, passchg=(invoked_as == 'passchg'))
if invoked_as == 'chk':
    lbl = ss_in.ssdata.label.hl() if hasattr(ss_in.ssdata, 'label') else 'NONE'
    vmsg('Wallet label: {}'.format(lbl))
    # TODO: display creation date
    sys.exit(0)

if invoked_as in ('conv', 'passchg'):
    gmsg('Processing output wallet')

ss_out = SeedSource(ss=ss_in, passchg=invoked_as == 'passchg')

if invoked_as == 'gen':
    qmsg("This wallet's Seed ID: {}".format(ss_out.seed.sid.hl()))

if invoked_as == 'passchg':
Esempio n. 12
0
if invoked_as == 'subgen':
    from mmgen.obj import SubSeedIdx
    ss_idx = SubSeedIdx(cmd_args.pop())

sf = get_seed_file(cmd_args, nargs, invoked_as=invoked_as)

if not invoked_as == 'chk': do_license_msg()

if invoked_as in ('conv', 'passchg', 'subgen'):
    m1 = green('Processing input wallet')
    m2 = yellow(' (default wallet)'
                ) if sf and os.path.dirname(sf) == g.data_dir else ''
    msg(m1 + m2)

ss_in = None if invoked_as == 'gen' else SeedSource(
    sf, passchg=(invoked_as == 'passchg'))

if invoked_as == 'chk':
    lbl = ss_in.ssdata.label.hl() if hasattr(ss_in.ssdata, 'label') else 'NONE'
    vmsg('Wallet label: {}'.format(lbl))
    # TODO: display creation date
    sys.exit(0)

if invoked_as in ('conv', 'passchg', 'subgen'):
    gmsg('Processing output wallet')

if invoked_as == 'subgen':
    ss_out = SeedSource(seed=ss_in.seed.subseed(ss_idx, print_msg=True).data)
else:
    ss_out = SeedSource(ss=ss_in, passchg=invoked_as == 'passchg')
Esempio n. 13
0
	def get_subseed(self,subseed_idx:str,wallet=''):
		"get the Seed ID of a single subseed by Subseed Index for default or specified wallet"
		opt.quiet = True
		sf = get_seed_file([wallet] if wallet else [],1)
		from mmgen.seed import SeedSource
		return SeedSource(sf).seed.subseed(subseed_idx).sid
Esempio n. 14
0
	def mn2hex(self,seed_mnemonic:'sstr',wordlist=dfl_wl_id):
		"convert a 12, 18 or 24-word mnemonic to a hexadecimal number"
		opt.quiet = True
		from mmgen.seed import SeedSource
		return SeedSource(in_data=seed_mnemonic,in_fmt='words').seed.hexdata