Skip to content
Snippets Groups Projects
Unverified Commit 733893d2 authored by Kali Kaneko's avatar Kali Kaneko
Browse files

[bug] set the received active secret before saving local file

- bug: we were dumping the received secrets locally to disk *before*
  setting the received property for the active secret, and therefore the
  'active_secret' was always marked as null.
- refactor common code into an utility method.
parent c9d1677e
No related branches found
No related tags found
No related merge requests found
o [bug] Set active secret before saving local file.
......@@ -261,6 +261,16 @@ class SoledadSecrets(object):
logger.info("Could not find a secret in local storage.")
return False
def _maybe_set_active_secret(self, active_secret):
"""
If no secret_id is already set, choose the passed active secret, or
just choose first secret available if none.
"""
if not self._secret_id:
if not active_secret:
active_secret = self._secrets.items()[0][0]
self.set_secret_id(active_secret)
def _load_secrets(self):
"""
Load storage secrets from local file.
......@@ -270,12 +280,7 @@ class SoledadSecrets(object):
with open(self._secrets_path, 'r') as f:
content = json.loads(f.read())
_, active_secret = self._import_recovery_document(content)
# choose first secret if no secret_id was given
if self._secret_id is None:
if active_secret is None:
self.set_secret_id(self._secrets.items()[0][0])
else:
self.set_secret_id(active_secret)
self._maybe_set_active_secret(active_secret)
# enlarge secret if needed
enlarged = False
if len(self._secrets[self._secret_id]) < self.GEN_SECRET_LENGTH:
......@@ -306,12 +311,8 @@ class SoledadSecrets(object):
'Found cryptographic secrets in shared recovery '
'database.')
_, active_secret = self._import_recovery_document(doc.content)
self._maybe_set_active_secret(active_secret)
self._store_secrets() # save new secrets in local file
if self._secret_id is None:
if active_secret is None:
self.set_secret_id(self._secrets.items()[0][0])
else:
self.set_secret_id(active_secret)
else:
# STAGE 3 - there are no secrets in server also, so
# generate a secret and store it in remote db.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment