diff options
author | Alex Gaynor <alex.gaynor@gmail.com> | 2014-10-19 19:11:30 -0700 |
---|---|---|
committer | Alex Gaynor <alex.gaynor@gmail.com> | 2014-10-19 22:32:42 -0700 |
commit | a1a21f46c0ab36fc49b087b2d70751ed23c94724 (patch) | |
tree | 2e76552b6ca2f1be29b8de0c900eb57213037062 | |
parent | 962f66effa666c161aa93bb55b0f9c4deff67100 (diff) | |
download | cryptography-a1a21f46c0ab36fc49b087b2d70751ed23c94724.tar.gz cryptography-a1a21f46c0ab36fc49b087b2d70751ed23c94724.tar.bz2 cryptography-a1a21f46c0ab36fc49b087b2d70751ed23c94724.zip |
Fixed an issue in fernet where the wrong exception would occur on an all-nulls input.
Also switched a few tests to not generate a key
-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..153f398b 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): |