'Try to authenticate the user with the given method.  Dispatches to a
auth_* method.
@param kind: the authentication method to try.
@type kind: L{bytes}
@param user: the username the client is authenticating with.
@type user: L{bytes}
@param data: authentication specific data sent by the client.
@type data: L{bytes}
@return: A Deferred called back if the method succeeded, or erred back
if it failed.
@rtype: C{defer.Deferred}'

def tryAuth(self, kind, user, data):

    log.msg(('%r    trying    auth    %r' % (user, kind)))
    if (kind not in self.supportedAuthentications):
        return defer.fail(error.ConchError('unsupported    authentication,    failing'))
    kind = nativeString(kind.replace('-', '_'))
    f = getattr(self, ('auth_%s' % (kind,)), None)
    if f:
        ret = f(data)
        if (not ret):
            return defer.fail(error.ConchError(('%s    return    None    instead    of    a    Deferred' % (kind,))))
        else:
            return ret
    return defer.fail(error.ConchError(('bad    auth    type:    %s' % (kind,))))
