diff options
| author | Tomás Touceda <chiiph@leap.se> | 2013-12-17 14:57:59 -0300 | 
|---|---|---|
| committer | Tomás Touceda <chiiph@leap.se> | 2013-12-17 14:57:59 -0300 | 
| commit | 3d7d74fa5759b168eb57e4259ad56bcb71f9a4a0 (patch) | |
| tree | 3ddbec84c37df60b0689f1053a7ec93a4421ecd2 /src | |
| parent | 77e4e1d037a8eb796553b3f28f31e4f4d1ccee84 (diff) | |
| parent | 27c25df5533f9312c93fa79af2d7a442b389b9b8 (diff) | |
Merge remote-tracking branch 'refs/remotes/kali/feature/memoize-calls' into develop
Diffstat (limited to 'src')
| -rw-r--r-- | src/leap/keymanager/__init__.py | 7 | ||||
| -rw-r--r-- | src/leap/keymanager/_version.py | 34 | ||||
| -rw-r--r-- | src/leap/keymanager/openpgp.py | 7 | 
3 files changed, 26 insertions, 22 deletions
diff --git a/src/leap/keymanager/__init__.py b/src/leap/keymanager/__init__.py index 6cfbf710..5b1d8d96 100644 --- a/src/leap/keymanager/__init__.py +++ b/src/leap/keymanager/__init__.py @@ -46,6 +46,7 @@ import requests  from leap.common.check import leap_assert, leap_assert_type  from leap.common.events import signal  from leap.common.events import events_pb2 as proto +from leap.common.decorators import memoized_method  from leap.keymanager.errors import KeyNotFound @@ -250,6 +251,7 @@ class KeyManager(object):          self._put(uri, data)          signal(proto.KEYMANAGER_DONE_UPLOADING_KEYS, self._address) +    @memoized_method      def get_key(self, address, ktype, private=False, fetch_remote=True):          """          Return a key of type C{ktype} bound to C{address}. @@ -266,9 +268,10 @@ class KeyManager(object):          :return: A key of type C{ktype} bound to C{address}.          :rtype: EncryptionKey -        @raise KeyNotFound: If the key was not found both locally and in -            keyserver. +        :raise KeyNotFound: If the key was not found both locally and in +                            keyserver.          """ +        logger.debug("getting key for %s" % (address,))          leap_assert(              ktype in self._wrapper_map,              'Unkown key type: %s.' % str(ktype)) diff --git a/src/leap/keymanager/_version.py b/src/leap/keymanager/_version.py index 3a514e14..28fca968 100644 --- a/src/leap/keymanager/_version.py +++ b/src/leap/keymanager/_version.py @@ -17,6 +17,7 @@ git_full = "$Format:%H$"  import subprocess  import sys +  def run_command(args, cwd=None, verbose=False):      try:          # remember shell=False, so use git.cmd on windows, not just git @@ -37,10 +38,10 @@ def run_command(args, cwd=None, verbose=False):      return stdout -import sys  import re  import os.path +  def get_expanded_variables(versionfile_source):      # the code embedded in _version.py can just fetch the value of these      # variables. When used from setup.py, we don't want to import @@ -48,7 +49,7 @@ def get_expanded_variables(versionfile_source):      # used from _version.py.      variables = {}      try: -        f = open(versionfile_source,"r") +        f = open(versionfile_source, "r")          for line in f.readlines():              if line.strip().startswith("git_refnames ="):                  mo = re.search(r'=\s*"(.*)"', line) @@ -63,12 +64,13 @@ def get_expanded_variables(versionfile_source):          pass      return variables +  def versions_from_expanded_variables(variables, tag_prefix, verbose=False):      refnames = variables["refnames"].strip()      if refnames.startswith("$Format"):          if verbose:              print("variables are unexpanded, not using") -        return {} # unexpanded, so not in an unpacked git-archive tarball +        return {}  # unexpanded, so not in an unpacked git-archive tarball      refs = set([r.strip() for r in refnames.strip("()").split(",")])      # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of      # just "foo-1.0". If we see a "tag: " prefix, prefer those. @@ -93,13 +95,14 @@ def versions_from_expanded_variables(variables, tag_prefix, verbose=False):              r = ref[len(tag_prefix):]              if verbose:                  print("picking %s" % r) -            return { "version": r, -                     "full": variables["full"].strip() } +            return {"version": r, +                    "full": variables["full"].strip()}      # no suitable tags, so we use the full revision id      if verbose:          print("no suitable tags, using full revision id") -    return { "version": variables["full"].strip(), -             "full": variables["full"].strip() } +    return {"version": variables["full"].strip(), +            "full": variables["full"].strip()} +  def versions_from_vcs(tag_prefix, versionfile_source, verbose=False):      # this runs 'git' from the root of the source tree. That either means @@ -116,7 +119,7 @@ def versions_from_vcs(tag_prefix, versionfile_source, verbose=False):          here = os.path.abspath(__file__)      except NameError:          # some py2exe/bbfreeze/non-CPython implementations don't do __file__ -        return {} # not always correct +        return {}  # not always correct      # versionfile_source is the relative path from the top of the source tree      # (where the .git directory might live) to this file. Invert this to find @@ -141,7 +144,8 @@ def versions_from_vcs(tag_prefix, versionfile_source, verbose=False):          return {}      if not stdout.startswith(tag_prefix):          if verbose: -            print("tag '%s' doesn't start with prefix '%s'" % (stdout, tag_prefix)) +            print("tag '%s' doesn't start with prefix '%s'" % +                  (stdout, tag_prefix))          return {}      tag = stdout[len(tag_prefix):]      stdout = run_command([GIT, "rev-parse", "HEAD"], cwd=root) @@ -153,7 +157,8 @@ def versions_from_vcs(tag_prefix, versionfile_source, verbose=False):      return {"version": tag, "full": full} -def versions_from_parentdir(parentdir_prefix, versionfile_source, verbose=False): +def versions_from_parentdir(parentdir_prefix, versionfile_source, +                            verbose=False):      if IN_LONG_VERSION_PY:          # We're running from _version.py. If it's from a source tree          # (execute-in-place), we can work upwards to find the root of the @@ -163,7 +168,7 @@ def versions_from_parentdir(parentdir_prefix, versionfile_source, verbose=False)              here = os.path.abspath(__file__)          except NameError:              # py2exe/bbfreeze/non-CPython don't have __file__ -            return {} # without __file__, we have no hope +            return {}  # without __file__, we have no hope          # versionfile_source is the relative path from the top of the source          # tree to _version.py. Invert this to find the root from __file__.          root = here @@ -180,7 +185,8 @@ def versions_from_parentdir(parentdir_prefix, versionfile_source, verbose=False)      dirname = os.path.basename(root)      if not dirname.startswith(parentdir_prefix):          if verbose: -            print("guessing rootdir is '%s', but '%s' doesn't start with prefix '%s'" % +            print("guessing rootdir is '%s', but '%s' doesn't start " +                  "with prefix '%s'" %                    (root, dirname, parentdir_prefix))          return None      return {"version": dirname[len(parentdir_prefix):], "full": ""} @@ -189,8 +195,9 @@ tag_prefix = ""  parentdir_prefix = "leap.keymanager-"  versionfile_source = "src/leap/keymanager/_version.py" +  def get_versions(default={"version": "unknown", "full": ""}, verbose=False): -    variables = { "refnames": git_refnames, "full": git_full } +    variables = {"refnames": git_refnames, "full": git_full}      ver = versions_from_expanded_variables(variables, tag_prefix, verbose)      if not ver:          ver = versions_from_vcs(tag_prefix, versionfile_source, verbose) @@ -200,4 +207,3 @@ def get_versions(default={"version": "unknown", "full": ""}, verbose=False):      if not ver:          ver = default      return ver - diff --git a/src/leap/keymanager/openpgp.py b/src/leap/keymanager/openpgp.py index 856b21e4..4276b19f 100644 --- a/src/leap/keymanager/openpgp.py +++ b/src/leap/keymanager/openpgp.py @@ -14,13 +14,9 @@  #  # You should have received a copy of the GNU General Public License  # along with this program. If not, see <http://www.gnu.org/licenses/>. - -  """  Infrastructure for using OpenPGP keys in Key Manager.  """ - -  import locale  import logging  import os @@ -298,7 +294,7 @@ class OpenPGPScheme(EncryptionScheme):          @raise KeyNotFound: If the key was not found on local storage.          """          # Remove the identity suffix after the '+' until the '@' -        # e.g.: test_user+something@provider.com becomes test_user@probider.com +        # e.g.: test_user+something@provider.com becomes test_user@provider.com          # since the key belongs to the identity without the '+' suffix.          address = re.sub(r'\+.*\@', '@', address) @@ -581,7 +577,6 @@ class OpenPGPScheme(EncryptionScheme):                  logger.error('Failed to decrypt: %s.' % str(e))                  raise errors.DecryptError(str(e)) -      def is_encrypted(self, data):          """          Return whether C{data} was asymmetrically encrypted using OpenPGP.  | 
