From 59dad12820733de4e6b92082404e1726aaef19f8 Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Sat, 11 Feb 2017 23:30:43 +0000 Subject: [PATCH] =?UTF-8?q?XEP-0300:=20Workaround=20for=20Python=C2=A03.5?= =?UTF-8?q?=20or=20below.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- slixmpp/plugins/xep_0300/hash.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/slixmpp/plugins/xep_0300/hash.py b/slixmpp/plugins/xep_0300/hash.py index 0c71aac1..43dcb5bd 100644 --- a/slixmpp/plugins/xep_0300/hash.py +++ b/slixmpp/plugins/xep_0300/hash.py @@ -39,8 +39,8 @@ class XEP_0300(BasePlugin): 'sha-1': hashlib.sha1, 'sha-256': hashlib.sha256, 'sha-512': hashlib.sha512, - 'sha3-256': hashlib.sha3_256, - 'sha3-512': hashlib.sha3_512, + 'sha3-256': lambda: hashlib.sha3_256(), + 'sha3-512': lambda: hashlib.sha3_512(), 'BLAKE2b256': lambda: hashlib.blake2b(digest_size=32), 'BLAKE2b512': lambda: hashlib.blake2b(digest_size=64), } @@ -50,7 +50,14 @@ class XEP_0300(BasePlugin): self.enabled_hashes = [] for algo in self._hashlib_function: if getattr(self, 'enable_' + algo, False): - self.enabled_hashes.append(namespace % algo) + # XXX: this is a hack for Python 3.5 or below, which + # don’t support sha3 or blake2b… + try: + self._hashlib_function[algo]() + except AttributeError: + log.warn('Algorithm %s unavailable, disabling.', algo) + else: + self.enabled_hashes.append(namespace % algo) def session_bind(self, jid): self.xmpp['xep_0030'].add_feature(Hash.namespace)