summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/leap/bitmask/cli/bitmask_cli.py5
-rw-r--r--src/leap/bitmask/core/dispatcher.py11
-rw-r--r--src/leap/bitmask/core/mail_services.py7
3 files changed, 23 insertions, 0 deletions
diff --git a/src/leap/bitmask/cli/bitmask_cli.py b/src/leap/bitmask/cli/bitmask_cli.py
index e51a41b7..60dc5176 100755
--- a/src/leap/bitmask/cli/bitmask_cli.py
+++ b/src/leap/bitmask/cli/bitmask_cli.py
@@ -140,6 +140,8 @@ GENERAL COMMANDS:
help='List all known keys')
parser.add_argument('--export', action='store_true',
help='Export the given key')
+ parser.add_argument('--delete', action='store_true',
+ help='Delete the given key')
parser.add_argument('address', nargs='?',
help='email address of the key')
args = parser.parse_args(sys.argv[2:])
@@ -353,6 +355,9 @@ def send_command(cli):
data += ['export']
cb = do_print_key
+ elif subargs.delete:
+ data += ['delete']
+
else:
error('Use bitmask_cli keys --help to see available subcommands',
stop=True)
diff --git a/src/leap/bitmask/core/dispatcher.py b/src/leap/bitmask/core/dispatcher.py
index db40a675..785c60dc 100644
--- a/src/leap/bitmask/core/dispatcher.py
+++ b/src/leap/bitmask/core/dispatcher.py
@@ -171,6 +171,17 @@ class KeysCmd(SubCommand):
d.addCallback(service.do_export, address)
return d
+ @register_method('str')
+ def do_DELETE(self, service, *parts, **kw):
+ if len(parts) < 3:
+ return defer.fail("An email address is needed")
+ address = parts[2]
+
+ bonafide = kw['bonafide']
+ d = bonafide.do_get_active_user()
+ d.addCallback(service.do_delete, address)
+ return d
+
class CommandDispatcher(object):
diff --git a/src/leap/bitmask/core/mail_services.py b/src/leap/bitmask/core/mail_services.py
index 0dd53189..8d205d92 100644
--- a/src/leap/bitmask/core/mail_services.py
+++ b/src/leap/bitmask/core/mail_services.py
@@ -358,6 +358,13 @@ class KeymanagerService(HookableService):
d.addCallback(lambda key: dict(key))
return d
+ @defer.inlineCallbacks
+ def do_delete(self, userid, address):
+ km = self._container.get_instance(userid)
+ key = yield km.get_key(address, fetch_remote=False)
+ km.delete_key(key)
+ defer.returnValue(key.fingerprint)
+
class StandardMailService(service.MultiService, HookableService):
"""