[jdev] implementing SASL digest in client library

Andrew Plotkin erkyrath at eblong.com
Thu Mar 23 13:06:29 CST 2006


I implemented this months ago, and it worked, but I never fully tested it 
with non-ASCII usernames and passwords. Now I'm running into a problem, 
and I don't know whether it's my fault.

The SASL Digest document (rfc2831) says, in section 2.1.2.1:

    The "username-value", "realm-value" and "passwd" are encoded
    according to the value of the "charset" directive. If "charset=UTF-8"
    is present, and all the characters of either "username-value" or
    "passwd" are in the ISO 8859-1 character set, then it must be
    converted to ISO 8859-1 before being hashed.

If I follow this instruction, authentication doesn't work. (I mean, it 
doesn't work for usernames that contain characters in the 128-255 range. 
If everything fits in ASCII, the two encodings are identical and 
everything works. If there's a character beyond 255, the quoted 
instruction doesn't apply and everything still works.)

If I ignore the instruction (and never convert to 8859-1), then 
authentication works in all cases.

(I tested this against our own ejabberd server and against jabber.org.)

So, did I screw up the implementation somewhere? Is ejabberd behaving 
badly? Or should I be ignoring that line of the spec? (That would surely 
be the easy way out, since it leads to my code working.)

--Z

-- 
"And Aholibamah bare Jeush, and Jaalam, and Korah: these were the borogoves..."
*
If the Bush administration hasn't thrown you in military prison without trial,
it's for one reason: they don't feel like it. Not because you're an American.



More information about the JDev mailing list