diff options
author | Paul Kehrer <paul.l.kehrer@gmail.com> | 2014-10-20 07:53:00 -0700 |
---|---|---|
committer | Paul Kehrer <paul.l.kehrer@gmail.com> | 2014-10-20 07:53:00 -0700 |
commit | 75c024618951db12cb759825e21e7b95f41749af (patch) | |
tree | d10a77615707d68e75166437a444e46423ab7cdf | |
parent | 962f66effa666c161aa93bb55b0f9c4deff67100 (diff) | |
parent | 461c8d286d3cff4b5f5ed962669defa9710e7605 (diff) | |
download | cryptography-75c024618951db12cb759825e21e7b95f41749af.tar.gz cryptography-75c024618951db12cb759825e21e7b95f41749af.tar.bz2 cryptography-75c024618951db12cb759825e21e7b95f41749af.zip |
Merge pull request #1421 from alex/fix-bug
Fixed an issue in fernet where the wrong exception would occur on an all-nulls input.
-rw-r--r-- | cryptography/fernet.py | 2 | ||||
-rw-r--r-- | tests/test_fernet.py | 9 |
2 files changed, 8 insertions, 3 deletions
diff --git a/cryptography/fernet.py b/cryptography/fernet.py index cdb9bdca..a8e0330e 100644 --- a/cryptography/fernet.py +++ b/cryptography/fernet.py @@ -90,7 +90,7 @@ class Fernet(object): except (TypeError, binascii.Error): raise InvalidToken - if six.indexbytes(data, 0) != 0x80: + if not data or six.indexbytes(data, 0) != 0x80: raise InvalidToken try: diff --git a/tests/test_fernet.py b/tests/test_fernet.py index 0683d950..0b4e3e87 100644 --- a/tests/test_fernet.py +++ b/tests/test_fernet.py @@ -86,15 +86,20 @@ class TestFernet(object): f.decrypt(token.encode("ascii"), ttl=ttl_sec) def test_invalid_start_byte(self, backend): - f = Fernet(Fernet.generate_key(), backend=backend) + f = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend) with pytest.raises(InvalidToken): f.decrypt(base64.urlsafe_b64encode(b"\x81")) def test_timestamp_too_short(self, backend): - f = Fernet(Fernet.generate_key(), backend=backend) + f = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend) with pytest.raises(InvalidToken): f.decrypt(base64.urlsafe_b64encode(b"\x80abc")) + def test_non_base64_token(self, backend): + f = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend) + with pytest.raises(InvalidToken): + f.decrypt(b"\x00") + def test_unicode(self, backend): f = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend) with pytest.raises(TypeError): |