diff options
author | David Reid <dreid@dreid.org> | 2014-10-21 11:19:13 -0700 |
---|---|---|
committer | David Reid <dreid@dreid.org> | 2014-10-21 11:19:13 -0700 |
commit | 6ec1b7bb991a123ed131f138c24eee2c6c18b839 (patch) | |
tree | d00d52f02e4e49d0f2809b4de07b7af909f52eba /cryptography | |
parent | 126afca70edc3fac2e493c6b7cd05219c8d8e373 (diff) | |
parent | 4c82513ac8ae9b319eecb1fc18d11c55305c1663 (diff) | |
download | cryptography-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.py | 21 |
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 |