local error = error
local print = print
local idna_ascii = require "util.encodings".idna.to_ascii
+local idna_unicode = require "util.encodings".idna.to_unicode
module "sasl"
qop = "auth",
charset = "utf-8",
algorithm = "md5-sess",
- realm = self.realm});
+ realm = idna_ascii(self.realm)});
return "challenge", challenge
elseif (self.step == 2) then
local response = parse(message)
--TODO maybe realm support
self.username = response["username"]
- local password_encoding, Y = self.password_handler(response["username"], response["realm"], "DIGEST-MD5")
+ local password_encoding, Y = self.password_handler(response["username"], idna_unicode(response["realm"]), "DIGEST-MD5")
if Y == nil then return "failure", "not-authorized"
elseif Y == false then return "failure", "account-disabled" end