From 5787fb5dcde454404bfa9c2ec1a601bbafd62404 Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Tue, 29 Oct 2013 14:38:06 -0700 Subject: raise an error if you unicode --- cryptography/hazmat/primitives/padding.py | 6 ++++++ tests/hazmat/primitives/test_padding.py | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/cryptography/hazmat/primitives/padding.py b/cryptography/hazmat/primitives/padding.py index 5c7c7e91..86ea26e3 100644 --- a/cryptography/hazmat/primitives/padding.py +++ b/cryptography/hazmat/primitives/padding.py @@ -47,6 +47,9 @@ class _PKCS7PaddingContext(object): if self._buffer is None: raise ValueError("Context was already finalized") + if isinstance(data, six.text_type): + raise TypeError("Unicode-objects must be encoded before padding") + self._buffer += data finished_blocks = len(self._buffer) // (self.block_size // 8) @@ -79,6 +82,9 @@ class _PKCS7UnpaddingContext(object): if self._buffer is None: raise ValueError("Context was already finalized") + if isinstance(data, six.text_type): + raise TypeError("Unicode-objects must be encoded before unpadding") + self._buffer += data finished_blocks = max( diff --git a/tests/hazmat/primitives/test_padding.py b/tests/hazmat/primitives/test_padding.py index 798b2a77..3cefafaf 100644 --- a/tests/hazmat/primitives/test_padding.py +++ b/tests/hazmat/primitives/test_padding.py @@ -13,6 +13,8 @@ import pytest +import six + from cryptography.hazmat.primitives import padding @@ -34,6 +36,14 @@ class TestPKCS7(object): unpadder.update(padded) unpadder.finalize() + def test_non_bytes(self): + padder = padding.PKCS7(128).padder() + with pytest.raises(TypeError): + padder.update(six.u("abc")) + unpadder = padding.PKCS7(128).unpadder() + with pytest.raises(TypeError): + unpadder.update(six.u("abc")) + @pytest.mark.parametrize(("size", "unpadded", "padded"), [ ( 128, -- cgit v1.2.3