summaryrefslogtreecommitdiff
path: root/src/leap/bitmask/keymanager/__init__.py
diff options
context:
space:
mode:
authorRuben Pollan <meskio@sindominio.net>2017-10-31 11:02:00 +0100
committerRuben Pollan <meskio@sindominio.net>2017-12-03 23:12:14 +0100
commitfb7eef011cc672f1884bcfcd4c859a549d8f3e49 (patch)
tree753190cbeeae7f1934590533f467a717cfabdaab /src/leap/bitmask/keymanager/__init__.py
parentf6c71494f0ada864e80ee74c60ec09939a14f44b (diff)
[feat] extend the expiration of private keys if needed
Check on every fetch of the private key if the expiration is less than two months before it expire. And extend the expiration if needed. - Resolves: #8217
Diffstat (limited to 'src/leap/bitmask/keymanager/__init__.py')
-rw-r--r--src/leap/bitmask/keymanager/__init__.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/leap/bitmask/keymanager/__init__.py b/src/leap/bitmask/keymanager/__init__.py
index c1095877..dc6b88d3 100644
--- a/src/leap/bitmask/keymanager/__init__.py
+++ b/src/leap/bitmask/keymanager/__init__.py
@@ -254,6 +254,13 @@ class KeyManager(object):
self.log.debug('Getting key for %s' % (address,))
emit_async(catalog.KEYMANAGER_LOOKING_FOR_KEY, address)
+ @defer.inlineCallbacks
+ def maybe_extend_expiration(key):
+ if key.needs_renewal():
+ key = yield self._openpgp.expire(key, expiration_time='1y')
+ yield self.send_key()
+ defer.returnValue(key)
+
def key_found(key):
emit_async(catalog.KEYMANAGER_KEY_FOUND, address)
return key
@@ -288,6 +295,8 @@ class KeyManager(object):
# return key if it exists in local database
d = self._openpgp.get_key(address, private=private)
+ if private:
+ d.addCallback(maybe_extend_expiration)
d.addCallbacks(ensure_valid, key_not_found)
return d