diff options
-rw-r--r-- | payments/sagepay/__init__.py | 4 | ||||
-rw-r--r-- | payments/sagepay/test_sagepay.py | 4 | ||||
-rwxr-xr-x | setup.py | 2 |
3 files changed, 7 insertions, 3 deletions
diff --git a/payments/sagepay/__init__.py b/payments/sagepay/__init__.py index 9ec8fcb..1767e56 100644 --- a/payments/sagepay/__init__.py +++ b/payments/sagepay/__init__.py @@ -24,7 +24,7 @@ class SagepayProvider(BasicProvider): def __init__(self, vendor, encryption_key, endpoint=_action, **kwargs): self._vendor = vendor - self._enckey = encryption_key + self._enckey = encryption_key.encode('utf-8') self._action = endpoint super(SagepayProvider, self).__init__(**kwargs) if not self._capture: @@ -41,7 +41,7 @@ class SagepayProvider(BasicProvider): def aes_enc(self, data): aes = AES.new(self._enckey, AES.MODE_CBC, self._enckey) data = self._aes_pad(data) - enc = aes.encrypt(data) + enc = aes.encrypt(data.encode('utf-8')) enc = b"@" + binascii.hexlify(enc) return enc diff --git a/payments/sagepay/test_sagepay.py b/payments/sagepay/test_sagepay.py index ed494b4..ba317db 100644 --- a/payments/sagepay/test_sagepay.py +++ b/payments/sagepay/test_sagepay.py @@ -61,3 +61,7 @@ class TestSagepayProvider(TestCase): data = self.provider.get_hidden_fields(self.payment) decrypted_data = self.provider.aes_dec(data['Crypt']) self.assertIn(self.payment.billing_first_name, str(decrypted_data)) + + def test_encrypt_method_returns_valid_data(self): + encrypted = self.provider.aes_enc('mirumee') + self.assertEqual(encrypted, b'@e63c293672f50b9c8e291831facb4e4f') @@ -22,7 +22,7 @@ PACKAGES = [ REQUIREMENTS = [ 'braintree>=3.14.0', 'Django>=1.5', - 'pycrypto>=2.6', + 'pycryptodome>=3.3.1', 'PyJWT>=1.3.0', 'requests>=1.2.0', 'stripe>=1.9.8', |