From eed534dcd28b2b85cf5e9c195c68d6d9c80bfb3e Mon Sep 17 00:00:00 2001 From: Ruben Pollan Date: Tue, 28 Jun 2016 17:50:13 +0200 Subject: [feat] implement key export --- src/leap/bitmask/core/dispatcher.py | 10 ++++++++-- src/leap/bitmask/core/mail_services.py | 6 ++++++ 2 files changed, 14 insertions(+), 2 deletions(-) (limited to 'src/leap/bitmask/core') diff --git a/src/leap/bitmask/core/dispatcher.py b/src/leap/bitmask/core/dispatcher.py index 47e1c2c2..db40a675 100644 --- a/src/leap/bitmask/core/dispatcher.py +++ b/src/leap/bitmask/core/dispatcher.py @@ -162,8 +162,14 @@ class KeysCmd(SubCommand): @register_method('str') def do_EXPORT(self, service, *parts, **kw): - # TODO - return defer.succeed("") + 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_export, 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 aebca9f1..8e64f997 100644 --- a/src/leap/bitmask/core/mail_services.py +++ b/src/leap/bitmask/core/mail_services.py @@ -354,6 +354,12 @@ class KeymanagerService(HookableService): (key.address, key.fingerprint) for key in keys]) return d + def do_export(self, userid, address): + km = self._container.get_instance(userid) + d = km.get_key(address, fetch_remote=False) + d.addCallback(lambda key: dict(key)) + return d + class StandardMailService(service.MultiService, HookableService): """ -- cgit v1.2.3