diff --git a/tests/telethon/crypto/test_rsa.py b/tests/telethon/crypto/test_rsa.py new file mode 100644 index 00000000..a1a949d2 --- /dev/null +++ b/tests/telethon/crypto/test_rsa.py @@ -0,0 +1,37 @@ +""" +tests for telethon.crypto.rsa +""" +import pytest + +from telethon.crypto import rsa + +@pytest.fixture +def server_key_fp(): + """factory to return a key, old if so chosen""" + def _server_key_fp(old: bool): + for fp, data in rsa._server_keys.items(): + _, old_key = data + if old_key == old: + return fp + + return _server_key_fp + +def test_encryption_inv_key(): + """test for #1324""" + assert rsa.encrypt("invalid", b"testdata") is None + +def test_encryption_old_key(server_key_fp): + """test for #1324""" + assert rsa.encrypt(server_key_fp(old=True), b"testdata") is None + +def test_encryption_allowed_old_key(server_key_fp): + data = rsa.encrypt(server_key_fp(old=True), b"testdata", use_old=True) + # we can't verify the data is actually valid because we don't have + # the decryption keys + assert data is not None and len(data) == 256 + +def test_encryption_current_key(server_key_fp): + data = rsa.encrypt(server_key_fp(old=False), b"testdata") + # we can't verify the data is actually valid because we don't have + # the decryption keys + assert data is not None and len(data) == 256