diff options
| -rw-r--r-- | src/leap/soledad/__init__.py | 35 | 
1 files changed, 23 insertions, 12 deletions
| diff --git a/src/leap/soledad/__init__.py b/src/leap/soledad/__init__.py index bf625bbd..f79e1c31 100644 --- a/src/leap/soledad/__init__.py +++ b/src/leap/soledad/__init__.py @@ -98,12 +98,6 @@ class Soledad(object):               'shared_db_url': shared_db_url,               }          ) -        if self.shared_db_url: -            # TODO: eliminate need to create db here. -            self._shared_db = SoledadSharedDatabase.open_database( -                self.shared_db_url, -                True, -                token=auth_token)          if bootstrap:              self._bootstrap() @@ -113,10 +107,18 @@ class Soledad(object):          Soledad Client bootstrap is the following sequence of stages: -            1. Key loading/generation: guarantees key is either loaded from -               server or generated locally. -            2. Key copy verification: guarantees our copy of keys is identical -               to server's copy. +            Stage 0 - Local environment setup. +                - directory initialization. +                - gnupg wrapper initialization. +            Stage 1 - Keys generation/loading: +                - if keys exists locally, load them. +                - else, if keys exists in server, download them. +                - else, generate keys. +            Stage 2 - Keys synchronization: +                - if keys exist in server, confirm we have the same keys +                  locally. +                - else, send keys to server. +            Stage 3 - Database initialization.          This method decides which bootstrap stages have already been performed          and performs the missing ones in order. @@ -124,9 +126,11 @@ class Soledad(object):          # TODO: make sure key storage always happens (even if this method is          #       interrupted).          # TODO: write tests for bootstrap stages. +        # TODO: log each bootstrap step. +        # Stage 0  - Local environment setup          self._init_dirs()          self._gpg = GPGWrapper(gnupghome=self.gnupg_home) -        # bootstrap stage 1 +        # Stage 1 - Keys generation/loading          if self._has_keys():              self._load_keys()          else: @@ -137,9 +141,16 @@ class Soledad(object):                  self._set_privkey(self.decrypt(doc.content['_privkey'],                                                 passphrase=self._user_hash()))                  self._set_symkey(self.decrypt(doc.content['_symkey'])) -        # bootstrap stage 2 +        # Stage 2 - Keys synchronization          self._assert_server_keys() +        # Stage 3 -Database initialization          self._init_db() +        if self.shared_db_url: +            # TODO: eliminate need to create db here. +            self._shared_db = SoledadSharedDatabase.open_database( +                self.shared_db_url, +                True, +                token=auth_token)      def _init_config(self, param_conf):          """ | 
