From afb3d403e102a6c8dbd222278ad9b96de7606d00 Mon Sep 17 00:00:00 2001 From: Hubert Chathi Date: Wed, 26 Apr 2023 10:00:34 -0400 Subject: [PATCH] actually remove dependency on future --- python/olm/account.py | 7 ++----- python/olm/group_session.py | 21 ++++++++++--------- python/olm/pk.py | 40 +++++++++++++++---------------------- python/olm/sas.py | 13 +++++------- python/olm/session.py | 17 +++++++--------- python/olm/utility.py | 4 +--- python/setup.py | 1 - python/tests/utils_test.py | 4 +--- 8 files changed, 42 insertions(+), 65 deletions(-) diff --git a/python/olm/account.py b/python/olm/account.py index 36209dd..b35126f 100644 --- a/python/olm/account.py +++ b/python/olm/account.py @@ -32,8 +32,6 @@ import json from builtins import bytes, super from typing import AnyStr, Dict, Optional, Type -from future.utils import bytes_to_native_str - # pylint: disable=no-name-in-module from _libolm import ffi, lib # type: ignore @@ -93,8 +91,7 @@ class Account(object): if ret != lib.olm_error(): return - last_error = bytes_to_native_str( - ffi.string((lib.olm_account_last_error(self._account)))) + last_error = ffi.string((lib.olm_account_last_error(self._account))).decode() raise OlmAccountError(last_error) @@ -209,7 +206,7 @@ class Account(object): for i in range(0, len(bytes_message)): bytes_message[i] = 0 - return bytes_to_native_str(ffi.unpack(out_buffer, out_length)) + return ffi.unpack(out_buffer, out_length).decode() @property def max_one_time_keys(self): diff --git a/python/olm/group_session.py b/python/olm/group_session.py index 5068192..e21f331 100644 --- a/python/olm/group_session.py +++ b/python/olm/group_session.py @@ -28,8 +28,6 @@ Examples: from builtins import bytes, super from typing import AnyStr, Optional, Tuple, Type -from future.utils import bytes_to_native_str - # pylint: disable=no-name-in-module from _libolm import ffi, lib # type: ignore @@ -171,8 +169,9 @@ class InboundGroupSession(object): if ret != lib.olm_error(): return - last_error = bytes_to_native_str(ffi.string( - lib.olm_inbound_group_session_last_error(self._session))) + last_error = ffi.string( + lib.olm_inbound_group_session_last_error(self._session) + ).decode() raise OlmGroupSessionError(last_error) @@ -252,7 +251,7 @@ class InboundGroupSession(object): id_length ) self._check_error(ret) - return bytes_to_native_str(ffi.unpack(id_buffer, id_length)) + return ffi.unpack(id_buffer, id_length).decode() @property def first_known_index(self): @@ -290,7 +289,7 @@ class InboundGroupSession(object): message_index ) self._check_error(ret) - export_str = bytes_to_native_str(ffi.unpack(export_buffer, export_length)) + export_str = ffi.unpack(export_buffer, export_length).decode() # clear out copies of the key lib.memset(export_buffer, 0, export_length) @@ -373,9 +372,9 @@ class OutboundGroupSession(object): if ret != lib.olm_error(): return - last_error = bytes_to_native_str(ffi.string( + last_error = ffi.string( lib.olm_outbound_group_session_last_error(self._session) - )) + ).decode() raise OlmGroupSessionError(last_error) @@ -483,7 +482,7 @@ class OutboundGroupSession(object): for i in range(0, len(byte_plaintext)): byte_plaintext[i] = 0 - return bytes_to_native_str(ffi.unpack(message_buffer, message_length)) + return ffi.unpack(message_buffer, message_length).decode() @property def id(self): @@ -499,7 +498,7 @@ class OutboundGroupSession(object): ) self._check_error(ret) - return bytes_to_native_str(ffi.unpack(id_buffer, id_length)) + return ffi.unpack(id_buffer, id_length).decode() @property def message_index(self): @@ -529,4 +528,4 @@ class OutboundGroupSession(object): ) self._check_error(ret) - return bytes_to_native_str(ffi.unpack(key_buffer, key_length)) + return ffi.unpack(key_buffer, key_length).decode() diff --git a/python/olm/pk.py b/python/olm/pk.py index 060d1f1..732a8dc 100644 --- a/python/olm/pk.py +++ b/python/olm/pk.py @@ -36,8 +36,6 @@ Examples: from builtins import super from typing import AnyStr, Type -from future.utils import bytes_to_native_str - from _libolm import ffi, lib # type: ignore from ._compat import URANDOM, to_bytearray, to_unicode_str @@ -116,8 +114,9 @@ class PkEncryption(object): if ret != lib.olm_error(): return - last_error = bytes_to_native_str( - ffi.string(lib.olm_pk_encryption_last_error(self._pk_encryption))) + last_error = ffi.string( + lib.olm_pk_encryption_last_error(self._pk_encryption) + ).decode() raise PkEncryptionError(last_error) @@ -166,12 +165,9 @@ class PkEncryption(object): byte_plaintext[i] = 0 message = PkMessage( - bytes_to_native_str( - ffi.unpack(ephemeral_key, ephemeral_key_size)), - bytes_to_native_str( - ffi.unpack(mac, mac_length)), - bytes_to_native_str( - ffi.unpack(ciphertext, ciphertext_length)) + ffi.unpack(ephemeral_key, ephemeral_key_size).decode(), + ffi.unpack(mac, mac_length).decode(), + ffi.unpack(ciphertext, ciphertext_length).decode(), ) return message @@ -217,18 +213,19 @@ class PkDecryption(object): random_buffer, random_length ) self._check_error(ret) - self.public_key: str = bytes_to_native_str(ffi.unpack( + self.public_key: str = ffi.unpack( key_buffer, key_length - )) + ).decode() def _check_error(self, ret): # type: (int) -> None if ret != lib.olm_error(): return - last_error = bytes_to_native_str( - ffi.string(lib.olm_pk_decryption_last_error(self._pk_decryption))) + last_error = ffi.string( + lib.olm_pk_decryption_last_error(self._pk_decryption) + ).decode() raise PkDecryptionError(last_error) @@ -306,10 +303,10 @@ class PkDecryption(object): for i in range(0, len(byte_key)): byte_key[i] = 0 - obj.public_key = bytes_to_native_str(ffi.unpack( + obj.public_key = ffi.unpack( pubkey_buffer, pubkey_length - )) + ).decode() return obj @@ -411,17 +408,14 @@ class PkSigning(object): self._check_error(ret) - self.public_key = bytes_to_native_str( - ffi.unpack(pubkey_buffer, pubkey_length) - ) + self.public_key = ffi.unpack(pubkey_buffer, pubkey_length).decode() def _check_error(self, ret): # type: (int) -> None if ret != lib.olm_error(): return - last_error = bytes_to_native_str( - ffi.string(lib.olm_pk_signing_last_error(self._pk_signing))) + last_error = ffi.string(lib.olm_pk_signing_last_error(self._pk_signing)).decode() raise PkSigningError(last_error) @@ -456,6 +450,4 @@ class PkSigning(object): signature_buffer, signature_length) self._check_error(ret) - return bytes_to_native_str( - ffi.unpack(signature_buffer, signature_length) - ) + return ffi.unpack(signature_buffer, signature_length).decode() diff --git a/python/olm/sas.py b/python/olm/sas.py index bea40c2..ecb7631 100644 --- a/python/olm/sas.py +++ b/python/olm/sas.py @@ -34,8 +34,6 @@ from builtins import bytes from functools import wraps from typing import Optional -from future.utils import bytes_to_native_str - from _libolm import ffi, lib from ._compat import URANDOM, to_bytearray, to_bytes @@ -92,8 +90,7 @@ class Sas(object): if ret != lib.olm_error(): return - last_error = bytes_to_native_str( - ffi.string((lib.olm_sas_last_error(self._sas)))) + last_error = ffi.string((lib.olm_sas_last_error(self._sas))).decode() raise OlmSasError(last_error) @@ -115,7 +112,7 @@ class Sas(object): lib.olm_sas_get_pubkey(self._sas, pubkey_buffer, pubkey_length) ) - return bytes_to_native_str(ffi.unpack(pubkey_buffer, pubkey_length)) + return ffi.unpack(pubkey_buffer, pubkey_length).decode() @property def other_key_set(self): @@ -208,7 +205,7 @@ class Sas(object): mac_length ) ) - return bytes_to_native_str(ffi.unpack(mac_buffer, mac_length)) + return ffi.unpack(mac_buffer, mac_length).decode() def calculate_mac_fixed_base64(self, message, extra_info): # type: (str, str) -> str @@ -242,7 +239,7 @@ class Sas(object): mac_length ) ) - return bytes_to_native_str(ffi.unpack(mac_buffer, mac_length)) + return ffi.unpack(mac_buffer, mac_length).decode() def calculate_mac_long_kdf(self, message, extra_info): # type: (str, str) -> str @@ -276,4 +273,4 @@ class Sas(object): mac_length ) ) - return bytes_to_native_str(ffi.unpack(mac_buffer, mac_length)) + return ffi.unpack(mac_buffer, mac_length).decode() diff --git a/python/olm/session.py b/python/olm/session.py index d4430d6..988d9b8 100644 --- a/python/olm/session.py +++ b/python/olm/session.py @@ -35,8 +35,6 @@ Examples: from builtins import bytes, super from typing import AnyStr, Optional, Type -from future.utils import bytes_to_native_str - # pylint: disable=no-name-in-module from _libolm import ffi, lib # type: ignore @@ -146,8 +144,7 @@ class Session(object): if ret != lib.olm_error(): return - last_error = bytes_to_native_str( - ffi.string(lib.olm_session_last_error(self._session))) + last_error = ffi.string(lib.olm_session_last_error(self._session)).decode() raise OlmSessionError(last_error) @@ -260,16 +257,16 @@ class Session(object): if message_type == lib.OLM_MESSAGE_TYPE_PRE_KEY: return OlmPreKeyMessage( - bytes_to_native_str(ffi.unpack( + ffi.unpack( ciphertext_buffer, ciphertext_length - ))) + ).decode()) elif message_type == lib.OLM_MESSAGE_TYPE_MESSAGE: return OlmMessage( - bytes_to_native_str(ffi.unpack( + ffi.unpack( ciphertext_buffer, ciphertext_length - ))) + ).decode()) else: # pragma: no cover raise ValueError("Unknown message type") @@ -340,7 +337,7 @@ class Session(object): self._check_error( lib.olm_session_id(self._session, id_buffer, id_length) ) - return bytes_to_native_str(ffi.unpack(id_buffer, id_length)) + return ffi.unpack(id_buffer, id_length).decode() def matches(self, message, identity_key=None): # type: (OlmPreKeyMessage, Optional[AnyStr]) -> bool @@ -407,7 +404,7 @@ class Session(object): lib.olm_session_describe( self._session, describe_buffer, buffer_length ) - return bytes_to_native_str(ffi.string(describe_buffer)) + return ffi.string(describe_buffer).decode() class InboundSession(Session): diff --git a/python/olm/utility.py b/python/olm/utility.py index bddef38..d724f5e 100644 --- a/python/olm/utility.py +++ b/python/olm/utility.py @@ -33,8 +33,6 @@ Examples: # pylint: disable=redefined-builtin,unused-import from typing import AnyStr, Type -from future.utils import bytes_to_native_str - # pylint: disable=no-name-in-module from _libolm import ffi, lib # type: ignore @@ -123,7 +121,7 @@ class _Utility(object): cls._check_error(ret, OlmHashError) - return bytes_to_native_str(ffi.unpack(hash, hash_length)) + return ffi.unpack(hash, hash_length).decode() def ed25519_verify(key, message, signature): diff --git a/python/setup.py b/python/setup.py index 6b143d3..3314b8a 100644 --- a/python/setup.py +++ b/python/setup.py @@ -24,7 +24,6 @@ setup( cffi_modules=["olm_build.py:ffibuilder"], install_requires=[ "cffi>=1.0.0", - "future", "typing;python_version<'3.5'" ], zip_safe=False, diff --git a/python/tests/utils_test.py b/python/tests/utils_test.py index 86fb34f..df54f33 100644 --- a/python/tests/utils_test.py +++ b/python/tests/utils_test.py @@ -1,8 +1,6 @@ import base64 import hashlib -from future.utils import bytes_to_native_str - from olm import sha256 from olm._compat import to_bytes @@ -19,7 +17,7 @@ class TestClass(object): hashlib.sha256(to_bytes(input1)).digest() ) - hashlib_hash = bytes_to_native_str(hashlib_hash[:-1]) + hashlib_hash = hashlib_hash[:-1].decode() assert first_hash != second_hash assert hashlib_hash == first_hash