diff options
author | Florent Le Coz <louiz@louiz.org> | 2014-08-25 00:57:28 +0200 |
---|---|---|
committer | Florent Le Coz <louiz@louiz.org> | 2014-08-25 00:59:23 +0200 |
commit | b92dac72f3bb601837dde507597d47715c5ad1aa (patch) | |
tree | d0e166d1e902c9bbf82bad9a487a7029d1592dab | |
parent | cdb9a6ff7e60b97493429e39ef17a06b1394a928 (diff) | |
download | slixmpp-b92dac72f3bb601837dde507597d47715c5ad1aa.tar.gz slixmpp-b92dac72f3bb601837dde507597d47715c5ad1aa.tar.bz2 slixmpp-b92dac72f3bb601837dde507597d47715c5ad1aa.tar.xz slixmpp-b92dac72f3bb601837dde507597d47715c5ad1aa.zip |
Fix saslprep for non-ascii usernames
-rw-r--r-- | slixmpp/util/sasl/mechanisms.py | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/slixmpp/util/sasl/mechanisms.py b/slixmpp/util/sasl/mechanisms.py index a05f17ae..b417fb46 100644 --- a/slixmpp/util/sasl/mechanisms.py +++ b/slixmpp/util/sasl/mechanisms.py @@ -223,17 +223,16 @@ class SCRAM(Mech): return self.hash(text).digest() def saslname(self, value): - escaped = b'' - for char in bytes(value): - if char == b',': + value = value.decode("utf-8") + escaped = [] + for char in value: + if char == ',': escaped += b'=2C' - elif char == b'=': + elif char == '=': escaped += b'=3D' else: - if isinstance(char, int): - char = chr(char) - escaped += bytes(char) - return escaped + escaped += char + return "".join(escaped).encode("utf-8") def parse(self, challenge): items = {} |