aboutsummaryrefslogtreecommitdiffstats
path: root/cryptography
diff options
context:
space:
mode:
authorAlex Gaynor <alex.gaynor@gmail.com>2014-10-19 19:09:44 -0700
committerAlex Gaynor <alex.gaynor@gmail.com>2014-10-20 07:55:00 -0700
commit7b593e1b5ecf9741a1398a739815b8a11599a06a (patch)
treec28710ec885940090abb79daab7555edffea1241 /cryptography
parent75c024618951db12cb759825e21e7b95f41749af (diff)
downloadcryptography-7b593e1b5ecf9741a1398a739815b8a11599a06a.tar.gz
cryptography-7b593e1b5ecf9741a1398a739815b8a11599a06a.tar.bz2
cryptography-7b593e1b5ecf9741a1398a739815b8a11599a06a.zip
Fixes #1327 -- adds multifernet
Diffstat (limited to 'cryptography')
-rw-r--r--cryptography/fernet.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/cryptography/fernet.py b/cryptography/fernet.py
index a8e0330e..9fee3eba 100644
--- a/cryptography/fernet.py
+++ b/cryptography/fernet.py
@@ -127,3 +127,21 @@ class Fernet(object):
except ValueError:
raise InvalidToken
return unpadded
+
+
+class MultiFernet(object):
+ def __init__(self, fernets):
+ if not fernets:
+ raise ValueError("MultiFernet requires at least one fernet")
+ 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