Merge with 0.4
[prosody.git] / util / sasl.lua
index 43455909954d08a3c6ba5b693d982be7d84ad003..2740b4273359ee34137941ab1765614e87d6568f 100644 (file)
@@ -1,4 +1,4 @@
--- sasl.lua v0.2
+-- sasl.lua v0.4
 -- Copyright (C) 2008-2009 Tobias Markmann
 -- 
 --    All rights reserved.
@@ -235,10 +235,22 @@ local function new_digest_md5(realm, password_handler)
        return object
 end
 
+local function new_anonymous(realm, password_handler)
+       local object = { mechanism = "ANONYMOUS", realm = realm, password_handler = password_handler}
+               function object.feed(self, message)
+                       return "success"
+               end
+       --TODO: From XEP-0175 "It is RECOMMENDED for the node identifier to be a UUID as specified in RFC 4122 [5]." So util.uuid() should (or have an option to) behave as specified in RFC 4122.
+       object["username"] = generate_uuid()
+       return object
+end
+
+
 function new(mechanism, realm, password_handler)
        local object
        if mechanism == "PLAIN" then object = new_plain(realm, password_handler)
        elseif mechanism == "DIGEST-MD5" then object = new_digest_md5(realm, password_handler)
+       elseif mechanism == "ANONYMOUS" then object = new_anonymous(realm, password_handler)
        else
                log("debug", "Unsupported SASL mechanism: "..tostring(mechanism));
                return nil