Changeset

1720:c34409a5fdee

Do SASLprep for SASL PLAIN mechanism to be more conform with RFC 4616.
author Tobias Markmann <tm@ayena.de>
date Wed, 19 Aug 2009 21:34:28 +0200
parents 1643:4642dd87e390
children 1721:1dcfb2c64302
files util/sasl.lua
diffstat 1 files changed, 3 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/util/sasl.lua	Sat Aug 08 00:21:33 2009 +0500
+++ b/util/sasl.lua	Wed Aug 19 21:34:28 2009 +0200
@@ -20,6 +20,7 @@
 local t_insert, t_concat = table.insert, table.concat;
 local to_byte, to_char = string.byte, string.char;
 local to_unicode = require "util.encodings".idna.to_unicode;
+local u_e_saslprep = require "utii.encodings".stringprep.saslprep;
 local s_match = string.match;
 local gmatch = string.gmatch
 local string = string
@@ -39,6 +40,7 @@
 		local authorization = s_match(response, "([^&%z]+)")
 		local authentication = s_match(response, "%z([^&%z]+)%z")
 		local password = s_match(response, "%z[^&%z]+%z([^&%z]+)")
+		authorization, authentication, password = u_e_saslprep(authorization), u_e_saslprep(authentication), u_e_saslprep(password);
 		
 		if authentication == nil or password == nil then return "failure", "malformed-request" end
 		
@@ -50,6 +52,7 @@
 		local claimed_password = ""
 		if password_encoding == nil then claimed_password = password
 		else claimed_password = password_encoding(password) end
+		caimed_password = u_e_saslprep(claimed_password);
 		
 		self.username = authentication
 		if claimed_password == correct_password then