diff options
author | Damir Jelić <poljar@termina.org.uk> | 2019-06-18 13:46:57 +0200 |
---|---|---|
committer | Damir Jelić <poljar@termina.org.uk> | 2019-06-18 13:50:46 +0200 |
commit | 2f5590bf38e5995a36f770c04cfbf31eb9070eca (patch) | |
tree | 299e68cd3b9ea33f212cd1a7c4fcf0bbbca4bfc8 /python/tests/session_test.py | |
parent | e1a4e6ebf1568935a57ba8cec48e43dd7c1ebcd3 (diff) |
olm: Allow decryption functions to define how to handle unicode decode errors.
This patch changes the decryption functions not to fail if there was an
unicode decode error while converting the decrypted bytes plaintext into
a native python string.
Characters that cannot be decoded as unicode are now replaced with the
unicode replacement character (U+FFFD).
The old behaviour of raising an UnicodeDecodeError can be achieved by
passing the "strict" error handling scheme to the decrypt function.
Diffstat (limited to 'python/tests/session_test.py')
-rw-r--r-- | python/tests/session_test.py | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/python/tests/session_test.py b/python/tests/session_test.py index ab1c38b..56a6b83 100644 --- a/python/tests/session_test.py +++ b/python/tests/session_test.py @@ -1,3 +1,6 @@ +# -*- coding: utf-8 -*- +from builtins import bytes + import pytest from olm import (Account, InboundSession, OlmMessage, OlmPreKeyMessage, @@ -141,3 +144,11 @@ class TestClass(object): new_message = new_session.encrypt(plaintext) assert bob_session.matches(new_message) is False + + def test_invalid_unicode_decrypt(self): + alice, bob, session = self._create_session() + message = session.encrypt(bytes([0xed])) + + bob_session = InboundSession(bob, message) + plaintext = bob_session.decrypt(message) + assert plaintext == "�" |