# File session.rb, line 258
    def authenticate(username, password, resource, digest=false)
      @username = username
      @password = password
      @resource = resource
      @jid = JID.new("#{username}@#{@host}/#{resource}")
      @roster.add(@jid, "both", "Me", "My Resources")
      
      msg_id = self.id
      authHandler = Proc.new  do |element| 
        if element.element_tag=="iq" and element.attr_id==msg_id
          element.consume_element
          if element.attr_type=="result"
            @authenticated = true
          elsif element.attr_type=="error"
            @authenticated = false
          end
        end
      end
      if digest
        require 'digest/sha1'
        authRequest = Jabber::Protocol::Iq.gen_auth_digest(self, msg_id, username, Digest::SHA1.new(@session_id + password).hexdigest, resource)
      else
        authRequest = Jabber::Protocol::Iq.gen_auth(self, msg_id, username, password, resource)
      end
      @connection.send(authRequest, &authHandler)
      Thread.stop
      return @authenticated
    end