diff options
| -rw-r--r-- | keymanager/src/leap/keymanager/__init__.py | 42 | ||||
| -rw-r--r-- | keymanager/src/leap/keymanager/openpgp.py | 6 | 
2 files changed, 47 insertions, 1 deletions
| diff --git a/keymanager/src/leap/keymanager/__init__.py b/keymanager/src/leap/keymanager/__init__.py index 61213d3..dbc5489 100644 --- a/keymanager/src/leap/keymanager/__init__.py +++ b/keymanager/src/leap/keymanager/__init__.py @@ -495,6 +495,48 @@ class KeyManager(object):          return self._wrapper_map[pubkey.__class__].verify(              data, pubkey, detached_sig=detached_sig) +    def parse_openpgp_ascii_key(self, key_data): +        """ +        Parses an ascii armored key (or key pair) data and returns +        the OpenPGPKey keys. + +        :param key_data: the key data to be parsed. +        :type key_data: str or unicode + +        :returns: the public key and private key (if applies) for that data. +        :rtype: (public, private) -> tuple(OpenPGPKey, OpenPGPKey) +                the tuple may have one or both components None +        """ +        return self._wrapper_map[OpenPGPKey].parse_ascii_key(key_data) + +    def delete_key(self, key): +        """ +        Remove C{key} from storage. + +        May raise: +            openpgp.errors.KeyNotFound +            openpgp.errors.KeyAttributesDiffer + +        :param key: The key to be removed. +        :type key: EncryptionKey +        """ +        try: +            self._wrapper_map[type(key)].delete_key(key) +        except IndexError as e: +            leap_assert(False, "Unsupported key type. Error {0!r}".format(e)) + +    def put_key(self, key): +        """ +        Put C{key} in local storage. + +        :param key: The key to be stored. +        :type key: OpenPGPKey +        """ +        try: +            self._wrapper_map[type(key)].put_key(key) +        except IndexError as e: +            leap_assert(False, "Unsupported key type. Error {0!r}".format(e)) +  from ._version import get_versions  __version__ = get_versions()['version']  del get_versions diff --git a/keymanager/src/leap/keymanager/openpgp.py b/keymanager/src/leap/keymanager/openpgp.py index 78acd6a..f6223d5 100644 --- a/keymanager/src/leap/keymanager/openpgp.py +++ b/keymanager/src/leap/keymanager/openpgp.py @@ -424,10 +424,14 @@ class OpenPGPScheme(EncryptionScheme):          """          Remove C{key} from storage. +        May raise: +            errors.KeyNotFound +            errors.KeyAttributesDiffer +          :param key: The key to be removed.          :type key: EncryptionKey          """ -        leap_assert(key.__class__ is OpenPGPKey, 'Wrong key type.') +        leap_assert_type(key, OpenPGPKey)          stored_key = self.get_key(key.address, private=key.private)          if stored_key is None:              raise errors.KeyNotFound(key) | 
