# File lib/jabber4r/session.rb, line 258
258:     def authenticate(username, password, resource, digest=false)
259:       @username = username
260:       @password = password
261:       @resource = resource
262:       @jid = JID.new("#{username}@#{@host}/#{resource}")
263:       @roster.add(@jid, "both", "Me", "My Resources")
264:       
265:       msg_id = self.id
266:       authHandler = Proc.new  do |element| 
267:         if element.element_tag=="iq" and element.attr_id==msg_id
268:           element.consume_element
269:           if element.attr_type=="result"
270:             @authenticated = true
271:           elsif element.attr_type=="error"
272:             @authenticated = false
273:           end
274:         end
275:       end
276:       if digest
277:         require 'digest/sha1'
278:         authRequest = Jabber::Protocol::Iq.gen_auth_digest(self, msg_id, username, Digest::SHA1.new(@session_id + password).hexdigest, resource)
279:       else
280:         authRequest = Jabber::Protocol::Iq.gen_auth(self, msg_id, username, password, resource)
281:       end
282:       @connection.send(authRequest, &authHandler)
283:       Thread.stop
284:       return @authenticated
285:     end