Example #1
0
    def restore_keys(self):
        """
        After being loaded in, re-create out key objects.
        """
        # Restore our master key
        if self.UserSettings['keys'].get('master') is not None:
            if 'encryptedprivkey' in self.UserSettings['keys']['master']:
                self.Keys['master'] = LockedKey(
                    pub=self.UserSettings['keys']['master']['pubkey'],
                    encryptedprivkey=self.UserSettings['keys']['master']
                    ['encryptedprivkey'])
                self.Keys['master'].generated = self.UserSettings['keys'][
                    'master']['generated']
                self.Keys['master'].expires = self.UserSettings['keys'][
                    'master']['expires']
                self.server.logger.info("Reconstructed with encryptedprivkey")
            else:
                # If we just have a pubkey string, do the best we can.
                if self.UserSettings['keys']['master'].get('pubkey'):
                    self.Keys['master'] = Key(
                        pub=self.UserSettings['keys']['master']['pubkey'])
                    self.Keys['master'].generated = self.UserSettings['keys'][
                        'master'].get('generated')
                    self.Keys['master'].expires = self.UserSettings['keys'][
                        'master'].get('expires')
                    self.server.logger.info(
                        "reconstructed user without privkey")
        else:
            print("Requested user had no master key.")
        # Restore any Posted communication keys.
        for key in self.UserSettings['keys'].get('posted', []):
            lk = LockedKey(pub=key['pubkey'],
                           encryptedprivkey=key['encryptedprivkey'])
            lk.generated = key['generated']
            lk.expires = key['expires']
            self.Keys['posted'].append(lk)

        # Restore any oneoff communication keys
        for key in self.UserSettings['keys'].get('secret', []):
            lk = LockedKey(pub=key['pubkey'],
                           encryptedprivkey=key['encryptedprivkey'])
            lk.generated = key['generated']
            lk.expires = key['expires']
            self.Keys['secret'].append(lk)