aboutsummaryrefslogtreecommitdiffstats
path: root/cryptography
diff options
context:
space:
mode:
authorDavid Reid <dreid@dreid.org>2014-10-21 11:19:13 -0700
committerDavid Reid <dreid@dreid.org>2014-10-21 11:19:13 -0700
commit6ec1b7bb991a123ed131f138c24eee2c6c18b839 (patch)
treed00d52f02e4e49d0f2809b4de07b7af909f52eba /cryptography
parent126afca70edc3fac2e493c6b7cd05219c8d8e373 (diff)
parent4c82513ac8ae9b319eecb1fc18d11c55305c1663 (diff)
downloadcryptography-6ec1b7bb991a123ed131f138c24eee2c6c18b839.tar.gz
cryptography-6ec1b7bb991a123ed131f138c24eee2c6c18b839.tar.bz2
cryptography-6ec1b7bb991a123ed131f138c24eee2c6c18b839.zip
Merge pull request #1422 from alex/multi-fernet
Fixes #1327 -- adds multifernet
Diffstat (limited to 'cryptography')
-rw-r--r--cryptography/fernet.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/cryptography/fernet.py b/cryptography/fernet.py
index a8e0330e..4f98feec 100644
--- a/cryptography/fernet.py
+++ b/cryptography/fernet.py
@@ -127,3 +127,24 @@ class Fernet(object):
except ValueError:
raise InvalidToken
return unpadded
+
+
+class MultiFernet(object):
+ def __init__(self, fernets):
+ fernets = list(fernets)
+ if not fernets:
+ raise ValueError(
+ "MultiFernet requires at least one Fernet instance"
+ )
+ self._fernets = fernets
+
+ def encrypt(self, msg):
+ return self._fernets[0].encrypt(msg)
+
+ def decrypt(self, msg, ttl=None):
+ for f in self._fernets:
+ try:
+ return f.decrypt(msg, ttl)
+ except InvalidToken:
+ pass
+ raise InvalidToken