1
0
This commit is contained in:
SomberNight
2019-09-04 13:53:38 +02:00
parent a42a773d19
commit 99b83f7527
2 changed files with 28 additions and 11 deletions

View File

@@ -67,6 +67,13 @@ class WizardStackItem(NamedTuple):
storage_data: dict
class WizardWalletPasswordSetting(NamedTuple):
password: Optional[str]
encrypt_storage: bool
storage_enc_version: StorageEncryptionVersion
encrypt_keystore: bool
class BaseWizard(Logger):
def __init__(self, config: SimpleConfig, plugins: Plugins):
@@ -75,7 +82,7 @@ class BaseWizard(Logger):
self.config = config
self.plugins = plugins
self.data = {}
self.pw_args = None
self.pw_args = None # type: Optional[WizardWalletPasswordSetting]
self._stack = [] # type: List[WizardStackItem]
self.plugin = None
self.keystores = []
@@ -555,8 +562,9 @@ class BaseWizard(Logger):
encrypt_keystore=encrypt_keystore),
force_disable_encrypt_cb=not encrypt_keystore)
def on_password(self, password, *, encrypt_storage,
storage_enc_version=StorageEncryptionVersion.USER_PASSWORD, encrypt_keystore):
def on_password(self, password, *, encrypt_storage: bool,
storage_enc_version=StorageEncryptionVersion.USER_PASSWORD,
encrypt_keystore: bool):
for k in self.keystores:
if k.may_have_password():
k.update_password(None, password)
@@ -573,7 +581,10 @@ class BaseWizard(Logger):
self.data['keystore'] = keys
else:
raise Exception('Unknown wallet type')
self.pw_args = password, encrypt_storage, storage_enc_version
self.pw_args = WizardWalletPasswordSetting(password=password,
encrypt_storage=encrypt_storage,
storage_enc_version=storage_enc_version,
encrypt_keystore=encrypt_keystore)
self.terminate()
def create_storage(self, path):
@@ -581,12 +592,12 @@ class BaseWizard(Logger):
raise Exception('file already exists at path')
if not self.pw_args:
return
password, encrypt_storage, storage_enc_version = self.pw_args
pw_args = self.pw_args
self.pw_args = None # clean-up so that it can get GC-ed
storage = WalletStorage(path)
storage.set_keystore_encryption(bool(password))
if encrypt_storage:
storage.set_password(password, enc_version=storage_enc_version)
storage.set_keystore_encryption(bool(pw_args.password) and pw_args.encrypt_keystore)
if pw_args.encrypt_storage:
storage.set_password(pw_args.password, enc_version=pw_args.storage_enc_version)
for key, value in self.data.items():
storage.put(key, value)
storage.write()