diff options
author | Lars Wirzenius <liw@liw.fi> | 2011-05-05 20:59:28 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2011-05-05 20:59:28 +0100 |
commit | f5e22323a618a3f64614d3a4fb3a102c67d732bb (patch) | |
tree | b020fa8bcfd8328e6a9a7e65d9389fa444b1fa4a /obnamlib/encryption.py | |
parent | cbb99aa8277b406dc8dff88a7f932dcd3df8f39a (diff) | |
download | obnam-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.py | 21 |
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): |