lbry-sdk/lbry/tests/unit/wallet/test_hash.py

55 lines
2.1 KiB
Python
Raw Normal View History

2018-10-15 04:16:51 +02:00
from unittest import TestCase, mock
2019-03-11 21:55:56 +01:00
from torba.client.hash import aes_decrypt, aes_encrypt, better_aes_decrypt, better_aes_encrypt
from torba.client.errors import InvalidPasswordError
2018-05-25 08:03:25 +02:00
class TestAESEncryptDecrypt(TestCase):
message = 'The Times 03/Jan/2009 Chancellor on brink of second bailout for banks'
expected = 'ZmZmZmZmZmZmZmZmZmZmZjlrKptoKD+MFwDxcg3XtCD9qz8UWhEhq/TVJT5+Mtp2a8sE' \
'CaO6WQj7fYsWGu2Hvbc0qYqxdN0HeTsiO+cZRo3eJISgr3F+rXFYi5oSBlD2'
password = 'bubblegum'
@mock.patch('os.urandom', side_effect=lambda i: b'd'*i)
def test_encrypt_iv_f(self, _):
self.assertEqual(
aes_encrypt(self.password, self.message),
'ZGRkZGRkZGRkZGRkZGRkZKBP/4pR+47hLHbHyvDJm9aRKDuoBdTG8SrFvHqfagK6Co1VrHUOd'
'oF+6PGSxru3+VR63ybkXLNM75s/qVw+dnKVAkI8OfoVnJvGRSc49e38'
)
2018-05-25 08:03:25 +02:00
@mock.patch('os.urandom', side_effect=lambda i: b'f'*i)
def test_encrypt_iv_d(self, _):
self.assertEqual(
aes_encrypt(self.password, self.message),
'ZmZmZmZmZmZmZmZmZmZmZjlrKptoKD+MFwDxcg3XtCD9qz8UWhEhq/TVJT5+Mtp2a8sE'
'CaO6WQj7fYsWGu2Hvbc0qYqxdN0HeTsiO+cZRo3eJISgr3F+rXFYi5oSBlD2'
2018-05-25 08:03:25 +02:00
)
self.assertTupleEqual(
aes_decrypt(self.password, self.expected),
(self.message, b'f' * 16)
)
2018-05-25 08:03:25 +02:00
def test_encrypt_decrypt(self):
self.assertEqual(
aes_decrypt('bubblegum', aes_encrypt('bubblegum', self.message))[0],
self.message
2018-05-25 08:03:25 +02:00
)
2019-03-11 21:55:56 +01:00
def test_decrypt_error(self):
with self.assertRaises(InvalidPasswordError):
aes_decrypt('notbubblegum', aes_encrypt('bubblegum', self.message))
2019-03-11 21:55:56 +01:00
def test_better_encrypt_decrypt(self):
self.assertEqual(
b'valuable value',
better_aes_decrypt(
'super secret',
better_aes_encrypt('super secret', b'valuable value')))
def test_better_decrypt_error(self):
with self.assertRaises(InvalidPasswordError):
better_aes_decrypt(
'super secret but wrong',
better_aes_encrypt('super secret', b'valuable value')
)