summaryrefslogtreecommitdiff
path: root/obnamlib/encryption.py
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2011-05-05 20:59:28 +0100
committerLars Wirzenius <liw@liw.fi>2011-05-05 20:59:28 +0100
commitf5e22323a618a3f64614d3a4fb3a102c67d732bb (patch)
treeb020fa8bcfd8328e6a9a7e65d9389fa444b1fa4a /obnamlib/encryption.py
parentcbb99aa8277b406dc8dff88a7f932dcd3df8f39a (diff)
downloadobnam-f5e22323a618a3f64614d3a4fb3a102c67d732bb.tar.gz
Refactor and hopefully fix symmetric key caching.
Move code into the obnamlib/encryption module, and add testing. The bug to fix is that the cache implementation in the plugin was not actually caching anything.
Diffstat (limited to 'obnamlib/encryption.py')
-rw-r--r--obnamlib/encryption.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/obnamlib/encryption.py b/obnamlib/encryption.py
index a5579917..584cc688 100644
--- a/obnamlib/encryption.py
+++ b/obnamlib/encryption.py
@@ -29,6 +29,27 @@ def generate_symmetric_key(numbits, filename='/dev/random'):
f.close()
return key.encode('hex')
+
+
+class SymmetricKeyCache(object):
+
+ '''Cache symmetric keys in memory.'''
+
+ def __init__(self):
+ self.clear()
+
+ def get(self, repo, toplevel):
+ if repo in self.repos and toplevel in self.repos[repo]:
+ return self.repos[repo][toplevel]
+ return None
+
+ def put(self, repo, toplevel, key):
+ if repo not in self.repos:
+ self.repos[repo] = {}
+ self.repos[repo][toplevel] = key
+
+ def clear(self):
+ self.repos = {}
def _gpg_pipe(args, data, passphrase):