autosign: pass passwd_file and outdir to methods directly

This commit is contained in:
The MMGen Project 2024-02-22 12:48:42 +00:00
commit 02959677bc
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
3 changed files with 20 additions and 24 deletions

View file

@ -112,9 +112,15 @@ class Signable:
from .rpc import rpc_init
tx1.rpc = await rpc_init( self.cfg, tx1.proto, ignore_wallet=True )
from .tx.sign import txsign
tx2 = await txsign( self.cfg, tx1, self.parent.wallet_files[:], None, None )
tx2 = await txsign(
cfg_parm = self.cfg,
tx = tx1,
seed_files = self.parent.wallet_files[:],
kl = None,
kal = None,
passwd_file = str(self.parent.keyfile))
if tx2:
tx2.file.write(ask_write=False)
tx2.file.write(ask_write=False, outdir=self.dir)
return tx2
else:
return False
@ -221,7 +227,7 @@ class Signable:
async def sign(self,f):
from .msg import UnsignedMsg,SignedMsg
m = UnsignedMsg( self.cfg, infile=f )
await m.sign( wallet_files=self.parent.wallet_files[:] )
await m.sign(wallet_files=self.parent.wallet_files[:], passwd_file=str(self.parent.keyfile))
m = SignedMsg( self.cfg, data=m.__dict__ )
m.write_to_file(
outdir = self.dir.resolve(),
@ -405,11 +411,11 @@ class Autosign:
bmsg('It is now safe to extract the removable device')
def decrypt_wallets(self):
msg(f"Unlocking wallet{suf(self.wallet_files)} with key from '{self.cfg.passwd_file}'")
msg(f"Unlocking wallet{suf(self.wallet_files)} with key from {self.keyfile}")
fails = 0
for wf in self.wallet_files:
try:
Wallet( self.cfg, wf, ignore_in_fmt=True )
Wallet(self.cfg, wf, ignore_in_fmt=True, passwd_file=str(self.keyfile))
except SystemExit as e:
if e.code != 0:
fails += 1
@ -449,20 +455,10 @@ class Autosign:
await asyncio.sleep(0.5)
return True
def update_cfg(self):
if not hasattr(self,'_cfg_updated'):
self.cfg = Config({
'_clone': self.cfg,
'outdir': str(self.tx_dir),
'passwd_file': str(self.keyfile),
})
self._cfg_updated = True
async def do_sign(self):
if not self.cfg.stealth_led:
self.led.set('busy')
self.do_mount()
self.update_cfg()
key_ok = self.decrypt_wallets()
if key_ok:
if self.cfg.stealth_led:
@ -491,7 +487,7 @@ class Autosign:
else:
from .fileutil import shred_file
msg(f"\nShredding existing key '{self.keyfile}'")
shred_file( self.keyfile, verbose=self.cfg.verbose )
shred_file(str(self.keyfile), verbose=self.cfg.verbose)
def create_key(self):
desc = f"key file '{self.keyfile}'"
@ -560,6 +556,7 @@ class Autosign:
'autosign_mountpoint': str(self.mountpoint),
'outdir': str(self.xmr_dir), # required by vkal.write()
'offline': True,
'passwd_file': str(self.keyfile),
})
return self._xmrwallet_cfg
@ -585,8 +582,6 @@ class Autosign:
except:
pass
self.update_cfg()
self.xmr_outputs_dir.mkdir(parents=True)
self.xmr_tx_dir.mkdir(exist_ok=True)

View file

@ -210,7 +210,7 @@ class coin_msg:
class unsigned(completed):
async def sign(self,wallet_files):
async def sign(self, wallet_files, passwd_file=None):
from .addrlist import KeyAddrList
@ -248,7 +248,7 @@ class coin_msg:
self.rpc = await rpc_init( self.cfg, self.proto, ignore_wallet=True )
from .wallet import Wallet
wallet_seeds = [Wallet(cfg=self.cfg,fn=fn).seed for fn in wallet_files]
wallet_seeds = [Wallet(cfg=self.cfg, fn=fn, passwd_file=passwd_file).seed for fn in wallet_files]
need_sids = remove_dups([al.sid for al in self.addrlists], quiet=True)
saved_seeds = []

View file

@ -37,7 +37,7 @@ def get_seed_for_seed_id(sid,infiles,saved_seeds):
subseeds_checked = False
while True:
if infiles:
seed = Wallet(cfg,infiles.pop(0),ignore_in_fmt=True).seed
seed = Wallet(cfg, infiles.pop(0), ignore_in_fmt=True, passwd_file=global_passwd_file).seed
elif subseeds_checked is False:
seed = saved_seeds[list(saved_seeds)[0]].subseed_by_seed_id(sid,print_msg=True)
subseeds_checked = True
@ -45,7 +45,7 @@ def get_seed_for_seed_id(sid,infiles,saved_seeds):
continue
elif cfg.in_fmt:
cfg._util.qmsg(f'Need seed data for Seed ID {sid}')
seed = Wallet(cfg).seed
seed = Wallet(cfg, passwd_file=global_passwd_file).seed
msg(f'User input produced Seed ID {seed.sid}')
if not seed.sid == sid: # TODO: add test
seed = seed.subseed_by_seed_id(sid,print_msg=True)
@ -141,13 +141,14 @@ def get_keylist(cfg):
return get_lines_from_file( cfg, cfg.keys_from_file, 'key-address data', trim_comments=True )
return None
async def txsign(cfg_parm,tx,seed_files,kl,kal,tx_num_str=''):
async def txsign(cfg_parm, tx, seed_files, kl, kal, tx_num_str='', passwd_file=None):
keys = MMGenList() # list of AddrListEntry objects
non_mmaddrs = tx.get_non_mmaddrs('inputs')
global cfg
global cfg, global_passwd_file
cfg = cfg_parm
global_passwd_file = passwd_file
if non_mmaddrs:
tx.check_non_mmgen_inputs(caller='txsign',non_mmaddrs=non_mmaddrs)