func doRequest(guard tao.Guard, domain *tao.Domain, keys *tao.Keys) bool { fmt.Printf("client: connecting to %s using %s authentication.\n", serverAddr, *demoAuth) var conn net.Conn var err error network := "tcp" switch *demoAuth { case "tcp": conn, err = net.Dial(network, serverAddr) case "tls": conf, err := keys.TLSClientConfig(nil) options.FailIf(err, "client: couldn't encode TLS keys") conn, err = tls.Dial(network, serverAddr, conf) case "tao": conn, err = tao.Dial(network, serverAddr, guard, domain.Keys.VerifyingKey, keys, nil) } if err != nil { fmt.Fprintf(os.Stderr, "client: error connecting to %s: %s\n", serverAddr, err.Error()) return false } defer conn.Close() _, err = fmt.Fprintf(conn, "Hello\n") if err != nil { fmt.Fprintf(os.Stderr, "client: can't write: %s\n", err.Error()) return false } msg, err := bufio.NewReader(conn).ReadString('\n') if err != nil { fmt.Fprintf(os.Stderr, "client: can't read: %s\n", err.Error()) return false } msg = strings.TrimSpace(msg) fmt.Printf("client: got reply: %s\n", msg) return true }