diff options
author | NavaL <ayoyo@thoughtworks.com> | 2016-11-28 17:13:54 +0100 |
---|---|---|
committer | Thais Siqueira <thais.siqueira@gmail.com> | 2017-01-02 14:29:45 -0200 |
commit | f0966dd627ec37789bc885bc951df988b9e46d61 (patch) | |
tree | 1b7401014a87d9129bb356c8024bb013a6256270 /service/pixelated | |
parent | 56a0db46f2e53c453b8c5e67202601f7dac6c0b5 (diff) |
[#850] keys will now be renewed two months before expiry date
Diffstat (limited to 'service/pixelated')
-rw-r--r-- | service/pixelated/bitmask_libraries/keymanager.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/service/pixelated/bitmask_libraries/keymanager.py b/service/pixelated/bitmask_libraries/keymanager.py index 464604db..cba9c6bd 100644 --- a/service/pixelated/bitmask_libraries/keymanager.py +++ b/service/pixelated/bitmask_libraries/keymanager.py @@ -13,6 +13,7 @@ # # You should have received a copy of the GNU Affero General Public License # along with Pixelated. If not, see <http://www.gnu.org/licenses/>. +import datetime from twisted.internet import defer from twisted.logger import Logger @@ -27,7 +28,12 @@ class UploadKeyError(Exception): pass +TWO_MONTHS = 60 +DEFAULT_EXTENSION_THRESHOLD = TWO_MONTHS + + class Keymanager(object): + def __init__(self, provider, soledad, email_address, token, uuid): nicknym_url = provider._discover_nicknym_server() self._email = email_address @@ -43,7 +49,7 @@ class Keymanager(object): current_key = yield self._key_exists(self._email) if not current_key: yield self._generate_key_and_send_to_leap() - elif current_key.has_expired(): + elif self.should_renew(current_key): yield self._regenerate_key() yield self._send_key_to_leap() @@ -69,6 +75,11 @@ class Keymanager(object): except KeyNotFound: defer.returnValue(None) + def should_renew(self, key): + # feature envy -- should be in keymanager + till_expiry_date = (key.expiry_date - datetime.datetime.now()) + return till_expiry_date.days < DEFAULT_EXTENSION_THRESHOLD + @defer.inlineCallbacks def get_key(self, email, private=False, fetch_remote=True): key = yield self.keymanager.get_key(email, private=private, fetch_remote=fetch_remote) |