summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2011-04-12 14:41:02 +0100
committerLars Wirzenius <liw@liw.fi>2011-04-12 14:41:02 +0100
commitbf65239f389d77a8fc8fee55138fea1dc2504faa (patch)
tree5ae69eea3b94ccc65a5bc211b48dfabbb85bd441
parente60cd19c63dab122724bd139a9440b9cb2b72646 (diff)
downloadobnam-bf65239f389d77a8fc8fee55138fea1dc2504faa.tar.gz
Add remove-key subcommand.
-rw-r--r--obnamlib/plugins/encryption_plugin.py13
-rwxr-xr-xtest-encrypted-repo10
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