def _authenticate(co, ch, remote, srp, txn): stuple = (remote[0], remote[1], '') server = tuple_to_server(stuple) auth = Auth(co, co.user, server, txn) ch.auth = auth s = ch.start_connection((remote[0], remote[1])) if srp: ch.srp_auth(s) return s hash = ch.get_hash(s) if not auth.check_hash(hash): # we don't know about the secret, fall back to SRP ch.srp_auth(s) ch.get_secret(s) s = ch.start_connection((remote[0], remote[1])) ch.secret_auth(s) auth.forget() return s