diff options
| -rw-r--r-- | src/leap/keymanager/keys.py | 39 | 
1 files changed, 26 insertions, 13 deletions
| diff --git a/src/leap/keymanager/keys.py b/src/leap/keymanager/keys.py index 34d921c5..1955d545 100644 --- a/src/leap/keymanager/keys.py +++ b/src/leap/keymanager/keys.py @@ -192,6 +192,11 @@ class EncryptionKey(object):      __metaclass__ = ABCMeta +    __slots__ = ('address', 'uids', 'fingerprint', 'key_data', +                 'private', 'length', 'expiry_date', 'validation', +                 'last_audited_at', 'refreshed_at', +                 'encr_used', 'sign_used', '_index') +      def __init__(self, address=None, uids=[], fingerprint="",                   key_data="", private=False, length=0, expiry_date=None,                   validation=ValidationLevels.Weak_Chain, last_audited_at=None, @@ -212,6 +217,7 @@ class EncryptionKey(object):          self.refreshed_at = refreshed_at          self.encr_used = encr_used          self.sign_used = sign_used +        self._index = len(self.__slots__)      def get_json(self):          """ @@ -258,19 +264,26 @@ class EncryptionKey(object):              KEY_TAGS_KEY: [KEYMANAGER_ACTIVE_TAG],          }) -    def get_dict(self): -        """ -        :return: a serializable dict representation of this key. -        :rtype: dict -        """ -        return { -          KEY_ADDRESS_KEY: self.address, -          KEY_UIDS_KEY: self.uids, -          KEY_FINGERPRINT_KEY: self.fingerprint, -          KEY_LENGTH_KEY: self.length, -          KEY_EXPIRY_DATE_KEY: str(self.expiry_date), -          KEY_DATA_KEY: self.key_data -        } +    def next(self): +        if self._index == 0: +            self._index = len(self.__slots__) +            raise StopIteration + +        self._index -= 1 +        key = self.__slots__[self._index] + +        if key.startswith('_'): +            return self.next() + +        value = getattr(self, key) +        if key == "validation": +            value = str(value) +        elif key in ["expiry_date", "last_audited_at", "refreshed_at"]: +            value = str(value) +        return key, value + +    def __iter__(self): +        return self      def __repr__(self):          """ | 
