diff options
author | Lars Wirzenius <liw@liw.fi> | 2011-04-12 14:41:02 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2011-04-12 14:41:02 +0100 |
commit | bf65239f389d77a8fc8fee55138fea1dc2504faa (patch) | |
tree | 5ae69eea3b94ccc65a5bc211b48dfabbb85bd441 | |
parent | e60cd19c63dab122724bd139a9440b9cb2b72646 (diff) | |
download | obnam-bf65239f389d77a8fc8fee55138fea1dc2504faa.tar.gz |
Add remove-key subcommand.
-rw-r--r-- | obnamlib/plugins/encryption_plugin.py | 13 | ||||
-rwxr-xr-x | test-encrypted-repo | 10 |
2 files changed, 18 insertions, 5 deletions
diff --git a/obnamlib/plugins/encryption_plugin.py b/obnamlib/plugins/encryption_plugin.py index b96fd6d9..f2480646 100644 --- a/obnamlib/plugins/encryption_plugin.py +++ b/obnamlib/plugins/encryption_plugin.py @@ -14,6 +14,7 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. +import logging import os import obnamlib @@ -43,6 +44,7 @@ class EncryptionPlugin(obnamlib.ObnamPlugin): self.app.register_command('list-keys', self.list_keys) self.app.register_command('list-toplevels', self.list_toplevels) self.app.register_command('add-key', self.add_key) + self.app.register_command('remove-key', self.remove_key) @property def keyid(self): @@ -106,8 +108,12 @@ class EncryptionPlugin(obnamlib.ObnamPlugin): def remove_from_userkeys(self, repo, toplevel, keyid): userkeys = self.read_keyring(repo, toplevel) if keyid in userkeys: + logging.debug('removing key %s from %s' % (keyid, toplevel)) userkeys.remove(keyid) self.write_keyring(repo, toplevel, userkeys) + else: + logging.debug('unable to remove key %s from %s (not there)' % + (keyid, toplevel)) def add_client(self, clientlist, client_name): clientlist.set_client_keyid(client_name, self.keyid) @@ -156,6 +162,13 @@ class EncryptionPlugin(obnamlib.ObnamPlugin): for toplevel in shared: self.add_to_userkeys(repo, toplevel, key) + def remove_key(self, args): + repo = self.app.open_repository() + shared = ['chunklist', 'chunks', 'chunksums', 'clientlist', 'metadata'] + for keyid in args: + for toplevel in shared: + self.remove_from_userkeys(repo, toplevel, keyid) + # def add_client(self, repo, client_public_key): # self.add_to_userkeys(repo, 'metadata', client_public_key) # self.add_to_userkeys(repo, 'clientlist', client_public_key) diff --git a/test-encrypted-repo b/test-encrypted-repo index 5b305e8f..f316ce2d 100755 --- a/test-encrypted-repo +++ b/test-encrypted-repo @@ -3,9 +3,9 @@ set -e cmd="./obnam --repository=temp.repo --log=temp.log --log-level=debug" -cmd="$cmd --encrypt-with=1B321347" +cmd="$cmd --client-name=yeehaa --encrypt-with=3B1802F81B321347" -key2="11E69900" +key2="DF3D13AA11E69900" rm -rf temp.gpghome temp.data temp.repo temp.restored temp.log @@ -32,7 +32,7 @@ $cmd list-keys echo "list-toplevels:" $cmd list-toplevels -#echo "remove key" -#$cmd remove-key $key2 -#$cmd list-keys +echo "remove key" +$cmd remove-key $key2 +$cmd list-keys |