summaryrefslogtreecommitdiff
path: root/obnamlib/encryption.py
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2011-03-27 13:35:46 +0100
committerLars Wirzenius <liw@liw.fi>2011-03-27 13:35:46 +0100
commitd9b973b371b347fc655ff40200cecf9da02c72b6 (patch)
tree02105dfe84dda6fdb24b1f7e2e550083c405d54a /obnamlib/encryption.py
parent3215d90e59b2a99f53a11e4f6b9614d6a63c2326 (diff)
downloadobnam-d9b973b371b347fc655ff40200cecf9da02c72b6.tar.gz
Optimize by caching Keyring.keyids() when possible.
Diffstat (limited to 'obnamlib/encryption.py')
-rw-r--r--obnamlib/encryption.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/obnamlib/encryption.py b/obnamlib/encryption.py
index 8adc26de..488fbaa1 100644
--- a/obnamlib/encryption.py
+++ b/obnamlib/encryption.py
@@ -128,6 +128,7 @@ class Keyring(object):
def __init__(self, encoded=''):
self._encoded = encoded
self._gpghome = None
+ self._keyids = None
def _setup(self):
self._gpghome = tempfile.mkdtemp()
@@ -143,7 +144,7 @@ class Keyring(object):
def _pubring(self):
return os.path.join(self._gpghome, 'pubring.gpg')
- def keyids(self):
+ def _real_keyids(self):
self._setup()
output = _gpg(['--list-keys', '--with-colons'], gpghome=self._gpghome)
self._cleanup()
@@ -155,6 +156,11 @@ class Keyring(object):
keyids.append(fields[4])
return keyids
+ def keyids(self):
+ if self._keyids is None:
+ self._keyids = self._real_keyids()
+ return self._keyids
+
def __str__(self):
return self._encoded
@@ -165,6 +171,7 @@ class Keyring(object):
f = open(self._pubring, 'rb')
self._encoded = f.read()
f.close()
+ self._keyids = None
def add(self, key):
self._setup()