xmrwallet create_offline: use existing key-address file if present

This commit is contained in:
The MMGen Project 2026-02-01 09:11:08 +00:00
commit 41d705ec6e
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
3 changed files with 26 additions and 5 deletions

View file

@ -77,10 +77,16 @@ class OpCreateOffline(OpCreate):
vkf = vkal.file
# before writing viewkey-address file, shred any old ones in the directory:
do_write = True
for f in Path(self.asi.xmr_dir).iterdir():
if f.name.endswith(vkf.ext):
if f.name == vkf.filename:
do_write = False
elif f.name.endswith(vkf.ext):
from ...fileutil import shred_file
msg(f'\nShredding old viewkey-address file ‘{f}')
msg(f'Shredding old viewkey-address file ‘{f}')
shred_file(self.cfg, f, iterations=15)
vkf.write(outdir=self.asi.xmr_dir)
if do_write:
vkf.write(outdir=self.asi.xmr_dir)
else:
msg(f'Viewkey-address file ‘{vkf.filename}’ already exists, skipping creation')

View file

@ -189,6 +189,12 @@ class CmdTestAutosignBase(CmdTestBase):
stop_test_daemons(*(self.network_ids + self.extra_daemons), remove_datadir=True)
return 'ok'
def delete_setup(self):
self.spawn(msg_only=True)
imsg(f'Deleting ‘{self.asi.wallet_dir}')
shutil.rmtree(self.asi.wallet_dir, ignore_errors=True)
return 'ok'
def run_setup(
self,
mn_type = None,

View file

@ -256,7 +256,10 @@ class CmdTestXMRAutosign(CmdTestXMRWallet, CmdTestAutosignThreaded):
use_dfl_wallet = None,
expect_args = ['Continue with Monero setup? (Y/n): ', 'n'])
def autosign_xmr_setup(self):
def autosign_xmr_setup_redo(self):
return self.autosign_xmr_setup(write_viewkeys=False)
def autosign_xmr_setup(self, write_viewkeys=True):
self.insert_device_online()
self.do_mount_online()
self.asi_online.xmr_dir.mkdir(exist_ok=True)
@ -266,7 +269,10 @@ class CmdTestXMRAutosign(CmdTestXMRWallet, CmdTestAutosignThreaded):
self.insert_device()
t = self.spawn('mmgen-autosign', self.opts + ['xmr_setup'], no_passthru_opts=True)
t.written_to_file('View keys')
if write_viewkeys:
t.written_to_file('View keys')
else:
t.expect('already exists, skipping')
t.read()
self.remove_device()
return t
@ -514,6 +520,9 @@ class CmdTestXMRCompat(CmdTestXMRAutosign):
cmd_group = (
('autosign_setup', 'autosign setup with Alice’s seed'),
('autosign_xmr_setup', 'autosign setup (creation of Monero signing wallets)'),
('delete_setup', 'deleting offline autosign setup'),
('autosign_setup', 'autosign setup with Alice’s seed'),
('autosign_xmr_setup_redo', 'autosign setup (creation of Monero signing wallets, redo)'),
('create_watchonly_wallets', 'creating Alice’s watch-only wallets'),
('gen_kafile_miner', 'generating key-address file for Miner'),
('create_wallet_miner', 'creating Monero wallet for Miner'),